時計を壊せ

駆け出してからそこそこ経ったWebプログラマーの雑記

LWP::Protocol::Hostsが話題になってたので

Socket::inet_atonをoverrideするとLWPに特化せずにより汎用的になるのではと思って、 それらしきものを書いてみた。 ただし、Socket::inet_atonがexportされる前にuseしなければいけないので、 実用性はあまり高くなさげ。https://github.com/karupanerura/…

Data::Validator::Managerなるものを書いてみた。

メソッドや関数の引数をバリデーションするときにData::Validatorを使わせて貰っているのですが、 低レベルAPIと高レベルAPIで同じバリデーションルールを適用したい事があって、 そういうときに複数箇所にコピペして使ったりしていると、 低レベルAPIのイン…

Perlで1つのファイルに定義されてるpackageの一覧を得るの法

[追記] @bokutin さんから Devel::InnerPackage が使えると教えていただきました。 シンボルテーブルを走査して取得してるみたいです。こっちのほうが賢いですね! @karupanerura 不完全かもしれませんが Devel::InnerPackage をよく使っていますよ。2012-06…

PerlまたはJavaScriptでObjectを文字列として評価したときの挙動をコントロールする方法。

例えば、Perlではオブジェクトを文字列として評価したときの挙動をコントロールしたい場合は、 以下のようにoverloadプラグマを利用して文字列化のためのメソッドをcoderefとして登録すると良い。 package MyURI; use strict; use warnings; use utf8; use C…

はてなブログに移行してみました

はてなダイアリーからはてなブログに移行してみました。 思っていたよりスムーズに移行出来たので満足です。 気が向いたらデザインとかもイジると思います。

FreeBSDにq4mを簡単に導入するスクリプトできたよー!

できたよー!と言っておきながらid:kazeburoさんのスクリプトまんまです。 人の褌で相撲!というわけでタイトルは半分釣りです。 FreeBSDでも動くようにするために、ちょいちょい調整が入ってます。 freebsdには/usr/local/srcは無いので最初に作るようにし…

HTMLのclassの複数指定とCSS

追記 id:kitsさんにブックマークコメントでご指摘頂いた点を修正しました。 ご指摘ありがとうございました! 本題 HTMLでclassを複数指定したときの挙動について id:ofsilvers に教えてもらったのでメモ。 classを複数指定したときに、同じパラメータが指定…

Kyoto.pmに行って話してきたの巻

勢い余ってKyoto.pmのトークに申し込んだらぎりぎりにも関わらずやらせてもらえる事について発表してきました。 運営のshiba_yu36さんありがとうございました。また、会場を提供していただいたはてなさんありがとうございました。 トーク内容について 正月発…

最近書いているプロジェクトまとめ

とりあえずプロジェクトを列挙 いろいろなところに手を出しすぎて自分でも混乱してきたのでまとめてみる。 XOClock https://github.com/karupanerura/XOClock 時刻を指定してJobを実行出来るJobQueue Server。 最近はJobの保存先を変えられるようにしたり、 …

callbackを直列化してみる遊び

JSDefferedとかData::Monad::CondVarとかあるし車輪の再発明だけど、 頭の体操にはよいかなーとか思ってミニマルな実装を心がけてcallbackを直列化してみた。 たぶん上から順に JSでOOPっぽく実装 JSで単純なfunctionによる実装 PerlでOOPっぽく実装 Perlで…

たまにはただのにっき

今日はXOClockをひたすら弄ってた。 コマンドを登録出来る機能を追加したけどテストどうしようか迷ってmergeせずに放置。 あとqueueをPlaggerbleにして、DBIとかも使えるようにしようと思って、 試しにXOClock::Storage::DBIとか実装してみたけど、 解せない…

Mouse::Util::TypeConstraints等を使って新しい型を定義するときのベストプラクティス

更に追記 MouseX::Typesですが、その後検証してみたかんじ、 要素を「=>」で繋げてしまうと左辺が文字列として認識されてしまうようなので、 要素を「,」で繋げなければいけないようです。 等価だと思っていましたが微妙に違うんですね。 package HogeProjec…

はてなブログ

はてなブログ。

正月発火村に行って来た。あるいはXOClockの話。

さりげなくないけど今年初bloggingです。 あけましておめでとうございます。 正月発火村とは 主に 僕 と @kfly8 が「ハッカソンやりたい!」とか言って適当に集まった面子で、 水上温泉に行ってやってきたhackathonです。 僕はXOClockというものをPerlで開発…

blessed (?:array|hash|scalar)refに関して某IRCにて

blessed arrayrefは色々と悪いのでblessed hashrefか、カプセル化したいならblessed scalarref使いましょうというお話。 12:11:00 tkhrm> あとあれ 12:11:05 tkhrm> ArrayRef を object にすると 12:11:15 tkhrm> 気軽に拡張できなくなる 12:11:27 tkhrm> あ…

