タグ

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

  • Kazuho@Cybozu Labs: Text::MicroTemplate - テンプレートエンジンのセキュリティと利便性

    « MySQL の order by 〜 limit を高速化する方法 | メイン | MySQL Conference & Expo 2009 で Q4M の話をします » 2008年12月16日 Text::MicroTemplate - テンプレートエンジンのセキュリティと利便性 先月開催された Shibuya.pm #10 でプレゼンテーションがあった MENTA や NanoA では、Mojo 由来のテンプレートエンジンを拡張して使用してきたのですが、Perl モジュールとして独立させるべきだよね、ということになり、このたび Text::MicroTemplate として CPAN にアップロードしました。 そのことを告知するとともに、作業の過程で興味深く感じた、テンプレートエンジンのセキュリティと利便性に関する話題をブログに書いておこうと思います。 テンプレートエンジンのエスケ

  • Kazuho@Cybozu Labs: ウェブサービスにおける SSD 導入にむけて〜検索サービスの可能性

    « Filter::SQL でデータベースを叩くワンライナーを簡単に書く方法 | メイン | ウェブサービスにおけるダメージコントロール (MySQL のスロークエリを自動的に kill する方法) » 2008年10月28日 ウェブサービスにおける SSD 導入にむけて〜検索サービスの可能性 実際に試してみた結果については、ウェブサービスの SSD 化について話してきましたをご参照ください。 検索エンジンや小さな行が多いデータベース等で使用する目的での SSD (Intel X25-M) のベンチマーク結果については、Kazuho at Work: Benchmarking SSD for MySQL をご覧ください (InnoDB の話をしていますが、Senna / Tritonn でも基的に同じ) Sun が SSD 製品の投入を表明 (マイコミジャーナル) したり、Google

  • Kazuho@Cybozu Labs: キャッシュの上手な使い方

    « C-0.05 | メイン | cygwin + mod_perl » 2006年02月08日 キャッシュの上手な使い方 キャッシュといっても、ウェブブラウザやウェブプロキシのキャッシュのことです。 ・Internet Explorer のキャッシュの動作 Internet Explorer は、同一ウィンドウ内で複数回同じウェブページを読み込む場合、2回目以降はキャッシュのデータを使用します (デフォルト設定の場合、 Last-Modified または Expires ヘッダがついている場合のみ)。 つまり、同じウィンドウの中で、 ページA を読み、次にページB を読み、そしてページA を再び読み込むようなケースでは、2回目にページ A を表示する際にはキャッシュのデータが使用され、ウェブサーバへの再問い合わせは行われません。 また、 Last-Modified ヘッダと Expire

  • Kazuho@Cybozu Labs: DNS ラウンドロビンと高可用性 (High Availability)

    « brainf*ck でマジメに素数探索 | メイン | Brainf*ck で動的リスト » 2006年06月29日 DNS ラウンドロビンと高可用性 (High Availability) ウノウラボ Unoh Labs - ベンチャー流サーバ構築のススメ(ネットワーク編) について。 おもしろく読ませていただきました。また、監視系を導入せずに自律的に動作させようという発想も大好きです。 でも、 DNSは各回線の内側に設置しておきます。例えば上図のような場合、回線A側のDNSは回線AのIPアドレスを返すようにして、回線B側のDNSは回線BのIPアドレスを返すようにします。こうするとどちらかの回線が切れたときは切れたほうの回線のDNSにアクセスできなくなるので、自動的に生きている方の回線に接続されるようになります。 (ウノウラボ Unoh Labs - ベンチャー流サーバ構築のススメ(

  • Kazuho@Cybozu Labs: setTimeout をオブジェクト指向にしてみる

    « Japanize - Opera9に対応しました | メイン | Firefox Developers Conference での質疑応答メモ » 2006年12月14日 setTimeout をオブジェクト指向にしてみる setTimeout と setInterval が window オブジェクトのプロパティなのは、それがブラウザの機能であって言語処理系自体の機能でないことを考えれば当然だと思います。しかし、それがゆえかに、this が引き継げなかったり、IE では引数が渡せなかったりといった不便があります。どうせだったら、こうなっていたらよかったのにね、ということで、Function.prototype をイジってみました。すでにありそうなネタですが (苦笑) Function.prototype.applyTimeout = function (ms, self, args)

  • Erlang で分散してみたくて倉庫番solver (nakatani @ cybozu labs)

    Erlang の「軽量プロセス間の非同期 tuple メッセージのやりとりによる分散」というのが今やっていることの色々参考になるんじゃないかという気がして、少し勉強ということで "Programming Erlang" http://pragmaticprogrammer.com/titles/jaerlang/index.html をせっせと読んでみました。 #Erlang のメッセージは別に tuple じゃなくてもなんでも送れます。一応念のため。 いきなり余談。"Programming Erlang" の書籍版はまだ出てないんですが、直販で $45.95、amazon.com だと $36.95 なのに、amazon.co.jp だと ¥7264 もするのはなぜ!? まあ、PDF版 ( $22.50 ) を買ったので関係ないんですが。 ちなみに、PDF 版を購入すると特典として「全ペ

  • TAKESAKO @ Yet another Cybozu Labs: ニコニコ動画勉強会に行ってきました

    日ドワンゴさんの会議室にてこっそり開催されたニコニコ動画勉強会に参加してきました。 日の動画コメントサービス「ニコニコ動画」の裏側をドワンゴの開発者の方から 直接お話しを聞いて、参加者も一緒に意見交換ができる非常に面白い勉強会でした。 ドワンゴさんとしては会社で行なう技術者向けの勉強会初めての試みということもあり、 まずは開発者の知り合いベースで声をかけあって少人数で開催することにしたそうです。 六木のクラブの人や、バイナリカンファレンスでご一緒した人とこんなところで お会いできるとは思っていませんで、さまに想定の範囲外でした。 その甲斐あって密度の濃い話ができたと思います。 以下、自分用のメモを公開できる範囲で書きます。間違っていたらすみません。(ご指摘いただければすぐに訂正します) ■ニコニコ動画の苦労話 (Sさん) ニコニコ動画の歴史 2006年10月 一人でプロトタイプを開発

    matsutakegohan1
    matsutakegohan1 2008/06/30
    [][][dev][development][flash][MySQL][php][presentation][scalability][server][system][webservice][nicovideo][movie]
  • Kazuho@Cybozu Labs: ウェブサービスのためのMutex - KeyedMutex

    « キャッシュシステムの Thundering Herd 問題 | メイン | DBI::Printf - A Yet Another Prepared Statement » 2007年09月27日 ウェブサービスのためのMutex - KeyedMutex 昨日、以下のように書いたのですが、両者のうち2番目のアプローチを実現する Perl モジュール KeyedMutex を作成しました。 サーバにおける Thundering Herd 問題は良く知られていると思いますが、類似の現象はキャッシュシステムでも発生することがあります。 (中略) 対策としては、以下の2種類の手段があります。 バックエンドへの同一リクエストを束ねるような仕組みを実装する エクスパイヤ以前の残存時間が一定以下となった段階で、キャッシュエントリのアップデートを開始する これらの手法には、それぞれメリットとデメリッ

  • Kazuho@Cybozu Labs: キャッシュシステムの Thundering Herd 問題

    « MySQL の高速化プチBK | メイン | ウェブサービスのためのMutex - KeyedMutex » 2007年09月26日 キャッシュシステムの Thundering Herd 問題 サーバにおける Thundering Herd 問題注1は良く知られていると思いますが、類似の現象はキャッシュシステムでも発生することがあります注2。 通常、キャッシュに格納されるデータは、それぞれ単一の生存時間をもっています。問題は、頻繁にアクセスされるキャッシュデータがエクスパイアした際に発生します。データがエクスパイヤした瞬間から、並行に走る複数のアプリケーションロジックがミスヒットを検知し、いずれかのプロセスがキャッシュデータを格納するまでの間、同一のリクエストが多数、バックエンドに飛んでしまうのです。 対策としては、以下の2種類の手段があります。 バックエンドへの同一リクエストを束ねる

  • TAKESAKO @ Yet another Cybozu Labs: [訂正] Webプログラミング実力アップ Part1 正しいPerl/CGIの書き方:ITpro

    2007/11/14 追記: Module-Starter-1.470 のバージョンアップによって、下記不具合は解消されました。 記事中の手順で問題なく module-starter が使えるようになっています。 以前、日経ソフトウエア2007.03(1月24日発売)に書いた特集記事が Webプログラミング実力アップ Part1 正しいPerl/CGIの書き方:ITpro ──Webプログラミング初心者からの脱出の手引き としてITpro上で公開されましたが、その間にCPANモジュールのModule-Starterのバージョンアップがあって、module-starterが動作しない例がありました。 ■ 問題点 module-starter を実行すると Unknown placeholder in Makefile.PL というエラーが出る。 http://b.hatena.ne.jp/k

  • CAPTCHA解読ソフトの価格表に見るCAPTCHAのレベル差 | 秋元@サイボウズラボ・プログラマー・ブログ

    via del.icio.us/popular Coding Horrorブログの記事Has CAPTCHA Been “Broken”?(CAPTCHAは破られたか?)では、CAPTCHAの解読ツールに値段をつけて売っている中国の業者の価格表を紹介していて、これが面白い。 CAPTCHA用の文字列画像を作るときは、文字を画像化したり、色をつけたり、線を引いたり、無関係な点や図形を足したり、湾曲させたり、と、いろいろな加工で「人には読めるけど機械には読めない」ように作るわけだが、この価格表では、単純なCAPTCHAで彼らの販売するツールで読み取れる可能性が高いものほど値段が安くなっているし、彼らのツールでは読み取れてない場合も多いような難しいものについては、ツールの値段も高くなっている。 この価格表で図らずも、いろいろな大手サイト(主に英語中国語でのサイト)が使っているCAPTCHA図形

    CAPTCHA解読ソフトの価格表に見るCAPTCHAのレベル差 | 秋元@サイボウズラボ・プログラマー・ブログ
  • Kazuho@Cybozu Labs: Q4M - MySQL 上で動作するメッセージキュー

    « ウェブアプリケーションにおけるHDDの正しい使い方 | メイン | Pathtraq リニューアルのおしらせ (リアルタイム検索機能の追加ほか) » 2008年01月15日 Q4M - MySQL 上で動作するメッセージキュー 数年来ずっと「RDBMSに統合されたメッセージキューがほしい」と言ってきたわけですが、昨年末にストレージエンジンをプラグインとして開発できる MySQL 5.1 が RC になっていることに気づき、自分で作ってみました。 Q4M (Queue for MySQL) は MySQL 5.1 のプラガブル・ストレージ・エンジンとして動作するメッセージキューであり、堅牢・高速・柔軟であるよう設計されています。昨年12月遅くに開発が開始され、まだ非常に原始的ですが、かなり高速に動作します。 q4m.31tools.com 自分の英語を日語訳するというのも変なものですが

  • Kazuho@Cybozu Labs: C++ テンプレートで(いまさら)FizzBuzz

    « Filter::SQL を使って掲示板を書いてみました | メイン | C++ テンプレートを使って高速な高機能サーバを書く方法 » 2008年04月17日 C++ テンプレートで(いまさら)FizzBuzz re C++テンプレートでFizzBuzz - おびなたのはてな日記 C++ テンプレートで if を定義しているのは面白いと思いましたが、一方で FizzBuzz を実現するためのコードとして見た場合は冗長じゃないかと思ったので、自分でも書いてみました。こんな感じ。 #include <iostream> using namespace std; template<int N, int Mod3=N%3, int Mod5=N%5> struct Print { Print() { cout << N << endl; } }; template<int N> struct P

    matsutakegohan1
    matsutakegohan1 2008/06/30
    [][][programming][template][tips]このキモさがたまらない
  • 1