[PEAR] Amazon API の ItemSearch を使った複数キーワードでの検索方法

 

Amazon API を使える PEAR :: Services_Amazon の ItemSearch を使って、複数キーワードでの検索をしてみました。
 

・参考:Docs For Class Services_Amazon
 

ItemSearch の使い方サンプルは以下のようになっています。
 

1
2
3
4
5
6
7
8
9
10
11
<?php
 
$amazon = new Services_Amazon('[your Access Key ID here]', '[your Secret Access key here]');
 
$options = array();
$options['Keywords'] = 'sushi';
$options['ResponseGroup'] = 'ItemIds,ItemAttributes,Images';
 
$result = $amazon->ItemSearch('Books', $options);
 
 ?>

これの $options[‘Keywords’] の部分を下記のようにすれば、「書籍名」「著者名」「出版社名」と複数のキーワードで検索できます。
 

1
2
3
4
5
$title = '検索したい書籍名';
$author = '検索したい著者名';
$publisher = '検索したい出版社名';
 
$options['Keywords'] = $title . $author . $publisher;

 

このとき、キーワードに含まれる「書籍名」「著者名」「出版社名」は、検索時にAmazon側での区別はされていません。
 

Amazonには、これらの文字列3つを連結した文字列の内容で検索しています。
 

以上です。
 

[PEAR] Services_Amazon をインストールして Amazon API を使ってみました

PEARの Services_Amazon をインストールして Amazon API を使ってみました。

・参考:Amazon APIを使って簡単にランキングを取得する – EC studio 技術ブログ はてなブックマーク - Amazon APIを使って簡単にランキングを取得する - EC studio 技術ブログ
 

1. PEAR HTTP_Request2 のインストール

# pear install -a HTTP_Request2-alpha

※Services_Amazonで使用しているHTTP_Request内で使用しているので、まずこちらをインストール。

※インストールのバージョン(state)は最新のものを指定してください

※インストールする際に、依存するパッケージも合わせてインストールするため、オプションに「-a」を指定しています。

 

2. PEAR Services_Amazon のインストール

# pear install -a Services_Amazon-beta

 

3. ちゃんとインストールされたか確認

# pear list

以下の4つがインストールされていればOKです。(バージョンは、2011/05/17 時点)

Cache            1.5.6    stable
HTTP_Request2    2.0.0RC1 beta
Services_Amazon  0.8.0    beta
XML_Serializer   0.20.2   beta

 

以上です。
 

[Symfony1.4] Strict、Deprecated エラーや Warning を表示させない設定方法

 

Symfony1.4 にて、PEARを使うと、StrictエラーやらDeprecatedエラーやらが大量に出力されました。
 

エラーの出力設定を php.ini で変更したのですが、Symfonyのプログラムでは反映されていませんでした。
 

Symfonyには プロジェクトホーム/apps/frontend/config/settings.yml に error_reporting が書かれているので、php.ini の設定をこれで上書きしてしまっているようです。
 

ちなみに、「error_reporting」というワードが記載されているファイルは以下のように grep コマンドで探します。
 

1
2
3
4
5
# grep -R error_reporting ./
 
./cache/frontend/dev/config/config_settings.yml.php:  'sf_error_reporting' => 32767,
./apps/frontend/config/settings.yml:    error_reporting:        <?php echo (E_ALL | E_STRICT)."\n" ?>
./apps/frontend/config/settings.yml:    error_reporting:        <?php echo ((E_ALL | E_STRICT) ^ E_NOTICE)."\n" ?>

 

該当しそうな部分が見つかりました。
 

cache の config_settings.yml.php に ‘sf_error_reporting’ => 32767, とあり、32767 デフォルトのE_ALL | E_STRICTなので、php.ini の設定がSymfony側に反映されていないことが、ここで確認できます。
 

デフォルトでは settings.yml は以下のようになっています。
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/04-Settings

prod:
  .settings:
    no_script_name:         true
    logging_enabled:        false

dev:
  .settings:
    error_reporting:        <?php echo (E_ALL | E_STRICT)."\n" ?>
    web_debug:              true
    cache:                  false
    no_script_name:         false
    etag:                   false

test:
  .settings:
    error_reporting:        <?php echo ((E_ALL | E_STRICT) ^ E_NOTICE)."\n" ?>
    cache:                  false
    web_debug:              false
    no_script_name:         false
    etag:                   false

all:
  .settings:
    # Form security secret (CSRF protection)
    csrf_secret:            ebfxa42b0x90387xd2fx4d24xd00xxx38c1a9x16
 
    # Output escaping settings
    escaping_strategy:      true
    escaping_method:        ESC_SPECIALCHARS
 
    # Enable the database manager
    use_database:           true

 

