boom を使って Datastore のページングで末尾を判定する方法

普通の Web アプリケーションのページングでもほぼ同様ですが、バッチ処理を想定したコードです。 Datastore では Cursor が返ってくるので、MySQLなどでよくある 1件多くとってその id を返す的な方法が使えないので、Count() を投げたとしても運が悪いと l…

YAPC::Tokyo 2019 にスピーカーとして参加しました

去る 2019/01/26 に開催された YAPC::Tokyo 2019 にスピーカーとして参加しました。yapcjapan.org自分は Perl to Go というタイトルで発表しました。 資料は以下になります。40分枠の発表でしたが、スライドを作っている段階で「あ、これ90分のヤツや...」と…

Released Net::APNs::HTTP2 0.02

APNs を簡単に送れる Net::APNs::HTTP2 の 0.02 をリリースしました。metacpan.orgいままでは内部で使っている Crypt::JWT が使っている CryptX 内の Crypt::PK::ECC が APNs の pkcs8 ファイルをそのまま扱えなくて opnessl コマンドなどで変換しなくてはい…

JSON::XS 4.0 では incompatible な変更がいくつかあるので注意

最近 JOSN::XS 4.0 が出たわけですが、Changes が以下のようになっております。 Changes for version 4.0 - 2018-11-16 ・4.0 pre-release, do not use other than for testing. ・SECURITY IMPLICATION: this release enables allow_nonref by default for …

golang で AWS Lambda から IAM 認証を利用して RDS に接続するのにめっちゃハマった話

2017年5月ぐらいから IAM 認証で RDS の MySQL or Aurora に接続できるようになっていて、これを利用すれば Lambda から高速にデータベースアクセスができてハッピーになれそうということで試した。 で、aws-sdk-go をつかってアクセスしようとしたけど Erro…

Redis を bulk queue として使う(その1)

最近 bulk 処理できるメッセージキューが必要なことがあったので Redis を使ってサックリと作ってみました。 bulk 処理というのは、例えばあるキューを100件ずつとか取得して処理することです。 こうすることで、1件ずつ処理を行うよりもスループットを上げ…

tora で FizzBuzz

tora -e 'say($_%15==0?"FizzBuzz":$_%3==0?"Fizz":$_%5==0?"Buzz":$_)for 1..100' undef と false のみ偽なのでいい感じに短くできぬ

Syntax highlighting for the Perl debugger

https://github.com/Ovid/DB--ColorIt's a nice idea! But running is very slow :( hmm... Syntax::Highlight::Engine::Kate is evil slow?

Cache::Memcached::Fast の weight をでかくすると地球がやばい

Cache::Memcached::Fast はデフォルトで consistent hashing してくれる。で、servers に weight を渡すと振り分けの重み付けをしてくれるわけだが、これを ketama_points に大きな値を指定し、かつ 100 とかにして new したら死ぬほど遅くなった。 とある環…

local $@ ちゃんの 5.14 での挙動

以下のようなコードが 5.14 からちゃんと die するようになっているっぽい。しらなんだ。 それ以前だと、エラーが握りつぶされて僕らが死ぬ。 use strict; use warnings; sub foo { local $@; eval { die "oops!" }; die $@ if $@; } sub bar { local $@; ev…

Dist::Zilla を初めて触って思ったこと

やめといたほうがいい

coderef から名前を取りたいとき

coderef から名前を取りたいなーって時がごく稀にあるわけですが、そういうときにどうするかという話。 anon のやつは __ANON__ になる。perl 5.12.0 からは B でとれるけど、それ以前の場合は使えないので、Devel::Peek 使っとけばいいっぽい。 気のせいで…

Class::Accessor::Mouse

http://d.hatena.ne.jp/gfx/20111119/1321681656 http://tokuhirom.hatenablog.com/entry/2011/11/19/152621 use 5.14.0; package Class::Accessor::Mouse { use Mouse; sub import { my ($class, %args) = @_; my $meta = Mouse->init_meta(for_class => sc…

こんにちは

お豆