時計を壊せ

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

2012-01-01から1年間の記事一覧

2012年と私

弊社の忘年会議というイベントでスライドに入れ忘れたものも含め諸々。 技術 正月発火村 XOClockというAnyEventベースのサーバー書いた。 http://karupanerura.hateblo.jp/entry/20120108/1326129213 非同期 http://karupanerura.hateblo.jp/entry/20120219/…

#isucon2 で惨敗してきました

潔く。 思った事 ソースを見て DB重そう 参照系クエリでJOINしまくってるなー recunt_soldとか 更新系重そうだなー IS NULL ORDER BY RAND appがstatic file返してるの無駄だなー front endがapacheなのはやめたほうがよさそう 最終的にはmemcachedにレスポ…

TengでRowObject自身を最新にする

以下のような、RowObject内の値が信頼出来なくなるようなupdateをかけたあとに、 masterからrefetchし直した値が引けると嬉しいのかなと思った。 say($row->xxx_pt); # 20 $row->update(+{ xxx_pt => \sprintf('xxx_pt + %d', 10) }); say($row->xxx_pt); # …

#yapcasia 2012 に参加してきました

YAPCはおわっちゃいねえ。俺達のYAPCはまだ始まったばかりだ! と言ってるわけにもいかないので、いい加減書きます 今年のYAPC 今年は東京大学のなんちゃら記念館というところで開催されました。 今年出来たばかりみたいで新しく、綺麗な建物でした。 運営も…

はてなブログで背景画像を変更したのにうまく切り替わらないときの対処法

デザインCSSのbackground-urlに?v=1など適当なクエリパラメータ付ければうまくいくっぽい。

.gitconfigにinclude書くと捗る

git

2012-08-20一部訂正githubにdotfile上げてる人は結構多いですが、 github.tokenなど、一部の設定は公開されると困りますね。 そんなときはincludeディレクティブを使うとローカル用の設定を別ファイルに出来るので捗ります。 [include] path = .gitconfig.lo…

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で開発…