2008年07月30日

『実践Common Lisp』



/

“実践”である。しかも著者のPeter Seibelによれば“すごいソフトウェアを書く方法をお見せ”してくれるらしい。

512ページというボリュームを持つ本書は、1958年に考案された「Lisp」の血筋と伝統を持ち、かつ甘んじることなく最先端を追う言語「Common Lisp」を、みっちりと説明している。

前半部分は、一般的な言語書籍とそれほどスタイルは変わらない。レコード、S式、関数、マクロ、コレクション、リスト、ファイルI/O、オブジェクト指向、FORMAT、例外、パッケージ、シンボル、LOOP、とCommon Lispの言語構造が次々と紹介される。これらはダラダラと続くのではなく、『プログラミングRuby』と同様に説明の合間には随時コードスニペットが差し込まれており、説明内容をすぐに試せるように配慮されている。

実践編としては、第9章でマクロなどの知識のおさらいとしてユニットテストの実装、第15章でファイルI/Oのおさらいとファイルパス取り扱いの手法としてパスネームライブラリの構築を行う。そして「そろそろ本気を出そうか」とばかりに第23章からは怒涛の実践が続く。ベイジアンスパムフィルタ、バイナリファイルデータの解析、MP3音楽ファイルのID3タグパーサ、AllegroServeによるサーバーサイドWebプログラミング、MP3音楽データベース構築、Shoutcastストリーミングサービス、Webプレイリスト、HTML生成ライブラリ実装。Common Lispの応用力の広さに驚かされる。

付録には、邦書独自の内容として、日本語処理固有のエンコーディング変換の説明およびライブラリの提供、本書語句の訳出に利用された訳語一覧が用意されている。短いながらも利便性は高いだろう。

本書の環境は、Common Lisp(SBCL(Steel Bank Common Lisp)など)、Emacs、SLIME(Superior Lisp Interaction Mode for Emacs)、ASDF(Another System Definition Facility)といったものを含めたLisp in a Boxというセットを推奨しており、現時点ではOS X 10.4(PPC/Intel)、GNU/Linux x86、Windows向けのものが提供されている。もちろん、たとえばDebian GNU/Linuxであれば、「aptitude install sbcl emacs slime cl-asdf」という感じで同等のものを構成できる。

なお、装丁の絵はカンディンスキーの「白いジグザグ形」をあしらってアートな雰囲気だが、カバーを外すと今度は洋書っぽいシンプルクールな仕立てになっているので、ご購入された方はぜひチェックを(いずれも日本独自)。

2008年07月27日

Subject: Lenny frozen

Lenny is now frozen! Wheeeeeee!!!

……うぁぁ…。だめかなこりゃ。

2008年07月26日

鶏肉とじゃが芋のパスタ、レバーペースト

いつものバルサミコ酢風味だけど、ナスがなかったので代わりにじゃが芋で。こちらも悪くない。 レバーペーストは食べ切れなかった残り。

ロシア料理パーティ

24日の補完。弟家族を迎えて、今回はロシア料理中心で攻めてみることにした。

レバーペーストは2日前に仕込んでおいたもので、玉葱、鳥のレバーとハツ、バター、生クリーム、トリュフオイルを組み合わせてる。ミキシングがちょっと甘くて固まりになってしまった部分がけっこうあり…。

パンはピロシキとして作成。普通のパンとほぼ同じ作りだけど、ボウルの中だけで作れるのはだいぶ楽かな。中身は野菜バージョンとしてキャベツ・玉葱・人参の炒め物、肉バージョンとして合挽肉・玉葱の炒め物。出勤前の朝に生地作りと包みを行って、冷凍庫で保存し、帰宅してから取り出して卵を塗り、オーブンで焼き上げ。ピロシキというと揚げたタイプのわりと濃い味のイメージがあったんだけど、こちらはあっさりしたおかずパンっぽく、ほのかに甘みがあっておいしい。

その他写真は撮ってなかったけど、野菜スープと、ビーフストロガノフとピラフ。 野菜スープは、玉葱、人参、セロリ、ズッキーニ、トマト、ニンニクに塩、ハーブ、水少々を入れて煮込んだもの。野菜の旨味が出てる。

メインのビーフストロガノフとピラフはいつものように。

デザートはおみやげにもらったお菓子。

手巻き寿司、ほうれん草のおひたし

23日の補完。まぐろは半分は生、半分はヅケに。茹で鳥用には、炒めた青唐辛子と味噌を溶いた辛子味噌。

レバニラ、ゴーヤと人参の炒め物、おぼろ豆腐

