2009年5月31日日曜日

ネット広告のありがたさ

最近,ThunderbirdからまたGmail直利用に戻ってきた.
スレッド表示以外が用意されていないのがとても残念なのだが,ともかくメール検索のスピードはThunderbirdにはない強みである.

それでしばらくThunderbirdに移行していた間にかなり古くなっていた「フィルタ」の定義を徐々に改めて──追加・変更・削除している.

そうしているなかで,AmazonであるとかYahoo(の各種サービス)であるとかメールマガジン発行代行サービス(FreeMLとかMag2とか)であるとかの広告メールの膨大さを,またしみじみと感じていたのである.

これらの広告があればこそ,ぼくたちはとくにYahooやFreeMLなどを使用するにあたって,使用料を免除されているのである.実際メール広告はメールソフトやWebメールサービスですこし工夫するだけで簡単に自動削除できてしまうのだから,「使用料免除-広告メール受取」という取り引きは,ユーザー側にとってきわめて割の良いものに思える.

それはウェブサイト上のバナー広告やFlashによる広告も同じである.すくなくともFirefoxを使用しているユーザーは,当人にその気があればかなりの数の広告を自動で消し去り,表示されてしまったモノもまた手動で登録することで,次回以降,類似の画像を自動で消し去るようにできる.

なるほど便利.便利極まりない.もちろん広告のより多くの部分は,サービス使用料とは関係のないものだろう.

それにしてもこれって,サブプライムローンのはなしとどう違うのだろう,と思う.膨大な額の,「効果」のあるなし以前に「表示」すらされない広告に対して払われる,膨大なお金.

テレビやラジオ,新聞,街頭広告なら,「表示」されないということはない.でも,PC上では,すべてのユーザーが──とは言わないまでも,多くのユーザーが電子的なフィルタリングの手段を手もとに持っているのである.電子的な検閲は,徹底的であり拡張も容易である.

その点,ネット広告は「誰も見ていない」というわけではないし実際「ある程度は効果がある」のだろうけれど,結局「投資に見合った効果が──いやそれどころか表示が──なされているか分からない,まったく信用のおけないもの」なのではないか,と.

もちろん,われらの敬愛する企業経営者の方々の多くは,自分たちが思っている以上に自分の頭で考えてはおらず,彼らの愛読書やその手の雑誌に示された「事実」や「法則」にしたがって動くのだろうから,当面は大丈夫.

しかしいずれ「ネット広告の信用おけなさ」が彼らにも理解──もちろんその理解は「理性」よりも「崇拝」や「鵜呑み」によるものだろうけれど──されてしまったら? くわばらくわばら.

2009年5月27日水曜日

紀伊国屋BookWebの成田竜一(成田龍一)


ふと気がついたのだが,最近よく利用している紀伊国屋BookWebで,「成田龍一」と検索してもたった2件しか表示されないのだが,「成田竜一」で検索すると,13件表示される(うち事実上の重複1件).

もちろん正しいつづりは前者だが,正しいつづりで検索している限り,彼の書物はほとんど見つからない.そういうわけで,入力ミスというのは1件1件まちがうものではなくって,こうしてゴッソリとまちがうものなのだな,と半ば感心.

2009年5月26日火曜日

Songbird 1.1.2で多くの楽曲が再生できない

オープンソースのミュージックプレイヤーSongbirdの調子がおかしい.
バージョン1.1.2になってから,多くの楽曲が再生できなくなっている.

再生しようとしても(楽曲の再生位置を示す表示は動くが)音が聞こえてこない.エラーコンソールをみると,何か表示されている.再インストールを行ったが問題は解決せず.セーフモードで起動しても症状は改善しなかったから,拡張機能の問題ではなく,本体の問題らしい.

以下,表示されたエラーいろいろ──

Error: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISimpleEnumerator.getNext]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: file:///C:/Program%20Files/Songbird/components/sbPublicPlaylistCommands.js :: plCmd_isSelectionRevealable :: line 389" data: no]
Source File: file:///C:/Program%20Files/Songbird/components/sbPublicPlaylistCommands.js
Line: 389

_getCommandProperty(null, 0 (library_cmd_reveal), menu, m_EnabledCallback, true) - [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISimpleEnumerator.getNext]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: file:///C:/Program%20Files/Songbird/components/sbPublicPlaylistCommands.js :: plCmd_isSelectionRevealable :: line 389" data: no]

Error: Permission denied to call method Location.toString

2009年5月24日日曜日

久々に手書きでサイトを公開した

