少しPythonの使い方を研究してみた。Windows日本語環境で使うにはSJIS版のPython21.dllやmbreモジュールをwww.gembook.orgからゲットしよう。Pythonで書いたgrepは次のようになる。
import os, sys, mbre usage = "usage: %s pattern infile [outfile]" % os.path.basename(sys.argv[0]) if len(sys.argv) < 2: print usage else: matchstr = mbre.compile(sys.argv[1]) input = sys.stdin output = sys.stdout if len(sys.argv) > 2: input = open(sys.argv[2]) if len(sys.argv) > 3: output = open(sys.argv[3], 'w') for s in input.xreadlines(): if matchstr.search(s): output.write(s)
mbreモジュールの代わりにreモジュールを使うと、正規表現パターンに「ソ,ー」などが含まれるとエラーになる。reモジュールは2バイト文字を1バイト文字の並びと見なすので、\,[などエスケープすべき文字が2バイト目に含まれてしまうからだ。テキスト処理の基本はgrepなので、これが動くということは日本語処理に使えるということ。大変遅くなったが1.6、2.0を通り越して最新バージョンとして2.1をゲットすることにした。それはそうとunicode関数を使う場面って、Tkを使うときだけなのかな?encodingの統一的な仕組みがもうひとつわからない感じだが。SJISコードの文字をそのまま正規表現パターンとして使い、SJISコードの文字列をそのまま処理するのだったらこれまでと同じだ。Unicode対応についてはEUCやSJISと同格で、取り敢えず取り扱えるようにしたという意味なんだろうね。
Linuxマシンが安く作れないか、ベアボーンキットを求めてヤマダ電機八木店に出かけたが、品揃えがねぇ。一種だけでは選びようがないし、デザインがどうしょうもない・・・通販かな。こうしてゴールデンウィーク前半の三日が過ぎ去ったが、「TS Networkのために」XML化プロジェクトには手付かず(^^;)ようやく米国No.1ベストセラーという「実例で学ぶXML」を引っ張り出してきて眺め始めた。明日は少しはできるかな・・・
昨夜は遅くなったのにも関わらず今朝は早く目が覚める。やはり年かな。すぐ二階に上がってPCを起動する。XEmacs 21.1.13をW2Kにネットワークインストールしてみる。最近、オープンソースのものもインストールが大変簡単になってきたのは素晴らしいこと。Tetrisはビジュアルでいいんだけど、日本語の入力ができないみたい(^^;)日本語フォントが選択できない・・・、.xemacsに何か設定がいるのかも・・・
忘れていたけど、AWKの原典である「プログラミング言語AWK」が復活しましたね。トッパンから出版されていたのと同じ体裁で新しく出ていました。シーエム・シィー出版だったか(^^;)?
Cartyさん(Becky!の作者、乗松さんといったほうが今や通りが良い^^;)のエディタDanaにはラウンチャが仕組まれていて、外部コマンド登録ダイアログから編集等に利用したいスクリプトを設定できる。これを利用して、編集中のファイルをFTPでアップロードするPerlスクリプトを書いてみた。これは便利だ。いちいちFTPソフトを起動して接続・ファイル選択等、わずらわしいクリック・スクロール操作を繰り返す必要がない・・・自画自賛(^^;)スクリプトは簡単で、次のよう
use Net::FTP; $ftp = Net::FTP->new('ftp.*****.com'); print "ftp.*****.comに接続しました。\n"; $ftp->login('*********','**********'); print "loginしました。\n"; $ftp->cwd("/homepage"); print "/homepageディレクトリに移動しました。\n"; $ftp->ascii(); print "asciiモードにします。\n"; $ftp->put($ARGV[0], $ARGV[1]); print "$ARGV[0]を転送しました。\n"; $ftp->quit(); print "FTPを終了しました。\n"; sleep(1);
登録ダイアログは次のように設定すると、コンソールが開いて動く状況が表示される。スクリプト最後のsleep(1);はコンソールが早く閉じてしまって状況表示の最後が見えないので付け加えた。
もっとも、Pythonをスクリプト言語として採用したKaaEditならこの機能は標準で装備されている。
日本語Windows対応のXEmacsのバイナリはここにあったが、いろいろまだ問題があるようだ。やはりめどうさんかな(^^;)
連休初日、娘をピアノに、女房を検診に送った後、迎えまでの時間潰しにMegaに本を漁りに出た。結局ゲットしたのは、bit別冊「インターネット時代の文字コード」、共立出版、2001年4月5日発行、4500円。著者にはFREKIに参画されている方々の名前もある。文字コードの歴史、TeX後継のOmega Projectとか、今昔文字鏡、XEmacs-MuleのUTF2000、印刷・出版、電子編集へのSedの活用、XML、国際化等、多岐に渡る話題が網羅されており、文字コードの現況がよくわかる。ただ、国際化、多国語化はともかく、日本語テキスト処理における実用面ではどうかな・・・Shift_JIS、EUC、JIS、Unicodeの相互変換を自在にして表示・出力する仕組みがないと実用的な日本語テキスト処理は難しい。インターネット時代のスクリプト言語はそれが課題。Tcl/TkはUnicodeを意識させないで処理を可能にしており、fconfigureやencoding convertfromなどで、入力側の文字コードを指定すると、日本語WindowsではデフォルトのShiftJISで出力表示される。PythonやPerlはUnicodeを意識した処理が必要だ。特にPerlはスクリプトのポータビリティを考えると文字コードの問題が大きい。Pythonはsite.pyでデフォルトの文字コードを設定できるが。Rubyはパターンマッチングについても入力する文字コードを選ぶことができるようになっているので、この機能の使い方ではスクリプトの目的によってポータビリティに問題が出るだろう。いずれにせよ、文字コードの問題を意識してスクリプトを書く時代になった。
待ちに待った五月連休前夜、ナベサダのブラジリアン・ミュージック・セレクションを聴きながら、久しぶりのジャズを楽しんだ。渡辺貞夫、円熟の境地の演奏だ。柔らかいサックスの音色にさらに磨きがかかった。ブラジリアンのバックもオーケストラも大変良かった。思わず、SADAO 2000を引っ張り出してきて、PCのライン出力をオーディオに繋ぎ代えるとDVD-ROMドライブに突っ込んで聴きふけった。CDを聴いたり、オーディオを弄る趣味はPCに代わって久しいが時折顔を出す。連休前夜で少し精神的に余裕が出たせいかな。年代物のRogers LS3/5Aモニターはまだ結構いい音で鳴る。コンパクトな割に超強力なマグネットが付いているスピーカだ。オーディオがPCに繋がる時代が来るとは夢にも思わなかったが、Windows Media PlayerでCDをPlayするのは最早自然な動作だ。PCこそマルチメディアの中核に相応しい。ハードディスクや排気ファンの音がオーディオとしては大きな問題ではあるが・・・
今日は更新はなしかな(^^;)
お陰様で、「TS Networkのために」ホームページ Ver.2 のカウント数が1年を待たずして、6000を突破。ありがとうございました。テキスト処理とスクリプト言語、コンピューティングに関するポータルサイトとしてさらに発展させていきたいと考えています。引き続きよろしくお願いいたします。
duneさんのYukiWikiサイトの「ActivePerlのインストール」にQuick Accessからリンクした。初心者は必見。こんなの作ってみたかった(^^;)
MHCのリンクを辿っていたら、Meadow-1.14 (AWSAKA:62)(「逢坂」62段) がリリースされたことに気が付いた。ページを眺めているとEmacs21の記事も、最近のEmacsってワープロみたいだ。ソフトウェアの進歩は止まらないね。
Warmlinks of Rubyを自動生成してFTPするようにsurlを書き直し、最終変更時刻とURLを表にまとめるようにした。リストじゃあまりにも情けないので(^^;)YARLのページからURLを抽出して調べる。この作業をしている間にProject Softicaのサイト移動に気が付きリンクを張りなおした。その他、FormDesignerが収録されているにゃすさんのページ関係に説明を付加した。それから、たけ(tk)印のApolloにもリンクを張った。
スクリプト言語の最新バージョンチェックスクリプトverchk.plをNet::FTPモジュールを使用している実際のものに置き換えた。このスクリプトは各スクリプト言語のホームページを訪れ、パターンマッチングで最新バージョンをゲットする。この部分はかなりいい加減なマッチングだが、工夫すれば厳密な情報収集も可能だろう。集めてきたバージョンを基にHTMLの表を生成して、Net::FTPモジュールで自動的にホームページのあるFTPサイトに送り出して更新する。デスクトップにスクリプトを置いておけば、クリックするだけでWebページが更新できる。
早速、ParrotがApril Foolかどうかを確認するために、まずPythonのサイトから調べると、ガーン、April Fool's jokeだと(--;)ParroTkやJarrotでおかしいなとは思ったのだけど、そんなの簡単に準備できるわけないし・・・Rubyまで登場する手の込んだjokeだった。出来すぎ。記事が本当だったら、April Foolじゃないと断ったはずだよね。
ArrangeNoteのActiveX Scriptingに関する山本幸一さんとの話でPerlScriptでShift_JISコードが通らないことが話題になって、ActiveStateのバグデータベースに、'PerlScript "print" statement involving Shift_JIS code causes an error.'なんて書き込んできた。今はActiveScriptRubyを使えばいいんだけど(^^)