11 23

[JavaScript]headタグにはJSを書かないのがユーザーのため

Tag: Webデザインuechoco @ 21 : 50 : 13

headタグベンチ - cloned.log
http://d.hatena.ne.jp/cloned/20071123

 ユーザーが体感する速度で重要視されるのは何だろうか。自分としてはまず描画することが何よりも重要だと思う。特に検索エンジン等から初めて訪れた人は、どんな色でどんなロゴで何ができるサイトなのか、というようなことを無意識に心待ちにしていることだろう。そんな中でheadタグ内でscriptの読み込みをしている時間というのはとんでもないロスではないだろうか。描画しないと何も判断できないのだから。

cloned.log

 そうですね。確かに。今まで気にもしてませんでした。ユーザーのためを思うなら、headタグにスクリプトを書くべきではなさそうです。

 んーAjax的なページなら、非同期なんだし、多少遅れても問題なさそうですしね。

 ぁーまたMovableTypeのテンプレート書き換えるのか・・・テンプレートの編集面倒なんだよなこれ。なんかいい方法ないだろうか。


11 22

[セキュリティ]md5ハッシュはそのうち可逆になるのかな

Tag: 情報収集uechoco @ 10 : 53 : 59

Rauru Blog » Blog Archive » MD5破りにGoogleを活用
http://wordpress.rauru-block.org/index.php/1512

