Google Crisis Response(Google)
災害に関する情報源や、行方不明者情報の収集と検索を行う『パーソンファインダー』を初めとするツールの提供が行われています。

2009年5月23日 土曜日

アナログとデジタルの狭間

Filed under: コンピューター,雑多
タグ:
時間:21時46分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

パソコンをはじめとするコンピューターはデジタルであると習いました。昔はアナログコンピューターというものもありましたが、現在はほとんどがデジタルです。

そんなコンピューターですが、深いところではアナログです。電気の流れでオンとオフの1つの状態(これがデジタル)を表すわけですが、電気が流れるということはアナログな物理現象です。金属で作られた回路は、ノイズというオンともオフとも言えない様な中途半端な状態を避けることができません。

物理的にはアナログですが、プログラムという論理的な面は完全にデジタルです。1を表現するように書いたプログラムは必ず1であって、1.123や0.985などになったりはしません。プログラムはプログラマーの書いたとおりの内容になります。不自然な結果を出すようになっていたとしても、それはプログラマーの命令したとおりに動いたに過ぎません。

デジタルである論理的プログラムをアナログな物理的コンピューターで動かしたとき、物理現象が論理的プログラムの動きを邪魔してしまうことがあります。電気の流れる速度や目的地に到着するタイミングのズレなどによる現象です。基板上で回路が曲がりくねっているのは、タイミングを合わせて同時に目的地に到着するようにするためなのです。処理速度が上がればあがるほどタイミングのズレは無視できないほどシビアなものになります。

コンピューターはクロックというリズムに合わせて動作を繰り返します。クロックはダンスのときの手拍子のようなもので、次に手を打つまでに処理を済ませなければなりませんが、移動距離が長いと間に合わなかったりします。最近HDDの接続方式の標準がパラレル通信からシリアル通信になったのも同じ理由からです。80本もの導線でタイミングを合わせるためには限界になったのです。

最近では、宇宙線によってメモリモジュール上のデータが書き換わってしまうという現象が発生しています。半導体に含まれる物質に宇宙線が作用し、オンの状態がオフに、オフの状態がオンに変わってしまう現象です。データが書き換わるだけで物理的に回路が壊れるわけではありませんが、これもプログラムの動作エラーを引き起こしてしまいます。このような現象はソフトエラーと呼ばれています。

アナログとデジタルの狭間に存在するコンピューターは、もしかするとものすごく不安定な存在なのではないかと最近思います。物理現象で動いている限り、コンピューターはアナログからは逃げられないのかもしれません。複数の状態を同時に持つことができるという量子コンピューターはどうなるのでしょうか。

Comments (0)

2009年5月10日 日曜日

”Amazon アソシエイト Web サービス”が”Product Advertising API”に

Filed under: AmazonLink,アフィリエイト,プログラミング
タグ:, , , , , , ,
時間:17時46分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

Amazon.co.jp からいろいろな情報を取得することができる”Amazon アソシエイト Web サービス”というサービスがありますが、”Product Advertising API”という名称に変わるとのことです。そして、情報のリクエストには署名による認証が必要になるとのこと。

拙作 WordPress プラグインの AmazonLink でもこのサービスを使用しているので他人事ではありません。

基本方式はほとんど変わらないとのことですが、認証で使用する電子署名の作成には、開発者登録をしたときに作成した Secret Access Key というものが必要になるようです。リクエスト時のデータによって変わるため、電子署名データだけをプログラムに埋め込んでおくことができません。また、Secret Access と言うくらいなのでこれを公開するのも駄目でしょう。

詳しい情報がまだ得られていないのでなんとも言えませんが、ただ使うだけの人にも開発者登録をしてもらわないと駄目になるかもしれません。

今のところは、たつをさんによる記事が一番詳しそう。

