perl

UserAgent での iPhone / iPad / Android phone / Android Tablet の見分け方

if ($ua =~ /Android/) { if ($ua =~ /Mobile/) { $type = 'Android phone'; } else { $type = 'Android tablet'; } } elsif ($ua =~ /iPhone/) { $type = 'iPhone'; } elsif ($ua =~ /iPad/) { $type = 'iPad'; } http://googlewebmastercentral-ja.blogspo…

Kyoto Tycoon memcached plugin VS memcached のベンチを取ってみた

#!/usr/bin/env perl use strict; use warnings; use Benchmark qw(:all); use Cache::Memcached::Fast; my $mf = Cache::Memcached::Fast->new( { servers => ['127.0.0.1:2010'] } ); my $mfm = Cache::Memcached::Fast->new( { servers => ['127.0.0.1:11…

KTのHTTPとMemcachedプロトコルのベンチを取ってみた

環境は以下の通り mac mini 2.66GHz 4GB RAM kyotocabinet 1.2.30 kyototycoon 0.9.18 KTをMemcachd pluginサポート起動 ktserver -plsv /usr/local/lib/ktplugservmemc.dylib -plex 'port=2010'ベンチを取ったコードはこんな感じ とりあえずsetのベンチ #!/…

Ubuntu 10.10 に XML::LibXMLをインストールする

一身上の都合でMacが使えなくなったのでUbuntuが入ったラップトップを引っ張り出してきたついでに、10.10をインストールして XML::LibXMLをインストールしようとしたらlibxml2が見つからないと怒られた。 hide@localhost:~$ perl Makefile.PL enable native …

QRコードを表示するapp.psgi

