結婚しようよ2
映画「結婚しようよ」見ました。全編に流れる拓郎ソングと心優しい人たちの映画で本当に心が癒されました。
映画の中で演奏された中ノ森BANDの「風になりたい」は購入して聞いています。なかなかいいです。
$asin = "B000ZLS9J8";
$asin = urlencode($asin);
$req = "http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=1C16K44QY6WJFGJY4A82&AssociateTag=okayamawebsea-22&Version=2007-08-30&Operation=ItemLookup&IdType=ASIN&ItemId=$asin&ResponseGroup=Small,Images,ItemAttributes,OfferSummary,SalesRank";
// --------------------------------------------------------
// ページのキャッシュ
// --------------------------------------------------------
// 同じ検索キーに対する結果はキャッシュして使いまわす
$cache_period = 24*3600;
//$cache_period = 0; // キャッシュさせない場合。デバッグ用
// キャッシュライブラリの読み込み
$result = require_once 'Cache/Lite.php';
if ($result === false) {
echo 'PEAR Cache_Liteライブラリが'
. '呼び出せるよう設定されていません';
exit();
}
// キャッシュライブラリへ指定するオプション
$options = array(
// キャッシュ保存ディレクトリの指定
'cacheDir' => ‘http:www.okayamaweb.net/channel/amazon/cached/’,
// キャッシュ保持期間の指定
‘lifeTime’ => $cache_period,
);
// キャッシュライブラリの初期化
$cache_lite = new Cache_Lite($options);
// 検索ごとに結果をキャッシュするため、
// キャッシュIDを指定
$cache_id = ‘B000ZLS9J8′;
$cached_data = $cache_lite->get($cache_id);
if ($cached_data) {
// キャッシュが有効ならキャッシュの内容を表示
echo $cached_data;
exit();
} else {
// —————————————————-
// データ読み込み
// —————————————————-
require_once “XML/Unserializer.php”;
$xml_data = file_get_contents($req);
$parser = new XML_Unserializer(array(‘parseAttributes’ => true));
$parser->unserialize($xml_data);
$XML = $parser->getUnserializedData();
$item = $XML['Items']['Item'];
$itemattribute= $item['ItemAttributes'];
displayOne($item); // 一件分の表示
// バッファに出力したものを文字列として得る
$text = ob_get_contents();
ob_end_flush();
// 今回のcache_idでキャッシュへ保存
$cache_lite->save($text,$cache_id);
}
/** 一件分の結果を表示する関数 */
function displayOne($item) {
$asin = $item['ASIN'];
$detailpageurl = $item['DetailPageURL'];
$smallimageurl= $item['SmallImage']['URL'];
$mediumimageurl= $item['MediumImage']['URL'];
//$author=$attributes['MediumImage'];
$artist = $item['ItemAttributes']['Artist'];
$binding = $item['ItemAttributes']['Binding'];
$formattedprice = $item['ItemAttributes']['ListPrice']['FormattedPrice'];
$title= $item['ItemAttributes']['Title'];
//$format = $itemattribute['Binding'][1];
echo <<
HTML;
}
?>
APIサービスを利用
APIサービスを利用して岡山WEBというサイト名にそったコンテンツを作ってみました。前回はアマゾンWEBサービスを利用して岡山作家ガイドを特集しましたが、今回「ぐるなび」という全国のグルメ情報をを扱っているサイトの「ぐるなびwebサービス」を利用して、グルメサーチ岡山というコンテンツにしてみました。次にリクルートのフロム・エーナビというアルバイト・バイト・仕事探しの総合サイトの「お仕事検索webサービス」を利用して岡山エリアのアルバイト情報に特化したコンテンツを試作してみました。
アマゾンwebサービスを使う
前々から、岡山WEBネットに岡山出身の作家の著作一覧を表示させることが出来たらと思っていたのですが、APIサービスのアマゾンwebサービスを使うことで可能ということが分かりました。参考にしたのは「PHP×WEBサービス APIコネクションズ」という本です。残念なことにPHP5を前提に書かれているので、サンプルコードをそのまま使うことは出来ませんでしたが、一部を変更することでPHP4.3でもTESTすることが出来ました。
一応の結果をチャンネル::岡山出身作家ガイドに載せています。
今のところ、その作家以外に、その作家の名前のついた文学賞の受賞作もいっしょについてきていますがそのうち修正します。
なお、アマゾンからのデータは一度(1ページ)に10件分しか出てきませんので、10件以上のデータを表示するにはページ送りのページャーが必要です。今回、ページャーは、レッツPHP!さんの「簡易ページャ」を使わせてもらいました。このような便利なツールを公開してくださったことに感謝いたします。
今度はぐるなびの岡山版の情報をを岡山WEBネット上に載せてみようと思います。APIサービスのおかげで単なるホームページリンク集に加えて、岡山に関するサイトとして充実できそうです。
久しぶりにCGIと
ここのところPHPばかり勉強していたのだが、急にCGIプログラムに取り組むことに、。
前から気にはなっていたのですが。
ショッピングカートのCGIで配達希望日を選択するところがある。月と日をプルダウンから選択するものです。ある事情で、日付の指定は1週間以降からにすることにしたので、JavaScriptで配達希望日は×月×日以降を選んでください、と注意書きを書いていた。この表示により、たいていは1週間以降の日付をが選択してくれるのです。ところがプルダウンの選択は1週間以前の日付も選択できるのです。ある日、見落として、希望日に届かず、クレームとなりました。
このうえはCGIの改変しかないと思い、日時に関する関数などを調べて時間をとられました。
日時の関数はgmtime、localtime、timeの三種類で、現在時間を返してどう表現するかというものだけです。今回やりたいことは、年と月と日の数字が分かっている場合に現在時間と比較できる数字になってくれるかということです。
検索しているうち「Perl
ライブラリモジュールTime::Local
にはtimegm
サブルーチンが用意されていて、gmtime
の逆変換が可能です。」という表記が、さらに調べるとこのモジュールは、perlをインストールした時にlibフォルダーの中のtimeフォルダーに入っていることが分かりました。timeフォルダーごとテスト用のCGIが置いてあるフォルダーにコピーしました。
これで、指定した年、月、日の数字を指定すると、1970年1月1日からの秒数が返ってきます。これをtime関数から得られる現在時間の1970年1月1日からの秒数に1週間分の秒数を足して比較すればいいはず。
テスト用のCGIはこんなかんじです。
#!/usr/bin/perl
use Time::Local;
print “Content-type: text/html\n\n”;
print “<HTML><BODY>\n”;
$year = 2007;
$mon = 9;
$day = 20;
$hours= 23;
$min =0;
$sec=0;
$kibou = timelocal($sec,$min,$hours,$day,$mon – 1,$year);
$genzai= time;
$n=7;
$week=$n*60*60*24;
$ikou=$genzai+$week;
print “希望日”.$kibou.”<br>”;
print “現在日”.$genzai.”<br>”;
print “指定日以降です”.$ikou.”<br>”;
if($genzai){
if($kibou<$genzai){
print”error”;
}else
{
print”ok”;
}
}
print “</BODY></HTML>\n”;
exit;
1、ショッピングCGIの送り先、支払い方法を入力した後の確認画面を出力するCGIを加工。
2、通常、名前などが未入力などのときにエラーを返すプログラムに、配達希望月と日が入力されていれば、配達希望日と現在時間に1週間分の秒数を足して比較して、配達希望日の秒数が少なければ、エラーメッセージを返す。
という方針を立てて改変しました。一応うまくいきました。しかし、課題は、12月の末から1月にかけての年の変わり目です。
APIを使いたい
最近は公開API(アプリケーション・プログラミング・インターフェース)という便利なツールがある。それらは、お天気情報や楽天のショップ情報、アマゾンのショップ情報などをXMLなどで提供してくれるサービスなので、PHPを勉強するのならやはりAPIにもとりかかりたいということで、いろいろと情報を集めて見ました。
参考にしたサイトは10分で理解する初めてのAPIとかPHPでWebAPIを骨までしゃぶるです。
しかし、どうも調べるにつれPHPのバージョンが5.0以降でないとついていけないようです。このブログを置いているレンタルサーバーのPHPは4.3なのです。それでも説明をよく読むと、PEARというライブラリをインストールするとできないこともないようだということでした。
レンタルサーバーにPEARを導入するには、サーバーの管理会社へ依頼するか自分でインストールするしかないのですが、今回はとりあえず自分でインストールしました。
まず、ローカルのWINDOWSパソコンにインストールしているPHPには既にPEARのインストーラーgo-pear.batがあるのでそれをdosプロンプトで実行し、その後必要なライブラリーを追加でインストール。
この辺りは、WindowsへPEARをインストールする が参考になりました。
そして、ローカルのPEARをサーバーにアップロードしHTACCSEEにPEARのパスを通して完了。いよいよお天気APIに挑戦してみることにします。
循環農法、赤嶺さんの講演会に行きました
先日、清音において循環農法の赤峰さんの講演会がありました。
赤嶺さんの講演会へは3回目くらいで、約10年前には年始の断食会にも参加したことがありましたが久しぶりにお顔を拝見でき、講演が聴けて楽しかったです。
以前と変わったのは赤嶺さんの考えや取り組みに賛同しているかたがずいぶん増えたことだと思いました。
お話の内容は以前と変わりませんが、改めて農作物の大切さを認識させられました。我が家は1ヶ月まえくらいから、一時中断していた玄米食を再開していたので、玄米食の大切さはよく理解できました。
私が今回の講演で感じたこと&とりくむべきこと
- 玄米を食べる(玄米2合で塩がこさじ1程度)
- ほんまもんの塩(自然海塩)を使う
- 国産のほんまもんの野菜を食べる
- ほんまもんの見分け方はオーリングテストで確かめる
- 陰陽のバランスに注意する
- 食料自給率を高めるために野菜を育てる
講演会の後、本を2冊購入しましたが、オレンジページムックの「百姓赤峰勝人の野菜ごはん」は野菜を中心にした料理作りに役立つと思います。
倉敷市児島文化センターに吉田拓郎が来る
吉田拓郎のコンサートにはできるだけ行くことにしています。今まで東京、神戸、大阪、広島、倉敷といろいろ行きました。2004年のビッグバンドを引き連れてのコンサートにも行きました。しかし、去年のつまこいには行けません。本当に残念でした。
2007年、今年は、バンドスタイルで比較的小さなホールで全国を回るとのことでした。そして、日程を見ると、コンサートの最終日は11月30日(金)倉敷市児島文化センターです。私は、すでに先行受付でチケットは購入(入金)しましたが、一般販売は7月15日からです。
岡山の吉田拓郎ファンの方「2007年吉田拓郎コンサートツアー」の最終日を児島で迎えましょう。
MagpieRSSをいろいろ試して
PHPで使えるRSSパーサーのMagpieRSSをいろいろと試しています。
書かれているのがPHPなので、表示には、もちろん、PHPの関数��使えます。
たとえば、RSSの何項目もある<item>から7項目のみ表示させたいときは、
$rss->items = array_slice($rss->items,0,7)
array_sliceという関数が使えます。
問題は、日付の変換です。日付に関しては、いろいろな表現方法があるようで、変換もそのつど悩んでいます。(基礎がないので仕方がありませんが)。
あるサイトの日付の出力は、
<pubDate>Thu,15 Mar 2007 15:00:00 +0900</pubDate>
となっていて、この場合は
$date=$item[pubdate];
$daytime=date(“■Y年m月d日”,strtotime($date));
$daytime = JcodeConvert($daytime,0,1);
などとするとうまく変換されました。
また、あるサイトのRSSは、
<dc:date>2006-12-27T09:58+09:00</dc:date>
となっていました。この書式の年号の変換の仕方とdc:dateという書き方をどういうふうに変換したらいいのかわからず、いろいろ試してもエラーばかりでしたが、MagpieRSSを紹介していたサイトのコメントの中に答えがありました。
dc:dateは[dc][date]いうことと、MagpieRSSのユーティリティが使えそうなことが分かりました。こんな感じでうまく変換できました。
include_once ‘rss_utils.inc’;
$date=$item['dc']['date'];
$date=parse_w3cdtf($date);
$daytime=date(‘■Y年m月d日’,$date);
$daytime = JcodeConvert($daytime,0,2);
何かに書き留めておかないと忘れることもあるので、web作成メモとして残しておくことにします。
PHPで簡易データベースによるHP作成
PHPは、HTML表示が使いやすいので、ブロックを組み立てるような感覚で作成できるところが便利です。いろいろとPHP初心者向けのホームページをサーチしていたら、「アフリエイトのためのPHP入門講座」に行き当たりました。その中で、「 簡易データベースを作ってみよう 」というコーナーがあり、CSVファイルから、必要な項目を呼び出してHTMLを書き出しす方法がていねいに分かりやすく解説されています。これを応用すると、エクセルで情報を一元管理して、それを更新したとき、CSVファイルに変換してサーバーにアップするだけでいいので便利です。
とりあえず、試しに交通情報を作り変えて見ました。