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. ぼーっとソースを読むとき

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

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

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

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

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

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

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

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

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

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

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

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

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