jackson-datatype-jsr310 を使う

<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.15.2</version> </dependency> SimpleModule を使う場合、 import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.faster…

Excelで作ったデータ表をDB(MySQL)に簡単な操作でセットするPythonのツール

Python で、Excelファイルを受け取り MySQL DBに簡単にデータをセットする。 PCで実行するので、用意する Python スクリプトは、pyinstaller で EXE化をする。 DB接続情報とシートにデータを書き込んだ Excel ファイルを ドラッグアンドドロップでPython …

ファイルパスから多種の情報を取得する os.path

しょっちゅう使いそうなのでメモ os をインポート import osファイルパスから、ディレクトリパス dirpath = os.path.os.path.dirname(filepath)ファイルパスから、ファイル名 filename = os.path.basename(filepath)ファイルパスから、拡張子とそれ以外に分…

メッセージ curly brackets Number

oboe2uran.hatenablog.comメソッド名が良くないので書き直す。 public static String getMessage(String template, Object...obj) { Objects.requireNonNull(template); String s = template; Matcher m = Pattern.compile("\\{\\d+\\}").matcher(template);…

「Listの要素が全て同じ」と「重複の存在チェック」

この2つのチェックは、「Listの要素が全て同じ」=true なら、 「Listの要素が全て同じ」= true でなければならない。 List の要素が全て同じ値かどうか List<T> list; boolean res = list.isEmpty() || list.stream().allMatch(e->Objects.equals(list.get(0)</t>…

List の要素が全て同じ値かどうか

List の要素が全て同じ値かどうかをチェックするのに、Stream の allMatch を使う方法がある。 List<T> list; T は、String など、equalsメソッドがちゃんと実装されてる型 boolean res = list.isEmpty() || list.stream().allMatch(list.get(0)::equals); でも</t>…

Python スクリプトを EXE化する時のメインのスタイル

Python スクリプトをWindowsPC で、作業用に EXE化した実行ファイルで利用する場合に ・目的の処理の為にファイルを指定すること。 ・実行終了時は通知が欲しい。 と要求を満たすようにしたい。ファイルの指定=読み込ませるファイルは、Windows での作業な…

Oracle複数行INSERT をExcelから、Python でSQL文を作る

Oracle 複数行INSERTのSQL は、 INSERT ALL INTOテーブル名 [ ( column, ,,,) ] VALUES ( ・・・) INTOテーブル名 [ ( column, ,,,) ] VALUES ( ・・・) SELECT 1 FROM DUAL で、INTOテーブル名 各行に付けなければならない不便さから解放されるために、 Exc…

Oracle の複数行INSERT

SQL

Oracle で一度に複数行のデータをINSERTするSQL文は、長くなってとても嫌だ。 INSERT ALL INTO tablename VALUES ( value1, value2, ... ) INTO tablename VALUES ( value1, value2, ... ) INTO tablename VALUES ( value1, value2, ... ) SELECT 1 FROM DUA…

toString の代用

つまらない理由でエンティティClass定義やDTOクラス定義で、 lombok の @ToString や @Data を後から付与させてもらえないプロジェクトで ログ出力でそのオブジェクトを出力したくて困る場合がある。 せめて、フィールドが public 宣言か、getterメソッド…

Java Stream のネスト展開を考える。

あるListを Stream で処理する時に要素1つが更に List などを走査時に取得して 全体のList として処理することを考える。 簡単なサンプルとして、String の split でどう書くかを確認しておくのが良いだろう。 List<String> list = List.of("1,2,3", "4,5,6", "7,8,</string>…

JUnit テストケース実行範囲の指定

去年書いた oboe2uran.hatenablog.com この時点では、JUnitテストケースの任意のケースの順番の範囲指定で、 番号が連番での実行だけでしたが、1,3,5,13,17~のように、 任意の順番のみの指定をサポートしていませんでした。任意の順番のみの指定…

log4j2 と logback の設定ファイルメモ

今更、サンプルとしてメモしておきたかったので。。。 log4j2 Maven pom.xml の記述 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.20.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.20.0</version></dependency>

log4j2 のログファイル出力設定をプログラム処理から参照する。

先日の logbackのログファイル出力設定をプログラム処理から参照する。 - Oboe吹きプログラマの黙示録 と同様に、log4j2 においてログファイル出力設定をプログラム処理から参照する。 ログ設定のサンプル <Configuration status="off"> <Properties> <Property name="format1">[%d{yyyy-MM-dd HH:mm:ss.SSS}],[%-5p],[%c#%M]-</property></properties></configuration>…

logbackのログファイル出力設定をプログラム処理から参照する。

logback-classic-1.4.x.jar から、 ch.qos.logback.classic.LoggerContext を取得して、ch.qos.logback.classic.Logger を求めて、Appender<ILoggingEvent> のイテレータで 設定された各アペンダを参照、RollingFileAppender</iloggingevent>

ログファイルのデフォルトの出力ファイル名を日付が付くファイル名にする。

logback の場合と log4j2 の場合を紹介する。logback の場合 logback.xml の appender の指定で、File で指定するログファイル名を書かないようにする。 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> </rollingpolicy></appender>

JSON Editor の紹介

シンプルなJSON エディタ、整形してくれる機能だけあればいいと。。。 以下、オンラインを使う。 https://jsoneditoronline.org/ これは、広告が入ってしまうので。。 Chrome での拡張機能で使う場合、、 https://chrome.google.com/webstore/detail/json-ed…

logback のログ開始を抑制

logback のログ出力で最初に以下の余計なログが出力される場合の抑制 13:29:48,061 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.4.6 13:29:48,088 |-INFO in ch.qos.logback.classic.LoggerContext[defau…

Java Socket通信の簡単なサンプル

標準キー入力による簡単なサンプル受信サーバーソケットプログラム 同時複数接続を可能とするために、accept() で接続した Socket は、子スレッドで close する。 import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket…

mybatis の if 文

良く記述するパターン、 パラメータ変数 String type; に対して、、 WHERE 1=1 <if test="type == null"> AND id = #{id} </if> <if test="type != null"> 文字列比較:空文字 <if test="type == ''"> 文字列比較:任意 <if test="type == 'A012'"> 以外にもあまり書かないパターンで、 パラメータ変数の型が boolean なら、 boolean flg であれば、 <if test="flg"> で、flg = true</if></if></if></if>…

固定長文字列フォーマットからクラスオブジェクトを求める

Stream の reduceで文字列を長さで分割 - Oboe吹きプログラマの黙示録 を書いた時、応用すれば長いコードを書かなくても済むのでは?と思いました。 解析対象の固定長フォーマットの文字列、長さ 4,2,6,14 の文字列長の連結 String str = "uranA1 9812023031…

Stream の reduceで文字列を長さで分割

今時、電文など固定長文字列でデータ設計するところは少ないであろう。 文字列の長さ、(4, 2, 6, 6) と4個の並びであるとして、18の長さの文字列を分割するのに、 Stream の reduce を使うと、わりとスマートに書ける。 List<String> list = new ArrayList<>(); L</string>…

mapMulti

Java16 から使える Stream の mapMulti mapMulti(BiConsumer> mapper) flatMap と何が違う、使いどころがすぐに思いつかなかったが、メソッドの説明のサンプルで、 なるほど便利と思うのが書いてある。 ネストされているリストを、1つのStream にする。 cla…

Java16 からの JEP394 Pattern Matching for instanceof

instanceof 後のcast する鬱陶しいのを回避で、よく紹介されますが、 if (obj instanceof String) { String s = (String)obj; // String s の処理 } if (obj instanceof String s) { // String s の処理 } 次のように、総称型の配列を List に変換するのに使…

WindowsPC イヤホンジャックを認識しないを解決

Windows10 の話です。 リモート会議などでUSBのヘッドセットを使うとPCのサウンドは、 というドライバになって、外してその後、電源OFF→起動後、 イヤホンジャックに、イヤホンまたは、イヤホンタイプのマイクを差し込んでも 認識しないことがある。以下の操…

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…