コマンドメモ……とか

nkf で Shift_JIS & CRLF を EUC-JP & LF にし、上書き保存させるコマンド。

nkf -e -Lu --overwrite filename

-e -Lu の代わりに -unix でもいいか。

WindowMaker の背景画像を変えるには wmsetbg

WindowMaker デスクトップのスクリーンショットついでにデスクトップのスクリーンショットを載せてみる。個人的にはゴテゴテ色んなモノがくっついている統合環境としての GNOME や KDE よりも、シンプルで動作も軽く、実はカスタマイズ性に優れている単純な GNUStep や WindowMaker の方が好き。

2005-04-27

Ajax 2nd

前回の続きを。昨日はファイルのデータが壊れていたようで……。

――その一つが、古くから散々に言われ続けてきた、クライアント側におけるスクリプト処理の是非に、一筋……どころではない光明を与えたことだ。

元来、スクリプトによるローカル側での処理は、その実装方法においても運用方法においても賛否両論、様々な意見が出尽くしている。

今回登場した Ajax 技術は、その状態に対していくつかの新しい道を示したといえるだろう。詳しくは神の子どもたちはみな腕を磨く: Ajax関連情報まとめにあるリンク先でも参照してもらえればよい。

さて、個人的にはこの技術、単にサーバ・クライアント間のデータ転送を非同期に行うことでシームレス(無駄時間の少ない)なアプリケーションの利用を目的としているだけではないと考える。……そこには、大事な大事なものが含まれている。

アルゴリズムとデータの分離である。

これは、JavaScript でプログラミングをした事があるならすぐにピンとくる筈だ。何しろ、この言語にはファイル操作のサポートが存在しないのだから。

勿論、拡張された言語(例えば JScript)には存在するだろう。しかし、純粋に Netscape 社が策定した仕様、また、その基礎となる ECMAScript にも、ファイルに関する既定はない。

だが、その状況を XMLHttpRequest は多少なりとも改善してくれる。少なくとも、read に関しては。つまり、一般的なプログラミング言語の持つ、アルゴリズムとデータの分割が、より明確に可能となった……のだろう。

しかも、XML。意味を持たせてあるデータは、そのままハッシュ(連想配列)として取り込むことが容易になる。便利だ。

Ajax は、今後ますますブームになるだろう。いいお手本があるからだ。火付け役ともとれる Google が提供する一連の Ajax サービスは、どれもが実用的で興味深く、何より技術が独り歩きしていない。理想的だ。……但し、そのコードはわざとだろうが汚らしくしてある。別の組織や人間の開発した Ajax アプリケーションを参考にした方が手っ取り早いのかもしれない。

私も、トップページの広告部(No とか書いてある部分)を、Ajax 技術によって再実装してみたいと思っている。項目が増えれば増える程、その必要性は高まる。やるとしたら、Storehouse 以下にある全てのリソースについて、自動で(サーバサイドかクライアントサイドのどちらか)タイトルと説明を取得し、表示させるというものがよいだろう。

今日から、勉強だ。

2005-04-26

Ajax

Google Maps というアプリケーションサービスをご存知だろうか? まだ一度も使った事のない方は、是非一度体験してみて頂きたい。驚きを体験できる。

勿論、技術面に興味のない方にとってもだ。

この Web アプリケーションには、取り立てて新しい技術が使われているわけではない。昔からあるスクリプト言語の JavaScript、もう大分成熟した技術基盤であるといえる XML を使っているだけだ。

このアプローチ方法を Jesse James Garrett 氏は Ajax : Asynchronous JavaScript + XML と定義した。読み方は「エイジャックス」らしい。

詳しいことは "ajax : a new approach to web applications"(邦訳)をご覧頂くとして、Ajax の弱点とそれが生み出す状態について少し考察でもしてみる。

Ajax の弱点、それはズバリJavaScript と XMLHttpRequest をサポートしていない UA では使えないという点にある。

