タグ

ブックマーク / developer.cybozu.co.jp (17)

  • Kazuho@Cybozu Labs: Perl のテスト用に MySQL 環境を自動で構築するモジュール Test::mysqld を書いた

    ORM やウェブアプリケーション関連のライブラリなどのテストケースを書くにあたっては、 RDBMS へのアクセスが必要になります。しかし、SQLite のようなスタンドアローンのデータベースと比較すると、サーバ型データベースである MySQL に接続してテストを書くのは、既存の MySQL の権限設定やデータベース名を気にする必要があったりと、いろいろ不便です。そこで、MySQL のインスタンスをテンポラリディレクトリに自動生成し、テストが終わったら削除してくれる Perl モジュール Test::mysqld を書きました。こんな感じで使います。 use DBI; use Test::mysqld; use Test::More; my $mysqld = Test::mysqld->new( my_cnf => { 'skip-networking' => '' }, # TCP接続を

  • Kazuho@Cybozu Labs: MySQL のボトルネックを統計的に監視・解析する方法

    MySQL のチューニング、と言った場合には、サーバーパラメータの調整や EXPLAIN コマンドを利用したクエリ実行計画の最適化が話題に上ることが多いです。しかし、発行する全ての SQL について、いちいち EXPLAIN コマンドを使って確認していては、いくら時間があってもたりません。チューニングを効率的に進めるには、まず、ボトルネックとなっている SQL クエリを特定し、次にその最適化を行うべきです。 ではどのようにして、ボトルネックを特定するのか。MySQL Conference & Expo 2009 のキーノートにおいて Mark Callaghan 氏は、Google では SHOW PROCESSLIST コマンドを使った統計的アプローチを使っていると述べていらっしゃいます (参照: MySQLConf 09: Mark Callaghan, "This is Not a

  • Kazuho@Cybozu Labs: 今更 C++ で JSON パーサ「picojson」を書いたわけ

    既に mattn さんが、「Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!」で紹介してくださっています (mattn さん、アドバイス&バグ情報ありがとうございます!) が、いまさら C++ で JSON パーサを作りました。それは、以下の3点を満たすものがなかったから。 ヘッダファイル only boost 等、他の重たいライブラリに依存しない array や object が STL にマッピングされる コードは、coderepos に置いてありますので、よろしければお使いください (picojson.h)。 なお、現時点での制限事項として、 \n や \r, \uXXXX といったエスケープの処理が未実装rev. 34232 で対応しました (含サロゲートペア) 空白文字の判断基準が RFC と異なるrev. 34277 で空白と

  • Kazuho@Cybozu Labs: Pacific という名前の分散ストレージを作り始めた件

    大規模なウェブアプリケーションのボトルネックがデータベースであるという点については、多くの同意が得られるところだと思います。解決策としては、同じ種類のデータを複数の RDBMS に保存する「sharding」 (別名:アプリケーションレベルパーティショニング/レベル2分散注1) が一般的ですが、最近では、分散キーバリューストア (分散 KVS) を使おうとする試みもみられるようになってきています。 分散 KVS が RDBMS sharding に対して優れている要素としては、事前の分割設計が不要で、動的なノード追加(とそれにともなう負荷の再分散)が容易、といった点が挙げられると思います。一方で、Kai や Kumofs のような最近の実装では eventually consistent でこそ無くなってきているものの、ハッシュベースの分散 KVS は、レンジクエリができなかったり (例:

  • ペーパープロトタイピング事例集 | 秋元@サイボウズラボ・プログラマー・ブログ

    実際に動的なウェブサイトを作ってしまう前に、紙上でデザインや部品の配置、画面遷移などを確認するペーパープロトタイピングという設計技法があります。書籍もありますね。 ペーパープロトタイピング 最適なユーザインタフェースを効率よくデザインする そのペーパープロトタイピングの事例を集めたページというのがありました。たとえば次のこれは、2000年5月31日にスケッチされたtwitterのプロトタイプです。当時はstat.usという仮名で、これによるとtwitterはLiveJounal(ブログサービス)とAIM(インスタントメッセンジャー)から最初の着想を得てから実装まで5年以上の間があったことになりますね。 FlickrのPlacesページやVimeoなどのペーパープロトタイプの写真も紹介されています。 こちらは韓国のポータルサイトDaumのAjaxウェブメール開発時に行なわれた、ペーパープロト

    ペーパープロトタイピング事例集 | 秋元@サイボウズラボ・プログラマー・ブログ
  • 秋元@サイボウズラボ・プログラマー・ブログ: lightboxライブラリ37個の比較表

    写真などをページ上で強調表示する、いわゆるlightbox効果を実現するJavascript+CSSライブラリを37個も集めて、ライブラリサイズやそれぞれの機能、どのJavascriptライブラリを使っているかなどで絞り込めるようにした比較表が発表されている。 このようなUI系のライブラリを使う際には、自分が普段使っているベースライブラリとの親和性などが重要だと思うので、このような形でまとまっているとdel.icio.usで”lightbox”タグで絞り込む、といった調べ方よりも楽にライブラリが選べていい。 via del.icio.us/popular この記事は移転前の古いURLで公開された時のものですブックマークが新旧で分散している場合があります。移転前は現在とは文体が違い「である」調です。(参考)記事の内容が古くて役に立たなくなっている、という場合にはコメントやツイッターでご指摘い

    秋元@サイボウズラボ・プログラマー・ブログ: lightboxライブラリ37個の比較表
  • GoogleがHTMLフォームの送信先もインデックスすると発表 | 秋元@サイボウズラボ・プログラマー・ブログ

    張られているリンクをより多く見つける目的で、GooglebotにHTML Formを送信させて出てきたページもクロールさせる、という発表があった。 JavascriptやFlashの中から他ページへのリンクを抽出するというのは既に実施していて、今回はそれをページ上の入力フォームにも拡大するものだということ。いわゆるディープウェブ、見えないウェブといわれる領域への進出だ。 クロールされるフォームは以下のようなものに限定されるようだ。 GETメソッドであること robot.txtなどで除外指定されていないこと passwordフィールドを持たないこと user, id, accountなどのフィールドを持たないこと これらを満たすフォームに対して、クローラはいくつか適当な文字を入れてフォームを実行し、その結果新しいリンクが現れたらその先もクロール対象にする、ということ。 この方法で見つかったリ

  • WordPress用Gopherサーバ wp-gopher | 秋元@サイボウズラボ・プログラマー・ブログ

    via 忘れた 一週間ほど前に見つけて、「Gopherなんて古くて伝わらないだろう」とスルーしてたのだけれど、なぜか突然Gopherが熱くなってるようなので紹介。 wp-gopherは、PHPによるブログシステムWordPressのデータにgopherプロトコルでアクセスさせるためのGopherサーバ。Pythonで書かれている。 Firefox2ならまだgopher:プロトコルが見えるので、Firefoxの人はこのデモにアクセスすれば、このスクリプトを書いたhttp://✎.net/, Five Minutesのブログが、Gopherで読める。(それにしても、なんていうドメイン名だ) この作者、さらにIPv6でもこのGopherサーバにアクセスできるようにした(おそらくネット唯一のIPv6対応Gopher Serverだって)そうなので、アクセスできる人はそちらもどうぞ。 サーバのコード

  • yaml – CSSフレームワークライブラリとそのブラウザエディタ yaml builder | 秋元@サイボウズラボ・プログラマー・ブログ

    via Ajaxian 名前が紛らわしいのだけど、データフォーマットのYAMLとは関係ない。ドイツ製のウェブサイトレイアウトライブラリyamlは、CSSベースのマルチカラムレイアウトをマルチブラウザ対応で行なうライブラリ。 それだけだと他にもいろいろあるのだけど、特徴としてはドキュメントがすごく充実していることらしい。そのわりに知られていなかったのはドイツ語圏で開発が続けられていたかららしいが、英語のドキュメントも揃えて格的なバイリンガルプロジェクトとなったそうだ。 プレビューが公開されたばかりらしいyaml builderが良くできていて、ブラウザ上のオンラインエディタでドラッグアンドドロップでレイアウトを試すと、できあがったレイアウトを再現するHTMLCSSを入手できるというもの。 こんな風にマルチカラムを編集し、ヘッダや文などのコンテンツを置いていく。 “Get Code”を押

    yaml – CSSフレームワークライブラリとそのブラウザエディタ yaml builder | 秋元@サイボウズラボ・プログラマー・ブログ
    nitsuji
    nitsuji 2007/09/02
  • もしも神がプログラマーだったら | 秋元@サイボウズラボ・プログラマー・ブログ

    via Digg はじめに、コンピュータがあった。ユニバーサルカーネルがロードされた。神は(パスワードを間違いつつも)ログインした。コマンドを打った「光あれ」 ということで、創世記がコンピュータを使って行なわれていたら、というパロディの力作。与えた欲望を撤回したり、やり直そうとしてディスク容量が足りなくなったりと、小ネタも効いている。 この記事は移転前の古いURLで公開された時のものですブックマークが新旧で分散している場合があります。移転前は現在とは文体が違い「である」調です。(参考)記事の内容が古くて役に立たなくなっている、という場合にはコメントやツイッターでご指摘いただければ幸いです。最新の状況を調べて新しい記事を書くかもしれません

    もしも神がプログラマーだったら | 秋元@サイボウズラボ・プログラマー・ブログ
    nitsuji
    nitsuji 2007/08/09
    ながい
  • Javascriptでブロック崩しを作る手順が全公開

    via del.icio.us/popular Javascript Gamerで、BrickslayerというJavascriptで作ったブロック崩しゲームの作り方が公開されている。 開発環境は Firefox + Firebug + お好みのエディタ。 Javascript体は、prototype.jsベースで、スプライト表示、アニメーション処理、キーボード入力、当たり判定、(Flash経由で)効果音などについてそれぞれソースつきで解説されている。 また、ハイスコア記録のほうはPHPによるサーバ側のスクリプトがちゃんと用意されている。 まだアルファリリースということだけれど、ページ上ではブロック崩しゲームがちゃんと動いている。ソースを一括してダウンロードすることもできる。 この記事は移転前の古いURLで公開された時のものですブックマークが新旧で分散している場合があります。移転前は現在

    Javascriptでブロック崩しを作る手順が全公開
  • Yahoo! Japan WEB APIコンテストの受賞者発表 | 秋元@サイボウズラボ・プログラマー・ブログ

    先日審査会に参加させていただいた、Yahoo! Japan の WEB API コンテストの各受賞作品が発表になったのでご紹介する。 Yahoo! Japan WEB API コンテスト top ページ 受賞作品リスト 多数の応募作を一通り使って評価するのはとても大変だったが、いろいろな人のそれぞれ異なる発想に触れることができたのは、とても楽しかった。 これからマッシュアップを作ってみようと思っている方にも、受賞作や参加作品のアイデアを知ることは役に立つのではないかと思う。ぜひ見てみていただければ。 [関連] Mashupedia.jp での結果報告記事 [追記 2009.04.16 Mashupedia.jp閉鎖後 別業者がドメインを乗っ取ったようなのでリンクを削除しました] この記事は移転前の古いURLで公開された時のものですブックマークが新旧で分散している場合があります。移転前は現在

    Yahoo! Japan WEB APIコンテストの受賞者発表 | 秋元@サイボウズラボ・プログラマー・ブログ
  • 秋元@サイボウズラボ・プログラマー・ブログ: Googleがソースコード検索Google Code Searchを公開

    [更新 2018] 2012年にサービス終了しています。 噂になっていたGoogleのコード検索サービスGoogle Code SearchがGoogle Labsから公開された。 例: “Romaji”でソースコード検索 上の検索結果からすると、Camel Notation中の単語も探してくれるみたいだ。 IsProgrammerDifferentFromSE()みたいなネーミングからも単語を切り出してインデックスしているということで、これはありがたいかも。 見つかったコードをクリックすると、キーワードハイライトされたソースコード全文、同じディレクトリ内にある他のコードのリスト、パッケージやコードのGoogleキャッシュ(!)、パッケージのダウンロードリンク、などが表示される詳細画面に移る。 検索では、トップページ下にも説明がいくつか書かれているが、言語、ライセンス、パッケージ形式やファ

  • Ziki – オープンなソーシャルネットワーク | 秋元@サイボウズラボ・プログラマー・ブログ

    Ziki というサービスが始まっている。 さっそく試してみたところ、これはオープンな SNS を狙っているのではないか、と感じられた。 ユーザ登録して、自分にタグをつけていくと、タグのついたほかのメンバーの一覧ページができる。これは mixi などでいうコミュニティにあたる。 とりあえず作ってみた My Ziki がこれ 自分の属性には、自分のブログをはじめとして、RSS で提供されているさまざまなものを含めることができる。例として推奨されているのは、Blogger.com などのブログサービス、写真共有サービス Flickr 、ブックマーク del.icio.us/Blinklist など。カレンダーサービスの RSS 出力などをわせるのもありだろう。 RSS を追加する際に、RSS のカテゴリーを指定させられる。フィードの性格ごとに違う表示をするのかも(あるいは、将来するつもりなのか

    nitsuji
    nitsuji 2006/04/28
    オープンなやつ
  • Ajax は難しい? AHAH ならどうだ | 秋元@サイボウズラボ・プログラマー・ブログ

    AHAH は Asynchronous HTML and HTTP の略で、Ajax の Javascript と XML の部分を素の HTML に置き換えた、Ajax のかけそばみたいなものだ。 AHAH (アハー、と読むのだろうか)は、Ajax の簡略版と言える。提唱者の主張するその特徴は、 XML スキーマとか考えないことでデザインが高速にできる 現行の HTML を再利用でき、新たにウェブサービスを作る必要が無い すべてのデータはブラウザで見える形でやりとりされ、デバッグやテストが簡単 HTML はページの DOM に直接埋め込める形で返されるので、パーズが不要 HTML なので、デザイナが CSS で直接フォーマットできる。XSTLT でプログラマーが整形するよりいい 処理はサーバ側で行われるので、クライアント側でプログラミングは無い サーバ/クライアント間のデータ転送を、無駄

    nitsuji
    nitsuji 2006/04/05
    ていうか、別名を付けるまでもなく今でもajaxと言いつつXML以外のデータやりとりしてる方が多いんじゃない?という気がするので別名はいらん
  • Ajax ワープロの新顔 Ajaxwrite | 秋元@サイボウズラボ・プログラマー・ブログ

    [追記] 詳細エントリ「ajaxWrite のCEOmp3.com/Lindows(Linspire)のマイケル・ロバートソンだった」を追加 via del.icio.us/popular Google の Writely 買収で話題になった、Ajax によるブラウザベースのワードプロセッササービスに、また一つ新しいのが登場した。 ajaxwrite という直球なサービス名のこのサービス、とことんマイクロソフトワードを模倣しようとしているようだ。メニュー構成までそっくり。保存すると .doc ファイルになるし。(RDF, テキスト, PDF 形式もサポート) 日語も普通に使える。選べるフォントに日語向けのフォントはないけれど、どれを選んでも日語が表示されている。 ユーザ登録が不要で、作成した文書はサーバ側にストレージが無いようなので、今のところは MS-Word でできることをわ

    Ajax ワープロの新顔 Ajaxwrite | 秋元@サイボウズラボ・プログラマー・ブログ
    nitsuji
    nitsuji 2006/03/24
    Safariはダメみたいだ
  • Ajax を使うべき 10 個のポイント | 秋元@サイボウズラボ・プログラマー・ブログ

    10 個ないじゃん。とりあえず数を書いとけ、ってのが最近の流行だろうか。 Ajax を使って意味があるのはどんなところか、Ajax によって事態が悪化するようなところはどこか、というのを考えて列挙しているエントリ。Ajax の適用箇所を悩んでいる人にはいい参考になると思うのでおおまかに紹介。 Ajax を使うといいところ フォームによる多量の入力 深い階層の木構造をたどらせるところ ユーザ間のコミュニケーションを行わせるところ 投票、「はい/いいえ」、評価ボタン フィルタやソートなどのデータ表示操作 テキスト文入力時のヒントやオートコンプリート Ajax を使うべきでないところ 非常に単純で、失敗が許されないフォーム ライブサーチなどの検索 基的なサイトナビゲーション 大量のテキストの置換 大々的な表示の変化 無意味な Widgets (UI 部品)の利用 個々の「べき・べからず」を主張

    nitsuji
    nitsuji 2005/12/21
  • 1