dev の部分を以下のように変更して、Strict エラーと Deprecated エラーを表示させないようにします。
 

1
2
3
dev:
  .settings:
    error_reporting:        <?php echo (E_ALL & ~E_DEPRECATED)."\n" ?>

 

以上です。
 
 

[Symfony1.4] フォーム(Form)/バリデーター(Validator)関連の参考サイトまとめ

 

Symfony1.4 にて フォームを使うときに読む記事を一覧にしました。
 

色んなページからアクセスするのが面倒なのでまとめてみました。
 

blogチュートリアル(9) 記事の追加 | 日本Symfonyユーザー会 はてなブックマーク - blogチュートリアル(9) 記事の追加 | 日本Symfonyユーザー会

blogチュートリアル(10) データのバリデーション | 日本Symfonyユーザー会 はてなブックマーク - blogチュートリアル(10) データのバリデーション | 日本Symfonyユーザー会
 

A Gentle Introduction to symfony | 第10章 – フォーム | symfony | Web PHP Framework はてなブックマーク - A Gentle Introduction to symfony | 第10章 - フォーム | symfony | Web PHP Framework
 

symfony Forms in Action | symfony | Web PHP Framework はてなブックマーク - symfony Forms in Action | symfony | Web PHP Framework
 
  ・第1章 – フォームの作成

  ・第2章 – フォームのバリデーション

  ・第3章 – Web デザイナのためのフォーム

  ・第4章 – Propel との統合

  ・第8章 – 国際化とローカライゼーション

  ・第11章 – Doctrine との統合

  ・付録 A – ウィジェット

  ・付録 B – バリデータ
 

The More with symfony book | 高度なフォーム | symfony | Web PHP Framework はてなブックマーク - The More with symfony book | 高度なフォーム | symfony | Web PHP Framework
 

直接、フォームとは関係ないですが、セッションは一緒によく使うのでメモ。
 

さぼてん: 【symfony】セッションの利用~アクション~ はてなブックマーク - さぼてん: 【symfony】セッションの利用~アクション~
 

(随時、更新予定です)
 

[Linux] ログイン時にコマンドやプログラムを自動実行させる方法

CentOS にログインした時にコマンドやプログラムを自動実行させる方法を調べたのでご紹介します。

Linux

続きを読む

[VirtualBox] 画面サイズ変更のために Guest Additions をインストール

VirtualBox にインストールした Windows7 の画面サイズを変更する設定をご紹介します。

VirtualBox

Guest Additions をインストールすれば画面サイズを変更できるようになるみたいです。

続きを読む

[yum] fastestpath を使わないようにする設定方法

とある認証付きプロキシの環境では http はできるのですが、ftp が通りません。

yum の fastestpath がONになっていると、最寄りのレポジトリが ftp 接続なのでエラーが返ってきてから、http接続できる別のレポジトリを探すまでに時間がかかります。

yum本家のレポジトリは http で接続できるので、デフォルトで本家と接続するように設定変更しました。

下記のように設定変更すればOKです。

# vi /etc/yum/pluginconf.d/fastestmirror.conf

■ fastestmirror.conf の中身

[main]
enabled=1
verbose=0
socket_timeout=3
hostfilepath=/var/cache/yum/timedhosts.txt
maxhostfileage=10
maxthreads=15
#exclude=.gov, facebook

enabled=1 を enabled=0 に変更すればOKです。

以上です。
 

[yum] Another app is currently holding the yum lock の解決方法

CentOS5.6にて、yum を使おうとしたらエラーが出て使えませんでした。解決方法を調べたのでメモ。

■ エラー内容

Another app is currently holding the yum lock

■ 解決方法

yum のプロセスがバックグラウンドで動いているとこうなるので、 # ps aux | grep yum で yum が動いている PID を特定して kill すればyumが使えるようになります。

・参考:Another app is currently holding the yum lockとは – [yum/Linux [Red Hatなど]] ぺんたん info はてなブックマーク - Another app is currently holding the yum lockとは - [yum/Linux [Red Hatなど]] ぺんたん info

ちなみに、yum のコマンドリストは下記のサイトを参考にしました。

@IT:yumコマンドでよく利用するコマンド はてなブックマーク - @IT:yumコマンドでよく利用するコマンド

以上です。

[仮想OS] VirtualBox のNAT + ホストオンリーアダプターでのネットワーク設定/ホストOS からSSHできないときの解決方法

VirtualBox にて CentOS5.6 を仮想サーバーとしてインストールしたのですが、ホストOSからSSHできない症状に陥りました。

@yak0u さんにアドバイスを頂いて、なんとか解決したのでその方法とネットワーク設定をご紹介します。

VirtualBoxのネットワーク設定

まず、VirtualBoxのネットワーク設定はここを参考にすればOKです。

