ボトルネック - 米澤穂信

ボトルネック

ボトルネック

★★★☆☆
試験が終わったので久々の読書。読みやすく面白くて良かった。
彼女が事故で亡くなった場所、東尋坊に居たはずのリョウ。気がつけばパラレルワールドへ。
生まれなかったはずの姉、サキがいて、生まれたはずのリョウがいない。死んだはずの兄がいる。喧嘩してるはずの両親が仲良く過ごしている。そして事故で亡くなったはずの彼女、ノゾミがいる。
似ているようで違う2人の世界。違いの原因はなんなのか?リョウは元の世界へ帰れるのか?
リョウの世界で起こっているはずの悪いことがサキの世界では起こっていない、その原因、違いがリョウ自信にある事に気づいてしまう。自分がボトルネックであると。

劣等感感じちゃうよなぁ・・・自分もリョウよりだなぁ。最後にサキに励まされるとこなんて、うれしいやら悲しいやら。
あと、後味の悪さというか結局何だったの?ってのがある。

一区切り

さすがに入社何年も経って取らないままでいたら肩身が狭くなってきて奮起したかいあって

午前:67/80 * 100 = 83.75 %
午後:34/38 * 100 = 89.47 %

の結果となりました(解答速報より)。マークが読み取れないとか、受験番号間違えてるとか、塗りつぶしが一つずつずれてるとか無ければ大丈夫だと思う。
今回は制度が変わる直前であったせいか、前回とか去年とかと比べると比較的解きやすかったんじゃないかなぁと思う。選択肢で迷う要素が少なかったと言った方が正しいのかな。
ただ、午後の1問目は理解するまでに時間かかって・・・飛ばして最後に解き直したらできたのでちょっと焦った(一問間違えたけど)。

最近ダラダラやってた仕事に身を入れつつ、次は lpic 102 を取って、その後は Ruby 検定を取りたいなぁ。

MD が出てきた

もの置きをゴソゴソしてたら MD を入れてた箱が出てきた。なんだか嬉しくなって久々に流してみたよ♪
今となっては MD(Mini Disc) 知らない人もいるんじゃないかな。手持ちのカセットテープ のプレイヤーから MD に変わった時のあの感動はすごかったなぁ。
MD SUGEEEEEEEEEEEEEEEE!!!! 音が劣化 SINEEEEEEEEEEEEE!!!!
ポータブルな CD プレイヤー持ってる人もいたけど、どうしても CD の大きさより小さくできないからちょっと大きくて邪魔になる。それに比べたら MD は小さくて良かった。曲名入れたり順番かえたりできたもんなぁ、便利だった。文字を入れるのが結構面度かったけどね・・・トグル?をグルグル回しながら確定の連続で結構メンドイし、漢字は使えなかったけど。
MD の時代が続くと思ってたのに気がついたら誰も使ってない(笑)

google reader full feed changer を改造

This script gets contents of reading item on Google Reader. You must set up SITE_INFO in source code.

google reader full feed changer

愛用している Google Reader で全文を取ってきてくれるグリモン。
Google Reader を開いてたら妙に CPU が上がるので、Google Reader が何か悪さしてんだろうなぁと思って今日に至ったんだけど、気になって調べてみたら

if (AUTO_FETCH) {
    var interval = window.setInterval(
        function() {
            var focusedLink = FullFeed.getFocusedLink();
            if (focusedLink != FullFeed.link) {
                FullFeed.getCurrentEntry();
            }
        },
        500
    );
}

ってあった。今まで、フィードを選んだ時に自動的に取りに行ってるものだとばっかり思ってたら 500 ミリ秒毎にカレントのフィードが SITE_INFO に登録されてないかを見て、登録されてたら取りに行く動きだった・・・。そりゃあ、負荷上がるでしょう。
なので、この処理をコメントアウトしてキーリスナの登録処理を変更してみたよ。

document.addEventListener(
    'keydown',
    function(event) {
        var key = String.fromCharCode(event.keyCode).toLowerCase();
        if (key == 'z') {
            FullFeed.getCurrentEntry();
        }
        else if(key == ' ' || key == 'j') {
            window.setTimeout(
                function() {
                    var focusedLink = FullFeed.getFocusedLink();
                    if (focusedLink != FullFeed.link) {
                        FullFeed.getCurrentEntry();
                    }
                },
                10
            );
        }
    },
    false
);

space か j を押した時にカレントのフィードを取りに行く。ただ、マウスを使っている場合は取ってきてくれないね・・・。僕はキーボードオンリーだからいいんだけど。

Firefox 3.1 Beta 1 をインストールしたのはいいんだが・・・

  • 検索ボックスから検索してもなにも起こらない!
  • Highlight all が効かない!
  • FireGesture でタブを閉じるをするとタブが1枚の場合はブラウザ毎落ちちゃう!

上二つは厳しいなぁ・・・βといえど・・・αは問題なかったし。三つ目は仕様変更とかいう記事をどこかで見た気がするんだけど忘れた。でも、これは安易にタブを連続で消しまくれないので直したくてスクリプトを書いてみた。

FireGesture のオプションで登録

if(gBrowser.browsers.length != 1) {
  gBrowser.removeCurrentTab();
}
else {
  gBrowser.getBrowserAtIndex(0).loadURI("about:blank");
}

タブが複数あるときはカレントのタブを閉じて、無い時は about:blank を表示する単純なスクリプト

で、OKと思ったら甘かった。新規にページを開いた時に新しいタブ開いちゃう。残ったタブに読み込んでくれない orz
しかも right_click_close でタブ閉じた時も同様にブラウザ毎閉じられちゃうなぁ・・・これは嫌すぎる。

成功したので追記!

新しいタブで起動しちゃうのは、単純に load しちゃうと歴が残ったままになるのが原因じゃないかなぁと思って試してみたらできた!

if(gBrowser.browsers.length != 1) {
  gBrowser.removeCurrentTab();
}
else {
  gBrowser.getBrowserAtIndex(0).loadURIWithFlags(null, 128);
}

この 128 という値は

引数に指定した読み込みフラグ(flags) および与えられたリファラ(referrer)、文字セット(charset)、POST データで URL を document に読み込みます。reloadWithFlags メソッドで許可されたフラグに加え、次のフラグも有効です。

* LOAD_FLAGS_IS_REFRESH: このフラグは、meta タグの refresh や redirect によって URL が読み込まれたときに使用されます。
* LOAD_FLAGS_IS_LINK: このフラグは、ユーザがリンクをクリックして URL が読み込まれたときに使用されます。これに応じて HTTP Referer ヘッダが設定されます。
* LOAD_FLAGS_BYPASS_HISTORY: URL をセッション履歴に追加しません。
* LOAD_FLAGS_REPLACE_HISTORY: セッション履歴内の現在の URL を新しいものと置き換えます。このフラグはリダイレクトに使用されます。

loadURIWithFlags

この中の LOAD_FLAGS_REPLACE_HISTORY を使ったんだけど、値の取り方が分からなくてググったら 128 ってのがヒットしたのでそのまま使った(;´Д`)
right_click_close にも導入するかな。

やっぱ成功してなかったので追記

ページを開いてリンクで移動した後だと、最後の歴しか上書きされないっぽ・・・。単純に空タブを新規追加して、その後に開いてたタブを閉じるようにした。

if(gBrowser.browsers.length != 1) {
  gBrowser.removeCurrentTab();
}
else {
  var tab = gBrowser.getBrowserAtIndex(0);
  gBrowser.addTab(null);
  gBrowser.removeTab(tab);
}

今度こそ大丈夫っぽいが・・・。