2 - 連続表示

新規書き込み

※該当の記事タイトル一覧はリンク一覧から参照できます。

PHPでPOST送信

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年8月2日
某大手掲示板でイタズラ書き込みがあると、その書き込みをしたユーザーと同じプロバイダーを使っているユーザー全員が書き込みできなくなってしまう、ということがあります。書き込み後に「アクセス規制中です!!」というメッセージが出て、結局書き込みできなかったという経験をした方が少なからずいるのではないでしょうか。しかも、規制は数日続くことが多く、書きたい事があるのに、せっかくのタイミングを逃してしまうことがあります。

これを回避するには「プロキシ」を使う手があります。しかし誰でも使える「公開プロキシ」は、犯罪行為助長の危険性があることなどから、ここを経由しての書き込みはできない掲示板が多いです。もちろん某大手掲示板も例外ではありません。

そこで考えたのが「WEBサーバーをプロキシ代わりにして、メッセージを送信できないか?」ということでした。ホームページのメッセージ送信には、「GET」と「POST」という2種類の方式がありますが、掲示板で使用されているのは主に「POST」の方です。「WEBサーバーからPOST送信できれば、規制から外れて書き込めるようになる」ということで、早速PHPでPOST送信のプログラムを作ってみました。

■■■■■POST送信プログラムサンプル■■■■■
<?php

//ソケット接続
$sock = fsockopen('XXXXXXXX.com', 80, $errno, $errmsg, 30);

//接続可否の判定
if (is_resource($sock)){
print '接続しました。<br>';

//リクエストのデータ部
$v0 = '名前なまお';
$v1 = 'コメントこめんといかんな。';

//リクエストのデータ部(エンコード)
$data = 'name='.urlencode($v0).'comment='.urlencode($v1);

//リクエストを送信
$request = "POST http://XXXXXXXX.com/bbs.cgi HTTP/1.1\r\n"
.'Host: XXXXXXXX.com'."\r\n"
.'Content-Type: application/x-www-form-urlencoded'."\r\n"
.'Referer: http://XXXXXXXX.com/bbs_view.cgi'."\r\n"
."Content-Length: ".strlen($data)."\r\n\r\n"
.$data."\r\n";
fwrite ($sock, $request);

//レスポンスを受信
$res = '';
while (!feof($sock)) {
$d = fgets($sock);
$res .= $d;
}

//レスポンスを表示
print $res;

//ソケット切断
fclose($sock);

} else {

//ソケット接続エラー
print 'エラー'.$errmsg;

}

?>
■■■■■■■■■■■■■■■■■■■■■■■

以上が最低限のPOST送信機能を有したサンプルプログラムです。一応これだけでも動くことは動くのですが、このままでは某大手掲示板へのメッセージ送信はできません。某大手掲示板へのメッセージ送信は、ヘッダーに別途Cookie情報を付け加える必要があります。

まずは、POST送信のヘッダー情報を得るのに、パケットキャプチャ(Wireshark)を利用します。続いて、ヘッダー中のCookie情報にあるホスト名(通常はプロバイダー名になっています)を、WEBサーバーのホスト名に変更します。そして、修正されたヘッダー情報を、丸ごとPHPプログラムに反映させることで、某大手掲示板への書き込みが可能になります。これで「アクセス規制中」でも、WEBサーバー経由で問題がなくメッセージ送信ができるようになります。

ちなみにソケット接続関連のプログラムは、悪用される可能性もあるので、完全な形で公開できないことをお許しください。また完成したプログラムもあることはあるのですが、こちらも個人用として利用するだけで、一般公開はできませんので悪しからず…。



PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)

入門PHPセキュリティ
入門PHPセキュリティ をAmazon.co.jpでチェック

WEBデザイナーとWEBプログラマー

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年7月31日
WebデザイナーとWebプログラマー何年も前からの話ですが、私は時折コンピューター関連の本を買って、自分の知識の肥やしにしています。ホームページ作成関連だったり、自作PC関連だったり、ネットワーク関連だったり、Excel関連(関数、VBAなど)だったり…。一言でコンピューター関連と言っても、ジャンルは様々です。

