Maven プロファイル指定ビルドと、生成物の名前

Maven profile を使用してビルド対象リソース管理しているプロジェクトで ビルドする JAR名も合わせて変更したい。という要求通常デフォルトのMaven がビルドするJAR は、artifactId 名 + "-" +バージョン番号 + ".jar" という書式で JARファイルが作成さ…

bash 正規表現など

マッチした部分の抽出 #!/bin/bash item="recty-8.10.12" if [[ ${item} =~ ([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then echo '${BASH_REMATCH}='"${BASH_REMATCH}" echo '${BASH_REMATCH[0]}='"${BASH_REMATCH[0]}" echo '${BASH_REMATCH[1]}='"${BASH_REMATCH…

AWS Batch Job 実行 シェルの終了コード

AWS Batch Job 実行のシェル(bash) で シェルの終了コードがそのまま、Job ステータスに適用される。 exit 0で終了すれば、SUCCEEDED exit 1で終了すれば、FAILED になる

JSONテキストを変数にする

bash のスクリプトを書いていて、変数にJSONテキストを入れたい。サンプル シングルクォートで括って、、 #!/bin/bash name="orange" msg='{ "count": 12, "item" : "'$name'" }' echo $msgJSONの中で変数をセットするのが良い書き方に思えない。 echo の結…

入れ子の bash コマンド実行結果の代入

