2006年 06月 23日

長い夢を見た。

長い夢を見た。昨日学校の図書館で爆睡したときに見た夢と、昨日の夜妙に早く (8時ごろ) 寝て、今まで見ていた夢 (15時間)。続いていたけど、前半を覚えていない。クライマックス付近だけ覚えている。アルファギークはでてこなかった。むしろ珍しいことに現実にいる人が一人しかでてこなかった。


  • なんかの拍子に別の世界に紛れ込んだ。電車・トンネル
  • 高校生ぐらいの人たち (ないし人じゃない何か) が集まる四年制の学校
  • 廊下の奥の奥、生徒会役員とその周りの人が所属する人たちのための食堂がある。薄暗い。というかこの世界自体が薄暗い。関係者以外は入ってはいけない。
  • 一年生と二年生はライン (パシリの意味らしい) と呼ばれている。三年生・四年生にも呼び方があったけど忘れた。
  • 生徒会長は痩せ気味・身長はあまり高くないが、能力がアレらしい。結局見れなかったので不明
  • 彼女 (こちらの人間・髪が長い・身長が高い・微妙に天然入ってる) は時を止められるが、とめる時間帯が決まっている。ついでに準備が必要。周りに数名協力者がいる。
  • 彼女 (というより彼女の中にある何か) と、郊外のアパートの101号室に住むネコはキーである。
  • ある入り口がない建物の前にマットがしいてあるが、そこがトビラ。最後まで気付かない。というより気付けない。

キーパーソン (彼女とネコ) といろいろあるけど忘れた。ネコは人語を喋れる。アパートの一人暮らししている時点でただのネコじゃない。ネコのほうは純粋にキーだけど、彼女は元々こちらの人間なので、紛れ込んだときにキーが混入したみたいだ。たぶんそのキーのおかげで彼女の使える力が大きかったんだと思う。

なかなか死なない人がいた。だいぶひどいことをしたと思うけど、結局弱りもしなかった。気持ち悪かった。というか人じゃないんだなあれ。多摩川・長い道路・本

生徒会役員に味方が一人いる。と思いきや、割と味方がいる。というよりむしろ一緒にまぎれこんだ人たちは基本的に仲間のようだ。が、誰がまぎれこんだ人なのか正確に知る方法がないため信用できる数名で動く。


専用食堂で食事をしていると生徒会長が来る。逃げる。違う人間がターゲットになる。よかった。騒ぎが大きくなる。どうでもいいけどエロ本は一万円の罰金 (高すぎじゃない?)。ここで時が止まる (これは誰の協力ない。彼女の独断によるもの。協力がないため、動けたのは彼女と自分だけで、時間も短い)。手紙をもらう (内容は忘れた)。それとは別に口頭で、次の時間は4:00だと告げられる。

急いでこの世界がでないと、という話になる。このへん曖昧。先輩関係でネコがキーワードになっていることが判明し、アパートのネコを尋ねる。学校に帰る途中、今まで入り口がないことが変とは思いながらそれ以上を考えなかった場所がトビラであることに気付く。マーキング (あとで戻るためのしるし) をつけて学校へ。

他の人たちをまとめてマーキング位置に転送し、扉を開いてもとの世界へ。

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

無価値じゃなくて有害

見て不愉快になる物は見なければいい、と人は言う。例えば自分に対する陰口が書かれた匿名掲示板。例えば自分に向けた悪意が積み重ねられているソーシャルブックマーク。身分の目に入るところにそれを入れなければいい、そう言う人は多い。中にはシステム的にそれをやってしまう人もいる。リンク先のさとうさんはそういう人のようだ。

これはちょっと違うんだよね。あのスクリプト書いたのはもうちょっと違う理由があって、まぁスクリプト自体はそういう風にも使えるんだけど、もともとは違うって意味でちょっと違う。

自分が「何を」消したかったかというと、見たくないものというより、もっとなんていうか、有害なものを消したかった。例えば、本当に例えばだけど「さっさとクソして寝ろ」とか「くだらない」とかしかコメントに書いてないブックマーク (ブックマーカー) って、その文に価値がないうえに、自分にとって不愉快になるという点で「有害」なんです。だから消したかった。読むに値しない以上に有害なのを消したかった。

不愉快になるけど、批判は全うで、読んでおくべきだなぁと思ったらそれを消したりはしない。

何も得るものがないうえに不愉快になるとか、そのこと自体がまた不愉快なのでスクリプトを書くに至った的何かで、そこまで感じなかったらスクリプトなんて書かないわけです。そうじゃなかったら $X("//div[@class='bookmarklist']/ul/li[a["+xpath_fl+"]]/text()[last()]") なんてめんどくさいコード書かないです。

2006年 06月 22日

フィードの登録数

LDR でのメインフィード (RSS) の購読数が100を超えてた。

なんとなくメインのフィードが100いくのが区切りな気がしてたので書いてみる。


Atom は 23, RSS は 102。Bloglines は 100 いってない。

flickr 系 user.js for Opera

確認がとれたものと修正して動いたもの

