2022-01-01から1年間の記事一覧

PushbackInputStream を使用する

以前、Excel 拡張子 (xls) (xlsx) 両方に対応した操作 Apache POI として、 oboe2uran.hatenablog.com を書いた。しかし、ファイルシステムによっては、Excel WorkBook の認識に、 Your InputStream was neither an OLE2 stream, nor an OOXML stream or you…

list chain execute

public static <T, R> R relayFunction(List<T> list, Function<T, R> first, BiFunction<T, R, R> func){ Iterator<T> it = list.iterator(); R r = it.hasNext() ? first.apply(it.next()) : null; while(it.hasNext()) { r = func.apply(it.next(), r); } return r; }</t></t,></t,></t></t,>

クォート文字で囲ってないJSONキー

JSONの仕様は、フィールド名:キー は、(") ダブルクォーテーションで囲むと されているが、RFC8259 にそんなこと書いてあるか? JavaScript 表記のことを考えると、キーをダブルクォーテーションで囲まないケースで 読込みエラーになるのは、不都合なのでは…

Iterator → Stream

稀に書くことがある Iterator から Stream への変換メモSpliterators.spliteratorUnknownSize で、イテレータを Spliterator を作って、 StreamSupport で Stream生成 Iterator<T> iterator =list.iterator(); サイズが解らない場合ケースが多いので、 Stream<T> s</t></t>…

リスト要素の前方を参照する処理(3)

oboe2uran.hatenablog.comこれを、先頭だけ Consumer にして、BiConsumer で if 文を書く必要をなくす。 public static <T> void eachPrevious(List<T> list, Consumer<T> first, BiConsumer<T, T> consumer){ ListIterator<T> it = list.listIterator(); first.accept(it.next</t></t,></t></t></t>…

リスト要素の前方を参照する処理(2)

前回の投稿、 oboe2uran.hatenablog.comさらに、BiConsumer の処理にしてみます。 public static <T> void eachPrevious(List<T> list, BiConsumer<T, T> consumer){ for(ListIterator<T> it = list.listIterator(); it.hasNext();) { T pre = null; if (it.hasPrevious()) </t></t,></t></t>…

リスト要素の前方を参照する処理(1)

特別に新しいことではない、Java標準で 1.6の時代からあることではあるが、 意外と正確に迅速に書けないロジック (課題)A, B. C,.... と文字列のリストが存在する。 これを、前の要素を参照しながら抽出処理する。ListIterator の hasPrevious() と previo…

Jackson Map デシリアライズ

JSON → Map import com.fasterxml.jackson.core.type.TypeReference; TypeReference を使って Map<String, Object> map = new ObjectMapper() .readValue(jsontxt, new TypeReference<LinkedHashMap<String, Object>>(){}); try(InputStream inst = new FileInputStream(Thread.currentThread().getContextC</linkedhashmap<string,></string,>…

AWS Lambda関数 Java イベントの認識

AWS Lambda関数 をJavaで構築する場合、イベントの認識はハンドラメソッドのガイドとして 次がある。 docs.aws.amazon.comいきなり Map<String, String> で受け取るハンドラメソッドの方法が書いてあります。 JSONなら、JSONとして受け取ったら直ぐに parse して処理したいも</string,>…

AWS EventBridge で、Javaで書いた Batch Job にパラメータを渡す。

AWS のナレッジを参考にするしかない。 https://aws.amazon.com/jp/premiumsupport/knowledge-center/batch-parameters-trigger-eventbridge/「準備:Job定義」 Javaで書いた Batch のイメージ作成済でAWS Job定義のジョブ設定を行う。 ”Ref”+”::"+{パラメ…

ローカルの置いた Jar をMavenでビルドの依存関係に追加する。

Maven セントラルリポジトリにない JAR 、あるいは外部サーバーのMavenリポジトリから取得できない JARをローカルPCに置いて、Maven でビルドの依存関係に追加する方法Maven の <build> <plugins> に、以下のように<plugin> を挿入すれば可能になる。例)poisample-0.0.1-SNAPSHOT.ja</plugin></plugins></build>…

AWS boto3 の Java版?!

AWS boto3 に触れたので、これと同じことをJava でやるには、、、 oboe2uran.hatenablog.comaws-java-sdk-batch aws.amazon.comよりも、、software.amazon.awssdk AWS SDK for Java 2.x の方が、インターフェースもそっくり。sdk.amazonaws.comDescribeJobsR…

AWS boto3 submit_job で実行する Batch Job のステータスを監視する

Batch — Boto3 Docs 1.21.3 documentation のドキュメントを頼りに、以下のような 1つの Job が動いて成功したら次の Job を実行する Lambdaを Pythonで書く。lambda_function.py のソースコード import logging import boto3 logger = logging.getLogger()…

guice で @PostConstruct

@PostConstruct , @PreDestroy などの JSR-250 Lifecycle annotation は、 これらを使ってちゃんと実装すべきなのだろうけど、 guice/extensions/jsr250 at master · mathieucarbou/guice · GitHub @PostConstruct だけ、簡単につかいたい。結構、古い断片の…

Spring での static DI

Google guice での static へのインジェクションは、割と簡単な方法であるのに対し、、、 static injection - Oboe吹きプログラマの黙示録 では、Springの場合は、、、 と調べると。。 www.baeldung.comcode injection - Spring: How to inject a value to s…

static injection

Google guice に static 宣言の Object にインジェクションする方法はあるのか? ⇒ ある。 Module の configure() メソッド実行の中で、requestStaticInjection(Class ) で対象クラスを指定すればよい。 @Override public void configure() { requestStaticI…

JUnit 実行順序、さらに範囲指定での実行

JUnit 実行順序を指定するだけだと、 JUnit テストケースの実行順序 - Oboe吹きプログラマの黙示録 この通りだが、さらにその実行順序を振った前提で順番の番号の範囲を指定して 実行するにはこれに、少し改良すれば良い@Order アノテーションは前回と同じ i…

JUnit テストケースの実行順序

JUnit4 を使っていて、テストケースの実行順序をメソッド名によるソート@FixMethodOrderも悪くはないのですが 任意に順番を指定する良い方法はないかと探していたら、やはり自作するしかないようで 自作でも良いから簡単な方法は?と探してたらありました。…

XMLMapperBuilder でSQLMapper XML を parse

去年、以下を書いたけれど、、 XMLMapperBuilder を使ってみる。 - Oboe吹きプログラマの黙示録 Java インターフェースクラスで書く Mapper の指定になってしまっている。 クラスローダーが読み込める全ての classpath から、XMLを見つけて parse する方法と…

OpenJDK 11 で、javax.annotation.Resource がコンパイルエラー

@Resource を使用したコードを OpenJDK 11 でビルドしようとしたら、 見つからないとコンパイルエラーになった。 Java 8 Oracle SDK の時は標準SDKにあったけどどうやら、一旦、外されたらしい。 Java 11: cannot find symbol javax.annotation.Generated ·…

可変長引数のコンストラクタを持つクラスのリフレクション

可変長引数のコンストラクタを持つクラスをコンストラクタのリフレクションで生成する 以下のようなコンストラクタの時、 public Sample(String...args) { Constructor の newInstance メソッドは、newInstance(Object...) であるので、 以下のように、new O…

zip圧縮

Java 標準SDK で、ちょっと簡単に書いてみる。 import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Arrays; import java.util.zip.Zip…

curly brackets Number Replace

過去に書いていそうで、今まで書いてなかった 中括弧 "{ } " これは curly bracketsと呼ぶのかな? で囲んだ数値の文字列変換、 java.text.MessageFormat の format メソッドを使えば済むことではあるが、 簡単なことなので書いておく。テンプレート abc {0}…

Excel 拡張子 (xls) (xlsx) 両方に対応した操作 Apache POI (2)

よくよく考えたら、 Excel 拡張子 (xls) (xlsx) 両方に対応した操作 Apache POI(1) - Oboe吹きプログラマの黙示録 は、あまり賢くない!Closeableを実装して、Workbook のインスタンスとすべきだ。 import java.io.Closeable; import java.io.IOException…

Apache POI Workbook からExcel バージョン取得

org.apache.poi.ss.usermodel.Workbook から、 Excelバージョンを調べる方法org.apache.poi.ss.SpreadsheetVersion という enum を 調べればよい。 public static SpreadsheetVersion getSpreadsheetVersion(InputStream inst) { try(Workbook book = Workbo…

Apache POI 新規Excel 作成

org.apache.poi.ss.usermodel.Workbook を、引数なしコンストラクタで Excel 2003 の形式なら、new HSSFWorkbook() Excel 2007 から、new XSSFWorkbook() で作成すれば良い。シート名が曲者で、 Workbook book = new XSSFWorkbook(); book.createSheet(); bo…

Excel 拡張子 (xls) (xlsx) 両方に対応した操作 Apache POI(1)

久々に、Apache POI に触れます。 Excel 2003 の形式、拡張子 .xls Excel 2007 からの形式、拡張子 .xlsx 両方に対応するには、 org.apache.poi.ss.usermodel.* にある WorkbookFactory で、Workbook を取得して Workbook book = WorkbookFactory.create(inp…

PostgreSQL のVACUUM実行の指標

SQL

PostgreSQL の VACUUM は、いつやるべきか?不要になったタプルが増えた時に行うべき。 SELECT relname, n_live_tup, n_dead_tup, CASE n_dead_tup WHEN 0 THEN 0 ELSE round(n_dead_tup*100/(n_live_tup+n_dead_tup) ,2) END AS ratio FROM pg_stat_user_ta…

Apache POI を使わない Excel の読み書き

Java で、Excel ファイルを操作といったら、Apache POI 一択だろうと思っていたので 今まで躍起に探したことがなかった。Jxls ・・・テンプレートによる転送、、そんなことをしたいのではない。Apache-poi を内包するんだったら意味ない。 ExCella Reports・…

config XMLを記述しない mybatis を目指して。。。

過去、、いろいろ試行錯誤を書いていた。。 mybatis XML設定を使わない場合 - Oboe吹きプログラマの黙示録mybatis xml設定ファイル使わない場合の補足 - Oboe吹きプログラマの黙示録【再興】mybatis XML設定を使わない場合 - Oboe吹きプログラマの黙示録myba…