だるろぐ

だるいぶろぐです

perl

Data::ObjectDriverでDBI->connectの\%attrを渡そう

透過キャッシュだのレプリケーションだの色々ドライバを書けるが、普通に使う分にはSYNOPSISの通りでいい。 で、DBI->connectで使う%attr、例えば mysql_enable_utf8 を渡すのはどーすんのかなと思ってソース見たら use parent qw/Data::ObjectDriver::Drive…

DBD::mysql を mysql_config を指定してインストールする

毎回忘れるメモ。 mysqlをソースから入れたりして、パス通ってないところに入ってるときにDBD::mysqlを入れるときはこうする。 perl Makefile.PL --mysql_config=/usr/local/mysql/bin/mysql_config毎回INSTALLを見ているが、そろそろ覚えた。

Text::Xslate の秘密

xslate って単語が、辞書ってもググっても分からんので作者に訊いてみた。 Q. xslateって何て意味なんですか? A. XSで書いたTemplateを略してxslateです。 なるほど謎が解けました。読みは「えくすれいと」だそうです。 いつぞやのどこぞの会話 俺「xslate…

クエリの無駄とかチューニングとか

mysqlとかのRDBMSってノリと雰囲気と勢いで使ってるので つまりよく知らずに使ってます。 1件取得 例えばこんなスキーマから mysql> desc guest2site; +------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | De…

Data::ObjectDriverにDOD_TRACEが欲しい

perlのORMの中には hoge_TRACE=1 することで発行されるクエリを見る事が出来るものがある。 # DBI DBI_TRACE=1 # DBIx::Class DBIC_TRACE=1 # DBIx::Skinny SKINNY_TRACE=1Data::ObjectDriverにも欲しい。ので書いた。 use Data::ObjectDriver::Driver::DBI;…

perlとkakasiを使って漢字の読み仮名を得る

あるところに読み仮名の無い文字列 なデータがn件ありました。 俺 「読み仮名を入力するだけの簡単なお仕事が始まるお」 ボス 「それkakasiで」 そういえばそんな便利なものがありました。どうでもいいけどkakasiとかnamazuとか、変わった名前が多いよね。 …

perlとJSONとORM

perlのデータをJSONにしてjavascriptに食わせる。 #!/usr/bin/perl use strict; use warnings; sub say {print @_, "\n"} use Data::Dumper;sub p {warn Dumper @_;my @c = caller;print STDERR " at $c[1]:$c[2]\n\n"} use CGI; use JSON::XS qw/encode_jso…

main: {} で動く理由

追記 壮絶な勘違いでしたコメント欄参照。暑さで脳がやられていたということにしてください。 sub main { } は良くかいてたけど、 main: { } とかにすると main() しなくても動く にひりずむ::しんぷる - Re: Amazon のデカイ書影をダウンロードする これ知…

rubyの obj.methods がperlにも欲しい

以前 メソッドの一覧を取得する - だるろぐ とかやったんだけど、rubyの p obj.methods みたいにしたい。ので package Foo; use strict; use warnings; sub new { bless {}, shift } sub hoge {} sub foo {} my $var_my = 1; our $var_our = 3; package UNIV…

続・FormValidator::Lite でBETWEEN

