Archive for May, 2006
assist.search.yahoo.co.jpの入力補完が関連検索ワードとしてAPI化
今までは野良APIとしてこっそり使えましたが正式なAPIになりました。
» Yahoo!デベロッパーネットワーク – 関連検索ワード
picks!の方に組み込んでみました。下の方の深追い検索のところ。
関連語をページ内に書いておくことはパターンマッチングしか実現していない現状、SEOに役に立つかも。
追記:
» あなたのサイトはYahoo! JAPANで何位?
にも組み込んでおきました。ついでにprototype.jsも1.3から1.4に。
ユニクロのニューヨーク店専用サイトがかっこいい
元記事。
インタラクティブが気持ちいい。中村勇吾氏がデザインしたニューヨーク店専用Flashサイト。同じデザインのスクリーンセーバーもダウンロードできる。
picks! 要チェックワード集リニューアル
» picks! – 要チェックワード集(closed)
リニューアルしました!
トップページをタグクラウドにしたとか見た目の変化もありますが、Zend_Frameworkにインスパイアされて
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
.htaccessに記述してMVC風に。機能もいくつか追加。
My はてなブックマークランキング
はてなブックマークのランキングである「最近の人気エントリー」が最近面白くなくなってきた、という話を聞きます。
カフェイン中毒クロニクル – はてなブックマークのランキングはつまらなくなった
自分もそれは感じるけれど、あきらめて見なくなるのはもったいないので一工夫してみました。
通常のランキングは随時更新されているので24時間ためると表示されているよりも多い件数が集まります。集めた珠玉のブックマークたちを、自分のはてなブックマークと照らし合わせて、同じタグが含まれていれば上位に移動、というロジックでランキングし直し。これが今回つくってみたMy はてなブックマークランキングの基本的な仕組みです。
自分が登録したタグは自身の興味分野を示すのでそれなりに信頼できる情報だと思われます。
サンプルで勝手ながらnaoyaさんのを拝借。PerlとかMacが上の方に来てそれっぽい?
» My はてなブックマークランキング (id:naoya)
左の数字はタグに対する重み付けの結果。最近つけたタグが含まれている方が高いポイントになります。
はてブのfavoriteも考慮しては?というアイディアをもらったので実現したかったのですがfavoriteのRSSはタグ情報が抜けているので使いづらく断念。最近の人気エントリーを並べ直すだけでは十分とは言えず、質そのものを変えるにはfavoriteかあるいはタグや隣人(協調フィルタリングな手法で)からランキング外のはてブを収集してくるのがベターでしょうか。
なお、見た目の部分で使用させてもらったライブラリは以下。
女性専用車両の広告:クラブニッキィ
今日乗った電車の窓にピンクの広告で
上司に一目おかれたい
もっとデキるオンナになりたい
と書いてあってなんだろうな、と思ったらclub Nikkey-クラブニッキィ-なる日経新聞の宣伝。ネーミングも日経とは思えぬ意外性がありましたが、そういえばここ女性専用車両だ、と気付いてちょっと感動。
»女性専用車両に限定した車体広告を開始、西武鉄道 – nikkeibp.jp – 企業・経営
こんな例は1年前にあったようです。こちらは台湾の男性アイドル。
»編集者Asanaoのブログ : 女性専用車両という広告媒体
このブログでもちょうど1年前に言及。女性専用車両のように優先席付近は広告の値段が違ったりするんでしょうか。
このページの言及が詳しい。
PHPの終了タグ (“?>”) っていらないんだ
知りませんでした。phpspot開発日誌経由でZend Frameworkの標準コーディング規約の「最初に」書いてあるのを見て初めて知りました。
PHP コードのみからなるファイルでは、終了タグ (“?>”) は決して含めてはいけません。終了タグは、PHP には必要ありません。 終了タグを省略することで、ファイルの最後にある空白文字が出力に影響することを防ぎます。
確かにその通り。PHPをLinuxでもWindowsでもCLIとして使うことが多い自分としては目からウロコ。
追記:
記事のタイトルにダブルクォーテーションがあると下のCommentへのリンクがおかしくなることに気付いた。
<a href="http://blog.zu~" title="Comment on PHPの終了タグ ("?>") っていらないんだ">
これは報告せねば、と思ったら既知。1月の報告でpriorityがlowになってますけど。。
このページに辿り着くまでには、上のHTMLソース近辺のキーワードになりそうな単語でWordPressのソース全体をgrep検索して(実際にはロリポサーバでgrepできないので、別のLinux上にソースを展開…。p要素のクラスに指定されていたpostmetadataで引っかかった。)自分で作ったthemeファイルが出てきたので、あれ自分のバグ?と思って見たら該当箇所は以下。
<?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?>
関数名がわかったので再びcomments_popup_linkでgrep。wp-includes/comment-functions.phpの331行目に問題の箇所を発見し安直にhtmlspecialcharsでくくって解決。上のバグ報告も同じ解決方法をとっているのでOKっぽい。
echo ' title="' . sprintf( __('Comment on %s'), htmlspecialchars($post->post_title) ) .'">';
WordPress本家にBUG Reportのページが見当たらないのでSUPPORTで先ほどのcomments_popup_linkを検索したらBug Databaseというチェックボックスがあったのでそちらで再度検索してようやく先ほどのページがお目見え。
しかし、ログインしないと投稿できないのは仕方ないとはいえ、バグあったよーこれで解決すると思うよーというお気軽な報告ができず残念。
Vim 7をちょこっとカスタマイズ
Vim 7 is ready!ということで早速Windows版をインストール。
補完機能はぱっと見、良さそうです。JavaScriptの補完はなかなかアツイもののちょっと間違えることも。ctagsと組み合わせるとPHPもオブジェクト指向な補完ができるようになるようです。自分はネイティブ関数の補完だけで十分。
midnight2.vimを色分けに使っていますが補完の候補が表示されるエリアの色が派手過ぎるので変更。ついでにVisualモード時の色が変わっていたのでそれも変更。
hi Pmenu guifg=slategray3 guibg=blue3 hi Visual guibg=#666666
今まで色分けがうまくいかなかった、PHP、HTML、JavaScript(特にJavaScript)混在ファイルもきれいに色分けされるようになりました。
Undo branchesは、便利そうな反面、直感的ではないので使う場面があるかどうか。uとCtrl-rに加えて、ヤバぃ消しちゃった!と思ったらg-とg+を連打するぐらいが現実的でしょうか。
タブ機能はminibufexpl.vimを今まで使っていたので必ずしも必要なかったのですが、物は試し。:tabnewなどと打っていられないので
Tip #1221 – Alternative tab navigation : vim online
を参考にvimrcを変更。
set showtabline=1 " tab navigation like firefox nmap <C-S-tab> :tabprevious<cr> nmap <C-tab> :tabnext<cr> map <C-S-tab> :tabprevious<cr> map <C-tab> :tabnext<cr> imap <C-S-tab> <ESC>:tabprevious<cr>i imap <C-tab> <ESC>:tabnext<cr>i "map <C-w> :tabclose<cr> nmap <C-t> :tabnew<cr> imap <C-t> <ESC>:tabnew<cr>
Ctrl-Wはウィンドウの分割等に使うのでやめておきました。Ctrl-1、Ctrl-2のようにタブ間を移動したかったのですが、
map <C-1> :tabn 1<cr>
は動かず。Ctrl+数字はダメなんでしょうか。Googleで調べても解決策は見つかりませんでした。
minibufexplは、ファイルをダブルクリックするなどして開いたときには別ウィンドウになってしまうのが不満でしたが、Vim7のタブも少なくともデフォルトではダメ。常にウィンドウは1つで新規に開くのはすべてタブになって欲しい。-pのオプションやらautocommandのTabEnter辺りがそれっぽいのですが。。
なお、新機能については
:help version7
で確認できます。
追記:
midnight2はVim7用にアップデートされました。
midnight2.vim – Dark blue colorscheme. No sharp contrasts to tire your eyes. : vim online
複数の検索語をハイライトしたいときの簡単なPHPのコード
IT系ニュース専用検索エンジンでは多くの検索エンジンと同じように、検索結果中の検索語を太字にして強調表示しています。複数のキーワードを指定されたとき、ちゃんとそれぞれ強調表示されるようにするにはちょっと工夫がいりました。
preg_replace("'($query)'i", "<strong>$1</strong>", $buf);
ベースになるのはこの正規表現。
function replace_search_result($query, $str)
{
$query = str_replace(' ', ' ', $query);
$q = preg_split("'[\\s,]+'", $query, -1, PREG_SPLIT_NO_EMPTY);
$qq = array();
foreach ($q as $val) {
$qq[] = "'(".preg_quote($val).")'i";
}
return preg_replace($qq, "<strong>$1</strong>", $str);
}
第1引数に検索語、第2引数に検索結果をそれぞれ文字列で与えて、強調表示された文字列を返します。
検索語に複数の単語を指定する際には全角スペース、半角スペース、カンマが使われることを想定しています。あらかじめstr_replaceで全角スペースを半角スペースに変換しているのはpreg_splitで文字化けないため。
mb_regex_encoding('UTF-8');
$q = mb_split("\\s| ", $query);
str_replaceとpreg_splitの行を上記のようにしても動きます。速度的にはほとんど変わらなかったので好みでしょう。
preg_replaceの第1引数に配列で渡していますが、これはforeachでpreg_replaceを呼び出すよりやや速いため。$qの値を正規表現の書式に直す処理はarray_mapやarray_walkでやるよりforeachで回した方が速かったです。
WordPressの検索語をハイライトするプラグインやPukiWikiのplugin/search.inc.phpも参考にしました。WordPressの方はHTMLの混じった文字列を置換するので少々複雑。PukiWikiは全角スペースでの区切りに未対応。
WordPressを1.5から2.0.2にアップグレード
ちょっと前に2がリリースされたWordPress、1.5にも特に不満はなかったのですがどんどん古いバージョンになるのもイヤなのでアップグレード。
いつの間にか本家のサイトもリニューアルしていました。
Upgrading WordPress « WordPress Codex
に忠実に従い、ちゃんとバックアップをとってから作業。と言っても全く問題なく1.5系から移行できました。
新しくなったのはなんと言っても記事を編集する画面。JavaScriptでWYSIWYGなHTMLを意識しない編集が可能になっています。が、僕はHTMLが見れないと逆に気持ち悪いので、開発者の皆さまゴメンナサイ、と思いながらもUsersのページにある「Use the visual rich editor when writing」のチェックボックスを。。
オフにしても、各種メッセージがフェードインで表示されたり、ファイルのアップロードがAjaxで編集中のページ上でできたり。アップロードは便利になりました。HTML直接編集用に今までのようにタグが出てくれるとより使いやすいのですが。
コメントスパム対策にはWordPress Hashcashを使っていましたが、デフォルトで入ったAkismetに切り替え。さらに強化されるかどうか。
Akismetを使うにはwordpress.comのアカウントが必要になります。wordpress.com自体はいわゆるブログサービスでWordPressが使えるサブドメインをくれます。通常のWordPressにはない機能としてログ解析が可能でした。

Flashで何やらかっこいい。プラグインとしては提供されていないようなので使えず残念。

