2012-01-27
CPANでモジュールをインストール
ちょっとばかしPerlを使わなくちゃいけなくなったのでCPANを使おうとしたらはまったので備忘録。環境は Ubuntu 10.4 で perl5.10.1。
sudo perl -MCPAN -e shell
install DateTime
とかすると入ってくれるはずが、
Could not read '/Users/hoge/.cpan/build/DateTime-0.72-dCvvhy/META.yml'. Falling back to other methods to determine prerequisites
とかエラーが出て入らない。
Warning で、YAMLがないよ、とか言われるんだけど、(usually harmless)とか書いてあるし、ネットで調べても出力がでないだけ、とか書いてあったので無視・・・したのが間違いの元だった。
結局YAMLが入ってないとMETA.ymlがパースできないらしい。
apt で以下の二つを入れて解決。
libperse-cpan-meta-perlは入れなくても動くのかもしれない。先に入れたからわからん。
[追記]
Macではhomebrewを使っているのだが、homebrewにはlibyaml-perlがなかった。
どうしたもんかとまた調べていたら、普通にCPANでYAMLを入れれば良かっただけだった。。おそらくUbuntuでもそうなんだろう。
2011-12-25
Firefoxの拡張を開発しようとするお話5
だいぶ更新していなかったけど、地道に作っていました。
ということでいきなりですがβ版をリリース。
https://addons.mozilla.jp/firefox/search?q=read+hatebu+later
開発はここで。
https://github.com/hatz48/Read-Hatebu-Later
使い方は一応アドオンページに書いてあるけど、
ロケーションバーのボタンで登録/削除ができるのと、
リンクを右クリックして出てくるコンテキストメニューで追加が可能
今のところソースコードも汚く「とりあえず動く」レベル。
問題としては
使ってみて意見をもらえるとうれしいのだけれど、
このブログ見てる人いないからな。。。
2011-09-25
非標準プロパティ __noSuchMethod__ (´・ω・`) またはソースコードを追いにくくする方法
Java で null に対してメソッド呼び出しをするとどうなるでしょう?
はい、ぬるぽ→ガッ となりますね(´・ω・`)
Integer a = null; a.toString(); // NullPointerException !!
JavaScriptでも、undefined(というか関数でないオブジェクトすべて)に対して関数呼び出しを行うと TypeError がでますね(´・ω・`)
var a = {}; a.hoge(); // TypeError !!
となるわけです。
以下のコードはどうなるでしょう??(´・ω・`)
dump(a.a); // undefined が出力される. a.a(); dump('hoge!'); // 出力される??
当然 TypeError が出て以降の処理は終わると思うじゃないですか(´・ω・`)
それでは魔法のコードを足します。
a.__noSuchMethod__ = function(id,args) { dump('fuga'); }; dump(a.a); a.a(); dump('hoge');
これを実行すると、undefindが出力された後、fuga、そしてhogeと出力されます(´・ω・`)
つまり定義されていないメソッドが呼び出された場合、__noSuchMethod__に定義された関数が呼ばれるそうです。詳細は↓
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/Object/noSuchMethod
幽霊メソッドが動いてるのかと思いましたヽ(`Д´)ノウワァァァン