しかし、そんな UA は最早過去の遺物であるといっても過言ではないのかもしれない。今、急速にシェアを伸ばしている Gecko レンダリングエンジン利用の Firefox は、この技術を完全にサポートしている。かの悪名高い Internet Explorer(Trident)だって、それが ActiveX オブジェクトの一部であるという萎え萎えな実装であることを除けば利用できることに違いはない。Safari、もとい KHTML もサポート済とのこと。

では、こうした状態は何を意味するのか?

続きはまた今度。

2005-04-22

ハッカーと画家

「ハッカーと画家」(Paul Graham 著 川合史郎 監訳 オーム社)という本が面白い。

オタク文化と学校文化の喰い違いから生じる軋轢過程や「富の創造」を本当の意味で理解した者が経済的な成功を収められるという経済論、ハッカーと画家の本質的同一点が存在することの考察、Lisp 言語の素晴らしさと理論的な特徴点の提示、効率的なスパムフィルターの実装アルゴリズム論(いわゆるベイジアンフィルタ)などなど、個性的かつユーモアたっぷりで、読みやすさと面白さが共存できているエッセイ群が目白押しだ。

印象に残ったのは、XML が Lisp の限定再定義のようなものであると指摘した点だ。良く見れば、確かに Lisp と XML は似ているかもしれない。少し比較してみよう。まずは XML の例、XHTML のコード断片である。

<div class="section">
  <h2 id="date-2005-04-21">blog テスト</h2>
  <p>段落</p>
  <div class="date_stamp">2005-04-21</div>
</div>

次は、それと擬似的に対応させた Lisp コードだ。

(div (class "section")
  (h2 (id "date-2005-04-21") blog テスト)
  (p 段落)
  (div (class "date_stamp") 2005-04-21))

確かに、似ている。

リスト処理を旨とする言語である Lisp と、文書に意味を与えるマークアップ言語である XML(XML そのものは定義用の枠組みだけど)は、確かに特定の文字列を分解し、構造化(リスト化)させることができるという点において、根底に同じものが存在しているようだ。どちらも「語彙」(Lisp なら関数やマクロ)を増やす為の枠組みがきちんと定義されていることも、似ている点の一つだ。

尚、収録されているエッセイの大半は Web 上で公開されている(訳も)。本が2400円+税という値段なので、取り敢えず読んでみたいという方は適当に検索をかければ出てくるだろう。

普通のやつらの上を行け

2005-04-21

Opera 8.0 & マウスジェスチャならぬフィンガージェスチャ

ついに(いい意味での)問題児、Opera の 8.0 がリリースされた。早速インスコして弄ぼう。

「マイノリティ・リポート」がヒントとなった軍用次世代 UI 技術が開発中だという。あの、マウスジェスチャならぬフィンガージェスチャインターフェースである。確かに、二次元平面運動とボタンの組み合わせしか存在しないマウスでは、あのような柔軟な操作はできないだろう。客観的に見ている分には滑稽にも映るが、インターフェースとしての出来栄えは悪くない。

その一つが、三次元運動により、非常に直感的な操作感を得られることだろう。画像の拡大・縮小や、ウィンドウの前後などにすぐ応用できる。Opera や Firefox のマウスジェスチャでは、ああはいかない。

パソコンの外部入力装置としてはあまりにも大掛かりすぎて、実用的ではないかもしれない。しかし、確かに記事にあるような軍事的な用途や、もう少し規模を小さくして、TV 一体型の、現在家庭に普及していると思われるようなパソコンには有用だ。

そのどちらも、共通する点がある。キーボードを使う必要性が少ない用途に使われていることだ。

キーボードの主たる目的は文字の入力だ。よって、普段あまりそういう動作を必要としない、ただ Web ブラウジングや TV 視聴にしか使われないようなパソコン、情報整理そのものが目的とされるコンピュータにとっては、不要ではないが使用頻度の低いデバイスである。そうした状況の中で、マウスの代替手段、進歩したデバイスとしてのインターフェースが求められているのだろう。

