「最近の fcp」過去ログ フィード

 同じ日付の項目が複数並んでいる場合がありますが、必ずしも間違いではありません。

 前の月へ / 次の月へ

2007 年 4 月

2007 年 4 月 29 日 プログラミング

 Perl では多くのスクリプト言語と同様、 "My name is $name." のように文字列中で変数を参照すること (interpolation) ができますが、式を参照するうまい方法がないので不便なことがあります。 @{[ ... ]} とか ${ \... } とかいう方法はありますが、どうもなじめません。そこで、 htpasswd.cgi の中では tie を使ってうわべだけ綺麗にしました。これと同じ方法を再利用しやすい形でパッケージ化した Interpolation パッケージというのがあるのを最近知りました。やっぱり同じことを考える人はいるもので、しかも汎用性のある部分だけ取り出してパッケージにしてしまうのだからすごいです。

 Ruby には #{...} という構文があります (いいなあ)。なお、現在仕様を議論中の Perl 6 では Qc 'My name is { format_name($name) }.' のように書けるみたいです (Synopsis 2)。

2007 年 4 月 27 日 ウェブサイト運営

 今まで当サイトのトップページには HTML の文法違反があったのですが、面倒くさがって直していませんでした。トップページをフィードから編集するために自作のツールを使っていて、恥ずかしながらそのせいで直すのが少し面倒だったのです。文法違反文書の氾濫する中で (備忘録; 徳保隆夫さん) と HTML は何がいいのか (NULL::something; cho45 さん) を読んで、直す気が起きました。 3 か月ぶりにトップページから文法違反がなくなりました。

2007 年 4 月 23 日 プログラミング ウェブサイト運営

 ずっと JavaScript ソースファイルの MIME media type は text/javascript だと思っていたのですが、 Scripting Media Types (RFC 4329) では text/javascript は obsolete とされていて、 application/javascript か application/ecmascript が推奨されています。

 ただし、 Internet Explorer 7 は text/javascript しか認識しないので、僕は当面 text/javascript を使うことになりそうです。 Firefox 2 はどれも認識します。

2007 年 4 月 19 日

 「最近の fcp」はもともと、ちょっと面白いと思った小さな発見をほとんど説明抜きで書くというスタイルのつもりだったのですが、最近文章が長くなってしまっているので、今日は思い切って短。

2007 年 4 月 17 日

 メーラーがメールサーバーからメールを取得するための POPIMAP といった仕様では、サーバーにメールが届いてもサーバーからクライアントに教えてくれるわけではないので、クライアントが定期的に新着メールがないかどうか確認しなければいけません。これでは効率が悪いので、クライアントからサーバーに、「メールが届いたら教えてください」と要求するための IMAP IDLE 拡張というものが提案されインターネット標準になり、多くの IMAP サーバーやメーラーで実装されています。しかし、メールサーバーに複数のフォルダーがあるとき、 IDLE 拡張では 1 個のフォルダーについてしか新着メールの通知を要求できないので、すべてのフォルダーの新着メールを知りたい場合にはフォルダーの個数だけ接続を張る必要があり、スケーラブルでありません。

 これを改善するために、複数のフォルダーの新着メールをすべて知らせてくれるようサーバーに要求するための仕様も、次のように提案されているのですが。

 こんなにたくさん提案されているなら、どれか 1 個くらい標準にならないものでしょうか……。

 ちなみに、これらの草稿はどれも他の草稿を参照していません。素人考えでは、過去あるいは同時期に、部分的に同じ目的を達成するために書かれた草稿がある場合、相手を参照して共通点・相違点を明らかにした方が役立つ草稿になるような気がするのですが、そういうわけにはいかないのでしょうか。

