2015年5月21日

EC2インスタンスが止まってて死ぬかと思った

 運用直前のシステムをaws上で開発しているのですが今朝突然接続できなくなっていました。

 ロードバランサー(ELB)配下のEC2インスタンスがOutServiceになっていたのでおかしいなと思い、SSHでつなごうとしてもログインもできず。
 前日に設定を変更したわけでもないのに(何もしてないわけではないですが)何をしてもダメです。

今のところ原因は不明ですが以下の手順で復旧したので次回同じことが起きても焦らないようにメモって起きます。


最後の悪足掻きをしてみる


  1. 接続不能になったEC2インスタンスを停止→起動をする。
  2. ステータスチェックが「2/2 checkes passed」になっているか確認しなっていればOK
    今回の場合、「1/2 checkes passed」のままずーっと止まってました。
  3. 2.がNGだったら諦める。

EC2を再作成する

  1. 予め作成しておいたAMIからEC2を再作成する。
    もし作ってなかったら、再起動しても接続ができないEC2から作って対応します。
    今回は、ちょっと古いAMIしか無かったので再作成しました。
  2. 新しいEC2インスタンスを起動し、ステータスチェックが「2/2 checkes passed」になるのを待ちます。
    ここで「1/2 checked passed」のまま止まったら諦めるしかないのかもしれません。新しいEC2インスタンスを作ってシステムの入れなおしですね、きっと。
  3. ロードバランサに付け直す。
  4. Public IPを古いEC2から付け直す。
  5. システムの動作確認する。

次は、RDSをMultiA-Zにしているのに何か障害が発生した時に正しく対応ができるかどうかでしょうか?

2015年5月20日

CakePHPにAjaxで連続リクエストするとダメなの?

 どうしたものかと悩んでします。

 CakePHPで動作しているサーバーに対してAjaxを使って連続リクエストをすると403のステータスが返ってくる場合がある現象に遭遇しました。

 直接の原因は、AuthComponentクラスの_getUserメソッドで認証済みのユーザ情報が取得できないために、次の処理の_unauthenticatedメソッド内で403を返却してしまっているようです。

もしかしてだけど、もしかしてだけどー。
 軽くソースを見たところ認証ユーザ情報をセッションから取ってきているようです。現在セッションは、ファイルに保存するようにしているのでそこが問題なのかもしれないです。例えば、セッションを読む時にロック掛けて他からさわることができないうにするため、取得できずに何も返さないとか。


 どこで「通常ではないこと」が発生しているかはわかったので対策を建てることはできるかもしれませんが、フレームワーク内を修正するわけにもいかないので困っています。

 とりあえず対応として、業務アプリケーション内で対応することはできているので最悪の自体は回避できてはいます。



 セッション毎の問題のようなのでフレームワークを別のものにするとかはしなくても良さそうです。

関連記事
CakePHPでセッションがよく切れてしまうのを回避

Google Chrome 43になってから?hostsを使った名前解決がおかしい?

 Webのシステムを作っているときローカル環境で開発するする時はドメイン名をhostsファイルに設定して名前解決をしています。

 今回、Google Chromeを43系(64bitで確認)にバージョンアップしたら、今まで使っていたhostsファイルに設定していたドメイン名が効かなくなってしまいました。

 全てがおかしいのではなく、あるパターンのものが問題あるようです。

ドメイン名の最後に「.localhost」と付いているとhostsに書いてあっても名前解決してくれないようです。

NGのパターン
192.168.0.100 hogehoge.localhost

OKのパターン
192.168.0.100 hogehoge.local
192.168.0.101 hogehoge.localhost.com


解決方法がわかったので直近はOKですが、ダメだろこれは?


バグでもなんでもなく、RFCの仕様仕様だそうです。
localhostのサブドメインは使えないようです。
43になったそのバグが解消されたとういうですね。チャンチャン。

2015年5月18日

MySQLのダンプとリストアコマンド

 MySQLのダンプとリストアコマンドを覚えられないのでメモっておく。

構造部とデータ部を分けてエクスポートします。
理由は後で追記しておきます。ちょっと検証が必要だったので。

データベースのエクスポート


>mysqldump -u hoge_user1 -p --no-data --skip-triggers hoge_db1 > hoge_db1_20150518_1000.dump

>mysqldump -u hoge_user1 -p --no-create-info --skip-triggers hoge_db1 > hoge_db1_data_20150518_1000.dump

データベースのインポート

>mysql -u hoge_user2 -p hoge_db2 < hoge_db1_20150518_1000.dump

>mysql -u hoge_user2 -p hoge_db2 < hoge_db1_data_20150518_1000.dump

トリガーを作成

トリガーがある場合は、全てのインポートが完了した後に、ソースから投入します。
ソートが無い場合は、もらってください。

2015年5月16日

Japan IT Week 春 2015行ってきた

 毎年の春の楽しみにしている「Japan IT Week 春」に行ってきました。
これに行かないと自分の春が始まりません(笑)

今、取引しているクライアントの課題を解決することを念頭に見てきました。
当然、次の仕事のネタになりそうなものも気にしているんですけどね。

帳票ソリューション

Webのシステムを作成している時に帳票をどうするかをよく検討するのですが、どんな開発ツールでも同じ方式で帳票(PDF等)を出力したいのですが、なかなかそういったものがありません。
デザインもGUIでわかりやすく設計したいですし。
帳票デザイナと印刷エンジンが開発ツールに依存しないものを探していました。
今だったら、Webサービスを使ったものを探していました。

