こう、やっぱり、夏制服の髪が肩まである女の子が、プールサイドに立ち尽くしてミナソコを見つめているんだよなぁ。ほんとに。その俺が見ている風景の中では、少し遠くに見える木と、彼女の髪とスカートが少し揺れてるわけで、そんな世界に生きているのだから、リアリティ、というものはリアリティでしかなく、本当に、それがリアルであったりしなくてもいい、みたいに感じる。つまり「憧れ」が常になくちゃいけないけれど、それがリアルにないし、ないのは仕方ない。

リアルであれば、俺は高校のとき、何かしら向上的で一体感のある部活に入って何かをしたかった。今もしたい。もちろんその「今もしたい」というのは、今の状態でそれをしたいわけではなく、高校生になって部活動をしたい、という意味。そして正直いって、それ以上の何かはない。だから、このリアルな何かはまず叶わない (時間をとぶことは不可能だからね)。この時点で一つ諦めが必要。しかたないから、それっぽい目標・目標とはいえない目標を「てきとー」に掲げるしかない。死にたいわけじゃないからね、死にたいと思うとき、同時に生きたいと思ってる。よりよく生きたいのに、できないから死にたくなる。

どうでもいい。どっちにしろ、望んだ世界において、俺は俺ではない。ので、そういう意味では、考えることが、本当に意味がないことなんだろうなぁ。俺がそういう情況になるためには、それまでの環境構築 (すなわち自分の構築) の過程で、今の俺のようなことになってはいけない。それは既に俺ではない。環境=自分の反射/自分=環境の反射なのだから、そういう世界のそういう環境にいる俺は、常に俺ではない。

  1. トップ
  2. thinking
  3. プールサイドガールとそんなリアル・あるいは環境と自分について

川o・-・)<2nd life - ファイル保存時に ERb でコンパイルして保存

これの別方向バージョンです。 (最近こんなんばっかだ。パクりマンセー)

CSS 特化でいいかなぁとか思いつつ簡単なスクリプトを通して置換するだけっていうのをやってみることにしました。ERB にせよ、なんにせよ、クライアントサイドでやってる限りは書いてる人の好き放題なのがいいところです。ERB のほうが別の場合も常に使えていいんですが。

#!/usr/bin/ruby
pre = File.read(ARGV[0])
vars = Hash[*pre.scan(/^\s*\*\s+([^\s;]+)\s*=\s*(.+$)/).flatten]
#p vars
ret = pre.gsub(/\#\{([^\s;]+)\}/) do |match|
if vars.key?(Regexp.last_match[1])
vars[Regexp.last_match[1]]
else
match
end
end
File.open(ARGV[1], "wb") {|f| f.puts ret }

第一引数に変換する前のファイル名、第二引数に変換したあとのファイル名を与えます。

vim 側は id:secondlife さんのやつを完全パクりでお送りいたします。指定した実行ファイルに保存時、ファイル名を与えて実行するだけ。~/.vim/plugin/css_pre_compile.vim

if v:version < 700 || (exists('g:loaded_css_pre_compile') && g:loaded_css_pre_compile || &cp)
finish
endif
let g:loaded_css_pre_compile = 1
if !exists('g:css_pre_compile_exec')
let g:css_pre_compile_exec = '/home/cho45/proj/mendoi/compile-css.rb'
endif
if !exists('g:css_pre_compile_name')
let g:css_pre_compile_name = 'pre'
endif
function! s:CssPreCompile()
let filename = expand('%:p')
let compiled_filename = substitute(filename, '\.' . g:css_pre_compile_name . '\.css$', '.css', '')
call system(g:css_pre_compile_exec . ' ' . filename . ' ' . compiled_filename)
endfunction
exe 'autocmd BufWritePost *.' . g:css_pre_compile_name . '.css call <SID>CssPreCompile()'

でもって編集する CSS

/*
* * Colors
* key-color-dark  = #123456
* key-color-light = #234567
*
* * Images
* imgdir = /img/hogehoge
*
* * Other Constants
* content-x-margin = 5%
*/
h1 {
background: #{key-color-dark} url("#{imgdir}/head.jpg") no-repeat top left;
height: 235px;
width: 50px;
}
/* 諸事情で #content に padding が指定できないとか */
#content .section {
margin: 0 #{content-x-margin};
}
#content .h2 {
margin: 0 #{content-x-margin};
}
#footer {
background: #{key-color-dark};
color: #fff;
}
#footer address {
color: #{key-color-dark};
background: #{key-color-light};
}