電子署名データの作成には RFC 2104-compliant HMAC with the SHA256 hash algorithm という変換処理のようなものが必要で、これを行うための関数である hash は PHP5 でないと標準では使用できません。PHP4 はすでに終了宣言が出ているのですが、まだ PHP5 が使用できないサーバーもあるので悩みどころです。

Comments (0)

2009年4月25日 土曜日

FreeBSD の X.org ディスプレイ設定メモ

Filed under: FreeBSD
タグ:, , ,
時間:18時02分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

FreeBSD の X.org のディスプレイ設定内容を、メモを兼ねて公開。ビデオカードが骨董並みに古い・・・。

引退が決まっているローカルサーバーなので、更新もせずにほったらかしです。

OS
FreeBSD 6.2
X.org
7.3
モニター
SONY SDM-X73
ビデオカード
クリエイティヴ・メディア Graphics Blaster RIVA TNT AGP 16MB

[code]
Section "Monitor"
Identifier "Monitor0"
VendorName "SONY"
ModelName "SDM-X73"
HorizSync 28-80
VertRefresh 48-75
Option "DPMS"
EndSection

Section "Device"
Identifier "Card0"
Driver "nv"
VendorName "Generic"
BoardName "nv"
ChipSet "RIVA TNT"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 1
Virtual 0 0
EndSubSection
SubSection "Display"
Depth 4
Virtual 0 0
EndSubSection
SubSection "Display"
Depth 8
Modes "1280x1024" "1024x768" "800x600" "640x480"
Virtual 0 0
EndSubSection
SubSection "Display"
Depth 15
Modes "1280x1024" "1024x768" "800x600" "640x480"
Virtual 0 0
EndSubSection
SubSection "Display"
Depth 16
Modes "1280x1024" "1024x768" "800x600" "640x480"
Virtual 0 0
EndSubSection
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600" "640x480"
Virtual 0 0
EndSubSection
EndSection
[/code]

Comments (0)

2009年4月4日 土曜日

NHKの新番組『ITホワイトボックス』

Filed under: コンピューター
タグ:, , , , , , , ,
時間:9時38分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

先日4月2日から始まったNHKの新番組『ITホワイトボックス』が面白そうです。

外から見えないITのブラックボックスの中身を解説して、意味のわかるホワイトボックスに変えてしまおうと言う番組。毎回テーマと3つのキーワードを設定し、それぞれのキーワードを解説します。1回目は、テーマが「メールはなぜ正しく届くの?」、キーワードは「SMTP」「@」「RFC」でした。

テレビ欄に村井純氏の名前があったので見ただけだったのですが、内容が思ったよりもよかった。

多少簡略化したりもしていますが、必要なところはちゃんと解説しています。デーモンや SMTP におけるやり取りの解説があったのにはびっくりです。少なくとも、一般向け番組では初めて見ました。

ちなみに、メールについては送信の説明のみで、受信については特に説明なしでした。IMAP はおろか、主に使われている POP3 の名前すら出なかったのですが、そのときのキーワードが SMTP だったので外されてしまったのかもしれません。

番組サイトではダイジェストが掲載されていますし、リンク集ページからはさらに突っ込んだ情報源(JPNICサイト内コンテンツなど)を知ることもできます。

毎週日曜日の午後2時から再放送もするようなので、興味がある方は1度ごらんになることをお勧めします。

Comments (0)

2009年2月28日 土曜日

半角/全角キーだけで IME のオンオフを切り替えられなくなる件

Filed under: ソフトウェア
タグ:, ,
時間:17時07分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

Windows にはマイクロソフト製の日本語入力ソフトである Microsoft IME(以降、MS-IME と表記します)が搭載されていて、多くの人はそれを使い続けていることかと思います。私も同様で、Windows Vista でもやはり MS-IME を使っています。

MS-IME では、キーボードの半角/全角キーを押すことで日本語入力のオン/オフを切り替えることができます。ところが、しばらく前から突然切り替わらなくなってしまいました。Windows XP よりも前のショートカットである Alt+半角/全角でないと駄目になってしまったのです。