間接オブジェクト記法の怪

怖い話 友人がこんなコードがうまく動かなくてハマっていました。 擬似コード use strict; use warnings; # ... sub hogemethod { # ... try { A; } catch { die $_; #(comment out) # ... }; # ... } # ... 1; このコードはtryの中で死ぬかもしれない処理A…

初YAPCで初LTしてきました

YAPC::Asiaってなに_ 今日はYAPC::Asiaでした。 YAPC::Asiaは技術的なトークを中心としたカンファレンスです。 Rubyで言うRuby会議みたいなものでしょうか。(行ったこと無いですが) YAPC自体は世界中で行われていて、今回はそのアジア版という位置づけみ…

IO::KQueueでディレクトリとファイルを監視する

経緯とかなんか Filesys::Notify::SimpleとかAnyEvent::Filesys::NotifyとかがKQueueに対応していないので自分で書くことにしました。 そのうちこれらのライブラリをKQueueに対応させてpull req送ろうと思います。 AnyEvent::Filesys::NotifyはMoose使ってる…

Atelierという俺俺WAFを書いています

なんでこんなものを書いてるんですか 最近はPSGI/Plackが普及してきてかなりWAFが書きやすくなってきたようですね!(僕がWAF触り始めたのは最近ですが。。。) 僕は最近はid:tokuhiromさんのAmon2がいい感じだなーと思って個人的に使っています。 ただ、社…

#isucon に参加してきました。

うっかり申し込むのを忘れて、定員に達して出れなくなってたので ぬーん(´・ω・`)ってなってたんですが、 @walf443さんに誘われたので#isuconに参加してきました! 人数が多い方が有利だとの事だったけど正直足手まといになった気しかしないのは秘密。 #i…

ApacheBenchを使いたいけどApacheを入れるのがだるかったのでベンチマークツール書いた

なんでこんな事をしたんですか?*1 昨日、コンソール開いたんです。コンソール。 そしたらなんかabコマンド打ってもApacheBench使えないんです。 で、よく見たらなんかApacheが入ってなくて、"command not found: ab"とか書いてあるんです。 もうね、アホか…

Perlの標準モジュールだけで比較的速いsleep_sort書いた

むっちゃ適当。 use strict; use warnings; use Data::Dumper; use Time::HiRes qw/gettimeofday/; sub timer(&$){ my($code, $wait_time) = @_; return sub{ my $start_time = shift; my $now_time = shift; if(($now_time - $start_time) >= $wait_time){ …

Yokohama.pmに行ってきた

初Yokohama.pm @takuji31さんとか@kfly8くんとかと一緒にYokohama.pmに行ってきました! 学生の頃は千葉に居て都合が合わなかったので、 Perl Mongerなイベントに参加するのは初だったりします。 Perlを楽しんでいる感じの人が沢山居て面白かったです! 知ら…

社会人になりました

新卒準備カレンダー2011春 04/03分エントリです。 割とゆるく書いてみます。ゆるくないかも。 で、お前誰だよ? かるぱねるらと申します。略して「かるぱ」とか「かるぱす」とか呼んでください。 4/1付けで某モバイルWEB系ベンチャー企業に入社しました。 新…

まじで

MacBook Air 11インチ欲しい!

Sledgeでセッションを再発行する方法

再発行する機会があんまり無くてたまに忘れるのでメモ。 package Hoge::Pages::Fuga.pm ... sub dispatch_hoge{ my $self = shift; $self->session->expire; # 破棄して $self->construct_session; # 再生成 ... } ... Dancerが気になってるけどHello,world…

Memoize::Class::Constructor作った

GitHubに上げました。 名前のとおりクラスのコンストラクタをメモ化するモジュールです。 前回の反省*1を踏まえてもうちょっとIFやらなんやら煮詰めてみようって言う目論見です。 How to use こんな感じで使います。 use HeavyClass; use Memoize::Class::Co…

明けましておめでとうございます

今年も宜しくお願い致します。元旦は近所の神社に初詣に行ったり、親戚と飲んだり楽しく過ごしました! とにかく今年はなんでもやるぞ!やるたいと思ったことなんでもやるぞ!

1年間を振り返る

何があったっけ オレオレ4半期毎に振り返ってみよう。 1月〜3月 就活もいよいよ説明会や面接が活発になってきた。 スーツに慣れるために塾講師のバイトも始めた。 初めて他教室にヘルプに行ったら前日に食べたカキに当たったのか腹を壊して迷惑かけた事もあ…

SledgeのPSGI対応について。

いろいろあってすっかり放置してました。 前回の記事でid:otsuneさんに紹介して頂いた、id:tokuhiromさんがPSGIに対応させたSledgeについてです。 そもそもPSGIって何? PSGIは正確にはPerl Server Gateway Interfaceとか言うらしいです。 名前のとおり、Per…