タグ

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

  • 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

    fbis
    fbis 2014/03/12
  • YappoLogs: ExclusiveLock::Guard という排他ロック簡単にやるモジュール書いた

    ExclusiveLock::Guard という排他ロック簡単にやるモジュール書いた ファイルを使って排他ロックするには、適当にロックファイルを作って flock $fh, LOCK_EX とかすると思います。 flock で使ったファイルハンドルが close されたら自動的に unlock されるので、最初っから Guard な感じなんだけどロック用のファイルも一緒に消したいので ExclusiveLock::Guard ってのを作った。 use ExclusiveLock::Guard; my $lock = ExclusiveLock::Guard->>new('/tmp/megazaru.lock'); って書くだけで $lock が生きてる間はロックかかってて、ロック外れたらファイルも一緒に消してくれるというだけの物。 ノンブロッキングなインターフェィスが欲しければ use E

    fbis
    fbis 2012/11/12
  • YappoLogs: Mooseを使うべきでない理由とMooseを使う理由

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

  • YappoLogs: Data::Model っていう ORM みたいの CPAN にあげたよ

    Data::Model っていう ORM みたいの CPAN にあげたよ あざーす。循環参照しすぎるとバターになる。。なんでそんなに人の目を気にするのだろうと、マジレス。 早速ですが Data::Model っていう O/Rマッパー 的な物を CPAN にあげました。 Data::Model http://github.com/yappo/p5-Data-Model/tree/master 元来は MVC モデルで言う所の Model を一括でまかなえるつもりで実装していますが、ロジック処理は普通の Perl のクラスで書いちゃった方が潰しが聞くため、主にストレージを Perl のオブジェクトにマッピングする ORM 的な使い方が主流となっています。 そして、 Data::Model の多くの実装や設計などは Data::ObjectDriver を参考にして開発しました。 他にも後述して

    fbis
    fbis 2009/06/11
    パフォーマンスが気になるところ。/ id:yappo thx!
  • YappoLogs: TokyoCabinetがPerlのHASHより遅いわけがない!

    TokyoCabinetPerlのHASHより遅いわけがない! こんにちわ!金曜日担当・Shibuya内フェアリーことYappoです。 mixi Engineers’ Blog » PerlRubyで省メモリなハッシュを使おうにて 100万件のレコードを格納した場合のメモリ使用量と処理時間を測ってみましょう。Perl(5.8.8)でテストコードを動かしたところ、以下の改善が確認できました。標準のハッシュに比べて、メモリ使用量がTCのオンメモリハッシュだと約61%、TCのオンメモリツリーだと約37%になることがわかります。処理時間に関しては157%ほどになっていますが、まあ許容範囲ですよね。といった事が書かれており、その文面の上の解説で、tieしたので、tieしてるからおせーんじゃねーの?とテストコードも見ないで呟いてたらmikioさんからtie使わないでやってるよ!とつっこんでいただき

    fbis
    fbis 2009/04/24
  • YappoLogs: HTTP::Engineの今とこれから

    HTTP::Engineの今とこれから 昨年末にHE con #1 が開催されてから久しいですが、あの前後で話題になっていた 「HTTP::Engineは依存が大杉メモリいまくり」な件に関しては、Shikaという回答を出し、その後Mouse版の0.1.1をリリースしました、 そして最近Stevanから「Any::Mooseはどうか? lang:en」と言った話も有り、現在Any::Mooseに依存した0.1.4を出すべく0.1.4_xをCPANにあげています。 クラスビルダーにMooseを使うか捨てるか論争は、0.1.4にて妥協出来る所に落ち着いたんじゃないかなと思います。 Any::MooseやMouseが細かい所で挙動が変わるかどうかは今のところわかりませんが、少なくともHTTP::Engineで採用した事により安定する方向になるんじゃないでしょうか? もちろんより高い互換性の為の変

  • YappoLogs: List::Rubyish をリリースしました

    List::Rubyish をリリースしました ブクマコメントでnaoyaさんからhttp://github.com/naoya/list-rubylike/tree/master/lib/List/RubyLike.pmがバグも無くていい奴だから、そっちとdiffとって適用したほうがいいよ!とアドバイスいただいて、その差分をmergeしつつList::RubyListのテストコードをコピペするだけの簡単なお仕事をしてテストカバレッジ率も100%になったのでshipitしました。 というかnaoyaさん & secondlife 組の元コードのテストカバレッジ率が90%くらいだったので物凄く楽出来ました^^ http://search.cpan.org/dist/List-Rubyish/にそのうち反映されるはず。 List::RubyLike は use すると list 関数を exp

    fbis
    fbis 2008/10/15
    GJ!
  • YappoLogs: List::Rubyish - hatena の DBIx::MoCo から fork した

    List::Rubyish - hatenaDBIx::MoCo から fork した DBIx::MoCoというhatena謹製のO/Rマッパは有名ですが、DBIx::MoCo::ListというRubyっぽいリスト操作を行ってくれるモジュールがあります。 概要はPerl のリスト操作を Ruby 風に - naoyaのはてなダイアリーが詳しいです。 DBIx::MoCo::ListはautoboxじゃないのにList::UtilやList::MoreUtilsを活用して実装してあります。 ちょっとしたリスト操作には使い勝手が良さそうなのですが、最大の欠点があります。 それはDBIx::MoCoに含まれるモジュールだという事です。DBIx::MoCoごと入れろと言われたらおしまいですが>< 実はDBIx::MoCo::ListはDBIx::MoCoの他のモジュールに依存する箇所がどこ

    fbis
    fbis 2008/10/14
  • YappoLogs: Module::Setup - pmsetupをモジュール化した

    Module::Setup - pmsetupをモジュール化した Perlのモジュールをまず最初に作る時はpmsetupやModule::Starterなどを使うのが一般的です。 かく言う余もpmsetupでガリガリ書いてたんですが、はこべさんやらdannさんやらの最近の記事を見て思う所もあってpmsetupをモジュール化してみました。 http://svn.coderepos.org/share/lang/perl/Module-Setup/trunk/ 使い方は簡単!cpan Module::Setupでinstallして(まだCPANにあげてないよ!) $ module-setup Foo:Bar を実行するだけ! ほぼpmsetupと同等の挙動でひな形を作ってくれます。あらべんり! これだけじゃまったく意味が無いのでModule::Setupらしい所を。。。 flavor Modu

    fbis
    fbis 2008/10/02
  • YappoLogs: ひどいプラグマ

    ひどいプラグマ miyagawaさんに教えてもらったhttp://juerd.nl/files/slides/2006yapceu/undef.htmlこれを見て驚愕したので。 package undef; use strict; use warnings; my $undef = undef; sub import { Internals::SvREADONLY(${\undef}, 0); } sub reset { Internals::SvREADONLY(${\undef}, 0); undef = $undef; Internals::SvREADONLY(${\undef}, 1); } 1;こんなのを作った。 使い方use strict; use warnings; warn "not" unless undef; use undef; warn "not" unless

    fbis
    fbis 2008/06/27
  • YappoLogs: Internals::SvREADONLY

    Internals::SvREADONLY 404 Blog Not Found:perl - Const released -- True Readonly 実は、Perl 5.8以降では、Internals::SvREADONLY()という関数がuseなしで使えるようになっていて、Internals::SvREADONLY($scalar, 1)で$scalarをREADONLY flagをonに、Internals::SvREADONLY($scalar, 0)でoffにできます。知らなかった! SvREADONLYはwakaponが解説してるよ! これは universal.c にて実装されていて、使い方は lib/Internals.t を見るべし。 Hash::Utilでも使われてるよ。 danさんの ただし、これではscalarしかflagをいじれません。というわけで、同様の

    fbis
    fbis 2008/06/27
  • YappoLogs: perl-users.jp というサイトを立ち上げました

    perl-users.jp というサイトを立ち上げました perl-users.jp - 日Perlユーザのためのハブサイト YAPC::Asia 2008 で Michael Schwern は「SEOに有効な独自ドメインを取って、もっとPerl初心者が集まりやすいniceなPerlの情報を集めたサイトを作れ!」といったのでperl- users.jpドメインを取って、ここにperl-users.jpを開始します。 以前よりShibuya.pm界隈では、初心者や複雑なPerlの話題をキャッチアップ出来ないPerl利用者をどうすくい上げるか、という議論を盛んに行って降りました。 Schwern の言う通り perl で検索してもなかなかいい情報にたどり着けなかったりと、それは酷い現状をどうにかしたい思いはYAPC::Asia 2008 のスピーカー陣共通の思いだと思っています。 といっ

    fbis
    fbis 2008/05/20
  • YappoLogs: antipopが入社してきた

    « HTTP::Engine - Perl版 WSGI のような物、 Catalyst::Engine を抜き出したような物 | Main | Moose のコードを探索して理解を深めた » antipopが入社してきた はてなに入社しました - antipop 突然ですが、5/1付でアプリケーションエンジニアとして、はてなに入社しました。これまでは、鹿児島県の奄美大島というところに住んでいましたが、これからは京都オフィス勤務です。これまでユーザとして、はてなの各サービスを愛用していたわけですが、今後は作る側からよりよいものにしていきたいと思っています。今後ともよろしくお願いいたします。 なんか隣の席ではたらいてるお! Posted by Yappo at 2008年05月02日 20:16 | TrackBack | 適当

    fbis
    fbis 2008/05/03
    ちょw
  • YappoLogs: ウェブエンジニアをしていて知らないと恥ずかしい日本人プログラマ300

    ウェブエンジニアをしていて知らないと恥ずかしい日人プログラマ300 ウェブ関係で仕事をしていて知らないと恥ずかしい日人100があまりにあんまりでブクマするのも恥ずかしいので、日のWeb周りでエンジニア(特にプログラマかな)で知らないと恥ずかしい日のプログラマ(主にWebに関わる的な意味で)100人のリストを作ろうと思う。 今のところ目標の1割くらいリストアップ出来た。まだまだ足りないのでもっと追加する。 14時: いっぱい追加 OPML化はerogeekがやってくれると思うのでOPML作ったよエントリを発見し次第リンクします。 OPML ktkr! yusukebe++ ゆーすけべー日記: ウェブエンジニア(略)と恥ずかしい日人プログラマ300のブログを列挙祭り 以下敬称略順不同 yoshiori - java-ja ats - Python ひがやすお - Java 羽生章洋

    fbis
    fbis 2008/04/14
    ゴゴゴゴゴゴゴゴゴ!
  • YappoLogs: Class::Component 0.11 リリースのお知らせ

    Class::Component 0.11 リリースのお知らせ Class::Component使ってるアプリはPluginで使える独自のAttributeを簡単に実装できるわけですが、そのときはattributeへの引数的な物が使えるのですね。 sub migi : Karada ('hikisuu') {}ってやればhikisuuって値が取れます。 しかしこれは、引数が一つのみの場合しか想定していなくてsub migi : Karada ('hikisuu', 'ippai') {}ってやるとhikisuu', 'ippaiになってしまってひじょーに悲しいです。 何でかって言うと、この部分はCatalystから略な感じだったので、もうちょっと使い勝手良くしたいよ!という事で、attributeへの引数の使い勝手が良い事で有名なAttribute::Handlerから盗んできました。 こ

    fbis
    fbis 2008/04/02
  • YappoLogs: 誰でも簡単にOpenID 2.0なOPを作る方法 and CodeReposでOpenID(2.0対応)プロバイダの提供始めましたのお知らせ

    誰でも簡単にOpenID 2.0なOPを作る方法 and CodeReposでOpenID(2.0対応)プロバイダの提供始めましたのお知らせ 先週のbuilder techtalkから俄然としてOpenIDが熱くなって来た今日この頃いかがお過ごしでしょうか。 先日参加して来たOpenID Hackathonの成果として、CodeReposがOpenIDのOpenID 2.0 Providerになりましたことをお知らせします。 CodeReposのアカウントをお持ちの方は、fastladderとかLIMLICとかのOpenIDでサインオンできるサービでOpenID URLをcoderepos.orgとだけ打ち込んでログインしてみて下さい。 2.0に対応していない所だったらhttp://coderepos.org/share/wiki/Committers/usernameとでも入れればいいと

  • YappoLogs: そろそろはてな京都移転について一言いっておくか

    « デブサミ2008の発表資料、MacでバランスWiiボードのデータを取れるコードとプレゼンツールPlusenの公開 | Main | 誰でも簡単にOpenID 2.0なOPを作る方法 and CodeReposでOpenID(2.0対応)プロバイダの提供始めましたのお知らせ » そろそろはてな京都移転について一言いっておくか 朕は征夷大将軍の職に就いているわけだが、電文によると「はてな」という蛮族集団の頭領が南蛮より帰国し魔羅という疾風の如き妖怪を軍門に引き連れて京へ上洛を目論んでいるというではないか。 この「はてな」という蛮族の頭領の慈衛近藤という輩は珍妙な発明ばかりをしていて周囲の国々から渋谷の大うつけと言われていると聞いている。そのような珍妙な頭領ならば朕の征夷大将軍を座を奪う為に上洛すると考えるのが筋が通ろう。 征夷大将軍の名にかけて「はてな」の上洛を阻止し朕の征夷大将軍の座を守

    fbis
    fbis 2008/02/19
  • http://blog.yappo.jp/yappo/archives/000559.html

  • YappoLogs: LvalueなAccessorのベンチマーク

    LvalueなAccessorのベンチマーク 空前のlvalue期に突入したので、lvalueなアクセサを作れるClass::Accessor::LvalueとClass::Accessor::Lvalue::Fastを比較したベンチマーク取ってみました。 package Tied; use strict; use warnings; use base 'Class::Accessor::Lvalue'; __PACKAGE__->mk_accessors(qw/ a b /); 1; package Tied; use strict; use warnings; use base 'Class::Accessor::Lvalue::Fast'; __PACKAGE__->mk_accessors(qw/ a b /); 1; bench.pl use strict; use warnin

    fbis
    fbis 2008/01/11
    tie使ってたんだ/ちなみのその他のAccessorベンチのまとめ→http://e8y.net/blog/2006/05/26/p120.html
  • YappoLogs: Perlで数有る$selfを取る手法をベンチマーク取った

    Perlで数有る$selfを取る手法をベンチマーク取った PerlでOOなコード書く時のコンテキストを取る方法は色々あります、最近audreyがselfvarsをリリースしたので、gugodのself.pmとingyのSpiffyそして、既存のmy $self = shift;やshift->や$_[0]->で$selfを取る方法それぞれのベンチマークを取ってみました。 テストコードのモジュール名は、それぞれのモジュールの作者名から取り、既存の手法はYAPC::Asiaでプレゼンした事のある日を代表するPerlな企業のCTOからモジュール名を取らせていただきました。 コードは以下の通りです。 package Audrey; use strict; use warnings; use selfvars; sub new { bless { count => 0 }, shift } sub