さすがに不便なので情報を漁ってみたところ、レジストリに書き込まれているデータに間違いがあることが原因であることがわかりました。

詳しい原因や修正方法については、さるぺーじさんによる記事をごらんください。原因究明プロセスと解決方法について、技術的に書かれています。内容はMS-IME2007 についての記事ですが、現象も解決方法もそのまま応用することができます。

とりあえず直し方を知りたい方は、蒼月さんの記事がお勧めです。蒼月さんは Vista でこの現象に遭遇しています。修正方法についてはスクリーンショット付きなので、レジストリの操作に不慣れな場合はこちらのほうがわかりやすいかと思います。

お約束ですが、レジストリを編集することで Windows が起動できなくなっても自己責任となります。私の環境ではうまく行きましたが、どんな環境でも大丈夫である保障はありません。不安な方はマイクロソフトによるサポートを受けてください。

Comments (3)

2009年2月4日 水曜日

Seagate HDD のその後

Filed under: ハードウェア
タグ:, ,
時間:1時14分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

一部の Seagate HDD で認識されなくなることがあると先月発表されましたが、まだ覚えていますでしょうか。

その後、いくつか発表がありました。

  • Seagate 曰く。一部の製造ラインで組み立てられた製品に限られる。
  • 正規輸入代理店曰く。取り扱った中には該当するロットは含まれていない。
  • 販売店曰く。代理店は大丈夫だと言っているので販売を再開します。
  • 自称Seagateの技術者曰く。不具合の原因は単純なプログラムミス。不具合を修正したファームウェアは、ロクにテストをされていない。

Seagate のチェックサイトは何度も内容が変わって、現在はモデルナンバーとシリアルナンバーの2つの方法で確認するようになっています。

モデルナンバー確認ページ
シリアルナンバー確認ページ

手持ちのものでは、とりあえず該当しないとの結果でした。該当しない場合では、ファームウェアをダウンロードするリンクは表示されないようです。ファームウェアが十分にテストされていると信じてアップデートすると言う選択肢はなくなってしまいました。

残る選択肢は2つ。

  • 該当しないから安心して使い続ける。
  • 別のメーカーの HDD を買ってきて入れ替える。

さて、どうしましょうか。

Comments (0)

2009年1月23日 金曜日

問題の Seagate HDD 発見

Filed under: ハードウェア
タグ:, ,
時間:0時43分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

Seagate のほとんどの現行 HDD で、ファームウェアにバグがあることが発表されています。

該当するのは、次の3つのシリーズ。

  • Barracuda 7200.11 シリーズ
  • Barracuda ES.2 SATA シリーズ
  • DiamondMax 22 シリーズ

ローカルサーバーに使っていることを思い出して確認してみると、見事該当してしまいました。朝から並んで、格安で購入したものだったのですが・・・。

ローカルサーバーの OS は Windows ではなく FreeBSD なので、Seagate が配布しているツール(Drive Detect)は使用できません。次のコマンドを実行することで、必要な情報が得られます。

[code]
atacontrol cap デバイス名
[/code]

このコマンドでは、モデル名だけでなくファームウェアのバージョンやシリアルナンバーなども見ることができます。これらの情報を元に、自分の持っている HDD が該当するかどうかを知ることができます。

運悪く該当してしまって、運良く(?)対応するファームウェアが公開されている場合は、アップデートすることで問題が解消するかもしれません。ただ、即席であるためか、アップデートしたことで悪化したと言う話もいくつか上がっているので注意が必要です。

なお、GIGAZINEの編集部では実際に該当する HDD がアクセス不能となり記事にしています。少し古い情報で現在とは状況が多少違ってしまっていますが、参考情報として役に立ちそうです。

