日向夏特殊応援部隊

俺様向けメモ

Perl

YAPC Asia 2014

もの凄く久しぶりにはてダにログインしたので、はてな記法を皆目忘れてしまった訳ですがこんにちは! ブログを書くまでが YAPC だって事なので書いてみます。 まずスタッフの皆さんお疲れさまでした。yusukebe が主体になっての初の YAPC だけど何ら違和感な…

perldoc.jp のデザインを公募します!

こちらでもお知らせしちゃいます!http://blog.perlassociation.org/2012/03/perldocjp.htmlにて詳しく書きましたが、perldoc.jp の運営母体を JPA に移管する事になりましたので、デザインの公募を行います。もしお知り合いにデザイナー等いましたら、お声…

MyTAP + my_prove + MySQL::Sandbox で快適 SQL Unit Testing

MyTAP という MySQL 上で Test Anything Protocol を実現してしまうというプロダクトがあります。これと TAP::Parser::SourceHandler::MyTAP に付属している my_prove コマンドを使うとかなり簡単に SQL プログラミングでテストを行う事が出来ます。また MyS…

Pod ドキュメントを除外してソースのみを見る

それ perldoc -M と Pod::Strip で出来ます。例えば、 $ perldoc -MPod::Strip AnyEventみたいな感じですね。AnyEvent の pod 部が多過ぎてソース読むのが大変だったので、これで読みやすくなりますね。 ひょっとしたらもっと良い、あるいはシンプルな方法が…

Lion での EV(libev) のインストール

どうも Lion 環境下だとそのまま EV-4.03 はインストール出来ないみたいですね。 memoryless sources — Lion で Plack をインストールすると EV のテストでエラーがでる。 9891 – static const struct optimized-away incorrectly by llvm-gcc Trouble insta…

YAPC Asia 2011 でのスライド公開と感想など

まずは自分のスライドですが公開しました。 Mobage オープンプラットフォームの事件簿 ちょっと Mac の PowerPoint のせいかどうか分からないけどスライドがプロジェクタに映らず急遽 PDF に変換したりして、最大化出来なかったりしてお見苦しい所があったか…

Iterator::GruopedRange 0.02 Released

さて、ちょっとしたことからタイトルのようなモジュールを書いて見ました。Iterator::GroupedRange モジュールは簡単に説明すると、リストまたは別の(複数行ずつ返す)イテレータから指定行数分まとめて列挙するというモジュールです。0.01 で SYNOPSIS を思…

KeyedMutex::Memcached ってモジュールをリリースして何も言ってなかった件

id:kazuhooku さんがかつて作った KeyedMutex を memcached でやってしまおうと言うのがこのモジュールの目的です。KeyedMutex の場合は、keyedmutexd と言うそれ専用の daemon を立ち上げなければいけませんが、このモジュールの場合は既存のシステムに mem…

Test::Mock::Guard Released

さっき nekokak さんと xaicron さんにそそのかされて Test::Mock::Guard ってモジュールを書いてみました。そもそも Perl には Test::MockObject と言う汎用の Mock モジュールがあるんですけど、あれこれ余計な機能がたくさんついてたり Mock 化すると多分…

IV, NV などを B モジュールで調べる

makamaka さんが YAPC Asia 2010 にて発表した XSからPPへ - YAPC::Asia Tokyo 2010 に既に書いてあるんだけど、備忘録を兼ねて。JSON にする際に違いが出てくる訳ですがまずは論より証拠。 $ perl -MJSON -e 'warn encode_json(+{ foo => 1, bar => "1", ba…

生 DBI ユーザーのための DBI Cookbook (6)

さて、今日は selectcol_arrayref です。昨日、会社のグルメな同僚に教えて貰いました。ちょうど 生 DBI ユーザーのための DBI Cookbook (1) - Yet Another Hackadelic にて selectall_arrayref + Slice, selectall_hashref などの使い方を書きましたが、こ…

Time::Piece::MySQL とタイムゾーン (訂正あり)

重要id:holidays-l さんがこの記事の誤りと、ちゃんとした解説を書いてくれているので、そっちを参照して下さいませ。以下、そのつもりで読んで下さい。MySQL から UNIX_TIMESTAMP() と NOW() の値をこんな感じで出します。 [12:13:13 root@bopobo/test :4] …

YAPC Asia 2010 でのスライド公開と補足、あと感想など

はい、@941 さんを初めとして、@lestrrat さん、JPA の皆様って僕もですけど、それとボランティアスタッフの皆さん、スピーカーの皆さん、ご来場者の皆さん3日間お疲れ様でした。そして、今年も盛り上がりましたね。さて、後半だいぶ時間が押して早口になっ…

Iteration あれこれ

sharding やら partitioning とかし始めると段々とその key が特定のノートやパーティションに収まるように分類した上で処理とかしたくなる訳です。 最近、モバゲーのオープンプラットフォームのプロダクト全てで使っている、DBIx-DBHResolver にちょこちょ…

Web テクノロジーセミナー in Hokkaido と Hokkaido.pm のスライドを公開します

ちょっと忙しいので感想とかは後で><というわけで行って参りました北海道。前日頑張ってスライド書いては呑んでスライド書いては呑んでの繰り返しでホテルの朝食を二度とも逃すという体たらくぶりでしたw Web テクノロジーセミナー in Hokkaido mbga Open…