22日の補完。なんとなくレバーが食べたいと思ったので、レバニラ。わりと鮮度がよくてうまい(けど高いなぁ…カムバック安い肉屋)。豆腐にポン酢はちょっと怪しかったようだ。

鮭と野菜の味噌スープ、きゅうりのぬか漬け

21日の補完。鮭はフライパンで軽く焼いておく。昆布と水を沸かして、人参、玉葱、ネギ、大根、鮭を入れて煮込み、味噌を溶き入れて出来上がり。夏にはそぐわない気もするが、おいしかった。

ピーマンの肉詰め

20日の補完。合挽肉と玉葱とパン粉で作ったんだけど、つなぎ不足でやや柔らかすぎる感じに。小麦粉か卵入れとくんだったな。肉も牛肉のみのほうがやはりいいかも。じゃが芋、トマトを添えてオーブンで焼いた。

2008年07月20日

Subject: Release Update: freeze, architecture requalification

______________________
< We freeze next week! >
----------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

ということで、RMのLukからdebian-devel-announceに。

フリーズ状況
非エッセンシャルのツールチェイン(debhelperやcdbsなど)のフリーズおよびライブラリパッケージのフリーズを行った。来週に全フリーズ。
アーキテクチャ状況
wiki.debian.orgのアーキテクチャ品質ページはまだ多くの情報を欠いている。12アーキテクチャのうち8アーキテクチャは問題が解決されない限り落とされる可能性がある。[ARCH:QUAL]ページで確認すること。
リリースゴール
  • dashを/bin/shにすること。まだいくつかbashismなバグがopen状態にあるが、そのほとんどはパッチが提供されており、NMU可能。
  • piuparts-cleanアーカイブ。50以上のバグが残っているが、ほとんどはあまり対処されていない。メンテナスクリプトをちょっと修正する話なので、もう少し注意喚起してほしい。
  • ダブルコンパイルのサポート。先週のリリースアップデートまでにだいたい解決されており、3ダースくらいのバグがまだ残っているだけ。パッケージが削除されるのを避けたいならメンテナやNMU者は考えてほしい。
  • 依存ベースのinitシステム向けのinit.dスクリプトの準備。このゴールに向けて、いくつか新しいバグが生成されたが、現状は良い状況。lennyでは依存ベースのinitシステムの完全なサポートが得られる見込み。
BSPマラソン
現時点で360のRCバグがある。この数を減らすのに協力が必要とされており、BSPマラソンを実行したい。0-day NMUポリシーは実施中。NMUでは単にRCバグを潰すだけでなく、より軽度のバグの修正(翻訳アップデート、typoなど)もできるだけ対処してほしい。パッケージがメンテされていないようであれば、バグを修正する代わりに削除提案またはほかの引き受けメンテナを要請することを検討したほうがよいだろう。BSPを組織したいなら、リリースチームにどしどし連絡してほしい。
リリーススケジュール
希望的観測。来週: フルフリーズ。2008年9月: Lennyリリース!
リリースチームTips
パッケージがtestingになぜ落ちてこないかを知りたいときには、Migration Trackerページを参照しよう。ただし、あなたのパッケージがライブラリか、このメールを読んだのが来週以降なら、それは我々がフリーズしていることによる。

(うーむ、来週フリーズで9月リリースか…参ったな)

かつおの刺身

18日の補完。かつおは脂乗っててうまい。大根つまは一杯作って、マヨネーズやオリーブオイルなどをかけて食べた。

冷やしゃぶ、きゅうりのぬか漬け

17日の補完。豚肉、トマト、人参、きゅうり、レタス、えのき、豆腐。買ってきたトマトがちょっと酸っぱい。

スパゲッティトマトソース

16日の補完。トマト、ナス、挽肉、玉葱にて。スープ多めで食べやすい。

うなぎの卵閉じ、半温豆腐

15日の補完。パートナーが口内炎ぎみなので、口内炎治癒に効いてかつ柔らかく食べやすいものをということで。かつお節のだし汁を茹でて、切ったウナギと水菜を入れ、醤油、味醂、酒、塩で調味して、溶き卵をかける。半温豆腐のほうは、昆布のだし汁に人参、大根、ネギを入れて柔らかく煮ふくめ、皿に盛ってから冷えた豆腐を切って載せる。

2008年07月15日

わかしの塩焼き、ワカメとキュウリの酢の物、厚揚げと小松菜の味噌汁

