The Red Hat Diary

Version 4.2

―― Linux と戯れるCakeの日々 ――


6月の日記 | 7月の日記 | 8月の日記 | 9月の日記 | 10月の日記 | 11月の日記

12/28 (月)

New Toy

われながらよくもまあ、とあきれてしまうが、また新しいネタに飛びついて 夢中になってしまっている。その名も

いつもポケットに FreeBSD

NEC の携帯端末 MobileGear に FreeBSD をインストールして動かしてしまおう というおそるべきキット、すでにバージョン1がリリースされていた! (ちなみに公式サイトは こちら から。)

なぜか会社の近所の DoCoMo ショップで、処分品の MobileGear I for DoCoMo が僕を待っていてくれたわけで、¥15,000- の超特価で入手できたのだった。

もう面倒くさいので DOS 化はいっさいパス。その日のうちに PocketBSD を インストール。とてつもなく出来のいいインストーラのおかげで20分そこそこ で完了。そして今、環境整備に血道をあげているわけだ。日記の更新がしばらく 滞っていた理由もこれである。

メモリ 4MB + swap 3MB 、ディスク 12 MB と、いまどき信じられないくらい のロースペックで由緒正しい UNIX が動く。なんか昔本で読んだ MINIX の世 界のようなキツキツの環境だが、man を削り Mule を Nemacs にダウンサイジ ング(違うって)して更に Perl を ver4 でガマンしてなんとか運用に耐える といった感じだ。

でもいつでも好きなときに好きな場所で、鞄から取り出して emacs をいじれる ってのは、 夢のような 状況なのですね。しかも携帯電話さえあれば直結して PPP できてしまうとい う。iij-ppp が MobileGear で動くなんて、きっと作者も予想だにしていなかっ たと思う。これはもうCakeのメール送受信と日記書きのメインマシンにな るのも時間の問題かも。

携帯さえあれば

の話だけれどね。(;_;)


12/22 (火)

awklisp

今、awk で書かれた lisp インタープリタのソースを眺めている。 名前は awklisp で、クレジットは


A Lisp interpreter in awk.

Darius Bacon

djello@well.sf.ca.us

となっている。もう一つのほうの処理系は、これよりずっと前に書かれたものらしく、 こちらのドキュメントにも言及があった。

awklisp マニュアルより意訳。

Roger Rohrbach が古い awk(これにはユーザー定義関数がない! * )で walk と呼ばれる Lisp インタープリタを書いている。 きっと net のどこかにあるだろう。どこにあるかは archie に聞くこと。

walk はこの Lisp ほどいろいろなことができるわけではない。しかしきっと、 ハックする価値はこちらの方が高いだろう。

ハックするなら walk のほうを、と謙遜しているが、どうしてどうして awklisp の方が読みやすく、設計も美しい。やっぱり優れたソースコードというのは

目の保養に

なるなあ。

awk というと一行野郎や、カラムの自動分解機能を使った $1 とか $2 とかの よく分からん記号が飛び交う実用本位のスクリプトになりがちだが、 連想配列をうまく使って言語処理系を実装してある。 awk ってちゃんとプログラムが書けるのか、と感心したりして。

もしかしたらこのすばらしい作品を、Perl に移植できるのではないだろうか。 発想としては、Perl に備わっているリストやハッシュ、リファレンスといった 強力なデータ型をうまく使って、awk ではすべて配列を使って表現していた インタプリタの内部データをきれいに実装したい。

ま、 画餅 だけどね。


ユーザー定義関数がない

関数やサブルーチンというものを一切使わずに、インタプリタを実装せよ、 (しかも実装すべきインタプリタは関数を持っている) なんて課題が出されても、普通できないだろう。世の中には凄い人がいるものだ。


12/21 (月)

言語処理系への憧れ

pweb をいじっていると、自分オリジナルのミニ言語を設計・実装している気分を味わえるのだけれど、ちょっとばかり不満がないわけでもない。それは、一行単位でしか入力を見ていないので、処理内容に限界があるということだ。

コマンドを入れ子にしたり、一つのコマンドを複数の行に適用させたりすることができない。くせを飲みこんでいなければ不自由さを感じるかもしれない。

これらの制限をなくすためには TeX などでも採用されているような、コマンドを構造化できる文法規則が必要になると思う。

なるべく簡単な文法で、構文解析の部分も Perl で安価に済ませたいものだと思案しているうちに、最近マイブームの Lisp でやってみてはと思った。

