タグ

ブックマーク / blog.livedoor.jp/xaicron (59)

  • にひりずむ::しんぷる - JSON::XS 3.0 あたりから Boolean のクラスが変わってたの巻

    JSON::XS 3.0 から JSON::XS::true|false が JSON::XS::Boolean クラスから JSON::PP::Boolean に変わってたので、Data:Util::is_instance() とかで JSON::XS::Boolean かどうかで分岐していた部分が動かなくなっていて諦めて if (is_instance $bool, 'JSON::XS::Boolean' or is_instance $bool, 'JSON::PP::Boolean') { ... } とかにした。(モジュールのバージョンが環境によって 3.0 だったりその前だったりすることがあるため) が、JSON::PP::Boolean は Types::Serializer::Boolean の alias であるため if ($bool && Types::Seriali

  • にひりずむ::しんぷる - 勝手に YAPC::NA 2013 に行ってきた!!

    6/3 ~ 6/5 にメインで開催された YAPC::NA 2013 に参加して来ました。特に JPA のなんたらではなく、会社のお金で行って来ました!! DeNA++ 日からは、@yusukebe と @tokuhirom と The Perl Foundation の President であるところの Karen が参加していました。 すでに @yusukebe と @tokuhirom がレポートを書いているので、パクかぶっているところもあるかと思いますが、ご容赦を! Future Perl - YAPC::NA 2013 に参加して - tokuhirom's blog. YAPC::NA 2013に行って来た - ゆーすけべー日記 開催場所 今回の YAPC::NA の開催場所は、アメリカはテキサス州にあるオースティン大学でした。日からだと、成田とかからサンフランシスコ o

  • にひりずむ::しんぷる - OS X の tcpdump で localhost 間の通信を見たい

    いつも忘れるのでメモ。-i lo0 をつければよい。 $ sudo tcpdump -i lo0 -s0 -A port 6379 とかすれば Redis の通信内容とかみれてあら嬉しい。

  • にひりずむ::しんぷる - MySQL Casual #04 で mysqlenv 作った的な話をしてきました

    4/17 に日オラクルで開催された MySQL Casual #04 で話して来ました。 当日のスライドは以下になります。 http://xaicron.github.io/slide/mysqlcasual-04/ ちょいとまだ作り始めたばっかりで微妙なところも多々あるんですが、mysqlenv のレポジトリは以下になります。 https://github.com/xaicron/mysqlenv 当日の様子 @saisa6153 さん SQLドリル面白そうだった。 というか実際にペンで書き込んでるの!?ってなってびっくりした。 @kenjiskywalker さん けんじおじさん全然おじさんじゃなかったし、騙された気分 コンテンツ力に嫉妬した @yoku0825 さん インデックスショットガン!!! 5.6系でなんの変化もなくて悲しい話だった @matsukena さん 5.6.10

  • にひりずむ::しんぷる - homebrew で最低限これだけはいれておけってやつ

    新卒向けなんたらカレンダーの X日目です。 そもそも homebrew 使ってない まず Xcode を入れる必要がある。Xcode は App Store からインストールして、 Preference → Downloads → Components → Command Line Tools をインストール。 そしたらおもむろに以下のコマンドを打つ $ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)" おしまい。 sl $ brew install sl 必須コマンド。 zsh $ brew install --disable-etcdir zsh OS X は PATH をゴニョゴニョやられてむかつくので /etc/zshenv を読まないように --disable-etcdir 付きでインス

  • にひりずむ::しんぷる - CPAN Module の変更点をサクッと調べる方法

    http://blog.livedoor.jp/xaicron/archives/54444878.html これでどういう感じで調べたのかというのをなんとなく書いてみます。 Changes を見る まず、なにはともあれ Changes を確認します。自分はよく metacpan を利用しているので、 https://metacpan.org/source/KROKI/Cache-Memcached-Fast-0.20/Changes らへんをさらっとみます。 または、Pod::Cpandoc というモジュールをインストールすると cpandoc というコマンドが利用可能になるので $ cpandoc -c Cache::Memcached::Fast などとしても良いです。 そんなこんなで以下の様な内容が読み取れます 0.20 2013-04-03 - finally fix magic

  • にひりずむ::しんぷる - Hokkaido.pm #09 に行って来ました!

    報告が大変遅くなってしまいってすいません>< 去る 03/08 から 03/10 まで JPA (Japan Perl Association) の支援を受けて北海道に行って来ました。 以下が当日の資料に大幅に加筆修正を行ったものになります。 https://xaicron.github.io/slide/hokkaidopm-09/ じつは、北海道に行っている間はずっと風邪をひいていましたことをここに告白いたします。 が、そんなことはさておき、とにかく吹雪がすごくてなんというかテンションダダ上がりでござました。 飛行機が遅れてしまって、ホテルに着くのがだいぶ遅くなったんですが @techno_neko さんの寝坊好意により、タクシーで迎えに来てもらえることになり、無事に懇親会会場まで辿りつけました。 とりあえずついたらジンギスカンです。なにはともあれジンギスカン。そして地ビールがあるじゃ

  • にひりずむ::しんぷる - ngrep 便利!

    tcpdump で HTTP みてたら、まさかり族の長に 23:44 hirose31: ngrep -d any -W byline port 80 便利 っていわれてそういえば ngrep とかあったわーってことで大変便利でした。@hirose31++ ちなみに今回は request 側から特定のホストのみに限定してみたかったので $ sudo ngrep -W byline port 80 and host www.google.co.jp とかしたのでした。これで生の HTTP がらくらくみれて幸せ! ちなみに tcpdump では $ sudo tcpdump -l -s 1600 -nxX -i en0 host www.google.co.jp とかやってました。オプションむずいよぉ。 https://twitter.com/muranet/status/3118546330

  • にひりずむ::しんぷる - Re: Sub::Rateと言うのを書いた

    Sub::Rateと言うのを書いた - unknownplace.org 別に Re でもないんですが、Data::WeightedRoundRobin とかいう謎モジュールで同じような事を実現すると、以下のような感じかな。 use strict; use warnings; use feature 'say'; use Data::WeightedRoundRobin; use Data::Dumper; my $dwr = Data::WeightedRoundRobin->new; $dwr->add(+{ weight => 0.1, value => sub { 'Super Rare' } }); $dwr->add(+{ weight => 3, value => sub { 'Rare' } }); $dwr->add(+{ weight => 96.9, value =>

  • にひりずむ::しんぷる - Mobageを支える技術書いた

    梅雨入りして外に出る気力が全くわきませんね。この時期は家に引きこもっていろんな技術書を読み漁るのが良いエンジニアへの道です。 というわけで、自分も少しだけ書いている Mobage を支える技術日 6/13(水) に発売する運びと相成りました。皆さんの手元に無事届いているでしょうか?すでにいろいろなところで書評が書かれているようでありがたい限りです。 レイアウトを工夫してみたらすごい勢いでこのへんにスペース開いたのでゆのっちで埋めておきますね。 ×╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹× ×╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹× ×╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹× ×╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹××╹◡╹×

  • にひりずむ::しんぷる - SQL::Format のマイノリティー

    マイノリティーという言葉を使うことで尊重されていきたい。 こんにちは、コードを建て増ししまくってハウルの動く城を作ることで有名な xaicron です。 世の中にはゴキブリを動かすことに情熱を燃やすおじさんもいる今日この頃、いかがお過ごしでしょうか。 今日もご多分に漏れずにコードの中身がハウルの動く城レベルのモジュールのちょっとした紹介です。 SQL::Format は OO なインターフェースもついてるので、SQL::Abstract とか SQL::Maker とか使ってた人が何となく直感で使えるようになっています。 ただ、複雑な SQL*1 を書くのクエリビルダを使うと、パッと見でどんなクエリが生成されるのかわかりづらいっていう意見もちらほらあり、例えばコードレビューする側もモリっと書かれていると「どんな SQL 吐かれるかわからん\(^o^)/」ってなってどんどん人が死んでいくケー

  • にひりずむ::しんぷる - わーい、JSX で canvas いじれたよー

    ちょろっと修正 というわけで、blog の背景の canvas を JSX で書きなおしてみた。いま動いてるのは JSX でコンパイルした JavaScript です。 だいたい、チュートリアルとテストみたらできた。 まず、node と npm が必要なのでよしなにいれる $ brew install nodejs $ curl http://npmjs.org/install.sh | sh そしたら JSX のレポジトリから git clone して make setup $ git clone git://github.com/jsx/JSX.git $ cd JSX $ make setup これで jsx の開発環境が整いました!簡単ですね!! ちなみに、いまは make install とかないので、とりあえずはこの落としてきたレポジトリで適当に開発することにした。 あとは、

  • にひりずむ::しんぷる - 京都旅行に行った話

    TODO 2012/03/31 去る 3/17 から 3/18 にかけて京都旅行に行って来ました。「そうだ京都、行こう」って土曜の夕方ぐらいに思ったので。 とりあえずパンツと下と MBA とナイフとランプをかばんに詰めこんでいざ東京駅へ。まず、新幹線に乗るのが久々過ぎて「特急券?乗車券?」ってなってとりあえず特急券だけ買って改札行ったらうんともすんとも言わなくて「仕方ないから Suica 突っ込むか」って自動改札機に入れたら Exception が発生して親切な駅員さんが来て教えてくれました。ありがとう。 で、やっぱり新幹線と言えば駅弁ですね。 チョコボールも欲しいところでしたら残念ながら売っていませんでした。こういう事書くから「第二の mattn」とか言われるんですね。心外です。 で、2時間半ぐらい新幹線に乗ってたら京都に着きました。さて、最初はどこに行こうかなと思ってたら、どうやら

  • にひりずむ::しんぷる - そういえば、WWW::Gumroad 書いた

    もう既に時代遅れ感満載ですが。 簡単な操作で自分の作品とかを売ることができるサービスであるところの Gumroad ですが、ちょっと前から API が公開されていていくつかの言語ですでにバインディングを作っている人がちらほらいますね。 で、perl のやつも誰かが作っていて Gumroad で 100円で販売しているんですが、このサービスにクレジットカード情報とか入れるのは微妙な気持ちなので中身見てません。発見したときは、商品ページに curl がないと動かない的なことが書いてあったんですが、今は対応されているっぽいですね。 そのときに「別にこんなん curl とかなくても動くよ」って思って適当に書いたのを、使う気は全くないのですが、せっかくなので公開しておきます。 xaicron/p5-WWW-Gumroad 使い方は、まず以下のようにして session token をゲッツします。(

  • にひりずむ::しんぷる - Data::Dumper と Data::Dump の実行速度の違い

    Data::Dump はデフォルトでそれなりに整形して表示してくれるのと、コンテキストを見てよしなに処理を変えてくれるので、スクリプトのデバッグなどに使うのはまぁまぁ便利だったりします。 が、この子は PurePerl で実装されているので実行速度が結構遅いです。 どのくらい遅いかというと use strict; use warnings; use Benchmark qw(cmpthese :hireswallclock); use Data::Dump (); use Data::Dumper (); my $data = { foo => [qw/bar/], bar => { hoge => 'piyo', }, heavy => So::Heavy::Object->new(10), }; cmpthese -1, { 'Data::Dump' => sub { my $res

  • にひりずむ::しんぷる - 親プロセスと子プロセスでデータを送受信する方法のメモ

    pipe() とか socketpair() とか色々方法はあるけど、素直に IO::Pipe 使っとくと簡単便利。コアモジュールですし。 use strict; use warnings; use IO::Pipe; my $pipes = []; my $children = []; for my $i (1..10) { push @$pipes, my $pipe = IO::Pipe->new; my $pid = fork; if ($pid) { # parent $pipe->reader; push @$children, $pid; next; } # child die $! unless defined $pid; $pipe->writer; print {$pipe} "pid: $$, index: $i\n"; exit; } for my $pid (@$

  • にひりずむ::しんぷる - Data::WeightedRoundRobin の紹介

    YAPC で少し紹介しようと思って、DEMO も用意してたんですが、時間がなくて諦めたので、ちょろっと紹介しときます。 Data::WeightedRoundRobin は重み付けされた値をベストエフォートな感じでラウンドロビンしてくれるモジュールです。 使い方は簡単で、以下のような感じ。 use Data::WeightedRoundRobin; my $wrr = Data::WeightedRoundRobin->new([ { value => 'hidek', weight => 65 }, { value => 'zigorou', weight => 80 }, { value => 'nekokak', weight => 75 }, ]); say $wrr->next for 1..100; こうすると、大体 hidek : zigorou : nekokak = 65

  • にひりずむ::しんぷる - LWP での SSL 接続で certificate verify failed しちゃう件の解決方法

    要は、オレオレ証明書使ってるサーバーに https でアクセスすると die しちゃうわけですが、無視したいときもあるわけです。 そういう時は、 $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0; とすれば OK ですね。っていうのを zigorou さんに教えてもらいました。ちなみにこの ENV は LWP::Protocol::https にはコードの中にしか出てこなくて、LWP*1 の POD に書かれてました。 あとは、 LWP::UserAgent->new(ssl_opts => { verify_hostname => 0 }); でもいいですね。こっちは LWP::Protocol::https に書いてありました。ちゃんとドキュメント読めって感じですが、LWP はいろんなところに分散していて、ちょっとした機能がなかなか探しづらいですね。 よくみ

  • にひりずむ::しんぷる - ファイルから環境変数を設定できる envfile コマンドを書いてみた

    xaicron/p5-App-envfile - GitHub daemontools には envdir というコマンドが付いていて、いろんな環境を切り替えたい場合に便利なんですが、環境変数名ごとにファイルをつくらなくてははいけなくてちょっとめんどいかなーと思いました。 というわけで、ファイルに環境変数を羅列すると、そいつを呼んでくれる envfile っていうコマンドを適当に作ってみました。 すごい車輪の再開発な気がするんですが、いまいちいいのが見つからなかったので。 「それこれでできるよ」的なのがあれば教えていただきたく。 使い方は簡単で、 $ cat > fooenv ENV1=VALUE1 ENV2=VALUE2 とか書いて $ envfile fooenv command とかすると、ENV1 と ENV2 が設定された状態で command が実行されます。簡単ですね。 実際

  • にひりずむ::しんぷる - Mac OSX に MySQL と Q4M と Handler Socket を一発で入れるスクリプト

    こんにちは! MySQL Casual Advent Calendar の三日目がやって参りました。皆様いかがお過ごしでしょうか。僕は例年通り、クリスマスをどうやってなくすかに頭を悩ませています。 さて、自分は MySQL のこととかあんまりよくわからないんですが、仕事で Q4M とか HandlerSocket とか使う機会があります。 更に言うと、手元の Mac の環境でそれらを手軽に使いたいので、簡単にセットアップが出来ると嬉しいですね。 というわけで、一発で MySQL と Q4M と HandlerSocket のセットアップが出来ちゃうシェルスクリプトを書きました!大変カジュアルですね!! 前提条件として、Xcode と homebrew は入っているものとします。 $ zsh -c "$(curl -fsSL https://raw.github.com/gist/14264