わかしはブリの幼魚で、このくらいのサイズだとアジ科の出身らしいふんわりとした身の白さと味に、かすかにブリの重厚さを感じられる。骨がちょっと多いけど、なかなか楽しい味。久々に作った酢の物もおいしい。

鶏肉とほうれん草のカレー

13日の補完。チリ、ベイリーブス、クローブ、カルダモン、シナモンを炒め、みじん切りの玉葱をたっぷり入れてじっくり炒める。途中で生姜、ニンニクも加える。鶏モモ肉にチリパウダー、塩、胡椒、クミン、ナツメグ、パプリカ、オールスパイス、カレー粉、粉末マサラをまぶし、ナスと一緒に加えて炒める。火が通ったら茹でたガルバンゾ豆を加え、水、コンソメ、キャラウェイシード、コリアンダーシードを入れて中火で煮る。柔らかくなったらピーマンの細切りを入れ、ざっと炒めたほうれん草をミキサーでペースト化して注ぐ。塩、ガラムマサラペーストで調味してできあがり。

冷やし天ぷらうどん

12日の補完。うどんはシマダヤの冷凍うどんだけど、茹でてみると讃岐うどんっぽいコシでなかなかうまい。天ぷらはナス、ちくわ、ピーマン、インゲン、さつま芋。かえしの量が少々多くてややしょっぱくなっちゃったので、氷で薄めた。

麻婆豆腐、きゅうりのぬか漬け

11日の補完。いつもどおりな感じで、辛さはやや控えめ。

2008年07月11日

鱈のパスタ、野菜の煮込み

魚のパスタを作ることに。サワラやタイはいいのが売ってなかったので、代替として鱈を選んだ。

  1. 野菜のブロード代わりに、煮込みを最初に作っておく。セロリ、ニンニク、人参、玉葱、じゃがいも、いんげん、塩、水、ベイリーブス、胡椒をぐつぐつと煮込むだけ。
  2. 鱈の両面に塩胡椒して置き、身をシメる。
  3. フライパンにやや多めのオリーブオイルを温め、ニンニクをローストする。
  4. 魚の水気を払って両面に強力粉をはたく。
  5. フライパンをごく弱火にして魚を入れ、茹でるように火を入れる。途中で裏返す。
  6. 油が気になるときには余分な油を捨てる。白ワインを入れて強火で飛ばし、野菜のスープ分を加えて中火で乳化させる。
  7. 魚を一度取り出してパスタとあえ、皿に盛って、魚を載せる。粗く切ったトマトを添える。

柔らかく臭みもなくて良い味に。野菜煮込みもおいしい。

幅に合わせて強制改行

InDesignにおいて、欧文で書かれた段落は、テキストフレームの横幅を越えた場合、手近で見つけた単語間スペースを使って勝手に改行します。左寄せにしてもスペースの幅が動的にならないだけで、この挙動は変わりません。この挙動で困るのは、プログラムリストや画面実行例などです。これらでは文字を「単語」扱いすることにはあまり意味がありません。右側がガタガタになって見栄えが悪くなるだけです。

で、今まさに、「横幅がほとんどない2段組書籍で、プログラムコードがイッパイ、折り返し部分には送り記号を付けたい」という素材があるわけです。次期バージョンのCS4では単語を無視しての版面での折り返しができるようになるらしいのですが、ここにはCS3しかないですし、手で適正な位置を探して送り記号を入れて強制改行して……というのはDTPオペレータを発狂させることになりかねません。

幅に入る文字数はわかっているので原稿テキストレベルで改行してしまうことも一応可能ではありますが、原稿テキストのコードをあとで使いたくなったときに「使えない」ものになってしまいますし、非生産的なのでこれも避けたいところです。

ということで、silentBreakLine.jsxというのを作ってみました(ファイル名と中の関数名がマッチしてないや…)。InDesign Hacking with JavaScriptに置いています。CS3のみで確認しています。ファイル内のoffset、postfix、stylesをドキュメントに合わせて適当に修正して実行すると、全ストーリーを探して、特定の段落スタイルの段落が2行以上にわたっている場合には、フレームの幅(正確にはそこからオフセット値を引いた値)で送り記号と強制改行を挿入します(送り記号を空文字列にすれば強制改行のみになります)。本来はダイアログを用意するところかもしれませんが、当面困っているDTPオペレータにとっての利便性を考えて静的指定としました(libCommon.jsxを使うべきところもコピペコードとしています)。バグは多分ありますが、テストした限りではわりとマットーに動いているようです。

また、この機会にsilent*で始まるダイアログなしで実行するスクリプト群を公開してみました。基本的にはlib*なライブラリのコールで構成されています。

