« 2007年09月30日 - 2007年10月06日 | メイン | 2007年10月14日 - 2007年10月20日 »



2007年10月07日 - 2007年10月13日 アーカイブ

2007年10月07日

Dont Jump Edward


・「押すなよ!押すなよ!絶対に押すなよ!」

熱湯風呂に入るときの決まり文句で、「押すなよ」は準備中、「絶対に押すなよ」は準備完了(押してくれ)の合図である。 (ダチョウ倶楽部

押しちゃいないけど、この状況で子供に「dont' jump」はネタふりなんじゃないの。


[ 最近のエントリーとその関連エントリー ]


[ スポンサードリンク ]

2007年10月11日

グーグルはほうっておくとアリの巣の中まで調べ始めるんじゃないか?

googlestreetview2.PNG

グーグルはほうっておくとアリの巣の中まで調べ始めるんじゃないか?google mapにstreetviewってのがあるの知らなかったんですけど、最近、道路単位で閲覧できる都市が増えたらしいですよ。全部で15都市あるのかな。
増えたのはシカゴ、ピッツバーグ、フィラデルフィア、フェニックス、ポートランド、ツーソンみたいです。新しいピーピングスポットが増えたんですね!
見てみたんですけど、google earthとはまた違った面白みがあります。でもどうやって写真に収めたんでしょうね。数メートルごとに、おおよそですが360℃ぐるっと撮る必要があるんですよね。やってみるとわかると思いますが自分が(車か何かで)走っているような印象は残りますね。
なんて思って検索していましたら面白いエントリがありました。車の上にカメラがあるんですね。早く日本にも上陸しないかなー。

googlestreetview.PNG

5月末~6月あたりのエントリが沢山あったのでその頃開始したサービスだったんですね。何をいまさらというエントリでした。でも、ちょっとシカゴあたりに繰り出して、すばらしいピーピングスポット発見しちゃうぞー!


[ 最近のエントリーとその関連エントリー ]


2007年10月10日

咲と五月女第4話の製作に取り掛かろうかと思います。







ウェブサービスも3個作ってみたので、咲と五月女の製作を進めようかと思います。
第4話は、ちょっとネタというか、咲と五月女のトークで遊んでみようかと思います。トークネタだとストップモーションらしい演出はあまり期待できないのですが、試行錯誤しながらカメラワークとかいじってみようかと思います。
で、ニコニコのほうのリンクですが、ちょとみてみたらビュー数は多くないのですけど意外と叩かれてないのでうれしいです。照明がよくないとか、アドバイスまでいただいたりしちゃいました。

続きを読む "咲と五月女第4話の製作に取り掛かろうかと思います。" »

★このコンテンツに目的の情報はありませんでしたか?


[ 最近のエントリーとその関連エントリー ]


2007年10月09日

お前は待機してたのか?

onlyafriend.JPG

only a friend
the first postから面白いムービー見つけたよ。
お前はいつから待ってんだ?って感じですけど、本当に遭遇したら丁重にお断りしたいですね。いやぁでも困ってるだろうしなぁ。うーん。。。
via:The First Post


[ 最近のエントリーとその関連エントリー ]


mojaラボ気になるキーワード検索の解説

out.PNG

mojaラボ気になるキーワード検索について簡単に技術解説します。flickrぽいロゴは別に意味はありません。ココで作れますよ。
と言うわけで、たいしたことはやってないんですけど、いくつかのウェブapiを使っていますので、その紹介も含めて解説したいと思います。
すみません。今、firefoxだとちゃんと動かない模様です。えとinnerHTMLがfirefoxだとダメみたいですね。てことはこのページ下部のサイト内検索もうまく見れていないんですね。orz

<やりたかったこと>

・文章から特徴的な単語を抜き出して、主要な検索エンジンやウェブサービスの結果を返す。
→ここでいう文章は、主にブログエントリなんかを期待してます。
※ちなみに入力されたエントリをログにとったりはしてません。

<実現できていないこと>

・tf-idfという、まさに文章の特徴的な単語の抽出が出来ていません。
→代わりにkizAPIの、きざしランキングウェブサービスを利用しました。

それでは、どういう仕組みになっているのがを簡単に説明します。

  1. "きざしランキングウェブサービス"から、今日話題になったキーワードとその間連語300語くらいを取得する
  2. yahoo developer networkの"形態素解析ウェブサービス"を使って入力した文章を解析する。
  3. 解析結果の単語が1.のランキングに載っていれば、出力したタグクラウドのフォントカラーをいじる。
  4. 出力したタグクラウドのワードをオンクリックで"google search ajax api"による検索とkizAPIの"KWIC(KeyWord In Context)検索"を行う。

<ajaxとクロスドメインの問題>

まず、各々のウェブサービスの呼び出しについてです。
ajaxで使うXMLHttpRequestというインスタンスは、今そのページが表示されているドメインから、それ以外のドメインに対してリクエストを送ることが出来ませんので、(IEだと「書き込みできません」というスクリプトエラーになります)自分のドメインでプロキシっぽい動きをするサービスを用意してみました。
つまり、

javascript 自分のプロキシウェブサービス yahoo とか kizAPI ウェブサービス
javascript 自分のプロキシウェブサービス

のようにして呼び出して戻りのxmlを得ている訳です。

このやり取りを抜粋すると、こういうことになります。

・プロキシ側

    # $sendURLはkizAPIなどのウェブサービス呼び出し先。$_GETなどを判定して適宜変更する。
    $req =& new HTTP_Request( $sendURL );
    $req->setMethod( HTTP_REQUEST_METHOD_GET );
    if ( !PEAR::isError( $req->sendRequest() ) ) {
        # ヘッダーをContent-Type: text/xmlで返してあげないとスクリプトが理解してくれない
        header('Content-Type: text/xml');
        echo $req->getResponseBody();
    }

・呼び出し側

    // crtXmlHttpReqはファクトリみたいなもの。XMLHttpRequestインスタンスを返します。
    httpInst = crtXmlHttpReq( getWordRankData );
    if ( httpInst ){
        httpInst.open( "GET", "proxy.php?qry=1", false );
        httpInst.send( "" );
    }

・XMLを取得する

function getWordRankData()
{
    if ( ( httpInst.readyState == 4 ) && ( httpInst.status == 200 ) ){
        var xmlData = httpInst.responseXML;

スクリプトがproxy.phpにパラメータを渡して、proxy.phpがそのパラメータによって呼び出し先を適宜変更してあげる感じです。
ちなみにこういうプロキシサービスを作らなくてもJSONP(JSON with padding)という方法をとれば、プロキシなくても出来るようです。ふへー。throw lifeさんに判りやすい説明がありました。

<Prototype.jsの利用>

きざしランキングウェブサービスで返ってくるxmlのCDataのリンクタグを削除したいのでstripTags()を使いました。つまりローカルでデータを整形しています。コレはサーバでやらんとだめですね。。。
via:http://www.prototypejs.org/

<形態素解析>

文章に上限がないとなかなか結果が返ってこないので、送信できる文章は2048文字以内の制限を掛けています。 yahooの形態素解析は1度に送れるバイト数の上限を定めていますので、ブラウザからもらったテキストは適宜分割して形態素解析を行っているわけです。
※本当は解析を行った結果をさらに、tf-idfで重要語句を判定したかった。

・wordanalysis.phpの抜粋

    # $curMsgListは入力した文章を適当なデリミタでarrayにしています。
    # -----------------------------------------------------------------------------
    # センテンス毎に形態素解析
    # -----------------------------------------------------------------------------
    require_once( 'HTTP/Request.php' );
    $req =& new HTTP_Request( "http://api.jlp.yahoo.co.jp/MAService/V1/parse" );
    $arySize = count( $curMsgList );
    for( $idx = 0; $idx < $arySize; $idx++ ){
        $req->setMethod( HTTP_REQUEST_METHOD_POST );
        $req->addPostData( "appid", "**********" );
        $req->addPostData( "results", "uniq" );
        $req->addPostData( "response", "surface" );
        $req->addPostData( "filter", "1|2|9" );
        $req->addPostData( "sentence", $curMsgList[ $idx ] );

        if ( !PEAR::isError( $req->sendRequest() ) ) {
            $res = $req->getResponseBody();
            $xml_parser = new xml();
            $xml_parser->parse( $res );
            # ループ中のxmlパーサなのでunsetしておく。
            unset( $xml_parser );
        }
        $req->setURL( "http://api.jlp.yahoo.co.jp/MAService/V1/parse" );
        $req->clearPostData();
    }

<XMLパーサ>

xmlパーサは以下のようなクラスを作ってパースしています。"SURFACE"タグに目的のワードが入っているわけですね。
ちなみにこのクラスのインスタンスはパースが終了するごとに、unset( $xml_parser );のように開放しないとうまく動きませんでした。1つのインスタンスで複数のxmlをパース出来ないんでしょうね。多分。
尚、$retAryは返却するxmlの実データになるのですが、C++のSTLで言うpairのfirstに解析後の単語、secondにその嵩みが入っています。

・wordanalysis.phpの抜粋(xmlパーサクラス)

    class xml {
        var $parser;
        function xml(){
            $this->parser = xml_parser_create( 'UTF-8' );
            xml_set_object( $this->parser, $this );
            xml_set_element_handler( $this->parser, "TagOpen", "TagClose" );
            xml_set_character_data_handler( $this->parser, "CData" );
        }
        
        function parse( $data ){
            xml_parse( $this->parser, $data );
        }

        function TagOpen( $parser, $tag, $attributes ){
            global $refPrs;
            if( $tag == "SURFACE" ){
                $refPrs = $tag;
            }
        }

        function CData( $parser, $cdata ){
            global $refPrs;
            global $retAry;
            if( $refPrs == "SURFACE" ){
                if( isset( $retAry[ $cdata ] ) ){
                    $retAry[ $cdata ] += 1;
                }
                else {
                    $retAry[ $cdata ] = 1;
                }
            }
        }

        function TagClose( $parser, $tag ){
            global $refPrs;
            $refPrs = "";
        }
    }

<タグクラウドの生成>

後は、スクリプトのgetWordRankDataメソッドで取得したワードランク(refAryに格納されています)と解析後のワードをつき合わせてタグクラウドを生成しています。
wordanalysis.phpが返すXMLはcountタグにワードの嵩みが入っていて、コレがフォントサイズになります。itemタグには実際のワードが入っています。

function getElement()
{
    if ( ( txHttpInst.readyState == 4 ) && ( txHttpInst.status == 200 ) ){
        var xmlData = txHttpInst.responseXML;
        var elemListTags = xmlData.getElementsByTagName( "elem" );
        var countListTags = xmlData.getElementsByTagName( "count" );
        var itemListTags = xmlData.getElementsByTagName( "item" );
        var elemSize = elemListTags.length;

        resultText = "";
        for( i = 0; i < elemSize; i++ ){
            var wordCnt  = countListTags[i].childNodes[0].nodeValue;
            var itemName = itemListTags[i].childNodes[0].nodeValue;
            var color = "";
            
            // refAryの中身は↓な感じで格納されています
            // "オカザイル イケ EXILE 最高 岡村 岡村さん 見た 岡村隆史 面白かった のめちゃ ダンス" ... 
            // indexOfでヒットすればフォントカラーをいじります。
            for( ref = 0; ref < refAry.length; ref++ ){
                if( refAry[ ref ].indexOf( itemName ) > 0 ){
                    color = "style=\"color:#f93\"";
                    break;
                }
            }
            resultText = resultText + " <a href=\"#\" onclick=\"getReferWord( '" + itemName +  "' );OnLoad( '" + itemName + "' );\"><font size=\"" + ( wordCnt * 2 ) + "\" " + color + ">" + itemName + "</font></a> ";
        }
        $("result").innerHTML = resultText + "<ul><li>よく使われるキーワードを大きく表示しています</li><li>話題のキーワードをオレンジ色に表示しています。</li></ul><hr size=0 noshade />";
    }
    else {
        $("result").innerHTML = "解析中です。。。";
    }
}

タグクラウドのリンクタグにonclickでスクリプトを埋め込んでいます。これで、クリック時に検索キーワードを渡してgoogle検索と兆し検索が行われるという動きになります。
ここら辺は如何様にでもアレンジが出来そうですね。
via: throw life kizAPI yahoo developer network google search ajax api prototypejs


[ 最近のエントリーとその関連エントリー ]


sony braviaのストップモーション

エントリを連投してますが、ソニーのBraviaの宣伝て日本だと、子供がカラーボールを噴水に投げ込んでいるコレですよね。
このウサギの奴ってCrunchGearで知ったんですけど、北米版ではこれが流れてるのかな。
どっからどこまでが実際に人の手で作られたストップモーションで、どこまでがCGでの合成なんでしょうね。すげぇ気になります。全部ほんとにやってたらブラビア買う。うそ買わない。
via Crunch Gear


[ 最近のエントリーとその関連エントリー ]


2007年10月08日

手首に装着できる携帯電話の3×4キーパッド(チャット用)

finger_touching.jpg

これって見た感じ、携帯電話のインターフェイスと似てるんですが、使い勝手のほどはどうなんだろうね。
片手だけでメッセージを組み立てたてられたら尚いいんだけど、そういうつくりではないですね。カッコイイにはカッコいいんだけど、携帯でいいじゃんみたいな感覚がワタシ個人的にはあります。

キーボードの配列を片手ですべて解決できるようなインターフェイスがあったら飛びつくんだけどなぁ。
なんかマッサージボールみたいなボコボコが沢山ついてて、それでメッセージが組み立てられるの。妄想ばっかり膨らんでますが。そんなんが欲しい。

via Yanko Design

finger_touching2.jpg


[ 最近のエントリーとその関連エントリー ]


鮭とブロッコリーのカルボナーラ作ったよ!

DSCF6994.jpg

カルボナーラって好きなんですけど、かなりコッテリ目なので食べているうちに飽きちゃったりしませんか?ウチのカルボナーラは、コッテリ感を残しつつもさっぱりとした隠し味があるんです。

アレンジしたところを列挙すると

  • ニンニクを使う
  • 生クリームを使わない
  • レモン汁と醤油を使う

てのがウチの作り方です。結構美味しくできますよ。
秋ですので秋鮭を使ってみました。多分1番マッチするんじゃないかなと思います。

<材料>

  • 卵黄(1人一個)
  • 鮭切り身(1切れ)
  • レモン汁(1tsp)
  • 醤油(1tsp)
  • ブロッコリ(適量)
  • ブロックベーコン
  • ニンニク
  • 玉ねぎ(1人1/4カットくらい)
  • 牛乳(適量)
  • 粉チーズ(適量)
  • 白ワイン(適量)

<作り方>

  • ニンニクを炒めて、鮭をソテーします。
    • 鮭はあとでソースに絡めるので、焼きあがったら避けておきます
    • ここで、醤油とレモン汁を混ぜたものに焼きあがった鮭を漬け込んでおきます
  • 鮭を避けたら今度はベーコンです。ブロックベーコンのほうが雰囲気が出ます
  • 続けて玉ねぎを投入。材料を投入することによってフライパンの熱を冷ますイメージで焼き加減を見てみましょう。
  • 白ワインを投入してフランベします。しなくてもいいです。アルコールを飛ばします。
  • 生クリームではなく、牛乳を使ってソース状にします。
    • この時点では、ゆるいソースですが、大丈夫。
  • 粉チーズ(というか好きなチーズ)、塩、胡椒で味を調えてください
  • スパゲッティが茹で上がったらソースに絡めます。
  • ここで卵黄を落とせば、変に固まったりすることは無いと思います。
  • 牛乳、オリーブオイル、塩、チーズ、白ワイン、胡椒などで味を調えて出来上がりです。
  • 忘れてました。鮭をトッピングして出来上がりです。ワタシはブロッコリーも添えました

鮭のソテーにレモン醤油はマッチするのですが、カルボナーラにはどうなのよ?っておもうかもしれません。意外と合うんですよ。量によりますので、あまりたくさんかけすぎないでくださいね。
「・・・ん。あれ?もしかしてレモン入ってるのかな・・?」くらいの量です。
あと、ソースを作るぞー!って意気込んで卵黄をいきなり使うと固まって失敗したりすることがあります。
あと味をつけたり整えたりするのは、最後にやると結構失敗しません。


[ 最近のエントリーとその関連エントリー ]


2007年10月07日

Dont Jump Edward


・「押すなよ!押すなよ!絶対に押すなよ!」

熱湯風呂に入るときの決まり文句で、「押すなよ」は準備中、「絶対に押すなよ」は準備完了(押してくれ)の合図である。 (ダチョウ倶楽部

押しちゃいないけど、この状況で子供に「dont' jump」はネタふりなんじゃないの。


[ 最近のエントリーとその関連エントリー ]


ツリータイプ・カテゴリー

open all | close all

リファラから検索