2007 年 4 月 17 日 ソフトウェア ウェブサイト運営

 昨日の続き。もう一つ誤解があるようなので。 network.http.pipelining を true にしても false にしても、 network.http.pipelining.maxrequests をいくつにしても、 Firefox がウェブサーバーから必要なデータを取り終わるまで接続を張ったままであることに変わりはありません。これはパイプライン機能の前提となる HTTP/1.1 の persistent connection という機能です (正確には、 Firefox が必要なデータを取り終わっていないのに自分から接続を切ることはありません。サーバーが接続を切る可能性はあります。また、 HTTP/1.0 でも不完全ながら persistent connection もどきを使うことはできます)。

 ところで、 WinDump を使ってパケットキャプチャーを見ると、 Firefox 2.0.0.3 で network.http.pipelining が true で network.http.pipelining.maxrequests が 2 のとき、サーバーからの応答がある前に 3 個の要求を投げているように見えるのですが……。僕が WinDump の使い方を間違えているだけかもしれません。

2007 年 4 月 16 日 ソフトウェア ウェブサイト運営

 重くなった Firefox 2.0 を劇的にスピードアップする 13 の方法 (オンライン快適仕事術; husigi さん) で、 Firefox の設定を変えて通信を速くする方法として、 about:config の中の network.http.pipelining を false から true に変え、 network.http.pipelining.maxrequests を 4 から 32 に増やすという方法が紹介され (今は文章は 32 ではなく 8 に修正されています)、「他のクライアントに迷惑をかける設定だ」として叩かれているという話を、同時リクエスト数って今でもクリティカルな問題なのだろうか (備忘録; 徳保隆夫さん) で知りました。

 どうも誤解に基づいて非難している人が目立っているようなので、技術的なことを少しだけ書いておきます。

 上の Firefox の設定をしてもサーバーの側の同時接続数は変わりません (「同時リクエスト数」というのは普通、同時接続数と同じ意味で使います)。実験して確かめたわけではありませんが、意味を考えればそうなるはずという理屈の上での話です。

 一つのクライアントが一つのサーバーに同時に何本も接続を張るのは、行儀が悪いこととされています (少なくとも伝統的にはそう扱われてきました。今の実態に合うか合わないかは知りません)。ウェブサーバーの設定で一つの IP アドレスからの同時接続数を制限するのはよく聞く話です。参考: 最大接続数を増やして速くなったと喜ぶ人々、再び (狐の王国; 狐志庵さん)

 でも、これと HTTP/1.1 パイプラインのリクエストを増やすのとは完全に別個のことです。パイプラインに溜めておるリクエストをある程度以上増やしても、サーバーの側で処理待ちのリクエストが増えるだけです。処理待ちのリクエストというのは、文字通り、まだ処理されていないリクエストなのであって、それを増やしても速くなりません。そして、処理待ちのリクエストが増えたからといって、サーバーにも他のクライアントにもほとんど迷惑はかからないはずです。

 HTTP/1.1 に対応していると名乗るのにもかかわらずパイプライン機能を使うと誤った動作をするウェブサーバーがあるらしいです (具体的な名前は知りません)。 Firefox のデフォルトの設定で、 network.http.pipelining が false、すなわち HTTP/1.1 パイプライン機能を使わないようになっている理由は、たぶんそれだと思います (が、クライアントが Server ヘッダーを見て自動的にパイプラインを有効にしたり無効にしたりするというのは無理なのでしょうか)。

2007 年 4 月 15 日 Windows

 Windows にはファイルシステムの操作をする fsutil というコマンドがあります。このコマンドは引数によっていろいろな操作ができ、その中で

fsutil file createnew myfile.dat 1000000

