Perl

AnyEventはじめました

何故かPOEをリファクタリングする指令を受けたのでなんとなくAnyEventを練習しています。 というわけで復習を兼ねての記事です。 サンプルコード package Model::Person; use strict; use warnings; use Carp (); use Class::Accessor::Lite; Class::Accesso…

Test-Memcached-0.00003 - can't run as root without the -u switch

概要 Test-Memcached-0.00003をroot権限でinstallするとRunning make testで失敗するです。 t/002_basic.tがこける cannot open port: 10001 at /root/.cpan/build/Test-Memcached-0.00003-QRHVb2/blib/lib/Test/Memcached.pm line 184. cpan-testers見てみ…

大きなファイルから必要な情報を抜き出す

splitって以外と便利なんだなと思った記事です。 そもそも何をしたかったのか test用のdumpデータが欲しいけど、ひとつのテーブルのinsert文があればよい。なんだけど、受け取ったdumpファイルが全DB, 全talbeのinsert文を含み、かつ巨大です。mysqladminでd…

テスト時にstatusコードが0以外になってしまう場合の対処方法

ファイルシステムがRead-Only になってしまうとログの書き込みすらできないから大変な事になるので検出しようと思ってNet::SSHでスクリプト書いたらstatusエラーに遭遇したが、テストを成功させるにはこうすればいいよ、という事を学んだ件です結論から言う…

サブフィールドコーディング

ビット演算でマスキングしてファイル種別を判定する方法を紹介します。 マスキング 次のような郵便番号があります。 100-6002 100-6009 100-6090 101-0029 101-0063 ...100-6002、100-6009と100-6090は東京都千代田区霞が関霞が関ビルを表わしています。 こ…

InsideOut

InsideOut Perlを使う会社が新人にどこまで教えるかの指標としてClass::Data::Inheritableを説明できる、という事を目安にしているという記事なんですがhttp://d.hatena.ne.jp/fbis/20060510/1147253289 なんだかんだいって独学でそこにたどり着くのはしんど…

TheSchwartzもはじめました

GearmanとTheSchwartz Gearmanに投げた仕事は無事完了したかどうかはよくわかりません。 途中でサーバーダウンしていた場合にどの処理が完了していて、どの処理が未完了なのか、わかりかねます。 TheSchwartzは引き受けた仕事を逐一DBに記録します。なので完…

Gearmanはじめました。

近年のWeb業界ではリクエストがある度にすべてを処理してレスポンスを返すのではなく、一部の処理をジョブキューに投げるなりして負荷軽減を試みるのが定石となりつつあるような、そうでないような、そんな時代に生まれたPerl初心者のために、Gearmanを使っ…

&&とandと||とor

&&と||で三項演算を使う なんだか酒と泪と男と女を思い出してしまうタイトルをつけたわけですが、 返り値が0か1かを返す処理を書く場合に&&と||は重宝します。私はよく三項演算子をセットにして使います。三項演算子は書かなくても良いかもしれませんが、後…

アクセッサの自動生成(AUTOLOAD編)

以前アクセッサを自動生成する方法を紹介していたのですが、今回はAUTOLOADを使用した場合を紹介します。 http://d.hatena.ne.jp/okamuuu/20100417/1271479559 AUTOLOADとは ある名前空間に存在するメソッドを実行するように指示したのに、そのメソッドが定…

文字列の一部の数値をインクリメント

fushihara++ my $name = 'ホゲホゲLv1'; $name =~ s/Lv(\d+)/Lv@{[$1+1]}/; warn $name; # ホゲホゲLv2

Text::Hatenaを拡張してみた