そんな中、ここ最近「自分のできる範疇を超えている」という本を買っています。直近では「CPUの創りかた」という本がありました。読んでいて一部を理解することはできるものの、あまりにも説明が詳細かつ難解すぎて、全てを理解するのは到底不可能でした。「個人的に、実践することもまず無いだろう…」という内容でもありました。

そういう本は私にとって無意味ではなく、自分の「限界ライン」を知るのにかなり有効です。私はどちらかと言えば「何でも自分でやりたがる」方なのですが、このような本を読むことによって「ここから先は、私の範疇ではない」ということを明確にすることができます。私ももう若くはないので、このような取捨選択のプロセスは、そろそろ必要になってきています(というより、もっと若いうちからやるべきことなのかもしれませんが…)。

さて、今回購入した本は「WEBデザイン早ワザ大全」です。最新WEBデザインのノウハウが詰まっている、WEBデザイナー必見の本、と言ったらいいでしょうか。

ところで、私は本業ではないものの、かなりの時間を費やしてホームページ作成をやっていますが、決して「WEBデザイナー」ではありません。どちらかと言うと、「WEBプログラマー」の方に属するのかなと思っています(プロの方には失礼な発言かもしれませんが…)。

WEB制作に携わっている人にとっては、WEBデザイナーとWEBプログラマーの違いは明白ですが、一般的には違いが分かりづらいと思います。そこで、一例ではありますが、WEBデザイナーとWEBプログラマーの違いを挙げておきます。

■WEBデザイナー
・ホームページを「デザイン」する人たち。
・比較的芸術系。
・ページレイアウトや色調などにうるさい。
・Illustrator、Photoshop、Flashなどを駆使して素材を作成。
・HTML、CSS、JavaScriptなどを組み合わせて、ページの見栄えを優先。
・基本はHTML1ファイルあたり1ページの世界(URL1つにつき、1ページ分のコンテンツ)。

■WEBプログラマー
・ホームページを「プログラム」する人たち。
・比較的理数系。
・基本、レイアウトや色調には無頓着。
・テキストエディターでプログラミング。
・Perl、PHPなどのWEB開発言語を使い、効率的な作業を優先。
・プログラムファイル1つで、数百、数千など大量のページを動かす世界(URLが1つでも、パラメーターを変えるとコンテンツが変わる)。

区分けで言うと、一般的な会社のホームページを作成するのは、WEBデザイナーの方が中心になります。そこにたまにWEBプログラマーが顔を出すことはありますが、表に出る「デザイン」については常にWEBデザイナー主導で進みます。(ただし、大規模なホームページでは、両者が連携して制作を進めることの方が多くなります。)

私も何年も前ですが、ある会社のホームページの作成を手伝ったりしたことはあります。しかし、ここ数年のWEBデザインの進化は凄まじく、今では仮に「会社のホームページを作ってほしい」と頼まれたとしても、「ちゃんとしたWEBデザイナーに頼んだ方がいい」と言うことになると思います。私自身のWEBデザイン能力と、今現在、一般的な会社のホームページに求められるデザインとでは、あまりにも開きがあるからです。

私の得意とするところはPerlやPHPのプログラム作成や改良です。たとえばこの「ブログ掲示板」のプログラムはPerlで自作したものですが、もともとは1999年に作成した簡易掲示板を改良・発展させていったものです。あと、WEB上の商品データベースからデータを引っ張り出して、ショッピングサイトを構築したり、アクセス集計のデータをグラフ化したり…。もちろん普通のHTML編集もやりますが、どちらかと言えばそんなところを得意としています。

ただ、基本は全て「自分用」のプログラミングだったりします。この辺が本当のプロの方とは全く違うところで、そういった方々からは「何がWEBプログラマーだ」とお叱りを受けそうなところではありますが…。

さて、話を元に戻して「WEBデザイン早ワザ大全」です。私の持っているWEB関連技術は、「自分のホームページのためのプログラミング」が中心ではあるものの、やはり人目に付くホームページを管理している以上、もちろんデザインがいいに越したことはありません。そういう意味でこの本を購入してデザインの向上を図ろうとしたのですが…、書かれている内容やサンプルのレベルの高さなど、私の範疇をとっくに超えてしまっています。

この本にあるサンプルは、もちろん「洗練されたデザイン」という印象はありますが、それよりも「更新するのが面倒そう」という考えが先に行ってしまいます。悲しい性ではありますが、これでまた自分の「限界ライン」が一本増えました。