bash コマンド実行結果を変数に代入する場合、「`」逆クォーテーションで囲むか、 $( ) で囲むかであるが、入れ子が発生する場合をどう書くか? まず、入れ子にしないケース 1970-1-1 00:00:00 からの秒数、所謂エポック秒を date コマンドで求めた変数を Pe…

Windows Subsystem for Linux でWindows側のドライブ

Windows Subsystem for Linux (WSL)をインストールして ターミナルを立ち上げると、Windowsの Cドライブは既にマウントされている。次のように、cd で移動すれば、Cドライブアクセス可能 $ cd /mnt/c/

Windows Subsystem for Linux で使う vi

1種類の Linux でしか試してないので vi の見た目が本当に使いにくいかどうか? 筆者は、WSL デフォルトの Ubuntu を入れてみて、vi でファイルを開いた時に、 ・文字色配色コントラストが酷い ・1行目に #!/bin/bash と書いても、真っ黒のままで背景色と…

ATOMシステム規定のアプリで開くが動作しない、対処

ATOM以前より使っていたプラグイン、最近のATOM 1.60.0 で、前にも入れて使ったことのある oboe2uran.hatenablog.com この、open-unsupported-files を入れて、 Excel をダブルクリックで Excel アプリで開けずに、エラー Uncaught TypeError: shell.openIte…

guice タイプセーフな annotatedWith

Google guice で JSR330 の @Named に対して、 バインド定義で @Namedアノテーションがついていることを限定する場合、 binder().bind(Logic.class).annotatedWith(Names.named("HIGH")).to(HighLogic.class); と、com.google.inject.name.Names の named(…

OGNL式、インナークラスの場合

先日、 oboe2uran.hatenablog.com を書きましたが、 滅多にないというかそんなクラス定義をして何の意味があるのだと思うが、、 インナークラスで定数を定義している場合、、 $でインナークラスを指定することになる。前回のサンプルを例にすると、、 packa…

bind定義を書かないでクラスに @Injectをした時の guice

通常 Google guice の使い方は、インターフェースに対する実装クラスのインスタンスが 割り当てられるように bind定義を書いてDIを実装する。うっかりというか、諸事情で見落として、 @Inject private Foo foo; と書いた Fooクラスが、インターフェースで…

継承時のlombok @Data

継承があるオブジェクトでは、@Data を使うと警告 Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=f…

Markdown 表を書くのに便利なサイト

時々、使わせてもらってます。www.tablesgenerator.com

区切り文字で区切られた最後のワード

区切り文字「.」で区切られた文字列から最後を求める aaa.bbb.ccc.ddd.eee区切り文字 「.」でない区切った各塊を表す正規表現が [^.]* であるから 区切り文字 「.」で区切られた最後のワードを求める正規表現 [^.]+$区切り文字+区切り文字 「.」で区切られ…

Apache POI Excel Sheet の全行 ⇒ 読込みObjecのリスト

Apache POI を使用した Excel の操作はずいぶん昔からコードを書いていた。 PushbackInputStream を使用する - Oboe吹きプログラマの黙示録 Excel 拡張子 (xls) (xlsx) 両方に対応した操作 Apache POI (2) - Oboe吹きプログラマの黙示録 Excel 拡張子 (xl…

mybatis で固定値をSQL Mapで指定するにはOGNL式を使う

開発プロジェクトの方針にSQL文に固定値を記述するのを絶対に禁止とか 融通の効かない、賛同できないことが時々ある。 プロジェクトによってそういうのもあって苦労するのだが、mybatis には OGNL書式が使える OGNL(Object Graph Navigation Language) の…

mybatis 可変長引数メソッドをSQLアノテーションで。。。

Javaメソッド可変長引数(variable length arguments)使用での SQLアノテーションリストを引数にした場合のサンプル @Select("<script>SELECT * FROM tb_items WHERE 1=1" + " AND item_id IN <foreach collection='list' item='id'" + " separator=',' open='(' cl</script>…

ThrowableFunction

Throwable 例外を投げて処理する関数型インターフェースを作っている。 yipuran-core/src/main/java/org/yipuran/function at master · yipuran/yipuran-core · GitHub使い道はいっぱいある。 Strin str = "[ \"A\", \"B\", \"C\" ]"; これを Jackson Object…

JUnit リスト比較

リストの完全一致の比較検証を簡単に記述できないかを考える。 比較対象のリストの要素がデータオブジェクトで、特定のフィールドは 比較対象にしたくない。というケースオブジェクトの比較対象にしたくないフィールドをコピーすることを以下を 使って簡単に…

Maven ビルドリソースの指定

以前、こんなものを書いたけど。。 Maven ビルド実行前にファイルコピー - Oboe吹きプログラマの黙示録改めてビルドでの指定は、こんな風に書く <build> <resources> <resource> <directory>${basedir}/src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.json</include> </includes> </resource> </resources></build>

JUnit でログ出力を検証する。

JUnit で先日の System.setOut による標準出力先の切り替えを利用する方法である。 logger.info("AuthLogicImpl name = "+name); このロガーが標準出力する設定になっており、このログ出力をJUnit テストコードで検証する。 準備として便利な以下を使用でき…

JUnit で標準出力結果を検証

System.setOut で標準出力先を切り替えたのを元に戻す - Oboe吹きプログラマの黙示録より、切り替えによるJUnit で標準出力結果を検証するテストケースを以下のように書けば良い。 例) "OK"だけを標準出力するメソッドをテスト System.lineSeparator() を付…

System.setOut で標準出力先を切り替えたのを元に戻す

標準出力のバンドル FileDescriptor.out で戻せば良い。System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));例)ファイルに書いていて、元に戻す。 try(FileOutputStream fo = new FileOutputStream(new File("/work/test.txt"))){ …

リストの比較

JUnit リストの比較 Eclipse で、JUnit を書いていると、コード補完でうまく出てこなくて いつもイライラするので、メモ import org.hamcrest.CoreMatchers; import org.hamcrest.MatcherAssert; MatcherAssert.assertThat(list1, CoreMatchers.is(list2)); …

mybatis の foreach は、ネスト(入れ子)を書けるか?

Yes. 書けます。mybatis の foreach で、1つの foreach で良く使うのは、バルクインサートを書く時、、 INSERT INTO items ( id, name. length ) VALUES <foreach collection="list" item="e" separator=","> ( #{e.id}, #{e.name}, #{e.length} ) </foreach> バルクインサートでなお且つ、インサート文で指定するカラム…

Stream から 配列生成

Stream<T> の toArray(T::new);toArray の引数が IntFunction<A> なのであるからといって、 .toArray(v->new T[v]); と書く人は少ない。IntStream の toArray() が、int[] を生成するのだが、 int[] intary = IntStream.rangeClosed(1, 5).toArray(); Integer の配</a></t>…

JUnit static import

JUnit の時ぐらいしか使わない static import org.junit.Assert を使ってるのか、org.hamcrest.MatcherAssert を使ってるのか、 長いテストコードを素早く確認するのに、いちいち上までスクロールして確認なんて やってられない、 import static org.junit.A…

Java11 でテキストファイルを String に読込み

Java11 でテキストファイルを String に読込むのは、とても記述が楽だ。java.nio.file.Path に、java.nio.file.Files で対応できるのである。サンプル UTF-8 のファイル import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java…

【修正】オブジェクト間フィールドのコピー

先日の オブジェクト間フィールドのコピー - Oboe吹きプログラマの黙示録 を修正することにした。 それは、継承クラスにおいて継承元のフィールドをコピーすることを考慮すべきだからだ。 @Data @EqualsAndHashCode(callSuper=true) を書いているときのエン…

オブジェクト間フィールドのコピー

任意のオブジェクト間で、特定のフィールドだけをコピーするのに汎用的な方法を考えます。 これを考えるきっかけは、JUnit の assertEquals などを実行する前に、比較したくない属性フィールドは、 コピーして同じ値にしてしまおうという目的で、それを状況…