1. テストコード use strict; use warnings; use utf8; use Test::Base; use CMS::Lite::Extend::Text::Hatena; filters { text => ['my_parse', 'omit_indent', 'chomp'], html => ['omit_indent', 'chomp'], }; sub my_parse { CMS::Lite::Extend::Text::H…

クロージャーとグロブ割り当てを使用したサブルーチン

前回、前々回の日記でシンボリックテーブルとグロブを紹介したので、クロージャーとグロブ割り当てを利用したサブルーチンの紹介をしたいと思います。 レキシカル変数を不老不死にするクロージャー Perlではグローバル変数とレキシカル変数が存在しています…

シンボルテーブルとグロブ(2)

おさらい シンボルテーブルは普通のPerlハッシュで実装されています。 Perlのhogeという名前の変数には$hoge, @hoge, %hoge, &hoge, ファイルハンドルのhoge, ディレクトリハンドルのhogeなどがあります。 これらのhogeは物理的にはバラバラの場所に離れてい…

シンボルテーブルとグロブ(2)

おさらい シンボルテーブルは普通のPerlハッシュで実装されています。 Perlのhogeという名前の変数には$hoge, @hoge, %hoge, &hoge, ファイルハンドルのhoge, ディレクトリハンドルのhogeなどがあります。 これらのhogeは物理的にはバラバラの場所に離れてい…

シンボルテーブルとグロブ

シンボルテーブル、名前空間、グロブ シンボルテーブル Perlで宣言される変数にはグローバルなものと、そうでない、レキシカル変数*1とがあります。このグローバル変数には値が格納されています。この、グローバル変数の値が格納されている場所はシンボルテ…

彼氏がperldocjpを使っていない。別れたい。

このタイトルを一回書いてみたかった。社内には勉強会というものがあるんですが、この時間使って新人向けの資料でも作ろうかなと思いました。で、第一回はとりあえずperldocを紹介しようかと。Perlで分からない事がを調べる場合、こんな感じでしょ? google…

DATAトークンと継承(2)

翌日 そもそも下記の件は <CMS::Lite::View::Head=HASH(0x821b0e8)::DATA>←なんかこうなる 「ref $_[0] ならいけるんじゃないかと…」というつっこみがありました。 結果 1. Baseクラスでref $_[0]を呼ぶように変更 package CMS::Lite::View::Base; use strict; use warnings; use utf8; use Text::MicroTem</cms::lite::view::head=hash(0x821b0e8)::data>…

DATAトークンと継承

yusukebe氏のListPod::App::Lite::Viewを見ていて良さげだったので真似してみた。1. Baseとなるクラスを用意しておいて、こいつをuseする package CMS::Lite::View::Base; use strict; use warnings; use utf8; use Text::MicroTemplate qw(build_mt); sub i…

debianでlibxml-sax-perlがエラーを吐きまくるのは実はaptitudeでインストールする前にcpanでXML::SAXをインストールするとはまるという、Debian特有の問題に遭遇している、そんな貴兄は一度XML::SAXを削除してからaptitude install しろと言いたい俺がいる件

もしもこんなエラーが出たら 以下のパッケージの処理中にエラーが発生しました: libxml-sax-perl libxml-simple-perl libxml-sax-expat-perlそっと次のスクリプトを保存して実行して下さい…1.適当にファイルを作成 % vi remove.pl2.内容 #!/usr/bin/perl -w …

オカムはレベルが上がった。YAML::Tinyを覚えた

YAML::Tiny気に入った。 #!/usr/bin/perl use strict; use warnings; use utf8; use Data::Dumper; use Devel::Size qw(size total_size); use FindBin qw($Bin); use Path::Class qw/dir file/; use lib dir($Bin, '..', 'lib')->stringify; use YAML::Tiny…

Could not make: Unknown errorに悩んでいる、そんな貴兄は直接makeしてみよう

Linodeっていう海外のPVS使ってます。で、debian5.0でCPANインストールしようとするとやたらと Could not make: Unknown errorとかでます。そんな場合はこんな風にするとなぜかインストールできます。 % sudo su # cd /root/.cpan/build/TermReadKey-2.30-Nk…

DBIx::Class::Schema::Loader::Baseを書き換えてDBIx::Class::TimeStampの設定を自動化。

DBIx::Class::TimeStampが便利です。いつもいつも使います。そして、いつもいつもSchemaファイルに設定を追加しています。じゃあ自動化しようと思いました。DBIx::Class::Schema::Loader::Baseをコピーしたpmファイルを、use libで指定した場所に配置します…

SimpleCRUD

CodeReposのコミッタ権を取得して、SimpleCRUDというモジュール(?)をcommitしました。 やりたい事は 自分で簡単なアプリを作りたい、DB操作をするための管理画面が欲しい、でも実装が終わったら管理画面はもう要らない。 という自分のニーズを満たすためにつ…