サイトの CSS を一つ前に戻した。とはいえ alternate になっているだけだけれど。

その CSS で使っている画像が All rigthts reserved になっていて、しかも許可をとっていなかったからだ。でもこの写真、もともとは Creative Commons で公開されていたはずなんだよね。いつのまにか All rights reserved になっていることに今日気付いた。(flickr の favorites を整理していた)

こういう場合、俺は派生作品をどう扱えばいいんだろうか。俺は著作権侵害で訴えられる可能性がある?

ここで、例えば訴えられたとき、「俺が見たときは CC でライセンスされていた」と主張しても、確実に証明ができる気がしない。今だって、実は最初から CC じゃなくて、自分の勘違いだったんじゃないか、と自分でも少し思ってしまう。

ライセンス関連の勉強不足のせいか、いまいち途中でライセンスが変わったときの対応方法がわからない。そもそもライセンスを途中で変えていいのかとか、そういうのも含めてよくわからない。厳しいライセンスから緩いライセンスにするのはよさそうだけど、その逆は無理な感じがする。

Flickr の場合、デフォルトのライセンスを設定しておくと、アップロード直後は必ずそのライセンスで一度公開されてしまう。だからもし、デフォルトライセンスに CC をしていたら、少なくとも一瞬はそのライセンスで公開される。

俺の Flickr のデフォルトのライセンスは最初から CC-by だから、途中にあるいくつかの All rights reserved な写真は「あとから変えた」ものになる。だから、一瞬のスキで見た人は俺と同じような思いをしているかもしれない (とはいえ Flickr は何人見たかが表示されるけど)。特別にシビアな理由があってそうなっているわけじゃないから何時でも CC にできるけど、なんか気持ち悪い。

そういう場合は、デフォルトのライセンスを All rights reseved にして、あとから CC に変えないといけないのかな。面倒くさい。Flickr はポスト時にライセンスを指定させるべきで、そのときのデフォルトを設定のデフォルトにすべきなんじゃないかなぁ。緩いライセンスから厳しいライセンスにできないとしたら、だけど、普通に考えるとできるように思えない。(じゃあなんでやってるの、って言われそう)

ライセンスを変えるのは、システム的にはいつでもできる。途中から CC にしようが、All rights reserved になろうが、どうにでもできる。

途中でライセンスを変えられて、権利主張されたら、主張された方はどうしようもないよなぁ。誰が CC で公開していたことを証明してくれるんだろう。定期的に巡回してライセンス表示を確認して、「まだ大丈夫だ」なんてビクビクしながら利用しないといけないんだろうか。

と、一般ピーポーな俺は思ってしまうわけでした。とりあえず完全にライセンスを気にしなくて良い CSS を一枚書かないとなぁ。

  1. トップ
  2. cc
  3. Creative Commons on Flickr
  1. トップ
  2. license
  3. Creative Commons on Flickr

今回は他人のものを使わず、安全に作ってみた。

  • IE でオーバーレイ検索がダサイ。
  • 日記以外のページの最初の見出しがきもい
  • Opera がおかしい。
  1. トップ
  2. site
  3. CSS をでっちあげた。
  1. トップ
  2. css
  3. CSS をでっちあげた。

空気が読めない日記 (mixi) をこたえる。久しぶりにバトンだ。

