tokuhirom's blog
Module::CoreList web ui
[ This is 習作 for xslate. source is here: [ see also [
2010-05-09(Sun)
Perl 5.12.0 でフラッグの扱いがちがうケース
``` perl -E 'use bytes; use charnames ":full"; say(utf8::is_utf8("\N{DIGIT SIX}") ? 1 : 0)' ``` の結果
2010-05-08(Sat)
Carp::Always::Color
Carp::Always をつかうと、簡単に croak/carp が stacktrace がとれて便利だが、いかんせん長くて、みづらくなるので、それを適当に色をつけてくれるもの。
2010-05-08(Sat)
B::Compiling
rafl ware. "Expose PL\_compiling to perl" ということで、PL\_compiling という internal variable をとってこれる。 これによ
2010-05-08(Sat)
Amon の速度がでないときは
V::MT のキャッシュがオンになっているか確認してください。
2010-05-06(Thu)
benchmarking Variable::Magic and tie
I taken benchmark between Variable::Magic and tie. In this case, Variable::Magic is 3.1x faster tha
2010-05-06(Thu)
first impression for Text::Xslate
僕がつくってるフレームワークであるところの Amon に Xslate 対応をいれてみた。 かなり TT とおなじ感覚でつかえるかんじ。テンプレートの継承が追加されてるぐらいで、基本は TT とおな
2010-05-02(Sun)
validate content-length with plack
[ I wrote broken webapp, it outputs invalid content-length. Then, I want validator :P ``` package
2010-04-26(Mon)
最近うってるこまんど
[ ``` % history -n 1 | awk {'print $1'} | sort | uniq -c | sort -k1 -rn | head 206 git 130
2010-04-06(Tue)
Math::Random::MT versus embedded function rand()
``` 5.010001 Math::Random::MT: 1.10 Rate mt rand() mt 714566/s -- -96%
2010-04-03(Sat)
vim でファイル保存時に package 宣言をチェックする
のがほしいなーっていってたら mattn さんがかいてくれました! YATTA! これで package 宣言まちがえてはまることがなくなるのでオヌヌメ。 [
2010-04-01(Thu)
Text::ClearSilver のベンチマークをとってみた
【追記】ごめん。うそなんだ。。。本当は一番はやいのが cs です。 [id:gfx]( が clearsilver binding をかいたということなので、ベンチマークをとってみた。 結果をみて
2010-04-01(Thu)
html2text ってどうかくのが楽なんだっけ?
なんか適当にこうしてみたけど、div タグで改行とかしてくれなくて悲しい。もっとうまい方法があった気がするが、おもいだせない。 ``` sub html2text { my ($html)
2010-03-30(Tue)
sphinx 等でドキュメントを自動生成している場合に更新を自動検知してドキュメントを再生成してくれる web サーバーをかいた
Plack つかうとこういうの簡単にかけてよい。 ``` use common::sense; use autodie; use Plack::Runner; use Plack::App::Dir
2010-03-27(Sat)
Plack と FCGI の話
[ FCGI つかってる人はチェックすべし。
2010-03-26(Fri)
robots.txt で適当に拒否る設定についてかんがえた
なんかこういうかんじでやるのが簡単にできる Middleware はどうか lang:ja ``` enable sub { my $app = shift;
2010-03-25(Thu)
local-lib-profiles をみたメモ
[ インストールすると local-lib-profiles\_bashrc っていうファイルが /path/to/perl/bin/ あたりにインスコされるので、そうすると、ファイルができるから、
2010-03-25(Thu)
AE::HTTP で HTTP::Request をなげるには
HTTP::Request をつかって呼ぶのはそんなにむずかしい話ではない。という。たとえば、以下のようにすれば、普通によべる。 ``` sub http_request_by_http_reque
2010-03-24(Wed)
Crypt-OpenSSL-RC4 を Module::Build に移行してみた
Crypt-OpenSSL-RC4 では Module::Install を利用していたのだが、libs('-lcrypto') を指定しても Solaris の場合だけリンカ実行するときに -lcr
2010-03-23(Tue)
perl5 でファンクションプロトタイプをつかっちゃいけない理由と使われる理由。
Damian Conway の Perl Best Practice は関数プロトタイプを非推奨扱いにしているが、一方で巷の Perl Hackers はこれを使いまくっている。このような状況が初心者
2010-03-23(Tue)
Amon::Web::Dispatcher::Lite をかいたこと
Router-Simple をつくったり MojaMoja をかいたりしていたのだが、Amon でかいたちょっとしたアプリで、コントローラクラスが数個にしかならないような規模の場合に、いちいち MyA
2010-03-22(Mon)
Qudo をためしてみた
Qudo についてる SQL をつっこむ。 ``` % sqlite3 /tmp/qudo.db < doc/schema-sqlite.sql ``` ワーカースクリプトをかいてみる。 ```
2010-03-22(Mon)
Router-Simple を書いた理由
数年前に HTTPx::Dispatcher というのを書いたのだが、HTTPx::Dispatcher は declarative interface が主にたっちゃってるのが失敗したなあ、とおもっ
2010-03-21(Sun)
virtualenv っぽい plenv っていうスクリプトをかいてみた
同じ名前空間ですが、まったくちがうツールとしてうまれかわりました。後日かいたほうのエントリを参照してください。 → [ ~~python の virtualenv っぽい感じで local::lib
2010-03-21(Sun)
Released Router::Simple 0.01
[ ``` my $router = router { connect '/' => {controller => 'Router', action => 'index'}; submapp
2010-03-19(Fri)
NYAOS で cpanm --look がイヤンなかんじになるとき
環境変数 COMSPEC または Shell を指定しよう。
2010-03-17(Wed)
Why I use DBIx::Skinny instead of DBIx::Class.
最近DBIx::Skinnyをプライベートでは利用しているのだが、その理由。主にDBICのここが嫌だ、的だが。 #### DBIC が 'me' とか名前つけるのが嫌だ。 うん。嫌だよね。 ##
2010-03-17(Wed)
DeNA テクノロジーセミナーきいてたら簡単なディスパッチャができた
Perl5.10 以後のみ対応だけど、5.10 以後ならこんな簡単なのでいいのかも。 ``` package MojaMoja; use strict; use warnings; use pare
2010-03-16(Tue)
TOEICで125点しかとれないような人でもできる英文バグレポートの方法。
または、Pros と Cons をまちがえて書いてしまうような人でもできる英文バグレポートの方法。 まあ小手先のノウハウだけど、俺はこうやってるよ、という話。 #### ともかく再現可能なテストケ
2010-03-15(Mon)
Test::More 0.95_01 にご用心
Test::More 0.95\_01 の変更によりいくつか影響をうけているパッケージがあるようです。 自分が把握している範囲で2件あり、それは Net::Twitter と Test::Class
2010-03-15(Mon)
Strawberry Perl Professional とかいうのやってるみたいすね。まだ alpha らしいけど。
[ もともと、なんでもはいりまくりの Strawberry だったわけだが、そこにさらにいろいろぶっこんだパッケージを開発中みたい。 ``` All common graphical toolki
2010-03-15(Mon)
Doxygen を github-pages にあげるのをお気楽にやる方法
* github pages をつかうと簡単に HTML のページを公開できる。 * Doxygen をつかうと簡単に HTML のドキュメントを生成できる。 ってことは、この2つを簡単にくみあわせ
2010-03-10(Wed)
Test::Class が SEGV する件
SEGV の原因となっている、Perl5 のバグをつく Devel::Symdump をはずして MRO::Compat をつかうようにしたので、SEGV しなくなったはず。
2010-03-10(Wed)
Pod パーザいろいろ
#perl-casual でみんながつかってる pod parser をきいてみた。 #### いろいろ ##### Pod::POM おれがふだんつかってるやつ。POM っていうなまえだけど、
2010-03-09(Tue)
cronolog と plackup の連携
multilog に access log と error log をまぜてだすと、エラーでてんのかどうかよくわからなくなっちゃうので、まあわけた方がよろしい。 multilog でパターンマッチ
2010-03-08(Mon)
Perl5 と奇妙な overload の冒険
このコード、perl5.8.1 だと不思議な挙動をします(たぶん 5.8.5 以下で変な挙動をする)。 ``` use strict; use warnings; use Test::More te
2010-03-08(Mon)
リアルタイムWebのためのPubSubHubbub の Subscriber を構築する方法
PubSubHubbub(以下PuSH)は、フィードの更新をリアルタイムに通知するためのプロトコルである。 ウェブ上にころがっている"PuSH"の情報は、"Pub" の部分を実装する方法か、「Pu
2010-03-06(Sat)
CPAN 関連の API などのメタデータについての雑感
CPAN のメタデータは以下の3つにより配布されている。 * authors/01mailrc.txt.gz * modules/02packages.details.txt.gz * module
2010-03-06(Sat)
multiperl は素人がつかう必要がない件について
基本的に Perl5 は下位互換性が非常によく保持されていますから、use 5.10; などによる縛りをかけないかぎり、「過去バージョンでうごくのに最新のバージョンだとうごかないよう」ということはまず
2010-03-04(Thu)
wrote multiperl command
[ "multiperl" is perl5 interpreter installer for perl developers. #### \*Pros\* * simple * instal
2010-03-04(Thu)
-s が NV をかえす件と、あれこれ。
sizeof(IV) が 4 で、 sizeof(off\_t) が 8 だったりする環境では、-s (pp\_ftsize) が NV をかえす。 32bitシステムでは、現実的には NV の仮数
2010-03-03(Wed)
Module::Build と EU::MM と M::I と dzil にかんする雑感(miscellaneous thoughts)
僕は歴史家じゃないので、今自分がもってる感想をメモしておく #### Module::Build Module::Build の目標は make の排除だとおもうのだが、現実的には、EU::MM
2010-03-02(Tue)
create pure perl extlib/ with cpanm/local::lib
[ local::lib を利用して extlib/ を構築する方法が最近流行りだ。cpanm とくみあわせれば、capnm -l extlib/ Plack などとすれば一発で構築できる。 し
2010-03-01(Mon)
What is the *correct* implementation of constraints?
#### assumption * literal 1e100 is integer value. * literal "1e100" is integer value. * 1e100+0.1 i
2010-03-01(Mon)
App::MyPort を書いた話
諸事情により、頻繁にいろんなソフトウェアをいれているわけですが、入れるたびに「どこからイレるんだっけ」とおもって、さがすのがめんどくさいので、オレオレportsモドキをつくってつかっている。 she
2010-03-01(Mon)
「Yet another CPAN recent changes」つくったよーって話 in Japanese
[ typester さんの CPAN Recent Changes が落ちっぱなしなので、こまったなーとおもってたら、tomi-ru さんが Y! Pipes でつくってくれて、便利だなーとおもっ
2010-02-27(Sat)
create "Yet another CPAN recent changes"
[ Now a days, typester's CPAN recent changes site is not works... I want to read it... then, I re
2010-02-27(Sat)
無圧縮zipを扱うライブラリをつくってみた
[ pure perl で無圧縮zipの展開/パッキングをするためのライブラリをかいた。 pure perl なのと、メモリ使用量がすくないのが利点かなとおもう。 zip のフォーマットは、まあ
2010-02-26(Fri)
git で cwd のカレントリビジョンを取得する
``` git show --format='%H' -s ``` とかでとれる。 miyagawa++ yappo++
2010-02-24(Wed)
hbstudy で puppet の話をきいてきたことについて
puppet は「俗人的な要素を排除する」という点がやはりおおきいのかな、とおもった。 いっぽうで、以下のような点を感想として得た。 * 新規にインストールするシステム以外には適用しづらい * 最
2010-02-24(Wed)
cpan-outdatedを使うとメモリ制限のきついレンタルサーバーでもCPANモジュールが楽に更新できる
[ 個人サイトで借りてる貸しサーバーはシェルが使えるんだけどroot権限が無く各種メモリの制限も強い。で、CPANコマンドを使うとlimit制限にひっかかってmoduleindexを伸張するところで
2010-02-22(Mon)
How to optimize smart match operator in perl5 interpreter.
This entry is just thinking note for me. ``` % perl -MO=Terse -e '1 ~~ 2' LISTOP (0x11ba080) leave
2010-02-21(Sun)
dPOPTOPssrl のよみかた
``` dPOPTOPssrl; dPOPXssrl(TOP); SV *right = POPs; SV *left = CAT2(TOP,s); SV *right = POPs; SV *lef
2010-02-21(Sun)
wrote tiny script named cpan-outdated.
[ I wrote tiny script named cpan-outdated. It's so fast, lightweight version of 'CPAN::Shell->r'.
2010-02-20(Sat)
Plack::Server::Standalone::Prefork::Server::Starter から Starman への移行
``` plackup -s Standalone::Prefork::Server::Starter ``` ってかいてあるところを ``` plackup -s Starman --work
2010-02-19(Fri)
Plack まわりと XS の話
* Plack コアは XS に依存しない * Starman は XS に依存する * PP がよければ Server::Simple のをつかう * Twiggy は XS に依存しない(よう
2010-02-18(Thu)
Perl5.5 をサポートしようとしたら warnings.pm がなくて use warnings; できないよ、ってな場合の話
warnings::compat をつかえばいい。 ``` # on pre-5.6 Perls, add warnings::compat to the prereq modules
2010-02-18(Thu)
HTTP::Engine::Interface::Standalone の話
いつもどおりチラ裏ですけど。 HTTP::Engine::Interface::Standalone は Catalyst の スタンドアロンサーバをコピペしたところからはじまったのだけど、あんまメ
2010-02-18(Thu)
Mouse の起動がはやい理由
[ > Class::MOP関連の処理を省いていたり、XSで実装されている部分が多かったりするので、Mouseのロード, インスタンスの生成, Mouseクラスに於ける処理の実行時のいずれもMoos
2010-02-18(Thu)
!!1 とか !1 とかが PL_yes と PL_no になってるかどうか手軽にみる方法
以下のように、-MO=Terse すると、コンパイル時に定数の畳み込み最適化的な奴でたたみこまれて sv\_yes とか sv\_no になってることがわかる。 ``` % perl -MO=Ter
2010-02-16(Tue)
Prev
Next