SVF Cloud


 言わずと知れた帳票ソリューションを提供している会社(ウイングアーク)の展示です。
Webサービスを使った印刷は現在作成中らしいです(リリースは未定)
CybozuのKintoneやSalesforce用の印刷サービスはリリースしているそうです。
 汎用のWebサービスがまだないのだったら、SVFを使って自分でWebサービスを作るというのを考えました。
 一応、説明員をしていた人にライセンス的にはどうか聞いてみたら、そのあたりは、今は検討していないけどありだとは言っていました。
 SVF自体結構高額ですがちょっと汎用の印刷Webサービスを考えて見たいと思いました。

OPRO ARTS


 初めて聞いた会社(日本オプロ株式会社)でしたが、こちらもウイングアークのように老舗のようです。
ですが、クラウドでの帳票ソリューションは、こちらのほうが先行しているようです。
出力した帳票の管理、出力先のコントロール(PDFやFAX等)等のWebアプリケーション込のものや、最低限必要なエンジン部分のみなどいくつかありました。
自分がほしい物は、デザイナと印刷エンジンなのでOPRO Arts LiveとOPRO Arts Coreです。
Liveは帳票デザイン、Coreは印刷エンジンです。
年間12,000枚まで帳票作成が可能なようです。プレビューしても1枚と言っていました。

全文検索をしたいの

Kintone


 いろいろな部品を組み合わせることで簡単にWebアプリケーションを作成することができます。
 テンプレートもあるのですぐに必要なアプリケーションを短時間で作成でき、改造も簡単なようです。
 実は、現在のクライアントから開発中のシステムのデータ(RDMSで作ったデータベース)を全文検索したいんだけどどうなの?という依頼があってどうやってやればいいか考えていたところ内部のデータを全文検索できる機能があるというのがわかったのでそれが使えるのではないかと検討しています。
 開発中のデータをすべてKintoneに取り込むことで全文検索させ、そのデータのキーを含んだURLで開発中のシステムへリンクすることで全文検索が実現できるのではないかと考えたわけです。
 Kintoneには、RESTのAPIがあるのでもしかしたら実現できるかも知れません。
あとはパフォーマンスとクライアントが利用料金に対してOKを出すかどうかです。

請求書後払いをなんとかしたい

 掛売の金額を踏み倒されないようにするために、掛け売りはできるだけしないように指導しているようです。
 それでも必要な場合は、帝国データバンクで調べて掛け売りしてもOKかNGかを社長が判断しているそうです。

NP後払い(BtoB)


 NP後払いのBtoCがあるのは前から知っていたいのですが、BtoBのサービスもやったいるようです。
 1社に対しての補償金額が30万円というのはちょっと低いような気がするのですが(100万円までは相談に応じるとありましが)試しいやってみるのはいいかもです。
 手数料も3〜5%ということでしたのでそれほど高額なわけではないようです。
プランによって手数料は変動するようです。
 相手の与信チェックも30分程度ででき、98%くらいでOKなそうなので試さないては内容です。
 回収保証をしている会社はいくつかありますが、この会社をクライアントに紹介してみようかと思います。



 他にも棚卸しの工数を削減するためのソリューションもありましたが結構高額だったりするんですよね。
 RFIDを使ったものなのですが、棚卸しのデータを管理するためのツールと合わせて、RFID読み取りのハードウェアもセットで40万円とかありました。
 話を聞くと、RDIDリーダーとWebアプリケーションの間のミドルウェア(Windows CEらしい)も含んでいるそうです。そのミドルの部分だけだったらおいくら万円?と聞いてみたのですが答えはもらえませんでした。まぁ、そうでしょうねとは思いましたが(笑)


 今回は、二日間最初から最後まで個別の展示を見ていましたがネタとしてよいものが結構ありました。
 クライアント様向けのソリューションや自分が作って売るためのソリューションネタ(帳票とか)もありました。
次回は、秋に幕張メッセであるはずなので楽しみにしておきたいと思います。

2015年5月12日

電話料金を安くしたいということで。

 電話料金を安くしたいということでSkype電話を導入しました。
自分が使えるキャリアは今のところソフトバンクだけ(2台持ちなのに)なのでそこ宛だったら無料でかけることができるのですが、仕事してると相手は、固定電話だったり、ドコモだったりします。

 余り電話をかけることは無いのですが掛けるときは長電話になったりするのでできるだけ安い回線にしたかったのです。

 Skypeだと固定電話相手だと2.26円/分なので超安いのです(接続料は別途かかりますが)
PCの前だったらヘッドセットつけていれば耳も痛くならないし、キーボード打ちながらの作業もできます。便利!
 試しにSkypeクレジットを使ってやってみてます。

一応Skype番号も取ったのですが、相手の電話に番号を伝えることはできないようです。
日本と他の数か国がその対象になっています、残念。番号がでないと怪しまれる感じがしますが。

Sykpeでも携帯電話相手だと10円/分くらいかかります。
ドコモやauに掛けるときは、楽天電話経由で半額で掛けるようにしています。

で、まとめると

ソフトバンク宛の場合は、自分の携帯(ソフトバンク)で。→0円/分
ドコモ、au宛の場合は、楽天電話経由で自分の携帯で。→10円/分くらい。
固定電話宛は、Skype電話で。→2.26円/分くらい。

多分これで今年の電話料金は安くなるはず。

それと、Skypeの品質はとっても良いと思います。
ビデオ会議でGoogle Hangoutを使っているのですがもしかするとそれより良いかもしれません。