生 DBI ユーザーのための DBI Cookbook (5)

まさかの続編ですよwww HandleError を使ってより詳しいエラーを得る 今日、帰りに @myfinder さんと話していて、syslog-ng に吐かれるエラーで Too many connection とかをちゃんと監視しつつも、エラーメールボムによって大事な思い出が消えたりしない…

使ってると思しきモジュール一覧を列挙するワンライナー

Module::ExtractUse で何となく出来る。 perl -MModule::ExtractUse -le 'my $p = Module::ExtractUse->new; my @used; while (my $module = shift @ARGV ) { $p->extract_use($module); push(@used, $p->array); } my %seen; @used = sort { $a cmp $b } gr…

MySQL の複合 DELETE 構文

1ヶ月半ぶりのエントリです。皆さんお元気ですか? 何故か最近 Eclipse ばっかり使ってる zigorou でございます。12.2.1 DELETE 構文 を見ていたら複合 DELETE 構文ってのが有ったので試してみました。前提としてレコードがうんざりする程多いテーブル、、、…

MySQL Replication with Test::mysqld

やってみたかったからついやってみた。 #!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use DBI; use Test::More; use Test::Exception; use Test::mysqld; use Test::TCP; sub setup_master { # http://dev.mysql.com/doc/refman/5.1…

XML::Writer

今まで使ったこと無かったけど、これは便利だ。 #!/usr/bin/perl use strict; use warnings; use IO::String; use XML::Beautify; use XML::Writer; my $osns = 'http://ns.opensocial.org/2008/opensocial'; my $buffer = IO::String->new; my $writer = XM…

CPAN::Packager で version を変えずに release だけ increment したい場合

一応、インターフェースとしては存在してるんだけど、cpan-packager コマンド経由だとどうにもならない。 $ perl -d /usr/bin/cpan-packager --module OreOre::Module --builder RPM --conf /path/to/cpan-packager.yaml DB<1> x use CPAN::Packager::Builde…

URI::Template::Restrict 0.04

コラボレータに加えて貰って、0.04 をさっき id:ikasam_a に ShipIt して頂きました。そのうち cpan コマンド等でインストール出来ると思います。id:ikasam_a++URI::Template::Restrict なんですが、extract() の処理が process() と同様の厳格なルールにな…

生 DBI ユーザーのための DBI Cookbook (4)

さてと、モバゲーオープンプラットフォームが先日やっと始まりました^^ みなさん是非遊んで下さいです。d:id:ZIGOROu:20091125:1259163476 のさらに続編です。 ShowErrorStatement でエラー時に発行されていたクエリを表示する #!/usr/bin/perl use Carp; …

探索パスにあるコンポーネントを読まないようにする

訂正 (2009-12-09T12:55:19+09:00) id:charsbar さんに教えて貰ったんですが依存してる Module::Pluggable::Object の except, only とかを使えば普通に出来た罠。 __PACKAGE__->config( setup_components => ['MyApp::Web::Model::Damepo',] ); とかで同様…

生 DBI ユーザーのための DBI Cookbook (3)

d:id:ZIGOROu:20090814:1250262134 のさらに続編です。 現在接続している dbh 全てを disconnect したい場合 use strict; use warnings; use DBI; ### なんかいっぱい接続したりとかする my %drhs = DBI->installed_drivers; for my $drh ( values %drhs ) {…

今日の SQL::Abstract

SELECT * FROM hogehoge WHERE hoge_flags & 2 = 0; みたいのを作りたい場合、 use strict; use warnings; use Data::Dump qw(dump); use SQL::Abstract; my $sql = SQL::Abstract->new; my ($stmt, @bind) = $sql->select("hogehoge", ["*"], +{ hoge_flags…

Error.pm

挙動確かめる用。ちなみに Exception::Class だと pacakge をわざわざ明示的に割り当てる必要は無い。 #!/usr/bin/perl package ThrowableProcess::Exception; use base qw(Error::Simple); package ThrowableProcess::FirstException; use base qw(Throwabl…

初めての Q4M, Test::mysqld を使ったテストの準備

id:kazuhooku さんの指摘 *1 を受けて transaction してた所を修正。AutoCommit をとりあえず 1 にしておきました。 #!/usr/bin/perl use strict; use warnings; use DBI; use Perl6::Say; use SQL::Abstract; use SQL::Abstract::Plugin::InsertMulti; use …

SQL::Abstract::Plugin::InsertMulti

作ってみました。元ネタは MySQLにおけるbulk insert と bulk update - 金利0無利息キャッシング – キャッシングできます - subtech です。bulk insert, bulk update *1 が出来ます。 SQL-Abstract-Plugin-InsertMulti-0.05 - add mysql bulk insert support…

YAPC Asia 2009 での発表資料「Database testing with MySQL::Sandbox」を公開します。

http://www.art-code.org/presen/yapcasia2009/ に置きました。前半は以前に書いたブログのまとめ的な感じになっていて、後半は MySQL::Sandbox::Frontend と言うモジュールの話をしてみました。make_sandbox コマンドの実行は結構重たくて、毎回 Sandbox 作…