のようにすると myfile.dat という名前の 1,000,000 バイトのファイルが作られ、中身のバイトがすべて 0 に初期化されます。これは、 coLinux のディスクイメージを作るときなどに便利です。

 普通の PC で 1 ギガバイト以上のファイルを作ると目に見える時間がかかります。これはファイルのサイズの分だけディスクにデータを書き込むからです。しかし、 fsutil file createnew ではファイルの使用領域を予約するだけで実際にディスクにデータを書き込むわけではないので、一瞬で終わります。参考: SetEndOfFile (MSDN Library)ultra fast binary writes (MSDN Forums)

 fsutil を管理者でないユーザーの権限で実行するとエラーになります (少なくとも Windows XP では)。でも、ファイルを作るのに管理者の特権は不要なので、 fsutil file createnew が管理者以外でエラーになるのはつまらない手抜きだと思います。

 補足 1: MSDN Forums では情報が混乱していますが、 fsutil file createnew で作られるファイルはスパースファイルではありません。スパースファイルは飛ばしている部分についてディスクの容量を予約しませんが、 fsutil file createnew で作られるファイルはディスクの容量を予約します。 fsutil file createnew が速いのは valid data length が 0 のファイルを作るからです。

 補足 2: SetEndOfFile のドキュメントには、 SetEndOfFile でファイルサイズを大きくすると差分の内容は不定になると書かれていますが、 fsutil file のヘルプ (Windows 2003 Server TechCenter) によれば、 NTFS では valid data length を超えた部分は 0 のバイトになるそうです。なお、 fsutil file のヘルプの該当部分の中に「C2 オブジェクト再利用の要件を維持するために」という謎の言葉がありますが、 C2 というのは米国の政府機関 National Computer Security Center が定めるコンピューターシステムのセキュリティーの評価基準の名前です。初期化されていないディスク領域が読めてしまうと、他のユーザーのデータの残骸が読めてしまうことになり、セキュリティーの欠陥になるので、そういう動作をしないよう 0 のバイトを返すという意味です。

2007 年 4 月 15 日 Unix Windows

 昨日の続き。 Windows 機から NBT で Unix 機を参照するには、 Unix 機の側で Samba に含まれる nmbd サーバーを動かしておけばよいです。 NBT で使われるコンピュータ名はデフォルトでは Unix のホスト名になります。

 ワークグループ名は smb.conf の [global] セクションの workgroup パラメータで指定します。 smb.conf のデフォルトの場所は Samba の configure のときに決まっており、 Fedora Core 6 で標準の RPM からインストールした場合は /etc/samba/smb.conf になりました。

 NBT のコンピュータ名をホスト名と違うものにしたい場合は smb.conf の [global] セクションの netbios name パラメータで指定します。

2007 年 4 月 14 日 Unix Windows

 Unix と Windows が一つのネットワークの中にあるとき、 Unix から Windows 機を NetBIOS コンピュータ名を指定して参照するための機能が Samba に含まれています。 Samba の libnss_wins.so をインストールし、 /etc/nsswitch.conf の hosts の設定に wins を加えると、 Unix での名前解決に NetBIOS over TCP/IP (NBT) を使ってくれるようになるので Unix から Windows 機を参照することができるようになります。参考: The Official Samba-3 HOWTO and Reference Guide > Integrating MS Windows Networks with Samba

 これは Windows 機に coLinux をインストールしてその上で Unix を動かす場合でも同じです (少なくとも tuntap デバイスでつなぐ場合は)。 VMware 等で Unix を動かす場合でも大差ないと思います。

 逆に Windows から NBT で Unix を参照するには、 Unix で Samba サーバーを動かす必要があるのだと思いますが、調べていません。

2007 年 4 月 11 日 Windows

 Windows Vista ではハードディスクにある NTFS パーティションの大きさを変更することができます。「Windows Vista ヘルプ: ハード ディスクを再パーティションできますか」にあるように、 [コントロールパネル]-[システムとメンテナンス]-[管理ツール]-[コンピュータの管理]-[ディスクの管理] で変更したいパーティションを右クリックして、「ボリュームの拡張」または「ボリュームの圧縮」を選びます (名前は「ボリュームの圧縮」ですがデータ圧縮を行うわけではありません)。

 でも、 Windows で自身の NTFS パーティションを縮小する場合、どれだけファイルが少なくても最初に作った大きさの半分より小さくすることはできないようです (ちゃんと調べていないので条件が怪しいですが)。パーティションの中央には MFT のミラー ($MFTMirr ファイル) と変更ジャーナル ($LogFile ファイル) があるので、その関係でしょう。未確認ですが、 ntfsresize か、内部で ntfsresize を呼び出す Gnome Partition Editor (GParted) などのソフトを使えば、最初の大きさの半分より小さくすることもできるみたいです。

