タグ

ブックマーク / d.hatena.ne.jp/mooz (7)

  • ES Harmony の Proxy について #fxdevcon で LT してきました - mooz deceives you

    LT on Firefox Developer Conference 2010 404 Not Found | Mozilla Japan で ECMAScript Harmony の Proxy について LT させて頂きました. 発表資料 発表に使った資料を SlideShare にアップロードしました. 途中, Harmony を Harmoney と書いているところが多々ありますが, やさしく見過ごしてやって下さい. 追記 (2011 2/23 21:01) スライド中,以下のように has (in 演算子に対応) が第一引数に Proxy のインスタンスを受けとるような書き方をしてしまっていますが,これは誤りです. Proxy.create({ has: function (p, name) { } }); Proxy.create({ has: function (_, nam

    otsune
    otsune 2011/02/05
  • JavaScript の分割代入まとめ - mooz deceives you

    幻の ECMAScript 4th 幻となった ECMAScript 4th のドラフトを眺めていたところ, p.33 に Destructuring assignment and binding (分割代入, 分割束縛) という項目を発見した. 分割代入に関しては JavaScript 1.7 (Firefox などが用いる SpiderMonkey や Rhino に実装済み) から使用が可能であるため, ご存知の方も多いのではないかと思う. 「そういえば詳しい仕様は見たことがなかったな」と軽い気持ちで読み進めていたところ, そこに述べられていることが Haskell や OCaml など関数型言語におけるパターンマッチと同等であると分かり, 驚いた. 例えば, 分割代入においては次のように deep なパターンが利用可能であると書かれている. let { x: {a, b}, y:

    otsune
    otsune 2010/07/30
  • Twitter の OAuth 許可ページがあまりにも酷い => 応急処置 - mooz deceives you

    OAuth の Read と Write 先日, ツイート君に会話をまとめてもらい, 大変嫌な思いをした. Twitter の OAuth には Read 権限と Write 権限があって, Write 権限があると つぶやく 誰かをフォローする 誰かをリムーブする などのことが行えてしまう. つまり, Write 権限を要求するアプリケーションを許可することは, 「このアプリケーションが私のアカウントを使って勝手に変なことをつぶやいたり, 勝手に誰かをフォローしたり, 勝手に誰かをリムーブしても文句は言いませんよ」ということに等しい. さて, それでは OAuth の権限付与画面を見てみよう. ここでは冒頭に上げたツイート君が権限をこちらに要求してきている. では, いったい何の権限を要求してきているのだろうか. Read なのだろうか. それとも Write なのだろうか. 答えは R

    Twitter の OAuth 許可ページがあまりにも酷い => 応急処置 - mooz deceives you
    otsune
    otsune 2010/05/29
  • mozIJSSubScriptLoader で読み込まれたスクリプト (KeySnail, Vimperator プラグイン等) を Venkman でデバッグ - リタマス

    Venkman という便利なデバッガがある. 詳細については no title を参照していただくとして, 早速題に便器. KeySnail や Vimperator のプラグインは, mozIJSSubScriptLoader の loadSubScript というメソッドを使ってロードされている. このメソッドを用いて file:///hoge/huga.js といったローカルファイルをロードすると, その URI が 読み込み元スクリプト -> file:///hoge/huga.js に書き換えられてしまう. Venkman はこの "xxx -> yyy" 形式の URI に対応していないため, loadSubScript を使ってロードしたスクリプトをデバッグしようとすると, もれなくエラーを吐く. ファイルが読み込めないのではデバッグが出来ないに等しいので, これはかなり面

    mozIJSSubScriptLoader で読み込まれたスクリプト (KeySnail, Vimperator プラグイン等) を Venkman でデバッグ - リタマス
    otsune
    otsune 2010/04/11
  • kungfloo で KeySnail から Tombloo を操作 - mooz deceives you

    kungfloo 最近 Tumblr もとい Tombloo を使い始めたので、どうせならと keysnail から Tombloo を操作することが可能となるプラグインを書きました。インストールは以下のプラグイン名を右クリックし、「このプラグインをインストール」からどうぞ。 kungfloo keysnail から tombloo を操作 今のところ、次のような Reblog 方法が用意されています。 キーを押し、それらしい Reblog 先を Tombloo に判断させてポスト キーを押し Reblog 先を選んで (範囲が選択されていれば Quote もして) ポスト HoK の拡張ヒントモードを用い、画像を選択してポスト HoK の拡張ヒントモードを用い、様々な要素を選択してポスト 使用例 r キーに reblog コマンドを割り当てているとします。 まず Google Reade

    otsune
    otsune 2010/02/25
  • if (!a) a = hoge と a = a || hoge の速度差 - mooz deceives you

    気になったこと 朝から自分の書いたコードを眺めていたら、次のようなコードを発見した。もちろん hoge とか huga なんて関数名を実際に使っているわけではない。 function hoge(collection, options) { options = options || {}; // 略 let flags = options.flags; // 略 } hoge([1, 2, 3]) のようにして options が指定されずに呼ばれたとき、 options が undefined になって options.flags で例外が発生してしまうので、それを防ぐために {} を代入している。 ここは特に引っかかることもないのでもう少しそのコードを眺めていたら、今度は次のようなコードに出くわした。 function huga(collection, options) { if (!o

    otsune
    otsune 2010/02/03
  • LDRize と KeySnail の共存再び & 特定のキーイベントエミュレーション - mooz deceives you

    LDRize と KeySnail の共存 あるキーの動作を、異なるキーでエミュレートしたいということがあります。 例えば KeySnail と LDRize を共存させたいとき。j / k に「スクロールアップ / ダウン」を割り当てている人は少なくないかと思いますが、これは見事に LDRize での「次 / 前のアイテム」とバッティングしてしまいます。 対処法 1. エスケープキーを使う KeySnail にはエスケープキーというものが用意されています。デフォルトの状態では Ctrl + q へ割り当てられており、このキーのあとに続けて入力されたキーは KeySnail を飛び越えて Firefox へ直接渡ります。 つまり、今回なら C-q j や C-q k とすることで LDRize の操作が可能となります。でも、こんなの面倒でやってられませんよね。 対処法 2. マッピングを変

    otsune
    otsune 2009/09/27
  • 1