Monthly Archives: November 2006

ブログ深追い検索で検索語が含まれない記事を結果から排除

ブログ深追い検索 (closed) パターンマッチングの検索エンジンであることを重視して、タイトルとサマリー内に検索語が含まれないものは検索結果から排除することにしました。 livedoorのブログ検索が特に、検索語が含まれていないのに検索結果に出てくるページが多いようです。。 一応、検索結果のURLにoriginal=1を付け加えると、すべての検索結果を含む版になります。 http://blogsearch.fukaoi.com/?q=wii&original=1 http://blogsearch.fukaoi.com/?q=wii&type=rss&original=1

Posted in いじる | Leave a comment

PostgreSQLでUNIXTIMEを使うときのTIPS

PostgreSQLで時刻を扱うとき、PHPのdate()で出力しやすいようにUNIXTIME(int型)で保存しています。SQL内での扱いが逆に面倒になるのですが、UNIXTIMEからtimestamp型に戻すTIPS。 create table test ( accesstime integer not null ); select to_char(’1970-01-01′::date + (accesstime || ‘s’)::interval, ‘YYYY-MM’) from test; 直接intからintervalに変更できないので(ERROR: cannot cast type integer to intervalが出る)secondsのsを文字列としてつなげてやるとうまくCASTできます。to_charはmktimeみたいな具合に書けます。 月の一覧を出すときはPHPで書くよりもSQLでgroup byした方が速いのでこんな感じ。 select to_char(’1970-01-01′::date + (accesstime || ‘s’)::interval, ‘YYYY-MM’) as m from test group by m order by m; 逆の操作は以下に載っています。 Converting a date to unix timestamp (epoch seconds) select [...]

Posted in いじる | Leave a comment

JavaScriptで画像を切り替える際に、あるコードだとIE6で動かなくなる

IEでのJavaScriptの動作確認は悪夢を見ること多々ですが、また謎仕様に遭遇。かなり長時間はまりました。。 動作例(PHPのソース) 先日作ったCAPTCHAを人間が見ても読めなかったときに画像を新しく生成し直す仕組みを考えていました。単純に、リンクをクリックするとJavaScriptが呼び出され、img要素のsrcを書き換える、という仕組み。上の動作例では?以降の引数にどんどん「a」を加えていく実装になっています。なおこのCAPTCHAはリロードすれば同じファイル名でも再生成されます。 hrefにはjavascript:void(0)を指定してonClickの方にコードを書く癖がついているので、今回もそれでやってFirefoxでは問題なく動いていたのですがIE6でなぜか動かず。onClickの中は実行されていますが、srcを書き換えても画像ファイルへのリクエストがなされません。ですので、画像の部分が空白になってしまいます。 キャッシュ等の問題を真っ先に疑いましたが、最終的にはhrefにvoid(0)を指定してonClickでJavaScriptを実行する組み合わせがよくないらしく、hrefで実行させたり、hrefの指定を#にしたりすれば動くようになりました。 原因がわかれば、Googleにどう聞けばいいかわかるのであっさり同じ問題の解決策が見つかりました。 ここで解説されているreturn false;をonClickに書き加える方がスマートですね。 Proxyとか :: javascript:void(0); で gifアニメ が動かないバク 僕が使った検索語の屍。もっと「バグ」方面で探した方が良かったかも。 javascript IE 画像の表示 javascript IE 画像 切り替え javascript IE 画像 再読み込み javascript img src reload

Posted in いじる | 4 Comments

カタカナでCAPTCHAをつくるPHPコード

