MyBatis の SqlSessionFactory

SqlSession session = new SqlSessionFactoryBuilder() .build(Resources.getResourceAsReader("mybatis-config.xml")) .openSession(); SqlSession openSession(boolean autoCommit); SqlSession openSession(Connection connection); SqlSession openSessi…

Eclipse 開いてるファイルの場所を開く

Eclipse で検索などをしてファイルを開いた後、パッケージエクスプローラーやプロジェクトエクスプローラーで 場所を開いたい時があります。どうするか? パッケージエクスプローラーやプロジェクトエクスプローラーの右上をクリックして、 エディタにリンク…

java.io.Console.readLine() が NullPointerException

java.io.Console を使って、標準入力を簡単に書こうと思ったのだけど、 Console console = System.console(); String s = console.readLine(); Eclipse の実行では、System.console() が、null を返して NullPointerExceptionThis is a bug #122429 of eclip…

Files.writeString

古い Java の方法でなく、簡単に String をファイルに書く。 Java11 以上なら、、 import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOpti…

Java17 の Pattern Matching for switch

openjdk.orgswitch 文式で、String , int , enum 以外の判定で魅力的なのですが、 static String formatterPatternSwitch(Object o) { return switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); cas…

logback.xml 等、環境別に

logback 環境変数で出力先やログレベルを指定する。 - Oboe吹きプログラマの黙示録 は、1つの logback.xml を準備して環境変数で環境別に設定の方法であるが、 環境別の logback.xml を用意する方法で Mavenビルド時に、使用環境に合わせたビルド成果物にす…

logback 環境変数で出力先やログレベルを指定する。

logback.xml に、環境変数の値を適用させるには、 ${ 環境変数名 } の記述方法で指定する。 ログ出力レベル <logger name="org.labo"> <level value="${LOGLEVEL}" /> <appender-ref ref="FILE" /> </logger> 環境変数名 記述 設定 LOGLEVEL ${LOGLEVEL} "debug" 、"info" などを指定する ログ出力先、ログパターン <configuration> </configuration>

シェルの2重起動防止

よく見かける方法は、実行するスクリプトでファイルを生成してそのファイル存在チェックで 判定する方法を見かけるが、シェルが途中でハングアップした場合など起動できなくなる。 シェルコマンドのプロセスIDをチェックする正当な方法にすべきだ。pgrep の…

Stream toList()

Java16 から、Stream に、toList() ってできるようになってたんだ。Stream から、collect(Collectors.toList()); と書いていたのが、スッキリ toList() と書ける。

Maven ビルドで xml を含める

build で、resource として指定する。 <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version></plugin></plugins></build>

Java 時刻のマイクロ秒精度を表現

JSR-310 java.time.LocalDateTime で、ナノ秒まで表現できる。となったものの 実際OS依存で環境によって、本当に1ナノ秒まで取得できるわけではない。 Windows PCであれば、100ナノ以下は結局、00 であった。 LocalDateTime から java.time.format.DateT…

Maven profile を指定したビルド

profile を指定して、ビルド対象リソースを切り替える通常のビルド対象リソース src/main/resources/application.propertiesprofile 名=develop として develop のビルド対象リソース src/main/resources-develop/application.propertiesと用意されている。…

SpringBoot profile 解説メモ

SpringBoot 環境毎で切り替える方法をまとめた情報のリンクを並べていく、Spring Boot コア機能 - リファレンスドキュメント Spring Profilesで環境ごとの設定ファイルを読み込む(SpringBoot2.4の変更も記載) - きり丸の技術日記 Spring Bootでapplication…

git で後から除外設定した時、

.gitignore に後から除外設定をした時に、対象を削除しても追跡が続いてしまいます。git rm --cached filenameでインデックスを消しましょう。

JUnit5 の例外のテスト

