タグ

ブックマーク / labs.cybozu.co.jp (8)

  • Kazuho@Cybozu Labs: Filter::SQL でデータベースを叩くワンライナーを簡単に書く方法

    « Greasemetal 0.2 をリリースしました | メイン | ウェブサービスにおける SSD 導入にむけて〜検索サービスの可能性 » 2008年10月17日 Filter::SQL でデータベースを叩くワンライナーを簡単に書く方法 PerlSQL を使ってワンライナーを書くことが多いのですが、いろいろ面倒なことが多かったので、以前作成したお気に入りのモジュール Filter::SQL を改良してみました。 DSL (ドメイン固有言語) は、プログラム開発の生産性を向上させる有力な手段です。そして、よく使われる DSL の代表例が正規表現と SQL だと思うのですが、前者に比して後者を嫌いな人が多いようです。なぜだろうと思ってつぶやいたところ、「SQL はリテラルじゃないから!」という答えが tokuhirom さんから返ってきました。そういえば例えば Pro*C のように

  • Kazuho@Cybozu Labs: Parallel::Prefork - Perl でマルチプロセスなサーバを書く方法

    « Q4M (Queue for MySQL) 0.3 リリース | メイン | Q4M Version 0.4 で高速なクローラを書いてみた » 2008年04月04日 Parallel::Prefork - Perl でマルチプロセスなサーバを書く方法 Perl でマルチプロセス処理を行う場合は Parallel::ForkManager を使うというのが定番かと思います。しかし、このモジュールはシグナル処理を前提とした作りになっていない注1ため、シグナルを受信するまで動き続けるようなサーバを書きづらい、という問題がありました。 そこで、Parallel::ForkManager の API は、ほぼそのままに、シグナル処理が可能なプロセス管理モジュールを作ることにしました。それが Parallel::Prefork です。Parallel::Prefork を使うことで、Gracef

  • Kazuho@Cybozu Labs: setlock を使って cron をぶんまわす方法

    « データベースをコピーするモジュール DBIx::Replicate | メイン | Tritonn (MySQL+Senna) の join を高速化 » 2008年01月30日 setlock を使って cron をぶんまわす方法 事前計算や DB 再構築を手軽に実行するのに cron は便利ですが、タスクのまわし過ぎによるサービスのパフォーマンス低下や実行順序の制御を別途行う必要があります。自分は、そのためのツールとして、daemontools の setlock コマンドがお気に入りです。setlock は、flock を用いて、タスクの待機や実行中止を制御することのできる、とても小回りのきくプログラムです。 1-59/* * * * * /usr/local/bin/setlock -nx /tmp/precompute.lock /usr/local/bin/setlock

  • TAKESAKO @ Yet another Cybozu Labs: Operaでも非同期リクエストが並列処理できる img-JSONP

    先日金床さんに教えてもらったOperaで非同期並列JSONPを実行させる方法を実際に試してみたら意外とすんなり動いてしまったので報告します。 最速インターフェース研究会 :: OperaでJSONPを非同期リクエストするより JSONP が Opera だと非同期処理できない http://d.hatena.ne.jp/secondlife/20060906/1157515075 に書かれているとおりOperaだとscript要素を足した瞬間にJavaScriptの実行が止まって、ロード完了まで後続のスクリプトが実行されなくなります。 サンプルコード 改善前(普通のJSONP) Operaはスクリプトを追加するとタイマーが止まる(サンプルページ) http://la.ma.la/misc/js/opera_jsonp_test.html function test(){ var s = d

    fn7
    fn7 2007/11/14
    すごい、けどこんな方法取らないで良くなるといいなぁ
  • Kazuho@Cybozu Labs: Perl で並列処理 (using マルチプロセス)

    « DBI::Printf - A Yet Another Prepared Statement | メイン | DBIx::Printf と LIKE 式 » 2007年10月02日 Perl で並列処理 (using マルチプロセス) Shibuya.pm で牧さんが Gungho の話をされたそうで、スライドを拝見しました。Pathtraq への言及もあってうれしい。 で、スライドを読んでいて、HTTP アクセスと HTML 解析/保存処理を分離すべき、となっている点が気になりました。実は Pathtraq (のうち奥が書いている部分) では、Gungho と HTML の解析/保存処理を分離することはしていません。そのかわり、複数のワーカープロセスを駆動することで、スループットを確保しています。分離モデルとマルチプロセスモデル、どちらの手法を採るべきかは、解析/保存処理の重さやエラ

    fn7
    fn7 2007/10/03
    perl fork
  • Kazuho@Cybozu Labs: Perl の正規表現が破壊的でイヤだなと思った件

    « Japanize インストール済の Safari で apple.com/downloads にアクセスすると落ちる件 | メイン | swifty - 高速な共有メモリキャッシュ » 2007年07月18日 Perl の正規表現が破壊的でイヤだなと思った件 いちいち変数定義して、 my $s = "Hello, World\n"; $s =~ s/Hello/Goodbye/; print $s; とか書くのにあきてきたので、 sub ndes (&@) { my $code = shift; my @a = map { local $_ = $_; $code->(); $_; } @_; wantarray ? @a : $a[0]; } と、まとめてみました。これで、 print ndes { s/Hello/Goodbye/ } "Hello, World\n" とするだけで

    fn7
    fn7 2007/07/18
    こんな書き方できたんだー
  • kamo from scratch: dd_rescueでバックアップ

    社内の共有サーバのディスクが壊れて、一部読み書きできないセクタがあるようなので、注文した交換用のディスクが届くのを待つ間に、Linuxのdd_rescueを使ってバックアップをとることにしました。 dd_rescueはディスクイメージをそのままコピーするddとほぼ同じ機能を持つコマンドで、とくにエラーが出る可能性があるディスクからデータを取り出すために、 ・エラーセクタがあっても、コピーを続行できる(これは、ddのconv=noerrorオプションに相当する機能です) ・ファイルの後ろから順にコピーすることができる ・現在の進捗やエラーの発生回数の詳細な表示ができる などの機能が強化されているものです。 たとえば、/dev/sdaの10Gバイト目から1Gバイト分のバックアップをとりたい場合は、次のようにします。 -A オプションは、エラーセクタ部分はゼロで埋める(ddのconv=syncに

    fn7
    fn7 2007/04/18
    進捗が見れるし標準出力に出せる。これはスゴイ
  • Kazuho@Cybozu Labs: JavaScript の文字列定数でエスケープが必要な文字

    IE、 Firefox、 Safari ともに ECMAScript の仕様を満たしていません。IE6 は ECMAScript の仕様に対して上位互換だと言えるでしょうから、実質的に問題を抱えているのは Firefox のみ、ということになるのでしょうか。JSON を使う際には、注意が必要、と。 Firefox に関して言えば、 (Control Character があるとエラーになるのではなく読み落とすという性質からして) 仕様ではなくバグだと考えるのが妥当なのかなと思いました。 参考: テストコード 10:28 追記: NUL 文字について表に含めるのを忘れていたので追加しました 10:48 追記: Safari を追加 2009/02/17 追記: Firefox のバグは 2008 年 8 月に修正されたようです (ChangeLog の3.147)

    fn7
    fn7 2006/11/07
    こんなに違うとは、、、
  • 1