タグ

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

  • Kazuho@Cybozu Labs: Re: for 文を setTimeout に変換する

    « メッセージキュー事始め in Perl - コマンドラインクライアントを作ってみた | メイン | djbdns にパッチをあてて Anti-DNS Pinning 対策 » 2007年11月08日 Re: for 文を setTimeout に変換する for 文を setTimeout に変換する - IT戦記の件。おもしろい。自分だったらこう書くかなと思いました。 function timeout_for(f1, f2, f3, fe) { var i = typeof f1 === 'function' ? f1() : f1; var rep = function () { if (typeof f2 === 'function' ? f2(i) : (i < f2)) { setTimeout( function () { fe(i); i = typeof f3 == '

    mainyaa
    mainyaa 2007/11/09
    「for 文を setTimeout に変換する」の自分だったらこう書く。
  • BitTorrent Conference 2007へ行ってきた | 秋元@サイボウズラボ・プログラマー・ブログ

    BitTorrent Japanというのが設立されていたようで、BitTorrentのクライアント網をビジネス向けコンテンツ配信に使うというエンタープライズ向けのビジネスを日で開始しているようだ。 そのBitTorrent Japanが、プロトコル設計&実装者のBram Cohen氏も呼んで説明会をする、という話が知り合いから来たので、聴きに行ってきた。 BitTorrent Conference 2007 新聞社やオンラインメディアの記者さんたちがたくさんいたので、ニュースでも出ているとは思う。 何をどうやってビジネスにするのか、自分でも疑問だったので、理解した範囲でまとめると、 BitTorrentのネットワークは、BitTorrentユーザのPCや帯域を集めて、コンテンツをユーザの近くにキャッシュでき、その結果巨大なファイルの配布が高速になる。コストも安い BitTorrentユー

    mainyaa
    mainyaa 2007/11/09
    BitTorrentカンファレンスなんてあったのか。そこまで大きくなってたとは。
  • x86カルトクイズ (mitsunari@cybozu labs)

    x86の解説をいざ始めてみると,どうもblogという媒体はやりにくいので別ページで進めることにしました.すいません.まとめ直すまでしばらくお待ちください.あと基的なことばかり続いたので,ちょっとマニアックネタに走ってみます. というわけで突然ですがクイズです.そこそこ高い難易度に設定したつもりですが,いかがでしょう.初心者の方は全然分からなくても大丈夫です.あえて曖昧な記述をしている部分もあります.後半の答えは凄いものがあるといいなあ.あと,難問奇問募集中. 以下は断りがない限り, 環境は32bit OS上のPentium4以降のx86 CPU 関数の呼び出し規約は__cdecl 配列は16byte alignmentされていて複数の配列はオーバーラップしていない ループは4の倍数と仮定してよい ものとします.CPUに依存する場合は明記してください. Q1(5点) 符号なしeaxの値を4

    mainyaa
    mainyaa 2007/11/09
    難しい;;
  • throw new CybozuLabsException() - AJAJAでJSmartyを使う

    throw new CybozuLabsException() - JavaScriptにはヒアドキュメントがないで書いているように最近AJAJAの調査をしているのですが、先日d:id:shogo4405さんが、クライアントサイドのJavaScriptPHPのテンプレートエンジンSmartyと同じような動作を実現するJSmartyを公開されたので、これをサーバサイドのJavaScriptであるAJAJAで使えないだろうかと試行錯誤してみました。 jsmarty_bbs-0.1.tgz jsmarty_bbs-0.2.tgz これはJSmartyを使ったBBSです。 データベースはSQLiteを利用しているのでdbsフォルダとbbs.dbに書き込み権限が必要になります。 windowやdocument、locationといったオブジェクトがないのでそのあたりを適当にごまかしてデータの取

  • Kazuho@Cybozu Labs: Web Identity Syndication (WEIS)

    表の各項目について説明します。なお、以下では WEIS の仕様に準じ、リソース (データあるいは機能) を提供するウェブサイトを Provider、それを利用するウェブサイトを Consumer と呼びます。 ・スケーラビリティ Consumer が Provider 毎にサービスをカスタマイズする必要があるかどうか、を示すのがこの項目です。 flickr や 30 boxes の承認 API は自社のアプリケーションに密結合されています。また、無知な Consumer がリソースにアクセスしようとして認証を要求された場合に、どのようにして認証トークンを要求すればよいか、発見 (Discover) する仕組みを持っていません (つまり、認証 API の URL について、 Consumer が事前に知っておく必要がある) 。 したがって、flickr や 30 boxes の API は、

    mainyaa
    mainyaa 2007/10/29
    サイボウズラボで暖めていた認証API仕様「WEIS」のドラフトを公開。
  • TAKESAKO @ Yet another Cybozu Labs: FlashLite難読化どう書くか?第2回モバイル勉強会

    第2回モバイル勉強会にて、FlashLiteの難読化について発表してきました。 そのときの発表資料を若干修正してSlideShareにアップロードしました。 途中のデモに失敗してgdgdになっていたりするので、ustream.tvの動画の方はあんまり見ないで下さい。(><) 自分はモバイル業界ではありませんでしたが、他の方の発表も非常に面白かったです。 下の写真は小飼弾さんのケータイを使ったプレゼンを再現したものです。 総勢12名の発表者のみなさん、会場を提供してくださったECナビさん、イベントを取り纏めてくれたmemokamiさん、ustream.tvの中継を見てくださったみなさん、どうもありがとうございました。

    mainyaa
    mainyaa 2007/10/24
    バイナリを弄って難読化。逆コンパイラ側で対応されたらいたちごっこな手法?
  • phpspotの人は正規表現について語らないほうがいいのでは | 秋元@サイボウズラボ・プログラマー・ブログ

    「実用的なPHP用の正規表現x8」というphpspot開発日誌という記事で、 8 Practical PHP Regular Expressions – Web devlopment blogという、今日del.icio.us/popularに出ていた記事の紹介がされている。このサイトの記事はいつもそうだけど、はてなブックマークでも人気で、既に50名を越えるユーザにブックマークされているようだ。 1 メールアドレスチェック $string = "first.last@domain.co.uk"; if (preg_match( '/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $string)) { echo "example 3 successf

    mainyaa
    mainyaa 2007/10/17
    英語ブログからタイトルが魅力的な記事を試さないで訳すだけメソッド。
  • Kazuho@Cybozu Labs: Perl から MySQL に非同期アクセスする方法

    « サーバシグニチャは隠さないのが当たり前 | メイン | swifty-0.02 と Perl バインディング » 2007年09月10日 Perl から MySQL に非同期アクセスする方法 mod_perl のプロセス内でやるのに POE でイベントループ回せ、ということ? もうちょいkwsk! > b:id:kazuhooku naoyaグループ - naoyaの日記 - 非同期SQLサーバ エントリ全体の趣旨はさておき、ソケット通信を非同期化するためにまた別のソケット通信を行うという使用例に違和感を覚えたのですが、回避策としてブクマコメントで提示した POE::Component::EasyDBI も内部で fork (&プロセス間通信) してるんですね。変なコメントしてごめんなさい忘れてください。って、それだけではなんなので... ここから題。 私はそういうケースに遭遇したこ

    mainyaa
    mainyaa 2007/09/10
    メモ。
  • TAKESAKO @ Yet another Cybozu Labs: LL魂お疲れ様でした[LLSpirit]

    LL魂、参加されたみなさんお疲れ様でした。みなさんのお陰で無事イベントを終了することができました。ありがとうございました。 前半の20枚だけですが、Flickrに写真をアップロードしました。 詳しい感想はのちほど。いろいろ新しい刺激を受けました。 とりいそぎ、Lightning Talksの発表資料(※画像はイメージでしたバージョン)を公開します。 イメージファイト! - 画像に埋め込まれたPHP・XSS攻撃コードと戦う5つの方法 - 11 竹迫良範(Shibuya Perl Mongers) http://wafful.org/mod_imagefight/ImageFight-LL2007.ppt 先日、PHPの攻撃コードが隠された画像ファイルが、大手ホスティングサイトで発見されたとの報道がなされました。GIF,PNG,JPEG,BMP形式の画像ファイルには、PHPのRFI攻撃で使用さ

    mainyaa
    mainyaa 2007/08/06
    ほぼコレが目的でLL魂行った。画像に埋め込まれたPHP・XSS攻撃コードを防ぐ方法。
  • 秋元@サイボウズラボ・プログラマー・ブログ ついにページビューによる測定が最重要でなくなりそう

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

    mainyaa
    mainyaa 2007/07/10
    『ウェブサイトの視聴率測定最大手のニールセン/ネットレイティングスが、ページビューによるウェブサイトのランクづけをついに廃止(非公式化)し、サイト滞留時間でのランキングに切り替えるという発表』
  • Javascriptでdiffる ( with 形態素解析 ) (nakatani @ cybozu labs)

    Javascript で diff というのはいくつか試された例はあるようですが、まだこれといった決定打は出ていない様子です。 実は diff は見た目ほど軽い処理ではないので、Javascript にやらせるのはこれが結構大変…… diff の計算量は、おおざっぱに言うと比較対象の要素数の二乗に比例し(実際にはそれより小さくすることができるのですが、まあ話のイメージとして)、かつメモリを大量に消費するので、バッチ的な処理に最適化されていない Javascript にはどうしても荷が重いものとなってしまいます。 比較対象の要素数を減らせば当然計算量は減りますが、行単位で比較してもあまり嬉しくない(わざわざ Javascript で処理するということは自然文が対象と思って良いでしょう)。最小の文字単位だとギブアップ。 ということは形態素解析で分かち書きして、単語単位で diff するのが J

    mainyaa
    mainyaa 2007/06/29
    単語単位でDiffを実装するために、Yahoo!の日本語形態素解析Webサービスを利用。
  • 秋元@サイボウズラボ・プログラマー・ブログ: reCAPTCHA - キャプチャを利用した人力高性能OCR

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

    mainyaa
    mainyaa 2007/05/25
    Captchaで使う画像を、本から取り込んだがOCRで読み取りを失敗した画像を使い、ユーザーに、すでにわかっている単語とまだわかっていない単語の2つを読ませることで、人力OCRを実現する。すばらしい発想。
  • TAKESAKO @ Yet another Cybozu Labs: Wiiリモコンの値をJavaScriptで取得する方法(Wiiインターネットチャンネル)

    任天堂のQ&Aサイトで、Wiiリモコンの値を取得する方法が公開されていることを知人から教えてもらいました。 インターネットチャンネル向けのウェブページを作りたいのですが…。 : Q&A - Wii インターネットチャンネルの拡張機能について知りたい Wiiインターネットチャンネルでは特別な JavaScript を用いる事でWiiリモコンのひねりや テレビとの距離、複数のコントローラの状態を取得する事ができます。 手元にWii体の実機がないので(Wiiリモコンはある^^)まだ試していませんが、こんな感じでJavaScriptからWiiリモコンの値が取れるっぽいですね。 if (window.opera && window.opera.wiiremote) { var num = 0; // wiiremote number 0,1,2,3 var pad = window.opera.w

    mainyaa
    mainyaa 2007/05/23
    「Wiiインターネットチャンネルでは特別な JavaScript を用いる事でWiiリモコンのひねりやテレビとの距離、複数のコントローラの状態を取得する事ができます。」
  • キーワード抽出モジュール Lingua::JA::Summarize を使うコツ (nakatani @ cybozu labs)

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

  • log4ZIGOROu : Gearmanを使ってみた

    daemonの起動 下記のようにdaemonとして起動します。 daemon起動オプションに関してですが、PODの記載は誤りで--daemonizeでは無く--daemonです。 $ sudo gearmand --daemon --pidfile=/var/log/gearmand.pid --debug=1 関数の登録 次にgearmanに実行させたい処理を予め登録し、さらにjob queを待ち受けるworkerを記述します。 #!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); use Gearman::Worker; use Storable qw(thaw); use List::Util qw(sum); my $worker = Gearman::Worker->new; $worker->job

    mainyaa
    mainyaa 2007/05/16
    PerlのJobServer。
  • throw new CybozuLabsException() - YAPC::Asia Hackathon at Dan the hotel

    竹迫さんの紹介でPHPの人間ですがYAPCの後のhackathonに少しだけお邪魔させていただきました。 Pythonの西尾さんと一緒に突撃してPythonPHPも出来る子を証明するぞ!と思ったら、Device::USB::MissileLauncherはPythonの実装を参考にしたっぽくて、Pythonはすでに出来る子であることが証明済みでした。 PHPで実装するには、まずUSBを操作する為のライブラリが必要になります。竹迫さんに教えてもらって、cvs.php.netにusblibというライブラリがある事を知ったのですが、phpize、make installしてみるとlibusbのCore部分しか実装されていないので残念ながらミサイルランチャーには利用できません。 次に、時間もないことだしPHPからPerlが実行できるPerl extensionを利用してDevice::USB::

    mainyaa
    mainyaa 2007/04/17
    GJ