AmazonLinux2のjournaldの挙動

ルートボリュームのサイズを100GBにして普通のAmazonLinux2インスタンスを起動する。

$ journalctl -u systemd-journald
-- Logs begin at Tue 2018-11-20 01:30:57 UTC, end at Tue 2018-11-20 01:31:22 UTC. --
Nov 20 01:30:57 localhost systemd-journal[914]: Runtime journal is using 6.1M (max allowed 49.2M, trying to leave 73.9M free of 486.6M available → current limit 49.2M).
Nov 20 01:30:57 localhost systemd-journal[914]: Journal started
Nov 20 01:30:59 localhost systemd-journal[914]: Journal stopped
Nov 20 01:31:00 localhost systemd-journal[1913]: Runtime journal is using 6.1M (max allowed 49.2M, trying to leave 73.9M free of 480.5M available → current limit 49.2M).
Nov 20 01:31:00 localhost systemd-journal[1913]: Journal started
Nov 20 01:31:00 localhost systemd-journal[1913]: Permanent journal is using 8.0M (max allowed 818.0M, trying to leave 1.1G free of 6.9G available → current limit 818.0M).
Nov 20 01:31:00 localhost systemd-journal[1913]: Time spent on flushing to /var is 20.910ms for 542 entries.

一度 Runtime journal (=tmpfsでメモリにログが吐かれる)で起動し、再起動した後、 Permanent journal に変わっている。

まぁこの辺の挙動はAmazonLinuxの挙動なんだろうということで(未確認)受け入れるとして、気になるのは Permanent journal になったときにDISKが6.9GBしか認識されていないという点。EBSのデフォルトサイズである8GBが認識されるタイミングでもあるんですかね?(わかりません)

$ sudo systemctl restart systemd-journald
$ journalctl -u systemd-journald
Nov 20 01:35:25 ip-172-31-1-38.ap-northeast-1.compute.internal systemd-journal[1913]: Journal stopped
Nov 20 01:35:25 ip-172-31-1-38.ap-northeast-1.compute.internal systemd-journal[3419]: Permanent journal is using 8.0M (max allowed 4.0G, trying to leave 4.0G free of 98.7G available → current limit 4.0G).
Nov 20 01:35:25 ip-172-31-1-38.ap-northeast-1.compute.internal systemd-journal[3419]: Journal started

journaldを再起動すると直りますw

ついでにhost名もついてますね。AmazonLinuxの初期化タイミングとの兼ね合いっぽいですね。

$ sudo reboot
$ journalctl -u systemd-journald
-- Reboot --
Nov 20 01:36:52 localhost systemd-journal[912]: Runtime journal is using 6.1M (max allowed 49.2M, trying to leave 73.9M free of 486.6M available → current limit 49.2M).
Nov 20 01:36:52 localhost systemd-journal[912]: Journal started
Nov 20 01:36:55 ip-172-31-1-38.ap-northeast-1.compute.internal systemd-journal[1912]: Runtime journal is using 6.1M (max allowed 49.2M, trying to leave 73.9M free of 480.5M available → current limit 49.2M).
Nov 20 01:36:55 ip-172-31-1-38.ap-northeast-1.compute.internal systemd-journal[1912]: Journal started
Nov 20 01:36:55 ip-172-31-1-38.ap-northeast-1.compute.internal systemd-journal[1912]: Permanent journal is using 8.0M (max allowed 4.0G, trying to leave 4.0G free of 98.7G available → current limit 4.0G).
Nov 20 01:36:55 ip-172-31-1-38.ap-northeast-1.compute.internal systemd-journal[1912]: Time spent on flushing to /var is 67.158ms for 545 entries.

rebootすると、またRuntime -> restart -> Permanentの流れをたどりますが、DISKの認識は問題なさそうです。

Oracle OpenJDK 11 インストール

これはなに?

ただの手順メモ

AmazonLinux2にインストールした。
過去のOracleJDKと違ってインストーラが付属しないのでメモ。

Correttoの話は今回の作業のあとに出てきた。Corretto次第ではこの記事の内容は陳腐化が早いかもしれないので注意。

手順

https://jdk.java.net/11/
tarのリンクをコピー

ec2-user@aws $ cd /tmp
ec2-user@aws $ wget ${コピーしたURL}

バイナリ展開

ec2-user@aws $ tar xvf ${ダウンロードした.tar.gz}

配置

ec2-user@aws $ sudo mkdir /usr/lib/jvm
ec2-user@aws $ sudo cp -r jdk-${version} /usr/lib/jvm/

リンク

優先度はJavaバージョン番号を反映させる
例: 11.0.1 => 110001

ec2-user@aws $ cd /usr/lib/jvm/jdk-${version}/bin
ec2-user@aws $ sudo sh -c 'for bin in *; do alternatives --install /usr/bin/$bin $bin $PWD/$bin ${優先度}; done'

ついでにmavenをインストール

https://maven.apache.org/download.cgi
あとは同じようなことをする

