IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

僕もクイズ

この問題がとてもおもしろかったので、

http://rssblog.blog81.fc2.com/blog-entry-31.html
僕もなんかおもしろいクイズないかなあと思って考えてみた。

で、

昔、中学の社会の先生が出したクイズを思い出したので出題してみる。

問題です。

● ┃ ○   ●   ○ 

 全員こっち向き→

○:白い帽子を被った人
●:赤い帽子を被った人
┃:壁
  • 赤白帽を被った四人の人が一列に並んでいます。
  • 四人は交互に赤白赤白と帽子を被っています。
  • 全員右方向を向いています。
  • 自分より前の人の帽子の色は見えますが、後ろの人と自分の帽子の色は見えません。
  • 左から一番目の人と二番めの人の間には壁があり、壁の向う側は見えません。
  • 赤の帽子が二つ、白の帽子が二つあることは全員が知っています。
  • どのような順番で帽子が並んでいるかは誰も知りません。

このような状況で、以下のようなゲームをします。

  • 自分の帽子の色を叫んだ人の勝ち

さて、勝ったのは誰でしょう。
簡単ですかね

(追記)ググったら普通に答えが出てきた・・・

有名な問題だったのですね。

完全私的 忘却防止メモ Firefox 上の全ての関数監視

with(Components)
var jsd = 
  classes['@mozilla.org/js/jsd/debugger-service;1']
    .getService(interfaces.jsdIDebuggerService);
var store = new なんかストレージっぽいもの;
function hook() {
  jsd.enumerateScripts({enumerateScript: function(s){store.add(s)}});
  jsd.scriptHook = {
    onScriptCreated: function(s) {store.add(s)},
    onScriptDestroyed: function(s) {store.remove(s)}
  };
}
jsd.breakpointHook = { onExecute: function(frame, type, value) { /* ... */ } }
script.setBreakpoint(script.lineToPc(lineNo, Components.interfaces.jsdIScript.PCMAP_SOURCETEXT));

Firebug の monitorEvents unmonitorEvents がバグってる件とそのバグ修正方法

以下のエントリーを見て

FirebugのmonitorEventsが動かない - Enjoy*Study
で、実際はどうなんだろうと試してみた。

ちなみに monitorEvents とは

Firebug のコンソールで

>>> monitorEvents(document.body)

と打ち込むと document.body にあがってきた全てのイベントをモニタリングできる

>>> monitorEvents(document.body, 'click')

と打ち込むと document.body にあがってきたクリックイベントをモニタリングできる

>>> monitorEvents($('target'))

もちろん document.body 以外もできる
そんな機能

たしかに、現在の Firebug 1系 ではこれがバグっててまったく機能してない!

なんで今まで気がつかなかったんだろう!
このバグっていつのバージョンからだろう??これは困った。

というわけで修正する方法

まず、 Firefox のプロファイルディレクトリに行く。
環境 プロファイルディレクト
WinVista C:\Users\[ユーザ名]\AppData\Roaming\Mozilla\Firefox\Profiles\[ランダムな文字].default\
WinXP C:\Users\[ユーザ名]\AppData\Roaming\Mozilla\Firefox\Profiles\[ランダムな文字].default\
Mac ~/Library/Application Support/Firefox/Profiles/[ランダムな文字].default/
Unix ~/.mozilla/firefox/[ランダムな文字].default/
次に以下のファイルを zip で解凍
extensions/firebug@software.joehewitt.com/chrome/firebug.jar
解凍したら firebug.jar に入っていた以下のファイルを開く
content/firebug/commandLineAPI.js
で、以下のような場所を
    this.monitorEvents = function(object, types)
    {
        monitorEvents(object, types, context);
    };

    this.unmonitorEvents = function(object, types)
    {
        unmonitorEvents(object, types, context);
    };
こういう風に修正
    this.monitorEvents = function(object, types)
    {
        FBL.monitorEvents(object, types, context);
    };

    this.unmonitorEvents = function(object, types)
    {
        FBL.unmonitorEvents(object, types, context);
    };
元のように全体を zip でかためて元の場所に戻す
extensions/firebug@software.joehewitt.com/chrome/firebug.jar

これで monitorEvents が復活します。

こんな感じ

いやー

あらためて monitorEvents 便利!

mixi の絵文字を無効化する JavaScript

mixi の絵文字

うざいって人多いんじゃないでしょうか
というわけで。

Greasemonkey などに「ご自由に」「積極的に」お使いください

$$('.emoji').invoke('setStyle', {display: 'none'});

mixiprototype.js 使ってるからコード注入がとても楽ちん