幸い、問題の HDD を使用しているローカルサーバーはまだ本格稼動していないため、私はしばらく様子を見ることにしました。起動するときにこの現象が起きると言う話もあるので、起動したままにしておこうと思います。

Comments (0)

2009年1月18日 日曜日

【重要】不正アクセスを受けました

Filed under: WordPress,重要
タグ:, ,
時間:23時40分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

不正アクセスを受けていたようです。現時点で判明している被害と行った対策は次のものです。

不正投稿

内容

先日、投稿した記憶のない記事がRSSに含まれていることに気がつきました。実際に過去の日付で投稿されており、不正アクセスをされたと結論付けました。

記事の内容は、違法またはセキュリティ的に危険な内容のサイトへの誘導と思われます。幸いタグが間違っているためにリンクにはなっておりませんでしたが、すぐに記事は削除いたしました。

対策

どのような形で投稿が行われたのかは不明ですが、WordPress を2.6系の最新バージョンへアップグレードいたしました。また、XML-RPC などの外部から投稿を可能にする機能は無効にしてあります。

テンプレートファイルの書き換え

内容

テンプレートファイルの footer.php に大量の隠しリンク(スタイルシートで非表示にしてありました)を記入されていました。本来4KBほどのサイズなのですが、記入されたファイルは1MB弱になっていました。

書き込まれた内容は、やはり外部サイトへのリンクでした。隠しリンクになっていましたので、検索エンジンロボットを対象としたものでしょう。
リンクの中には WordPress を使用したサイトと思われるものも多数ありましたので、WordPress を使用しているサイトが狙われている可能性があります。ユーザーの方は、書き換えが行われていないか確認することをお勧めします。

対策

追記された部分については、すでに削除してあり、そのほかのテンプレートに関しても確認を行いました。

また、管理画面から編集可能にするためファイル属性を666(誰でも書きこめる状態)にしてあったため、危険であると判断して644(ファイルの所有者のみが書きこめる状態)に変更しました。

Comments (0)

2008年11月29日 土曜日

WordPress 用プラグイン monthchunks のバグを修正

Filed under: WordPress,ハック,プラグイン
タグ:, , ,
時間:3時45分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 このブログでは、月ごとアーカイブをコンパクトに表示してくれるプラグイン monthchunks を使用していますが、記事がないのに表示されている月があることが判明しました。

 問題の月は、2006年の9月。Google ウェブマスターツールのリンクエラー報告によると、76箇所で表示されているとのこと。さすがに数が多いので、本腰を入れて調べてみることにしました。久しぶりのプラグインハックです。

 何はともあれ、まずはプラグインのコードを読みます。使用しているバージョンは、最新の2.1。関数が1つ定義してあるだけでコメントを含めても154行と非常に短いので、初めてのハックにはお勧めかもしれません。

 大まかな流れは、SQL 文を生成して実行するだけ。オプションによって多少分岐がありますが、上から追いかけていけば大したことはありません。101行目からと114行目(110行目から始まる foreach の中)からの2箇所でデータベースにアクセスしています。1箇所目は記事のある年度の取得、2箇所目は各年度別に記事のある月の取得をしています。

[php num=100]
// get an array of the years in which there are posts
$wpdb->query(“SELECT DATE_FORMAT(post_date, ‘%Y’) as post_year
FROM $wpdb->posts
WHERE post_status = ‘publish’
GROUP BY post_year
HAVING post_year <> ’0000′
ORDER BY post_year $year_order”);
$years = $wpdb->get_col();
[/php]

[php num=112]
// get an array of months for the current year without leading zero
// sort by month with leading zero
$months = $wpdb->get_results(“SELECT DATE_FORMAT(post_date, ‘%c’) as post_month,
$month_format AS display_month,
DATE_FORMAT(post_date, ‘%M’) as post_month_name
FROM $wpdb->posts
WHERE DATE_FORMAT(post_date, ‘%Y’) = $year
AND post_status = ‘publish’
GROUP BY DATE_FORMAT(post_date, ‘%m’)
ORDER BY post_date”);
[/php]

 今回問題になっているのは月の情報なので、2箇所目を詳しく見ていきます。PHP のコードと SQL が混在してわかりにくいので、最終的な SQL 文を記述してみます。オプションを特に指定しない場合は、次のようなものが出来上がります。(改行やインデントなどを加えてあります)

