時計を壊せ

駆け出しWebプログラマーの雑記

Time::Strptime進捗

頭を悩ませながらのんびり作ってます。 https://github.com/karupanerura/Time-Strptime Time::Strptimeとは strptimeのpure perlによる実装です。 epochとoffsetだけを返すシンプルな機能を持っています。 pure perlですが最小構成のperl codeを文字列とし…

株式会社はてなに入社しました

そんな夢を見ました。株式会社はてなに入社しました - hitode909の日記

ORDER BY狙いのキーが何故速いか

どの最適化が効くんや…とググった。 以前も調べた気がしたが思いだせず、ひたすらググる羽目になったので、 反省してブログに残す。ふつーにmysqlのdocumentに書いてあった。 http://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html If you use LI…

#yokohamapm #10 に参加しました

ビールおいしかったです。スポンサーのKAYACさん、準備・運営して頂いた皆さんありがとうございました。 こんな感じの内容を話させて頂きました。 perl5の日付時刻処理とか from karupanerura </xmp> 要約すると、既存のライブラリ、罠が多くて理解と慣れ…

クソコード、あるいは技術的負債

クソコードについてここ数日で考えたことを書いてみる。 技術的負債まわりのえらいひとたちの議論を眺めてて、技術的負債って言うとなんかプロっぽいけど、クソコードって言ったほうが示したいモノを素直に表してるし分かりやすいきがしてきた。 クソコード…

redis-sentinel管理のredisを手動failoverさせる

やんごとなき理由でredis-sentinel管理のredisのmasterを再起動したくなって、 手動failoverのやりかた調べてたら公式のドキュメントにちゃんと書いてあった。 公式のドキュメントちゃんと読まないとダメだ。 適当なsentinelに入って、 redis 127.0.0.1:2637…

2013年のKPT

2013年終わったのでKPTやってみる。 Keep 新しい分野に挑戦した Android フロントエンド開発 こっちはお手伝いとお遊び程度だけど 新しい言語に挑戦した Java JNI(Android NDK) JSX Haskell 新しいモジュールを作った Parallel::Async SQL::Maker::Plugin::C…

ISUCON3でまたもや惨敗したはなし

ISUCON3への参加から日が経ってしまいましたが、来年の自分へのメッセージとして書きます。 だいたいの内容 坂パスタチームの仲間の面々が書いてくれているのでそちらをご参照下さい。 id:kfly8 http://kfly8.hatenablog.com/entry/2013/11/30/200331 id:mas…

Amon2で非同期レスポンスを使う方法と、非同期WebAppのハマりどころ

この記事はPerl Advent Calendar 2013の15日目の記事です。 Amon2とは @tokuhirom さんが開発しているPerl製のWAF*1です。 Plackを軽くwrapしたような軽量でシンプルなWAFです。 現在、Version 6.00がリリースされていますが、Version 3.50からwebsocketのサ…

state変数は初期化のタイミングで例外が発生しても二度と初期化が行われる事は無い

タイトルの通り。 まあ、初期化は1度しか行われないので、あたりまえといえばあたりまえですがハマったのでメモ。 以下検証コード。undef,2,2となるかと思いきや初期化は1度しか行われないのでundef,undef,undefとなる。 static variable be undef if throw …

#isucon 3予選を運良く通過したはなし

予選通過、かなり高い壁だと思っていたので通過出来て大変喜んでおります。 #isucon 提出AMIで提出通りの設定でベンチ動かして当日最高スコア以上の11222.3が出た。どういうことだw— かるぱねるら (@karupanerura) 2013, 10月 7 ちなみに、当日記録できた最…

#yapcasia 2013の感想とParallel::Asyncを書いたはなし

前夜祭 前夜祭では昨年のLTソンと同じくらいの熱気が会場を沸かせ、ときにはApache::LogFormat::CompileとかNorikuraとか真面目なプロダクトの紹介もありつつ、Acme系のはなしなどいろいろあっておもしろかったです。 ぼくも熱気に当てられて飛び込みLTとか…

#yapcasia 2013 で 「ぼくがかんがえたさいきょうのMVC」について話してきました

昨日の13:40から多目的教室3で「ぼくがかんがえたさいきょうのMVC」という題でトークをさせて頂きました。 ぼくがかんがえたさいきょうのMvc from karupanerura </xmp> http://yapcasia.org/2013/talk/show/f60b8522-d43e-11e2-ac80-4cc16aeab6a4 …

たよりがいのあるO/R Mapper "Aniki"

って売り込めると思うのでAnikiって名前のORMだれか作ってください。

JavaでDH鍵交換を実装する

やんごとなき事情でJavaでDH鍵交換を実装しなければならなくなったので実装してみました。 クラス/メソッドの説明と型しか書かれていないJavaのドキュメントをdisりつつ、いろいろ試行錯誤してみたらできた。 ググっても無駄に長くてめんどくさくて実用性に…

YAPC::Asia 2013 で ぼくがかんがえたさいきょうのMVC についてはなします #yapcasia

YAPC::Asiaとは 日本で最大級の規模のPerlのカンファレンスです。Perlのカンファレンスですが運用、プロトコル、テスト等開発に関わる様々なトークがあり、和気あいあいとした雰囲気でときには意識高い話もしつつ、ゆるふわにPerlとその周辺技術等への学びや…

Yomiuri構想

まだ構想段階だけどこれだいぶイケてね?って思ったので勢いで書いてみる。 Yomiuriとは 手軽に拡張出来るJekyllインスパイア系ブログフレームワーク/オーサリングツール 特徴 CLIで記事が書ける vimやemacsなどお好みのエディタでどうぞ。 Github Flavord M…

plenv.el 0.31 released!!

plenv.elのメジャーバージョンアップが行われました。 今回のバージョンアップでは--asオプションを利用してperlをインストールしたケースでうまくperlのパスを取得出来なかった問題が修正され、README.mkdnのサンプルコードにおけるflymakeと連携する部分の…

コンテキストとハッシュの怪

怖い話 割とハマりがちなので。 たとえば、以下のようなコードがあったとします。 use strict; use warnings; use utf8; use Data::Dumper; sub yyy { my $key = shift; return unless $key; return "yyy_$key"; } my $hashref = { xxx => yyy(), aaa => 'bb…

perl触ってるんだから一度くらいソースフィルタを触ってみたいなと思ったのでVS.pmを書いた

VS.pmとはワンライナーでおてがるにベンチマークを取るためのPerlモジュールである。 ソースフィルタを実験したくなっただけなので実用性はほぼない。 こんな感じで使える。 perl -MText::Xslate::Util -MVS=1000000 -MURI::Escape -E 'xslate { Text::Xslat…

#chibapm いってきたたたたた

#1も#2も行ったけど#1のレポ牡蠣忘れてたのでついでにかく。 #1 内容は他の方々が既にしっかりまとめてくださってるのでそれに頼らせていただくとして、 Perl初心者な人とある程度がっつり使ってる人の両方がいて、 Perl初心者な人はこういうのやりたい!も…

plenv.elを書いてみた。あるいはflymakeでplenvのperlを使うには

ちょびっと追記したり、書きなおしたりしました。Hachioji.pm #26のハッカソンでなにつくろうかなーと思ってたので、 ちょうど旬だったplenvのemacs lisp拡張でも書いてみようかなと思い至った。 plenv.el (require 'plenv) としておくと、だいたいperlbrew.…

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のイン…