この場合頭に書いた宣言部分は消えないので、キーカラーを最初に明示しておく、なんてことが自然にできます。そういえば自分はよく色の頭二文字ぐらいを覚えて動的補完カマして入力するんですが、最初の二文字さえ最近覚えるのがダルイです。


ちょっと使ってみよう。が、しかし、すぐに使わなくなる予感が! といっても一回放り込めば使って悪いことはないので使えるかな。わからない。一ファイルで完結していないのがイマイチ。オートリロードとの兼ね合いもあるかも。あれダメダメじゃん。

Ruby 限定にするなら、探し出した変数宣言を module_eval とかで読み込んで、eval("<<EOF\n#{file_content}\nEOF") みたいなことやってもいい? 式が書けるようになるけど、エラーでてもわからなく。移植性が落ちる。


でもやっぱ。ERB のほうがループとかも書けていい気がする。<% が打ちにくいからそれだけなんとかできればいいような気もする。ねむい

  1. トップ
  2. css
  3. CSS で変数が欲しい!の……

なんかみんながやたら真剣なところがすごく気持ち悪い。たかがゲームなのに、すっごいキレたりとかする。なんかおかしいっていつも思う。高校のとき、かなり RO やりまくってたとき、自分もそういう感じになったんだけど、それを思い出しても気持ち悪い。

何事にも真剣なんだよ、ともし言うなら余計気持ち悪い。その真剣さは、誰のためのものなのか。その真剣さの結果、誰が嬉しいんだろう。

この、MMO RPG の真剣さっていうのは、人生ゲームの真剣さとたぶん全く一緒なんだと思った。たかが人間ごっこに、やたら心底真剣になっている人がいて、それが多くなると、周りの人間も真剣さを強いられ、そのゲームの本来の楽しさが失われてしまう。

くだらないことはくだらないまま楽しみたい。この世にくだらないもの以外はいらない。

  1. トップ
  2. thinking
  3. MMO RPG とか、MMO Life とか
  1. トップ
  2. life
  3. MMO RPG とか、MMO Life とか

やっぱり、なるべくしてこうなっている感がヒシヒシとするなぁ。別に誰が悪いわけじゃなく、強いて言えば結局のところ自分が悪いということになるのだけれど。

何か楽しいことにどうやって首を突っ込むか、というのは、そのときの環境に依存する。そのときの環境はそれまでの環境に依存する。自分は環境の反射であるのだから、やっぱなるべくしてなっているな、とか、なんとか。知らないよ。

調子に乗らないように、とか思ったりして、時々不特定多数への DIS を見たりして落ち着いたりとか。そういう意味で、DIS って必要だなって思った。嫌だけど。

環境に求められている能力がないということは、つまり自分が自分でないことなんだよね。で、その差がいまいち釈然としなくて気持ち悪い感じ。じゃあその自分でない自分っていうのは、誰なんですかっていう、よくあり気な問答があるわけで、問答とか言いつつ答えがない罠が待っているわけで、なにこれ、みたいな。

アウトプットしないといけないのに、どうもアウトプットする能力が明らかに足りていなくて、あるいはモチベーションとかも足りていなくて、結局何もアウトプットできない。作れない。

どういう人がすごいかっていうと、なんだかんだでアウトプットが大きくて、それなりにフィードバックが (DIS であれ) ある人なんだよなぁ。そしてそのフィードバックを次に生かすことができるような、なんか、無理だな。

もちろんそのアウトプットは、適切な基礎があってこそで、あるラインを越えるまで、絶対的に孤独な向上作業であるはずだけれど、何か間違ってラインを越えないうちに誰かと何かをやったりするのは、困ったことになる。不安定なものを余計不安定にしてどうするんだ。しっかり基礎をやるべきだ。前も似たようなこと書いたなぁ。今年の4月だ (検索した)。

時間もっと欲しいなぁ。腐るほどあるだろうって怒られそうだけれど。

  1. トップ
  2. life
  3. 間違ったというか、いやあってることが間違ってる
  1. トップ
  2. thinking
  3. 間違ったというか、いやあってることが間違ってる

Remember The Milk 使い始めた。思ったより使いやすく感じない (タスクの選択とかがイマイチわかりにくい気がする)。

課題とかのタスクを登録しておいた。あと、おきてからすることとか。不安なことをタスク化するのは楽になってよい感じ。でも登録したはしたで、「まだ登録しきってないタスクがあるんじゃないだろうか」と不安になるダメさ。

