タグ

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

  • サイボウズ・ラボユースを1年間やってみてわかったこと | TAKESAKO @ Yet another Cybozu Labs

    サイボウズ・ラボユースとは、2011年から始めた学生支援制度で、詳細は…中谷さんによる解説サイボウズ・ラボユースってなに? – Mi manca qualche giovedi`?が詳しいです。 一部、引用すると: サイボウズ・ラボユースで「何をやってもらう」か。 実は設問がすでに間違っている。ラボユースは「やってもらう」ところではなく、自分から「やりたいこと」をやるところ。 というわけでインターンとは全然違う。サイボウズの業務の一部をやってもらうなんてありえない(人がよほど強く希望でもしない限り)。そもそも NDA(秘密保持契約)すら結ばないし。 サイボウズ・ラボユースに応募するには 対象が学生なのはさすがにわかると思うのでおいとくと、上で書いたように「やりたいこと」がある人というのが必須要件。 「開発支援」なので、コンピュータの上で動く何かを作ることが核になっていること。 そして成果

  • Kazuho@Cybozu Labs: アクセスログからアテンション(注目情報)をデータマイニングする手法について

    多数のユーザーの行動記録からアテンション情報(注目されているデータが何か)をデータマイニングしたいというのは、大量のデータを扱っているウェブサイトにおいては自然と出てくる要求です。そこで、先月末にサービスを終了したサービス「パストラック」において使用していた、アクセスログから注目度(人気度)の高いウェブページや人名等のキーワードを抽出するためのアルゴリズムを紹介しておきたいと思います。 たとえばはてなブックマークのような、ユーザーの能動的な行為(「ブックマークする」という作業)から注目情報を抽出するのは決して難しいことではありません。それは、直近の一定期間内のブックマーク数=注目度、という前提が上手に機能するからです。現に、はてなブックマークの人気エントリーは、最近24時間程度の期間内にブックマークしたユーザー数の多い URL を降順で並べているように見受けられます。 しかし、アクセスログ

  • Kazuho@Cybozu Labs: String::Filter っていうモジュール書いた - 続: (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について

    先のエントリ「(Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について」の続き。 弾さんが「404 Blog Not Found:DHTML - 構造化テキストは構造化するのがやっぱ正しい」で示されているような DOM ベースの操作を行えば、原理的に XSS 脆弱性を防ぐことができます。ただ、クライアントサイド JavaScript によるレンダリングはウェブの構造を破壊するという点で筋が悪い(テーブルと FONT タグを利用したページレイアウトが批判されていた頃を覚えていらっしゃいますでしょうか。JavaScript によるレンダリングはウェブのリンク構造も破壊するので一層たちが悪いというのが自分の考え)ですし、サーバサイドでの DOM 操作は重たいので、できれば避けたいところです。 構造化テキストの HTML への変換は、よほど複雑な記法でない限り

  • ジープの解体と組み立て。4分で | 秋元@サイボウズラボ・プログラマー・ブログ

    実際には3分ちょっとですね。これはすごい

  • 図解: グーグル検索はどのように動いてるのか | 秋元@サイボウズラボ・プログラマー・ブログ

    かなり大きな画像ですね。じっくり読んでみたい方はリンク先で。 Infographic by PPC Blog クローリング、インデクシングからサジェスト、ローカライズ、フィルタリング、広告表示まで、検索ワードを入力してから結果ページが表示されるまでに行われているであろう処理が解説されています。

    図解: グーグル検索はどのように動いてるのか | 秋元@サイボウズラボ・プログラマー・ブログ
  • Kazuho@Cybozu Labs: 既製品の管理ツールを使わないことでウェブサービスの TCO を下げる話について hbstudy#8 で話してきた件

    昨日、hbstudy#8 で話をする機会をいただくことができたので、Nagios や Amanda といった既製品の管理ツールやバックアップツールを使わずに内製したことで「パストラック」の運用コストを下げた、という話をしてきました。 もちろん、「既製品を使わない」というのもひとつの手段にすぎませんから、それを無闇にお勧めするつもりはありません。ただ、小回りの効くツールを組み合わせる手法にも十分な競争力があるという点、あるいはその事例として参考になれば幸いです。 スライドはこちら。hbstudy 運営の皆様、話を聞いてくださった皆様、ありがとうございました。

  • Kazuho@Cybozu Labs: パフォーマンスとスケーラビリティのためのデータベースアーキテクチャ (BPStudy#25発表資料)

    先週金曜日、BPStudy#25で、「パフォーマンスとスケーラビリティのためのデータベースアーキテクチャ」という題目で話をさせていただきました。その際に使用した発表資料は以下のとおりです。 1. Happy Optimization 最初に、最適化の考え方として、上限値を予測し、それを元にリソース配分を考える、という手法を説明しました。

  • Kazuho@Cybozu Labs: 「サーバ書くなら epoll 使うべき」は、今でも正しいのか

    多数のTCP接続をハンドリングするサーバを書くなら、1コネクション1スレッドのモデルではなく、epollやkqueueのようなイベント駆動型のI/O多重化を行うべきだ、と言われます。だが、そのような主張は、「C10K問題」が書かれた2002年から7年経過した今でも有効なのでしょうか? echoサーバを書いて、ベンチマークを取ってみることにしました。 ふたつのグラフは、いずれも接続数とスループットの関係を表しています。最初のグラフは、全接続がアクティブに通信した場合、あとのグラフは、全接続のうち小数のコネクションが順次アクティブになっていく、というモデルです。これらのグラフから、以下ようなことが読み取れます。 epoll も per-thread モデルも、良くスケールする epoll は、ワークセットが小さい場合に (最大50%) per-thread モデルよりも高速 少なくとも、1コネ

  • 13,400円で宇宙からの写真を撮ったMITの学生の話 | 秋元@サイボウズラボ・プログラマー・ブログ

    これがその写真の一枚 マサチューセッツ工科大の二人の学生Justin LeeさんとOliver Yehさんが、普通にお店で入手できる部品を組み合わせることで、これまでにない超低予算(148ドル)での成層圏からの地球撮影に成功した、ということです。 その手順ですが、まず、気象観測用の300グラムのゴム気球(1800円)、それにパーティーグッズの店でヘリウムを2700円分詰めてもらいます。 成層圏での気温は-55度にもなるので、普通のバッテリーは動かなくなります。そこで、高価な耐寒機器やヒーターを搭載する代わりに、携帯カイロを電気系に密着させ発泡スチロールでカバーします。 撮影した写真がどの高さから取られているかを記録し、撮影を終えたカメラを回収するためには、カメラの場所を追跡する必要がありますが、これも高価で重いGPSモデムではなく、GPS内蔵の携帯電話(4500円)を使うことに。カメラと接

    13,400円で宇宙からの写真を撮ったMITの学生の話 | 秋元@サイボウズラボ・プログラマー・ブログ
  • 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 | 秋元@サイボウズラボ・プログラマー・ブログ
  • もしも神がプログラマーだったら | 秋元@サイボウズラボ・プログラマー・ブログ

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

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

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

    Javascriptでブロック崩しを作る手順が全公開