2011年1月2日日曜日

Gzip For HTTP 公開

前々から実装したいと思っていまして、何とD言語には zlib が標準ライブラリに含まれているということで書いてみました。
gzip の仕様書を読み漁っても私の頭に入るような文書が無かったんで、
Content-Encoding: gzipを実装してみた。 で公開されているコードを、圧縮データを一時ファイルに随時書きこみ、最終的に標準出力にコピーする形に書きなおしました。

Gzip For HTTP のダウンロードはこちらから。

リンク先のページにあるように、Windows でパイプ処理を行った際の「Bad File Descriptor」エラーに悩まされております。
open STDOUT,'| C:\gzip.exe' or die $! # こんなやつ
ウェブサーバーの設定で .html 等の拡張子にこの Gzip For HTTP を関連付けて実行する分には問題ありません。

Linux (ubuntu) ではこの現象は見られず、バッファリングを無効にする等色々試してみましたが解決できず今では諦めモードです。
ググっても参考になるような情報無いし、こういう質問が 2ch で流れてても全スルーされてたし。教えてエロい人。

この前にファイル操作系のプログラムを書いていたのですが、Windows って rename でファイル名が重複しちゃいけないみたいなんですよね。これには驚いた。

こんな無駄仕様と脆弱性満載の Windows プログラミングなんて一生やるか。Windows プログラミングってそもそもプログラミングじゃねーだろ。落書きの間違い。確か ハッカーになろう (How To Become A Hacker)にも同じようなことが書いてあった気がする。

まあ既に Linux は Windows を超えてるし、Windows が Linux の波に流されるのも時間の問題。頼むから早く無くなって頂戴。そうすれば Windows なんて使うことは無い。

---

2010/01/06 - gzip 圧縮ルーチンで、 Compress のバッファサイズを 10KB 程度に抑えているつもりが倍程使っていた点を修正した Version 1.1.1 を公開。どうでもいい修正。

2010/01/05 - deflate 圧縮に対応し、配布バイナリをコンパイルオプションによって最適化した Version 1.1.0 を公開しました。gzip 圧縮にテンポラリファイルを使用しなくなりました。

2010/01/04 - gzip ヘッダー の "Operating System" バイトが FAT filesystem (MS-DOS, OS/2, NT/Win32) の "0x00" となっていました。unknown(不明)の "0xFF" に修正した Version 1.0.1 を公開しました。

0 件のコメント:

コメントを投稿