●ソース置き場,自作ソースコードなど雑多な置き場です。C言語 (ANSI C)\, Perl 5.6.1 などで作成、確認。 2004-01-03,mkblog.pl,mkblog.pl.txt,ケータイ写真日記の HTML を出力する Perl スクリプト。$テキストファイルを読み込んで、カレントディレクトリにある画像ファイル名 (某ケータイの JPG ファイル名形式に依存) も読み込む。このページで公開している imgsz が必要。 2003-12-12,imgsz.c,imgsz.c.txt,画像ファイル (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,jpghd03.c.txt, 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,jpghd.c.txt,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,hxname.pl.txt,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,mkhtml.pl.txt,このページを作成するときに使った Perl スクリプト$使いかたは
$ perl mkhtml.pl < dat.txt > sources.html
dat.txt の書式例 2003-01-25,digiotxt.pl,digiotxt.pl.txt,StarDigio (SkyPerfecTV! の音楽専門チャンネル) の番組表 PDF を取得してテキストファイルにする$日付付きファイル名で保存するので、あとから参照するのにも役立つ。perl\, wget\, pdftotext が必要だが、RedHatLinux 7.3 を標準インストールするとどれも最初から入っていた。ただし pdftotext は日本語化するために別のファイルが必要。使用法は、
$ ./digiotxt.pl
とする。カレントファイルに pdf と txt ファイルが保存される。取得するチャンネルは、ソースコード冒頭の @channel に記述する。 2002-08-03,skapa-1.1.tar.gz,skapa-1.1.tar.gz,SkyPerfecTV! の番組表を取得して、テキストファイルに変換し、ブラウザ w3m で表示する$w3m のローカル CGI 機能を使って、Perl で書かれた CGI スクリプトを動作させている。詳しくは添付されたマニュアルを参照。 SkyPerfecTV! 番組表の仕様変更で使用できなくなったようだ。 2002-04-21,東雲フォント itouh パッチ,../font/shnm.html,東雲14の半角英数とひらがなカタカナを修正してみた 2002-04-02,sbitget,../font/sbitget.html,TrueTypeフォントのビットマップを抽出する 2002-04-02,teku 6x12,../font/teku.html,BDF 形式ビットマップフォント ISO-8859-1/JIS X 0201 2001-12-22,fakewav.c,fakewav.c.txt,ファイルを暗号化する$
$  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,shiftjis.pl.txt,下の Shift_JIS文字表を作ったときの Perlスクリプト$
$  perl shiftjis.pl 
と実行すると s.txt が作られる。 2001-11-08,shiftjis.html,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.html,iso-8859-1の全文字を表示 2001-10-09,macbincut.c,macbincut.c.txt,Macintoshのファイル先頭のヘッダを削る$MacBinaryの情報は www.lazerware.com にある。ファイル構造としては、MacBinaryヘッダ(128bytes) + データフォーク(?bytes) + リソースフォーク(?bytes)。ファイルの実内容はリソースフォークらしい。
このソースでは、データフォークがあればそれも削る、なければ128だけカット、としてるけど、リソースフォークの長さを調べて、そのバイト以外をカットするという方針でもいいかも。 2001-09-21,hd.c,hd.c.txt,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),httpclient_linux.html,Linux の socket によるHTTP クライアントのサンプル 2001-08-10,Winsock サンプル,httpclient_winsock.html,Winsockのサンプル。シンプルな HTTP クライアント 2001-06-16,bdfv.c,bdfv.c.txt,BDF フォントファイルの viewer$こういうふうに表示される。
...\nSTARTCHAR a\nENCODING 97\nSWIDTH 600 0\nDWIDTH 9 0\nBBX 7 7 1 0\nBITMAP\n78      -####---\n84      #----#--\n04      -----#--\n7C      -#####--\n84      #----#--\n8C      #---##--\n76      -###-##-\nENDCHAR\n...\n
2000-11-23,build 95knmfont,../font/mk95knm.html,95knmfont1.3の作りかた 2000-10-17,95knmfont,../font/95knmfont.html,Windows95/98で使う小さめのフォント 1998-07-25,Tica to UI font,../font/tica-ui.html,Ticago の半角カタカナ形状変更