本を読む

読書やコンピュータなどに関するメモ

「LLTV」に参加

 年一回のスクリプト言語のお祭り「Lightweight Language Conference」に行ってきました。今年は「Lightweight Language Television」(LLTV)という題です。毎年ながら、一日中楽しく話を聴かせていただきました。スピーカーのみなさん、スタッフのみなさん、ありがとうございました。

 ときどきtwitterでつぶやきながら聴いていたので、twtr2srcで拾い直したログを中心に、メモとしてまとめておきます。

朝から生テレビ

 論客3人が、プログラミング言語やプログラミングについて討論する番組です。なぜか途中で、Perl、Python、PHP、RubyのLanguage Update情報のコーナーもありました。

 テーマとしては、会議室言語とコミュニティ言語とか、マルチコアを使いきるプログラミングとか、プログラミングする若者とか、携帯とプログラミングとか、並列やイベントドリブンでのデバッグとかいったことが語られていました。

LLフィーリングカップル

 下のつぶやきログのように、始まる前はお笑い番組だと誤解していました。が、実は、技術者のワークライフバランスをテーマとしたパネルディスカッションだったようです。働きやすい職場とか、いっしょに働きやすい人間関係とかいったことが話されていました。

渡る世間は雲ばかり

 Windows Azure、GAE+Java+Slim3、GAE+JRuby+Rails、GAE+Python+Kayの4人がクラウドについてパネルティスカッションしました。場としては、高井さんがトリックスターな発言を飄々と連発していたのが印象的でした。技術面では、クラウドサービスって普通のWebアプリと考え方を変えなくちゃならないという話で、Kayはそのへんを特徴としているそうです。ちなみに、休み時間に荒井さんにAzureの話をいろいろ教えてもらいました。

  • 14:42  本当だ、荒井さんMacだ #LLTV (←後から注:OSはWindows 7でした)
  • 15:13  takaiさんはPostgreSQL #LLTV
  • 15:18  JRuby-Rack #LLTV
  • 15:24  ARあってのRails #LLTV
  • 15:45  「分散並列コンピューティングのネックはストレージ」 #LLTV

プロトタイピング ~「もの作り」の流儀~

 フィジカルコンピューティングとデザインの交点あたりをテーマにした番組です。ウォーターフォール的で大規模なもの作りではなくて、ハードウェアスケッチでアジャイルに回す、という話でした。が、それ以上にスクリーン上で紹介されたさまざまなプロダクトが魅力的でした。

大改善!! 劇的ビフォーアフター

 4人の匠が、「Rubyでfortune」「JS+Vimperatorでsl」「S式でlsのソースを改修」「シェルスクリプトで商品データを処理」をそれぞれ披露する番組です。下のメモではShiroさんの話が中心ですが、いずれの匠も技を見せてくれて、テキスト形式の商品マスターをunigramなインデックスでファイルに分解する技とかもなるほどでした。

  • 18:13  :filter => Translator.filter() #LLTV
  • 18:20  w3m -dump -T text/htmlでHTMLを修復 #LLTV
  • 18:27  :set fullscreen #LLTV
  • 18:40  Canvas Text APIはFx 3.1から #LLTV
  • 18:46  えす☆える #LLTV
  • 18:50  Cのマクロでメタプログラミング #LLTV
  • 18:52  cppのマクロはにせもの #LLTV
  • 18:54  高階関数やクロージャが使えない #LLTV
  • 18:55  foreachとか書きたい #LLTV
  • 18:56  オプションがヘッダ、関数、mainのパースに分散 #LLTV
  • 18:56  C in S-Expression #LLTV
  • 18:57  コンパイラマクロ #LLTV
  • 18:58  構文木を置換 #LLTV
  • 18:59  テンポラリの変数をgensymして生成、構造を隠蔽 #LLTV
  • 19:00  グローバルなコンパイル時計算 #LLTV
  • 19:01  繰り返しの除去で70行が5行に #LLTV
  • 19:02  オプションを定義するDSL #LLTV
  • 19:03  変数定義、オプション処理、変数宣言を生成 #LLTV
  • 19:04  マクロは劇薬 #LLTV
  • 19:05  Programming Closure、Shiroさんが翻訳中! #LLTV (←後から注:正しくは「Programming Clojure」です)
  • 19:13  追記型で記録 #LLTV
  • 19:21  unigramでインデックス #LLTV

LLレッドカーペット

 毎年のLL Conferenceで大人気、Lightning Talkの番組です。内容はもとより、プレゼン技もすごくレベル高くて、楽しみました。

sh.inatraで簡易BBSもどき

 pure bashで作ったsinatraもどき「sh.inatra」のサンプルとして、簡単なBBSもどきを作ってみました。「Ruby Freaks Lounge:第9回 SinatraとSequel・Hamlで掲示板アプリを作る|gihyo.jp … 技術評論社」のマネです。

 ちなみに、SQL injectionとかXSSとかそのへん全開ですので、念のため。