仮想環境VirtualBoxでのネットワークの設定 : アシアルブログ

仮想OSのファイヤーウォール設定

まず、ファイヤーウォールの設定を変更します。下記サイトの「iptablesの確認」を参考にして設定します。

VMware PlayerにCentOS導入。練習用Webサーバーを構築4

# vi /etc/sysconfig/iptables
# SSH, HTTP, FTP1, FTP2, MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

22番ポートが閉じているとSSH通信ができなくて、80番ポートが閉じているとブラウザからWebページに接続できません。

編集後、iptablesを再起動します。

# /etc/rc.d/init.d/iptables restart

仮想OS上のネットワーク設定

まず、ネットワーク設定の解説をしてくれている良記事があるのでこれを読みます。

VirtualBox を利用する際のネットワーク設定の話 – ゆどうふろぐ

次に、ホストオンリーアダプターに割り当てるために、空いているローカルIPアドレスをpingコマンドで調べます。

MacでPingを使用してネットワークが正常に利用可能か調べる方法 / Inforati

$ ping -c 5 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
 
--- 192.168.1.1 ping statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss

VirtualBoxで仮想マシンを起動後、ホストOSであるMacにて ifconfig コマンドを実行します。

.
.
.
vboxnet0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	ether 0a:00:27:00:00:00 
	inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255

VirtualBoxの vboxnet0 にて 192.168.1.1 が使われていることが分かりました。

また、ホストOS(Mac)にて、再び pingコマンドを実行すると、今度はレスポンスがありました。

$ ping -c 5 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=0.052 ms
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.145 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.125 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.055 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=64 time=0.118 ms
 
--- 192.168.1.1 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.052/0.099/0.145/0.038 ms

同様に、ゲストOS(仮想マシン)でもpingコマンドを実行するとレスポンスがありました。

これで「192.168.1.1」のIPアドレスは仮想マシンでちゃんと使われていることが確認できました。

ホストオンリーアダプターに対応するeth1にローカルIPアドレスを固定する

仮想マシンを起動する度にホストオンリーアダプターに対応する IP が変わらないように、IPアドレスを固定します。

ifconfig コマンドで、eth1 に現在割り当てられている IPアドレスを調べて、それを固定 IP として設定すれば問題ないと思います。

・参考:VirtualBox 2.2 と CentOS 5.3 でローカル開発環境 – もやし日記

僕の場合、ifconfig コマンドを実行しても eth1 が表示されませんでした。

なので、eth1 を編集します。

まず、ローカルIPアドレス 192.168.1.2 が使われていないか確認します。

(使われていたら、192.168.1.3, 192.168.1.4, … と順番に空いているローカルIPアドレスを調べます。)

空いているローカルIPアドレスが分かったら、ifcfg-eth1 にIPアドレスを書きます。

[root@localhost ~]# emacs /etc/sysconfig/network-scripts/ifcfg-eth1
 
# Intel Corporation 82540EM Gigabit Ethernet Controller
DEVICE=eth1
BOOTPROTO=static                    # dhcp から static に変更
HWADDR=08:00:27:F7:6C:DE
ONBOOT=yes
IPADDR=192.168.1.2                   # 追加
NETMASK=255.255.255.0            # 追加

eth1 を編集後、設定を反映させます。

[root@localhost ~]# ifdown eth1
[root@localhost ~]# ifup eth1

ホストOS(Mac)から ssh コマンドでホストOS(仮想マシン)に接続できました。

ローカルIPでssh接続する方法 – Makotontonのひだまりずむ

$ ssh [email protected]
ssh: connect to host 192.168.1.1 port 22: Connection refused
 
$ ssh [email protected]
The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established.
RSA key fingerprint is 48:8e:56:2f:95:59:d9:d9:c0:af:cb:6f:ef:ea:ee:bc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.2' (RSA) to the list of known hosts.
[email protected]'s password: 
Last login: Wed May 11 13:30:46 2011
[root@localhost ~]#

以上です。

[仮想OS] VirtualBox に CentOS を開発用サーバーとしてインストール [Mac OS X (SnowLeopard)]

Mac OS X (SnowLeopard) にて、VirtualBox 上に開発用サーバとして CentOS 5.6 をインストールしました。

インストール手順は参考記事を追っていくだけでOKです。

VirtualBoxのインストール参考記事

VirtualBox 2.2 と CentOS 5.3 でローカル開発環境 – もやし日記

仮想環境にCentOSをインストールするための参考記事

[仮想OS] VMwarePlayer に CentOS を開発用サーバーとしてインストール | CodeNote.net

その他、参考記事

Mac OS X版VirtualBox の使い勝手

VirtualBoxに CentOS 5.5 をインストールしてみた – TANAKAORIGINAL

以上です。