QRコードを表示するだけの簡単なお仕事を大量にさばきたいって言われたので書いてみた。 use Imager::QRCode; use Plack::Request; my $qrcode = Imager::QRCode->new( size => 2, margin => 2, version => 1, level => 'M', casesensitive => 1, lightcolor…

CFStringRefをSVに変換

追記: id:tokuhirom先生に添削してもらった。 malloc使うべからず -> NewXX()系でアロケート、SafeFree()で解放すべし(そういえばid:hirose31さんも言ってた) newSVpvの第二引数(STRLEN)は明示的に指定すべし -> 0で自動計算は\0 終端前提 SV * getString(CF…

CFStringRefのtypemap

http://developer.apple.com/documentation/CoreFoundation/Reference/CFStringRef/Reference/reference.html CFStringRef T_CFSTRINGREF INPUT T_CFSTRINGREF $var = CFStringCreateWithCString(kCFAllocatorDefault, (char *) SvPV_nolen($arg), kCFString…

SQLiteとトランザクション

SQLiteの追加/更新はトランザクションを使うと高速化に効果があるというのはよく効くので実際試してみました。 use strict; use warnings; use DBI; use Benchmark qw(:all); my $count = 100; my $loop = 100; cmpthese( $count, { commit_each_insert => \…

YAML色々

コードリファレンスのシリアライズとデシリアライズ use strict; use warnings; use YAML; use Data::Dumper; $Data::Dumper::Deparse = 1; { no warnings ('once'); $YAML::UseCode = 1; } my $obj = { hello => sub { print "hello\n"; }, name => "hoge",…

初めてのDevel::BindPP

Standard C++ foo-bar.cpp #include <iostream> int main () { std::cout << "Hello World"; } $ gcc -o foo-bar foo-bar.cpp -lstdc++ $ foo-bar Hello Wolrd Devel::BindPP $ perl -MDevel::BindPP -e 'use Devel::BindPP::WriteFile()'foo-bar.cpp include <iostream> #includ</iostream></iostream>…

for(;;)とforeach()とLoop unrollingと

YappoLogs: CPUの気持ちは大事だけど、VMの気持ちも考えようよ http://d.hatena.ne.jp/yappo/20090330/1238360153会議中なので-MO=Consiseしてないし特に言いたいことはない。 use strict; use warnings; use Benchmark qw(:all); cmpthese( timethese( 0, {…

モダパー開催のお知らせ

追記:2009/02/19 場所変更になりました。 追記:2009/02/19 場所仮決めしました。2/19 15時までに出欠をはてブコメントで表明してください。なお人数が多い場合には渋谷の他の店なる可能性があります。 追記:2009/02/10 日程が変更になりました id:lestrratさ…

mod_perliteを試してみた

Ideas - O'Reilly Media modperlite PHPのようにファイルを置くだけで実行されてCGIより速くてmod_perlより簡単なapache moduleだそうです。去年からのCGI frameworkブームを補完する上でも試してみるっきゃないということでまずはソースの取得 svn co http:…

Web::ScraperでDellオーダーステータスを取得して凹む

最近これを叩くのが日課になってます。 use strict; use warnings; use Web::Scraper; use WWW::Mechanize; use URI; my $type = 'ponum'; my $cnum = '******'; my $lnum = '******'; my $url = 'https://jpapp1.jp.dell.com/orderstatus/multiple.asp'; my…

Text::Hatena::Escaped

というわけで、Text::Hatenaに渡したらHTMLエスケープした上で整形するように継承してみた。 #!/usr/bin/perl use strict; use warnings; { package Text::Hatena::Escaped; use base qw(Text::Hatena); sub text_line { my $class = shift; my $text = shif…

Wiki SyntaxとHTML

NanoWikiを作ってて思ったんだけど、Wiki SyntaxとHTMLの関係って難しいすな。そもそもフォーム入力 → HTMLエスケープ → HTML変換→HTML出力って感じに処理させるのが全うな考え方だと思うわけです。Text::Markdownの場合、特殊文字(&とかとか)の実態参照変換…

NanoAプラグインの書き方

そのまま使っても簡単にCGIが書けるNanoAですが、プラグインを書くとアプリケーションのコード全体的が見通しよくなります。単純なプラグインの例を見ていきます。app/plugin/hello.pm package plugin::hello; use strict; use warnings; use utf8; use base…

NanoAでwiki作ってみた

http://hidek.sakura.ne.jp/wiki/nanoa.cgi/wiki/mixiで認証してmarkdown syntaxなwikiっぽいもの作った。TODO: ページ削除 validation(え パスワードプロテクト マイミク限定公開 ファイル添付 追記: githubに置きました GitHub - hidek/nanowiki: Wiki pow…

スカラーリファレンスのbless

JPerl Advend Calendarで無名スカラーリファレンスネタをやったんだけどさくらとかでFreeBSD6.1で bless \do{""}, "class"; とかやるとModification of a read-only value attemptedとか言って怒られる。 CentOSとかだとだいじょぶなんだけどなー なんでだ?…

JPerl Advent Calendar 2008 - 4日目

事後報告。http://perl-users.jp/articles/advent-calendar/2008/04.html書きました。 さらっと書いたら、あらゆる方面から色んなご指摘が入って大幅加筆させていただきました。 ありがとうございました。で、すでにupされてるけど次はid:hirose31さんで。

MooseのMRO

世間ではShikaとかMouseとかが叫ばれている中、久々にMooseを触ったボクです。 で、すごい勢いでMoose忘れてるのでこんなのさえわかんなくなってました。 { package Base; use Moose; sub foo { warn 'Base'; } } { package RoleA; use Moose::Role; before …

Kamaitachiやってます

typester氏謹製のPerlのRTMPサーバーKamaitachiに首ったけです。 もともとネットでDJをやるのにShoutcastやらWindows Media Serverやらを渡り歩いて来たので趣味と実益ならぬ、趣味と趣味を兼ねたすばらしい世界です。Kamaitachi-0.05 - perl flash media se…

Apache2::Statusを使ってみた

mod_perlでどのくらいメモリー使われてるかとか調べたかったのでApache2::Statusを使ってみた。 Shibuya.pmのLTにも含めようと思ったけど5分に押し込めるのは無理なのでここで公開。テスト対象としてCGI::Applicationで package HelloWorld; use strict; use…

Remedie始めました

とりあえず、うちの環境でMakefile.PLに書いてなくて必要だったモジュール XML::Atom Log::Dispatch XML::Feed HTML::Scrubber Image::Info Text::Tags::Parser

PerlのWebアプリケーションに特化したインストーラー付きパッケージャーみたいなのが欲しい

先週id:kazuhookuさんとかid:yappoさんとかと飲みながら話してた中で出てた話題をおぼろげな記憶の中から掘り起こすてみた。 Perl Web Applicationを簡単に配布したい 極力Pure Perlにすることが求められる mod_perlに頼らないでそこそこのスピードが求めら…

HE conference#1やるよ

http://soozy.org/index.cgi?HEcon1とってもニッチだけどスピーカーと参加者募集中。

Perlの軽量ウェブアプリケーションフレームワーク最新事情

前代未聞のPerl軽量ウェブアプリケーションフレームワーク祭りの中、いかがお過ごしでしょうか?紆余曲折があってこんなことを言ってたわりに何もしてないでぼーっとしている間に、腕に覚えのある兵達が我も我もと手を動かしてくれたので、申し訳なさ半分で…

Re:Mojoの遅さはたいした問題じゃありません

Mojoの遅さはたいした問題じゃありません - Charsbar::Note現状では全面的におっしゃるとおり。反論する場所はどこにもありません。そもそも、あそこまでの結論だと遅いからダメじゃん的に見えてしまったのは我ながらまずかったと思います。 一応mod_perl or…

PerlのWAFのベンチ大会

仕事の都合上、素のCGIとCGI::ApplicationとCatalystと今話題のMojoでmod_perlなどを使わない素のcgiでベンチとった。結論から言うとCGI下では - Requests per second: バージョン 素のCGI 60.54 [#/sec] (mean) - CGI.pm 19.56 [#/sec] (mean) 3.42 CGI::Ap…

Mojoについて思う

Mojoを使ってみた - Charsbar::Noteを読んで、興味が沸いた。今の会社も結構レガシーな仕組みを使ってるわけで、新しく一からサーバーを立てるようなサービスじゃないと、なかなかCatalystとか使わせてもらえないわけです。そんな場合、どうするかというと素…