※Web フィードはリダイレクトされるようになっています
]]>サービスをスケールアウトする話は、意外と聞かなかったように思います。今回が初参加だったので間違っているのかもしれませんが、単純な「スケールアウトできるよね」という話ではなく、むしろ、アプリケーションデベロッパに負担をかけずにスケールアウト (もしくはスケールアップ) するデータベースを、どのように作るか、というところが盛り上がっていたように思います。一方で、クラウドコンピューティングに関しては、サービスをスケールさせる道具というよりは、(リソースの確保が)柔軟で安定したインフラストラクチャとして期待されている側面が大きいように感じました。今後は、両者をどう組み合わせていくか、というのが課題になってくるのかもしれません。
カンファレンスにおいて、私は Q4M の発表 (Q4M (and Pathtraq) at MySQL Conference & Expo 2009) を行いました。Q4M の設計方針から使い方にはじまり、事例までをカバーした (かつてない) 丁寧な資料になっていますので、Q4M を使ってみようかな、という方はごらんください。また、既にお使いいただいている皆さんには、あらためて御礼申し上げさせていただきたいと思います。事例は引き続き絶賛募集中です。
また、併催されていた Percona Performance Conference (プレゼン資料一覧) でパストラックのバックエンドに関する発表 (Running a Realtime Stats Service on MySQL) を行い、こちらも好評を得ることができ、ほっとしています。
なかなか密度が濃くてつかれましたが、充実した一週間でした。お世話になったサンマイクロシステムズの方々をはじめ皆さん、ありがとうございました。
]]>自分も今回、弾さんのモジュールを試すまで知らなかったのですが、FreeBSD では ptrace をそのような目的で使うことはできないと思います。というのは、私の理解が正しければ、linux とは異なり、FreeBSD の ptrace でシステムコールの実行を検出し PT_KILL を発行しても、そのプロセスが停止するのはシステムコールの終了直後になるからです。
具体例を挙げると、たとえば unlink(2) の実行を検出しトレース対象のプロセスを殺そうとしたところで、そのプロセスが停止するのは unlink システムコールの実行後となるため、ファイルの削除を抑制することはできません。
さらに、vfork(2) は、仕様として、生成された子プロセスが execve(2) を呼び出すか、あるいは終了するまで、システムコールの実行が完了しません (つまりそれまでトレース対象のプロセス (実際はプロセスグループなんじゃないかな) を停止できない)。その結果、ptrace によるシステムコールの監視下にあっても、
vfork(); // 以下は生成された子プロセスでのみ実行される 複数個の任意のシステムコールを含むコード ... _exit(0); // 子プロセスの終了直後に親プロセスが PT_KILL されるのような形で、任意のプログラムが実行可能となってしまいます。
以上は、手元の FreeBSD 6.3R で検証した結果ですが、最新リリースでも当該部分の動作は変わっていないのではないかと思います。
参考: Deny system call using ptrace | KernelTrap, geordi - C++ eval bot ]]>今回の変更は、唯一、linux (i386) 上において、テーブルサイズが 2GB を超えようとする際にクラッシュする問題の修正です。他の環境においては、変更はありません。
]]>なお、中で出てくる「情報は自由を欲している (Information Wants to Be Free)」というフレーズについては、情報は自由を欲しているけれど - steps to phantasienの訳を参考にさせていただきました。この場を借りて、御礼申し上げます。
PS. Greasemetal につきましては、Google Chrome 本体で userscript がサポートされる方向なので (そのほうが技術的にも筋がいい)、そちらをお使いいただきますようお願いいたします (参考: HOW TO: Install Google Chrome Greasemonkey Scripts (Windows Only) - Mashable)。
]]>「MySQL のカンファレンス」なので、運用や実装面について、相当突っ込んだ話ができそう (というかツッコミが怖い...)。自分にとってもいい成長のチャンスだと思うので、しっかり準備していきたいと思います。
]]>Using Q4M - a Message Queue Storage Engine for MySQL
Q4M is a message queue that works as a pluggable storage engine of MySQL 5.1.
Originally developed for Pathtraq (one of Japan’s largest web access stats service), the performance and stability of Q4M is highly renowned within the nation, and other organizations have started using it, including Mixi (Japan’s largest SNS provider).
In the presentation, the original developer of Q4M will explain:
so that the audiences can understand and start using Q4M to offload, modularize, stabilize web services, and/or to create loosely-coupled services using the message queue.
- the design goals and architecure of Q4M
- how to use Q4M
- various usage senarios
- real-world use cases
そのことを告知するとともに、作業の過程で興味深く感じた、テンプレートエンジンのセキュリティと利便性に関する話題をブログに書いておこうと思います。
テンプレートエンジンのエスケープ機能の歴史
]]>ふだん、しなれていない類いの話なので、うまく伝わったか、正直不安です。ただ、自分自身にとっては、何が好きなのか、何がやりたいのか、ということを改めて見つめ直すいい機会になりました。また、来場者の方々といろいろ話をできたことも、自分にとっていい刺激になったと感じています。
ですので、ご来場いただいた方々には、サイボウズに興味をもっていただいたことに対して御礼を申し上げると同時に、個人的にもありがとうございましたと、ブログで失礼ですが、お伝えしたいと思います。
当日使用したスライドはこちらになります。よろしければご覧ください。
]]>末筆となりますが、Shibuya.pm の実行委員(?)の方々、ありがとうございました&おつかれさまです。 (まだ終わってないけど ^^;)
]]>あともうひとつ話さないと。
]]>「専門技術を極め、新たな価値や技術を生み出すエンジニアの物語」というテーマで話をする、というのは気恥ずかしいものがありますが、自分が何を考えて Japanize や パストラック といったサービスを作っているのか、サイボウズ・ラボで日々働いている面白さ、楽しさといったものを伝えられればいいな、と思います。
サイボウズに興味がある学生の方には、ぜひ参加していただければと思います。来場者の皆さんと少人数でお話しさせていただくこともできるようなので、これを機会にいろいろな話ができればいいな、と楽しみにしています。
説明会の詳細については、下記の URL をごらんください。参加をお待ちしております。
% tgz2cgi.pl \ --title='MyApp インストーラー' \ --start='インストールを開始します' \ --end='インストールが終了しました。<a href="setup.cgi">次へ進む</a>' \ --delete --nph \ < myapp.tar.gz > nph-myapp-installer.cgi
このようにしてmyapp.tar.gz を展開するインストーラ nph-myapp-installer.cgi を作成することができます。上の例では、終了時のメッセージに「次へ」ボタンをつけて、展開されたパッケージの setup.cgi へユーザーを誘導しています。他のオプションは、以下のとおり。インストール終了後に自分自身を消去するモードもあります。特定のファイルが既に存在するかチェックして、見つかった場合はインストールを中止する --check-files オプションを使えば、誤って複数回実行してしまうこともありません。
$ ./tgz2cgi.pl --help Usage: ./tgz2cgi.pl [options] < package.tar.gz > installer.cgi Options: --title=title title when run as a CGI --start=msg start message --end=msg end message --nph create nph CGI --delete delete installer cgi on success --help show help
また、生成されるインストーラは、コマンドラインから直接実行することも可能です。この場合は、tar xzvf と同じ動作になります。生成されるインストーラの依存先は、perl (たぶん4以上), uudecode, tar, gzcat という、あまり時代を感じさせない、環境依存の少ない構成にしたつもりです。ぜひ、自己責任でお楽しみください。
15:41追記: uu(en|de)code は最近のディストリビューションでは標準インストールではないようなので、MIME::Base64 に変更しましたorz
]]>