Technical: 2004年9月アーカイブ
ここにきてようやく本腰を入れてVB.NETを勉強し始めました。
まだ解決していない課題も抱えていますが、徐々に解決していくと思います。
最近の話では、設定ファイルの操作をやっています。従来、Windowsのアプリケーションでは、INIファイルやレジストリを使って各種設定情報を保存していました。いろいろな文献を読んだ結果、「これからの時代、やはりXMLでしょう」という結論に達しました。しかし、アプリケーションの設定をXMLで管理する具体的な方法について書かれているものが意外と少ないのです。ヘルプファイル(MSDNライブラリなどのドキュメント)も含めて検索してみたのですが、なかなか見つかりません。結局、海外の(英語で書かれた)文書をWebで検索して自分なりにまとめました。
まずは、XMLについて簡単に勉強しました。要素、属性といった用語も理解しました。<****/>という書式の意味を今頃知りました。
今のところの結論としては、次のような方法でXMLに設定を保存するのがよいのではないかと思っています。
読み込み、プログラム内の保持については、System.Data.DataSet, System.Data.DataTable(膨大なクラスライブラリを覚えるためImportしていてもSystemとかWindowsとか書くようにしています)を使って行います。従来であれば構造体を使って変数に保存すると思いますが、設定項目が増えるたびに構造体や変数の宣言をしなければならず面倒です。
内容を変更するたびにファイルを更新するのは個人的に好きではないので、ファイル出力用のメソッドは分けることにしました。
今回は、XML文書(テキストファイル)へ出力するときのことについて書きます。
Dim myFileStream As New System.IO.FileStream(xmlFileName, System.IO.FileMode.Create)
まず、DataSetを使います。XMLWriterはデフォルトではEncodingがUTFとなっていますが現在のところ一般的であるUTF-8としましょう。
Dim myXmlWriter As New System.Xml.XmlTextWriter(myFileStream, System.Text.Encoding.UTF8)
インデントはあった方が人間には読みやすいので入れましょう。初期値ではインデントどころか改行もないXML文書が出力されます。
myXmlWriter.Formatting = System.Xml.Formatting.Indented
いきなり書き出すとXML宣言のないXML 1.0勧告に沿っていない文書を作ってくれますのでまずは宣言を明示的に出力します。
myXmlWriter.WriteStartDocument()
そのままではルート要素が"NewDataset"となってしまうため、「アプリケーションの設定」ということが分かるようなルート要素を定義します。
ds.DataSetName = "AppSettings"
ここまで来たらあとはファイルへ出力するだけです。最後にクローズしておきましょう。
ds.WriteXml(myXmlWriter)
myXmlWriter.Close()
.NET環境での開発は日々勉強です。
公開されてから日数が経過していますが、ようやくMovable Type 3.0を試してみることにしました(実は2週間以上前の話なのですが)。便利になったところがあるか、既存のデータ(このサイト)のアップデートは可能かといった点を調べました。
このWeblogのデータが無事移行できるかを試してみました。結果はまったく問題なくできました。手順もとても簡単でした。
近いうちにバージョンアップしておきます。テンプレートの改造分は・・・追々修正していくと言うことでいいかな。iモードなど携帯電話でのインターフェイスを提供するCGIもMovable Type 3.0に暫定対応されているみたいです。
バージョンアップによって改善される点があるのかも探ってみました。
普段使っているWebブラウザはMozilla Firefox(先日発足したMozilla Japanへリンクしてみました)なのですが、IEでのみエントリー編集時にURLへのリンクを設定するときなどにショートカットキーが使えたのが、Firefoxでも使えるようになりました。
また、ファイルのアップロード(画像ファイル用)するときにポップアップする画面の縦サイズが小さく、常にステータスバーを表示する設定(JavaScriptの設定)をしてあると一番下のボタンが隠れてしまう問題も解決されていました。
それから、エントリーのプレビューで正しくスタイルシートのフォント設定が反映されていなかった(プレビューと公開ページと表示が異なる)のも修正されているようです。(たしか・・・)
というわけで、バージョンアップする価値はありそうだと判断しました。
今回のインストール作業で気づいたのですが、ファイルへのアクセス権などきちんとしたセキュリティ対策がされていませんでした。マニュアルはきちんと読まないといけませんね。
自宅のThinkPad X31にWindows XP Service Pack 2をインストールしました。
今のところ、特に問題なく使えています。といっても、Norton Internet Securityがインストールされているため、Windows XPに追加される新機能「Windows ファイアウォール」を使っていません。これをオンにすると、通信系のアプリケーションを起動したときに警告メッセージが表示されて、アプリケーションごとにファイアウォールの例外を追加していかないといけないんですよね。
SP2のベータ版のときはInternet SecurityがWindowsで検知されないといったレポートを見たことがありましたが、問題なく検知され、Windowsファイアウォールを使用するかNorton Internet Securityを使用するか問い合わせる画面が表示されました。
気のついたところを。ワイヤレスネットワークに接続したとき(既定値では表示されません)、タスクトレイに表示されるアイコンが変わりました。以前は、有線も無線も同じアイコンでしたが、無線のアイコンが変わりました。もちろん、ネットワーク接続のアイコンも変わっています。
そういえば、Internet Explorerも動作が変わっているんですよね。どうしても見られないページを見るときしか使わないので、まだ試していません。