タスクの一覧ってないのかなぁ。リストを超えたグローバルなやつ。

  1. トップ
  2. web
  3. Remember The Milk

GreaseMonkey で外部ライブラリが使いたいな。みたいな。似たようなのでは CMS researcher - Greasemonkeyでprototype.jsやscript.aculo.usを使う方法 があるのですが、どうもうまくいかなかったので自力実装。

function dll(loadLibs, afterLoadedFunction) {
if (afterLoadedFunction._retry)
afterLoadedFunction._retry = 0;
else
afterLoadedFunction._retry++;
if (afterLoadedFunction._retry > 10) throw("Library is not loaded because of some reason.");
loadLibs.forEach(function (lib) {
GM_xmlhttpRequest({
method : "GET",
url : lib[0],
onload : function (req) {
try {
(function (r) { eval(r.responseText) }).call(window, req);
} catch (e) {
//  nigiri tubushi
}
},
onerror : function (req) {
alert(req.responseText);
}
});
});
var loaded = true;
loadLibs.forEach(function (lib) {
try {
loaded = loaded && typeof eval(lib[1]) != "undefined";
} catch(e) {
loaded = false;
}
});
if (loaded) {
try {
afterLoadedFunction();
} catch (e) {
unsafeWindow.console ? unsafeWindow.console.log(e)
: window.dump(e);
}
} else {
var f = arguments.callee;
setTimeout(function () { f.apply(this, [loadLibs, afterLoadedFunction])}, 500);
}
}

で、以下のように使う。

// 第一要素にロードする js への URL
// 第二要素にロード確認用のオブジェクトの名前
// を入れた配列の配列
dll([["http://example.com/mochi/Base.js", "MochiKit"]], function () {
// ロードされたら実行される
})

ポイントは eval を使うところ? eval を使うので unsafeWindow を極力使わなくてすむ。あとは DOM 系の処理でおかしいこと (ここには append できないぜ系エラー) になりにくい気がする。

ロードするスクリプトの依存関係上、何度かリクエストが発射されることがある。めんどいのでブラウザのキャッシュ機能にまかせてこっちではキャッシュしていないけど、ホントはちゃんとキャッシュしたほうがいいはず。


でもって、はてなアンケートの円グラフを PlotKit で描画しなおす GreaseMonkey スクリプトを書いてみた。hatena-q-make-graphs-with-plotkit.user.js

結果をソートするようにした。あと Global じゃなくて window 使うようにした。

id:secondlife さんからの指摘により、エラーを握りつぶす処理を追加し、最大ロード試行数を加えました。

  1. トップ
  2. web
  3. GreaseMonkey で MochiKit 使ってみる。すなわち外部ライブラリの読み込み。あるいははてなのグラフが綺麗じゃない
  1. トップ
  2. js
  3. GreaseMonkey で MochiKit 使ってみる。すなわち外部ライブラリの読み込み。あるいははてなのグラフが綺麗じゃない
  1. トップ
  2. gm
  3. GreaseMonkey で MochiKit 使ってみる。すなわち外部ライブラリの読み込み。あるいははてなのグラフが綺麗じゃない

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

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


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

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

  1. トップ
  2. prog
  3. ぼーっとソースを読むとき

大学在学中にやりたいこと。もっと、物理的なことをやりたい。が、それだけで完結せず、コンピュータ・ネットワークと繋げたい。具体的に何か思い浮かばないけど、なんらかの形で光をとりいれたい。もちろん接触センサーとかもやりたい、が、まったくその辺わからない。理系大学じゃないのがネック

  1. トップ
  2. net
  3. リアル世界とインターネットをもっと近づけたい
  1. トップ
  2. school
  3. リアル世界とインターネットをもっと近づけたい

vim に慣れるために Windows でのエディタも vim にしてみる、といってもしばらくは共存になりそうだ?

vim といっても gvim でバッファは使わず、タブをひたすら開くことにする。とりあえず関連付けは変えない。というのも、既に開いている vim で開く方法がよくわからないから、だけど、ドラックアンドドロップが使えるのでとりあえずはいいかな。

しかし何故か ft=xml で、閉じタグの omni 補完ができない。ft=html ならいけるんだけど、未登録タグ直下でオートインデントしてくれないので切ない。ついでに CDATA セクションの扱いもアレだし、うーん。とりあえず今は html で書いてる。閉じタグ補完ないと生きていけない。