よって、当たり前だが、プログラマーや物書きのような人種には無用の長物になると思われる。こちらは逆に、マウスやその派生物を使う頻度の方が少ないからだ。特に、Emacs や vi といった、キーボードインターフェースによる操作がメインのプログラムをよく使う者には「ふーん」と片付けられてしまいがちなのかもしれない。

ふと思ったのだが、例えば絵の描写や加工を生業にしている人間には、この技術が結構面白い結果を与えてくれるかもしれない。それまでフィルターやら何やらを適用するにはマウスでポチポチとクソ面倒な作業を繰り返さなければならなかった。キーボードショートカットとの組み合わせも、よく使われる。ここで、もしフィンガージェスチャインターフェースを導入すればどうなるだろう? もしかしたら、何もかもをそれだけで済ませてしまうようなタイプの人間が出てくるかもしれない。勿論、ペンタブレットのようなデバイスを使いたがる者も大勢居るだろうが。

個人的には、早く実用的になって欲しい技術である。面白そうだし。

2005-04-20

Windows XP の調子が悪い

そろそろクリーンインストールの時期か。

ノートの方を Vine Linux に完全移行したいのは山々なのだが、如何せんネットワークカードの認識というか接続ができないまま。

どうも、メールアドレスを Web サイトに記述する際文字参照を使うといいらしい。例えば mailto:taku_sss@hotmail.com ⇔ &#x6D;&#x61;&#x69;&#x6C;&#x74;&#x6F;&#x3A;&#x74;&#x61;&#x6B;&#x75;&#x5F;&#x73;&#x73;&#x73;&#x40;&#x68;&#x6F;&#x74;&#x6D;&#x61;&#x69;&#x6C;&#x2E;&#x63;&#x6F;&#x6D; になる。こんなんどーやって調べるんだといわれそうだが、私は Lhaplus というアーカイバに付随する機能 + replace-regexp でどうにかした。根性があるなら Unicode 文字表と睨めっこしてもいいだろう。そんなクソ面倒な仕事こそ機械に任せるべきなのだけれど。勿論、これは十進でも十六進でも、自分が好きな方を選べばいい。個人的には使い慣れている(CSS の色指定でよく使う) & コード量が少なくなるという単純な理由で十六進を用いている。

何? 十六進法がわからない? ……そこまで面倒見切れん。

2005-04-19

自分用 Lisp + その他

この Blog もどきを書く時に使っている簡単な xyzzy Lisp を晒してみる。

;;; Blog 編集
;;; 日付は自動挿入(当日)
;;; キャレット位置は h2 要素の TextNode 部
;;; 一度キャレットを行頭に持ってってから処理してる
(defun edit-blog ()
  (interactive)
  (progn (goto-bol) (point))
  (insert
   (format-date-string
    (concat "      <div class=\"section\">\n"
            "        <h2 id=\"date-%Y%m%d\">")))
  (save-excursion
    (insert
     (format-date-string
      (concat "</h2>\n"
              "        <div class=\"date_stamp\">%Y-%m-%d</div>\n"
              "      </div>\n")))))

コードとしては汚いか……。でも、これはあると便利。

auto-timestamp は便利。でもこれ、Emacs だとふつーに使える機能。こうやって自分で設定してみると、改めてその便利さに納得。

以下、先日の購入リスト。

(微妙にネタバレかも)「閉じられた世界」には、全くもって救いようのない――というよりも、救いそのものが存在しない。そこには「絶対」という確信しか存在していないからだろう。クエスチョンマークが出てこない、その人間にとっては確定してしまっている、個人の世界。全く先に進まない――進む必要も、進むという概念もない世界。

それこそが、内向きにひっくり返っている、「閉じられた世界」。

実験的とか何とか銘打っているけれども、そこにあるのは至極あたりまえの妄想世界だ。突きつけられるのは沈みゆく感覚だけである。

ある意味で、それはとても純粋な、綺麗なものだ。濁りというものを感じられない。唯一「?」を提供していた人物すら、最後には狭い自分に閉じ篭る。ラスト直前、場面的にはある意味で清々しいはずなのに、異様な静けさが満ちているのはその所為だろう。

