2014年9月13日土曜日

新しいiTunesConnect(Aug 2014)にバイナリを上げたらWarning Build ~ does not contain the correct beta entitlement.

2014年の8月に、iTunesConnectが大きく変わった。

iTC上でのバイナリの管理方法が変わったこともあって、変更前に生成したバイナリだと以下のWarningが出ることがある。


Build ~ does not contain the correct beta entitlement. 

発生したら、App Store リリース用の Provisioning Profile を変更してビルドすれば良い。

2014年9月4日木曜日

tomcatのログローテート

logrotateコマンドを使用する方法


Amazon Linux、CentOS では、yum でインストール出来る。
Redhat系だったら導入は簡単ということ。他のディストリビューションは手元に無いので確認していない。

以下に設定ファイルを作成する。

/etc/logrotate.d

ファイルの名前で、logrorateを使っているアプリケーションがわかる。

ここでは、「/etc/logrotate.d/tomcat」とする。root で作業。

# vi /etc/logrotate.d/tomcat

# logrotate file for Tomcat
/opt/tomcat/logs/catalina.out {
  missingok
  copytruncate
  daily
  dateext
  rotate 60
}


オプションの整理



  • missingok:ログファイルが無くてもエラーを出さない
  • copytruncate:
  • daily:日でローテート
  • dateext:ファイル名末尾に日付をつける
  • rotate:残す世代数
  • compress:最新世代以外は圧縮
  • size:最大サイズを指定。最大になるとローテート


/etcc/cron.daily 配下のファイル logrotate がある。つまり、logrotateはcronによって毎日走る。

実行スクリプトがどこにあるかというと、logrotate.d にすべてのスクリプトが含まれる。

include /etc/logrotate.d



logrotateの強制実行


# logrotate -f /etc/logrotate.d/tomcat


cron.dailyの強制実行


# anacon -f

上記で、少なくとも logrotate と cron による実行確認可能。

サーバに設定して、動作確認すればOK。


accesslogの設定



catalina.outだけでなく、accessログも logrotate でローテートする場合は、tomcatが自動でローテートしないように以下の設定を行う。

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="access_log." suffix=".txt" ←★ファイル名は access_log.txt に固定される
               rotatable="false" ←★ 自動ローテートをOFF
               pattern='%h %l %u %t "%r" %s %b %D "%{Referer}i" "%{User-Agent}i"' />

その後、tomcatのローテート設定にファイルを追加する。

# logrotate file for Tomcat
/opt/tomcat/logs/catalina.out
/opt/tomcat/logs/access_log.txt
{
  missingok
  copytruncate
  daily
  dateext
  rotate 60
}

2014年9月3日水曜日

JNIの関数の戻り値を文字列にする時の簡単な注意事項

JNI でコーディングする間が開いたので、コンパイルに失敗してjstringで文字列を作成する関数なんだっけ、で数分を失ったのでメモ。

以下の関数で jstring を生成する。

jstring strj = env->NewStringUTF("debug");

既知なことだと思うが、envは引数JNIEnvを指す。