Dont Jump Edward
・「押すなよ!押すなよ!絶対に押すなよ!」
熱湯風呂に入るときの決まり文句で、「押すなよ」は準備中、「絶対に押すなよ」は準備完了(押してくれ)の合図である。 (ダチョウ倶楽部)
押しちゃいないけど、この状況で子供に「dont' jump」はネタふりなんじゃないの。
« 2007年09月30日 - 2007年10月06日 | メイン | 2007年10月14日 - 2007年10月20日 »
・「押すなよ!押すなよ!絶対に押すなよ!」
熱湯風呂に入るときの決まり文句で、「押すなよ」は準備中、「絶対に押すなよ」は準備完了(押してくれ)の合図である。 (ダチョウ倶楽部)
グーグルはほうっておくとアリの巣の中まで調べ始めるんじゃないか?google mapにstreetviewってのがあるの知らなかったんですけど、最近、道路単位で閲覧できる都市が増えたらしいですよ。全部で15都市あるのかな。
増えたのはシカゴ、ピッツバーグ、フィラデルフィア、フェニックス、ポートランド、ツーソンみたいです。新しいピーピングスポットが増えたんですね!
見てみたんですけど、google earthとはまた違った面白みがあります。でもどうやって写真に収めたんでしょうね。数メートルごとに、おおよそですが360℃ぐるっと撮る必要があるんですよね。やってみるとわかると思いますが自分が(車か何かで)走っているような印象は残りますね。
なんて思って検索していましたら面白いエントリがありました。車の上にカメラがあるんですね。早く日本にも上陸しないかなー。
ウェブサービスも3個作ってみたので、咲と五月女の製作を進めようかと思います。
第4話は、ちょっとネタというか、咲と五月女のトークで遊んでみようかと思います。トークネタだとストップモーションらしい演出はあまり期待できないのですが、試行錯誤しながらカメラワークとかいじってみようかと思います。
で、ニコニコのほうのリンクですが、ちょとみてみたらビュー数は多くないのですけど意外と叩かれてないのでうれしいです。照明がよくないとか、アドバイスまでいただいたりしちゃいました。
続きを読む "咲と五月女第4話の製作に取り掛かろうかと思います。" »
only a friend
the first postから面白いムービー見つけたよ。
お前はいつから待ってんだ?って感じですけど、本当に遭遇したら丁重にお断りしたいですね。いやぁでも困ってるだろうしなぁ。うーん。。。
via:The First Post
mojaラボ気になるキーワード検索について簡単に技術解説します。flickrぽいロゴは別に意味はありません。ココで作れますよ。
と言うわけで、たいしたことはやってないんですけど、いくつかのウェブapiを使っていますので、その紹介も含めて解説したいと思います。
※すみません。今、firefoxだとちゃんと動かない模様です。えとinnerHTMLがfirefoxだとダメみたいですね。てことはこのページ下部のサイト内検索もうまく見れていないんですね。orz
・文章から特徴的な単語を抜き出して、主要な検索エンジンやウェブサービスの結果を返す。
→ここでいう文章は、主にブログエントリなんかを期待してます。
※ちなみに入力されたエントリをログにとったりはしてません。
・tf-idfという、まさに文章の特徴的な単語の抽出が出来ていません。
→代わりにkizAPIの、きざしランキングウェブサービスを利用しました。
それでは、どういう仕組みになっているのがを簡単に説明します。
まず、各々のウェブサービスの呼び出しについてです。
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( "" );
}
function getWordRankData()
{
if ( ( httpInst.readyState == 4 ) && ( httpInst.status == 200 ) ){
var xmlData = httpInst.responseXML;
スクリプトがproxy.phpにパラメータを渡して、proxy.phpがそのパラメータによって呼び出し先を適宜変更してあげる感じです。
ちなみにこういうプロキシサービスを作らなくてもJSONP(JSON with padding)という方法をとれば、プロキシなくても出来るようです。ふへー。throw lifeさんに判りやすい説明がありました。
きざしランキングウェブサービスで返ってくるxmlのCDataのリンクタグを削除したいのでstripTags()を使いました。つまりローカルでデータを整形しています。コレはサーバでやらんとだめですね。。。
via:http://www.prototypejs.org/
文章に上限がないとなかなか結果が返ってこないので、送信できる文章は2048文字以内の制限を掛けています。
yahooの形態素解析は1度に送れるバイト数の上限を定めていますので、ブラウザからもらったテキストは適宜分割して形態素解析を行っているわけです。
※本当は解析を行った結果をさらに、tf-idfで重要語句を判定したかった。
# $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パーサは以下のようなクラスを作ってパースしています。"SURFACE"タグに目的のワードが入っているわけですね。
ちなみにこのクラスのインスタンスはパースが終了するごとに、unset( $xml_parser );のように開放しないとうまく動きませんでした。1つのインスタンスで複数のxmlをパース出来ないんでしょうね。多分。
尚、$retAryは返却するxmlの実データになるのですが、C++のSTLで言うpairのfirstに解析後の単語、secondにその嵩みが入っています。
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
エントリを連投してますが、ソニーのBraviaの宣伝て日本だと、子供がカラーボールを噴水に投げ込んでいるコレですよね。
このウサギの奴ってCrunchGearで知ったんですけど、北米版ではこれが流れてるのかな。
どっからどこまでが実際に人の手で作られたストップモーションで、どこまでがCGでの合成なんでしょうね。すげぇ気になります。全部ほんとにやってたらブラビア買う。うそ買わない。
via Crunch Gear
これって見た感じ、携帯電話のインターフェイスと似てるんですが、使い勝手のほどはどうなんだろうね。
片手だけでメッセージを組み立てたてられたら尚いいんだけど、そういうつくりではないですね。カッコイイにはカッコいいんだけど、携帯でいいじゃんみたいな感覚がワタシ個人的にはあります。
キーボードの配列を片手ですべて解決できるようなインターフェイスがあったら飛びつくんだけどなぁ。
なんかマッサージボールみたいなボコボコが沢山ついてて、それでメッセージが組み立てられるの。妄想ばっかり膨らんでますが。そんなんが欲しい。
via Yanko Design
カルボナーラって好きなんですけど、かなりコッテリ目なので食べているうちに飽きちゃったりしませんか?ウチのカルボナーラは、コッテリ感を残しつつもさっぱりとした隠し味があるんです。
アレンジしたところを列挙すると
てのがウチの作り方です。結構美味しくできますよ。
秋ですので秋鮭を使ってみました。多分1番マッチするんじゃないかなと思います。
鮭のソテーにレモン醤油はマッチするのですが、カルボナーラにはどうなのよ?っておもうかもしれません。意外と合うんですよ。量によりますので、あまりたくさんかけすぎないでくださいね。
「・・・ん。あれ?もしかしてレモン入ってるのかな・・?」くらいの量です。
あと、ソースを作るぞー!って意気込んで卵黄をいきなり使うと固まって失敗したりすることがあります。
あと味をつけたり整えたりするのは、最後にやると結構失敗しません。
・「押すなよ!押すなよ!絶対に押すなよ!」
熱湯風呂に入るときの決まり文句で、「押すなよ」は準備中、「絶対に押すなよ」は準備完了(押してくれ)の合図である。 (ダチョウ倶楽部)
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|