[sql]
SELECT
DATE_FORMAT(`post_date`, ‘%c’) AS `post_month`,
DATE_FORMAT(`post_date`, ‘%c’) AS `display_month`,
DATE_FORMAT(`post_date`, ‘%M’) AS `post_month_name`
FROM `wp_posts`
WHERE
DATE_FORMAT(`post_date`, ‘%Y’) = 2006
AND post_status = ‘publish’
GROUP BY DATE_FORMAT(`post_date`, ‘%m’)
ORDER BY `post_date`;
[/sql]

 実際にこの SQL 文を手がかりに検索してみると、記事ではなく固定ページが見つかりました。記事と固定ページを区別していないため、固定ページしかない月も表示してしまっていたのです。

 ここまでわかればあとは簡単。検索条件に記事であることを加えればいいのです。記事の場合は post_type というフィールドの値が post となるので(WordPress 2.1以降)、post_type = 'post' を加えます。変更後は次のようになります。私は120行目に加えました。

[php num=112]
// get an array of months for the current year without leading zero
// sort by month with leading zero
$months = $wpdb->get_results(“SELECT DATE_FORMAT(post_date, ‘%c’) as post_month,
$month_format AS display_month,
DATE_FORMAT(post_date, ‘%M’) as post_month_name
FROM $wpdb->posts
WHERE DATE_FORMAT(post_date, ‘%Y’) = $year
AND post_status = ‘publish’
AND post_type = ‘post’
GROUP BY DATE_FORMAT(post_date, ‘%m’)
ORDER BY post_date”);
[/php]

 これにより、その年の公開されている記事という条件で絞り込むことができるようになりました。現在2006年の9月は表示されなくなっています。

2010年6月21日追記

prioさんからコメントをいただきましたので、年度の表示についても追記します。確認はしていませんので、参考程度にどうぞ。

100行目からの年度のコードを見ると、月の取得同様に固定ページも含むようになっています。SQLにしてみるとこんな感じ。

[sql]
SELECT
DATE_FORMAT(post_date, ‘%Y’) as post_year
FROM `wp_posts`
WHERE
post_status = ‘publish’
GROUP BY post_year
HAVING post_year <> ’0000′
ORDER BY post_year DESC
[/sql]

記事の投稿に限定する条件を加えると次のようになります。

[php num=100]
// get an array of the years in which there are posts
$wpdb->query(“SELECT DATE_FORMAT(post_date, ‘%Y’) as post_year
FROM $wpdb->posts
WHERE post_status = ‘publish’
AND post_type = ‘post’
GROUP BY post_year
HAVING post_year <> ’0000′
ORDER BY post_year $year_order”);
$years = $wpdb->get_col();
[/php]

104行目が追加した行です。意味については、月の場合と同じです。

Comments (2)

2008年11月15日 土曜日

アンケートを設置しました

Filed under: WordPress,プラグイン
時間:16時10分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 WordPress のシェアを知りたかったので、アンケートを設置しました。右ペインのカレンダーの下にありますので、気が向いたらお願いします。

 アンケートは、Democracy AJAX Poll というプラグインを使用しています。Ajax を使用することで、ページのリロードなしで投票できます。導入方法などについては、ぼのさんによる記事が参考になると思います。

 なお、日本語リソースは配布していたサイトが閉鎖してしまったため導入していません。普通に日本語が使えましたので、とりあえずはこのままで行く予定です。

Comments (0)
« 前ページへ次ページへ »

HTML convert time: 0.108 sec. Powered by