smalltalk の大家 青木 淳氏 の smalltalk 用ライブラリのコア部分に smalltalk で書かれた Lisp インタープリタが内蔵されていると聞いたことがあるのを思い出したのだった。

以前 nifty/fgalts/lib 1 で awk で書かれた Lisp インタプリタを見掛けたことがあったので調べてみると、別々の作者によって書かれた二つの作品があった。

Lisp というのは単純な文法で奥深い世界を表現する希有な言語体系で、構文解析が簡単なのが特徴だから、基本的な機能だけなら awk でも実現できるということらしい。

これらのスクリプトでS式の構文解析処理の部分がどうなっているのか調べて、html をS式で記述できるスクリプトを書いてみたらどうだろう。


(html

 (head

  (title "赤帽日記 -- Red Hat Diary")

  (link :rel "stylesheet" :href "base.css" :type "text/css"))

 (body

  (require "diary_head")

  (date "12/21 (月)"

   (topic "言語処理系への憧れ"

    (p "pweb をいじっていると、自分のオリジナルの言語を設計・実装している"

       "気分を味わえるのだけれど、ちょっとばかり不満がないわけでもない。"

       "それは、一行単位でしか入力を見ていないので、処理内容に限界がある"

       "ということだ。")

    (p "コマンドを入れ子にしたり、一つのコマンドを複数の行に適用させたり"

       "することができない。くせを飲みこんでいなければ不自由さを感じるか"

       "もしれない。")))

  (require diary-tail)))

純粋なS式で html を記述しようとすれば雰囲気としてはこんなものになるだろう。 でも、これでは日記を書くのがかえって大変になることは確かなので、裸の文字列をリテラルとして認識するなど、若干の考慮は必要だと思う。

これでまた、通勤途中のヒマつぶしネタができたぞ。


12/17 (水)

pweb 更なる改造

またまた pweb をいじった。 前回 書いた一つ目を実行。 define コマンドと macro コマンドの token 辞書をひとつにしてみた。あと macro 定義中ではパラメータを今まで $cmd_parm というローカル変数で参照できるようにしていたのを、@cmd_parm や %cmd_parm でも参照出来るようにした。

@cmd_parm は空白で split した配列。 %cmd_parm はパラメータを


 key1=value1 key2=value2 ...

と解釈して、ハッシュに入れてくれる…はず。くれるかも。くれるんじゃないかなぁ。 (まだテストしていないのであった。)

ちなみに先日から、 ここ に置いてある pweb.lzh は、僕の手元で改造するたびに、新しい版に置き換わっています。

make と ftp アップロードスクリプト のおかげで、僕がなにもしなくてもパソコンが勝手にやってくれます。(^-^)

ちなみに 前回 書いていた二つめは、まだ手をつけていない。だいたいの形はみえているんだけど。


12/16 (火)

Netscape の新エンジン

現在開発が進んでいる Netscape Navigator 5 に組み込まれる新しいレイアウトエンジンは、 けっこう正しくスタイルシート使用のページを表示してくれるそうな。 …って、僕はまだ試してないんだけど。


12/15 (月)

DataSlim

結局、DataSlim と TrueSync Desktop をインストールしてしまった。 どこまで使いこなせるのだろう。自宅の Linux Box ともシンクロできれば、 最強いうことなし、なんだけど。 よく調べると、TrueSync Desktop は SideKick '97 らしい。 SideKick といえば DOS の時代からある由緒正しい PIM ソフトだ。 それを知って、ちょっとは使い込んでみる気になろうという気になった。 (ちょっと弱気)


12/14 (日)

『MH & xmh』

オライリー/ナットシェルシリーズの『MH & xmh』を図書館で借りてきて読む。 普段 E-Mail の読み書きは mew を使っていて、バックエンドは MH なのだ。 mew 自体も受信や返信、フォルダへの整理など、基本的な機能しか使っていないし、 メーリングリストのたまりにたまったメールをいいかげん expire したいなと思っていたので、少し勉強することにしたのだった。

読んでみると、MH の設計のよさがよく分かった。 他にも、インストールしてはいるもののよく分かっていないというソフトは いくらでもある。すこしずつでも、理解を深めていきたいものだ。


12/13 (土)

Inferno

1969 年に誕生した UNIX (僕の1コ下だ)は、「インターネット」 というキラーアプリのおかげで、世界的な成功を収め普及しているが、 このシステムを発明した伝説的なメンバー達は、もう自分達の使うコンピュータでは UNIX を使っていない。

