タグ

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

  • md5.js (mitsunari@cybozu labs)

    JavaScriptでMD5を計算するライブラリを作りました. ○特長 webでよく見られるいくつかの同種のライブラリに比べて3~7倍ほど高速に計算します. ○ダウンロード(download) md5.js ○仕様 ASCII文字列を渡すとそのMD5を計算して16進数文字列で返します. 文字列に漢字などが含まれている場合は二つ目の引数にCybozuLabs.MD5.BY_UTF16を指定してください.UTF16として処理します. ○使い方1 var str = CybozuLabs.MD5.calc("abc"); if (str == "900150983cd24fb0d6963f7d28e17f72") { ... } ○使い方2 var str = CybozuLabs.MD5.calc("あ", CybozuLabs.MD5.BY_UTF16); ○ライセンス 修正BSDライセンス

  • Kazuho@Cybozu Labs: SSD (フラッシュメモリ) のベンチマークと選定基準

    ベンチマークに使用したのは、一般的な HDD、高速性で有名な Intel の SSD、ネットブック (DELL Inspiron Mini 9) の内蔵 SSD (STEC 製, 32GB)、および SanDisk の SDHC カード (SanDisk Extreme III) です注。 この表を見て2つの SSD を比較すると、読み込みパフォーマンスの差がそれほど大きくないことに気づきます。また、SD カードの読み込み速度も、HDD を大きく上回っています。つまり、ランダムリードについては、メーカーや SSD 間の差は、あまり大きくない、ということになります。 一方で、書き込みパフォーマンスについては、非常に大きな差があります。X25-M と STEC の SSD の差は、実に 50 倍にのぼります (SSD の書き込みバッファをオフにした場合の値はこちらの表を参照のこと)。また、SD

  • Kazuho@Cybozu Labs: フレンド・タイムライン処理の原理と実践

    « MySQL のクエリ最適化における、もうひとつの検証方法 | メイン | MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 » 2008年06月09日 フレンド・タイムライン処理の原理と実践 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話に続きます。 Twitter が注目されるようになって久しい今日この頃ですが、友人の投稿を時系列に並べて表示する、というのは、Twitter に限らず Mixi の「マイミクシィ最新日記」やはてなブックマークの「お気に入り」等、ソーシャルなウェブサービスにおいては一般的な手法です。ですが、この処理 (以下「フレンド・タイムライン」と呼ぶ) は、一見簡単そうに見えて、実装には様々な困難が伴います。記事では、「フレンド・タイムライン」を実現する、プッシュ型とプル型の二種類の手法について、その原

  • Kazuho@Cybozu Labs: MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話

    « フレンド・タイムライン処理の原理と実践 | メイン | MySQL の ORDER BY を高速化 » 2008年06月12日 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 フレンド・タイムライン処理の原理と実践 の続きです。 先のエントリでは、プルモデルの速度が当初予測していたよりも遅かった (というより SQL レイヤでのオーバーヘッドが大きそうだった) ので、MySQL Internals メーリングリストで質問したりしながら、C++ で直接 InnoDB にアクセスするようなコードを書いてみました。 タイムライン構築速度 タイムライン/秒 SQL そしたら、10倍以上高速に! ベンチマークを perl ベースのものから mysqlslap に変えたのですが、プッシュモデルの 2/3 の速度が出ています。これなら、データサイズが約 1/10 にな

  • Kazuho@Cybozu Labs: Q4M Version 0.4 で高速なクローラを書いてみた

    « Parallel::Prefork - Perl でマルチプロセスなサーバを書く方法 | メイン | Japanize for IE バージョンアップのおしらせ » 2008年04月07日 Q4M Version 0.4 で高速なクローラを書いてみた 日、MySQL 5.1 のプラガブルストレージエンジンとして動作するメッセージキューQ4M のバージョン 0.4 をリリースしました。バージョンでは、条件付購読 (conditional subscription) という、特定の条件を満たす行だけをメッセージキューから読み込む機能に対応したのですが、これを使って、クローラを書いてみました。 使い方は以下のとおりです。 # url テーブルを作成 % mysql -p test mysql> CREATE TABLE url ( id int(10) unsigned NOT NULL

  • Kazuho@Cybozu Labs: 高速なCometサーバを書いてみた件

    « Pathtraq 最新ランキング ガジェットを公開しました | メイン | Q4M (Queue for MySQL) 0.3 リリース » 2008年03月10日 高速なCometサーバを書いてみた件 もう昨年の2月になりますが、Comet について調査を行いました。その際の成果をまとめたスライドは既に公開していた (Comet の正しい使い方) のですが、同時に実際に作ってみた実装についても、オープンソース化することとなりました。コードは CodeRepos に置いておきますので、どうぞご覧ください。 (Revision 7754: /lang/perl/fastr) 使い方は example ディレクトリ以下を見ていただくとして、ベンチマークの結果とチューニング手法について、記録と記憶に残っている範囲からまとめておきたいと思います。 パフォーマンスについて まず、パフォーマンスに

  • Kazuho@Cybozu Labs: Tritonn (MySQL+Senna) の join を高速化

    « setlock を使って cron をぶんまわす方法 | メイン | Range Coder の終了処理 » 2008年02月05日 Tritonn (MySQL+Senna) の join を高速化 自分の利用形態において、Tritonn の処理を最適化するパッチを書きました。具体的には、2種類の最適化を行いました。ひょっとするとバグがあるかもしれませんが、興味がある方は、以下のパッチ (tritonn-1.0.9用) とあわせてごらんください。 1. 全文索引内にプライマリキーを格納 SQL クエリを最適化する際、アクセスしたい全カラムを格納したインデックスを作成することで行データへのアクセスを抑止して速度を稼ぐ、というのは定石のひとつです。しかし、MySQL の全文索引 (フルテキストインデックス) では、他のカラムと組み合わせた複合キーを作成することができません。このことが、T

  • 秋元@サイボウズラボ・プログラマー・ブログ: Google Social Graph API登場 - 公開情報から人のつながりを探せるように

    Google Social Graph APIに戻って「Googleのウェブ検索」を説明するなら、ウェブにあるページとページのリンク関係を大量に集めて、単語を入れたら関連するページを返す、ということになるだろう。 今日新しく発表されたGoogle Social Graph APIは、リンクの中でも特に「サイトと人、人と人の関係」が書かれたリンクを収集して検索できるようにしたAPIだ。 APIを使ったサンプルがあるのでこれを使ってみる。My Connectionsというサンプルでは、ブログや自分のプロフィールが載ったページのURLを入れる(複数あれば改行で区切る)と、過去にブログやSNSなどで自分が登録した情報から、関係のあるウェブサイトのURLや、知人のページを取得して表示してくれる。 人間関係やサイト間の関係はどこから取っているのか、というと、これはXFNやFOAFといったmicr

    秋元@サイボウズラボ・プログラマー・ブログ: Google Social Graph API登場 - 公開情報から人のつながりを探せるように
  • Javascript で実装した Ruby インタプリタ JSRuby 0.1 リリースしました。 (nakatani @ cybozu labs)

    « MyMiniCity 日語化 | メイン | JSRuby から jQuery を使う ( Javascript 連携 ) » Javascript で実装した Ruby インタプリタ JSRuby 0.1 リリースしました。 あけましておめでとうございます。 1月からサイボウズ・ラボのオフィスが引っ越しました。新年から気分も新しくぶりぶり仕事します。よろしくです。 というわけでちょっとずつ作っていました Javascript で実装した Ruby インタプリタの "JSRuby" を一区切り付けるべくバージョン番号を付けてリリースしました。 JSRuby Project Page (CodeRepos) http://coderepos.org/share/wiki/JSRuby JSRuby Test Page http://labs.cybozu.co.jp/blog/naka

    k_37to
    k_37to 2008/01/09
    これはすごいなー
  • TAKESAKO @ Yet another Cybozu Labs: KB942840の更新でJScript.DLLが高速になった(IE6/WindowsXP)

    Windows XP 用の更新プログラム (KB942840) で、JScriptエンジンのガベージコレクション(GC)のアルゴリズムが変更されて、 Ajaxをゴリゴリ使っているWebサイトでIE6の体感速度がかなり改善された(JavaScript実行途中で固まることがなくなった)模様。 Windows Server 2003 ベースのコンピュータまたは Windows XP ベースのコンピュータで Internet Explorer 6 の JScript を使用する Web ページを表示すると、パフォーマンスの Web ブラウザ低下が発生することがあります。 原因 スクリプトが多くの変数を同時に作成すると、この問題は、発生することがあります。 また、この問題が同じ時刻で解析される一意の多くの値がスクリプトに含まれる場合、発生することがあります。 この問題は JScript エンジンがガ

  • Webページの本文抽出 (nakatani @ cybozu labs)

    Webページの自動カテゴライズ の続き。 前回書いたとおり、パストラックで行っている Web ページのカテゴライズでは、Web ページの文抽出がひとつの鍵になっています。今回はその文抽出モジュールを公開しつつ、使っている技法をざっくり解説などしてみます。 モジュールの利用は至極簡単。require して analyse メソッドに解析したい html を与えるだけ。文字コードは UTF-8 です。 【追記】大事なこと書き忘れ。モジュールは Ruby1.8.5 で動作確認していますが、特別なことはしていないので、1.8.x なら動くと思います。 $KCODE="u" # 文字コードは utf-8 require 'extractcontent.rb' # オプション値の指定 opt = {:waste_expressions => /お問い合わせ|会社概要/} ExtractCont

  • TAKESAKO @ Yet another Cybozu Labs: Shibuya.JS Digest (for John Resig) 発表資料公開しました

    The Future of JavaScript -presented by Mozilla & Shibuya.JS- で、ゲストの John Resig 向けに Shibuya.JS Digest の発表をさせていただきました。 当日のustream中継は約200名ぐらいの方が視聴されていたと聞いています。 画面が小さくてすみませんでした。当日の録画アーカイブもustream上で見れるようになっています。 John Resig と記念撮影 筆談(主にamachang と John Resig と kawaさんの会話) ohn Resig - Speaking in Tokyoによると、 As a side note: Shibuya.JS is the only JavaScript user group that I know about - really anywhere in t

    k_37to
    k_37to 2007/11/17
    John Resig 来てるのが凄い
  • TAKESAKO @ Yet another Cybozu Labs: 出張 Shibuya.js 24 動画アーカイブ公開

    空前の技術系イベント動画公開ブーム到来、ということで、 2007年9月15日(土) に開催された 出張 Shibuya.js 24(Mozilla 24 ~ Worldwide Continuous Event ~) の動画アーカイブが公開されました。 お待たせいたしました!9月15日~16日に開催されたMozilla 24 の各セッションアーカイブを公開しました。日語、英語の両方が用意されています。 当日は日国内だけでも四つの会場で同時並行で行われていたため、見られなかったセッションもあるかと思います。ぜひこれを機会にサイトを訪れていただければと思います。 アーカイブ公開は、約半年間、2008年4月末まで行われる予定です。この機会をお見逃し無く。。。 Shibuya.JS内の 全セッションが一つの動画(約1時間50分)にまとまっているので、 各セッションの開始時刻を記載しておきました

  • Kazuho@Cybozu Labs: MySQL のウォームアップ (InnoDB編)

    « DBIx::Printf と LIKE 式 | メイン | メッセージキュー事始め in Perl - コマンドラインクライアントを作ってみた » 2007年10月11日 MySQL のウォームアップ (InnoDB編) サーバの起動直後はデータがメモリ上にないためデータベースの応答速度が遅い、というのは良く知られた話かと思います。MySQL の場合、使っているエンジンが MyISAM であれば、各データファイルをあらかじめ cat ... > /dev/null するなりしてバッファキャッシュに載せておけばいいのですが、InnoDB は独自のキャッシュを持っているのでそういうわけにもいかないように思います。 具体的には、パフォーマンスを最大限発揮するためには OS のキャッシュにではなく、InnoDB のバッファプールにデータをロードすべきであるという点。それに、たとえ OS のキャ

  • TAKESAKO @ Yet another Cybozu Labs: 続イメージファイト - HTML 2.0 New Browser Detection

    Shibuya Perl Mongersテクニカルトーク#8 で発表した「続イメージファイト」の資料を SlideShare で公開しました。 Shibuya.pm#8 続イメージファイト - HTML 2.0 New Browser Detection JavaScriptCSS Hacksを一切使わずにHTMLでブラウザを判別するハックの紹介です。 HTML 2.0 - Browser detection [3] ブラウザ判別のデモのページにアクセスすると、使っているブラウザの画像が表示されます。 このimgタグのsrc属性はfirefox2.0、firefox1.5、その他のGeckoエンジンを搭載したブラウザ、Safari2、Safari3、Opera、ie、w3m、lynxなどのブラウザの判別に対応しています。 テキストブラウザの判別

  • TAKESAKO @ Yet another Cybozu Labs: ITpro Challenge!でニコLT発表してきました

    2007年9月7日(金)東京ドームホテルB1Fで開催された「ITpro Challenge!」に行ってきました。 先着70名までという超プレミアムなイベントでしたが、ライトニング・トークスでの発表の機会をいただき、私も参加することができました。 東京を直撃した台風により多摩川がバッファオーバーフローしていたにもかかわらず、会場は満席で大盛況でした。 私がApacheモジュールを書く理由「wafful.org」 LTの発表に使用したスライドのサムネイルを一部公開します。 発表内容を全部録画したデータは後日公開されると思いますので、時間の関係で今回詳しく話せなかったこととして、 Apacheのフィルタモジュールを書くときに参考にした情報について補足しておきたいと思います。 Apache2から用意されたライブラリ APR (Apache Portable Runtime) そのもののチュートリア

  • TAKESAKO @ Yet another Cybozu Labs: Firefox Developers Conference Summer 2007

    拡張機能開発チュートリアル Latest topics > Firefox Developers Conference Summer 2007 - outsider reflex 途中、スタッフの根来さんがノートPCのACアダプタのコードにひっかかってしまうというアクシデントがありましたが(ドジっ娘演出?)、怪我がなくって当によかったです。 Software Design 4月号の特集をベースに加筆・修正された資料も配布されて、大変わかりやすいチュートリアルでした。 拡張機能開発者による大ライトニングトーク Lightning Talks中に Sparrow.mini - Twitterに投稿するだけのツールバーを追加する拡張機能が公開されたり、firefox+emacs=firemacsなどなど、大変濃い内容の発表が多かったです。同時通訳(日語→英語)が行なわれたライトニングトークっ

  • 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

    k_37to
    k_37to 2007/06/11
    発想がすごい
  • TAKESAKO @ Yet another Cybozu Labs: Shibuya.esの動画公開

    先日開催されたShibuya.js Technical Talk #3 - Shibuya.esの録画アーカイブが公開されました。 犬ビームメソッドが見れるのはShibuya.esだけ! ちなみに、講演者の承諾がとれている発表枠のみの公開となっております。 Shibuya.es録画アーカイブ amachangさん: JSer のための AS3 ![動画] abuiさん: Cycal - オンラインスプレッドシート[動画] cho34さん: えへへ、うふふ E4X[動画] sendさん: Firebug[動画] omoさん: はじめての ABC[動画] Yu Kobayashiさん: Narcissus - ナルシスト、自分を愛した美少年JavaScript[動画] takesakoさん: SWF Binary Hacks ~evalのいばら道~[動画] kusigahamaさん: fcwr

  • Kazuho@Cybozu Labs: JavaScript から Flash の便利な機能を使う方法

    « Comet の正しい使い方 | メイン | キーワード抽出のススメ (Lingua::JA::Summarize がアップデート) » 2007年03月14日 JavaScript から Flash の便利な機能を使う方法 先月・今月と新しいメンバーが加わったサイボウズ・ラボですが、いま社内でfont-familyが密かなブームです。ということで、ブラウザで使用できるフォント名一覧をJavaScriptで取得する方法について調べてみました。 (中略) ■ 2. Flash の TextField.getFontList() を JavaScript から呼び出す (TAKESAKO @ Yet another Cybozu Labs: JavaScriptフォント名一覧を取得する3つの方法) JavaScript から Flash のちょっとした機能を呼び出すためだけに、毎回 Fla