Firebaseでカスタムイベントを利用する

FirebaseでAndroidからカスタムイベントを記録します。
Firebaseのセットアップは割愛します。

Firebaseでカスタムイベントを利用するには予め、アプリからイベントと付随するパラメータを送信しておきます。
翌日、Firebaseコンソールにてイベントとパラメータの設定を行います。
これらの設定がすべて反映されて、データをグルーピングできる様になるのは翌々日です。

1日目 アプリからイベントを送信する

FirebaseAnalytics analytics = FirebaseAnalytics.getInstance(this);

Bundle bundle = new Bundle();
bundle.putString("action", "running");

analytics.logEvent("service", bundle);

イベント名、追加パラメータ名は好きなもので構いません。
ここでは、イベント名をservice 追加パラメータ名をactionとしました。

Firebaseコンソールで確認されるには1日以上かかります。
面倒ですが、待ちましょう。

2日目 Firebaseコンソールでイベントの設定をする

Firebaseコンソールの Analytics -> Events を開く

昨日送信したイベント(ここではservice)が表示されています。
serviceの右にある︙をクリックしパラメータリポートを編集します。

アプリから送信したパラメータ名(ここではaction)がリストにあるので登録し、保存します。


3日目 Firebaseコンソールを確認する

パラメータごとにグルーピングできました!

rsyncをxargsを使って並列実行

ls -1 /path/to/src | xargs -I {arg} -P 6 -n 1 rsync -avh /path/to/src/{arg} /path/to/dest

ls -1 エルではなく1 xargs に渡すために 1行に1ファイル(フォルダ)出力
↓パイプ
-I {arg} で引数を置換する文字列を {arg} として
-P 6 で並列数を6として指定して
-n 1 で渡される引数の数を念の為1個に限定して
rsync -avh /path/to/src/{arg} /path/to/dest {arg}を引数で置換して実行

Tomcat のログが /var/log/messages に出てしまう時は

vi /etc/tomcat/logging.properties

-handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
+handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler

-.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
+.handlers = 1catalina.org.apache.juli.AsyncFileHandler

ベトナムのE-visaのパスポートの有効期限が間違っていた件

https://evisa.xuatnhapcanh.gov.vn/lien-he
ここで wrong application infomation を選択して、
間違っている内容と、正しい内容を送信します。
送信しました。って出たのにフォームが表示されて?となりますが、
きちんと送信されているようです。
4時間ほどで修正したよ。とメールが来て無事正しいE-visaが取得できました。

Google Play の定期購入のテストの仕様が変わったっぽい

少し前までは定期期間が1日のテスト定期購入だったのが、
5分更新で30分で自動で解約されるようになったっぽい。
解約されたときのステータスとかはまだ見てない。

ipset で安心安全サーバライフ

日頃サーバをいじっていると、ちょっと気を抜いただけで中国南北朝鮮ロシアあたりからアタックを試みられます。
もう面倒くさいので ipset でブロックしましょう。
ついでにsshは日本だけ許可しましょう。

yum install ipset ipset-service

ipdenyから国別IPを取得してきて、リストを作成するシェルスクリプトを作ります。

#!/bin/sh

BLACK_COUNTRIES=("cn" "kr" "kp" "ru")

ipset create -exist BLACKLIST hash:net
ipset flush BLACKLIST

for COUNTRY in ${BLACK_COUNTRIES[@]}; do
    echo ${COUNTRY}

    # Download Country ip address list(ipv4)
    if [ -s ${COUNTRY}.zone ]; then
        mv ${COUNTRY}.zone ${COUNTRY}.zone.old
    fi

    wget http://www.ipdeny.com/ipblocks/data/countries/${COUNTRY}.zone

    # Register specific country ip address to BLACKLIST group
    while read ADDRESS; do
        echo "ipset add BLACKLIST $ADDRESS" # FOR DEBUG
        ipset add BLACKLIST $ADDRESS
    done < ${COUNTRY}.zone
done

同様にjpのWHITELISTを作成します。

設定を保存します。

ipset save WHITELIST > /etc/sysconfig/ipset
ipset save BLACKLIST >> /etc/sysconfig/ipset

※保存先は /usr/libexec/ipset/ipset.start-stop の IPSET_DATA 参照

サービスに登録します。

systemctl enable ipset

リストをフラッシュしてみて・・・

ipset flush WHITELIST
ipset flush BLACKLIST

restart して設定がロードされていればOK

systemctl restart ipset

こんなふうに使います。

/sbin/iptables -A INPUT --match-set BLACKLIST src -j DROP
/sbin/iptables -A INPUT -p tcp -m state --state NEW --destination-port 22 -m set --match-set WHITELIST src -j ACCEPT