Time-stamp: 2004-01-03

itouh: ソース置き場

自作ソースコードなど雑多な置き場です。C言語 (ANSI C), Perl 5.6.1 などで作成、確認。
2004-01-03 mkblog.pl ケータイ写真日記の HTML を出力する Perl スクリプト。
テキストファイルを読み込んで、カレントディレクトリにある画像ファイル名 (某ケータイの JPG ファイル名形式に依存) も読み込む。このページで公開している imgsz が必要。
2003-12-12 imgsz.c 画像ファイル (jpg, gif, png, xbm) の幅・高さを HTMLフォーマットで出力する。複数のファイルを引数にとることができる。
使用法:
$  imgsz image/*jpg
とすると以下のような文字列を出力する。
<img src="image/nyanko.jpg" width="527" height="403" alt="">
'-e' オプションで Exif 情報のデジタルカメラ機種名と撮影日時も出力できる。 '-2' オプションは小さなケータイ画像のためのもので、画像を 2 倍の大きさで web ブラウザに表示する HTML を出力。ソースコードは、LittleEndian で long が 32bit の CPU (Intel Pentium シリーズ等) にしか対応してません。
2003-12-12 jpghd03.c jpghd に Exif 情報を読み込む機能を追加したもの。
参考にしたのは Exif については http://www.exif.org/specifications.htmlhttp://park2.wakwak.com/~tsuruzoh/Computer/Digicams/exif.html。JPEG/JFIF については http://www.w3.org/Graphics/JPEG/。Exif データはデジタルカメラの出力した JPEG 画像に含まれているので、ケータイ新製品SHOW CASEスタパトロニクス の画像をテストに使った。今のところ Exif 情報の ASCII 文字列の読み込みしか実装していない。ソースコードは、LittleEndian で long が 32bit の CPU にしか対応してません。
2003-12-10 jpghd.c imgsz を作ってたとき、JPEGヘッダを調べるため作ったもの。
参考にしたのは www02.so-net.ne.jp/%7Ekoujin/jpeg/jpeg.htmlwww.ccnet.ne.jp/%7Ekrum/rg/14/jpeg.html
使いかたは、
$ jpghd ../public_html/cat.jpg
JPEGファイル内部は、おおかまかにいえば、ヘッダと圧縮データ部に分かれている。ヘッダは複数のセグメント(chunk)で構成されてて、「SOI」セグメントでファイルが始まり、「SOFn」(baseline JPG だとn=0, プログレッシブJPGだと 2かな?) に、画像の幅、高さ情報がある。「SOS」セグメントのあとで圧縮データが始まる。圧縮データのなかにもセグメントが存在することがある。'0xff'のあとが'0x00'のときでないときはそれはセグメント(の先頭)。普通現れるのは「RSTn」セグメントか「EOI」セグメントなんだけど、「SOS」が複数回でてくることもあるようだ。
2003-09-12 hxname.pl HTML の <h1>..</h1> といったヘッダ要素に自動的に <a name="1">..</a> というアンカーをつけてくれるスクリプト。そのアンカーへのリンクがある目次もつくる。ただし <h1>..</h1> は一行で書く必要がある。
標準出力 (STDOUT) へ HTML を出力し、標準エラー出力 (STDERR) へ 目次 を出力する。使い方:
$ ./hxname.pl < foo.html  1> bar.html | less
とすると、bar.html へ HTML を出力して、画面には目次を出力する。
2003-04-13 mkhtml.pl このページを作成するときに使った Perl スクリプト
使いかたは
$ perl mkhtml.pl < dat.txt > sources.html
dat.txt の書式例
2003-01-25 digiotxt.pl StarDigio (SkyPerfecTV! の音楽専門チャンネル) の番組表 PDF を取得してテキストファイルにする
日付付きファイル名で保存するので、あとから参照するのにも役立つ。perl, wget, pdftotext が必要だが、RedHatLinux 7.3 を標準インストールするとどれも最初から入っていた。ただし pdftotext は日本語化するために別のファイルが必要。使用法は、
$ ./digiotxt.pl
とする。カレントファイルに pdf と txt ファイルが保存される。取得するチャンネルは、ソースコード冒頭の @channel に記述する。
2002-08-03 skapa-1.1.tar.gz SkyPerfecTV! の番組表を取得して、テキストファイルに変換し、ブラウザ w3m で表示する
w3m のローカル CGI 機能を使って、Perl で書かれた CGI スクリプトを動作させている。詳しくは添付されたマニュアルを参照。 SkyPerfecTV! 番組表の仕様変更で使用できなくなったようだ。
2002-04-21 東雲フォント itouh パッチ 東雲14の半角英数とひらがなカタカナを修正してみた
2002-04-02 sbitget TrueTypeフォントのビットマップを抽出する
2002-04-02 teku 6x12 BDF 形式ビットマップフォント ISO-8859-1/JIS X 0201
2001-12-22 fakewav.c ファイルを暗号化する
$  fakewav -p"pass phrase? It is a long password." nasty.jpg
と実行すると nasty.jpg.wav という エセWAVファイルが作られる。WAVファイルとして聞くこともできる (ただのノイズだが)。-p" のあいだにスペースを入れてはいけない (スペース入れるとパスワードなしとなる)。Unix の場合、ファイル名を複数指定することができる。Windowsだとワイルドカード使うのはやめたほうがいい。パスワードには日本語使わないほうがいい、コンソールの文字コードがOSによってちがうから。
復号化は -d を付けて
$  fakewav -d -p"pass phrase? It is a long password." nasty.jpg.wav
とすればよい。パスワードをまちがえても、元ファイルがまちがって復号化される。パスワードを忘れたときの対処法はない。ファイルは必ずカレントディレクトリに書き出される。暗号化されているファイル名に拡張子がないと復号化のときエラーになる。復号ファイル名は、暗号化ファイル名から拡張子を1つ取り去ったものになる。
2001-11-08 shiftjis.pl 下の Shift_JIS文字表を作ったときの Perlスクリプト
$  perl shiftjis.pl 
と実行すると s.txt が作られる。
2001-11-08 shiftjis.html Shift_JISの全文字を表示する
Shift_JISの全文字を表示。HTMLの <table>がたくさん使われているので、CPUパワーがない場合、表示させないほうがよい。
このHTMLファイルは Meadow1.14では動作がおかしかったので、Windowsのワードパッドを使用して制作した。Meadow1.14では、0xed40-0xfcfcまでのグリフ(字形)を持たない文字が「\372\203」とか表示される。保存しようとすると、raw-textとして保存するか、と聞かれる。Emacs21では直っているのかなぁ。ワードパッドでは、豆腐か中黒(・)が表示されて、問題なく保存できる。
文字コードについては、http://euc.jp/i18n/charcode.ja.htmlを参考にした。
2001-11-05 iso-8859-1.html iso-8859-1の全文字を表示
2001-10-09 macbincut.c Macintoshのファイル先頭のヘッダを削る
MacBinaryの情報は www.lazerware.com にある。ファイル構造としては、MacBinaryヘッダ(128bytes) + データフォーク(?bytes) + リソースフォーク(?bytes)。ファイルの実内容はリソースフォークらしい。
このソースでは、データフォークがあればそれも削る、なければ128だけカット、としてるけど、リソースフォークの長さを調べて、そのバイト以外をカットするという方針でもいいかも。
2001-09-21 hd.c 16進数ダンプユーティリティ
ファイルの中身を16進で見るだけ。EUC-JP (JIS X 0208) 表示も可。使いかたは、
$ hd -d dog.png | head -n 64 | less
EUC-JP:
JIS X 0208は 第1バイトも第2バイトも 0xa1-0xfeになる。JIS X 0201カナは 第1バイトが0x8e、第2バイトは0xa1-0xdf。JIS X 0212補助漢字は、3バイトで構成され、0x8f2121-0x8f7e7e。
2001-09-01 socket サンプル (Linux) Linux の socket によるHTTP クライアントのサンプル
2001-08-10 Winsock サンプル Winsockのサンプル。シンプルな HTTP クライアント
2001-06-16 bdfv.c BDF フォントファイルの viewer
こういうふうに表示される。
...
STARTCHAR a
ENCODING 97
SWIDTH 600 0
DWIDTH 9 0
BBX 7 7 1 0
BITMAP
78      -####---
84      #----#--
04      -----#--
7C      -#####--
84      #----#--
8C      #---##--
76      -###-##-
ENDCHAR
...
2000-11-23 build 95knmfont 95knmfont1.3の作りかた
2000-10-17 95knmfont Windows95/98で使う小さめのフォント
1998-07-25 Tica to UI font Ticago の半角カタカナ形状変更