タグ

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

  • 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: GrowthForecast ノススメ

    GrowthForecast ノススメ みなさん管理画面毎にグラフ作ってませんか?作るのめんどくさくて数値の表だけだして、直感的にサービスの動向掴みにくいとおもっていませんか? Google スプレッドシートの機能でグラフだせるからいいよ?とかいってませんか? Google スプレッドシートに吐かせる方法より簡単にグラフが作れたらいいとおもいませんか? 遂に GrowthForecastというグラフ表示ツールで捗る話 - blog.nomadscafe.jp リリースされたので、早速僕が GrowthForecast をどんな感じで紹介しようと思いますが、なんか忙しいので便利ツールだけ紹介します。 https://github.com/yappo/grouthforecast-worker こういうツールを使っているので、グラフ追加したい時にいちいちある程度のボリュームのあるコードとか書か

    oinume
    oinume 2011/12/01
    coolすぎる
  • YappoLogs: App::Ikachan - 様々なサーバのバッチ処理の結果等を IRC のチャンネルに通知するサーバ

    App::Ikachan - 様々なサーバのバッチ処理の結果等を IRC のチャンネルに通知するサーバ 皆さんは、日々のお仕事の中で様々なバッチ処理やデプロイツールまたはCIツールを動かすと思います。 一般的なネット系のエンジニア仕事のコミュニケーション手段として IRC を用いているというのが有名ですが、これらバッチ処理の処理状況等を普段の生活環境である IRC に流せたら便利です。 実際に前の会社では、 deploy tool, ci tool, etc batch script の処理結果を社内 IRC channel に通知するような物を hirose31 さんが作ってくれて、とても便利でございました。 とはいえ、各種スクリプトが独自に IRC server に繋ぎに行く事は大げさですし、バッチが走る都度 join/part されたらうざいです。 そこで前の会社では、 IRC s

  • YappoLogs: kumofs での Data::Model の使い方

    kumofs での Data::Model の使い方 スケート頑張りすぎて足首が痛いYappoですみなさまウインタースポーチュしてますか? 日kumofsが公開されたので、折角なので Data::Model から kumofs を実際にどうつかっているかを紹介しようかとおもいます。 kumofs については 分散Key-Valueストア「kumofs」を公開しました! - 古橋貞之の日記 を Data::Model::Driver::Memcached については dann さんによる Data::Model::Driver::Memcachedで超効率データ保存 - JPerl Advent Calendar 2009 を別途参照すると良いでしょう。 スキーマ定義 では実際に kumofs をつかった場合のスキーマ定義を下記に貼ります。 ちなみに、それらしいような定義をしてますが全部フ

  • 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

    oinume
    oinume 2009/08/23
    newの速い書き方
  • 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使わないでやってるよ!とつっこんでいただき

  • YappoLogs: mod_proxy_balancerのretryの件

    mod_proxy_balancerのretryの件 mod_proxy_balancerのretry : blog.nomadscafe.jp バックエンドのサーバが十台以上あるようなところだったらいいけれど、2~3台のサービスで間をあけずにデプロイしてしまうと下手するとサービスが数秒間、全落ちになってしまう可能性がある。 ということで、普通にretryを短く(数秒)にすればいいんじゃね。 1.balancerのマネージャにアクセスして該当のサーバをいったん外す 2. httpdの停止 3. rsync 4. httpdの開始 5.balancerのマネージャにアクセスして該当サーバを付け加える でよくね? この一連のスクリプトをバックエンドに仕込んどく感じで。 折角のmod_proxy_balancerなんだし。 うちも作ってもらわないとな。。 Posted by Yappo at 2

  • YappoLogs: Yacafi という軽量CGIフレームワーク書いたよ

    Yacafi という軽量CGIフレームワーク書いたよ MENTA というウェブアプリケーションフレームワークをかいてみた - TokuLog 改めB日記やらNanoA というウェブアプリケーションフレームワークをかいてみた - id:kazuhookuのメモ置き場やらと軽量CGIフレームワーク作りが流行ってるようなので昼飯った後に20分くらいで書いたよ。 Yacafi(Yet another CGI application framework interface)と言います。 http://svn.coderepos.org/share/lang/perl/Yacafi/trunkからsvn coできるけど、Yacafiはモジュール一個だけあれば動くようにしてあるのでhttp://svn.coderepos.org/share/lang/perl/Yacafi/trunk/lib/Yac

  • YappoLogs: HTML::StickyQuery::DoCoMoGUID - iモードIDを使いたい人に朗報

    HTML::StickyQuery::DoCoMoGUID - iモードIDを使いたい人に朗報 ふと思い立って、DoCoMoが新しく始めたiモードIDを取得するためのリンクを既存のHTMLにたいして簡単に付与出来るモジュールを書いた。 HTML::StickyQuery::DoCoMoGUIDといいます。 使い方はPOD見てね。 iモードは昔からセッションを維持するにはURLのクエリパラメータやPOSTの値にセッションIDを入れないと駄目だったのですが、先月末からクエリパラメータの中にguid=ONが入っていればRequest HEADにiモードIDを入れてくれるようになったんですね。 HTML::StickyQuery::DoCoMoGUIDは渡されたHTMLの中にAタグがあればクエリパラメータにguid=ONを追加してくれるというフィルタモジュールです。 もちろんAタグだけじゃなくてF

  • 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: 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 $

    oinume
    oinume 2007/08/03
  • 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の処理をしているそうなので、

    oinume
    oinume 2007/03/25
  • YappoLogs: Apacheで携帯キャリアのIPアドレス制限をするには

    Apacheで携帯キャリアのIPアドレス制限をするには 塩とDishuberを使えば良い。 用意するもの config.yaml cidr.tt contents.tt frame.tt 以上のファイルと最新のDishuberだけである。 それぞれのファイルの中身はとても単純。 frame.tt [% content %] contents.tt[% FOREACH cidr = meta.cidr %] [% cidr -%] [% END %] cidr.tt# [% meta.source.meta.carrier %] [% FOREACH cidr = source %] Allow from [% cidr -%] [% END %] そして config.yaml plugins: - module: Source::MobileCIDR cid: docomo config

  • 1