2012-01-01から1年間の記事一覧
2008年4月に入社したコンピュータ関係の中小企業を昨日退職しました。 かれこれ4年と9ヶ月くらいお世話になりました。 元々僕は文系だったのですが、(卒論はドイツ文学とかだった) 色々あったというか色々なかったというか IT関係の職業に就くことになって…
昨日ローカルな勉強会に参加してきた。 初回だったので、簡単なペアプロをすることになったのはいいものの、僕ともうひとかたのペアだけPerlであとのペアはRubyで実装ということになった。イエ-Perlで実装だぜーと思ってたけれど、以下の理由により、いろいろ…
https://github.com/rightgo09/Gazosureデフォルトで、config/deployment.plに 'BASE_DIRECTORY' => File::Spec->catdir($ENV{'HOME'}, 'Pictures'), ってしてある。Mac用。startupで起動して http://localhost:9091/ にアクセス。こんな感じ。
変数 シジル(ファニー文字)で大体分かる 特殊変数も例に漏れない $ならスカラ変数 ->ならデリファレンスかメソッド(サブルーチン) @とか[]なら配列 %とか{}ならハッシュ &とか()ならサブルーチン ついてなくて小文字ならサブルーチン 大文字なら定数かファイ…
ハマったのでメモ。 Perlのsubstrは substr(文字,開始位置,長さ) の開始位置は0オリジンで、 SQLのsubstrも同じく SUBSTR(文字,開始位置,長さ) と同じ使い方ができるが、1オリジンである。 Perl print substr('string!!!', 2, 1); #=> 'r' SQL -- MySQL SELE…
よくpackageの途中で改行されてるのを見る。 Try::Tiny package # hide from PAUSE Try::Tiny::ScopeGuard; でもこれをpod形式でぶったぎると死ぬ。つまりトークンとトークンの間。 package =pod hide from PAUSE =cut My::Module; Invalid version format (…
「PerlのWebプログラミング効率化のTips」を読んだ感想 - サンプルコードによるPerl入門 http://d.hatena.ne.jp/perlcodesample/20120609/1339246531 短くて再利用性がなく、細かくしてもメリットがないような処理は、処理2のように直接書いてしまっても良い…
一度勉強した覚えがあるけど忘れてたので、プログラミングPerlを参照したメモ。 $x = (7, 7, 7); #=> 7 $x = () = (7, 7, 7); #=> 3 <6/8追記> $x = (7, 7, 7); #=> 3 となっていたのは誤りです! @akajiro thanks! </追記>下はなぜ3なんだろう? プロ…
PSGIのStreamingなやり方がわかったので、一番触ってたAmon2でもできないかと思ってforkして書いてpull requestまでしてみた。 イメージとしては、 any '/' => sub { my ($c) = @_; $c->render('index.tt'); }; といういつものスタイルを壊さないような感じ…
久しぶりにモダパー読み直してたらqr//と文字列の正規表現マッチ速度が出てたので、新しい5.16とかも出てきてるし、やってみた。 Mac OS X 10.7.4 (Intel Core i7) perl-5.8.9 perl-5.10.1 perl-5.12.4 perl-5.14.2 perl-5.16.0 perl-5.17.0 use strict; use…
いや渡したんですどね。 サブルーチンプロトタイプ(&)を定義してるサブルーチンに 無名サブルーチンを変数に入れて渡したら怒られたんですよ。 use strict; use warnings; use utf8; sub run(&@) { my ($cb, @list) = @_; @list = map ++$_, @list; $cb->(@l…
おやと思ったのでメモ。 sub point { my $x = shift; my $y = shift; ... } point(20, 30); #=> $x = 20, $y = 30 これはいい。 sub point { my ($x, $y) = (shift, shift); ... } point(20, 30); #=> $x = 20, $y = 30 これもまだわかる。 sub run { shift-…
昔作ったCGIでこんなのがあった。(あの頃は若かった) #!/usr/bin/perl use Furl; my $furl = Furl->new; use CGI; print CGI->header; print "<html>\n"; print "<head>\n"; print "<title>image</title>\n"; print "</head>\n"; print "<body>\n"; for my $i (1..10) { # 画像ファイル名 $image_fi</body></html>…
タイトルで終わった。 __PACKAGE__->hoge()の__PACKAGE__はコンパイラがカレントパッケージ名に置換してくれるけれど、 「::」をつかって完全修飾でサブルーチンを呼ぶと__PACKAGE__::hoge()の左側は「__PACKAGE__」というパッケージ名ととられるのでエラー…
ScanSnapを使ってコミックスをスキャンしてPDFにしている。 縦に紙をセットするよりも、横にした方がスキャンが早く終わるのでそうしているけれど、 そうするとPDFが横向きになって、向きも表裏でばらばらになる。 ScanSnapを買うとAdobe Reader Professiona…
Perl5.10からBEGIN、CHECK、INIT、ENDの特別ブロックにUNITCHECKが追加されていたのを昨日知ったのでメモ。 あとそのほかまとめ復習。 perlmodにあったのを並び替えてみた。 #!/usr/bin/env perl # use 5.010; # begincheck BEGIN { print " 1. BEGIN blocks…
前回の若干続き。 @aloelightさんからClass::Unloadなるものがあることを教えてもらった。 http://search.cpan.org/~ilmari/Class-Unload-0.07/lib/Class/Unload.pm podに use Class::Unload; use Class::Inspector; use Some::Class; Class::Unload->unload…
まあPerlに限らずなんだけど。 Cacooで画像作ってみた。 ここでB.pmはCに関してまったく無関係のはずなんだけど、実際にはCパッケージの関数を使用できる。 どうも他人の庭の道具を無断使用しているみたいで気持ち悪い。 このへんも完全にスコープ切り分けで…
Text::Haml - search.cpan.org Perl版HamlのText::Hamlだが毎回$haml->render_fileで 構文解析→出力用package作成→出力用サブルーチン実行 という手順を踏んでいるので、Hamlファイルが大きくなればなるほど、 実行速度がどんどん遅くなっていやだなーと思っ…
$str =~ tr/TIESAO/713540/; ごく一部の頭のいいアホにしか読めないらしい on Twitpic
length('rightgo09')みたいにすると、コンパイルの時点で9にしてくれていることを知った。 my $len = length('rightgo09'); $ perl -MO=Deparse len.pl my $len = 9; len.pl syntax OK演算結果なんかはしていると聞いてたけど、関数でもなるのかーへーと思っ…
statの挙動なんだっけーと思いつつ以下のようにしたらエラーになった。 $ perl -le 'print (stat("test.pl"))[9]' syntax error at -e line 1, near ")[" え、statは配列を返すからそのスライスってことであってるでしょーと文句を言いたくなったけれど、 右…
RubyのHamlのつもりでPerlのText::Hamlを使うとつまづいてしまうメモ。 http://search.cpan.org/~vti/Text-Haml-0.990104/lib/Text/Haml.pm インデントは半角スペースのみ インデントにタブは使用できず、常に半角スペースでインデントしないとだめ。 いきな…
こんばんは。 面白そうだったのでMoを読んでみた。 http://search.cpan.org/~ingy/Mo-0.30/lib/Mo.pod Moとは Moose is huge. Moose led to Mouse led to Moo led to Mo. M is nothing. Mo is more. Not much.Moose、Mouse、Mooからできたlessなやつ。 VERSI…
これが動かなかったので調べたメモ。 strictはなしで。 *{"Foo::aiueo"} = sub { print "aiueo.\n" }; # Fooクラスのaiueoメソッド *{"Bar::new"} = sub { bless {}, "Bar" }; # Barクラスのコンストラクタ push @Bar::ISA, "Foo"; # BarはFooを継承 *{"Bar:…
再発明かな。 use strict; use warnings; use class; class "Foo" => ( bar => sub { my $self = shift; if (@_) { $self->{bar} = shift; } $self->{bar}; }, ); my $foo = Foo->new(bar => 'baz'); print $foo->bar, "\n"; #=> 'baz' $foo->bar('hoge'); p…
DBに入れるまでもないマスタデータをアプリケーションで取り扱うときの最近やってること。 DBに入れないからといって、設定ファイルには相応しくないデータ。 ハッシュで入れるだけだと、たとえばそのデータでセレクトボックスを作るときに取り出し順が保証…
適当にやってたら動いてびっくりしたのでメモ。 よくある評価用の+は無名ハッシュのあれである。 sub foo { +{ bar => 'baz' } } この+は++にしない限り何個でも置ける。 sub foo { + + + + + +{ bar => 'baz' } } ところで、数値の正負を逆にしたいとき…
その後Teng->newする必要なかった。 0.14から0.14_01での変更点みたい。 以下Amon2での使用の例。 MyApp.pm use Teng; use Teng::Schema::Loader; use Test::DB; my $schema; sub db { my $self = shift; if ( !defined $self->{db} ) { my $conf = $self->c…
同じDigest::*だと思ったら大間違いという話。 -MDigest::SHA=sha512_hexだと use Digest::SHA qw/ sha512_hex /; use utf8; use Encode qw/ encode_utf8 /; print sha512_hex("あいうえお"),"\n"; #=> ed8ad6b03b7cb459... print sha512_hex(encode_utf8("…