2006年 03月 20日

よく使うジェスチャ・最後の日

これなしで生きていけないジェスチャ

  1. ← - 戻る
  2. ↓→ - 現在のタブを閉じる (ウィンドウは閉じないようにカスタマイズ)
  3. ↑←↑ - 一つ上の階層を開く
  4. ↑↓ - リロード

思いついたようにときどき壮絶に使いまくるジャスチヤー

  1. Any Gestures + →↑← - Any Gestures でホバーしたリンクをすべてタブで開く。mixi とか、■ばっかり並んでる絵サイトとかで使いまくる。

このホバーしたリンクを全部開くのは魔法ちっくで好き。こうね、杖をふる的な、ね。

だいじなことを書き忘れていた。ようするに言いたいことはハーマイオニー可愛いよってことで、それ以上でも以下でもない。

何かを書きたい

何かを書きたい。

  • 理想の女性像を明確に想像できないことに気付いた。萌える女の子は明確だけど、あぁだめだ自分きもすぎる。
  • なにかしら美しいものを見つけたい。
  • 目を閉じるととにかく手がある。
  • 俺は正常かつこの上なく普通な人間である。
  • 日記が日記として機能しなくなるのは悲しいことだ。
  • タイミングさえあっていればあとはてきとーでもいい。
  • それっぽい口調が重要らしい。
  • 名前が重要であって中身は重要じゃない。
  • だからそれっぽい口調では書きたくないし、名前もてきとーなままにしておきたい。
  • 俺がなぜウェブに日記を書くというキモイ行動をしているかを、誰かは考えない。
  • それでいい。余計な分析はいらない。
  • 表に出していいものと、出すべきじゃないのがある。
  • 分かり合えるかもしれない、ぐらいの状態でコミュニケーションを止めるべき。
  • 他人に気を使うのは果てしなく面倒くさい。
  • 自分で考えることができる可能性をすべて考慮しても、考慮しすぎるということはない。
  • グロゲーと殺人ゲーは苦手。
  • 誰か一人でいい。
  • まいっか。
  • あらゆるやるべきことに対してやる気が起きない。それがかつてやりたいことであったとしても、やるべきことになったとたんやる気が起きなくなる。内容じゃなくて、情況・環境がじゅうようなのだ。
  • 別に君に訊いてはいるわけじゃないんだから、わざわざ嫌な顔して答えなくてもいいよ。
  • そんなこと、誰も訊いてないよ。
  • 余計なことは言わないようにしよう。何度決めたかわからないけど、特に、つまらない話に関しては気をつけよう。
  • メレンゲについて何度か書いては消しを繰りかえしているけど、うまく書けない。
  • そういえば 地下室で死んだふりしようよ 外は怖いことだらけ って面白すぎるよなぁ。笑っちゃうよなぁ。このフレーズ大好きなんだけど笑える。日々の唄ってこれだよこれ。これこれ詐欺。
  • はずかしそうに水たまりをよけながら よすぎる。ああ。あああ。
  • Omae Ga Dai-Kirai Da / bloodthirsty butchers
  • マナーについて考えようよ。「マナーについて考えようよ」と何かあるごとに言うのが、真にマナーがない。
  • お察しください。
  • 鯖の金を払ってない。早く払えよ。無駄なことばかり、書きすぎて、腹出てるぜ。そんなこといったって、ケーブル切る気に、なれないなぁ? もうだって、両手は、
  • 誰かの言うことを聞きたくないなぁ。
  • 知りたくないことを教わるのが好きじゃない。
  • だから、ね、あなたに、僕は、何も訊いていないんだよ?
  • (a, b) だったらお前らは
  • 独学できないやつが何できるっていうんだ。やる気があるなら独学でできるだろ。
  • 少し前までは「忙しい」っていう社会人の人は本当に「忙しい」んだと思ってたけど、実際は「忙しい」ぐらい忙しくないってことに気がついた。
  • そこでまた、誰かが言うんだよ「社会人の人」っておかしくね、ってね。
  • やろうとすれば、いくらでも他人を貶すことができるから、何が本当に悪いのかを見極めたい。そのためにまず、何が良いのかを考えたい。
  • ということを力がないうちから言っていると、そもそも生きていけないらしい。つまり、むしろそのことで自分は損害を被るってことさ
  • まぁそれでもいいか。いざとなって耐え切れなくなったら死ねばいいのだ。許可はもらったからだいじょうぶ。
  • どちらかといえば、理想的に生きていたい。現実的だと、何か得をするんかな?
  • 今なら、なんでもできそうだ。忘れないようにしとこう。
  • 今日成績通知がくるだろうけど、それの結果が良くても悪くても、先の数日は地獄だ。結果が良かったらクソやりたくない課題をやらないといけないし、悪かったら
  • やーほんと、課題をちゃんとこまめに出来る人ってすごいよなぁ。そういうシステムってどうやって得たのかな。「課題ができる」ことじゃなくて「課題が進められる」ことがすごい。すごすぎる。どうやったら手に入ったのかなぁ。セーブしとけばよかった。LV30 飽きてきた。
  • 無理さ