2007 年 4 月 11 日

 スラッシュドットの「フレームワークを使っての開発は、オレってばスゲー感が少ない?」に、

慣れてくると手応えがないような気がしてくるような気はする。こう思うのは年寄りの証拠なのか、フレームワークはスゲー感を妨げるのかどっちなのだろう?

 手法に慣れてくると簡単になって手ごたえがなくなるのは当然です。歳は関係ないし、フレームワークが達成感を妨げるわけでもないでしょう。慣れてきて達成感が薄れていくのが嫌な人は、慣れてきたらその上で新しいことに挑戦したり、慣れたものをあえて捨てて新しいことに挑戦したりするんだと思います。もちろん、達成感よりも優先するべきものがあるなら、達成感のない開発をしなければならないこともあるでしょう。でもそれはフレームワークのせいではないと思います。

というコメントを書こうとしてとしてコメントのプレビューを表示したら、「このアカウントもしくは IP またはネットワークは一時的に投稿禁止になっています。ちょっと落ち着いてから投稿してください。この措置はこの IP もしくはネットワークおよびアカウントから投稿されたコメントが多数回マイナスモデレーションされたことから、システムがあなたを自動的に荒しと疑っているためにとられていいます」と言われました。

 たぶん 4 月 3 日頃に書いたコメント 4 個 (このコメント以下) が立て続けに「フレームのもと」「余計なもの」とモデレートされたからでしょう。投稿禁止はかまいませんが、書く前に教えてほしかった……。それとも、掲示板荒らしだと疑われているのにプレビューの段階で教えてもらえただけでも感謝するべきでしょうか。

2007 年 4 月 10 日

 OS 開発の愉しみ」 (Prex - 組み込みリアルタイム OS 開発日記; Kohsuke Ohtani さん) は、対象は違っても、学習院大学の田崎晴明教授の logW 日々の雑感的なもの 2003 年 3 月 30 日の、「申し訳ないのだけれど、物理は特権的に面白いのですよ」前後の文章と似ています。

 この二つの文章の著者には失礼かもしれませんが、森博嗣『夏のレプリカ』の次の部分を思い出しました (講談社文庫 (2000 年) 450 ページから引用)。

 西之園萌絵は、杜萌と二人だけになると、ずっと犀川のことをしゃべり続けた。どんなに彼が魅力的な人物であるかを萌絵は力説したが、根拠は実に曖昧で、しかも、まったく論理性に欠けていた。それは、彼女が理屈を強調すればするほど鮮明になった。こんなことは、従来の西之園萌絵にはありえなかったことだ。

(確かに、萌絵は変わった)

 杜萌は黙って彼女の話を聞いていたが、心の中では半分呆れていたし、ますますこの友人が好きになった。

2007 年 4 月 8 日

 今更ですが、久しぶりに行った秋葉原の LAOX ザ・コンピュータ館の書籍フロアー (6 階) で高林哲、鵜飼文敏、佐藤祐介、浜地慎一郎、首藤一幸『Binary Hacks ― ハッカー秘伝のテクニック 100 選』 (オライリー・ジャパン、 2006 年) がセキュリティーのコーナーに置かれていて驚きました。近くにケビン・ミトニック、ウィリアム・サイモン著、峯村利哉訳『ハッカーズ: その侵入の手口 ― 奴らは常識の斜め上を行く』 (インプレス、 2006 年) が置かれているのも手伝って、「ハッカー秘伝のテクニック」を実行したら法に触れそうな雰囲気です。

2007 年 4 月 8 日

 昨日 NHK のニュースでキャスターがこう言っていました (正確には憶えていません)。

 ページを開くと物が立体的に現れる、「飛び出す絵本」の人気が高まっています。

 「飛び出す絵本」という言葉を聞くまでの数秒間、ウェブページの話だと思っていました。

 以前「たまご」というソフトウェアの情報を知りたくて、検索エンジンで「たまご」と入力したら、関係ない話ばかり出てきたときと同じ気分です。


 前の月へ / 次の月へ

著者: fcp / このサイトと管理人について