Hatena::ブログ(Diary)

コミック発売日といえばマイリリースなのだ

2018-06-18

Alexaのスキルを公開しました

マイリリースのAlexa版を公開しました。

以前作ったLINE Botと同じシステムなので「発売日を知りたいコミック名を聞かれると答える」という基本の解答システムは出来てるのでAlexa用にアレンジするだけなのですがAlexaの公式の説明がnode.jsで、無理矢理それっぽいやりとりをPHPで書いて見たがダメだったので、慣れないlambdaと慣れないnode.jsを使ったので多少時間がかかった。lambdaにはブラウザ上で開発できる環境があるがこれだけで作るとライブラリを入れるのも難しいし慣れたエディタも使えないのでローカルに環境を作ってzipで圧縮してアップする方法を使った。

ローカルに環境を作るのにバージョンを整える必要があるぐらいで特に難易度が高くはなかった。

難易度が高いのは審査だが。今回のamazonさんは口うるさいが親切にも何が悪いか教えてくれるので助かる。私は「適当に作って後で直す」スタンスで申請したのでかなり注意を受けたが3回目で審査に合格した。

今日は地震があってちょっと公開のタイミングとしては微妙だけど使ってくれる人が増えるとうれしいな。

コミック発売日のマイリリース: Alexaスキル

2018-03-08

バーコード読み込みに対応しました

久々の追加機能となりましたが、念願のバーコード読み込みに対応しました。これでコミックの管理が少しは楽になるかもしれません。

元々バーコード読み込みの為にアプリ化するかって気持ちだったけどアプリ化は作業コスト的に厳しくて進んでなかったのですがJavascriptでもバーコードが読めるJQueryプラグインを見つけて導入しました。

数年前にJavascriptでもバーコードが読めるライブラリはいくつか見つけてたのですが写真を撮影してバーコードを読み取るタイプだったり、ライブカメラで読めるタイプのJQueryプラグインも見つけてもAndroidのみの対応だったりで導入を見送ってました。

そして今回見つけたhttps://serratus.github.io/examples/live_w_locator.html=QuaggaJSはリアルタイムかつiOSも使えます。

さすがにアプリと比べると認識スピードや精度にむらがあるのでβ版としております。

バーコードリーダー|コミック発売日 MyRelease

※スマホでご確認ください。

2017-09-19

キャッシュの見直しと諸々の修正

APIでamazonさんから情報を頂くときは回数制限があるのでアクセスの度にamazonさんのAPIをたたくとすぐに制限がきてしまいます。

そこでmyreleaseではAPI導入し始めの頃から一応キャッシュはしていたのだが今まで機能毎にバラバラに最低限度の情報のみをキャッシュしていたのを統一しました。場合によってはですが少し表示速度が速くなったかと思います。

あと、在庫情報やオンラインショップへのリンクが一部おかしくなっていたので修正いたしました。

今年の初め頃からamazonの書籍の定価情報が無くなり、暫定で他のパラメータを載せて変な金額表示になっていました。

確実ではありませんが正確な金額になるよう調整いたしました。

2016-04-26

Product Advertising APIから情報が返って来なくなった!?

昨日からシステムの不都合によりご迷惑をおかけしまし申し訳ございませんでした。

昨日(25日)からProduct Advertising API(amazonから商品情報を入手するAPI)から商品情報が返ってこなくなりマイリリースのサービスが機能しなくなった。

最初に思ったのは「amazonがAPIの提供を辞めたのでは?」と思ったが他の方の運営してるサイトは通常通り運用しているようなのでウチだけという事になる。

もしかして仕様が変わった連絡を見過ごしたかと思って調べてみたが特に仕様が変わったという情報は無かった。

もしかして管理者のアカウントをいじったりしたのでAWSAccessKeyIdが変わったのかと思って確認しようとしたがProduct Advertising APIの管理画面が以前と変わっていてAWSAccessKeyIdが確認出来ない仕様になっていたので再度AWSAccessKeyIdを発行して試したが変わらず。

あと考えられるのは売り上げに対するリクエスト数の上限が定められているので上限を超えてしまったのかもと思い、とりあえず最低限動作するようにして解決を翌日に持ち越した。

明けて今日確認してみたが、未だ動作していない。

エラーメッセージを確認すると

「Request has expired. Timestamp date is 〜」

と「〜」の所にある時間が時計と2時間ほどずれてる事に気づいた。

調べるとTimestampの値の時間から15分しか許可されていないので2時間も過ぎていれば商品情報が返ってくるはずもない。

とりあえずPHPで時刻を調べたが2時間ほどずれている。(gmdateの方はamazonで指定するグリニッジ標準時なので普通の時刻とは違う)

echo date('Y-m-d H:i:s');

echo gmdate('Y-m-d\TH:i:s\Z');

ターミナルでdateコマンドを実行しても2時間ほど過ぎていた。

とりあえずハードの時計を見てみると正常な時間を返した。

# hwclock -r

ログ(/var/log/messages)を確認すると25日(昨日)の7時に時計合わせをしようとして異常終了した形跡が見つかった。

panic_stop +5321 s; set clock manually within 1000 s.

ntpd(時計合わせのサービス)を確認すると

# service ntpd status

ntpdが停止していますがPIDファイルが残っています

とエラーが出た。

エアーメッセージをググると解決策が書かれてたのでその通りしてみた。

○○が停止していますが PID ファイルが残っています - iwamocchan blog

# rm /var/run/ntpd.pid

# rm /var/lock/subsys/ntpd

# service ntpd start

これでmyreleaseに戻って確認すると正常に商品情報が返ってくるようになった。

まさかの時計が壊れた事が原因だったとは・・・

2015-10-03 セブンネットのAPI改悪で在庫情報がなくなる

先月AmazonのAPIがHTTPSに変更するように通知があり変更したばかりなのに今月からセブンネットショッピングもリニューアルされたとかでURLやAPIが一新された。

セブンネットに限らずAPIとか開発者向けの説明は説明が薄く分りづらいがなんとか解読して、URLや検索方法や条件など微妙に変化あったのはなんとか対応できたが、APIから返ってくる情報が少なくなってしまい在庫情報が無くなってしまった。

もちろんWEBサイトをスクレイピングして、無理矢理在庫情報を抽出する事も可能だけど重くなるのでセブンネットは在庫情報は非表示にします。

いつかセブンネットのAPIが改善されたらまた復活したいと思います。