タグ

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

  • Kazuho@Cybozu Labs: CGI::Application 用にディスパッチャ兼パーマリンクジェネレータを書いてみた

    « djbdns にパッチをあてて Anti-DNS Pinning 対策 | メイン | Japanize - Internet Explorer に対応しました » 2007年11月14日 CGI::Application 用にディスパッチャ兼パーマリンクジェネレータを書いてみた パーマリンク生成とディスパッチャが同居しているようなウェブアプリケーションのフレームワークはないのかな、という話を同僚の山口さんに振ったところ、「以前 Catalyst::Plugin::BuildURI というモジュールを書いたよ」という答えがかえってきました。でも今更 Catalyst ベースに書き直すのもなぁ、ということで、青い芝を横目で眺めつつ、CGI::Application 用のディスパッチャ兼パーマリンクジェネレータを書いてみました。 使い方は以下のような感じです。各モジュールの先頭で regi

  • 秋元@サイボウズラボ・プログラマー・ブログ: 誠実なお店の看板

    via del.icio.us/popular バイク店にかかっていた正直な看板の写真だそうで。 「良いサービスを、安く、早く。3つのうちどの2つでもお選びいただけます」 良いサービスを安く、という場合は時間がかかります 良いサービスを早く、という場合はお代がかかります とにかく安く早く、という場合はサービスの質を落とさせていただきます ソフトウェアの開発も同じことで、3つを同時にいくらでも満たすのは無理。できますと言うエンジニアがいたら詐欺師かダンピングのどっちかだろう。 機能とコストと納期は、x-y-zの三軸に張り付いたゴムの膜みたいなもので、一つをグーッと引っ張ろうとすると、他の二つがつられて短くなっていくものだ。 相手が顧客でも営業でも、それまで無かった新しい制約条件を追加されたときに、「それを実現すると、代わりにこれが犠牲になります」と言えなければ、プロジェクトを制御しているとは

    秋元@サイボウズラボ・プログラマー・ブログ: 誠実なお店の看板
  • 論理演算1 (mitsunari@cybozu labs)

    JavaScript(JS)の勉強を始めて最初にひっかかったのは整数の挙動です. JSでは整数は内部64bit浮動小数として扱われますが,論理演算をするときに限り符号つき32bit整数に変換されます. C++プログラマからすると,「符号つき」が曲者です. たとえばJSでは x = 0xee6b28004;/* =4e9 */ は正の整数 x == 4000000000であるため,uint32相当と思いがちです.しかしその場合, x &= 0xffffffff; とした瞬間にxは「符号つき」と扱われ, x == -294967296; と負の整数になってしまうことを忘れてしまうかもしれません. また,JSで厳密に扱える整数の最大値は 0x20000000000000 = 9007199254740992; ですが,これを1 << 53として作ろうとすると,32bitでラップアラウンドするため

  • 実行時のインライン+ループ展開による高速化例 (mitsunari@cybozu labs)

    出張Shibuya.js 24の発表資料の中の,JavaScriptで実行時に関数を書き換えることで高速化する例を紹介します.オリジナルアイデアはokuさんで,JavaScriptの勉強のために私もやってみました. ここでは二つの関数unrollLoop()とforceInline()を作ってみました.たとえば, add3 : function(y) { return y + 3; } と addF : function(x) { var z = 2; for (var i = 0; i < 3; i++) { z += this.add3(i); } return z; } という関数があるとします. addF()に対してblowfish.js(仮実装なので実用性はまだありません)にあるunrollLoop()を適用すると,addF()が書き換えられて function(x) { var

  • Kazuho@Cybozu Labs: サーバシグニチャは隠さないのが当たり前

    « Pathtraq バージョンアップのおしらせ - サイドバー表示に対応 | メイン | Perl から MySQL に非同期アクセスする方法 » 2007年09月05日 サーバシグニチャは隠さないのが当たり前 ウェブサーバ(Apache)で、404などのエラーページを表示したとき、ヘッダやページの下にApacheやOSのバージョンが表示されます。こういったサーバ情報をわざわざ表示する必要はありません。 ウノウラボ Unoh Labs: 5分でできるウェブサーバのセキュリティ向上施策 私も何年も前からセミナーではサーバ、モジュールバージョンは隠すようにと言っています。何故こんな事で賛否両論になるのか全く理解できません。 yohgaki's blog - サーバシグニチャは隠すのが当たり前 Server: ヘッダを隠すメリットについての議論はあるようですが、Server: ヘッダを表示すべ

  • 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ライセンス

  • 秋元@サイボウズラボ・プログラマー・ブログ ついにページビューによる測定が最重要でなくなりそう

    via Yahoo! News ウェブサイトの視聴率測定最大手のニールセン/ネットレイティングスが、ページビューによるウェブサイトのランクづけをついに廃止(非公式化)し、サイト滞留時間でのランキングに切り替えるという発表を明日(米国時間火曜日)するらしいというニュースがきた。 Ajaxによるユーザビリティ向上などで、Yahooなどはかえってページビューの減少が起こっていたり、YouTubeなどの動画サイトではユーザが動画をじっと見ているので実際の利用時間に比べてページビューが少なかったり、何かするたびに別のページを開かせるMySpaceが、ページビューでは実際よりも人気があるように見えてしまっていたというような問題が出ていたが、これらの問題を解消するのが目的らしいということだ。 サイト滞留時間でランキングをつけなおすと、PVでトップだったYahooが2位に後退、トップはPVでは6位だったA

  • throw new CybozuLabsException() - JavaScriptにはヒアドキュメントがない

    JavaScript にヒアドキュメントが無いのがより qq(),%() リテラル並が欲しいのが音で php にこれ系の文字列リテラルが無いのが致命的!と思ってたんだけど JavaScript にはヒアドキュメントすら無いもんなぁ。複数行に渡るのを書くときには var str = [ '<p>', '<a href="/">example</a>', '</p>' ].join("\n"); とかやってるんだけどアレだよな。うーん。SQL直書きしたいときこまるじゃん!(かきません) AJAJAはSQLiteが使えるのでSQLを書く必要がでてきます。ヒアドキュメントがないのは結構しんどいです。とりあえず上の例を参考に、配列にしてjoinする方法を採用します。今までは var create_table = "aaaa"; create_table += "bbbb"; cr

  • 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

  • キーワード抽出モジュール Lingua::JA::Summarize を使うコツ (nakatani @ cybozu labs)

    いわゆる「Web2.0」っぽい要素である「タグ」。 一般にはタグ付けは手動で行うわけですが、自然言語テキストへのタグ付け(キーワード抽出)を自動で行うことができれば、あれこれと可能性が広がって楽しそう……しかし、それは実現が難しかったり高コストだったりして、簡単に手を出せる解はあまりありません。 ラボの奥さんの作成したキーワード抽出モジュール Lingua::JA::Summarize は次の特徴を持っています。 動作要件の敷居が低い 辞書のメンテナンスをしなくても、未知語や熟語もある程度抽出してくれる 希望の結果に近づけるためのチューニングが可能 モジュールを使って、サイボウズ・ラボ内での情報交換を行っている社内掲示板をスレッド単位で解析しているのですが、辞書を一切チューニングしていない状態でも「しょこたん☆ぶろぐ」や「かぶり隊隊員ニャンコ達」などの特徴的なキーワードが抽出されます(

  • 1