2006年 09月 10日

blosxom section plugin

section

この日記みたいな URL で blosxom のエントリにアクセスできるようにするプラグインです。

例えば blosxom デフォルトだと /2006/09/09/ までしか時間単位で特定できないですが、このプラグインで /2006/09/09/1 とかという風に完全に時間ベースで一つのエントリを特定できるようになります。

特定の環境でしかテストしてないのでいろいろ不具合があるかも。extensionless とは共存できるみたいです。

2006年 09月 09日

Development Environment Conference に行った

Development Environment Conference に行ってきた。

  • vim text-objects
  • *, #
  • CSS 超高速リロード
  • svk, CPAN-Mini でオフライン化
  • バイナリパッチングカッコヨス
2006年 09月 04日

nil or null

最近なんとなく null より nil のほうが好き。

2006年 08月 12日

ぼーっとソースを読むとき

なんとなくぼーっとソースを読みたいときって、コンソールのアプリケーションだとだめなんだよなぁ。マウスでドラッグアンドドロップでエディタで開いて、マウスホイールで眺める。そういうのを楽にやりたい。

Linux デスクトップとかだとこういうのがすっごいやりにくい。ファイラが使いにくい。なんか疲れる。


キーボードがもっとうまく使えたらいいんだろうなぁ。気合入れないとキーボード使えない。なんかキーボードは typo しまくるから、ストレスたまる。いつまでたってもタッチタイピングできない。P とか今だに一発でうてなくて @ を押しまくる。, も . もうまく入力できない。数字もだめだ。みないと打てない。[ とか ] も、? も / もうまくうてない。そして、そもそも左シフトを押す習慣がない。右手の動きに無駄が多すぎる。そういうのをいちいち感じるから、キーボードはストレスが溜まる。

それで結局、改善しようと思っても、いつもの無駄なうちかたをしてしまう。無駄な打ち型のほうが早いんだから仕方ない。少しずつやっていくしかない。左手があんまり動かなくなったのもかなり最近だしなぁ。CapsLock を Ctrl に変えたあたりでやっとあんまり動かなくなった。

2006年 07月 05日

Active Record Pattern

パターンって、テーブルがクラス、行がインスタンスになるっていうのがそうなんだろうか。

2006年 06月 27日

Brainfuck といえば

前に 短めの bf コードを吐くスクリプト 書いた。

数学が分からなくて、これが本当に最短なのかわからない。そのうえ、255 以上 (より上?) の数値を最適化するとき無限ループさせるコードを吐いてしまうバグがある。よくわからない。

mixi で一時期書いてた bf はこれで生成していた。

2006年 06月 23日

SQL わかんね

ビューって何。つまり、使うと何が嬉しいのかよくわからない。パフォーマンスのために云々っぽいけど、実際どういうケースで使うんだろう。


最近分かったこと。というか教えてもらったこと。

カラムに配列 (のようなもの) を突っ込みたいときは、配列の要素をテーブルにして、元の行の id とデータを複数突っ込むらしい。

/* この例だと当たり前な感じがするなぁ。 */
CREATE TABLE entries (
id INT PRIMARY KEY,
body TEXT,
...
);
CREATE TABLE comments (
id INT PRIMARY KEY,
entry_id INT,
body TEXT
);

多対多な関係の場合は仲介テーブルを作るみたい。

CREATE TABLE ideas (
id INT PRIMARY KEY,
body TEXT
);
CREATE TABLE users (
id INT PRIMARY_KEY,
name VARCHAR(60)
);
CREATE TABLE votes (
id INT PRIMARY KEY,
idea_id INT,
user_id INT
);
2006年 06月 20日

カリー化をふと理解した?

いろんなところでカリー化と普通に言われて、カリー化って何だよって思っていたけど、ふとした拍子に理解した (と思う)

引数を一個とって関数を返す関数をカリー化された関数というらしい。なんか言葉にするとそこらの説明と大して変わらないなぁ。