#!/bin/bash

. /opt/sh.inatra/sh.inatra.sh

dbfile=/tmp/bbs.sqlite3
[ -e "$dbfile" ] || sqlite3 $dbfile 'CREATE TABLE bbs (user text, comment text, created_at text)'

get '/' && {
    cat <<EOF
<html><head><title>BBS</title></head><body>
<form method="POST" action="$SCRIPT_NAME/comment">
<p>Name: <input type="text" name="user" size="16" /></p>
<p>Comment: <input type="text" name="comment" size="60" /></p>
<input type="submit" value="Post"></form>
<table>
EOF
    sqlite3 $dbfile <<'SQL'
.mode html
SELECT * FROM bbs;
SQL
    echo '</table></body></html>'
}

post '/comment' && {
    sqlite3 $dbfile "INSERT INTO bbs (user, comment, created_at) VALUES ('$params_user', '$params_comment', '$(LANG=C date)')"
    redirect '/'
}

 実行例。

sh.inatraサンプル2

 あんまりフレームワークで楽になった気はしませんが、とりあえずsqlite3の".mode html"って便利ですね。

「モーティヴ-原動機 3―リフュールド」3・4巻

 気がついたら、崎谷君とサクラダさんの物語の続きが長編になってた。

 クラシックバイクのレストアの地味な作業と、十代の悶々というかウジウジというかそうした気持ちとが重なって進むストーリー。そうした中で、ときどき視界がパッと開けるような瞬間がいいね。前の短編でも、北海道でハジけるところが印象に残っている。

 つまりなんだ、ツーリング行きてぇ~!

 ちなみに、舞台はあのトリニティスクール。

pure bashでsinatraもどきを作った

 ということで、bash内蔵コマンドだけのpure bashで、sinatraもどきのなにかを作ってみました。名付けて「sh.inatra」。あっ、pure bashといいつつrmは使っちゃいました。

 いちおうGitHubに置いておきます。あくまで見た目だけのジョークソフトなので、真面目なサーバーで使わないようにお願いします。

コードのサンプル

 サンプルはこんな感じ。

#!/bin/bash

. /opt/sh.inatra/sh.inatra.sh

get '/hello' && {
    echo 'Hello, World'
}

get '/say/*/to/*' && {
    echo Say ${params_splat[0]} to ${params_splat[1]}
}

 これをCGIとして実行すると、こんな感じ。

sh.inatraサンプル

オフラインで試す

 Rubyのcgi.rbふうに、オフラインで試す方法も用意しました。

$ sh inatra ./hello.cgi
(offline mode: enter "method uri" on standard input)
GET /say/hello/to/world
Status: 200 OK
Content-Type: text/html; charset=utf-8

Say hello to world

 「…"sh inatra"って言いたかっただけと違うか?」と思ったあなた、はい、そのとおりです。

追記2009-08-30:

 見返したらContent-Type:がおかしかったので修正(GitHubのソースも)。

「Let Over Lambda」

LET OVER LAMBDA Edition 1.0
LET OVER LAMBDA Edition 1.0
posted with amazlet at 09.08.17
ダグ ホイト
エスアイビーアクセス
売り上げランキング: 16981

 「On Lisp」を読んだりして、Lispのマクロって言語の表現力を強化するためのものだと思っていた。それは間違いではないのだけど、Shibuya.lisp TTの講演を聴いたり、本書を読んだりして、マクロはコンパイラに結びついた機能ではないかと思うようになってきた。

 たとえば、Cでは制御構造と関数(と単純なマクロと固定的なオプティマイザー)しかないので、printf的な機能を実装すると、たいてい実行時の呼び出しごとにフォーマット文字列をパースすることになる。それに対してLispのマクロならコンパイル時に展開できる、とかなんとか。いや、Common Lispのformatは関数だし、formatterもそう実装されてるかどうかはわからないけど、そこはまあ一例として。

 …よくわかってないから、「On Lisp」を読み返そうかな。

On Lisp
On Lisp
posted with amazlet at 09.08.17
ポール グレアム 野田 開
オーム社
売り上げランキング: 110955

「入門git」