かくして物語は、最後のエピローグ要素により収束度を増し、「ゴミ取り」の完了した状態でフィナーレを迎える。それは純水のように、混じり気のない美しさを秘めている。勿論、下手に手を出せば痛い目を見る。……そういう話だと感じた。

2005-04-18

卒業研究室

……ええそうですよわたしゃ学生ですよ。

先日、一年間お世話になる卒業研究室(卒研室)の掃除をした。

三時間以上かかった。

何しろモノが多いのだ。専門書籍は山のように積み上がり、明らかに要らないと思われるダンボールが散見される。……因みに、昨年度の研究生は掃除をしなかったそうだ。勘弁してくれ。そこは自分の居場所でもあり――また他人のそれでもあるのに。

研究生四人で手分けして、秩序の回復に乗り出した。ある者は掃除機をかけ、またある者は雑誌の整理をし、ある者はエアコンのフィルターを掃除し、そして私は大量の専門書籍を戸棚の中に整理した。

……まず、戸棚の中をどうにかしなければならなかった。

何とか本を入れ終わった時、足元にあったのはゴミ。おかしなものが、そこにはあった。

えー、どうして体育館用のシューズがあるんですかね? ご丁寧にもダンボール箱の中に入れて。

即、ゴミ箱行き。

一息つける頃になると、もう日が大分傾いていた。割り当ての机を綺麗にして、椅子に腰掛ける。

ここで一年、研究するのか。

自分の望んだ研究室だ。やっていける。

恐らく、このサイトの更新もそこから行われるようになるだろう。今のように xyzzy ではなく、Emacs + sgml-mode + XHTML 1.1 DTD による編集になるだろう。

でも、それもまた後の話。

追記。Mozilla Firefox 1.0.3 がリリースされた。18:03 現在 Mozilla Japan トップページにリンクは無い。FTP サイトより直接ダウンロードは可能。

セキュリティアップデートなので、現在 1.0.2 以下のバージョンを使っている人は早急に入れ換える必要がある。私はもう入れ換えた。

2005-04-16

新しいノートパソコン欲しい

今のヤツは Windows Me 時代の代物だから……XP を辛うじて動かしているような状態。

それも、レポートを全部 TeX でやるようになれば要らなくなる。メインを Linux にしてしまえる。……その方がいいんだけどね。シェルでファイル操作も楽できるし。Emacs 立ち上げっぱなしで dired 使う方がいいか? どちらにせよ Windows の Explorer は使いにくいと感じ出している今日この頃。

Firefox や GIMP を使ってる時は別だが、普段キーボードに手を置いている時はもうマウスに手を伸ばすのが億劫でしょうがない。ホームポジションに置きっぱなしでいい。

友人にそれを言ったら「お前、そりゃ面倒臭がりにも程があるぞ」と返されてしまった。いいじゃないか。便利じゃなきゃコンピュータじゃないだろう。

ノートを買うとしたら、一番の筆頭候補は Panasonic の Let's Note。薄さも程好く、バッテリ駆動時間も長い。持ち歩くのに便利。……あー、すっごい良い天気のもとで木陰にでも座りながらキーボード打ちたい。勿論キー配列は Happy Hacking Keyboard に近い英語圏配列で。Capslock のところが Control だと最高。

2005-04-15

Thunderbird と xyzzy

そろそろ Mozilla Thunderbird を本気で導入しようかと考え中。メールアカウントも取ったし。

xyzzyhtml+-mode では C-j が「br 要素を挿入」であるというワケのわからん仕様になっていたので、「p 要素を挿入」に変えた。Lisp コードは次のような感じ。

