IRCでariaが「Amazonで検索すると価格だけ出るようようなものができないか」という話をしていて、興味があったのでAmazonのWebサービスについて調べてみました。

PEAR XML_RPCを使ってみようと思ったんですが、よく見たらAmazonが提供するAPIはSOAPとRESTでした。AmazonのREST APIはパラメーターにxslも指定できるのでxslを用意するだけでいい感じの表示を得られるんですがやはりPHPで受け取ってパースすることに。

しかし作ろうと思ったとき何故かPEARのサイトが落ちてたのでリクエストの結果のXMLはxml関数でパースしました。(後日試したところPEAR XML_Treeは日本語文字化けした。みんな普通は何でパースしてるんだろう?)

少し面白げだったのでSmartyのキャッシュ機能とPEAR Pager_Slidingを使って価格調べ専用検索を作ってみました。

AmazonPriceSearch

Smartyのキャッシュ機能、強力でした。この場合、カテゴリー名・検索ワード・ページ番号を繋げてキャッシュIDにしてあります。キャッシュがある場合はバックエンドのWebサービスやDBにアクセスしないで表示するので相当パフォーマンスに影響あると思います。

Amazon Hacks 世界最大のショッピングサイト完全活用テクニック100選
ポール・ボシュ 篠原 稔和 ウェブ・ユーザビリティ研究会
オライリー・ジャパン (2004/04/24)
売り上げランキング: 2,320
通常24時間以内に発送します。
おすすめ度の平均: 3.2
4 Amazon を使いこなすために
5 アマゾンをもっと使いこなすための1冊
1 翻訳する価値があったかどうか疑問

ここ2日ほど料金未払いでNTTにアカウント止められてました。すみません。

最高に強まっていることで有名なタブブラウザーSleipnir(スレイプニル)を愛用する人をプニラーと呼ぶらしいです。(?)

これを聞いたときに思い浮かんだ光景。

新入社員の世話を焼くのが好きな教えたがりのめがねをかけた社員。人のマウスをすぐ奪って教えたがります。そのとき画面に表示されていた有名タブブラウザーを見て、

「きみっ プニラー?」

うぜぇええええええ

PostgreSQL(以下ポスグレ)のVACUUM(バキューム)について調べてみました。

■VACUUMとは

ポスグレ独自のSQLコマンド。ポスグレではUPDATE、DELETE文では物理データの削除は行われず削除フラグをたてるだけで追記していくためどんどんディスクを消費していってしまう。そのため定期的に不要になった領域を回収する必要がある。そのコマンドがVACUUM。■VACUUMとConcurrent VACUUM

VACUUMの処理は削除フラグの立ったデータを物理的に削除するので、その間対象テーブルに全てのアクセスを禁止するロックをかけます。「おいおいそりゃありえないよ」ということでVersion 7.2からはテーブルをロックしない方式に変わりました。(Concurrent VACUUM)

Concurrent VACUUMは共有メモリ上の空き領域マップ(Free Space Map)に削除フラグの立ったデータの位置を記録します。ポスグレはデータを追加する必要が発生した時にこの空き領域マップを参照し、その場所にデータを書き込むためにデータ領域が再利用されます。

そんな方法で領域を再利用するだけなのでCuncurrent VACUUMでは一度大きくなった物理データ量はそれ以上小さくなりません。物理的に使っていない領域を一度削除するにはVersion 7.1以前のVACUUM(VACUUM FULL)を行います。

■なんでこんなことしなきゃいけないんだ

他のRDBMSを使っていると「なんで追記すんの?普通に消してくれよ!」と思うかもしれません。(おれも思いました)しかし、追記型であることの利点も結構あるみたいです。