入門git
入門git
posted with amazlet at 09.08.16
Travis Swicegood
オーム社
売り上げランキング: 4022

 自分の場合、gitはネットなどで断片的にかじっただけなので、まとまった形で入門書を読めて助かった。実際のプロジェクトの流れにだいたい沿って、そこで必要な機能だけ紹介してくれてるし。比較的薄くてコンパクト。

 自分が知らなかった、今後使いそうな機能メモ。

  • git config --global color.ui autoで表示の色づけ
  • git tagでタグを打つ
    • ブランチは消してもよい
  • git add -iで対話的にステージング
  • git add -pでパッチ単位でステージング
  • git merge --squashで、マージする変更を1つのコミットに
  • git mergetoolで対話的に競合を解決
  • コピペを追跡できる:git blame -M、git blame -C -C
  • git rebase -iで、コミットを順序変更・圧縮・分割
  • サブモジュールでほかのリポジトリを取り込む
  • git archiveでtar玉を作る
  • 削除したコミットをgit reflogで探す
  • git svnでgitをSubversionのフロントエンドに
  • Gitosisでgitサーバー
  • プロジェクトのチケット管理を、リポジトリの中に組み込む「ticgit」

 ちなみに、142ページで「sudo apt-get install subversion-perl」とあるのは、libsvn-perl?(subversion-perlはFedora?)

「盗作の文学史」

盗作の文学史
盗作の文学史
posted with amazlet at 09.08.12
栗原裕一郎
新曜社
売り上げランキング: 217313

 オビの説明が的確。

つくづく人間(作家)は面白い。盗作、パクリ、剽窃、無断引用、著作権侵害、作家のモラル…をめぐって繰り広げられたドタバタ(悲喜劇)を博捜し、事件としてでっち上げられる過程を冷静に考察した“盗作大全”。

 盗作の是非とか二次創作とかメディア論とか、あるいは本歌取りとかインターテクストとかそういう話はさておき、盗作騒動の事例を網羅的に紹介する本。論より事実で、あくまで起きたことをベースにして語っているのだけど、480ページが苦にならないぐらいぐいぐい読ませ、読み物としても面白い。まさにドタバタ人間模様。

 論より、とはいえ、本書では通底する視点として、以下の3つに批判(揶揄)の目を向けているように思う。

  • 出版社(版元)の権利管理
  • 文壇の縦社会
  • マスコミやネットのセンセーショナリズム

 江戸時代から明治初期には、版元が権利を握っていて二次創作やりほうだいだったとか、そのころの文壇では師匠の名前で弟子が書くのがよくあることだったとか(学会の論文みたいな感じ?)いうトリビアも興味深い。

 あと、多くの事例で攻め側も守り側もぐだぐだでシニカルに描かれてたりする中、庄司薫の話だけちょっと視点も結末も違っている。日比谷高校への思い入れとか。

「宗像教授異考録」第11集

 古代史仮説マンガの新作。日本人の“幻想”を探る「扶桑伝説」、千本鳥居が印象的な「無限回廊」、第1集からつながる「裂けた仮面」の3編を収録。ちなみに、「無限回廊」では、旧シリーズから少しずつ触れられてきた宗像教授の過去と、ステッキの由来が明かされる。

 元ネタリストは、ネタバレなので「続きを読む」で。

続きを読む »

termtterのyonda4プラグインを試作

 最近、読んだ本を読んだ4!に投稿しています。

 ただ、書名だけだと目的の本を特定できないんじゃないかとか妙に心配になって、結局AmazonでASINを調べて投稿したり。それじゃ手間なので、termtterのプラグインを試作してみました。

 試作品なので、とりあえずgistに。

 使い方はこんな感じ。パターンで検索してくれるので、リストアップされた中から選びます。

> yonda4 "風雲児たち 幕末編 15" 日米通商条約、島津斉彬没
0:  風雲児たち 幕末編 15 (SPコミックス) みなもと 太郎 (コミック - 2009/7/28)
1:  風雲児たち 幕末編 14 (SPコミックス) みなもと 太郎 (コミック - 2008/12/26)
Enter number or "q"> 0
=> @yonda4 4845837099 日米通商条約、島津斉彬没
>

 要は、AmazonのHTMLをNokogiriでスクレイピングしてるだけです。なので試作。

「つみきのいえ」

つみきのいえ
つみきのいえ
posted with amazlet at 09.08.02
平田 研也
白泉社
売り上げランキング: 4993
そのいえは とても ちいさな いえでした

 ふと書店で手にとって、買ってみた。

 こういう話だったのか。なにが起こるわけでもないし、いわゆる「感動作」ではないのだけど、ぐっとくる話。映画も見てみようかな。

「FRONT MISSION DOG LIFE & DOG STYLE」04

 「FRONT MISSION」の世界を背景に、戦争の狂気を描くオムニバス。

 この巻は「英雄の十字架」編を収録。主題は「神の加護と罰」か。

これで全て…お前の…
思い通りってわけか…

「ディアスポリス」13巻

ディアスポリス-異邦警察 13 (モーニングKC)
すぎむら しんいち リチャード・ウー
講談社
ユーアー・ベリー・カインド

 あの男が再登場。

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad