タグ

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

  • 書評: Subject to Change 予測不可能な世界で最高の製品とサービスを作る

    Subject To Change――予測不可能な世界で最高の製品とサービスを作る なんか読むのに時間がかかった。あのAdaptive Path社がプロダクトデザイン・コンサルティングについて解説するという。 イースト […] Subject To Change――予測不可能な世界で最高の製品とサービスを作る なんか読むのに時間がかかった。あのAdaptive Path社がプロダクトデザイン・コンサルティングについて解説するという。 イーストマン・コダック、Tivo、薬瓶、おしり拭き、iPod、FlickrNetflix、ダイソンなどのプロダクトデザインの成功例や、アイデアはすごいように見えるけど実際には失敗だったプロダクトを上げて、プロダクトデザインで気をつけるべきことを説明している。 7章では「アジャイル」が登場。ソフトウェア開発プロセスでもおなじみの話なのでここだけはよくわかっ

    書評: Subject to Change 予測不可能な世界で最高の製品とサービスを作る
  • Kazuho@Cybozu Labs: ウェブサービスの SSD 化について話してきました

    « 開発しているウェブアプリケーションフレームワーク NanoA について話してきました | メイン | なぜサイボウズ・ラボで働くのか » 2008年11月27日 ウェブサービスの SSD 化について話してきました 日 (11/27) 開催の Shibuya Perl Mongersテクニカルトーク#10 で、ウェブサービスの SSD 化について話しました。スライドを置いておきますので、開発しているウェブアプリケーションフレームワーク NanoA について話してきました とあわせてご覧いただければ幸いです。 末筆となりますが、Shibuya.pm の実行委員(?)の方々、ありがとうございました&おつかれさまです。 (まだ終わってないけど ^^;)

    shozzy
    shozzy 2008/12/01
    SSD関係の話
  • Kazuho@Cybozu Labs: フレンド・タイムライン処理の原理と実践

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

  • ユーザビリティ | 秋元@サイボウズラボ・プログラマー・ブログ

    Eric Burkeさんのブログ Staff That Happens(閉鎖)より、単純さ(Simplicity)とは、 AppleGoogle と、「あなたの会社の製品」では、カバーする内容が違っているというのもあるだろうけれど、ユーザーが選べる箇所を減らすためにはどうするか、という視点を持つことについて示唆に富む比較かもしれないと思った。 [更新 2015-09-11 リンク先閉鎖確認にあわせて修正] この記事は移転前の古いURLで公開された時のものですブックマークが新旧で分散している場合があります。移転前は現在とは文体が違い「である」調です。(参考)記事の内容が古くて役に立たなくなっている、という場合にはコメントやツイッターでご指摘いただければ幸いです。最新の状況を調べて新しい記事を書くかもしれません

    ユーザビリティ | 秋元@サイボウズラボ・プログラマー・ブログ
    shozzy
    shozzy 2008/03/07
    情報量は一定以上には圧縮できないということかと。/シンプルで済むはずのことはシンプルにすべきだけど。
  • Kazuho@Cybozu Labs: ウェブアプリケーションにおけるHDDの正しい使い方

    « ディスクが1回転する間に複数回 fdatasync する方法について | メイン | Q4M - MySQL 上で動作するメッセージキュー » 2008年01月04日 ウェブアプリケーションにおけるHDDの正しい使い方 データベース等のソフトウェアは一般に、停電やOSのクラッシュ時にデータが破壊されないよう、HDD へデータ保存が完了したか確認しながら処理を行うようになっています。その目的を果たすためにどのような API が OS によって提供されているか、少し勉強し直すことにしました。 下表のうち、赤い部分がデータの永続性が保証されない危険な手法、青い部分が安全な手法です。したがって、各行において出来るだけ左側の (高速側の) 、そして言うまでもなく青い色の同期手法を使っていることが望ましいということになります。 OS openモード HDD または RAID 内の書込先 キャッシュ

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

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

  • 秋元@サイボウズラボ・プログラマー・ブログ: reCAPTCHA - キャプチャを利用した人力高性能OCR

    reCAPTCHA という新サービスはすごい。その構想力には感動させられた。 念のためにCAPTCHA(キャプチャ)について説明しておくと、スパムプログラム(bot)と人間のユーザを見分けるための簡単な(しかし機械にとっ […] reCAPTCHA という新サービスはすごい。その構想力には感動させられた。 念のためにCAPTCHA(キャプチャ)について説明しておくと、スパムプログラム(bot)と人間のユーザを見分けるための簡単な(しかし機械にとっては難しい)クイズのことだ。ある程度ウェブを使っている人なら、ネットサービスの登録時やコメントの書き込み時などに、読みにくく加工されたアルファベットを読まされたりした経験があるだろうと思う。 それらのサイトでは、あなたが人間にしかできないクイズを解いたのを見て、ユーザ登録やコメントの投稿を受け付けたりする仕組みになっているわけだ。文字を読む以外のC

  • TAKESAKO @ Yet another Cybozu Labs: 連載企画 FizzBuzz ではじめる Code Golf (x86 32bit) 入門

    Code Golf とは? Matzにっき(2006-10-05) より ゴルフとは如何に少ないストロークでホールインするかを競う競技である。 コードゴルフとは、如何に少ないキーストローク(バイト数)で、プログラムを実装できるかを競う競技である。 先日FizzBuzz.com (MS-DOS 16bit版) を作ってみたら、32bit版のプログラムにも挑戦したくなりましたので、x86 32bitで命令長を減らすテクニックについて紹介したいと思います。 ※まずはコード長の比較のみで実行クロック数は競わないことにします。 ■ x86 32bit コード最適化 【問題】EBXレジスタに1を、EAXレジスタに4を代入したい できるだけ短いバイト数でコードを実現するためには、いろいろなx86命令をフル活用することを考えます。 自分の思いついた解答をNASMの記法で書いてみます。 (1) 10byte

    shozzy
    shozzy 2007/05/15
    FizzBuzzに釣られたw
  • 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

  • Kazuho@Cybozu Labs: Comet の正しい使い方

    « 「スーパー技術者争奪戦」 | メイン | JavaScript から Flash の便利な機能を使う方法 » 2007年02月23日 Comet の正しい使い方 今日会社の勉強会で Comet について話す機会がありました。 Comet については、普及するかどうかという以前に、どう使えばいいのか、正しく使った場合に何をどこまでできるのか、という理解が共有されていないように思います。なので、(あくまで私見ですが) 使用したスライドの一部を公開したいと思います。よろしければごらんください。また、問題や改善すべき点があれば、教えていただければ幸いです。

  • ロケットの打ち上げを遊ぶGravity Launch

    via digg Gravity Launchは、重力に逆らってロケットを発射し、目的地の宇宙ステーションを通過させるというゲーム。 パラメータは発射角と発射時の速度のみ。あとは地球や月の重力をうまく利用して、意図したコ […] via digg Gravity Launchは、重力に逆らってロケットを発射し、目的地の宇宙ステーションを通過させるというゲーム。 パラメータは発射角と発射時の速度のみ。あとは地球や月の重力をうまく利用して、意図したコースに宇宙ロケットを乗せないといけない。強すぎると宇宙の彼方へ行ってしまうし、弱いと重力につかまって衛星化したり墜落したりする。 とても簡単な操作で、重力とかロケットについてなんとなく理解が得られるという点で、子供とかにやらせてみたいかも。 # 5面が難しくて先に行けない [関連] Google Earthで軌道エレベータ 一方ロシアは鉛筆を使った

    ロケットの打ち上げを遊ぶGravity Launch
  • Kazuho@Cybozu Labs: E4X-XSS 脆弱性について

    « 安全な JSON, 危険な JSON (Cross-site Including?) | メイン | JSONP - データ提供者側のセキュリティについて » 2007年01月10日 E4X-XSS 脆弱性について Firefox でサポートされている JavaScript 拡張 E4X (ECMA-357) では、JavaScript 内に XML とほぼ同様のマークアップ言語を記述できるようになっています。しかし、マークアップ言語の解釈にはいくつかの違いがあり、この点をついたクロスサイトスクリプティングの可能性が (相当に小さいものの) 存在します。攻撃者は、 ウェブアプリケーションに E4X として解釈した場合に実行コードとして解釈されるコードを注入 (XSS) し、 1 のコンテンツを <script> タグを用いて参照するような別のウェブサイトを用意し、攻撃対象にアクセスさせ

  • Kazuho@Cybozu Labs: 安全な JSON, 危険な JSON (Cross-site Including?)

    « クロスサイトのセキュリティモデル | メイン | E4X-XSS 脆弱性について » 2007年01月06日 安全な JSON, 危険な JSON (Cross-site Including?) 先のエントリで、 JSON については、JavaScript として副作用をもたない (もたせようがない) ゆえに文法違反であるがゆえに、秘密情報を含むデータフォーマットとして使用することができるのです。 (Kazuho@Cybozu Labs: クロスサイトのセキュリティモデル) と書いたのですが、認識が甘かったようです。Jeremiah Grossman: Advanced Web Attack Techniques using GMail によると、配列の初期化演算子 [] の動作を外部から変更することができる注1とのこと。 実際に手元の Firefox 1.5 で試してみたところ、JS

  • TAKESAKO @ Yet another Cybozu Labs: Web2.0時代のAjax Binary Hacks

    ※公開用にいくつか手を加えてあります 前フリが長いとのツッコミがありましたので、今回の発表内容を少し要約してみたいと思います。 1. GIF Format Hacks (Server side) まずは、任意のpixelサイズ(幅・高さ)を持った画像ファイルを固定長の35byteで出力する方法 #!/usr/bin/perl use strict; use warnings; sub create_gif { my $size = pack "S2", @_; return "GIF89a$size\xf0\x00\x00\x00\x00\x00\xff\xff\xff," . "\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02L\x01\x00;"; } print "Content-Length: 35\n"; print "Content-Ty

    shozzy
    shozzy 2006/12/21
    widthとheightに情報を乗せるとな。。。すごい発想だ。
  • 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)

  • Kazuho@Cybozu Labs: JavaScript の文字列定数でエスケープが必要な文字

    IE、 Firefox、 Safari ともに ECMAScript の仕様を満たしていません。IE6 は ECMAScript の仕様に対して上位互換だと言えるでしょうから、実質的に問題を抱えているのは Firefox のみ、ということになるのでしょうか。JSON を使う際には、注意が必要、と。 Firefox に関して言えば、 (Control Character があるとエラーになるのではなく読み落とすという性質からして) 仕様ではなくバグだと考えるのが妥当なのかなと思いました。 参考: テストコード 10:28 追記: NUL 文字について表に含めるのを忘れていたので追加しました 10:48 追記: Safari を追加 2009/02/17 追記: Firefox のバグは 2008 年 8 月に修正されたようです (ChangeLog の3.147)

    shozzy
    shozzy 2006/11/07
    この件についてECMAScript互換なのはOperaだけってか。。。それにしても、Firefoxがここまでダメダメだとはねぇ。
  • Kazuho@Cybozu Labs: JavaScript のベンチマーク

    « re: javascript vs perl - オブジェクトのメモリー効率 | メイン | IPAフォーラム 2006 での講演スライド » 2006年10月23日 JavaScript のベンチマーク Japanize 等の関係で、最近 JavaScript のベンチマークを取る機会が増えてきました。今までは毎回ワンライナーを書いて計測してきたのですが、そろそろめんどくさくなってきたので、 HTML Form にしてみました。 適当にコードを改変して「実行」ボタンを押すと、経過時間が表示されます。まあそれだけですが、あえて挙げるなら、 GET メソッドなので、 URL をコピペしてブラウザ間での比較が可能 タイトルが「JSBench: 日付」になるので、ブラウザの履歴等から以前実行したテストコードを拾い出せること あたりが特徴です。 特におもしろい話でもなんでもないですが、自分のテ

    shozzy
    shozzy 2006/10/23
    10万回ループなのをよく見ずに「alert("hoge")」と書いて実行し、見事にハマった俺が来ましたよorz[セルフブラクラ]
  • Kazuho@Cybozu Labs: re: javascript vs perl - オブジェクトのメモリー効率

    « JavaScript は、なぜプロトタイプベースなのか | メイン | JavaScript のベンチマーク » 2006年10月20日 re: javascript vs perl - オブジェクトのメモリー効率 というわけで、間違っていることを実証してみました。 javascript vs perl - オブジェクトのメモリー効率 - 404 Blog Not Found 言語仕様のメモリ効率性を考えるのにあたって、(メモリの潤沢な環境向けの) 特定の実装間の比較をしても意味がないと思います。「perl のソースコードよりも SpiderMonkey のソースコードのほうが小さい」というような優劣の比較に (ほとんど) 意味がないのと同じです。 また、シンセティックなベンチマークもどうかと思います。たとえば、弾さんのコードをちょっといじれば、以下のようにプロトタイプ指向 OO のメ

  • Kazuho@Cybozu Labs: JavaScript は、なぜプロトタイプベースなのか

    « JavaScript を学ぶ上で読むべきウェブサイト | メイン | re: javascript vs perl - オブジェクトのメモリー効率 » 2006年10月19日 JavaScript は、なぜプロトタイプベースなのか 決して専門ではないので、以下、間違っていたら指摘してください。 JavaScript がプロトタイプベースであることに対する一番妥当な説明は、クラスベースのオブジェクト指向言語よりもプロトタイプベースの言語のほうが、ランタイムの構造が単純になり、かつ、メモリ使用量が小さくなるからでしょう。 クラスベース OO のランタイムを作成しようと思うと、以下の各機能が必要になります。 1) クラス毎: メンバ関数を納めるハッシュテーブルと、親クラスを指すポインタ 2) インスタンス毎: プロパティを格納するハッシュテーブルと、クラスへのポインタ また、インスタンスの生

  • Kazuho@Cybozu Labs JavaScript を学ぶ上で読むべきウェブサイト

    « JavaScript の String 型を継承する | メイン | JavaScript は、なぜプロトタイプベースなのか » 2006年10月18日 JavaScript を学ぶ上で読むべきウェブサイト JavaScript について議論する際、良く挙げられる参照文献は ECMA-262 (日語版) です。 しかし、どちらかというと ECMA-262 は JavaScript の処理系を実装する人に向けた文書なので、JavaScript を使いたい人には向きません。 私は、 JavaScript のユーザーには、mozilla developer center の Core JavaScript 1.5 Guide (日語版)Core JavaScript 1.5 Reference (日語版は整備中?)が良いのではないか、と思っています。 Mozilla のドキュメントかよ