■2011-01-04
* [近況] 冬コミの報告と新年の抱負
明けましておめでとうございます。今年もよろしくお願いいたします。
昨年末の冬コミはおかげ様で12時過ぎには『Acme大全2010』が完売しました。ありがとうございます。実際には持ち込んだAcme大全の部数が少なかったのが原因でして、せっかくお越しくださったのに買えなかった方がいらっしゃいました。本当にすみません。メールか@maka2_donzokoへDMでご連絡頂ければ代引きで郵送いたしますので、よろしくお願いします(Acme大全1冊 1000円 送料+代引手数料 500円ぐらいになります)。今まではちょっと通販は避けたいなと思っていましたが、「ゆうメール+代引き」で割と何とかなりそうなので(参照:「チャレンジ!個人で代引き」)。
例によってデコシールはあまりまくりです。
今回「星一開発セクション」さんから『革命的で魔法のような 言語PHP』を頂きました。これは大変素晴らしい本です。PHPの存在自体がAcme的であるなあ、という感じです。続編を期待したいです。
それから、D.N.A.Softwaresさんの『ゲームエンジンAIMS』。こちらはカバーもあるし背表紙もアレだしイラストもふんだんで、感動しました。というかここまで装丁を某技術書系に似せる度胸と力量は私にはありませんでした…… 昨年末の振り返りで、もうAcme大全は終わっていいかな、と思っていたのですが、これをみてもう一回頑張ってみたくなりました。どうしようかな。
さて、今年は自分のやりたいことに(同人誌じゃなくて、仕事的に)時間を使っていきたいと考えています。それと英語力をつけたいなと。とりあえず今の仕事がひと段落ついたら(いつつくかわからない><)動くよ!
■2011-01-06
* [Perl] 5分で分かる Acmeモジュールを知らない人がAcmeモジュールの便利さを学べる記事を書いたよ
Acmeモジュールを知らない人にAcmeモジュールを話して欲しいと言われたことはないけど日誌書きました。
難しい話は抜きにしてAcmeモジュールはuseで呼び出せば動きます。Perlが動くサーバーならなんとかなります。
コピーライトの西暦を自動更新
Acme::Currentを使えばページフッタの西暦も自動更新します。
use Acme::Current; print qq/Copyright (c) 20010-$Acme::Current::YEAR Acme inc. All Rights Reserved./;
他人のサイトの内容を読み込む
ジャックバウアーに関するデータをチェックして何かするときなどに便利。
use Acme::24; print Acme::24->random_jackbauer_fact();
Perlの部品を読み込む
Acme::Inline::PERLを使えばPerlスクリプト内にPerlコードを埋め込むことができます。
use Inline PERL; greeting("World"); __PERL__ sub greeting { my $foo = shift; print "Hello, $foo\n"; }
複数のメッセージをランダムに表示
use Acme::Magic8Ball; ask( '質問' ); # 20メッセージ中1つを返す
指定した月のカレンダーガールを出力
少し長いですが、2011年1月のPlayboyのカレンダーガールを出力します。
use Acme::Playmate; my $mate = Acme::Playmate->new(2011, 1); print $mate->name;
以上のように結構便利なものがあります。コピーして貼りつけても大体のサーバーで(該当Acmeモジュールをインストールしていれば)動く気がしますのでどうぞ。本当はサーバーで動かす前にこんなコードを使う自分を見つめ直す方が良いんですけど、興味のある方はぜひ以下の記事をご覧ください。
元ネタは
5分で分かる PHP を知らない人が PHP の便利さを学べる記事を書いたよ
5分で分かる JavaScript を知らない人が JavaScript の便利さを学べる記事を書いたよ
5分でわかる Ruby を知らない人が Ruby の便利さを学べる記事をかいたよ
■2011-01-24
* [近況] Hachioji.pm #1
先週末、Hachioji.pmの第1回がありました。十数人がテーブル囲んでというか、膝つき合わして1分LTも面白いですね。私は「多言語対応サイトの開発方法」というのを発表しました。開発サイトのデザイン担当者から、テンプレを一元管理したいので何とかして欲しいと言われてやってみたのが下記の方法です。もっとまともな方法がありましたらぜひ教えてください〜
参加者の発表や会としてどんな話をしたかについては、他の方のレポートで出ていると思いますので、付け足し的なものを箇条書きすると
- uzullaさんtwitter等でアイディア募集するも誰も返事なし→愚痴をこぼしにircへ
- そのircも全然人が来やしない(すいません><)→※charsbarさんに慰めてもらう
- 必ずしもみんな参加できなくても月1ペースぐらいで開ければ
- Hachioji.pmは八王子プログラマーマウンテンなので、Perl使いじゃなくてもokだよ! →ってかプログラマじゃなくても大丈夫
- 夏は高尾山hackathon(Takao.mt)が出来たらいいな
- partynight12thさんがサイトをつくってくれるよ! ロゴは……どうなる!?
【広報】ircはfreenodeで#hachiojipm。Acme::PM::Hachiojiにこれまでの活動記録と次回の日程が記録されていく【はず】なので、みんな更新してね!(他力本願)
現在把握している他の方のレポートはこちら
hide_o_55さん
ytnobodyさん
norry_gogoさん
■2011-01-30
* [Perl][Acme] Tengの素敵モジュールつくった
nekokakさんの新しいORM、Teng(天狗 - (small|simple) DBI wrapper / ORM)を色々さわってみました。ちょうど去年の春にDBIx::SkinnyをDBICっぽくなどと、ろくでもないことをやっていましたので、今回もゴソゴソとちょっとしたモジュールを作ってみました。Acme::TengA::SchemaOnAHoleというものです。名前について説明すると、TengAのAはAdvancedのAですね。CatalystXやMooseXのようなものです。Holeというのは、Schemaモジュールに穴あけて弄くろうという心意気を表しているのですが、色々あって穴の上のSchemaになってしまいました。お察しください。簡単な使い方としては:
package MyModel::Schema; use Teng::Schema::Declare; use TengA::SchemaOnAHole ( 'foo' => sub { my ( $schema, $table, @args ) = @_; # $schema ... Teng::Schema オブジェクト # $table ... 属するtableのTeng::Schema::Tableオブジェクト } ); table_in_private_room { name 'table'; pk @pks; columns @columns; foo @args; };
という感じでSchemaオブジェクトをいじることができる関数を導入します。ただしtable_in_private_room
でしか使えないのでご注意を。普通のtableで使うとcroakします。また、プラグイン的なものをつくるには下記のようになります。
package TengA::Schema::Declare::FooBar; use strict; require TengA::SchemaOnAHole; sub import { my ( $class, @args ) = @_; TengA::SchemaOnAHole->import( { import_level => 1 }, 'bar' => sub { my ( $schema, $table, @args ) = @_; # ... }, ); } # あとはuseするだけ package MyModel::Schema; use Teng::Schema::Declare; use TengA::Schema::Declare::FooBar; table_in_private_room { name 'table1'; pk 'col1'; columns qw( col1 col2 col3 ); bar 'foo', 'bar'; };
Schema操作のためのAPIが用意され、弄らないで欲しいという作者の意図を無視した大変お行儀の悪いモジュールです。使うときは周りに誰もいないときの方が無難でしょう。