[update 2008.7.11] テキストフレームが選択されているときには、そのフレームのストーリーだけを処理するようにしてみました(選択されていないときにはすべてのストーリー)。また、オーバーフローしているときに処理をしようとするとエラーになってしまうので、例外を投げてその時点でそのストーリーの処理を打ち切るようにしました。

2008年07月10日

豚ロースの(疑似)コンフィ

デイリーポータルの記事がたいへんうまそうだったので、こちらも実行してみることにした。

肉はチャーシュー用に売ってる肩ロースブロック。脂は棚に売られていた鳥皮3小パックを買い占め。記事ではなじませたり休ませたりでかなり時間を贅沢に使っているが、今日作ってそのまま夕食にするのであまり時間は取れない。

  1. 豚肉をフォークで刺しまくってから、包丁でいくつか切れ目を入れる。塩、胡椒、ローズマリーを擦り込み、袋に入れて冷蔵庫で1時間以上置く。
  2. 寝かせる間に鶏肉から脂抽出の作業。フライパンにサラダ油少々を敷き、鳥皮を入れて弱火で蓋をして脂を出させる。くっつきやすいので注意。ときどきひっくり返す。
  3. 鳥皮全体がカリカリになったら鳥皮の油を切り、こちらはおつまみにする(ビールに合いそう)。出来立てだとうまい。冷めるとちょっと固い。
  4. 鳥の脂は少し冷ましてから耐熱皿に注ぐ。
  5. 豚肉を脂の中に沈める。
  6. 100度のオーブンで90分加熱する。
  7. 豚肉を取り出し、休ませておく。
  8. オーブンの温度を250度に上げて、ナス、ピーマン、インゲン、ジャガイモといった付け合わせ用の野菜をオイルの残っている耐熱皿に入れ、ホイルをして15分ほど煮立てる。

記事からだいぶ手順を省いてしまったが、切り口からしてもう「ふっくら、柔らか、ジューシー、香り立つ」感動。食べると、美味なトンカツからじゅわーと肉汁が出るのと同じ味わい。脂で煮てはいるけど脂っこさは感じないし、トンカツのような衣の重さはない(まぁ肉で十分重いけど)。むむぅ、これはうまいぞ。野菜もギトギトしておらず、いい味に出来た。ビールがうめぇ。

鳥皮は安いので、原価はほとんど豚ブロックだけ。脂を出す手間と時間がかかるのを除けば、わりと手軽そう。

2008年07月09日

焼きそば

ニンニク、豚肉、キャベツ、人参、ピーマン、椎茸という取り合わせ。オイスターソースではなくウスターソースを使ったけど、これも悪くない味。

鳥もも肉のソテー、パンドカンパーニュ、夏野菜の煮物

7日七夕の補完。ソテーは、はてブ経由アルファルファモザイクのレシピを参考に。

鶏肉に塩を擦り込んで、切れ目を入れ、軽く叩いて胡椒をかけ、置いておく。 鶏肉に強力粉とコーンスターチをはたき、油少なめのフライパンで蓋をして強火2分、裏返して蓋をして中火4分。油切りして8分休ませる。フライパンは軽く洗う。フライパンを温めて両面を強火で90秒ずつ焼き、刻みニンニクとバターを加え、鶏肉を取り出す。バターが溶けたらレモンを絞り入れ、軽く混ぜて、ソテーにかける。バターでちょっとグズグズしてソース分が少なくなってしまったが、昨今のソテーの中では一番よく出来た感じ。次回に期待が持てる。

パンは前日のお昼に作ったもの。しっかりこねたのがよかったか、いい塩梅の出来上がりになった。全粒粉の味がうまい。

煮物は、ニンニク、ナス、トマト、ピーマン、玉葱、じゃがいも、人参、塩、水を鍋に入れて煮込んだだけのもの。野菜から味が自然に出てくる。

2008年07月07日

鰻ひつまぶし、大根と豚肉の炒め物、ほうれん草と油揚の味噌汁、きゅうりのぬか漬け

ようやく補完完了。鰻は国産と書いてあったが実際はどうなんだろう。とりあえずどこも値段がずいぶんと上がっている気がする。味噌汁は少々ゆですぎて青菜の色がなくなってしまったが、まぁおいしい。

あぶらそば、海老とレタスとトマトのタイ風サラダ

5日の補完。あぶらそばのタレは、中国醤油1、オイスターソース1、ゴマ油1をベースに、刻みニンニク、ラー油少々という感じで。米酢を食べる前にかけた。なんかちょっと違う感じがするが、これはこれで悪くないかも。