ずばばっと表示させるやつはどうも挙動が怪しいです。動的にレンダリングするのを変えるのはやっぱちょっと苦手っぽい。

require 000.user.js

ignore-not-cc-photo.user.js を書き換えた。flickr が gamma になったときぐらいに HTML の構造を変えたらしく、もっと簡単に書けるようになっていた。ついでに $X 使うように修正した。

2006年 06月 21日

半月7, さよなら、いもうと。を読んだ

  1. 半分の月がのぼる空7
  2. さよなら、いもうと。

半月は短編集の前編らしい。なんかもうどうでもいいよ!

さよなら、いもうと。いもうと以外のキャラがいい。負荷軽減のためにわざとやっているのかなんなのかしらないけどそういう雰囲気。実際登場時間も少ない気がする。

「俺だって今日、死ぬかもしれない。明日、死ぬかもしれない。そのことがわかったはずなのに、少しも必死じゃない」 「必死じゃないといけないの?」 「いけないわけじゃないかもしれないけど……なんつうんだろ? 明日死ぬかもしれないのにさ、今日をやけにのんびり生きてるんだよな。死ぬ前にやっておきたいこととか思いつかない。だからそのことを考えないようにして、また明日とか平気で言ってしまう。そんな自分のままじゃダメなんだって思うんだけど、でもどうするんでもないんだよな」

開始早々のアレとか、途中のイベントとか、最後のアレとか、随所に新井輝臭のようなものが漂っています。当たり前だけど

GreaseMonkey Script on Opera 9.00

9.0 がリリースされたのでいろいろ調べて書く。

XPath は割と普通に使えるっぽい。時々変な挙動な気もするけど。$X は書き換え無しに動く。と思いきや createNSResolver は動かない

innerHTML 使ってパースさせるやつ は Opera でもできるようだ。


Array#forEach や GM_xmlhttpRequest がないため、殆どの GreaseMonkey スクリプトは動かない (が、後述するスクリプトでほぼ解決)。ついでに Opera はハイパートリッキーなことをしないとドメインを超えられないようだ。

Opera 用のラッパは 000.user.js とか最初のほうに呼ばれそうなファイルに書いてあげればいいっぽい。000.user.js . インターフェイスのラッパだけです。ドメイン超えるのも 000.user.js に書けば普通にいけるかもしれない。

作ったスクリプトで確認がとれたやつを列挙する。


E4X とかクロスドメインとかでひっかかる。E4X を innerHTML + XPath にし、クロスドメインのハックをすれば動くと思われる。

それと、日本語は素でかけないようです。\u でエンコードする必要あり。スクリプトを直接編集する場合もです。(GreaseMonkey はインストールするときに化けるらしく、直接編集している限りは日本語は普通にかけます。)

Rails ができない

データベースの設計ができないからなんだと思う。Rails ってまずはじめにデータベース設計ありき、みたいな雰囲気があって、どうしたらいいかわからない。きっとこの辺が分かれば高速に開発できるのだろうけど、いかんせんデータベースって「レスポンスがいいけど面倒くさい」というイメージがずっとある。

というか実際問題面倒くさい。ロックが効かないシステム (学校の鯖) でやろうとするとデータベース使うって段階で既に躓く。自宅鯖でやるとなると、デーモンが一個動いたりするから、セキュリティ云々で面倒くさい (SQLite を使うのはスタンダードじゃなくて躓く)。セキュリティ云々が面倒くさいとかいう人間に公開サーバーを運用する資格なんてないので、この辺で脱落する。公開できないサービスなんて面白くない。だからといって開発用に鯖を借りる金は出てこない。そこまでモチベーションがあるわけじゃない。

データベースありき。データベース側からやっていくと、そのものの表面的カタチ (インターフェイス) がなかなか見えてこなくてつまらないし、いざインターフェイスを作る段階になると、ロジックで疲れ果てててきとーなモノになってしまう (「よしじゃあ rhtml と CSS 書こうか、でももう一応できてる (scaffold のおかげ) しなぁ、めんどいからいいや」みたいな)。

ユーザーインターフェイスなんて後からどうにでもなる、わけない。最初に作ったイメージはあとあとまで引き継がれてしまう。最初のできが悪いと、ずっと悪いまま。すごく優秀な「別の」人が関わらない限り、それは直らない。(自分としてはこういう新しい視点を提供してくれる頭のいい女の子に憧れる。関係ない)

CSS 書くときと、プログラムのロジックを書くときの脳みその状態が全然違う。切り替えるのが面倒くさい。先に見た目を作ると、あとで「あーこれが本当に動いたらなぁ」なんて気分になってロジック書く気になるけど、逆だとならない。

根本的に何か勘違いしている可能性がありまくるけど、現状だといまいちやる気にならない。今作りたいものはあるけど、データベース設計で既に躓いている (だいたいテーブルの数が5個ぐらい)。だからとりあえず UI だけ作ろうかと思った。そのうち。いつか。

2006年 06月 20日

スローライフしたい。

throw :life
#=> ThreadError : "uncaught throw `life' in thread 0x854b6a8"

スローライフの意味がやっとわかった。@IRC by mayuki さん

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

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

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

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

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