…かといって、これで

代わりに Windows を使っています

なんてオチだったら笑うに笑えないが、幸いそういうことにはなっていないようだ。

彼らは、UNIX をさらに進化させたネットワークOSを開発し、使っている。それが、 Inferno だ。

ix86 をはじめ、複数のアーキテクチャで動くOSだが、バイナリ自体は共通で、 CPU が何であろうと問題なく動く。 プログラムはサーバーで実行してクライアント側では表示するだけ、 とかクライアント側にバイナリをダウンロードして全部実行するとか、 自由にできるらしい。

コンセプトは Java に似ていると言えなくはないが、Java はOSがやってく れないからウチらがやるで、というもので、その本来やるべきことをやってく れるOSが Inferno なのだと思う。

詳しいことはまだ分からないが、ネットワークでつながっている複数のマシン を「リソース」の集まりとみなして自由に組み合わせて使うことができるのだ ろうか。それができるならまさしく「ネットワークOS」と呼べるものだろう。


12/12 (金)

pweb 改造

pweb の機能アップを目指して改良中。ちょこちょとっと直せる部分にまず手をつけた。 マクロや変数の定義にバックスラッシュを使って2行以上使えるようにした。

あと、他にやりたいことは…、

(上の箇条書きを見て…)これじゃいみふめだね。ま、いっか。 成果やいかに、待て次号。


12/7 (月)

寒い…

こう寒くてしかも雨まで降っていると、もうな〜んにもやる気が起きないねー、と家内と話しつつ、家でごろごろ。息子の相手で日が暮れてしまった。

疲れた。さすがに夕方1時間半ほど息抜きに独りで外をぶらついたり。

Niftyが…

最近 busy が多い。何故か Nifty4u+ ではリダイアルがうまくいかないようなので、いちいち [Ctr]+C して中断しないといけない。かなり面倒な今日このごろ。


12/6 (日)

ie3

Internet Exproler 3 でこのページを見てみた。

「…。」

なんか Netscape3 よりひどいじゃん。中途半端にスタイルシートに対応しているとは聞いていたものの、ほんとうにその中途半端さときたら、半端ではなかった。:-P


12/5 (土)

作業中

pweb 定義ファイルの改定、現在作業中。ちなみに先月までのスタイルは過去のものに。 やっぱり見た目より考え方が美しくないとね。

256倍風味、その後。

強調行の文字サイズがちょっと大きすぎたかな? と思ったので小さくしてみました。 あと、従来の おおげさな強調文字 形式も復活。 ただし <font>タグは使ってないのと、それぞれの形式が lynx でも同じような表示になるようにしてみた。

作業終了

pweb 定義ファイルの修正が完了した。 今月分の日記もすべて pweb の入力形式にして更新。(月のはじめでよかった。)

pweb とスタイルシート

pweb とスタイルシートの役割の切り分けにしばし悩む。

結局、スタイルシートはhtmlファイルで多少タグが冗長になっても論理構成をきちんと表現できるように定義し、pweb はそのタグを簡単なコマンドで置換できるようにという方向性とした。

本日の成果

ほんの一個所だけ改造した pweb と今月の日記の材料を、lha で固めて 置いて おきます。

Lynx について

僕は Lynx が好きで、よく使っている。たとえば毎日見て回る日記類は WWWcp で自動巡回し、あとからオフラインでゆっくり Lynx を使って読んでいる。 (巡回ソフトはそのうち Wget に変更するかも。) 日記なんかは結局テキスト(とリンク)が情報のすべてなので、 不自由は全く感じない。それどころか、 文字の大きさが大きすぎたり小さすぎたり、 バックの色のせいで文字が読みづらかったり、 Java や大きな画像のために読み込むのに異様に時間がかかったり、 といったがないので、逆に快適ですらある。

あと、僕も最近気づいたのだが、 Lynx は Netscape と同じように ftp クライアントとしての機能をもっているので、 anonymous ftp のサイトからファイルをダウンロードするのにも使えたりする。


12/4 (金)

勘違い

なぜか、今日はずっと木曜日のつもりだった。(正確には、明日も平日だと思っていた) 会社から帰る直前に、主任との会話が かみ合わない のでやっと気づいた。(汗;)


12/2 (水)

CSS 続報

あぷてぃばのモニターが修理から戻ってきたので、Netscape3 でこのページがどのように表示されるか見ることができた。