Web管理関連記事(リンク一覧): SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / Webサーバー引っ越し(さくらインターネット スタンダード)とHTTPS(常時SSL)化 / ...(記事連続表示)

WEBデザイン早ワザ大全 (インプレスムック エムディエヌ・ムック)
WEBデザイン早ワザ大全 (インプレスムック エムディエヌ・ムック) をAmazon.co.jpでチェック

T-01Aの充電と相性問題

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年7月28日
T-01Aの充電と相性問題前機種のHT1100はバッテリーの持ちはイマイチでしたが、充電に関しては楽な機種でした。色々な充電方法を試してみましたが、比較的どの方式でも充電が可能でした。また、電源を完全に切った状態からの充電も問題ありませんでした。

しかし、T-01Aに関しては、HT1100では充電できた装置で充電できないものがあったり、また端末の電源を切った状態では充電できなかったりと(2009/8/7修正: 電源を切った状態でも充電可能です)、HT1100との違いに戸惑いました。

調べてみると同じ充電装置でもケーブルの違いで「充電できる/充電できない」があったりするなど、使う側にとってはあまりありがたくない相性問題が存在するようです。本当はこうした挙動にもちゃんと根拠があって、「相性」ではないのかもしれませんが、少なくとも私にとっては全く理解できないので、実際に何種類かの充電装置とケーブルを組み合わせてテストしてみることにしました。結果は以下の通りです。

