memcachedのように使えるBloomFilter

YAPCでmalaさんの話を聞いていて、memcachedのようにお手軽に使えるbloom filterがあるとひょっとすると便利かもしれない、とふと思ったのでAnyEventつかって、Bloom::Fasterのwrapperを書いてみました。https://github.com/walf443/p5-bloomd-server以下の…

qudoで一日にjobが何件ぐらい投入されたか計測する

jobが一日あたり何件ぐらい投入されているのか、お手軽に確認できるようにするのに、MySQLのtriggerを使ってみるとどうだろ、ということでやってみた。まず普段のqudoのschemaに加え、以下のようなテーブルを追加します。 CREATE TABLE `job_counter` ( `enq…

KVMをコマンドラインから使うの術

kvm

結構前に自宅サーバーの仮想化はXenにしていたのをこれからはKVMらしいのでKVMに変えてみるか、とやってみたときは、ホストOSにX入れないとうまく動かなかったりそういう点が嫌だなぁと思っていたが、だいぶ環境や情報が揃ってきて、Xenで作ったりするのと同…

isuconに参加してきた

isuconに参加してきた 当日の行動 ややうろ覚えですが、自分がやっていたことをざっくり書いてみます。 まず、実行用の環境へアクセスしようとしたら、reverse proxyのサーバーへしかsshできなかったので、とりあえずisuconユーザー以下にあるファイルをざっ…

Test::Tester

以前テストライブラリのテストを書く際に、Test::Builder::Testerがつかえる、という記事を書いたが、Test::Builder::Testerは、テストの失敗の文字列を一字一句かえないように調整したりするのが、ダルいなぁ、というのがあったりして、もっとよいやつを探…

続 Test::TypeConstraints

http://d.hatena.ne.jp/walf443/20110704/1309738408 で公開した、Test::TypeConstraintsですが、反応をもとに、微調整してCPANへあげました。 type_is_a_okというメソッド名をtype_isaにしました Data::Validatorに依存せず、Mouse::Util::TypeConstraints…

local $var += 1の挙動

Test::TypeConstraintsのレビューをしてもらっていたときにid:gfxさんに教えてもらったのですが、 local $Test::Builder::Level += 2;としていたのですが、これは、「元々の$Test::Builder::Levelに2を足す」、という挙動にはならないです。そもそも、これは…

Test::TypeConstraints

ちょっと固めに書いておきたいところで、メソッドの戻り値の型をテストしておきたくて、Smart::Argsとかを使うのに慣れてくると、ArrayRef[Int]とかでテストできると楽だなぁと思ったので書いてみました。https://github.com/walf443/p5-test-type_constrain…

Skeleton::CoC

フレームワークにそってアプリケーションを開発していると、これを追加するには、このクラスとこのクラスを作って、ここにテンプレートを追加する、といったことがよくある。railsとかだとscript/generateとかあってテンプレートを元にファイルを自動生成で…

pathogenのhelptagsしたらsubmoduleがdirtyになってめんどい

最近pathogen.vimへ移行して、だいぶvimのライブラリをupdateしたりするのが楽になったのですが、 :call pathogen#helptags()とかやると、uniteのマニュアルとかも:h uniteとかで引けるようになる、というのはとてもうれしいのですが、その一方で、git statu…

Cache::Pluggable

Cache::な名前空間を持つライブラリは、get/setなどのインターフェースがわりとそろえてあるのですが、ライブラリによって微妙に挙動が違ったりして、ちょっと別のライブラリを検証してみたり、とかが意外としづらいです。例えば、Cache::Memcached::Fastで…

dainamoを書きました

ちょっと前からdainamoというプロジェクトを始めました。元々各プロジェクトの雛形にgearman/schwartz/qudoのworkerのスクリプトがあり、そこから自動生成させて、微妙にカスタマイズしつつ、使っていたのでした。 しかし、その自動生成させたやつに微妙にバ…

ファイルが更新されたら勝手にspork -makeするやつ

自前のプレゼンツールを作ろうといつも思いつつ結局時間に追われてついついSporkを使ってしまっています。しょっちゅうファイル更新するたびにspork -make打つのもめんどくさいので、ちょっと書いてみました。最近地味にFilesys::Notify::Simple期です。 use…

gearman-top

以前書いたperlbal-topのgearman版があると便利なことがちょっとあるかもしれないということなので書いてみました。http://d.hatena.ne.jp/walf443/20100121/1264083979 ./gearman-top statusとかで数秒に1回admin portをたたいてstatusを実行して表示するの…

DBIx::Skinnyの動的なSQL生成の挙動を調べるREPL

そもそも悩むくらいならsearch_namedでいいんじゃね?という話はありますが、動的生成するようにしておく方が便利ということもまぁまぁあったりします。あと、なんだかんだでsearchは便利なのでよく使うんですが、細かいところでどう書くんだったけなー、とい…

コマンドラインからjsのリファレンスを引く

js

昨日cpprefを久々に使ったりしていて改めてコマンドラインからリファレンスを(オフラインで)引けるのは便利だなぁと思ったので、ぱっとみないっぽかったので、jsrefというツールを作ってみた。基本的にはcpprefと同様にサイトのpathを書きかえつつ、scraping…

vim-refからcpprefを引けるようにしてみた

vim-refを愛用しているのですが、cpprefを引けるようにしたいなということでやってみました。vim scriptはあまり得意ではないですが、見様見真似でいくつか関数を書くだけで他と同様の感覚で使えるようになるというのがvim-refはとても便利ですねhttp://gith…

今いるwindowの番号をとなりの番号に変更する

途中で空きがあったりすると必ずしも正確ではないが export WINDOW=$(($WINDOW+1)) && screen -X number $WINDOWとか。:numberは引数に対して環境変数の展開等をしてくれないらしいので、screen -X経由で呼ぶことでshellの展開を利用している WINDOW環境変数…

kumofsを一台のサーバーで動かす

hbstudy #10に参加してきたんですが、いいかげんkumofsくらい動かしてみないとなぁということで動かすだけ動かしてみました。 基本的には複数のサーバーで使われることを想定されてるものなので、この構成は、あまり検証には向かないはず。とりあえずどんな…

Plack::Middleware::DoCoMoGUID

ドコモ向けのサイトを書いている場合に自分サイトのどのページでもiモードIDをとりたいというのはよくあることですが、 PlackのMiddlewareでやれそうかなと思いつつ、他に書いてる人がいなそうだったので書いてみました。http://github.com/walf443/p5-plack…

__PACKAGE__を使わない方がよいとき

一時期社内でbless {}, __PACKAGE__が流行っていて、このやり方は継承した際に問題があるので使わない方がよいんじゃないですかねということで問題になるケースをあげてみる。 package Foo; sub new { bless {}, shift; } sub call_foo { my $self = shift; …

更新のあったところだけテストする

Makefileとかのビルドツールを使って、変更のあったファイルあるいは、その依存関係だけをコンパイルするっていうのはよくやりますが、変更したところだけテストするようにしたプロジェクトってあまり見たことないので試しにやってみた。Makefile.PLとかで簡…

DBIx::Skinny::ProxyTable

すっかりブログに書きわすれていたんですが、こんなの作りましたhttp://github.com/walf443/p5-dbix-skinny-proxy_table基本的にDBIx::Class::ProxyTableの使い勝手を踏まえつつ、 微妙にこうだったらよかったねーという部分を機能追加した感じになっていま…

perlbalのadmin portをtop風に見る

夜中にサーバーが重くなったりしたときとかにチャットで同僚と会話しながらサーバーの増強とかやってると、進行状況が不明になったりしがちでperlbalの割り振り状況をtop風に見れるのが欲しかったので書きました。一定時間ごとにadmin portに引数で渡したコ…

Re: DBIx::Skinny で update_or_create

http://d.hatena.ne.jp/magicalhat/20100121/1264076085より オマケとして、UPDATE じゃなくて INSERT した場合には、関連するレコードも更新しなくちゃ! とゆーパターンも想定して、DBIx::Class でも利用できる in_storage というメソッドもつけてみました…

DBIx::Skinny::Pager

DBIx::Skinnyで簡単に使えるpagerが実装されていない主な理由は、 http://perl-users.jp/articles/advent-calendar/2009/dbix-skinny/19.html とかに書いているんですが、管理画面にありがちな データを様々な条件で検索するページみたいなのを書くときにはS…

perlapiのctags用ファイルを作るスクリプト

あけましておめでとうございます。今年もよろしくおねがいします。正月ということでふだんなかなかできないことをやろうかなということでXS勉強中です。XSにはあまり詳しくないのでCPANにある実例を色々読んだりしてるとperldoc引きまくりな刑になるわけです…

local::libと.modulebuildrc

自宅の開発マシン(MacBook)と自宅サーバー(色々)のCPANはlocal::libで インストールしたのを1つのgitリポジトリにしているのですが、 .modulebuildrcのpathがフルパスになっていてハマったのでいちおうメモ。 diff --git a/.modulebuildrc b/.modulebuildrc …

Git 1.6.6 Relnoteメモ

git

25歳になりました。それはさておき、1.6.6が出たらしいので例によってRelnoteをピックアップして気になったところにコメントしてみる。個人的には、設定ファイルの~/を展開してくれる機能だけでもupdateする価値はあるなぁといった感じで他にも細かいけどよ…

MySQLユーザー会2009年冬に参加してきた

http://atnd.org/events/2512元々はkazuhoさんにShibuya.pmの懇親会でお金を借りてしまってて、年内に返したかったという非常に個人的な事情で参加して、tritonnの開発者の人に会えたりする機会はあんまりなさそうだし、運用とかに関して色々聞いてみようか…