タグ

2009年9月26日のブックマーク (6件)

  • DBIx::Skinnyを使った際のPaging方法考察 - Hatena::Diary::Neko::kak 500 Internal Server Error

    DBIx::Skinnyにはネイティブにpagingをしてくれる便利機能はありません。 (最近ないないばっかり言ってるな) DBICとかだと$rs->pagerみたいにしてData::Pageのオブジェクトを返してくれるんですが、 Data::Pageのオブジェクトを作る際に、内部でcountを発行しています。 pagingするにはSQLにLIMIT/OFFSETをかけてると、思うのでLIMIT/OFFSETを掛けなかった際の トータルな件数を取るためですね。 結構このcountが馬鹿にならないくらい内部で発行されることがあるのでSkinnyではあえてサポートしなかったです。 あと、独自にSQLを書かせる事をお題目にあげているので、 独自に書かれたSQLを内部でごちゃごちゃしてcount発行するとかヤッテラレナイてのもあります。 ただ、アプリを作ってる時にpagingは必須なのでどうすれば

    DBIx::Skinnyを使った際のPaging方法考察 - Hatena::Diary::Neko::kak 500 Internal Server Error
  • DBIx::Skinnyを使った際のCache方法考察 - Hatena::Diary::Neko::kak 500 Internal Server Error

    DBIx::SkinnyにはDODやData::Modelのようにキャッシュを透過的に扱う 便利機能はありません。 無いのでラッパーを書きませう。 毎度の事でデモは http://github.com/nekokak/p5-dbix-skinny-sample/tree/master/cache/ に置いてあります。 ユーザテーブルがあるとします。 CREATE TABLE user ( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255) NOT NULL, UNIQUE(name) ); ユーザの情報をキャッシュからひけなければDBから引っ張って キャッシュしておき、次に使う時はキャッシュデータを使うという典型的なパターンです。 userテーブルの定義などはこのようにします。 今回はinflate/deflateも一緒にやってみ

    DBIx::Skinnyを使った際のCache方法考察 - Hatena::Diary::Neko::kak 500 Internal Server Error
  • DBIx::Skinnyを使った際のDBShardingの方法考察 - Hatena::Diary::Neko::kak 500 Internal Server Error

    DBIx::SkinnyはDBIへの薄いラッパーなので ネイティブにDBShardingをサポートはしていません。 また、Shardingに限らずSlaveに勝手につないだりしてくれる便利機能もありません。 ただ、ShardingとかSlaveにつないだりはしたくなる事が有ると思うので、 サンプルコードを書いてみました。 サンプルコードはgithubにあります。 http://github.com/nekokak/p5-dbix-skinny-sample ただ、この記事を書いている時点ではgithubがぶっ壊れてるぽくcloneできません。:( 無料で使わせていただいているので文句は言えませんが。 サンプルコードでは DBIx::ShardManagerをつかってみました。 http://svn.coderepos.org/share/lang/perl/DBIx-ShardManage

    DBIx::Skinnyを使った際のDBShardingの方法考察 - Hatena::Diary::Neko::kak 500 Internal Server Error
  • jQuery Effects のまとめ

    jQuery UI アニメーションエフェクトのまとめ(サンプルをクリックでアニメーション) サンプル エフェクト オプション 説明

  • ArduinoとAnyEventを使って,モールス信号でSOS ! - file-glob こと k.daibaの日記

    AnyEventでタイマー YAPC::Asiaでの宮川さんの発表を聞いて perl -MAnyEvent -le ' map{ $i = $_; my $c = AnyEvent->condvar; my $w; $w = AnyEvent->timer( after => $i, cb => sub {$w; print "OK"; $c->send}); $c->recv }(0.1,0.5,1,2,0.1)' なんてワンライナーで簡単なタイマーを作れる事を知りました.それで思いついたのがモールス信号,テキストを入力すると何かちかちかと点滅するものを作ってみようと思いました.まず,CPANでMorseをキーワードにして検索してみたところ,モジュールはいくつかでてきましたが,テキストを短点('-')と長点('ー')に変換するものばかりで,長点が短点の何倍の時間なのかなんてことはわかりま

    ArduinoとAnyEventを使って,モールス信号でSOS ! - file-glob こと k.daibaの日記
    kamipo
    kamipo 2009/09/26
  • マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー

    また Linux カーネルの話です。 Linux では fork によるマルチプロセスと、pthread によるマルチスレッドでの並行処理を比較した場合、後者の方がコストが低く高速と言われます。「スレッドはメモリ空間を共有するので、マルチプロセスとは異なりコンテキストスイッチ時にメモリ空間の切り替えを省略できる。切り替えに伴うオーバーヘッドが少ない。」というのが FAQ の答えかと思います。 が「オーバーヘッドが少ない」と一言にいわれても具体的にどういうことなのかがイメージできません。そこで Linux のスレッド周りの実装を見て見ようじゃないか、というのが今回のテーマです。 3分でわかる(?) マルチプロセスとマルチスレッド まずはうんちく。マルチプロセスとマルチスレッドの違いの図。以前に社内で勉強会をしたときに作った資料にちょうど良いのがあったので掲載します。Pthreadsプログラミ

    マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー