2007年 11月 09日

独りで

よく、ある程度熟したアーティストが、他のアーティストとコラボレーションして「いい刺激になった」とかいうけど、あれはそのアーティストが既に一つ山を越えていて、ある種完成されている (つまり、完成=安定の状態を崩すための刺激) からであって、その山を越えるまではずっと孤独なんじゃないかって、つまり何がいいたいかっていうと、最初っから、大したことできないくせに、他人とコラボレーションしようとするなよ、ってなんかすごく思うんだ。

http://lowreal.net/logs/2006/04/14/1

っていうのを前に書いたのを思い出した。基本的に独りでできることは独りでやるべきだと思う。

と同時というか、ここ最近なんとなく思いうかべていたのはカブスカウト (ボーイスカウトの小学生の部) の定めにある

カブスカウトは 自分のことを自分でします

カブスカウトは たがいに助けあいます

の二つ (全部で五つある)。


いろんなことは互いのバランスでできているから、例えば「していいよ」と言われてもしてはいけないことはたくさんある。こんなのすごく、すごくあたりまえのことだと思う。

2007年 11月 08日

HTML の class

class はまんま OOP のクラスと同じ意味でとらえることができて、

<div class="hentry">
</div>

というのはクラスが hentry である div を表わし、言いかえれば、この div 要素は hentry クラスのインスタンスといえる (hentry に分類される実体)。

二つ以上のクラスのときは多重継承したクラスをイメージすればいいと思いますよ。

モーダルだけいえば

一般的にモーダルなのはよくないことになっていて、とかいいつつメニューとかもモーダルなんだけど、どこでもつかわれているメニューでさえ慣れていない人は操作法がわからないものらしい (おれにはそれがよくわからないけど、例えば MS Office で大量にツールバーアイコンがあるのはそういう人向けらしい)。でもみんな普通にコンピュータ使うときにはモーダルなことをしてる。モードの有無はそれを想像できるならどうでもいいことだと思う。あとはモードの切替えがめんどいかめんどくないかとか、デフォルトのモードが適切かどうかとかぐらいな感じがする。


どこらへんで妥協して線をひくかがいつも重要だけれど、そういうのって頭よくないとできないんだよなぁとつくづく感じる。おれにはできる気がしない。プログラミング言語デザインとかもそうだよなぁ (S式がなんでだめかみたいな。なんかここ最近S式がなんでだめかとか考えてばっかなんだけど)。

Vim の自動補完候補表示

http://screencast.com/t/jfQ2fz8HHL (月あたりの転送量を超えたらしく見れなくなった。Jing は 1G/month らしい)

http://lab.lowreal.net/trac/browser/config/.vimrc#L225

使いはじめてしばらくたったけど、快適すぎる。けっこう重くなるから非力マシンだと使えなそうだけど、頭使わずに補完が使えるようになってほんとに楽だ。noignorecase にしないとあれになるから検索とかが不便になるけど、それを考えてもいいかんじ。

数文字うったら候補が勝手に表示されて、候補がおおかったらずっとうちつづけられるし、候補があったらすぐ TAB 連打して入力できるし……

追記
http://subtech.g.hatena.ne.jp/cho45/20071111/1194766579

http://www.vim.org/scripts/script.php?script_id=1879

っていうのが既にあるよ! オプションとかあるからこっちのほうが便利だよ!

Monad

順序処理を関数の入れ子に、また関数自体の値と平行して副値を走らせることで「副作用」をパッケージ化するというのがモナドのコンセプトである。

http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%8A%E3%83%89_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

やっとこの部分が実感できた。やっぱちゃんと書いてみるってのはてっとりばやいなぁ。IO モナド以外はうまくイメージできてないけど……

言語

Haskell の (\x -> a * x) みたいな匿名関数の表記はかなりビビっとくる。なんていうかこう、可愛い女の子を見たときの気持ちにている。腹の底がグっって持ちあがる感じ、わくわくする感じ。

JS でもこんぐらい短いといいのになぁ。というか JS は return かかないと値返さないのがダメすぎる。なんであんな仕様にしたんだろ。もったいない。Lua もだ。最後に評価した式の値返せばたくさん幸せになれるのに……

あと Lua はめっちゃ JS だよ。JS

a = List.new(1, 2, 3)
a:map(function (i)
    return i * i
end)
a = new Array(1, 2, 3);
a.map(function (i) {
    return i * i;
});
2007年 11月 07日

勉強するものじゃない。

なんか

ホットエントリとか、そういうののブクマコメをよんでいて感じる気持ちって、うまく表現できない。俺がいままで思っていたよりも、俺と決定的に合わない人っていうのは、多いんだなぁと、近頃、特にここ三ヶ月ぐらいは、感じる。

Lua で Blosxom クローン

http://coderepos.org/share/browser/lang/lua/bluasxom/bluasxom.lua

ファイル列挙するのが生の Lua でできないので ruby よんで解決。他の部分は Lua だけでかいた。Class と List は前に RO 用に書いたのをそのままつかった。reverse を定義していないことにきづいたけど sort の等号変えてアドホック解決。Lua の文字列リテラルはおもしろくて

[[...]]
[=[ ... ]=]
[==[ ... ]==]
[===[ ... ]===]

みたいに = をふやして入れ子にできる。コメントなんかも複数行書きたいときは -- のあとにコレかくんだけど、これのおかげでテンプレートのコンパイルのときに楽をしてる。それとテンプレートの include (コンパイル時に処理しないといけない) とかも入れこにできるから簡単かも。実装してないし、してもあんま意味がないのだけど……

テンプレートへの値のうけわたしは setfenv (set function environment) でやってる。Lua では文字列の eval をしたいとき、 loadstring で文字列を評価する関数をつくって、それをよぶという感じなので、loadstring のかえす関数に setfenv をよんでやれば環境が変更できる (これは Ruby でいうところの binding を指定して eval してるようなものだけど、環境も Lua ではただのテーブルなのでより柔軟性がある)。

ただ、たんにテンプレートでつかう値だけを入れたテーブルを setfenv すると os.date とか組みこみの関数がテンプレ内からつかえなくて泣けるので、グローバル環境から一段階値をコピーしてからセットしてる。やっぱ環境に直接さわれるのはおもしろい。JS もさわれたらいいのになぁ。

正規表現リテラルが必要なたったひとつの理由

バックスラッシュ二個かくのめんどくさいだろ……常考……