(define-key *html+-mode-map* #\C-j 'html+-insert-paragraph)

; -------------------------------
; p 要素の挿入
; 2005-04-12T19:41:17+09:00
(defun html+-insert-paragraph (&optional (arg 1))
  (interactive "*p")
  "html+-mode: p 要素の挿入"
  (dotimes (x arg)
    (html+-newline-and-indent)
    (insert "<p>")
    (save-excursion
      (insert "</p>"))))

実にシンプル。つーか save-excursion なんて初めて見た。でもコレ便利。開始タグと終了タグの間にカーソルが留まったままでいてくれる。編集が物凄く楽になる。

ゆくゆくは特定要素内ではこの関数が発動しないようにする(pre 要素とか)機能もつけようかな……。

2005-04-14

購入済リスト

この前買った書籍。

見事に SF だらけ(オリオンは違うか)。

2005-04-13

Root Beer

ルートビア、という飲料がある。

素晴らしい。実に素晴らしい。

これこそまさしく B 級飲料だ。ドクターペッパーのような芳醇で味わい深い香りが、これでもかというぐらいに強く鼻をくすぐる。

まずは何も言わずに一口含み、ほんの少し舌で転がして香りを膨らませ、そして喉奥へと流す。えもいわれぬ芳香が鼻を突きぬけ、そのまま脳まで響いてくる。ジーン、と痺れる感覚を存分に味わう。

嗚呼。極楽。

一度でいいから沖縄まで行って、ジョッキで乾杯してみたい。勿論一気に飲み干すのだ。……考えただけでもうっとりする。

ケース買いしてるのは私だけなのかしらん。

ルートビアは清涼飲料に分類されるソフトドリンク。ビールの一種ではない。よって、アルコール分は存在すらしない。

2005-04-12

Web サイト構築記念

というわけで皆さんコンニチハ。ようやくこの日がきましたよ。ええ。

無料サーバを提供してくださった Yutaka 氏に感謝を。

今回サイトに採用したデザインは、かなり単純なもの。ずばりスタイル名「Simple」。

最大の特徴は擬似フレームを採用したこと。IE や Firefox、Opera 等の UA を利用している方は中間領域(本文が表示されているであろう部位)をスクロールさせてもらえればわかるだろうが、上領域(メニューがある部位)と下領域(Copyright 表記がある部位)が中間領域に対して固定され、まるで frame 要素を用いているかのように見える。

だが、実際は一切 frame を利用していない。全て CSS のみを用い、XHTML ファイルには一切手を加えていない。今回は UA によって実現方法を分け、二種類のテクニックを使っている。それぞれについて軽く紹介しよう。

position : fixed を利用する方法

Gecko 並びに Opera で有効な方法。header 並びに footer 部を閲覧領域に対して position : fixed により固定する。body 部の上下 padding を header / footer の分だけとり、要素の重複を防ぐ。

意図したレイアウトを実現するには、最も単純で、汎用性が高く、文字サイズの変動にも強固でデザインが崩れにくい。

但し、最大の問題点は IE6 で利用できないことだ。よって、IE6 には他の方法で同じようなデザインを実現してやらねばならない。

そこで、下記の方法を用いることになる。

overflow : auto を利用する方法

IE のみならず Gecko でも Opera でも有効な方法。header は通常フロー、footer 部を position : absolutebottom : 0 とし、それぞれの height をパーセンテージで指定する(これが重要)。例えば 5% ずつ合計 10%。それから、body 部の height を残りのパーセンテージにし、header 部の下に配置するように調整する。例えば 90%。それ以降に内容領域が overflow するのを防ぐため、 overflow : auto を指定する。IE / Gecko / Opera ならスクロールバーが自動表示される。

position : fixed を利用する方法に比べてスクロールバーの表示される位置がより frame らしい。

こちらの問題点は、レイアウトに対する汎用性・柔軟性が非常に悪いことだ。何せ、高さに関してはパーセンテージ指定しかできない。em 単位で指定したい場合も、泣く泣くパーセンテージ指定にするしかないのだ。故に、IE 専用の代替案として利用している。

CSS は文法こそ単純だが、中身は非常に奥深い。これを読んでいるあなたも、少しばかり知識を得て Valid Strict HTML & CSS デザインに転向してみては如何だろうか。春だしね。

2005-04-11