できれば xyzzy の xml-mode C-. 相当の機能が欲しいけど、とりあえずそんなに困らないからいいか的何か。むしろ = 入力後のクオーテーション補完のほうが欲しい、んだけど、うまく vim script 書けない。


  • win の gvim は .vimrc, _vimrc, .gvimrc, _gvimrc を読むらしい? gvim 固有の設定は _gvimrc に書いた。

全然関係ないけど、このサイトの更新システムをどうにかしたい。家の PC でしか基本的に書けないのがイマイチ。FTP うpろどしないといけないしなぁ。めんどい


しかしながら何らかのタイミングでプロンプトが見え隠れするのが嫌だなぁ。


既にある vim で開くには --remote らしい。


win32 gvim は見た目がちゃんとネイティブっぽくていい感じ。マウスホイールも効く。が、コマンドプロンプトが開いたり閉じたりするのはどうするんだ gtlt

なんかやったらすぐに normal に戻る癖をつけよう。


コマンドプロンプトがいちいちでるのは screen の window 名変える echo が動いてるせいだった。gtlt

  1. トップ
  2. soft
  3. xyzzy -> gvim

バッファとタブを併用すると混乱するのでタブに統一したい。vim のバッファはタブごとに複数のバッファ、という風になっていてややこしい。タブ1個に対してバッファ1個にしたい。

たいした方法が思いつかないので以下を加えた。

" バッファを使わない
autocmd BufReadPost * tab ball

これで一応関連付けとかドラッグアンドドロップのときはタブを開くようになる。けど、ちょっと挙動が気持ち悪い。タブを閉じても結局バッファは残っているため、次に何かのファイルを開いたりすると閉じたのが復活したりする。これは常に bw (バッファを閉じる) を使っていればたぶん大丈夫なんだろう?

  1. トップ
  2. vim
  3. gvim 常にタブで開くようにしてみる
  1. トップ
  2. soft
  3. gvim 常にタブで開くようにしてみる

dll 関数 の補足と覚書

GM_xmlhttprequest の onload でなんで .call とかやっているかというと、一部ライブラリが this を window (Global) と仮定したコードになっているからです。eval のコンテキストの this を window (Global) オブジェクトにしてあげて、例えば MochiKit の export 先オブジェクトをそこにしてあげているわけです。

でもって、なぜ unsafeWindow でなく window なのかっていうのは、その export された関数とかが、ロードされたページに影響を及ぼさないためです。Greasemonkey 中の window はページ内のスクリプトからはアクセスできない (safe) ので、Greasemonkey 内限定で使う場合、副作用の懸念を減らすことができます。


でもって、id:brazil さんの記事 で、あああって思った。全部とってきてから eval したら、変に何回もリクエスト送らないでいいや。と、いう、か、GM_setValue 使えばいいんだけど、ちょっと GM_setValue で長い文字列突っ込むのは怖い。

  1. トップ
  2. js
  3. dll 関数の補足と TODO

17歳に、なりたい。ただ、それが、高校で、オレが、オレでないことを祈って、あるいは、オレがオレであっても、オレ以外のオレが、オレの中にいるように、生きたい。

どうでもいいけど、自分が想像する、洗濯機からでてくる女の子は、ヘッドフォンをつけてない。なぜなら、彼女にはそれが必要ないからなんだけど、いや別についていたっていいんだけど、ついていない子を見るほうが、多い。洗濯機から出てくる女の子は、目立たない。違和感がない。日常に溶け込んで、洗濯機から出てくる。

普通さの正しさ、自分の考える完全な普通さは、洗濯機からでてくる女の子につまっている。その日常とか、透明さが普通で、でもこの論理的じゃない、理不尽な世界においてそれは異常に見えることも、ときにはあるよね、っていうこと、なんですね。

すごく普通なことは、実際ほんとにリアルに溢れていて、それが自分の眼に「リアリティ」として現れるには、自分がそれに気付けるか、という一点にかかってる。自分がそれを感じられるか、って忘れないようにしないと。

雰囲気に飲み込まれて、立ち位置を見失うと、せっかく構築しかけた世界観も壊れるから、注意しながら、しっかり考えないと、また明日も明後日も危ない。

  1. トップ
  2. life
  3. 17歳へ それと 洗濯機から女の子の日常性について
  1. トップ
  2. thinking
  3. 17歳へ それと 洗濯機から女の子の日常性について

mixi-show-regist-date.user.js

他人のページを見たとき、その人がいつぐらいに mixi に登録したかを表示します。インストールすると最終ログインの下におおよその登録した月が表示されるようになります。