檜山正幸のキマイラ飼育記 - JavaScriptでカリー化 の最初に「カリー化ってなに?」って書いてあるけど、今はこれが一番わかりやすい例だと思える。前読んだときはよくわからなかった。2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること。ちなみに「なに?」の部分以外はわからない (読んでもいない)

モナドもわからない。ほっといてもそのうち分かるんだろうな

2006年 05月 26日

いつポインタを理解したんだろう

今日の講義でポインタの説明があって、その中で先生がポインタを理解するまでこんなに苦労した!みたいな話を聞いた。

それを聞いたときから、自分はいつポインタっていう概念を理解したんだろうって考えているんだけど、どうも分からない。

C/C++ とかを殆ど書いたことがなかったので、実際にポインタに触れる機会は今までなかったといってもいいと思う。でもいつの間にかどういうものかっていうことは理解していて、なんか不思議な感じがする。

いろいろ過程を辿ってみたんだけど、もしかしたら Ruby 触り始めてからかもしれないなぁと思った。Ruby の破壊的メソッドの理解の過程で、「変数」に対する考え方が変わった (箱という理解から、名前・ラベルという理解へ) とき、ポインタを理解したのかもしれない。メソッドに渡される引数が参照で渡される云々の理解かな。あとは拡張ライブラリの作り方とかでかなぁ。やっぱり正確なところはわからない。


で、先生の場合「ずっとわかんなかったんだけど、ある日起きたら理解していた」とか言っていて、ねー……あるあるwwとか思った。ポインタとかに限らず、なんか寝て起きたら視点が変わってて、あーなんだ、もっと簡単じゃーんみたいな。あれって結構感動的というか、好きなんだけど滅多にない。

時々すごく集中してプログラムを書くことがあって (滅多にない)、そういうときはもうずっと頭の中にある完成形まで突っ走ろうとする (寝ない) んだけど、アルゴリズムとか苦手だからちょっと難しくなるとすぐ躓く。それでもう諦めて、いいやーって寝て、起きるとなぜか思いついてコードが書けるっていう不思議現象。面白い。

2006年 05月 18日

今日のぺるる コンテキスト

コンテキストについて学んだよ。今回もとぴあさんくらむさんに親切に教えてもらったよ。

Perl ではコンテキストっていうのがあって、意識していないとハマるらしい (というかハマった)。サブルーチンを呼ぶところだけを見ても、そのサブルーチンが何を返すかがわからない。

$ perlsh
main[1]$ @arr = localtime;
56
21
1
18
4
106
4
137
0
main[2]$ $scr = localtime;
Thu May 18 01:22:02 2006

最初、なんでただの配列がスカラ変換のときに、タイムオブジェクト?のように見なされて時刻文字列になるんだ?って思ったんだけど、これは localtime がコンテキストによって挙動を変えた (!) 結果らしい。localtime っていう部分だけを見ても、localtime が何を返すかはわからない。


そのコンテキストとやらには、大きくわけてリストコンテキスト・スカラコンテキスト・void コンテキストがあるようだ。

sub context {
if (defined wantarray) { # void context では undef
if (wantarray) { # list context では true
print "List Context!\n";
} else {
print "Scalar Context!\n";
}
} else {
print "void Context!\n";
}
return;
}
@arr = context;
$scr = context;
context;
__END__
List Context!
Scalar Context!
void Context!

という感じで、サブルーチン内で wantarray を呼ぶことによりコンテキストの分岐ができる。wantarray っていう名前はおかしい (配列とリストは区別がある) みたいだけど、歴史的事情がきっとあるんだろう? perldoc でも wantlist であるべきだった的なことが書いてある。

たぶんコンテキストの理解は Perl では必須だろうけど、こういうのって他の言語だとあんまり見ないよね、っていう感じだった。


他今日知ったこと

  • use vars は obsolete。変わりに our
  • 擬似ハッシュには触るな (obsolete)