CAPTCHAに関する記事。 Radium Software Development: Breaking Visual CAPTCHAs 高木浩光@自宅の日記 – 飾りじゃないのよCAPTCHAは PHPで使えるCAPTCHA画像作成ライブラリまとめ:phpspot開発日誌 CAPTCHA破りもかなりできるらしい。 アルゴリズム的には堅牢になっていませんが、生成する画像にアルファベットではなくて片仮名を使ったらどうだろう、と思ってphpspotでお勧めされていたKCAPTCHAのコードを拝見しつつつくってみました。 デモは以下。LGPLでPHPのコードごと見れます。 Japanese KATAKANA CAPTCHA test I published source code only: KATAKANA_CAPTCHA.php (main class) katakana_captcha_img.php (generate PNG image) index.php (test code) 参考にしたKCAPTCHAのコードはphpclasses.orgでユーザ登録しないとダウンロードできません。思ったより短いコードで、コアはたったの200行。 アルファベットをPNGから切り出している o=0, 1=lなど似た文字はあらかじめ排除している rnとrmのように隣り合うと識別しにくくなる文字列を排除している 文字を歪めるアルゴリズムはsinカーブを描くようにごりごりimagesetpixelでやっている模様 カタカナにするにあたって、特にアルファベットと変わる点はなく同じようにツとシのように識別しづらいものは排除しました。ただ、隣り合うと識別しづらくなる文字の組み合わせがあまり思い付かなかったのでそちらは実装していません。ノとレとか?あとユーザ入力と生成された文字列の比較時に小さいャとヤの区別を付けない方がいいかもしれません。 また、昔から好きなGrayGraphicsのフリーフォントを使わせていただきました。CAPTCHAに使っていいかライセンス的によくわからないので商用利用の際は注意が必要かもしれません。 今回は1つのフォントしか使っていませんが、破られないように強化するならKCAPTCHAのように複数のフォントをランダムに使った方がベターでしょう。文字数も固定長にしない方がいい。ただそれもCAPTCHA破りの汎用性によっては無意味なのかもしれません。現在ある最強のCAPTCHA破りアルゴリズムだとカタカナに対応するためのデータを学習すれば簡単に破れるんでしょうか。 なおPNGではなくTTFを使ったので動作環境にはGDとfreetypeが必要になります。一応PHP5用。ちょっと変えればPHP4でも動くはずです。

Posted in つくる | 4 Comments

Google Maps上に星が!

ぴかーーん via: digg – Seen on Google Map: A ‘Star’ over Amsterdam!! ref: X51.ENEMA: Google Mapsでクロップ・サークルを多数発見

Posted in 感動する | Leave a comment

Ubuntu6.10にapache2.2.3とPHP5.2.0をソースから入れたときのメモ

