Home > 未分類

未分類 Archive

AmazonのランキングをPHPで取得する

サイドバーに設置するランキングをPHP, PEARのServices_Amazonで作ってみた。今のアクセス数だとその都度取得してもたぶんいいけど、キャッシュしておくとか機能強化もしたほうがいいかも知れない。

まず適切にPEARをインストールして、pear install -a Services_Amazon-betaなどしてAmazonのサービスを使えるようにしておく。

サンプルコード

そののちにこんな感じのPHPを書いてみた。

< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
< html lang="ja">
< head>
< meta http-equiv="Content-Type"
        content="text/html; charset=UTF-8">
< title>PHP入門< /title>
< /head>

< body>

< ?php
require_once('Services/Amazon.php');
$access_key_id = 'XXXXXXXXXXXXXXX';
$secret_access_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$associate_id = 'XXXXXXX-22';

$amazon = new Services_Amazon($access_key_id,$secret_access_key,$associate_id);
$amazon->setLocale('JP');
$options = array();
$options["Keywords"] = 'プログラミングコンテスト';
$options['Sort'] = 'salesrank';
$options['ResponseGroup'] = 'ItemIds,ItemAttributes,Images';
$result = $amazon->ItemSearch('Books', $options);

if (!PEAR::isError($result))
{
	for( $i = 0; $i <  5; $i++ )
	{
		$link = $result['Item'][$i]['DetailPageURL'];

		echo "< a href='".$link."'>< img src='".$result['Item'][$i]['MediumImage']['URL']."'>< /a>< br />";
		echo $result['Item'][$i]['ItemAttributes']['Title'].'< br />';
	}
}
?>

< /body>
< /html>

結果

こんな感じになった。

Ajaxがわからない

jQueryってリソースリークしませんか?

Ajaxをいじりはじめて4時間ほど経過したけれど、よくわからない。どうもリソースリークするような気がする。例えば「jQueryでCSVをテーブル表示」というページがあるが、サンプルの「Load CSV」というボタンを連打してから、SafariのWebインスペクタを見ると次のようなことが起こっている。

e38394e382afe38381e383a3-2

test.txtがいっぱい

この「Load CSV」ボタンを押すとtest.txtを開いて表を作成する。そこまではいいのだけど、押した回数の数だけtest.txtを開いて閉じない。これはまずい。

最初に馬鹿なことをしていて、1回クリックすると倍々で呼ばれるバグを作ってしまって気づいたのだけど、すぐに2のn乗で増えていくのでブラウザが応答しなくなってしまう。それで気がついた。

今のところ解決策が見つかっていないのだけど、jQueryでload()は一回しかしてはいけないような気がする。したがって、Google Financeのようにリアルタイムで刻々と変わっていくものをload()で読んではいけないのだろうか。

だとすると、どうやって解決したらいいのだろう?そういうコーディングは禁止というならそれでもいいのだけど、ボタンを何度も押すとリソースリークするのはまずいんじゃないかな。

誰か解決策をご存じでしたら教えて下さいm(__)m

追記

他にも「jQuery 開発者向けメモ – 基本・サンプル」のload()に関するところもボタンを連打するとやはりリソースリークしている。

自分はついさっき初めていじり始めたので使い方を誤っている可能性は高いのだけど、こうも上級者っぽい人のページでもこのような問題が起きるとすると、本質的にjQueryとかAjaxはリソースリークと浅からぬ縁があると言うことなのだろうか。

Safariがダメぽという可能性もあるけど。FireBugでも見てみようか。

The Debugger has exited due to signal 5 (SIGTRAP).

ずっと困っている問題がある。LeopardのXcode 3.0で開発をしていると最初はいいのだが、すぐに

2008-04-26 17:42:29.343 Xcode[246:203] *** NSTask: Task create for path ‘/Users/私/Desktop/Cocoa SQLite Browser/build/Debug/Cocoa SQLite Browser.app’ failed: 13, “Permission denied”. Terminating temporary process.

The Debugger has exited due to signal 5 (SIGTRAP).The Debugger has exited due to signal 5 (SIGTRAP).

となって止まってしまう問題がある。やはりちゃんとマニュアル類に目を通した方がいいのか。

さて、定番のGoogle検索で何とかしようと思うのだけど、例えば“has exited due to signal 5″をキーに探しても結果は324件しかなく、色々読んでも悩んでいる人はいることは分かるけど、効果的な解答が示されているものは見つからなかった。“NSTask: Task create for” “Permission denied”で探すとさらに結果は少なく78件しかない。

これはなんとかならないのか。とりあえず、Terminalで「バンドル/Contents/MacOS/バイナリ」を直接起動すると起動はするのでテストは可能。しかしFinderのアイコンには禁止マーク(?)がついているし、ダブルクリックしても「このアーキテクチャでは使用できないため、開くことができません」と言われる。これでは配布できないよ。。。

Home > 未分類

Search
Feeds
Meta

Page Top