種を明かすと、単語をMD5でhash化した値をURIの一部に使うような CMS がけっこーあるんだそうです。つまり、世界中でそういう CMS が使われてるってことは、世界中で MD5 変換データがせっせと作られてて、さらに Google がその変換データを検索しやすいようにせっせと indexing しててくれてる、という、分散コンピューティングと言うか web 2.0 と言うか集合知と言うかまあなんかそんな感じの素晴らしい状況が作り出されてるわけですな
Rauru Blog

 ぉぉ・・・GoogleはMD5変換テーブルのインデックスを持っている優秀な検索エンジンなんだ(ぇ

 これをみてふと思ったのですが、PCの暇な時間にMD5の変換テーブルを作らせといて、Webにアップして、Googleに教えてあげると、Googleはもっと賢くやばくなるんじゃ?まさかこんなところでmd5が人為的可逆ハッシュになるとは。この方法だと、しばらくすると他のハッシュアルゴリズムも可逆になってしまいそうですね


11 22

[php]第01回PHP懇親会行ってきました。

Tag: phpuechoco @ 09 : 31 : 09

 PHP勉強会初の試みで、食事しながらプレゼンをやるというPHP懇親会が昨日開催されました。参加者は29人です。php勉強会としてはは多い方ですね。企画・幹事のLINDさん、本当にお疲れ様でした。

 今回は、新宿のファンデリというお店を3時間貸しきっての会でした。「肉じゃない」勉強会でしたが、おいしい料理とお酒をいただけました。ありがとうございました。

一品目が肉じゃない(笑
一品目が肉じゃない(笑 @PHP懇親会

一応「肉」も出てきました。ってかこのから揚げうますぎw
一応「肉」も出てきました。ってかこのから揚げうますぎw @PHP懇親会

 発表自体は休憩を何度か挟みながら、けれど絶え間なく進み、全員終わったのは終了時刻ぴったりでした。みなさん、しっかりと技術的ネタ・個人的ネタを用意してきていて、かなりあせりました。危機感を感じて、みなさんが食べている横で急遽ネタを仕込ませました。そう、私はネタを仕込ませると言う肝心なことを忘れていたのです。とりあえず、4つほどネタを仕込んで、ちゃんと全部反応があったのでうれしかったです。LT(Lightning Talk)って初めてでしたが何とかやり終えました。

 プレゼンで使った資料はアップロードしました。ご自由にお取りください。

第01回 PHP懇親会 うえちょこ 発表資料

 また、プレゼンで少しだけ触れた翻訳APIの記事は、以下のリンクからどうぞ。

[php][WebAPI]WebserviceX.NETのTranlation Engineが動いてくれない (うえちょこ@ぼろぐ)
http://labs.uechoco.com/blog/2007/11/phpwebapiwebservicexnettranlation_engine.html
[php][WebAPI]EJ, JE translation APIは翻訳WebAPIとして使える (うえちょこ@ぼろぐ)
http://labs.uechoco.com/blog/2007/11/phpwebapiej_je_translation_apiwebapi.html

 いつもはマインドマップ描くのですが、今回は食事しながらと言うことで描くことができませんでした。しかし、神がいました。id:shimookaさんが、全員分のダイジェストを記録されていました。すばらしすぎます。また、PHP懇親会の告知ページに少しずつプレゼン資料があがっているようです。

 第02回PHP懇親会も楽しみにしています\(^o^)/


11 21

[php][WebAPI]EJ, JE translation APIは翻訳WebAPIとして使える

Tag: phpuechoco @ 17 : 37 : 18

前回のWebserviceX.NET Translation Engineに引き続き、翻訳WebAPIの調査。今回はEJ, JE translation APIの調査です。

EJ, JE translation APIは、Yahoo! Babel FishYahoo! Pipes経由で呼び出すことによって文章を翻訳するAPIです。下記が本家APIのURLとMASHAPEDIAの紹介記事です。

英語←→日本語の翻訳APIとして使えるYahoo Pipesを作った
http://muumoo.jp/news/2007/05/09/0translationapi.html

JSON形式で翻訳「EJ, JE translation API」 : WEBAPI一覧 : MASHUPEDIA - マッシュペディア - : Web API x Mashup
http://www.mashupedia.jp/webapis/view/292

概要としては、REST形式でAPIにアクセスし、翻訳結果をRSS/JSON/JSONPで返す感じです。

  • APIのURL
    • http://pipes.yahoo.com/pipes/pipe.run
  • パラメータ
    • _id
      • 翻訳の種類
      • EJ(英語→日本語)なら、「ZM5oVmX92xGrFWiRJhOy0Q」
      • JE(日本語→英語)なら、「ohZnaGr92xG36xIFyzUFzw」
    • _run
      • 「1」で固定
    • _render
      • レスポンス形式
      • 「rss」または「json」
    • _callback
      • _render = jsonのとき、JSONP用のコールバック関数名
    • text
      • 翻訳する文章(エンコード済み)
      • JavaScriptから実行する場合、encodeURIComponent()関数をかける必要がある
      • phpから実行する場合、urlencode()関数をかける必要がある

さきほどの本家のページにはJavaScriptのみで実装するサンプルが公開されています。今回はphpでJSONを分解するサンプルを試してみました。

PHP:
  1. require_once 'HTTP/Client.php';
  2.  
  3. // 翻訳したいテキスト
  4. $text = 'This is a pen.';
  5. // HTTP_Clientの初期化パラメータ
  6. $http_client_default_param = array(
  7.     'timeout' => 10,
  8.     'allowRedirects' => true,
  9.     'maxRedirects' => 3
  10. );
  11.  
  12. $http_client_default_header = array(
  13.     'Accept-Language' => 'ja-JP,ja;q=0.9,en;q=0.8'
  14. );
  15. // POSTする先のURIとそのパラメータ
  16. $uri = 'http://pipes.yahoo.com/pipes/pipe.run';
  17. $param = array(
  18.     '_id' => 'ZM5oVmX92xGrFWiRJhOy0Q', // EJ
  19.     //'_id' => 'ohZnaGr92xG36xIFyzUFzw', // JE
  20.     '_run' => 1,
  21.     '_render' => 'json', // or rss
  22.     //'_callback' => 'example20070509callback', // JSONP
  23.     'text' => urlencode($text)
  24. );
  25. // レスポンスの発行
  26. $client =& new HTTP_Client($http_client_default_param, $http_client_default_header);
  27. $client->post($uri, $param);
  28. $response = $client->currentResponse();
  29. // JSON形式をPHPで操作可狽ネ形式にデコード
  30. $ret = json_decode($response['body']);    //>= php 5.2.0
  31. $tuple = $ret->value->items[0];
  32. // 表示
  33. echo sprintf("Title: %s<br />", urldecode($tuple->title));
  34. echo sprintf("Description: %s<br />", urldecode($tuple->description));

実行結果のサンプルは以下のようになります。

Title: This is a pen.
Description: これはペンである。

いくつかプログラムの補足をしておきます。

1. レスポンスの発行にはPEAR::HTTP_Clientライブラリを使用しました。簡単なライブラリなので何をしているのかはすぐにわかると思います。

2. json_decode()関数は、php 5.2.0から標準で組み込まれるようになったJSON 拡張モジュールに依存しています。それ以前のバージョンの方は、PEAR::Services_JSONphp-jsonなどの拡張ライブラリをインストールしてください。

これなら簡単な文章を翻訳するのに十分使えますね!


11 21

[php][WebAPI]WebserviceX.NETのTranlation Engineが動いてくれない

Tag: phpuechoco @ 16 : 20 : 50

翻訳のWebAPIを探していて、1つみつけたのが、WebserviceX.NETTranslate Engineです。

SOAPとかHTML(GET / POST)に対応しているはずです。んで、私はSOAPなんて使ったことも内容も知らないのですが、下記のコードでレスポンスが帰ってきたので、これでいいのかなっと。間違ってたら指摘してもらえると助かります。ちなみにphpマニュアルにも書いてあるとおり、SoapClientクラスなどのSOAP関数は、SOAP拡張モジュールを必要とするので、phpコンパイル時に「--enable-soap」オプションが必要になります。

PHP:
  1. define('WSDL', 'http://www.webservicex.net/TranslateService.asmx?wsdl');
  2.  
  3. $soap_client = new SoapClient(WSDL);
  4. $ret = $soap_client->Translate(
  5.   'EnglishTOJapanese',
  6.   'This is a pen.'
  7. );
  8.  
  9. print_r($ret);

んで、返ってきた結果のprint_rが、

CODE:
  1. stdClass Object (
  2.   [TranslateResult] => Value cannot be null. Parameter name: translationmode
  3. )

どうやら、translationmodeというパラメータがnullらしいのですが、Translate関数の定義は

string Translate(string $LanguageMode, string $Text)

なので、translationmodeというパラメータを送ることはできないはずなのですが・・・

もう少しググってみたら、いくつかのサイトで「ほとんどレスポンスが帰ってこない」「ほとんどエラーだけどたまに翻訳結果が返ってくる」といった記述がちらほら。これでは、私が書いたプログラムが正しいのかどうかも良くわからないです。成功していたとしてもこれでは実用に耐えられなそうですね。

今回はあきらめるかな。


« 前ページへ次ページへ »