2007年 11月 10日

apt-get bvi / port install bvi

vim の -b とかでやるバイナリモードは使いにくいとかいうレベルじゃないので id:amachang に Shibuya.js のときにきいた bvi をいれた。TAB で ASCII のほうと hex のほうとでいったりきたりできるのがおもしろい。

undo の挙動がちょっと違うのがきになるかも。まだあんまりつかってない

まる

http://www.nicovideo.jp/watch/sm1489464

これすごいなー。ちょっと腹の底からグっとこみあげてくる感動があるなぁ。こういう技術っていいなぁ。


こういうのみるたびに、コーディングってライブ感がなくてすげー地味だなーって思ってしまう。ライブコーディングとかも、わかる人にはわかる、っていうレベルの面白さだもんなぁ。わかるひとだけわかるっていうがどっちかっていうと好きだから (大衆受けしても大抵ろくなことにならないから) いいんだけど、たまにちょっと切なくなる。

映像的なプログラミングだってもちろんあるわけだけど、どうもそういうふつーにウケる、みたいなのをやる気にならない。表面的な面白いことと裏側的な面白いことを組みあわせたらいいんだろうけど、表面的な面白さにしか気付かない人を見るとかなり切なくなるし話かけられるのも嫌だし、それだったら最初っから難解で気付く人が気付けばいいと思えてしまう。なんかおれは気持ち悪くひねくれてるいるんだなぁ……


うえの動画だって、おれは絵のことを良く知っているわけじゃないから、知っていればわかるような面白さに気付けていないんだろうなぁ。

Emacs lisp (elisp) による blosxom クローン

(誠に誠死ね申しわけありませんが、blosxom を便利につかえるようにする .el ではありません)

http://coderepos.org/share/browser/lang/elisp/blosxom.el.cgi/blosxom.el.cgi

一応だいたいうごくところまで書いてみました。日本語表示できないけどどこで化けてるかわからないからもういいや><

ライセンスを same as Vim とかにしたかったけど Vim のライセンスが GPL とかじゃなかったのでやめた。

実行しているところを ttyshare にあげたかったのだけど、描画させながらゆっくり実行させる方法がわからなかった (*scratch* で insert-file して eval-current-buffer すると一瞬でおわってしまう)。というかひさしぶりに Emacs 起動したら C-h とかきかなかったりして全然操作できなかった。ことあるごとに C-[ 押して混乱してしまうw

いろんな言語

少しずつプログラミングのエッセンスみたいなのが見えてくる気がする。ある言語の設計がなぜそうなっているかとか、そういうことを、他と比較することで少しずつ理解できる感じがする。

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;
});