フリックスの日記

2007-05-28

Googleサイドバーからの検索は99年から存在した。

インターネットエクスプローラーを使ってないので気が付かなかったけど、検索バーからの Google 検索って昔からあったんだね。

ちゃんと「次へ」って押すとサイドバー内でページ遷移するんね。

http://www.google.com/ie

インターネットアーカイブへ

サイドバーは便利だけど入り口としては使いづらい、または習慣が身に付かないのかもしれない。

または、本当は大半のユーザーがここからの検索を知っている、のかもしれない。十分ありえる。

2007-05-27

PHP、array_map と for文の実行速度は for文の方が速い。しかしもっと速いのは・・・。

みんな知っていることかもしれないけれど・・・。

array_map 関数って便利だなー、是非活用しよう!と思ったんですがもしかしたら速度に問題ないだろうか?と思って調べてみました。

ネットで調べたところでは、

404 Not Found

というのがあって array_map 関数のほうが速いと書いてありました。

でも簡単に作った比較のスクリプトでは array_map の方が遅くて、for文よりも foreach文の方がはやかったのです。

どうやら、

for($i=0; $i<count($array); $i++ ) {

ここの配列の数を毎回取得しているのが原因なのと $i++ より ++$i の方がはやいらしい。なぜかは今は知りませんw

これを直してテストをしました。

また繰り返しも加えたのと foreach を加えたのと、おまけもあります。

簡単に作ったスクリプトは以下の通り。

<?php
function a($a) {
    return $a . "\n";
}

$loop = 50;

$array = array_pad(array(), 32000, "a");
$array_count = count($array);

/*
 * array_map の計測
 */
$s = 0;
$s = microtime(true);
for ($l = 0; $l < $loop; ++$l) {
    $array2 = array_map("a", $array);
    unset($array2);
}
$u_map = microtime(true) - $s;

/*
 * for文 の計測
 */
$s = 0;
$s = microtime(true);
for ($l = 0; $l < $loop; ++$l) {
    for($i = 0; $i < $array_count; ++$i) {
        $array2[] = a($array[$i]);
    }
    unset($array2);
}
$u_for = microtime(true) - $s;

/*
 * foreach文 の計測
 */
$s = 0;
$s = microtime(true);
for ($l = 0; $l < $loop; ++$l) {
    foreach($array as $k => $d) {
      $array2[] = a($d);
    }
    unset($array2);
}
$u_foreach = microtime(true) - $s;


/*
 * foreach文 の計測
 * 配列の参照を加えた。
 */
$s = 0;
$s = microtime(true);
for ($l = 0; $l < $loop; ++$l) {
    foreach($array as $k => $d) {
      $array2[] = a($array[$k]);
    }
    unset($array2);
}
$u_foreach2 = microtime(true) - $s;


echo "array_map:    $u_map\n";
echo "for:          $u_for\n";
echo "foreach:      $u_foreach\n";
echo "foreach2:     $u_foreach2\n";

結果は、

array_map:    4.18736886978
for:          4.02036190033
foreach:      4.01496505737
foreach2:     4.30645799637

という感じです。

2007-05-24 [Opera][Wii]インターネットチャンネルの拡張機能について。

Wiiインターネットチャンネル拡張機能を少し触ってみました。

インターネットチャンネル向けのウェブページを作りたいのですが…。 : Q&A - Wii

↑を参考にして色々触ってみました。読んでみると isBrowsing が 1 の時の動作が微妙かな?と思いましたが本当に微妙なところがありました。

もうひとつ微妙だと思ったのは2本目以降のリモコンのリンクなどへのイベントかな。2本目以降の当たり判定は自作になりそう。

isBrowsing が 1 でも 0 でも同一の操作性を持たせるライブラリができると嬉しいですね。

2007-04-22 [JavaScript][Firefox][Opera]Google in Sidebar 機能追加。

Google in Sidebar に機能を追加しました!

no title

f:id:flix:20070422023544j:image:left

詳しい使い方は前回の日記[Firefox][Opera][Sidebar]サイドバーにGoogle検索を。 - フリックスの日記をごらんいただくと分かります。

検索結果をタブで切り替えられるように機能を変更しました。

タブの数を増やすと折り返しがあるとタブの画像が変なところで折れたりしてしまいます・・・。

画像でタブを表現しなくても別にいいかな〜、なんて思ってますがどんなもんでしょ?

Ajax の動作は jQuery を利用しています。

あと JavaScript でのクラスの実装や、 prototype も理解できるようにコーディングしていきました。

何か気がついた点などありましたらご意見ください・・・。

どうぞご利用ください。

2007-03-25 [Firefox][Opera][Sidebar]サイドバーにGoogle検索を。

サイドバーGoogle検索を。

Firefoxツールバー周りが見直されてきているのかな?
サイドバーGoogle 検索ができるようしてみました。

no title

FORM の acition とリンクターゲットを、サイドバーにするのか、メインとなる画面へのリンクとするのかを制御しているぐらいが特徴です。
勢いで作った、ってやつです。

これで検索結果を常に見える位置に置いて実際のページを開き、次のページを見るときに毎回閉じたりウィンドウを切り替えたりする必要がなくなります。

こんな感じ

f:id:flix:20070325114331g:image

Firefoxサイドバーに追加する方法

f:id:flix:20070325103755g:image

Operaサイドバーに追加する方法

f:id:flix:20070325103856g:image

「関連検索」と「次へ」はこれから実装してみたいと思います。