ビーフシチュー

4日の補完。牛カレー肉、人参、じゃがいも、セロリ、マッシュルーム、たまねぎという取り合わせ。圧力鍋で1時間煮込んだので、柔らかくできた。

ゴーヤと鶏肉と木耳のスープ、きゅうりのぬか漬け

3日の補完。これで弟夫妻にもらった木耳は終了。1パックあたりの量が多いので使い方を選ぶが、味が力強くておいしい。ゴーヤをくり抜いて水にさらし、鷄挽肉・ネギとショウガのせんぎり・塩・胡椒・刻んだ木耳・片栗粉を練ってゴーヤに詰める。鍋に並べて水を注ぎ、フタをしてゴーヤが柔らかくなるまで茹でる。煮立ったらヌクマム、トマトを加えて軽く煮込む。

ピピンバ風牛キムチ炒め

2日の補完。牛肉、キムチ、にんにく、ネギ、コチュジャン、ごま油を漬け込んで、炒める。もやしは蓋をしたまま茹でて湯切り。ほうれん草は洗って強火で炒めて水少々を加え、湯切り。卵は煙立つ強火に油を敷き、溶いた卵をざっと混ぜる。臭いは強いがうまうま。

ナスとパンチェッタのペペロンチーノ

1日の補完。最後の自家製パンチェッタを使い切った。新しいのを仕込まねば。

鯛のお刺身、おでんの残り、きゅうりのぬか漬け

6月30日の補完。鯛サクが妙に安く売ってたので、そのまま刺身にしてみた。弾力があっておいしい。おでんは野菜と魚河岸を追加。

DebianのIceweasel 3.0rc2はIceweasel 3.0相当

マウスの下をフォーカス + Iceweasel 3.0rc2 + Twitterfox 1.5.7 の環境で、 Twitterfoxが作動するたびにIceweaselが上がってきてしまうようになって (Iceweasel 2ではならない)、だいぶ困ってる。 Iceweasel 3(Firefox 3)になったら治るのかね、と思って探してみたら メンテナのMike Hommeyのblogにこんな記述が。

Don't bother downloading Firefox today

The fact is, the 3.0 release is just exactly the same code base as version
 3.0rc3, which only has a MacOSX-only fix more than 3.0rc2, which is what
we have in unstable, already.

要は、3.0リリースというのは3.0rc3と同じで、3.0rc3ってのはMacOS Xに関する修正だけが3.0rc2に加えられたもの。つまり、MacOS X以外では3.0rc2 = 3.0ということか。なので、unstableにFirefox互換のIceweasel 3.0rc2が入っているけれども、これはIceweasel 3.0といわれるものとバージョン名以外中身は同一、というわけだ。

ということでTwitterfox問題については正式リリース版でも同じことのようだ……。

2008年07月02日

* 『ネオフレックスLCDスタンド』



/

パートナーの使い始めたDELLモニタ(20" 2001FP)の標準スタンドは、目一杯下げてもかなり高い位置にあるため(30cmくらい?)、上向き加減でずっと見るために体が疲労しやすいという問題があった。幸いこのモニタはVESA標準に従っているので、スタンドを交換するだけで済みそうだ。

ということで、目一杯低くできるもので、アームではなく(アームは付ける場所が難しいし、机に付けると振動で使いにくそう)スタンドのものを…というチョイスがこれ。

組み立てと取付は簡単で、ドライバー1つで可能。土台と柱をネジ止めし、モニタのスタンドをボタンを押して外してから金属パネルを取り外して(本当はこれが使えるといいんだけど形状的に無理だった)、つまみ付きのネジで柱とモニタを留める。傾きと上下はバネが中に入っていて、標準ではかなり固め。傾きはちょっとゆるめておいた。上下はかなり長いドライバじゃないと入らない位置にあるため断念したが、モニタを取り付けてみるとわりとスムーズだったので、19"以上のサイズの重量なら特に問題はなさそう。

見た目や土台の重量からすると意外に安定感があり、土台はDELL標準スタンドよりも薄くてキーボードに足を付けて載せられるくらい。20"モニタの場合、最下段まで下げる(力を加えるだけで滑らかに動き、ブレることもない)と、下のアキが5cmくらいになるまでに低くできる。ピボット回転も可能。最下段だと横から見るとちょっとカッコ悪いが、正面や後ろでは気にならない。

モニタの高さが高すぎて肩凝り・首凝りに悩んでいる人にはオススメかも(7.5cmまたは10cmでのVESAスタンドに交換できることを要確認のこと)。