前回ノリで書いたのをちゃんと書くとこんな感じですか。 package FormValidator::Lite::Constraint::Between; use FormValidator::Lite::Constraint; use Scalar::Util qw/looks_like_number/; rule 'BETWEEN' => sub { for ($_, $_[0], $_[1]) { die 'inval…

FormValidator::Lite でBETWEEN

FormValidator::SimpleにはBETWEENというルールがある。やる事はそのまんま、値が範囲内に収まっているかを見る。 でFormValidator::Liteでもこれをやりたく。 package FormValidator::Lite::Constraint::Between; use FormValidator::Lite::Constraint; rul…

Data::ObjectDriverでDBMSの関数を使った上で複数のカラムをselectするなど

Data::ObjectDriver(以下DOD)でgroup byとかsumとかcountとかのmysqlの関数を使う場合は、Data::ObjectDriver::SQLのインスタンスを作ってそいつに色々オプションを指定した上でdriverを呼んでselect_oneしてやる。 my $st = Data::ObjectDriver::SQL->new…

memcachedの使い方

memcachedでsetした値をさーtelnetでgetして見るとバイナリになって出てくるんだけど おまえは何を言っているんだと思いつつ。 環境とか一切聞いてないけど。 use strict; use warnings; use Data::Dumper; use Cache::Memcached::Fast; use Cache::Memcache…

メソッドの一覧を取得する

任意のクラス・インスタンスで使えるメソッドを確認したいときrubyだったら p Class.methods p instance.methods なんだけどperlでもやりてえぇーって叫んだら http://twitter.com/kamipo/status/13900909851 どらどら。 package Hoge; use strict; use warn…

+shift とか -hoge とか

perlで + とか - の、プラスとかマイナスの記号は加算・減算以外にも使えるんだけど +{}は無名ハッシュの宣言っていうソースはperldoc -f mapにあった - だるろぐ跡地 my $s = -hoge; - だるろぐ また知った。 use strict; use warnings; sub say {print @_,…

Re: デモでパスワードが必要な時は - Practice of Programming

デモでパスワードが必要な時は - Practice of Programming Reviewによると、Windowsじゃ動かないようなのですが、Windowsの場合に使える代替モジュールは...なんかあるのかな? 僕はターミナルにパス入れるときは Term::ReadPassword 使ってるんですが、 use…

PlackとDBIx::SkinnyとText::MicroTemplate::Fileでwiki作ったのでソースを公開してみる

2010/04/19 22:41 追記 ブコメでkamipoさんとa666666さんに「TMTで変数をエスケープさせたくない場合はencoded_string()使えばいい」と教えてもらったので修正。 ありがとうございます。 GitHub - hirafoo/piki: PlackとDBIx::SkinnyとText: :Fileで作ったwi…

my $s = -hoge;

また一つ知った。 use strict; use warnings; sub say {print @_, "\n"} my $s; $s= -hoge; say $s; $s= -+hoge; say $s; $s= -+-hoge; say $s; $s= -+-+hoge; say $s; % perl t.pl -hoge -hoge +hoge +hogeハイフン付きの裸の文字列。しかも+を付けると変わ…

ターミナルからtwitterするputweet作った

GitHub - hirafoo/putweet: twitter on terminal いちいち専用にウィンドウアプリ見るのが面倒なので、以前からオレオレtwitterアプリを作って使っててたのをgithubに置いた。 ちょくちょく何か作っては晒してる俺が今まで晒さなかったのは まぁオレオレだし…

values関数が使いようによっては元のハッシュを書き換える件

会社で同僚が見つけてた。 use strict; use warnings; use Data::Dumper;sub p {warn Dumper @_;my @c = caller;print STDERR " at $c[1]:$c[2]\n\n"} my %h = qw/h hoge f foo b bar/; p \%h; for (values %h) { s/hoge/----------------/; } p \%h; % perl…

ターミナルの幅とか高さとかを取得しよう

http://docstore.mik.ua/orelly/perl/cookbook/ch15_05.htm use Term::ReadKey; ($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize(); Term::* は Term::ReadLine しか使った事無いのだけど色々ある模様。

寄せられたPerl Quizの回答と解説

Perl Quiz に挑戦して負けました(追記有り) - だるろぐ の。軽い気持ちで聞いてみたら大変な事に。どうしてこうなった。 おさらい。 問題 http://quill.to/yoshiki/0a66f62e14 条件 「できれば1行」 プログラマには「できれば」の文字は見えません。 尚、…

Perl Quiz に挑戦して負けました(追記有り)

livedoor に。 誰かに助けを求めよう。 俺の。1行とか無理でした。 http://gist.github.com/337522 今は1行の答え知ってます。 追記 ボスケテping打ったらジェバンニが一晩でプログラマ達が即効解決してくれました。 http://twitter.com/kamipo/status/10724…

俺のテスト

テストを書こう。 use strict; use warnings; use Hirafoo; use Test::More; my $hirafoo = Hirafoo->new; is ($hirafoo->air, "Can't read", "readable air ?"); is ($hirafoo->feel, "darui", "how about the feeling ?"); is ($hirafoo->personality, "po…

encode/decode より find_encoding のが速いのは知ってたけどここまでか

今更ネタが続く。 くりかえしdecode()とencode()する場合には、OOインターフェースを使った方が高速です。なぜなら(de|en)codeが文字コード名を解決する手間がなくなるからです。 404 Blog Not Found:perl - Encode 入門 と言われているのは知ってたけど実際…

Yokohama.pm テクニカルトーク #5 に行ってきた

ちゃんとしたレポートは他所へどうぞ。 http://d.hatena.ne.jp/hiratara/20100305/1267747275 http://d.hatena.ne.jp/sugyan/20100306/1267808774 イベント概要 http://yokohama.pm.org/2010/02/yokohamapm-5.html 開始の挨拶など やや押して開始。 clouder…

cpanとかの履歴が十字キー押しても追えないとき

Term::ReadLine::Gnu を入れる。 redhat系なら yum install perl-Term-ReadLine-Gnuで。

my Class $self = shift; # fields.pm

Cache::Memcached のソースを見てて、知らない my の使い方をしてるのを見つけた。 sub new { my Cache::Memcached $self = shift; $self = fields::new( $self ) unless ref $self; fields.pm を使うとこう書けるようで。ググればいくらでも出る上に perldo…

画像をDBに保存してmod_rewriteを利用していい感じに扱う

http://neta.ywcafe.net/000774.html これをやった。ここ見れば十分。 ソース一式 http://github.com/hirafoo/image_db 試す場合は DBIx::Class とかを入れる。他適宜入れる mysql用意する image_db ってデータベース作る config/create.sql を使ってテーブ…

y演算子なんてあったのか

Perl/演算子 - Wikibooks いやまあただのtrなんだけど。