銀河の歴史がまた1ページ(日記)

Last Update (2015/01/01 00:00:00)
1997.09.06から数えて counter 番目のアクセスです。

ミラーサイト [www.ceres.dti.ne.jp] [yk.rim.or.jp]

[ホームページ] [日記] [読んでいる日記] [秋葉原価格] [FreeBSD] [FreeBSD LINK] [検索]

ページ内目次


■ 宇宙歴 2007.09.07 (Fri)

http://www.ceres.dti.ne.jp/‾george/jdiaryA70901.html#20070907

関東地方に台風直撃コース

台風9号がものすごいストライクコースで東京を直撃中。 これは恐ろしい。 ちなみに、京葉線は7日午前中の運休を前日の夜には既に決定しているという諦めの良さである。


■ 宇宙歴 2007.09.15 (Sat)

http://www.ceres.dti.ne.jp/‾george/jdiaryA70901.html#20070915

gifカウンタ作ってみた

GIFを出力するアクセスカウンタをperlで作ってみた。 情報元は以下。

GIF89a Specification http://www.geocities.co.jp/SiliconValley/1361/gif89a.txt
まずはGIF89aフォーマットの原典。

とほほのWWW入門 GIFフォーマットの詳細 http://www.tohoho-web.com/wwwgif.htm
部分的だが、日本語で説明あり。

モジュールを使わないシンプルなアクセスカウンタ(Perl)(Code Zine) http://codezine.jp/a/article.aspx?aid=70
ソースをダウンロードするには Code Zine 会員登録が必要。
こちらはLZW圧縮済のGIFデータブロックをPerlソース内に持っており、GIFブロックを桁数だけつなげて複数桁のカウンタ表示にしているのが潔い。 これならUNISYSのGIF特許(LZW圧縮特許)なんて関係ない。

無圧縮GIFを作成する方法 http://www.oersted.co.jp/‾emk/dhtml/nocompgif.html

上サイトから引用。

n ビット画像の場合なら、以下のようになります。

  1. 最初に値 n のオクテットを書き込む(初期code size)。
  2. 元データから n ビット読み、n+1 ビットにゼロ拡張して書き込む。
  3. 2.を 2^n-3 回繰り返す。
  4. 値 2^n を n+1 ビットで書き込む(clear code)。
  5. 2.〜4.を元データがなくなるまで繰り返す。ただし2度目以降は3.は 2^n-2 回まで繰り返してよい。
  6. 値 2^n+1 を n+1 ビットで書き込む(end code)。
(無圧縮GIFを作成する方法http://www.oersted.co.jp/‾emk/dhtml/nocompgif.htmlより)

白黒画像は、特例として2ビット画像(4色)として扱う。

Because of some algorithmic constraints however, black & white images which have one color bit must be indicated as having a code size of 2. (GIF89aフォーマット Appendix F. Variable-Length-Code LZW Compression.より)

従って、白黒画像を扱う場合の処理は以下のようになる。

  1. 最初に値2のオクテットを書き込む(初期code size)。
  2. 元データから1ビット読み、3ビットにゼロ拡張して書き込む。
  3. 2.を1回繰り返す。
  4. 値4を3ビットで書き込む(clear code)。
  5. 2.〜4.を元データがなくなるまで繰り返す。ただし2度目以降は3.は 2 回まで繰り返してよい。
  6. 値5を3ビットで書き込む(end code)。

ビットストリームをバイトに詰める順序は以下の通り。 (GIF89a Specification Appendix F. Variable-Length-Code LZW Compression.より)

BUILD 8-BIT BYTES

Because the LZW compression used for GIF creates a series of variable length
codes, of between 3 and 12 bits each, these codes must be reformed into a
series of 8-bit bytes that will be the characters actually stored or
transmitted. This provides additional compression of the image. The codes are
formed into a stream of bits as if they were packed right to left and then

picked off 8 bits at a time to be output.

Assuming a character array of 8 bits per character and using 5 bit codes to be
packed, an example layout would be similar to:


     +---------------+
  0  |               |    bbbaaaaa
     +---------------+
  1  |               |    dcccccbb
     +---------------+
  2  |               |    eeeedddd
     +---------------+
  3  |               |    ggfffffe
     +---------------+
  4  |               |    hhhhhggg
     +---------------+
           . . .
     +---------------+
  N  |               |
     +---------------+


Note that the physical packing arrangement will change as the number of bits
per compression code change but the concept remains the same.

たしか、LZW圧縮の特許は2005年で失効してたから、そろそろ作ってもいいのかな?
辞書とか実装するのは面倒だったので、LZW無圧縮な処理を内部で持つperlのアクセスカウンタを作ってみた。 カウンタのフォント元データはXBMな並びの白黒ビットマップデータ。 これを並び変えて結合し、無圧縮GIFの1枚絵にして出力する。
こんなんなりますた。 counter.zip (3KB)
自分で言うのもなんだが、ひでぇソースだなこりゃ。 (x_x;)

作ってから思ったけど、1桁の数字のGIFブロックを持って、内部で結合した方が速くて安心だよな。 どう考えても。 (^^;)


■ 宇宙歴 2007.09.15 (Sat)

http://www.ceres.dti.ne.jp/‾george/jdiaryA70901.html#20070915

pccでNetBSD i386をコンパイルした奴が居た

http://mail-index.netbsd.org/tech-toolchain/2007/09/12/0000.html gccよかコンパイルスピードが5-10倍速いとか? まじすか。 pccは確かPortable C Compilerって奴かな。

今のところ、各種ソースはgccでコンパイルが通るように書かれることが多いので、デフォルトコンパイラにしようとするとすんごい大変そうだけども、これはいいかもしれんね。


■ 宇宙歴 2007.09.29 (Sat)

http://www.ceres.dti.ne.jp/‾george/jdiaryA70901.html#20070929

PSU::イルミナスの野望購入

今回はPSUでダメだった部分がいろいろ改良されているのと、フォルテファイター(fF:近接武器タイプ)がクソ強くなったという噂なので、購入。 感想は後程。


日記ファイルリスト


Copyright(c) 1996-2017 George(小濱 純). All rights reserved.
私の作成したページへのリンクはご自由にどうぞ。
このページに間違いや要望などがありましたら george@yk.rim.or.jp まで御連絡ください。
メール本文に 6020-5440-3372 と書いて頂くと、ウチのSPAMフィルタを通過できます(2009-06-14から2017-12-31まで)。

[ホームページ] [日記] [読んでいる日記] [秋葉原価格] [FreeBSD] [FreeBSD LINK] [検索]

home: <george@yk.rim.or.jp> or <george@ceres.dti.ne.jp>
(I am using white list SPAM filter. To avoid it, please write 6020-5440-3372 in mail body. This key word is valid since 2009-06-14 until 2015-12-31.)