続・QiitaアドベントカレンダーのはてブランキングをSlackに通知する

2016年(去年)のアドベントカレンダーにこんなの出した。

qiita.com

今年もSpeeeアドベントカレンダーやってるので、会社のSlackに流すようこれをセットした。

1年前に作ったやつを流すためにやったこと

  • Rubyのバージョンアップ(2.3.3 -> 2.4.2)
  • bundle update
    • rubocopのversionがあがったことにより、ソースコード全体に微妙な更新がかかった
  • Qiitaがhttpsになった!
  • アドベントカレンダーページのDOMも微妙に変わったのでxpathを調整
  • Docker化
  • heroku -> AWS Batch

詳しくはdiff見てくれw

Docker化

わかってたことなので今更あえて言う意味あんまないけど、DockerImageにしてしまうとポータビリティがあがってとてもいいですね。

https://hub.docker.com/r/nisshiee/adventcalendar-ranking/

↑publicにしてDocker Hubにpushしてあるので、試してみたい方はご自由にどうぞ。

Docker化でちょっとハマったところ

Rubyの入ったイメージは自分で作ってもいいけど、公式にもRubyイメージが一応ある。

https://hub.docker.com/_/ruby/

あるんだけど、このイメージはロケールが設定されていないので、このまま使うとEncoding.default_externalASCII-8BITになり、ファイル読み込みで死んだりします。

singleton method Encoding.default_external (Ruby 2.4.0)

ちなみに余談ですが、今回はSlackに投稿する本文をerbで定義していて、この日本語入りファイルの読み込みで死にましたw

同じ罠にハマってる人ネット上にちょいちょい居るので、ググれば出てくるんですが、同じようにDockerfileでロケールの設定もしてやります。

adventcalendar-ranking/Dockerfile at v1.1.0 · nisshiee/adventcalendar-ranking · GitHub

AWS Batchを本番導入するにあたって考えたことアレコレ

この記事は

Speeeアドベントカレンダー2017の1日目です!よければ購読してやってください。

qiita.com

Speee DEVELOPER BLOGもよろしくね!

TL; DR

  • AWS Batchを本番導入したよ
  • 結構クセはあるが、それを補って余りあるメリット(特にスケーラビリティ)
  • 現状はAWS Batchの活かし方の知見を貯めている段階だが、今後適切な用途があれば積極的に使いたい
続きを読む

【FF14】戦士のXHB配置

基本思想

インスタンスダンジョン

索敵->タゲ取り

  • 移動しながらの操作になるので、左手の操作をシンプルに
    • L2押しっぱなし
    • 十字キーは使わない
アクション 親指 中指
索敵 L2
ターゲット L2+R2
マーキング L2+R2
トマホーク L2
オーバーパワー L2

接敵後のヘイト維持

  • ヘイトコンボの操作をシンプルに保つことで臨機応変に動けるように
アクション
ヘヴィスウィング R2+◯
スカルサンダー R2+✕
ボーラアクス R2+□

R2+△にロウブロウを入れているので、スタンが有効な敵にはいつでもスタンを入れられる。

8人討伐/討滅戦

MT

  • R2->R2に防御系バフを並べてあるので適宜使う

ST

  • L2->L2に攻撃系バフ
  • 攻撃系コンボを↓の流れで
ヘヴィスウィング R2+◯
メイム R2+→
シュトルムブレハ R2+↑ シュトルムヴィント R2+↓

配置

R2

          シュトルムブレハ                  ロウブロウ
原初の魂/フェルクリーヴ   メイム       ボーラアクス    ヘヴィスウィング
          シュトルムヴィント                 スカルサンダー

L2

   スチールサイクロン/デシメート              リプライザル
ウォークライ    オンスロート               挑発       トマホーク
      アップヒーバル                      オーバーパワー

R2 -> R2

    原初の直感                        ヴェンジェンス
空き        ディフェンダー          コンバレセンス   ランパード
    デストロイヤー                  マクロ(アウェアネス->原初の直感)

L2 -> L2

    エクリブリウム                     ホルムギャング
空き      スリル・オブ・バトル        シェイクオフ      バーサク
    ギサールの野菜                アンチェインド/原初の解放

L2 -> R2

    エモートリスト                      マクロ(targetenemy)
ポーション  フォーカスターゲット   マクロ(marking 攻撃3)  マクロ(marking 攻撃1)
    リミットブレイク                     マクロ(marking 攻撃2)

R2 -> L2

    マウントルーレット                       フィールドマーカー
テレポ    フライングマウントルーレット      スプリント        レディチェック
    デジョン                              戦闘開始カウント

accepts_nested_attributes_forしたときのchanged?に気をつけよう

TL; DR

  • rails 5.0.2
  • accepts_nested_attributes_for で子モデルを変更しても、親モデルの changed?false を返すよ
  • なので、 changed? を見て何らかの処理をフックするようなコードを書くときは気をつけよう
  • relations_changed? メソッドを生やしておくのが良いと思うよ
続きを読む