…地味だね

でもいい、許す。(今月から256倍風味 * でお送りしています。)

それとも、もとの <font> タグつかいまくりのベタなページと二本立てのほうがいいのだろうか?

今のところ pweb の定義ファイルを作り直す作業は手をつけていないので、この日記は html ファイルを手で書いているんだけど、スクリプトを工夫すれば、旧来のページと CSS 採用ページの両方を一つの元ファイルから生成させることも不可能ではないと思う。やっぱりそんなこと無駄かなあ?

手書きで html

スタイルシートを導入したことによって、html 手書きも以前ほど大変ではなくなった。やはり体裁の情報を一括管理できることが大きい。

エディタは Mule の HTML-mode を使っている。タグの入力支援など、いろいろ便利な機能がうれしい。ただ、バージョンが古いのか、スタイル関連のタグを知らないようで、補完がきかないところが

ちょっとアレ

だけど。( YaHtml の最新バージョンは対応しているのだろうか? だったら即乗り換えよう)

あと、css ファイルの編集には css-mode.el っていうのをどっかから拾ってきて使っている。でもどこから Get してきたかもう覚えていない。すまん。代わりにと言っちゃあなんだがちょっとした小ワザを一つ。css ファイルを

c-mode で編集

している人もいるようだ。コメントといい、ブレースといい、ちょうど具合がいいらしい。専用のモードのように、キーワードで色を変えるとかの芸当はできないけど。ちなみに c-mode.el を改造して、無理矢理 css のキーワードを登録するという

力業

もなくはないが、そこまでできる人なら

自力で css-mode を実装できる

と思うので、あまりお奨めしない。(っておい)


*256倍風味

スタイルの変更に伴い、強調文字を某256倍シリーズ本の体裁に変更してみた。
(これもスタイルシート対応ブラウザでないと分からないか)
あのシリーズは昔から好きだったりする。


12/1 (火)

css

今月から日記のページに CSS を導入することにした。しかし、資料が少ない上に Netscape4 では実装に不備 * も多いため、試行錯誤で進めていくしかないようだ。

使いこなすと、かなりの表現力になる。たとえばこの日記で使う引用 (blockquote)のスタイル実例。 単純に <blockquote>と</blockquote>で囲んだだけで…、

「カスケーディングスタイルシート(CSS) ガイド」より引用:

CSS 開発の背景

カスケーディング スタイルシート(CSS: Cascading Style Sheets)は, Web デザイナとユーザの必要に応じて特別に開発されました。 CSS スタイルシートは, ドキュメントのフォント, 色, 空白等の表現の設定が可能です。

1994年 CERN で CSS の作業が開始され, 1996年12月に W3C 推奨 となりました。 CSS1は, デザイナーがどのようにドキュメントを表現すべきかを, スタイルシートで書き, 属性を設定するように定義された言語です。 CSS1 の属性は,一般的なスクリーンベースの表現をカバーします。 CSS1 への追加で幾つかの CSS ベース以外の仕様が有効になります:
(以下略)

こうなる。ソースを見てもらえばわかるが TABLE タグは使っていない。 ちなみにタグのスタイル定義は下記のようになっている。


BLOCKQUOTE {

  margin-left: 4.0em;

  padding: 1em;

  background-color: lightsteelblue;

  border: solid thin;

}

そして、スタイルシート本体は これ

でも…、スタイルシートに対応していないブラウザで見てる人は、「こうなる」なんて言われても困るだろうなあ。 lynx で見る限りは、以前の変な形でインデントして(いるように見せて)いた書き方よりきれいになっていると思うんだけど。

セガピンチ

ドリームキャストが満を持して発売…と思いきや、早くもピンチらしい。

店頭でバーチャファイターをやっていたら、3人目をノックアウトした瞬間画面が固まってしまった。BGMは鳴っているがなにも入力を受け付けない。(;_+)

秋葉原通の知人によると、ハードもソフトも早くも中古市場に出回っているらしい。ハード・ソフトともにバグバグだそうで、開発スタッフはパニックだそうである。


*実装に不備

もともとの設計からかなり無理な拡張で対応しているらしく、パターンによっては表示がぐちゃぐちゃになるようだ。 この辺の実装は、IE4 のほうがまともらしい。(表示系だけまともでも仕方ないが :-P )早くなんとかしてくれい。


このページついてのご意見、ご質問などは、 cake-smd@ops.dti.ne.jp までお寄せください。

トップページに戻る