ポスグレは内部的にはレコードのデータにデータを識別するOID(オブジェクトID)とトランザクションを制御するXID(トランザクションID)をくっ付けて管理しています。新しいトランザクションが発生すると元のデータはそのままにして、OIDはそのままでXIDを一個増やしたデータを追記しようとします。元のデータは放置です。この方法だと同時に来たトランザクションの隔離や制御などがいかにも簡単に実装できそうな気がします。(常にスナップショットを残しているようなものだから)

具体的にユーザー側のメリットとしては”“読み込みロックと書き込みロックが競合しない””というのがあります。「常に追記なんだからたしかに出来そう」という気がします。ポスグレはこの辺をMVCC(Multi Version Concurrency Control:多版型同時実行制御)という方式で実装しているらしいです。

リアル嗜好スパルタンX

sparutanx.gif

しかし実際「スパルタンX」が映画を忠実に再現していたらどうなっていたのか?

ファミコン(元アーケード)の名作スパルタンX原作とはかけ離れた内容だった。真のスパルタンXとは・・・。

Windows の GUI ツールキット選び (zphoto用) : いやな日記

zphoto の Windows版の GUI を作ろうと考え、GUI ツールキットを検討した。今のところ wxGlade で wxWidgets 用の C コードを出力する方針でいる。次のような候補を検討した。

GUIアプリをほとんど作ったことがない(VBとSwingをちょっと)ので気になって調べてみました。

wxWidgetsはクロスプラットフォームのGUIフレームワーク。 Windows標準のGUI部品を使ったアプリがC/C++で書けるみたいです。GTK+とかって部品がちょっとダs(略)のでこの点はおしゃれですな。それと日本語も化けないとか。

wxGladeはwxWidgetsのコードを吐けるGUIビルダー。

参考: wxWidgets入門記

開発環境は普通何でやるんだろう?できればVisual Studioではなくフリーのものがいいなあ。 一番の問題はC++未経験なことですが・・・。

uobbs.png

Ultima Onlineのキャラクターが発言するBBS。発言回数によって選べるキャラクターが増えていくゾ!

UO BBS Version 2.01

はてなダイアリー – TOTOROの自堕落 日記

・では、今後この様な状況に陥らないと?  ・陥るも何も、今までこの様な事は無かったし、ログにも記録されていない。 ・ですから、先ほど私の行った実験でも、ログを残さずに他人の口座を見ることが出来ました。 それでも、過去に発生していないと?  ・そらまぁ、原理的には可能なんだろうけど、ねぇ・・・・ ・では、今後この対策は行われないと?  ・ま、そうなるかね?

某ネットバンクの担当者とのやり取り。怖いです。 Webアプリ自体歴史が浅いので大きな会社だと逆にこういう感じになっちゃうんでしょうか。

Webアプリケーションでのセキュリティに関してはIPA(情報処理推進機構)のページに実コードを踏まえて非っ常に分かりやすく載っています。

IPA ISEC セキュアWebプログラミング

HIDDENの書き換えやフォームの選択項目偽造など、HTMLを知ってる人なら簡単にできる方法でHackされる可能性があります。本当に気を付けないと・・・。

@nifty:デイリーポータルZ:ふつうの人にインタビュー

取材でよく人の話を聞く。でも取材相手はすでになにか面白いことをしている人なわけで、あたりまえだけど、何でもない人に話を聞く機会はない。 それはすごくもったいないことなんじゃないのか。 大部分の人は何も起こらずに淡々と暮らしている。リアルはそっちにあるんじゃないか。 はじめてあう人、たまたまそこにいた人にお願いしてインタビューをしてきました。(林 雄司 )

企画自体に笑った。 でも実際にインタビューしなくても別に良かったのでは、と思った。

昨日、混雑する山手線の車内で超焼きそばっぽい匂いが漂ってきました。 どうせ別の物の匂いなんだろうと思いつつも、車内に焼きそばのある光景を思い浮かべてほくそ笑んでいました。

(でもまてよ?焼きそばっぽい匂いがする他の物なんてあったか?)

と思って振り返ると、本当にカップ焼きそば食ってる食いしん坊がいました。