日々精進

新しく学んだことを書き留めていきます

lombokのAccessorsアノテーションはexperimentalなので本番で動くコードには使わない方が良いかも

@Accessors(fluent=true)が使いたくて@Accessorsを使っていたが よく見たらexperimentalパッケージの下にある。

以下によるとexperimentalの機能はあまりテストされてなかったり、不具合修正が遅かったり消えることがあったりするらしい。

projectlombok.org

さすがにそんな機能を使うのは恐いので@Accessorsを使うのは断念した。残念。。

Javaプログラムを実行すると「java.lang.NoClassDefFoundError: Could not initialize class」エラー

メッセージからはクラス定義が無いことが原因のように見えるが、クラスを定義するコードはある。。 原因はstaticフィールドの初期化コードの中で例外をthrowしていることだった。 以下のようなコードでMyClassのコンストラクタで例外をthrowしているとNoClassDefFoundErrorになる。

private static final MyClass val = new MyClass();

static {} の中でthrowしても同様。

参考: stackoverflow.com

AWSマネジメントコンソールでスイッチロールをちょっと楽にする

以下のようにスイッチロールしたアカウント・ロール名・表示名を含むURLを作ってそこにアクセスするとスイッチロールの画面がそれらを入力した状態で表示される。

https://signin.aws.amazon.com/switchrole?account=account_id_number&roleName=role_name&displayName=text_to_display

対して手間が省けるわけじゃないけど、デプロイ手順を少しでも省力化してデプロイミスのリスクを減らすにはいいかも。。

参考:

docs.aws.amazon.com

YAMLの値はダブルクォートで囲むべきか?

yamlの値が文字列の場合、以下のようにダブルクォートで囲っても囲まなくても両方文字列と見なされる。

item_a:
  item_b: test
  item_c: "test"

以下によると基本ダブルクォートで囲まない方が良いけど、"10"のように囲むことで結果が変わる場合は必要に応じて囲めば良いみたい。 気をつけないといけないのはyes, noはダブルクォートで囲まないとtrue, falseと見なされるというところ。これは罠だ。。

stackoverflow.com