ハードウェア不具合

アクセス出来ない状態が続き申し訳ございません。

今朝からサーバの障害で止まっていたましたが
VPSに接続できなくなる障害が発生しました。
障害によりお客様ご利用のVPSに意図しない再起動が発生しました。」
と連絡があったのですが、その後
「データの不整合により正しく起動しないVPSが確認されております」
となってさらに連絡があり、
「ハードウェア不具合の影響によりデータの不整合が発生したため、
お客様ご利用中の「さくらのVPS」が正常に起動しない、または起動はするもののアプリケーションなどが正常に動作しない可能性がございます。」
という事でした。
サーバー屋さんからは10日前のデータなら戻せるという事でしたが
レスキューモードも使えるという事なので、現在レスキューモードでfsck(スキャンディスクのようなもの)を試しております。

もしも復旧に失敗してもDBは毎日バックアップ取っているのでお客様に登録いただいた情報は元には戻るのですが、発売情報が10日前になり諸々整合性がとれなくなるのでしばらく復旧の時間を頂戴したいと考えております。



2018年9月29日追加
昨日は夜まで復旧を試みるも残念ながら失敗しました。
昨晩遅くにサーバー屋さんに10日前の状態に戻す依頼をしました。
翌日になっても連絡がなかったのですが確認すると、しれっと復旧してました。
DBを28日5時時点に復旧し工事中を解除いたしました。
しばらくご迷惑をおかけしますが本日中には発売日情報も戻したいと思います。

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

マイリリースのAlexa版を公開しました。
以前作ったLINE Botと同じシステムなので「発売日を知りたいコミック名を聞かれると答える」という基本の解答システムは出来てるのでAlexa用にアレンジするだけなのですがAlexaの公式の説明がnode.jsで、無理矢理それっぽいやりとりをPHPで書いて見たがダメだったので、慣れないlambdaと慣れないnode.jsを使ったので多少時間がかかった。lambdaにはブラウザ上で開発できる環境があるがこれだけで作るとライブラリを入れるのも難しいし慣れたエディタも使えないのでローカルに環境を作ってzipで圧縮してアップする方法を使った。
ローカルに環境を作るのにバージョンを整える必要があるぐらいで特に難易度が高くはなかった。
難易度が高いのは審査だが。今回のamazonさんは口うるさいが親切にも何が悪いか教えてくれるので助かる。私は「適当に作って後で直す」スタンスで申請したのでかなり注意を受けたが3回目で審査に合格した。
今日は地震があってちょっと公開のタイミングとしては微妙だけど使ってくれる人が増えるとうれしいな。
コミック発売日のマイリリース: Alexaスキル

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

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

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

数年前にJavascriptでもバーコードが読めるライブラリはいくつか見つけてたのですが写真を撮影してバーコードを読み取るタイプだったり、ライブカメラで読めるタイプのJQueryプラグインも見つけてもAndroidのみの対応だったりで導入を見送ってました。
そして今回見つけたhttps://serratus.github.io/examples/live_w_locator.html=QuaggaJSはリアルタイムかつiOSも使えます。

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

バーコードリーダー|コミック発売日 MyRelease
スマホでご確認ください。

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

APIamazonさんから情報を頂くときは回数制限があるのでアクセスの度にamazonさんのAPIをたたくとすぐに制限がきてしまいます。
そこでmyreleaseではAPI導入し始めの頃から一応キャッシュはしていたのだが今まで機能毎にバラバラに最低限度の情報のみをキャッシュしていたのを統一しました。場合によってはですが少し表示速度が速くなったかと思います。

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

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

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

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

昨日(25日)からProduct Advertising API(amazonから商品情報を入手するAPI)から商品情報が返ってこなくなりマイリリースのサービスが機能しなくなった。
最初に思ったのは「amazonAPIの提供を辞めたのでは?」と思ったが他の方の運営してるサイトは通常通り運用しているようなのでウチだけという事になる。
もしかして仕様が変わった連絡を見過ごしたかと思って調べてみたが特に仕様が変わったという情報は無かった。
もしかして管理者のアカウントをいじったりしたので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に戻って確認すると正常に商品情報が返ってくるようになった。

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

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

先月AmazonAPIHTTPSに変更するように通知があり変更したばかりなのに今月からセブンネットショッピングもリニューアルされたとかでURLやAPIが一新された。
セブンネットに限らずAPIとか開発者向けの説明は説明が薄く分りづらいがなんとか解読して、URLや検索方法や条件など微妙に変化あったのはなんとか対応できたが、APIから返ってくる情報が少なくなってしまい在庫情報が無くなってしまった。
もちろんWEBサイトをスクレイピングして、無理矢理在庫情報を抽出する事も可能だけど重くなるのでセブンネットは在庫情報は非表示にします。
いつかセブンネットのAPIが改善されたらまた復活したいと思います。

ログインフォームのアニメーションなど

Giving Animations Life — Tictail  —  Behind the Scenes — Mediumの「Final Iteration — Squash and Stretch」の動きが気に入ったのでマイリリースのログインボタンに採用する事にしました。
採用するとは言え掲載されてるのはGIF画像でアニメーションのソースコードが書かれていないので耳コピならぬ目コピで何度も繰り返し見ながら再現しています。
GIF画像とは方向が逆なので軽やかに現れる感じですがボイーンと落ちてくる感じになりました。
ソースコードが書かれていないと書きましたが、短略URLをクリックして「Export CSS」を見るとソースが見れました。私の目コピが5行のCSSでアニメーションしているところを66行も使ってアニメーションしてるので結果的にかなり簡略化した事になります。)

このところ連続して微修正したのでまとめておきます。

■PC版トップページの「今日発売のコミック」
以前は正方形のサムネイルを並べただけだったのですがテキスト情報も見えるようにし、カーソルを合わせるとマガジンラックから雑誌をつまみ上げるような動きをさせました。

■PC版このマンガがすごい!等を年別に
このマンガがすごい!このライトノベルがすごい!の件数が多くなってきたので各年に分けて表示するようにしました。

コミック雑誌の発売日の更新
マグデリに新雑誌が追加されてないので気づかなかったのですがコミック雑誌の創刊廃刊を調べ直し改訂しました。WEBコミックが増加してます。

■商品詳細に楽天プロダクトに対応
以前は楽天BOOKに無い商品はリンクしてなかったのですが、楽天BOOKに無さそうな商品は楽天プロダクトを検索するようにしました。
imp. R2-D2 バーチャルキーボード IMP-101

■入会・登録の呼び方を統一
各所に入会・登録が混在した呼称を利用登録に統一しました。アカウント登録と悩んだのですがLINEに倣って利用登録にしました。

スマホ版トップから利用登録フォームを移動
スマホトップのログインボタンにアクセスしやすいように新着を下部に移動し利用登録フォームを別ページにしました。

■PC版のヘッダーからサイトの概要を排除
古いSEO対策でヘッダーにサイトの概要を入れていたが効果が薄いのでトップページのみサイト概要を記述するようにしました。