データは今日までのを適当に集計したやつで、今日以降登録した人は一括して 2006-08 以降と表示されます。メンテナンスする気はありません(てきとう

verbose 設定を追加しました。デフォルトでオン。オンのときはそこらじゅうの写真にいつ登録されたかが表示されます。

,
  1. トップ
  2. net
  3. mixi に登録した日を表示する GM スクリプト
  1. トップ
  2. web
  3. mixi に登録した日を表示する GM スクリプト

やたら好評で見たほうがいいよ!とかいう話だったので、ゆーさん (誰) と真雪さんと見てきますた。

また (謎) 時間跳躍系なんですが、これは SF っぽさは殆どなく、終始青春でした。やばい。青春やばい。青春系で、ただし切なさ多め、ぐらい、だった。

  • え? っていうシーンがあってあせる。
  • かなり展開がはやい。
  • 変に超人的な人がでてこなくてよかった。(おばさんがアレだけど、あんまり関係しない)
  • 空の描写が多かった。気がする。
  • 冒頭の図書室の女の子がやばい。と思いきや最後のほうでも出てきて嬉しい。
  • サブキャラの女の子かわいそう。
  • 人混みに紛れるシーンが好き。主人公もどっちも。ちょっと壊れ気味
  1. トップ
  2. life
  3. 時をかける少女 を見た
  1. トップ
  2. movie
  3. 時をかける少女 を見た

何度も書いているけど、新しい人とリアルで話すのは、果てしなく面倒くさい。相手がどのレベルでキレるか、相手がどのぐらいリテラシを持ってるかを、慎重に量らないといけない。こういうこと、どうにかできていたのが、その期限だったわけだけど、それがとっくに終わってしまってる。もう成り行き上仕方なく、という展開以外に、そういう作業はしない。というか、期限内でも、どうにかやっているというレベルではなかったように思う。慎重さに欠けてたように思う。もういいけど。

例えば大学で誰か知り合いを作るにしても、こういう手順を踏むのはなかなか難しい。たいして会うわけでもないし、しかも、量った結果が、望んだ結果であるとは限らない。というより、多くの場合期待は裏切られる。最初からないものに期待してる頭の悪さがここにある。

ネットリテラシの量りかたも、いまいちよくわからない。「これはひどい」の響き方が、タイプによって違うことに気付いたけど、どうも使い分けているような人もいてややこしい。ツンデレにしても萌えにしても、レベルというか、使い方の違いがあってわからない。フィードリーダーを使っていなかったりする。フィードリーダーを使っていてもあんまり購読していなかったりする。何か一個のことで、ちゃんと量れない。つまり、そこそこの長い時間をかけないといけない。どんだけ面倒くさいんだよ、って。かけた時間は殆ど無駄になる。そこまでして、いまさらリアルが必要か? リアリティで十分ではないか?


ネットで日記を読むのが面白いのは、画面の向こうの人の形を、こちらが自由に想像できるから。何か、自分の中のキーワードにひっかかる人の日記を見て、こういう人なんだろうか、こういう人なんだろう、とか、勝手に想像できる。自由に。ネットの中で完結している限り、自分の想像は守られる。

ここで、期待が膨らんで、コミュニケーションをとろうとしてみても、割と大丈夫だ。なぜかといえば、想像が侵されそうになったとき、自分からそのコミュニケーションをやめることができるから。自分の想像が、壊れない程度に、コミュニケーションができる。面倒くさそうなことになったら、回線切って寝ればいい。明日は曇りのち晴れ。


これが正しくない、と思うだろうかとか。実際、リアルでも同じようなプロセスが、より短時間により集中的により危険な状態で行われているだけ、だけど。一日の間に、何十もの勘違いをして、少しわかった気になって、次会うとき終わるような。しかも、何も全く知らないところから、手探りで。より無駄が多い。楽しみが少ない。よく考える時間がない。何より、コミュニケーションを強要されるのは面倒くさい。別に、そんな話聴きたくないよ。別に、こんな話、聴きたくないでしょう。


昨日は、9時間寝て、夢を見たけど、夢の内容を忘れた。いい夢だった気がする。けど、忘れた。忘れても、いい夢だった、と。雰囲気。でもたぶん、それじゃなくて、ちゃんと思い出しても、妄想なのかもしれないけど。

,
  1. トップ
  2. life
  3. 期限切れ
  1. トップ
  2. thinking
  3. 期限切れ