【Q1】今つきあってる人はいる?
えぇ。もちろん nounai サーバーに、ですけれど。名前は教えませんわ。
人じゃなくていいなら Ruby さんとか。
【Q2】今好きな人、気になる人はいる?
BURGER NUDS にでてくる女の子が好きです。nounai。
まじれすすると、そもそも周りに女の子がいません。最後に女性と話したのはいつかな?
【Q3】a:告白した回数 b:告白された回数は?
{a => 1, b => 0} どういうのをカウントするんだろう? 明確に好きだと言ったことはないと思う。あれ、あった気もする。でもあれはカウントしていいんだろうか。あんまり覚えてないんだけど、っていうか、今まで忘れてたけど、最悪だな。とか、まぁ、キラめく世界。君の好きなあの娘の 写真はもうここにはない まあでもキラめく世界 一応カウントしといた。ああ
【Q4】a:振った回数 b:振られた回数は?
{a => 0, b => 0} これもカウント方法がよくわからない。ある意味常に振られているので b は数え切れないとも言えますが!!
【Q5】どんな顔・体の異性が好き?
俯いてはにかむ笑顔が似合う子・黒髪 (というより地の色)・肩幅が狭い子。
黒髪の美しさに気付くべきなんだ (独り言)
【Q6】異性の体で好きな部分は?
髪の毛・肌
【Q7】昔付き合ってた人と復縁する可能性アル?ナイ?
nounai の話ですか?
【Q8】好きな人ができたらどうやってアタックする?
対話
「アタック」とか面倒くさいから、対話のなかで「なんかいいなぁ」って思える人がいい。実際そんな人ってもう現れないと思うけどさ。
【Q9】今告白されたらOKしちゃう異性、今回りに何人いる?
だからそもそも(ry
【Q10】年上・年下どっちが好き?
±2ぐらいがベストだけど、どちらかといえば年上で!
【Q11】浮気されたらどうする?
わからないけど、まぁそんなもんなのかなって思う。でもできれば「そんなもんなのかな」と思わないぐらいの人と付き合いたいものだ。無理だ。
【Q 番外】ずばり今年のちょこれいとの数は?
ちょこれいと? たべたかず? きょうもたべたよ。きのうもたべたよ? せいさんりょうのはなしかなぁ。
【Q12】次にまわす人5人
回せそうな人がだいたい nounai 系なんですが!!

生まれ変われるなら、可愛い女の子に生まれたい。

  1. トップ
  2. baton
  3. 何バトンかわからないけど空気が読めないバトン

expand-textarea.user.js

flickr の textarea がいちいち小さいので作ってみた。textarea の右下のはじっこのほう (謎) をドラッグすると大きさが変わる。

なんで getElementsByTagName を使っていないのかというと、forEach が使いたかったから!! getElementsByTagName が返すのは NodeList であって、Array じゃない。

もうちょいまともにするように修正。

それと「左下」って書いてたのを修正した。ひだりもみぎもわかりませんがなにか?

拡張では Resizeable Textarea 0.1a, Resize textareas to your needs っていうのがあるみたい。ってことを IRCklm さんに教えてもらった。

  1. トップ
  2. js
  3. textarea の大きさの呪縛から逃れるための GM スクリプト
  1. トップ
  2. net
  3. textarea の大きさの呪縛から逃れるための GM スクリプト

コピペのしにくさが激しいので、オリジナルソースへのリンクをつけた。data スキームで飛ばす。

あるいはコピー用の Flash を使ったほうがいいかもしれない。

  1. トップ
  2. site
  3. ソースの色づけに伴い

シュガーレスのスクリーンショット

ポポスカートが好きなんですよ。低価格・高耐久なのに、とても素敵だと思うのですよ。裁縫で作れば防御も稼げるし言うこと無しですよ。防御高いポポスカのために裁縫を7にした感じですよ。メインキャラのポポスカは銘入りですよ。

なんとなくスクリーンショットあさってたらポポスカツーショットが数枚でてきた。

あの世にて白黒ポポスカ*2
少し前のあの世のアルベイ祭壇前にて。一言も喋らず (めんどくさかった) にコミュケーションをとりつつ、とか奇妙なことをやってた。
銀行にてパイオニアと
去年の。ポポスカに関しては、実はこの横に写っている人の影響が強く、勝手に自分の中 (とギルドの一部中) で「ポポスカの先駆者」を呼んでいたりしました。やー、作ったポポスカが気に入ったのでずっと着ていたらなんと向こうから話しかけられまして、先駆者きたーっとギルチャで言ったか言わなかったかしました。たまに見かけますが未だにポポスカのようです。

関係ないけど、画像のレイアウトがうまくいかない。IE で float: right はご法度だし、CSS がだんだんスパゲティになってきて !important が多くなってきて萎える。

  1. トップ
  2. mabinogi
  3. mabinogi, ポポスカートについて

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

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

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

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

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

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

  1. トップ
  2. soft
  3. よく使うジェスチャ・最後の日

何かを書きたい。

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

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

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

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

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

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

  1. トップ
  2. life
  3. 成績通知がきたよ
  1. トップ
  2. school
  3. 成績通知がきたよ

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

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

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

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

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

  1. トップ
  2. life
  3. A -> Z

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

  1. トップ
  2. prog
  3. ソースの色づけを復活 2
  1. トップ
  2. js
  3. ソースの色づけを復活 2
  1. トップ
  2. site
  3. ソースの色づけを復活 2
  1. トップ
  2. prog
  3. ソースの色づけを復活 2

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 しか書かないから使いまくろう。

  1. トップ
  2. js
  3. .toSource(), forEach, etc

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 がないからエラーになる。

  1. トップ
  2. js
  3. ソースの色づけを復活
  1. トップ
  2. site
  3. ソースの色づけを復活
  1. トップ
  2. prog
  3. ソースの色づけを復活

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 のほうがいいや。

  1. トップ
  2. xpath
  3. XPath, $X function, NSResolver
  1. トップ
  2. js
  3. XPath, $X function, NSResolver

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

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

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

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

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

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

  1. トップ
  2. prog
  3. Ruby で、Ruby に限らず

たぶんやらないけど、やりたいことを書いとく。

  • まず libxml-ruby を捨てて REXML を使う。もともと libxml-ruby を使おうと思ったのは REXML が名前空間をまともに処理してないからだったんだけど、名前空間とかどうでもよくなった。んで、libxml-ruby は Pure Ruby じゃないのでいちいち環境間で面倒くさい。REXML は標準添付だからその辺は心配ない。できるだけ Pure Ruby じゃない外部ライブラリを使わないようにしたい。
  • ちゃんとライブラリ化する。
  • 公開できるようにする。
  1. トップ
  2. taglibro
  3. taglibro の今後の予定
  1. トップ
  2. site
  3. taglibro の今後の予定

前々からいちいちあのクソながったらしい evaluate を書くのがだるかったのでちゃんと関数はさむようにした。

大きなバグがあります。詳細はXPath, $X function, NSResolverに書きました。以下のコードは非推奨です。

$X = function (exp, context) {
if (!context) context = document;
var result = document.evaluate(exp, context, null, 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 = document.evaluate(exp, context, null, 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("//p")); // Array of p elements
alert($X("count(//node())")); // => node number
alert($X("count(//body) = 1")); //=> must be true
// Firefox が嫌いになる GM スクリプト
if ($X("contains(string(/), 'Firefox')")) {
alert("I LOVE FIREFOX!");
}

これでコピペ地獄から開放される。

  1. トップ
  2. xpath
  3. JS の XPath
  1. トップ
  2. js
  3. JS の XPath

まえのとあわせて

$N = function (name, attr, childs) {
var ret = document.createElement(name);
for (k in attr) {
if (!attr.hasOwnProperty(k)) continue;
v = attr[k];
if (k == "class") {
ret.className = v;
} else {
ret.setAttribute(k, v);
}
}
switch (typeof childs) {
case "string": {
ret.appendChild(document.createTextNode(childs));
break;
}
case "object": {
for (var i = 0, len = childs.length; i < len; i++) {
var child = childs[i];
if (typeof child == "string") {
ret.appendChild(document.createTextNode(child));
} else {
ret.appendChild(child);
}
}
break;
}
}
return ret;
}
var pq;
document.body.appendChild($N("div", {}, [
$N("div", {style:"font-weight:bold"}, "foobar"),
$N("div", {}, [
pq = $N("ol")
])
]));
for (var i = 0; i < 10; i++)
pq.appendChild($N("li", {}, "hoge");
var div = $N("div");

みたいなのを使ってる。

innerHTML を使いたくない (application/xhtml+xml では一切使えない) けど、document.createElement の嵐はキモイ。中間とって GreaseMonkey のテンプレート (xyzzy の拡張 lisp を入れてる) にごちゃごちゃ書いてしのいでるます。

  1. トップ
  2. js
  3. 簡易ビルダー

GMwindow.addEventListener("scroll", fuction (e) {}, false); とかやってみたんだけど、どうもページごとにイベントが発生したりしなかったりする。なんでだろう。全然わからない。

例えばこのサイトだと、日記のページは全てイベントが発生しない。で、/about とか /xbel とかはちゃんと発生する。

  1. トップ
  2. js
  3. scroll イベントが起きたり起きなかったり

例えば就職するときには (別にバイトでもなんでもいいけれど) 自分を売り込む必要がある。自分がこういう能力をもっていて、こういうことができることを、自信を持って言わなければいけない。相手に自分を認めさせる必要がある。

でも、その能力があるとかっていう自覚・自信をどうやってつければいいんだろう。自分で自分を認めて自信をつける場合、よくある自信過剰パターンに陥っている場合が殆ど。だから、他人に認めてもらう必要があるのだけれど、他人に認めてもらうには売り込む必要がある。売り込むには自信がいる。無限ループ。

しかも、自信っていうのは時間がたつにつれて薄れていく。もっと自分より若い人達が現れてすごいことをやるし、あるいは世界が広がってもっとすごい先輩を発見することになる。

で、そういう感じで、まぁいいやって思えてくると就職というかバイトさえできなくなる。人前というか面接だと平気で嘘をつけるので、その嘘をあとでどうやって回収するかを想像してどうにもこうにもいかなくなる。嘘じゃなくなるまで腕を磨くとか、そういう方向になるけど、結局上には上がいる以上嘘は嘘のままになる。

例えば Ruby が書けるっていったらあたりまえだけど Ruby が書けないとだめだ。でもどのレベルから Ruby が書けるっていえるのかが全くわからない。人によって違うだろうし。例えばだから、Ruby に限らない。プログラミングができるっていうのはどのレベルからなのか、ウェブデザインっていうのは何を指しているのか。相手に聞けよ、というのは解決にならない。相手に聞く段階には既に自信が必要だし、嘘をつかないといけない情況になっている。

中には嘘をあとから本当にすればいいという人もいる。でもそれは自分で撒いた嘘に追われる形になる。強制的に嘘によって何かをやらされることになる。そういうのはだめだ。何かをやらされているなんて感じるのはだめだ。もっと能動的に動かないといけない。でもまたそこで必要なのが自信だ。人前で能動的に動くには自信が必要になる。無限ループ。

はいどうしよもない。ただ、どうしよもないからといって諦めてもいい問題じゃないのが鬱陶しい。誰もが働かないといけないから、自分もその例外じゃないのだ。

  1. トップ
  2. life
  3. 自信はどこからやってくる?
  1. トップ
  2. thinking
  3. 自信はどこからやってくる?

クラウド表示させた VIP

rep2 のスレッドリストに雲を表示する GreaseMonkey スクリプト rep2-cloud.user.js

インストールしたら設定で include の設定しないとだめです。もしかしたらデフォルトの rep2 ではだめかも。勢いが表示されてないとだめです。

  1. トップ
  2. 2ch
  3. 2ch cloud / rep2
  1. トップ
  2. web
  3. 2ch cloud / rep2

最初聞いたときは、最後の「望んだ世界はどうだった?」の意味を完全に無視して、プロポーズ系の唄なんだろうか、とてきとーに考えてた。

聞き込むにつれて「望んだ世界はどうだった?」がどう考えてもキーになっているように感じはじめた。というか明らかに文脈が違う。

それで、もしかしてそれまでの綺麗だったりする部分は全部「望んだ世界」で、悪魔が、夢を見せた後に「望んだ世界はどうだった? (そして今の情況を見てみろよ)」訊いているような解釈をした。ようは MARCH 系。

  1. トップ
  2. music
  3. 指輪 / BURGER NUDS, 自分の印象

だいたい固定されたので書く。でも書かないほうがいいかもしれない。基準が曖昧だ。だから、曖昧に書く。

当たり前だけれど、正しい解釈は存在しない。いや、間違った解釈は存在しない。感じたままでいい。だから、もし指輪を聞き込んでいないなら、なおさら読まないほうがいいと思う。

指輪は BEST に収録されており、解説がついているから、それを参考にする。っていうかこの解説が既に意味不明なのがどうもこうも。ぎりぎりセーフってなんだよもう。

解説には三つのヒントがある。それは「指輪」が、「いつでも振り返る事で新しいステップを踏み出す力をくれる、思い出」を唄っているということと、「望んだ世界はどうだった?」は過去の自分による今の自分への問いかけであるということ、そして「望んだ世界」は今の自分にとって「どうしよもないもの」であること。これを前提にして考える。

最初の部分は悪い状態の自分に関するところ。子供たちは残酷に笑う 皆いつか 大人になるから だけど気負ってない こんな眼はしてない までのところ。「大人になるから」とあるけど、たぶん「大人になるのに」という意味だと思う。大人になって汚くなっていくことが決まっている子供たちを見つつ、汚くなっていくことに対して気負いがない純粋さが、自分にとって残酷である、ぐらい。子供たちは気負っていないけど、自分は気負っているわけだ。汚くなりかけの時期に、汚くなりたくないことを望んで。

そいで少し飛ばして 何か忘れたろ? そんな眼をしてるだ。自分は何かを忘れている。あとでもう一度この問いかけが繰り替えさえれるけど、その忘れたモノをしっかり思い出すことが「指輪」の目的である。

忘れたものを思い出すために、ピカピカのピンセットで腐乱した情熱の解剖実験をする。解剖実験は記憶をほじくりかえす作業そのもの。

で、思い出したのが「あの日細い指に 錆びた指輪をして 全てに笑いかけたろ」なわけだ。笑いかけているのはまだでてきていないけど「君」なはず。「君」って誰だかわからないけれど、とりあえず綺麗なので女の子ってことにしとく。いやどうでもいい。ここで重要なのはもちろん「錆びた指輪」だ。「錆びた指輪」はおそらく「腐乱した情熱」と同じもの。「君」は腐乱した情熱をもっていたのにも関わらず、笑っていた。

何を恐れてんだよ 錆びた指輪でいい 気取っている場合じゃないだろ 「錆びた指輪」は「腐乱した情熱」と読み替えてもいい。「気取っている」というのは、純粋なままであろうとするということ。腐らないように、錆びないように生きていくことが「気取っている」こと。

ここで戻るけど いつかここは地獄と言ったろ それは嘘で実はよく分からない 別に気取ってない そんな不快じゃない がわかるようになる。いつかここを地獄といった。地獄というのは腐乱した、錆びた世界について自分が持っているイメージだ。でも、だんだん気持ちが変わってきている。腐乱していて、錆びている世界でもいいのかもしれないと思い始めている。気取っていない、すなわち、自分の素をさらけ出した状態でも、「そんな不快じゃない」と思えるようになった。という変化。

何を忘れたの? それを確かめなきゃ 「生きる意味」も軽いだけ ここでまた忘れたものは何かという問いかけがある。ピカピカのピンセットで腐乱した情熱を解剖して、思い出し、確かめないといけない。気負ったまま、笑えないままでは「生きる意味」も軽いのだ。

そして「あの日細い指に」と入る。君は指輪をして 世界一の笑顔で -snip- 「全て」に笑いかけたろ。「君」は錆びた指輪をしつつも、世界一の笑顔で笑っていられた。腐乱した情熱の中に、硬いガラス玉のようなものを持っていられた。硬いガラス玉というのは、すなわち忘れたモノである。記憶の中の「君」を通して、忘れたものを見つけられた状態が最後の部分。変わっていない部分があるということに気付く。

それで最後に「望んだ世界はどうだった?」だけど、「望んだ世界」がなんだったかというと、純粋なままでいられる世界・純粋なまま生きていける世界。でも、結局どう転んでも、変わらない部分があることがわかっていれば、表向きが腐ろうが錆びてしまおうが、あまり関係ないわけだ。だから、そういう世界にこだわっても無駄だし、「どうしよもなかったもの」と笑い飛ばせる。

つまり、自分が腐ってしまった、あるいは、腐ってしまうかもしれないと思うときに、いつまでも根底に変わらないものがあることを思い出させるのが「指輪」なわけだ。終わり。

「プラチナ」について言及しなかったけれど、それはぶっちゃけよくわからないから。腐食に強い金属の代表かな? エンゲージリング (マリッジリング) によく使われるからかしら。安直だけど

「全てに笑いかける君」という非現実さと、「冷たい水を求める」理想感と、「腐るしかない」ということを暗示させる現実感が共存しているのが美しいと思う。

  1. トップ
  2. music
  3. 指輪 / BURGER NUDS