今更、JUnit4 → 5 の差異のメモです。 未だに JUnit4 を使い続けてるプロジェクトも多いのですが、 JUnit5 の例外のテストは、変わったのを改めてメモ、どこにでも解説があるので、 なんで、今さら。。。とは言え、書き留めます。JUnit 4 では、、 @Test(exp…

SQL整形、オンラインWebで

オンラインWebでブラウザで操作できるサービスを公開してくれてるものがある。https://sqlformat.org/Python で処理されている。GitHub - andialbrecht/sqlparse: A non-validating SQL parser module for Pythonドキュメント https://sqlparse.readthedocs.…

DBeaver でSQL整形

DBeaver SQLエディタで、SQLを整形したい時は、Ctrl +Shift + fで整形できる

Maven リポジトリにないライブラリを取り込む方法

Maven Central repository や、他の公開リポジトリに存在しなくて、自プロジェクトで抱えて pom.xml で指定する方法maven-install-plugin を使う例)プロジェクトの直下に、lib というフォルダを用意して JAR を置いた例${project.basedir}/lib/custom-1.2.j…

PyScript を試す

pyscript.netGIt-Hub : GitHub - pyscript/pyscript: Home Page: https://pyscript.net Examples: https://pyscript.net/examples 紹介記事 https://ops.jig-saw.com/tech-cate/new-tech-pyscriptHTML上でPythonコードが使える、PyScriptを用いて静的サイト…

MySQL で、PostgreSQL の generate_series関数と同じことをする。

SQL

MySQL で PostgreSQL の generate_series 関数と同じことをしようとすると、 SET @num:= 0; SELECT @num:=@num+1 FROM `information_schema`.COLUMNS LIMIT 4; でもこれでは SET 文と2つの文になってしまって mybatis での実行では都合が悪い。 SELECT a.VC…

PostgreSQL の generate_series

SQL

PostgreSQL で、連番や、日付の並びなどSQLクエリ結果として求めるのに便利なのが、 generate_series 関数1~4を ’ 1' ~ ' 4' で出力する SELECT TO_CHAR(GENERATE_SERIES(1, 4), '9999') AS UCD 1~4を ’0001' ~ '0004' で出力する SELECT TO_CHAR(GE…

配列を文字列に、

String[] ary = { "A", "B", null, "C" }; これを System.out.println やログで出力すると [Ljava.lang.String;@75b84c92となってしまう。 期待としては、以下のように出力したい。 [A] [B] [null] [C]汎用性を考えて、オブジェクトの toString が想定どおり…

String#split の第2引数

String#split の第2引数をもっと使いこなそう。サンプル String str = "A/B//C/D/"; 良くコーディングする方法 String[] ary = str.split("/"); ary.length は、5 になる。 第2引数に0をしても同じ結果になる。 String[] ary = str.split("/", 0); 第2引…

Java11 HttpClient timeout

Java11 java.net.http.HttpClient でのタイムアウトは、、、 接続時のタイムアウト HttpClient.Builder の connectTimeoutメソッドで java.time.Duration を設定 HttpClient client = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1) .follow…

XStream attribute

XStream でのXMLの attribute は、@XStreamAsAttribute を付けるだけ import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import lombok.Data; @XStreamAlias("ball") @Data publ…

XStream List構造のXMLを読む

XStreamで、XML→Java Object では、 XMLのリストの記述方法に左右される。リストをラップするタグがない場合、 <items> <item> <id>101</id> <name>cell</name> </item> <item> <id>102</id> <name>mouse</name> </item> </items> Java Object package org.sample.element; import com.thoughtworks.xstream.annotations.X…

Java11 HttpClient SSL サンプル

サンプルといっても完成形ではないが。。。 import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.net.http.HttpClient; import java.securit…

XStream を使う

XML読み書き、Java Object との相互変換に何を使う?で問われてだいたいは、JAXB を挙げる。 他の選択肢は?で XStream を挙げてくれる人は少ない。 5年前に、XStream を知ってその頃は、あまり活発でなかった。しばらく触れる機会がなかったが、 2022年1…

Guice Injector の mock

モックインスタンスを guice でインジェクションさせるパターンは、ネット検索すれば、 たくさん見つかる。 しかし、Injector の生成メソッド Guice#createInjector をモックしてテスト用の Injector を生成させるパターンは 見たことがない。 MockedStatic …

Objects.requireNonNull

安易というかまだまだ、if 文で null かどうかをチェックすることが多い Objects.requireNonNull で、NullPointerException を発生させるスタイルは なぜか、あまり見ない。もっと使えば良いと思うのだが。。。java.util.Objects public static T requireNon…