ブックマーク / blog.yappo.jp (8)

  • YappoLogs: なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか

    なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか ここ最近の大規模サービス関連したデータページング考です。 mysql 5.5.34 で試して記事書いてます。 bigdata テーブルは id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) なカラムがある前提です。もちろん InnoDB です。 2014年なんだからCOUNT(*)とかSQL_CALC_FOUND_ROWSとかLIMIT OFFSETのページングはやめようぜ - Togetterまとめが発端にみえるけど、わりと昔から話されてる事なんだけど、「nippondanji SQL_CALC_FOUND_ROWS」でググっても有用な情報ないし文書化されてないからしとく。 ページング処理で使われがちな機能です。 S

  • YappoLogs: 配布するスクリプトが依存しているモジュールを実行時にスマートに入れてもらう方法

    配布するスクリプトが依存しているモジュールを実行時にスマートに入れてもらう方法 社内ツールなどで Perl スクリプトを配布する時にいちばん気になるトピックとしては、スクリプト中で依存しているモジュールをどうやってインストールさせるか? という所ですね、最近は toolchain が強まってきて cpanm --installdeps . とか carton install をやってもらえば良いのですが、たかだかちょっとしたツールだったら git clone してもらってすぐにスクリプト叩いてもらいたんじゃんすか。 ってことで、スマートかつクールにこの問題に対処するスクリプトの雛形を書いてみました。 core module 以外には Carton を予め入れておく必要があるのがまだまだ敷居高いですが、エンジニア向けのツールだったらだいぶ手間は下がるでしょう。 ポイントとしては、コードで使う

  • YappoLogs: 本物の KEN_ALL.csv の処理が簡単に出来る Parse::JapanesePostalCode をリリースした

    物の KEN_ALL.csv の処理が簡単に出来る Parse::JapanesePostalCode をリリースした 空前の KEN_ALL.csv ブームが凄かったのが記憶に新しいばかりですが、この郵政さんが公開している郵便番号ファイルをカジュアルにパース出来るモジュールを作りました。 https://metacpan.org/release/Parse-JapanesePostalCode https://github.com/yappo/p5-Parse-JapanesePostalCode 使い方はとても簡単で use Parse::JapanesePostalCode; my $parser = Parse::JapanesePostalCode->new( file => 'KEN_ALL.csv' ); while (my $obj = $parser->fetch_ob

  • YappoLogs: bradとmyとuse fieldsとPseudo-hashesとHash::Utilと

    bradとmyとuse fieldsとPseudo-hashesとHash::Utilと bradプロダクトではuse fieldsが多用されています。そして、 my ClassName $var;のような変数宣言が多用されています。 perldoc -f myしてみるとuse fieldsで使うみたいな事が書いてありました。 use fieldsってのは package Jitensya; use strict; use warnings; use fields qw/(sound); sub new { my $proto = shift; my $self = ref $proto ? $proto : fields::new($proto); $self; } 1; のようなコードがあるとして use strict; use warnings; use Jitensya; my $

  • YappoLogs: twitter2ircd.pl - POEで書いたperlのTwitter IRC Gateway

    twitter2ircd.pl - POEで書いたperlTwitter IRC Gateway Twitterは、どことなくチャット的な利用もされていてiChat使っていたのですが,WindowsTwitter IRC GatewayがあってIRCでやるのが楽しそうだったので、Macで動くようにPerlIRC Gateway書きました。 miyagawaさんにPoCo::Server::IRCのサンプルコードとしてLingrのIRC Gatewayを教えてもらったので、参考にしてPOE::Component::Client::Twitterを作ってCPANにうpしました。 パッケージ中にはtwitter2ircd.plというTwitterIRC Gatewayとなるサンプルコードを同梱しています。 コードの下にサンプルの設定ファイルがあるので参考にして下さい。 こんな感じで 普通

    delphinus35
    delphinus35 2011/05/02
    こんなのあったのか。面白そう。
  • YappoLogs: Mooseを使うべきでない理由とMooseを使う理由

    Mooseを使うべきでない理由とMooseを使う理由 twitterにでも書いて終りにしようと思ったけど140文字じゃ無理なんで。 Mooseの欠点やら利点やらMouseがどうだとかは今更感過ぎて割愛するし、下手な抽象的な表現も面倒なんでしない。 あなたが、再利用性の高いライブラリを作りたい場合はMooseを使うべきではない。 なぜならMooseはフレームワークだからであるからだ。 たとえ有用な再利用性の高いライブラリを作ったとしても、Mooseというフレームワークに依存してしまっては、あなたの有用なライブラリを選択してもらえない事もあるだろう。 誰かが小さいスクリプトを書くために、あなたが書いた有用なライブラリを使う事で楽が出来るとする、だがMooseというフレームワークに依存したばっかりに、その有用なライブラリの後ろに控えるものの大きさに臆して選択してくれないかもしれない。 もちろんM

  • YappoLogs: PerlのAttributeについてのお勉強

    PerlのAttributeについてのお勉強 このエントリの内容は結構適当です。 今更ですがCatalystなどで使われているattributeに興味を持ったので調べてみた。 やや日人向けははてな勉強会の資料などにもあります。 今回は、関数のattributeについて。SCALARとかARRAYとかHASHはスルーです。 あと、モジュールなperlではやってません。超シンプルです。 今のPerlでは sub foo : baz {}のように記述出来ますが、通常ではエラーになってしまうのです。 デフォルトで対応しているattributesは(lvalue|method|locked|unique|shared)のみらしいので、bazは対応してないのでエラーが出ます。 perldocを見るとMODIFY_CODE_ATTRIBUTESって関数でattributesの処理をしているそうなので、

  • YappoLogs: PerlのAttributeについてのお勉強 part2 ~Attribute::Handlersで作るプラグイン機構搭載ソフト~

    PerlのAttributeについてのお勉強 part2 ~Attribute::Handlersで作るプラグイン機構搭載ソフト~ さて、前回ではattributeの扱い方を軽く見てみました。 ただ、あんなコードを毎回書くのは面倒です。 そこでAttribute::Handlersモジュールの登場です。 概要としては、独自attributeの作成を簡単にしてくれます。 もちろん関数以外のattributeの作成が出来ますが、今回も関数のみに絞ります。 詳細はperldocしてください。 基的な使い方も簡単で use strict; use Attribute::Handlers; sub ah_test1 : ATTR(CODE) { my($package, $symbol, $referent, $attr, $data, $phase) = @_; print "ah_test1:

  • 1