2012年4月27日

ファイアーエムブレム 覚醒

明日からGWに突入するので、久しぶりに家でゆっくりゲームでもしようかなと思い、帰宅途中に「 ファイアエンブレム 覚醒(以下FE) 」を購入しに行きました。初めは、ヨドバシカメラ マルチメディアAkiba に寄ってみましたが、見事に完売していました。

これまでの経験上、人気商品については、ヨドバシカメラ マルチメディアAkiba より ヨドバシカメラ マルチメディア上野 のほうが、入手しやすかったので、もし上野で手に入らなかったら、素直に諦めるつもりで ヨドバシカメラ マルチメディア上野 に言ってみると、運良く、まだ在庫が有りました。

店員に在庫は確認しませんでしたが、購入時にパッケージがおいてあるカウンタ裏の保管スペースを見ると在庫はそこまで多くないように見えました。FEを購入したのは、4/27(金)の20時半ごろですが、運がよければ明日の朝でも購入出来るかもしれません。

現在、Amazonでも新品が5200円で販売されており、定価より高くなっています。FEの初回出荷数が30万と言われており、初回出荷分の在庫は無くなった感じでしょうか。次回出荷がいつになるか判りませんが、しばらく品薄状態が続くため少なくてもGW中の入手は難しくなると予想しています。
 

ゲーム名 : ファイアーエンブレム 覚醒
発売日 : 2012年4月19日
希望小売価格 : 4800円
ジャンル : ロールプレイングシュミレーション
プレイ人数 : 1人(通信プレイ時2人)
セーブデータ : 3つ
3D映像の表示 : あり

 

ファイアーエムブレム 覚醒 ファイアーエムブレム 覚醒
Nintendo 3DS

任天堂
売り上げランキング : 8

Amazonで詳しく見る

 

2012年4月25日

九州旅行

3月まで仕事が忙しかったのですが、落ち着いてきたので久しぶりの旅行で九州に行って着ました。今回は2泊3日で九州新幹線をメインで構成しました。初日に宮崎県入りして、観光しながら鹿児島県を目指した後、新幹線で北上し、長崎県で締めくくる感じにしました。宮崎県から鹿児島県と福岡県から長崎県の移動が長距離になるため、途中に宿泊できるようにプランています。
参考になるか判りませんが、今回の旅行で行った観光地を行った順に載せておきます。

1日目:宮崎県~鹿児島県

  • 宮崎空港
  • 宮崎神宮
  • 平和台公園
  • 青島神社
  • サンメッセ日南(モアイ像)
  • 鵜戸神宮
  • 丸尾の滝
  • 旅行人山荘(鹿児島県霧島)

2日目:鹿児島県~福岡県~佐賀県

  • 霧島神宮
  • 早崎屋(鹿児島駅近くのさつま揚げ屋)
  • 九州新刊線(鹿児島中央駅~博多駅)
  • 博多市内(お買い物)
  • 萬象閣敷島(佐賀県嬉野)

3日目:長崎県

  • 稲佐山
  • 平和公園
  • 眼鏡橋
  • 長崎新地中華街
  • オランダ坂
  • 長崎空港

 

旅行の写真を少しですが載せておきます。

青島神社(宮崎県)

鬼の洗濯岩と言われる波状の岩を越えた小さな島にある神社です。神社へは桟橋で渡っていきますが、鬼の洗濯岩が間近で見ることができました。宮崎県では鵜戸神宮と並んで、これぞ観光地って感じでおすすめです。

IMG_2551.JPG

稲佐山(長崎県)

長崎県の稲佐山の頂上にある展望台から長崎の町が360度見渡せました。1000万ドルの夜景と言われる場所なのですが、お昼に行っても絶景です。天気は良かったのですが、若干靄がかかっていたのが残念でした。

IMG_2629.JPG

眼鏡橋(長崎県)

長崎市の市外地にある歴史のある橋です。写真では少し判りにくいですが川に移った橋がちょうど眼鏡のように見えます。実は、この場所は余り期待してなかったのですが、町並みの雰囲気が良く予想外に良かったです。

IMG_2641.JPG