先週前半,とてもとても久しぶりに,ふつーの,手書きのHTMLでウェブサイトをつくった.この間に制作したものを公開するためのもの.とりあえず,今月中盤に作成したjQueryのプラグイン,Simple Templateを公開(つくった後でほぼ同名の別のプラグインが存在することに気がついた).

手書きのHTMLというのは,ソースコードがCMSなどによって構成されたものでない,という意味で.DreamWeaverやホームページビルダーを使っていたという意味ではない(ここは強調…).

もっとも各ページでメニューの項目を統一しなければならない都合などを考えるとすぐうんざりしてしまい,結局今ではPythonで記述したユーティリティプログラム(プログラムといっても極々単純で応用の利かないものであるが)でHTMLソースコードの構成を行っていたりする.

さてとりあえずサイトを作ってみたものの,次に公開できるものはなにかあるのだろうか,と考え中.

2009年5月15日金曜日

Lenovoのシステムアップデートサービス

4月ごろから、ThinkPadのシステムアップデートアプリ(ThinkVantage→System Update)を起動して、システムアップデートを使用とすると、右のようなものが表示されるようになった。

Lenovoのシステム更新方法が変更されます。ご使用のシステムの新しい更新情報は、引き続きwww.lenovo.com/supportからご利用いただけます。5月に再度System Updateを起動して、Lenovoの新しいメッセージング・システムを有効にしてください。


というのだが、(そもそもこのようにシステムアップデートサービスという重要なサービスに空白期間をつくること自体理解できないが)その5月も半ばであるのに、表示はそのままである。

ThinkPadの使いやすさは兎も角、もともとシステムアップデートがやたら鈍足なのと、上述の問題とがあってLenovoのサポートのほうはどうしようもないな、という感想。

2009年5月6日水曜日

IEの正規表現 string.replaceメソッドとRegExp.$n

このGW中、構想2日、作成に2日もかけて、JavaScriptでうごくテンプレートエンジンのようなものをつくった。

「エンジン」というほど大したものではなく、ようするに文字列中で変数を使用したり、if文とeach文を使えるようにしたもの。とりあえず、構造は単純──これ以上複雑なものはぼくの頭では無理──なのでFirefoxやOpera、Safariでは動く。しかしIEでは動かない。なんだか、どうしようもなくバグっている。正規表現関連の処理で躓いている?

Googleで検索してみても、正規表現についてのIEの対応状況やバグの情報が見つからない… DOMに関するものについては、本も出ているし、jQueryなどのライブラリでは当然その種の対応状況差やバグに対応してくれている。しかし、正規表現についてそういうライブラリはなさそう… こまったなぁ…

【追記】

原因が分かった。

すくなくともIE7では、Stringオブジェクトのreplaceメソッドを、第1引数に正規表現、第2引数に動的な文字列の置き換えを行うための関数を指定して呼び出したとき、この第2引数の関数内で、RegExp.$n(nは整数)を呼び出しても、ただしく動作しない。

いや、そもそもreplaceメソッドの第2引数に指定した関数のスコープ内でも、RegExp.$nがちゃんと使えるなどと確約するような文章を読んだことがあるわけでもないので、「ただしくない」などというのはちょっとアレなのだが、しかし「直前の正規表現マッチングにおける、n番目の (...) に対応する文字列を返します。」(とほほのWWW入門)というところから自然に類推すれば、使えて当然というものである。

現にFirefox3、Opera9、Safari3では使えた。そしてIE7では使えなかった(せめてundefinedなどを返してくれればまだ解決は早かったのではと思う。IE7ではRegExp.$nは──いつもではないのだが──空文字列を返してよこすという、かなり奇妙な動作をしている。第1引数として渡した正規表現ではとてもキャッチできないような文字列を返すこともあった。何にしても最悪である)。

ヒントはここ(「JavascriptのString.replaceに無名関数を渡して複雑な置換」/Electronic Genome)にあった。

string.replace(regexp, function)

という形で、replaceメソッドを呼び出したとき、第2引数の関数には、引数が渡される。この引数は正規表現による直前のマッチングの結果により数が変化するので、関数内ではarguments[n]という形でアクセスするのが都合良い。このargumentsの内容は、それはそれでおもしろいのだが(ホントに)、この件には関係ないので、そこは上記の記事を参照のこと。

しかしともかく、このarguments[n]形式でのマッチング結果へのアクセスはうまくいった。IE6、IE7でもちゃんと動作する。他の上述のブラウザでも問題なく動く。

RegExp.$n形式のときの、「n」と、arguments[n]形式でのアクセスのときの「n」とは同一でよい。ただargumentsの最後尾と最後尾の1つ前、つまり2つの引数については別。この点は上記記事を参照するべし。