成績通知がきたよ

必修で落としたのは二科目四単位でした。情報処理概論 (講義に出てない) と、ネットワーク情報概論1 (講義に出てない)

教養 (哲学・論理学) は一つも取れませんでした。講義に出てない。テストも出てない。健康科学論も同じ。

他のとれた科目は A:B:C = 4:9:1 。どうでもいいけど情報処理概論が2点なのが謎い。何よ2って。

ということで課題に追われるほうになりました。よかったね。

CD コースのかたはよろしく。成績見る限り CD に全く向いていませんが、強制グループワークで忍耐力をつけたいと思います。

2006年 03月 19日

A -> Z

必要なのは技術じゃないってことは分かっているつもりだけど、俺はその必要なものを手に入れるのが嫌なわけで、そのへんどうにかしないといけないんだけど、その辺どうにかすると俺は俺でなくなるわけで、まぁ俺が考えている俺は所詮誰かが作った俺でしかないんだけどさってことを昨日友達の父親の友人の吉弥さんが言ってた。

コミュニケーション能力が必要とか、そういう話だけど、欲しくないのだ。真面目な話を一対一あるいは、一対多でするのがめちゃくちゃ嫌いなのだ。それって楽しくないから。

ネットワークゲームなんかで、ギルド戦について真面目に議論を交わして揉めているのとか、めちゃくちゃ嫌なわけで、悪いわけじゃないんだけど、単純にああいうのを楽しめない。そういうときはログアウトするんだけどっていうか、ギルド戦とか結局嫌で仕方ないからやらなかったんだけど、っていうかホムンクルスをプログラミングしてみたいんだけど、っていうかアカウントないんだけど、っていうか1500円はたけぇよ、いやこんなの関係ないんだけど。

ネットワークゲームなんかは「ゲーム」であるから、嫌ならばログアウトすればいい。でも実際の面を合わせた情況ではそういうわけにはいかない。そういうわけにはいかない。面を合わせて真面目な話というのは、逃げ道 (例えば相手を認める余裕だったり) を確保することすらぎりぎりのラインだから、本当に話たいことなんて、全く伝わりはしない。もともと伝わらないのがさらに伝わらなくなるわけだ。もういい。

例えばどこから沸いてくるかわからない自信とか、昔はモテたんだぜ今の俺は仮の俺だとか、とりあえず批判しとけとか、とりあえず謝っとけとか、とりあえずお前うざいとか、そういうのが苦手なのでコーヒーゼリー食いたい。

2006年 03月 18日

ソースの色づけを復活 2

GeSHi - Generic Syntax Highlighter を使うようにした。対応言語が多いことと、シンタックスファイルを増やし易いことがいい感じ。ただし時々 well-formed じゃないエラーがでることがあるっぽい。

.toSource(), forEach, etc

toSource とかはじめて知った。

GreaseMonkey で設定値保存するときはこれ使うといいね! わざわざ JSON 云々のコピペなんてしなくてよさげ。

var foo = new Object;
foo.bar = "test";
foo.baz = "pqpq";
foo.toSource(); //=> '({bar:"test", baz:"pqpq"})'
(new Date).toSource(); //=> (new Date(1142625169156))
(function () { return ""}).toSource(); //=> '(function () { return "";})'
alert.toSource(); //=> 'function alert() {[native code]}'

ていうか、forEach とかあるのね! やべ。

var sum = 0;
[1, 2, 3].forEach(function (item, index, array) {
sum += item;
}, this); // 第二引数は callback 中の this
alert(sum);

同じように (Ruby -> JS) select -> filter, all -> every, map -> map, any -> some が使えるみたいだ。どうせ Fx 用の GM しか書かないから使いまくろう。

2006年 03月 17日

ソースの色づけを復活

pre だけ色付けするようにした。

前に Pure JavaScript で色つけていたことがあったけど、あからさまにブラクラだった。で、なんとなく思いついたのでもっかい別の方法で実装してみた。

なんていうか非常にローテクといいますか他力本願な方法でして、PEAR::Text_Hightlighter に Ajax で丸投げというソリューションでございますです。

<?php
header("content-type: text/xml");
require_once 'Text/Highlighter.php';
require_once 'Text/Highlighter/Renderer/Html.php';
$options = array(
'numbers' => HL_NUMBERS_LI,
'tabsize' => 4,
);
$renderer =& new Text_Highlighter_Renderer_HTML($options);
$hl =& Text_Highlighter::factory($_GET["lang"]);
$hl->setRenderer($renderer);
$ret = $hl->highlight($_GET["source"]);
echo '<div xmlns="http://www.w3.org/1999/xhtml">';
echo $ret;
echo '</div>';
?>