給電 
ケーブル
パソコンの
USBポート
eneloop
(リチウムイオン
バッテリー
/KBC-L2)
eneloop
(単3/KBC-E1)
USB-ACアダプタ
(タイムリー製)
USB-microUSBケーブル(T-01A付属のPC接続用ケーブル)××
USB-microUSBケーブル(WILLCOM03用RCWS020SH××
USB-FOMA充電コード(MBC403BK)とT-01A付属のFOMA-microUSB変換アダプタの組み合わせ
USB-miniUSBケーブルとminiUSB-microUSB変換アダプタの組み合わせ××××
USBオス-USBオスケーブルとT-01A付属のUSB-microUSB変換アダプタの組み合わせ××××

※テスト結果は個人的な調査によるもので、他の方の端末や充電装置の動作保証はしません。「充電できると書かれているのに充電できなかった」といったクレームは一切受け付けないので予めご了承ください。

他のホームページやブログでも話題になっていますが、USB-FOMAケーブルとT-01A付属のFOMA-microUSB変換アダプタの組み合わせは相性がいいです。USB-microUSBケーブル1本では充電できなかった、「単3eneloop」や「USB-ACアダプタ」でもちゃんと充電ができました。「単3eneloop」は装置の給電スイッチを何回か押さないとT-01Aが認識しないという現象が起きましたが、一旦充電が開始されるとちゃんと最後まで充電してくれました(ちなみにeneloop以外の普通の乾電池では充電できないのでご注意を)。

「リチウムイオンeneloop」について、うちではT-01A付属のケーブルも、WILLCOM03用のケーブルも、どちらでも正常に充電できました。ただ、他のホームページなどでは、「T-01A付属のケーブルでは充電できず、USB-FOMAケーブルを使ったら充電できた」などという書き込みを見たことがあります。もしかしたら端末やケーブルの個体差なのかも知れません。

あと全くダメだったのが、「USB-miniUSBケーブル」や「USBオス-USBオスケーブル」にmicroUSBアダプタを付ける方式です。やる前は充電出来そうな予感がしていたのですが、完全に期待を裏切られてしまいました。

そういうことで、どんな状況下でも確実にT-01Aを充電を出来るようにするには、USB-FOMAケーブルが必須なようです。ただ、FOMA専用コネクタを直接使うものは何一つ所有していないので、何となく変な気分ではありますが…。



Windows Mobile関連記事(リンク一覧): 2度目の30kmラン / 携帯電話回想録 / T-01Aユーザー全員にmicroSDHCカード8GB / Avidemuxの使い方/T-01A用に動画ファイル形式変換 / T-01Aで『モバイルパワフルプロ野球MEGA for Windows phone』 / ...(記事連続表示)

SANYO USB出力付きリチウムイオンバッテリー (専用高容量リチウムイオン電池使用) KBC-L2S KBC-L2S
SANYO USB出力付きリチウムイオンバッテリーKBC-L2SをAmazon.co.jpでチェック
コメント:T-01Aの充電と相性問題
名前: flyingpork 日付: 2009年8月7日
相性というよりは、usbはdata+とdata-を短絡させた物は
充電用という位置づけみたいで、純正のmicrousbケーブルも
コネクタに見えている4本の端子のうち中央の2本の信号を短絡させるとそのまま充電できます。(アルミテープなどでさくっと確認できます)
やすいmicrousbケーブルを買って改造してしまうのが良さそうですね~
当然データ転送等には使えなくなります><
コメント:T-01Aの充電と相性問題
名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年8月7日
コメント:T-01Aの充電と相性問題非常に有用な情報ありがとうございます!

早速余っているUSB-miniUSBケーブルを切断して、赤と黒のラインを普通に接続し、白と緑のラインを短絡させてみました(赤:POWER、黒:GND、白:DATA-、緑:DATA+ということで)。そのminiUSB側にmicroUSB変換アダプタを取り付けてT-01Aに接続したところ、ちゃんと充電できるようになりました!

普通に接続すると全く充電できない組み合わせで、単に「相性が悪い」と決めつけていましたが、これで充電用ケーブルの仕組みを理解できました。
コメント:T-01Aの充電と相性問題
名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年8月7日
修正です。

「(T-01Aは)端末の電源を切った状態では充電できなかったり」と書きましたが、電源を切った状態でUSBケーブルを接続し、10秒ほど待ったらちゃんと充電できました。

前機種のHT1100はUSBケーブル接続後、すぐに充電ランプが灯ったので、それと同じ様なタイミングで点灯しなかったことによる誤解でした。

KUNISAN.JPサービスモール

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年7月27日
KUNISAN.JPサービスモールValueCommerceのウェブサービスを使った新ページです。

KUNISAN.JPサービスモール[β版]
http://kunisan.jp/service_mall/

今の段階で温泉宿情報、ビジネスホテル情報、海外ツアー情報、中古車情報などが検索できます。海外ツアー情報については、先日作成した「KUNISAN.JP海外ツアー情報」と内容がダブっていますが、一応「総合サービスサイト」を目指すということで、ダブりのまま残しておくことにしました。今のところトップページが少々寂しいですが、これからサービスの種類を増やすことで、徐々に賑やかになってくると思います。
※2009/7/28追記: 「KUNISAN.JP海外ツアー情報」は管理上の理由から、「KUNISAN.JPサービスモール」のサービスとして一元化し、もともとあったアドレスからは外しました。

プログラムについては、「KUNISAN.JP海外ツアー情報」のものを、ほぼそのまま利用して、細かいパラメータや飾りの部分だけを変更しています。地名一覧や車種一覧などのデータは、ホームページ等からExcelにデータをコピーし、無駄な部分を削除するなどの加工をしています。それからExcelデータを「PHPプログラム作成PHPプログラム」という自作ツールにデータを落とし込んで、一気に数十~数百個のホームページ用ファイルを作成しています。そのまま完了すれば非常に効率的な作業と言えるかもしれませんが、残念ながらその後の微調整に結構な時間がかかったりしています。

ページによっては画面左のリンク(一覧)の文字が小さくて読みづらいかもしれません。ただ、このリンクの主目的は「サーチエンジンにかかりやすくする」というで、使いやすさは「二の次」になってます。このページを訪れる人の多くが、トップページからではなく、サーチエンジンから直接該当のページに行くだろうと予測しています。そのような人たちは別の情報を探す時も、恐らく小さい文字のリンクを直接クリックするより、画面左上のサーチ機能を使うだろうという読みです。

システム的なところはほとんど仕上がっているので、あとはコンテンツの拡充を続けるのみです。果たしてお客さんは来てくれるのでしょうか…?



Web管理関連記事(リンク一覧): SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / Webサーバー引っ越し(さくらインターネット スタンダード)とHTTPS(常時SSL)化 / ...(記事連続表示)

バリューコマース公認 一歩先行くアフィリエイト成功ガイド Yahoo!オークション&ショッピングも使える!
バリューコマース公認 一歩先行くアフィリエイト成功ガイド をAmazon.co.jpでチェック

池袋「博多天神」の豚骨ラーメン

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年7月25日
池袋「博多天神」の豚骨ラーメン今日の昼は池袋東口からビックカメラの方に歩いて2分ほどのところにある、「博多天神」というラーメン店に行ってきました。店名からも分かる通り、豚骨ラーメンのお店です。

注文したのは普通の「ラーメン(500円)」。注文からたったの30秒で出てきました。器は小さめで、見た目はシンプル。でも、スープはかなり濃厚かつクリーミーです。ただ、「東京とんこつ」よりもしつこさはやや控えめで、とんこつ特有の匂いもありません。麺はデフォルトではやや硬めですが、麺の硬さは自由に選べるようです。替玉が100円なので若い男性客は替玉をよく頼むようですが、私は麺1玉分とスープを少し飲んでお腹がいっぱいになりました。

昼時にビックカメラに行くと、つい近くのマックに寄ってしまうことが多かったのですが、これからはこちらのラーメン店にも足を運ぶかもしれません。



ラーメン関連記事(リンク一覧): 馬子禄牛肉面(神保町店)の蘭州牛肉面 / 石神井とらの特製つけ麺(石神井公園) / 麺屋 二二一(ふじい)の特製たまごかけ麺(神保町) / 一泊二日の出雲旅行 / 武蔵野アブラ学会の特濃生玉油そば / ...(記事連続表示)

ラーメンWalker東京&埼玉 2009 61802-30 (ウォーカームック 129) (ムック)
ラーメンWalker東京&埼玉 2009 61802-30 (ムック)をAmazon.co.jpでチェック

T-01Aに「GSFinder+ for W-ZERO3」導入

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年7月25日
T-01Aに「GSFinder+ for W-ZERO3」導入Windows Mobile標準のエクスプローラーは、ファイルやフォルダを開いたりするのに必要最小限の機能が付いていて、まあ普通に使う分にはこれで十分事が足ります。

ただ、パソコン版Windowsのファイル管理に慣れていると、アイコンを格子状に並べられなかったり、拡張子の表示ができなかったり、ネットワーク上のファイルを直接開くことができなかったり(開くにはデバイスか外部メモリにコピペが必要)と、色々と不便な点があります。そこで導入したのが「GSFinder+ for W-ZERO3 (ダウンロードサイト: http://soft.wince.ne.jp/soft/...)」です。

機能を復唱するようですが、アイコンを格子状に並べたり、「詳細」でサイズやファイルの種類も一覧表示したり、拡張子の表示をオンにしたり、システムファイルや隠しファイルの表示のオンオフを切り替えたり、ZIPファイルを作成したり、ネットワーク上のファイルを直接開いたり…、パソコン版Windowsでできるようなことの多くがT-01A上でもできるようになります。

「GSFinder+ for W-ZERO3」ファイルの種類設定実は私が「GSFinder+ for W-ZERO3」で利用している機能は他にもあって、特にファイルの種類(=拡張子)によって起動パラメーターをいじれるところで大変重宝しています。ここでは名前は挙げませんが、あるソフトの起動パラメーターを変更することによって、T-01Aのシステム的なところをいじれる機能がありました。これを利用するために、まずは拡張子を新規登録して、その拡張子を選択して「編集」、アプリケーションを関連付けて、「起動パラメータ」欄にパラメーターを入力します。そして、登録した拡張子で空ファイルを作成し、それを開くことで期待していた通りの機能が使えるようになりました。(ちなみに、起動パラメーターをいじる方法は他にもあります)

ファイル管理については個人個人でやり方が違うにせよ、「GSFinder+ for W-ZERO3」はあって困らないソフトであることは間違いないと思います。



Windows Mobile関連記事(リンク一覧): 2度目の30kmラン / 携帯電話回想録 / T-01Aユーザー全員にmicroSDHCカード8GB / Avidemuxの使い方/T-01A用に動画ファイル形式変換 / T-01Aで『モバイルパワフルプロ野球MEGA for Windows phone』 / ...(記事連続表示)

Windows Mobile 6アプリケーションブック
Windows Mobile 6アプリケーションブック をAmazon.co.jpでチェック

ValueCommersウェブサービスのPHPサンプルプログラム

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年7月24日
ValueCommerceのウェブサービスは、同じアフィリエイト系のウェブサービスであるAmazonの「Product Advertizing API(要署名認証)」に比べてリクエストが容易です。他でのウェブサービスの利用経験があれば比較的簡単にプログラムを組むことができると思います。

先日公開した「KUNISAN.JP海外ツアー情報」のプログラミングも、比較的スムーズに進行しました。しかしその中で2回だけ大きな壁に遭遇しました。
※2009/7/28追記: 「KUNISAN.JP海外ツアー情報」は管理上の理由から、「KUNISAN.JPサービスモール (http://kunisan.jp/service_mall/)」のサービスとして一元化し、もともとあったアドレスからは外しました。

*問題1: リクエストからレスポンスまで30秒~1分かかることがある。
Amazonでも5秒ほどレスポンスが来ないことがあり、それでも多少イライラしていたのですが、「その程度でイライラしていたなんて恥ずかしい」と思えるほどの大きな遅延です。リクエスト→レスポンスの処理を同一プログラム内でやってしまうとページ表示に時間がかかるため、これではこのページを誰も利用しなくなってしまいます。
そのため、今回のプログラムでは基本的にデータをキャッシュから読み込む形にしてみました。これなら遅延時間はほとんどありません。また、キャッシュの生成処理についてもページ表示のものと同一のプログラム内でやると、レスポンス取得に時間がかかる場合にページが表示されない時間が長くなってしまうので、プログラム後半に付けた「imgタグ」で、別のキャッシュ生成用プログラムを踏ませる形の処理をしています。ちなみにリクエストから1分以上かかってレスポンスが来て、挙句の果てに空データということもあります。もちろん、このような場合にはデータをキャッシュしないようにしてあります。

*問題2: レスポンスのXMLデータにコロン「:」付きの要素がある。
以前のAmazonのプログラムでは、作成当時「KUNISAN.JP」サーバーがPHP4のみ対応だったため、XML関連のコマンドが一切使用できず、代わりsplit関数を多用してデータを配列変数に入れ込む形で処理していました。
現在はサーバーがPHP5対応のため、せっかくなので「simplexml」を使ってXMLをオブジェクトに変換する方法に切り替えてみました。しかし、ValueCommerceのデータは要素名にコロンが入っています。困ったことにsimplexmlではコロン付きの要素名を認識してくれません。そのため、オブジェクト変換の前に、要素名のコロンを全てアンダーバー「_」に変換するという処理を取っています。

ということで、実際に使われているプログラムの一部を抜粋して掲載します。ご参考にどうぞ。

■■ValueCommerceウェブサービス用プログラム(サンプル)■■

※本サンプルプログラムの動作保証はしません。
※本サンプルプログラムに関する質問、クレーム等は一切受け付けません。
※本サンプルプログラムのご利用はご自由に行って構いません。ただし、プログラムの2次配布、2次掲載(ホームページ、ブログ、印刷物などへの本サンプルプログラムの転載)はご遠慮ください。
※本ページへのリンクはご自由にどうぞ。


<?php
//※プログラム内のXXXXXXXXXXはユーザー個別の値を設定します。

//使用言語とエンコードの指定
mb_language("ja");
mb_internal_encoding("SJIS");

//検索ワード指定
$word = 'ヘルシンキ';

//検索用ワード指定
$word_search = mb_convert_encoding($word, "UTF-8","SJIS");

//検索用URL指定
addr = 'http://webservice.valuecommerce.ne.jp/productdb/search?
token=XXXXXXXXXX&category=travel&sort_by=price&sort_order=asc&results_per_page=100
&keyword='.$word_search;

//キャッシュ処理
//実行中のスクリプト名を取得、拡張子を除いたファイル名のみ取得
$scrip = $_SERVER['SCRIPT_NAME'];
$scrip = str_replace('/tour/','',$scrip);
$scrip = str_replace('.php','',$scrip);

//キャッシュファイルのパスを生成
$scrip = 'cache/'.$scrip.'.cnt';

//該当キャッシュファイルの更新日時の取得
$stam = filemtime($scrip);

//キャッシュファイルが24時間(1日間)以上前に作られたものであれば新規に読み込み、そうでない場合にはキャッシュから読み込む。
$timnow = time();
if (($timnow - $stam) > 86400) {
$contents = file_get_contents($addr); //データベースから新規読み込み

//XMLデータ長が2200超の場合のみキャッシュに保存(それ以下は空データとみなし、保存しない)
$stlen = strlen($contents);
if ($stlen > 2200) {
//XMLデータをキャッシュに保存
file_put_contents($scrip,$contents);
}

} else {
$contents = file_get_contents($scrip); //キャッシュから読み込み
$cr = 1; //キャッシュから読み込みのフラグ
}

//コロン付きの要素は処理が面倒になるので、アンダーバーに変更
$contents = str_replace('<vc:','<vc_',$contents);
$contents = str_replace('</vc:','</vc_',$contents);

//XMLをオブジェクトに変換
$xml = simplexml_load_string($contents);

//結果数取得(星印の表示、非表示や検索結果が無い場合などに使用する)
$no_results = $xml->channel->vc_resultcount;

//検索結果が見つからない場合(エラー)と見つかった場合(タイトル)
if ($no_results == 0) {
print '<br>'.$word.'の情報は見つかりませんでした。<br><br><br>';
} else {

//繰り返し構文(100件)
for ($item_no = 0; $item_no < 100; $item_no++) {

//XMLからタイトル抽出
$temp[0] = $xml->channel->item[$item_no]->title;

//XMLからリンク抽出
$temp[1] = $xml->channel->item[$item_no]->link;

//XMLから詳細抽出
$temp[2] = $xml->channel->item[$item_no]->description;

//XMLから料金抽出
$temp[3] = $xml->channel->item[$item_no]->vc_price;

//タイトルが取得出来ている場合のみ表示
if ($temp[0] != '') {

//抽出データをUTF-8からSJISに変換
for ($i = 0; $i < 3; $i++) {
$temp[$i] = mb_convert_encoding($temp[$i],"SJIS","UTF-8");
}

//HTML出力
print '<a href="'.$temp[1].'"><strong>'.$temp[0].'</strong><img src="https://ad.jp.ap.valuecommerce.com/servlet/gifbanner?vs=XXXXXXXXXX&vp=XXXXXXXXXX" height="1" width="1" Border="0"></a> ';
print '安い順ランキング: '.($item_no + 1).'位 ';
print '<br>';
print $temp[2].'<br>';
print '<strong>料金:</strong> '.number_format($temp[3]).'円~<br>';
print '<br>';

}

}

}
?>

<?php
//キャッシュ読み込みの場合は、キャッシュ強制更新処理
if ($cr == 1){
print '<img src="launch.php?WORD='.$word.'&SCRIP='.$scrip.'" width="1" height="1"><br>';
}
?>
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■




PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)

バリューコマース公認 一歩先行くアフィリエイト成功ガイド Yahoo!オークション&ショッピングも使える! (単行本(ソフトカバー))
バリューコマース公認 一歩先行くアフィリエイト成功ガイド をAmazon.co.jpでチェック


Google Maps API

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年7月23日
最近、APIの利用に凝っています。昨年のAmazonに始まり、先日はValueCommerce、そして今日はGoogle Maps APIを試してみました。

今まで利用してきたAPIは、PHPでリクエストを出し、レスポンスとして取得したXMLデータを加工して、HTMLとして表示する方式を取ってきました。しかし、Google Maps APIは方法が違います。基本的にはJavaScriptで動かす形になり、Google Maps API専用の命令群を使う必要があります。

Google Maps APIの公式ページに掲載されているサンプルのソースを見れば、大まかな事は分かるものの、念のためリファレンス本として「Google Maps APIv2活用リファレンス」という本を購入しておきました。操作に使うコマンド一覧が淡々と説明してあって、リファレンス本としては必要十分な情報量です。

ということで、サンプルプログラムを作成してみました。本ページの右上の画像は写真ではなくて、実際にGoogle Maps APIを利用したサンプルです(プログラムは「検索」ボタンの右側あたりでマウスを右クリックし、「ソースの表示」を選択すると見ることができます)。住所を入力すると、ちゃんとその場所に移動します。地図のタイプも「写真」や「地図+写真」などに変更することもできます。

早速この技術を新設の「KUNISAN.JP海外ツアー情報」にも組み込んでみました。生まれて初めてちゃんとした「マッシュアップ(Value Commersウェブサービス+Google Maps API)」が完成した気がします。今まで知っていたAPIの組み合わせだと、大したマッシュアップができませんでしたが、Google Maps APIに関しては色々と応用が利きそうなので、今後のホームページ制作の上でも展開していきたいです。
※2009/7/28追記: 「KUNISAN.JP海外ツアー情報」は管理上の理由から、「KUNISAN.JPサービスモール (http://kunisan.jp/service_mall/)」のサービスとして一元化し、もともとあったアドレスからは外しました。



Web管理関連記事(リンク一覧): SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / Webサーバー引っ越し(さくらインターネット スタンダード)とHTTPS(常時SSL)化 / ...(記事連続表示)
Google Maps APIv2活用リファレンス (単行本(ソフトカバー))
Google Maps APIv2活用リファレンスをAmazon.co.jpでチェック

T-01Aで「画像編集君」を利用してみました

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年7月23日
T-01Aで「画像編集君」を利用してみました私が管理しているホームページの宣伝になってしまいますが、ウェブアプリケーション系ということで「画像編集君」を紹介させていただきます。

画像編集君:
http://kunisan.jp/gazo/

画像編集君は名前の通り、画像(JPEG、GIF、PNG形式)をホームページ上で編集できるツールです。画像のサイズを変更したり、切り取り、伸縮、回転、特殊効果、合成処理、ファイル形式変更、GIFアニメ作成などの機能に対応しています。操作は画面左の「画像をアップロードする」からファイルをアップロードして、あとは自分の好みで編集するだけです。画像編集が完了したら、画像を長タップして「保存」を選択するか、メニューから「画像をメール送信する」で別の端末やパソコンなどに転送することもできます。

基本的にプログラムはサーバー上で処理される形なので、T-01A以外(iPhoneとかAndroidとか)でも動作します。FlashやJavaなどは一切使用していないため、ブラウザもIE、NetFront、Opera、Irisのどれでも動作します。ただ、T-01Aでは画面の拡大・縮小が容易なOperaやIrisの方が操作がしやすいです。

インターネットが繋がる環境であれば、撮影した写真をすぐに編集できます。また、ソフトのインストールも不要なので、端末にできるだけ負荷を与えたくないという人には、結構気に入ってもらえるかな、なんて思ったりしています。



Windows Mobile関連記事(リンク一覧): 2度目の30kmラン / 携帯電話回想録 / T-01Aユーザー全員にmicroSDHCカード8GB / Avidemuxの使い方/T-01A用に動画ファイル形式変換 / T-01Aで『モバイルパワフルプロ野球MEGA for Windows phone』 / ...(記事連続表示)
クリアケース for T-01A
クリアケース for T-01AをAmazon.co.jpでチェック

「KUNISAN.JP海外ツアー情報」ページ完成

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年7月22日
「KUNISAN.JP海外ツアー情報」ページ完成ValueCommerceのウェブサービスを利用して、「海外ツアー情報」のページを立ち上げました。

KUNISAN.JP海外ツアー情報[β版]
http://kunisan.jp/tour/
※2009/7/28追記: 「KUNISAN.JP海外ツアー情報」は管理上の理由から、「KUNISAN.JPサービスモール (http://kunisan.jp/service_mall/)」のサービスとして一元化し、もともとあったアドレスからは外しました。

トップページは情報元の売上順(人気順)で、その他のメニューやサーチ機能などは、全て「料金の安い順」に表示されます。格安の海外ツアーを探している人にとっては、それなりに使えるサイトではないかと思います。

昨年1月にオープンした「KUNISAN.JPショップ(Amazonのウェブサービス利用)」同様、今回もPHPでプログラムしています。ただ、同じ「ウェブサービス」という名前でも、「随分と仕様が異なるんだな…」というのが、今回プログラムを組んだ中での率直な感想です。



Web管理関連記事(リンク一覧): SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / Webサーバー引っ越し(さくらインターネット スタンダード)とHTTPS(常時SSL)化 / ...(記事連続表示)
海外旅行が変わる ホテルの常識 (地球の歩き方Books) (単行本)
海外旅行が変わる ホテルの常識 をAmazon.co.jpでチェック


※該当の記事タイトル一覧はリンク一覧から参照できます。