普通はapt-getで入れてしまった方が楽ですがPHP5.2.0を試したかったのでソースから。apacheもついでに最新版。 ちなみにapt-cache show php5で見るとUbuntu6.10にはapt-getだとPHP5.1.6が入る。 まずはapache。 $ ./configure –enable-so checking for C compiler default output file name… configure: error: C compiler cannot create executables See `config.log’ for more details. configure failed for srclib/apr gccは入っていたのとconfig.logにはそれらしいエラーが見当たらなかったのとで最初なんのエラーかもわからず。ググってもちゃんとした解答がすぐには見付からなかった。 まぁ、原因はg++が入っていなかっただけで、解決しました。 $ sudo apt-get install g++ $ ./configure –enable-so $ make $ sudo make install 続いてPHP。 $ ./configure –enable-mbstring –with-apxs2=/usr/local/apache2/bin/apxs … checking [...]

Posted in いじる | Leave a comment

ブログ深追い検索: ブログ検索エンジンのマッシュアップ

メディア・パブ: EZ GREEのユーザー評価,ブログ検索エンジンで調べてみる 今回の調査を始める前まで,ブログ検索エンジンはTechnoratiだけでも用が足せると思っていた。一度,TechnoratiとGoogleの検索エンジンをほぼ同時刻に走らせ,それらの検索結果を比較してみると,予想以上に結果に隔たりがあることがわかった。 と書いてあるのを読んで、そういえば昔メタサーチというのがあったなぁ、と思い出しブログ検索でつくってみました。 ブログ深追い検索 (closed) yahoo, google, goo, livedoor, namaan, kizasi, technorati, blogwatcherからそれぞれ最新の検索結果10件を取得して、重複を排除しつつ多くの検索エンジンでHITしたページほど上位にくるように並べ直しています。8つのマッシュアップなので検索結果が出るまでには若干時間がかかります。 各検索エンジンを比較するようなインターフェイスにはなっていませんが、じっくり見るとそれぞれ精度に差があるのがわかりますね。メディアパブの記事にあるように予想以上に違う結果が出ています。「PS3」など旬なキーワードは各エンジンの検索結果がほとんどかぶらないようです。 検索語ごとにRSSを出力しているのでリアルタイムに検索するよりは、網羅的に情報を集めたいキーワードのRSSをRSSリーダーに登録しておくのをお勧めします。

Posted in つくる | Leave a comment

WindowsからUbuntuに乗り換えてみた

追記: zuzara : Ubuntu 7.10をデスクトップクライアントとして使ってみた 2年以上、LinuxをクライアントOSとしては使ってこなかったのですが、Ubuntuに惚れてしまいました。入れたのはUbuntu-ja-6.10。マシンはVAIOのtypeF。 感動した点。 LiveCDからOSが起動して、インストールするので最初にデモ的なものが見れていい。 入れるアプリの選択はできないがCD1枚で済むのは楽。 1680×1050の解像度自動認識(FedoraCore5ではできなかった) デフォルトの日本語フォントがきれい。 昔と比べると日本語入力もほとんど不便を感じなくなった。半角全角キーを押せばON。 外付けHDDは問題なく認識、デュアルブートにしたがWindowsのパーティションも自動認識。ファイル名が文字化けない。 僕の経験上初めてUSBマウスとタッチパッドを同時認識しつつタッチパッドのスクロールも動いた。スクロールはできないときもある。不安定? ブートローダのインストール場所を正しく認識し、デュアルブートにするのがFedoraCore5に比べて簡単だった。 後述するいくつかの問題をすべてUbuntuのフォーラムで解決策を発見できた。 クライアントOSとしてLinuxを使おうと一番気合いを入れていたのはRedHat8が出た頃。そのとき内蔵無線LANを自動認識して感動したものですが、今となってはずいぶん使いやすくなったものです。FedoraCore6をはじめ他の最新ディストリビューションを試していないですが、日本語環境はしっかり整っているしデバイス回りと最後に挙げた、問題が比較的短時間ですべて解決した点(現時点ではバグですが今後直される確率が高そうという意味で)はUbuntuならではのすごいところでは、と思います。 ちょっと調べる必要があった点。 別マシンのSambaにつなぐ(参考: How to access network folders without mounting、ただしフォルダから右クリックでgvimを開くとパスを誤認識するらしく2つファイルを開いてしまうので同じページの1つ下で解説されているmountする方法にした CapsをCtrlにするのは簡単だったが、さすがにその他のキー配置の変更は手動 $cat ~/.Xmodmap keycode 129 = Escape # スペースキーの右はEscなんです remove Lock = Caps_Lock # 両方Ctrl派 remove Control = Control_L keysym Caps_Lock = Control_L add Lock = Caps_Lock add Control [...]

Posted in 感動する | 2 Comments

DojoのCharting Engineのソースコードを眺める

1週間ほど前にAjaxianで知ったDojoのCharting Engine。 Ajaxian » Dojo Charting Engine Released デモは以下。 http://archive.dojotoolkit.org/nightly/tests/charting/test_engine.html 折れ線グラフが描かれていて、画像ではないのですごいなぁ、と思ったので何で動いているのかちょっと調べてみました。 Dojoのサイトから0.4をダウンロード。解凍してディレクトリ名をdojoにすると dojo/tests/charting/test_engine.html に先ほどのデモと同じファイルがある。HTMLのソースを見るとdojo/dojo.jsが呼ばれている。このdojo.jsのソースは何やら変数名等が読みづらくなっている。 dojo.require(“dojo.charting.Chart”); などで別ファイルのソースが呼び出されている。dojo.hostenv.getTextの中でdojo.hostenv.getXmlhttpObjectが呼び出されているので外部ファイルを呼び出す仕組みはAjax。で、取得したテキストをevalしている。 dojo/src/charting/Chart.js辺りが呼び出されていて、Firefoxの場合はdojo/src/charting/svg/がメインになる模様。これらのソースはコメントもインデントもあって読める。 JavaScript Cake Tutorials and Scripts Firefoxのこれを使うとSVGのソースがHTMLの中で出力されているのがわかる。 <svg height="170" width="700" id="dojo-charting-plotarea-0"> <defs> <clipPath id="dojo-charting-plotarea-0-clip"> <rect height="120" width="630" y="20" x="50"> </rect> </clipPath> </defs> … さしあたって用途はないのですが、Dojoのスゴさの片鱗が見れました。

Posted in いじる | Leave a comment

価格.com WEBサービスコンテストに応募してみます

【発表】価格.com WEBサービスコンテスト開催(Mozilla Japan協賛)のお知らせ 作品募集期間:2006年11月15日(水)~2007年1月15日(月) 最優秀賞(1作品のみ) 賞金30万円 優秀賞(1作品のみ) 賞金20万円 部門賞(サイト毎に1作品) 賞金10万円 価格.com賞/ 4travel賞/ 食べログ賞/ yoyaQ賞 価格.comが出しているAPIを使えば、あとは割と何でもありのコンテストのようなので気軽に出してみようと思います。賞金を皮算用するなら、、VAIO typeGが欲しい。 概要に書いてなかったことで2点、価格.comの方に聞いてみたところ、 1人で複数応募してもOK コンテスト前に公開してもOK だそうです。回答ありがとうございました。 using API;の方で公開されているAPIについては書いています。マッシュアップするAPIも数が増えてきたのでいろいろできそう。 using API; 価格.com

Posted in いじる | Leave a comment

Page optimized by WP Minify WordPress Plugin