続・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? メソッドを生やしておくのが良いと思うよ
続きを読む

rails asset pipeline JSが、developmentでは動いてproductionでは動かないということはあり得る

滅多にないとは思うが、実際そういうことが昨日起きて、しばらく悩んだのでメモしておく。
「コレが原因でこういう現象が起こるケースがありました」という報告なので、そのつもりで読んで欲しい。

続きを読む

accepts_nested_attributes_forしたときのi18n

Rails 5.0.2

Railsi18n書くときに、ちょっと複雑になるとYAMLをどう書けばいいかわからなくなる問題。

たぶんソース見るのが一番良い。こことかね。

github.com

のだけど、accepts_nested_attributes_forしたときのi18nの書き方だけまとめておく。

続きを読む