読者です 読者をやめる 読者になる 読者になる

時計を壊せ

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

perl

Cartonで不要になったモジュールをcpanfile.snapshotから削除したい

こうすることで消せた: rm -rf local carton install --deployment carton install なんか良い方法ないかなー。 追記: 2015-06-11 17:03 CIでcpanfile.snapshotを生成すれば解決しそう 参考: Carton考2014 | おそらくはそれさえも平凡な日々www.songmu.jp

YAPC::Asia Tokyo 2014で個人スポンサーしつつボランティアスタッフしつつperl5 meta programmingについて喋りつつreject conでWorkmanについてLTしました

タイトルが長い。 YAPC::Asiaとは ここを読むと良い。 概要 / ABOUT - YAPC::Asia Tokyo 2014 概要 / ABOUT - YAPC::Asia Tokyo 2014 Perlのトーク殆ど無いじゃんという意見についての個人的な見解 いまどき色々な言語が開発に利用されるのは当たり前だし、…

Job-Queue Workerの実装を管理するdaemon

Message Queueとか だいたいみんな、Message QueueとしてGearmanとかQ4MとかResqueとかRabbitMQとかZeroMQとかまあたくさんあるけど、なにかを使っていると思う。 Perlの人だとQudoとかTheSchwartzとかをつかっている人も多いと思う。 でも、preforkなworker…

Time::Strptime進捗

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

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

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

#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 …

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

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

Yomiuri構想

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

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

怖い話 割とハマりがちなので。 たとえば、以下のようなコードがあったとします。 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.…

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 今年は東京大学のなんちゃら記念館というところで開催されました。 今年出来たばかりみたいで新しく、綺麗な建物でした。 運営も…

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…

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

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がいい感じだなーと思って個人的に使っています。 ただ、社…

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を楽しんでいる感じの人が沢山居て面白かったです! 知ら…

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…

SledgeのPSGI対応について。

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

How to use Sledge - 基本編

Sledgeの使い方のまとめです。個人用のメモのようなものなので誰かの役に立つかは不明です。 僕自身が初心者のようなものなのでフレームワーク初心者にも読みやすいかも知れません。もしかしたら。とりあえず今回は基本編です。 はじめに Sledgeを知らない人…

久方ぶりの更新

こんなに更新が滞ってしまったのにはこれには谷よりも深いワケがありましてその。