2013-03-01から1ヶ月間の記事一覧

Perlでクラス名として避けるべきもの

base.pm, parent.pm, B.pm がコアモジュールとして存在するので、テストコードやサンプルコードといえどもこれらの名前は避けるべきです。OSXのデフォルトやWindowsのファイルシステムはcase insensitiveなので、Base, Parent なども同様です。Child.pmとい…

JSX の名前空間の仕組み

JSXには名前空間の仕組みがあります。ここで名前空間とは厳密に定義はせず、「同名の異なるクラスを同じスコープで使用する仕組み」とします。つまりJavaではパッケージ、C++では名前空間、 ES6/TypeScriptではモジュールと呼ばれるものですね。JSXの名前空…

一つの npm package を複数人で管理するとき

npm owner で管理できるようです。例: npm owner add kazuho jsx

Mouseで「あるメソッドを持ったオブジェクト」という制約をつくる

互いに継承関係がなくてもRoleを適用していなくても duck_type() を使えばOK!しかも自前で can() するより高速なスグレモノ*1。 use strict; use warnings; package Foo { use Mouse; sub x { 1 } __PACKAGE__->meta->make_immutable(); } package Bar { us…

Perl製ツールを非Perlerに配布するとき

lib::core::only とか使うわけですけど、これの中身は4行で書けるのでそれでもいいと思います。 # does the same as lib::core::only to prevent to use locally-installed modules BEGIN { require Config; @INC = @Config::Config{qw(privlibexp archlibex…

git commitの編集時にvimがread onlyになって困るとき

コミット時のdiffのバイナリっぽいものが入ってると vim が readonly になることならあるらしいです。

CPAN Testersの紹介

最近Perlのネガティブな話が話題ですが、ちょっとCPANまわりのサービスの自慢をさせてください。それは CPAN Testers です。CPAN Testers *1 とは、CPANに公開したモジュールがどの環境で動きどの環境でどういうエラーがでるのかを集積するサービスです。よ…

v8bench scores for smartphones

v8 benchmark v7 の total score のみ。 Nexus 4 (Android 4.2.2) Chrome 25 : 1823 Firefox 19 : 1227 Opera Mobile (12.10) : 534 Nexus 7 (Android 4.2.2) Chrome 25 : 1621 Firefox 19 : 1158 iPod touch 5th generation (iOS 6.1.2) Safari : 681 UIWeb…

CPANモジュールが環境変数で挙動を変えるときはPERLプレフィクスをつけるべし

PERL_CPANM_OPT とか PERL_ONLY みたいに挙動を変える系の環境変数は"PERL"というプレフィクスをつけておくと perl -V でその環境変数が表示されるのでバグレポートからのデバッグが捗りますね。

トラブルシュートの流れを公開するということ

または Data::Dumper が壊れているという惨事 - Islands in the byte stream の反省会。これは結果的には解決できたけど、最初の時点で Perl 5.10.1 を Mac でもいいから用意して Data::Dumper の make test を走らせていれば一瞬でわかったことだ。いや、 D…

Data::Dumper が壊れているという惨事

あるいは PERL_CPANM_OPT=-n は危険だという話。それはこのtweetから始まった。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s)…