潤練(長崎県

オランダ坂のそばにあるシフォンケーキを中心とした洋菓子屋さんです。シフォンケーキがすごく美味しかったです。オランダ坂自体は観光地としては少しさみしい感じでしたが、このお店目当てにオランダ坂に行ってみるのも良いかもしれません。

IMG_2662.JPG

 

2012年4月20日

Services_Amazonでアマゾンのランキングを表示(おまけ)

Services_Amazonでアマゾンのランキングを表示(完結編) 」でServices_Amazonでアマゾンのランキング表示させることに成功しましたが、キャッシュを使っていなかったため、ページ出力のたびにAmazonAPIに問い合わせに行っていました。これでは非効率なのでキャッシュを利用してAmazonAPIにもサーバにも負担をかけないように修正してみました。

PEAR の Cacheを導入

まず、pear を使ってCache用のパッケージをインストールします。


# pear install cache
WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update
WARNING: "pear/HTTP_Request" is deprecated in favor of "pear/HTTP_Request2"
downloading Cache-1.5.6.tar ...
Starting to download Cache-1.5.6.tar (Unknown size)
.....................................done: 177,152 bytes
install ok: channel://pear.php.net/Cache-1.5.6
 

次にキャッシュ用のディレクトリを作成します。
キャッシュ用のディレクトリはWEBサーバのプロセスを起動しているユーザから書き込み権限が必要になるようです。詳細は後で記載します。


# cd /usr/local/www
# mkdir cache 
# chown www:www  cache
# ls -ld /usr/local/www/cache/
drwxr-xr-x 3 www www 512 Apr 19 00:20 /usr/local/www/cache/
 


アマゾンAPI検索結果のキャッシュを有効

アマゾンランキング表示プログラムにCacheを使うコードを追加します。前回の完結編から追加した部分を赤文字にしています。キャッシュの保持時間は setCacheExpire で指定して下さい。ここでは setCacheExpire の値を 43200(秒)=12時間としています。


<?php
 
require_once('Services/Amazon.php');
require_once('Cache.php');
 
header("Content-type: application/x-javascript");
 
$category = $_GET['category'];
$param = $_GET['param'];
 
define('ACCESSKEY_ID', 'XXXXXXXXXXXXXXX');
define('SECRET_ACCESSKEY', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
define('ASSOCIATE_ID', 'XXXXXXXX-22');
define('ECS_VERSION','2009-03-31');
define('RESPONSE_GROUP','Small,Images,ItemAttributes,OfferSummary,Reviews');
 
$sort = 'salesrank';
$page_id='1';
$amaarray='';
 
$result = get_item_by_browsenode($category,$param,$sort,$page_id);
 
if (!PEAR::isError($result))
{
        for( $i = 0; $i <  5; $i++ )
        {
                $asin = $result['Item'][$i]['ASIN'];
 
                $url = "<a href=http://www.amazon.co.jp/exec/obidos/ASIN/".$asin."/".ASSOCIATE_ID."/ref=nosim/><img src='".$result['Item'][$i]['MediumImage']['URL']."'><br>";
                $title = $result['Item'][$i]['ItemAttributes']['Title'].'</a><br><br>';
                $amaarray = $amaarray.$url.$title;
        }
}
 
echo "document.write(\"$amaarray\")";
 
function get_item_by_browsenode($category,$param,$sort,$page_id){
 
    $amazon = new Services_Amazon(ACCESSKEY_ID,SECRET_ACCESSKEY,ASSOCIATE_ID);
    $amazon->setLocale('JP');
    $amazon->setCache('file',array('cache_dir' => '/usr/local/www/cache/'));
    $amazon->setCacheExpire(43200);
    $options = array();
    $options['BrowseNode'] = $param;
    $options['Sort'] = $sort;
    $options['ResponseGroup'] = RESPONSE_GROUP;
    $options['ItemPage'] = $page_id;
 
    $ret = $amazon->ItemSearch($category,$options);
    return $ret;
}
?>
 


キャッシュの確認

WEBブラウザからプログラムにアクセスして、アマゾンランキングを表示してみてください。キャッシュフォルダにファイルが作成されていればキャッシュは成功です。キャッシュに適切な書き込み権限がない場合、キャッシュファイルが作成されません。キャッシュファイルは作成されなくてもWEBブラウザにエラーは表示されませんので注意してください。

# ls -l /usr/local/www/cache/default/
total 638
-rw-r--r-- 1 www www 95772 Apr 19 00:32 1a7f0d2063f76c2216970254d61de6d7
-rw-r--r-- 1 www www 110940 Apr 19 00:32 27da0219890beeb6407ddac3db2de2c0
-rw-r--r-- 1 www www 211776 Apr 19 00:32 a65e2d5bad0e3c5ec86e4e1f488d35c5
-rw-r--r-- 1 www www 142916 Apr 19 00:32 dee43005aaaf24aae2eca2b6799dad5b
-rw-r--r-- 1 www www 71196 Apr 19 00:32 eab770091ee2c7ca1c5db90ac450ee30

キャッシュの効果

PHPプログラムが、アマゾンランキングの1位~5位までの結果を取得するまでの時間をキャッシュ有りとキャッシュ無しでどれだけ差が出るか簡単な時間計測プログラムを追加して調べてみました。(※WEBブラウザの表示が終わる時間ではありませんので注意してください。)

回数 キャッシュ無し キャッシュ有り
1回目 0.96475 秒 0.00415 秒
2回目 1.12499 秒 0.00377 秒
3回目 0.88769 秒 0.00347 秒
4回目 0.76170 秒 0.00348 秒
5回目 1.00916 秒 0.00376 秒

キャッシュ無しはAPIに問い合わせを行っているので1秒近くかかっていますが、キャッシュ有りの場合は、ほとんど時間がかかっていませんので、キャッシュがかなり有効に効いていることがわかります。

2012年4月18日

npcでアクセスカウンター

いままで、UNFINISHED(アンフィニッシュト)の無料アクセスカウンターを使っていましたが、利用規約に違反したことにされ、いきなりプロジェクトが削除されました。ようするに、カウンターが使えなくなったわけです。
Amazonのアフェリートツールとか外部のAPIを頼っていると、知らない間に使えなくなる事があるので、アクセスカウンターも自前で持つことにしました。

このブログで使っているコンテンツ管理システム(CMS)のMovableTypeのプラグインでは、仕組み上、リアルタイムのカウンター更新が難しいようなので、ページが読み込まれる際にAPIを叩いてカウンターを表示させます。
FreeBSDのportsでインストール出来ればと探していたら、npcカウンターを見つけましたので、早速インストールしました。

npc.cgiのインストール

今回は、portでインストールします。

# cd /usr/ports/www/npc
# make install

インストールした際にできるCGI本体は、/usr/local/www/cgi-bin/npc.cgiに、コンフィグのサンプルは、/usr/ports/www/npc/work/npc-0.83/conf/sample2.idxに作成されます。コンフィグのサンプルは sample1.idx も作成されていますが、古いのでsample2.idxを使用します。

設定ファイルの修正

設定ファイルのディフォルトの保存先は /usr/local/etc/npc/npc.idx になります。カウンターを実効する際に設定ファイルを指定することも出来ますが、ここでは設定ファイルをディフォルトの保存先に置いています。
まず、以下がサンプルコンフィグです。

# cat sample2.idx
#!npc.cgi -- ファイル先頭行の「#!npc.cgi」で npc.cgi の設定ファイルか
# どうかを見分けています。

; npc.cgi v0.82 以降は設定ファイルの制御構文が構造化され、
; 条件分岐が視覚的にも分かりやすくかけるようになりましたので
; なるべく構造化文(=IF)を使って書くようにした方が良いでしょう。
 
; また、従来の記法では表現できなかった環境変数やオプションの値を
; 使っての条件分岐も可能になっています。
 
###
# 最初の部分は sample1.idx と同じ条件を構造化文を使って書いています。
#
 
=WIDTH
5
=PROGRESS
OFF
=INCREMENT
1
 
=IF=REFERER
  ^$
  =INCREMENT
  0
  =RESTRICTION
  1
=ELSIF=REFERER
  ^http://nocount@www2\.biglobe\.ne\.jp/
  =RESTRICTION
  0
  =INCREMENT
  0
=ELSIF=REFERER
  ^http://www2\.biglobe\.ne\.jp/
  ^http://www2\.meshnet\.or\.jp/
  =RESTRICTION
  0
  =IF=BROWSER
    ^Mozilla/[1-9]
    =PROGRESS
    ON
    =DELAY
    1000,50
  =ENDIF
  =IF=ADDR
    127.0.0.1
    =INCREMENT
    0
  =ELSIF=HOST
    ^meshse[0-9]*\.mesh\.ad\.jp$
    ^host\.domain\.com$
    =INCREMENT
    0
  =ENDIF
=ELSE
  =RESTRICTION
  2
=ENDIF
 
###
# オプションでモード=1が設定されている場合は、リロードしても
# カウントアップしないようにしています。
#
 
=IF=OPT=MODE
  1
  =IF=ENV=HTTP_PRAGMA
    no-cache
    =INCREMENT
    0
  =ENDIF
=ENDIF
 
=COUNTER
0000000007 test
0000000001 http://www.your.site/your/page/index.html
0000000001 ftp://ftp.your.site/pub/down/conter.gz
 

設定ファイルをコピーして所有者や権限を修正しています。所有者は、各自の環境に合わせて適宜修正してください。

# cp -p /usr/ports/www/npc/work/npc-0.83/conf/sample2.idx /usr/local/etc/npc/npc.idx
# chmod 666 
/usr/local/etc/npc/npc.idx
# chown www:www 
/usr/local/etc/npc/npc.idx
# ls -l /usr/local/etc/npc/npc.idx
-rw-rw-rw-  1 www  www  1050 Apr 18 00:38 /usr/local/etc/npc/npc.idx

設定ファイル(npc.idx)についてですが、以下のように動作するよう修正しています。

  • http://or2.toから呼び出された場合は、カウントアップします。
  • http://or2.to以外から呼び出された場合は、カウントアップしません。
  • 192.168.0.1~254をつかっているブラウザからはカウントアップしません。
  • リロードされた場合はカウントアップしません。

始めINCREMENTのパラメータが0のままになっていたため、カウンターがカウントされない状態になっていました。cgiも設定も正しく読み込んでいるのにカウントアップしない場合は、INCREMENT辺りの設定を見直してください。
このブログでは設定ファイル(npc.idx)は以下のようにしています(一部アドレスは変えています)。ここで説明した以外にも設定できますので、詳細はアクセスカウンタ npc.cgi マニュアルを見てください。

 

#cat /usr/local/etc/npc/npc.idx

###
# 最初の部分は sample1.idx と同じ条件を構造化文を使って書いています。
#
 
=WIDTH
5
=PROGRESS
OFF
=INCREMENT
1
 
=IF=REFERER
  ^$
  =INCREMENT
  0
  =RESTRICTION
  1
=ELSIF=REFERER
  ^http://or2.to/
  =RESTRICTION
  0
  =INCREMENT
  1
=ELSE
  =RESTRICTION
  2
=ENDIF
 
=ADDR
192.168.0.*
=INCREMENT
0
 
###
# オプションでモード=1が設定されている場合は、リロードしても
# カウントアップしないようにしています。
#
 
=IF=OPT=MODE
  1
  =IF=ENV=HTTP_PRAGMA
    no-cache
    =INCREMENT
    0
  =ENDIF
=ENDIF
 
=COUNTER
0000000008 test
0000000001 http://www.your.site/your/page/index.html
0000000001 ftp://ftp.your.site/pub/down/conter.gz
 
0000020222 or2.to
 


カウンターの表示

npc.cgiを呼び出すため、アクセスカウンターを表示させたい場所に以下のようなHTML文を貼り付けます。

<img SRC="http://or2.to/npc.cgi?L=or2.to&C=0033FF&DI=2&W=8">

上記では npc.cgi がドキュメントルートに保存されている前提です。後、Lオプションはカウンターの識別文字で、Cオプションは表示される数字の色です。また、DIオプションは文字のフォントを指定して、Wオプションは表示させる桁数の設定です。

アクセスカウンタはこのブログの右上に表示させています。先日、アマゾンランキングも自前で表示させることに成功したので、良い感じでブログが仕上がってきていて満足しています

 

2012年4月 9日

パティスリー ラ・ローズ・ジャポネ

金町に2012年3月8日に新しいケーキ屋がオープンしました。パティシエは、マンダリン オリエンタル 東京のエグゼクティブ ペストリーシェフを務めたことのある五十嵐宏氏です。
お店は、JR金町駅からは歩いて5分程度のところにあり、アクセスは悪くないと思いますが、人通りは少ない通りなので、こんな所におしゃれなお店が!!と少しびっくりするかもしれません。

rose1.jpg

ケーキは一つ500円程度です。購入したケーキの名前は忘れましたが、チョコレートが濃厚で、チョコレートに合わせたトッピングも、良いアクセントになっていて上品なケーキでした。一つの大きさはそこまで大きくはありませんので、もう一つ食べたくなります。

rose2.jpg

オープンして一ヶ月程たちますが、先日お店に午後3時頃行ったところ、かなりのケーキが品切れになっていました。2010年のWPTC(ワールド・ペストリー・チーム・チャンピオンシップ)で優勝したプチガトー「ピクシー」も販売しているようなので、色々選びたい方は、朝の早い段階での来店をお勧めします。

■店舗情報
パティスリー ラ・ローズ・ジャポネ
住所   東京都葛飾区金町6-4-5
電話番号 03-5876-9759
営業時間 10:00~19:00
定休日  月曜日

2012年4月 8日

Services_Amazonでアマゾンのランキングを表示(完結編)

昨年の8月からamazonのランキング表示を自前のサーバで表示さようとして、試行錯誤していましたが、ようやく実現することが出来ました。
前回から少し時間が空きましたので、今までの経緯を簡単に振り替えると、今までは、「AZlink」とか「ランキングツール」などの外部APIを使用してお手軽にアマゾンのランキングを表示させていました。ただ、いきなりの仕様変更やサーバの負荷によりランキングが表示されないことがあり、自前のサーバだけで、なんとか出来ないかと思ったのがこの企画の始まりまです。
google先生の協力で、PEARのServices_amazonを使えば出来そうな事が判ったので、インストールを行い、PHP単体での動作確認まで行っていました。今まで実施した内容については過去の記事をご覧ください。

 

商品リンクの種類について

商品のリンク(URL)には、「直接リンクのクリック」「直接リンク以外のクリック」の2種類が存在していて、「直接リンク以外のクリック」の場合、何の商品がクリックされた商品されたか判らない状態になります。Services_Amazonを使用してアマゾンのAPIから取得した配列をそのまま使った場合、「直接リンク以外のクリック」のURLで表示されるため、この後で公開するアマゾンランキングPHPプログラムでは、「直接リンクのクリック」として認識されるように、前回公開したPHPプログラムから修正を行っています。

参考までに、「直接リンクのクリック」「直接リンク以外のクリック」の違いですが、以下のURLをご覧ください。両方とも同じ商品を示しています。

直接リンクのクリック
http://www.amazon.co.jp/exec/obidos/ASIN/B006ZTJOVQ/itor2to-22/ref=nosim/

 

直接リンク以外のクリック
http://www.amazon.co.jp/%E6%A9%9F%E5%8B%95%E6%88%A6%E5%A3%AB%E3%82%AC%E3%83%B3%E3%83%80%E3%83%A0UC-5-Blu-ray-%E5%8F%A4%E6%A9%8B%E4%B8%80%E6%B5%A9/dp/B006ZTJOVQ%3FSubscriptionId%3DAKIAJRV3ES7QKTISVIEQ%26tag%3Ditor2to-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB006ZTJOVQ


最終PHPプログラム

最終的に出来上がったPHPプログラムを公開します。管理を楽にさせたかったため、HTML文からPHPプログラムを呼び出す際に、引数を使ってカテゴリを選択出来るようにしました。後、PHPプログラムでは、echo を使ってからdocument.writeでHTMLを表示させていますが、echoの行が複数あるとHTMLに出力されませんでした。ここに気が付かずに時間がかかってしまいました。。..or2

HTML文(以下のURLを貼り付け)
<script type="text/javascript" src="http://or2.to/amarank.php?category=DVD&param=562020"></script>

 

PHPプログラム(http://or2.to/amarank.php)
<?php
 
require_once('Services/Amazon.php');
 
header("Content-type: application/x-javascript");
 
$category = $_GET['category'];
$param = $_GET['param'];
 
define('ACCESSKEY_ID', 'XXXXXXXXXXXXXXX');
define('SECRET_ACCESSKEY', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
define('ASSOCIATE_ID', 'XXXXXXXX-22');
define('ECS_VERSION','2009-03-31');
define('RESPONSE_GROUP','Small,Images,ItemAttributes,OfferSummary,Reviews');
 
$sort = 'salesrank';
$page_id='1';
$amaarray='';
 
$result = get_item_by_browsenode($category,$param,$sort,$page_id);
 
if (!PEAR::isError($result))
{
        for( $i = 0; $i <  5; $i++ )
        {
                $asin = $result['Item'][$i]['ASIN'];
 
                $url = "<a href=http://www.amazon.co.jp/exec/obidos/ASIN/".$asin."/".ASSOCIATE_ID."/ref=nosim/><img src='".$result['Item'][$i]['MediumImage']['URL']."'><br>";
                $title = $result['Item'][$i]['ItemAttributes']['Title'].'</a><br><br>';
                $amaarray = $amaarray.$url.$title;
        }
}
 
echo "document.write(\"$amaarray\")";
 
function get_item_by_browsenode($category,$param,$sort,$page_id){
 
    $amazon = new Services_Amazon(ACCESSKEY_ID,SECRET_ACCESSKEY,ASSOCIATE_ID);
    $amazon->setLocale('JP');
    $options = array();
    $options['BrowseNode'] = $param;
    $options['Sort'] = $sort;
    $options['ResponseGroup'] = RESPONSE_GROUP;
    $options['ItemPage'] = $page_id;
 
    $ret = $amazon->ItemSearch($category,$options);
    return $ret;
}
?>

出力させた結果については、右の商品画像を見てください。
自分で表示させたランキングは、レイアウトにマッチして、外部APIを使って表示させたランキングとは一味違う気がします。(あくまでランキング表示は自己満足なので、クリック数が上がるわけではないのが残念です。)

2012年4月 4日

ThinkPad T430, T530, X230, W530 がリリース間近か?

Lenovo社(旧IBM)から発売されている定番ノートPCのThink Padシリーズの新シリーズのリリースが近づいているようです。新しいThinkPadにも通信チップが搭載されるようで、米国でPTCRB認証を取得したようです。

PTCRB認証とは、ネットワーク事業者の要求されている規定をクリアして、事業者のネットワークに接続しても安全ということを保障するための資格です。

現行 リプレース後
ThinkPad T420 ThinkPad T430, T430i
ThinkPad T520 ThinkPad T530, T530i
ThinkPad W520 ThinkPad W530
ThinkPad X220 ThinkPad X230, X230i

今回、新しくリリースされるThink Pad では、USB3.0が標準搭載され、プロセッサも次世代CPUのIvy Bridgeになるのではと噂されています。

Tシリーズ、Wシリーズ、Xシリーズ以外にも、回線チップを搭載しないGシリーズやSLシリーズの更新もありそうです。Lenovo社からの正式な発表が楽しみです。

現在、中国にあるPCの製造ラインを日本に移す話もありますし、新しいThinkPadが発売される頃には日本で製造しているようになって欲しいですね。
 

2012年4月 1日

Google MAP がドラゴンクエストに

エプリールフールイベントだと思いますが、Googlemapがドラゴンクエスト風になっています。
結構細かく作りこんでおり、気が付いたら1時間近く程さわってしまいました。ストリートビューも8ビット表示になっています。このような遊びごころのある企業っていいですね。

ログイン直後の日本の地図です。

google_doragon_quest_1.JPG

富士山あたりを拡大してみると、モンスターも書かれています。

google_doragon_quest_2.JPG

ちなみに、米国Google本社の様子です。

google_doragon_quest_3.JPG


他にもまだ色々と有りそうなので、探せば見つかりそうですね。