こんなスクリプト書いたら、あとは JSpre 要素列挙して投げてあげる。レスポンスを importNode して、pre と置き換える。みたいな。

でもこんなクソ簡単なスクリプトなのに IE ではちゃんとうごかない。importNode がだめなのか、それとも responseXML から importNode ができないのか……謎。

あーHtml.php の &nbsp; は全部 &#160; に置き換えた。DTD がないからエラーになる。

2006年 03月 16日

XPath, $X function, NSResolver

JS の XPath なんて書きましたけど、重大なバグがありまして、っていうかなんで気がつかなかったんだろう、えーそれは application/xhtml+xml なページ、すなわち XML として、名前空間をちゃんと扱うページではまともにセレクトできないんですよーははははー、例えばこのサイトとかね。

$X = function (exp, context) {
if (!context) context = document;
var resolver = function (prefix) {
var o = document.createNSResolver(context)(prefix);
return o ? o : (document.contentType == "text/html") ? "" : "http://www.w3.org/1999/xhtml";
}
var exp = document.createExpression(exp, resolver);
var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
switch (result.resultType) {
case XPathResult.STRING_TYPE : return result.stringValue;
case XPathResult.NUMBER_TYPE : return result.numberValue;
case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var ret = [];
for (var i = 0, len = result.snapshotLength; i < len ; i++) {
ret.push(result.snapshotItem(i));
}
return ret;
}
}
return null;
}
alert($X("//x:p")); // Array of p elements
alert($X("count(//node())")); // => node number
alert($X("count(//x:body) = 1")); //=> must be true

かなり強引に修正してみた。

XPath で要素を指定するとき x という prefix (上のコードの場合は別になんでもいいんだけど、普通は x とか xhtml とかいうのをつける) を必ずつけるようにしとく。使い勝手が悪くなったけど、仕方ない。prefix がないときは resolver をよんでくれないみたいだ。

そう、で、resolver なんだけど、実はただの関数だった。evaluate は prefix を見つけると、resolver に prefix を渡し、URI を返すように要求する。resolver は prefix に対応する URI を返す。null の場合はエラー, "" の場合は、名前空間が null のものとして扱われるみたい (要追試)。

つまり、上のコードの resolver がやってることは、とりあえず普通の場合のように NSResolver を作って投げてみて、ダメだったら contentType にあわせて名前空間を返してやるっていう、かなり強引な (二回目) 方法なわけです。誰かもっと美しくして!

使い勝手が悪くなったけど と書いたけど、XSLT で使うような XPath と同じになった。まぁ名前空間を考慮するとこういうことになるっていう名前空間マジックなんだけど、やっぱり面倒くさいよなぁ。

$X("count(//x:body) = 1")$X("count(//*[local-name() = 'body' and namespace-uri() = "http://www.w3.org/1999/xhtml"]) = 1") みたいに書きたくはないし、HTML なページと XHTML ページとで、同じ XPath を使おうとするとこんなもんになってしまうような気もする。

冷静に考えると x より h のほうがいいや。

2006年 03月 14日

Ruby で、Ruby に限らず

やっぱ最初のころは Ruby のブロック引数が全く理解できんかった。yield をよぶとどこに飛ぶか、とか結構悩むと思うんだ。

each の「使い方」を先に覚えて、実行してみてやっとブロック引数の概念が理解できた。んで、「じゃあ自分で書くときはどうするんだ」とかでリファレンスを読むと yield とか書いてあって、でもそれ以上はリファレンス読んでもよく分からなかったから、てきとーにサンプル作ってみてやっと理解した。

それまで書いていたのが PHP とかいう謎言語だったので、Ruby が余計に神がかってみえた。Perl は読めなかったし、Python は知らなかったし。今は Perl とか Python を勉強しようと思っても、必要性が見当たらなくて書けない。所詮「勉強」にすぎなくなるから、やる気があんまり起こらない。しかし Perl はホントに、本当に読めない。map { hoge } hage {} @foobar みたいなのをよく見るけど、どういう仕組みで評価されてるのかよくわからない。

まぁ、とりあえず、自分は実装を触りながらじゃないとぜんぜん理解できない。頭が悪い上に「自分の今考えてること」に対してかなり不安を覚えるので、すぐにコンピュータで実行させて、考えていることがあっているのか間違っているのかを確定させたい。

あんまり頭の中で構造を考えないで、とにかく動かしてみる。一行書いて、p 書いて、実行して、ってのを繰り返す。しかもこれ、未だにこういう感じなのだ。数行書くごとに実行する。とにかく p を書きまくる。んで、暇なときにリファレンスを眺めて、「こういうことができるのか」ってまた書いて実行してみたりする。

だから、何か作ろうとしていないと、そもそもプログラムを書かないからなかなか理解できるようにならない。Perl も書いてみたらわかるかもしれないけど、Perl を使って書きたいものがない。気がつくと面倒くさくて Ruby を使ってる。だめじゃん。