2014年5月22日木曜日

耳が急に聞こえなくなった話

去年、右耳が急に聞こえなくなりました。

びっくりです。右耳に何か大きなものが詰まったような感じ。
しばらくは疲れてるのかなぁくらいの意識でしたが、左右の聞こえ方の違いがやはり気持ち悪い。どうしよう、このまま聞こえないままだったら、ゴーストライター雇わなきゃ!と軽くパニクりましたが、よく考えたら交響曲とか作ったことありませんでした。


とはいえ放置するのも問題ですので耳鼻科にいって検査をすると、特定の周波数以下の低音が右耳で聞き取れなくなっていたようでした。ストレスなどが原因で神経が圧迫されているとかで、数種類の薬を処方いただき、服用をすると数日で聞こえるようになりました。

お医者さん曰く、放置していると本当に聴こえなくなることもある、そうで、やはり違和感があったらすぐに病院へ!を痛感しています。

2014年4月21日月曜日

Amazon SESのバウンス情報をSNSを使ってWEBサイトで受け取る

先日、SESでBounceしまくってペナルティを食らったので、SNS(Simple Notification Service)を使ってWEBにエラー情報を貯めることにしました。
WEBで受け取ることによって、バウンスの多いメールアドレスは、アクティブじゃないのでメールの配信を止めることができますよね。

1

まず、WEBを叩くので、受け取りの設定をします。
今回は簡単に、SnsLogsテーブルみたいなのを作って、テキストフィールドを設けるだけにしました。コントローラは、POSTで受け取って、格納だけ。

def ses_logs
newlog = SnsLog.new
newlog.content = request.raw_post
newlog.save
exit
end

2

SNSでTopicを作ります。


これで保存すると、Endpointがガシガシ叩かれるみたいです。
うまく叩かれない場合は、Railsだとアプリケーションコントローラにprotect_from_forgery with: :null_sessionを追加するとか。

3

データベースにPOSTが格納されました。シメシメ。
 "SubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-1:103909089397:hogehoge&Token=2336412f37fb687f5d51e6e241d638b05a632e9ca5d93559640e06c51000987d21f641ee649971c5d7e0afad91e8753ede821d33824c053a67b4ebakabakaiyan9"
コンテンツに、上記のようなテキストが入ってると思うので、URLにアクセスします。

すると、SNSのTopicに追加したレコードがConfirmSubscriptionからIDに変わります。
これで成功です。

Amazon SES がサスペンド喰らいました

Amazonより恐ろしいメールが来襲。
「Amazon Simple Email Service Sending Suspended Due to Critical Issue in region US East (N. Virginia)」

訳:変なメールばっかり送ってるから、SES止めるね。



Amazon SESを止められてしまうと、運用中のサービスのニュースレターだけではなく、ユーザ登録もなにもかもストップしてしまいます。サービスが止まってしまうので、すぐ対応です。
原因はバウンス率の高さ。送信できなかったメールが15%ほどありました。

下の参考サイトで何をすればいいか詳しく書いてあるので、それに従って対応。ありがとうございます。
http://temporal.hatenablog.com/entry/2013/01/20/174500

  1. Return-Pathの設定もしくは、AmazonSNSを使ってエラーの内容を把握できるように。
  2. 再開された後に、変なメールを送ってしまわないように初期対応。
  3. Amazonに申し開きを返信。

これで24時間以内にひとまず解除されました。

ちなみにAmazonに送ったメールは、
「バウンスの原因はニュースレターであること。最近の登録者はメアドの存在を確認しているから問題ないこと。数年前の登録者が存在確認があやしいこと。モバイルの登録者もころころメアドが変わるのであやしいこと。送ったニュースレターをいまだ一度も開けていないユーザは、ニュースレターの送信を止めたこと。SESが再開されたらSNSを確認して対策を取ること。」を英語で送信しました。

2014年3月16日日曜日

Rails でIPを取得するとき

RailsでIPを取得するとき、古い記事だと
    request.env["HTTP_X_FORWARDED_FOR"] || request.remote_ip
これで取れると書いてあります。

しかし、HTTP_X_FORWARDED_FORは、カンマ区切りで複数のIPが帰ってきてしまうので、使い勝手よくありません。
request.remote_ipも、いくつかのIP取得のメソッドの集合のようで、HTTP_X_FORWARDED_FORを含んでおり、カンマ区切りで帰ってくる可能性大。

そういうわけで、こっちを使うほうがいいかも。
    request.env["HTTP_X_FORWARDED_FOR"].split(",")[0] || request.remote_ip

メモ。

2013年12月5日木曜日

IE10の凄いバグ

IE10で
問題の署名:  問題イベント名:APPCRASH  アプリケーション名:****  アプリケーションのバージョン:****  アプリケーションのタイムスタンプ:4****
  障害モジュールの名前:MSHTML.dll  障害モジュールのバージョン:****
  障害モジュールのタイムスタンプ:****
こんなエラーが出てサイトが見れないという現象に悩まされました。
結局問題は、

<p>【テスト】テスト</p><img src="test.jpg" /> 
こんな感じの行の1文字目の【でした。

画像の直前の行の最初の1文字が【だったらIE10が落ちる。

<p>”テスト”テスト</p><img src="test.jpg" /> 
に変更して対応。

2013年10月28日月曜日

jQueryのajaxが、IEで動かなかった。

$.ajax({
url: '/login/items/test/'+id,
success: function(result){}
})

というように、ajaxを叩いてゴニョゴニョすることがよくあるのですが、IEで動かないとのことで調べましたところ、IEではキャッシュが効いて正常に動かなくなることがあったんですね。
そこで、ユニックスタイムを付けて解決。

$.ajax({
url: '/login/items/test/'+id+'?'+ parseInt((new Date)/1000),
success: function(result){}
})
もしくは、パラメータに以下を追加。
$.ajax({ cache: false})

メモメモ。

2013年9月13日金曜日

サーバのデータをS3にアップロードする

メモです。
大量のデータをS3にアップするために、cronで叩くためのファイル。


#!/bin/bash
AWS_ACCESS_KEY_ID='アクセスキー'
AWS_SECRET_ACCESS_KEY='シークレットキー'
export AWS_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY
export AWS_CALLING_FORMAT="SUBDOMAIN"
/home/s3sync/s3sync.rb -r -p --delete /home/webmaster/public_html/img/ バケット名:xxx

オプション
-r
再帰的
-p
公開状態
--delete
S3にアップしたファイルを削除