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

Predicate 結果で Function 実行する

任意の検査をして Function<T, R> を実行する。 これは、stream か、Optional で filter 実行後に map あるいは flatMap を実行と ラムダ式を連結して記述すれば済むことではある。例)日付文字列→LocalDate String str; // TODO 日付文字列をstr に格納 LocalDate</t,>…

クラスと同じclasspath の場所に置いたファイルのIO

resources ではなく、Javaソースと同じ場所にファイルを置いて ビルド後の classes の同じパッケージ階層に配置されたファイルを読み込む方法、java 拡張子以外のファイルもビルドで、class と共に同じ場所に配置されるころが前提条件であるが、以下のように…

gson でJSON読み込んで、Key と Value

先日、Jackson でJSON読込み key-value の BiConsumer を処理する - Oboe吹きプログラマの黙示録Jackson でJSON読込み key-value の Stream生成 - Oboe吹きプログラマの黙示録 を書いたので、gson で同じことをします。JSONキーは、"." で区切り、配列は、[n…

Jackson でJSON読込み key-value の Stream生成

先日の oboe2uran.hatenablog.comさらに、以下のメソッドも追加すると便利かもしれない。 public Stream<Entry<String, Object>> stream(String jsontxt){ Stream.Builder<Entry<String, Object>> builder = Stream.builder(); ObjectMapper mapper = new ObjectMapper(); try{ parseJson(mapper.readTree</entry<string,></entry<string,>…

Jackson でJSON読込み key-value の BiConsumer を処理する

JSON を Jackson の ObjectMapper でクラスにマッピングするのではなく、 JSON キー と 値の BiConsumer を実行する。ObjectMapper の readTree メソッドで取得する JsonNode を使用する。 import java.io.IOException; import java.io.InputStream; import …

gson や Jackson に頼らない JSON の読込み

非奨励の nashorn 使用する方法でなく、別の方法です。 有名な Graal VM の助けを借りる方法です。 https://www.graalvm.org/ 準備: Maven pom.xml <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js</artifactId> <version>21.0.0.2</version> </dependency> <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js-scriptengine</artifactid></dependency>

gson や Jackson に頼らない JSON の読込み(非奨励の方法)

標準ライブラリにある javax.script.ScriptEngine で、 JavaScript として解釈させて Nashorn で参照する方法です。 Google gson みたいな高機能は期待できません。 Nashorn は、Java11 から非奨励です。 Java15 から廃止されてます 書いては、みたものの、…

Jackson でJSON読込み時、フィールド存在しない場合

Jackson で ObjectMapper による JSON 読込で、JSONキーに対してクラス側にフィールドが存在しないと UnrecognizedPropertyException を発生するわけだが、それを無視して読込みさせたい時は、 @JsonIgnoreProperties クラスアノテーションで、ignoreUnknown…

ClassCastException を配慮した cast 処理

instanceof 演算子で if文を書くのが嫌な時、 Class の isInstance メソッドで制御したOptional変数で処理する方法、、、 単に cast する。 Food f = Optional.of(pasta) .filter(e->Food.class.isInstance(e)) .map(e->Food.class.cast(e)) .orElse(null); …

Function<T, R>の andThen における NullPointerException の回避

Function<T, R> の andThen , compose は、 以前から、最初の apply 結果が null だったら、 NullPointerException になってしまう不満がありました。 よくありがちなデータ構造 import lombok.Data; @Data public class Bucket{ private Drink drink; } import lo</t,>…

コード値を抱える enum のタイプハンドラ

yipuran-mybatis GitHub - yipuran/yipuran-mybatis: mybatis used application をリリースやり直した。 enum のタイプハンドラを書いたのだが、 コード値を抱え持ち、コード値を参照するインターフェースに static メソッドを書いていたのだが、enum 実装と…

mybatis の enum TypeHandler を汎用的にする。

mybatis が enum に対するハンドラは、列挙名だけのマッピングなら、 org.apache.ibatis.type.EnumTypeHandler 列挙の並び、enum の int ordinal() メソッド、(0始まり、序数=0)で満足なら org.apache.ibatis.type.EnumOrdinalTypeHandler をで良いのだ…

コンストラクタで値を抱える enum 列挙型の汎用インターフェース

Java の enum 使用でよく列挙名と共にコード値を定義して使用したりする設計は 常套手段の1つである。 public enum Frame { Gold(101), Silver(101), Bronz(102); private int value; private Frame(int value) { this.value = value; } public int getValu…

MySQL 8.x からは、JDBCドライバ指定は変えないとダメだった

MySQL 5.7 あたりは、JDBC ドライバ指定は、 com.mysql.jdbc.Driver だったけど、 以下、Maven で取得したコネクターを使うなら、 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency>

ありがちな github のエラー

開発環境PCを入れ替えたとき、うっかり忘れて以下をエラーを出してしまう。 maven で、git-hub 上のリポジトリにデプロイしようと思ったときに、、、 [ERROR] Failed to execute goal com.github.github:site-maven-plugin:0.12:site (default) on project X…

Functionの結果をBiConsumerで実行する(3)

2回も投稿した Functionの結果をBiConsumerで実行する - Oboe吹きプログラマの黙示録 Functionの結果をBiConsumerで実行する(2) - Oboe吹きプログラマの黙示録 だが、まだまだ改良の余地がある。andThen なる and で連結の書き方をもっと短くできるはず…

Functionの結果をBiConsumerで実行する(2)

昨日書いた、 Functionの結果をBiConsumerで実行する - Oboe吹きプログラマの黙示録 もっとよく考えてみれば、、 ApplyBiConsumer のリストではく、 続けてafterオペレーションを実行する andThen を使うのが良さそうである。 BiConsumer継承の方法では、 im…

Functionの結果をBiConsumerで実行する

Webアプリ開発をしているとよく、画面プレゼンテーション層と サービスロジック層の間の為にコンバータなるものを作らされたりして 面倒なものです。 よく書かされてしまう、getter で持ってきて、setter に食わせる a.setPhonNumber(b.getPhoneNumber()); …

String の null チェック、空チェック

Java11 を使うようになっても、 org.apache.commons.lang.StringUtils.isEmpty(String) や、 org.springframework.util.StringUtils.isEmpty(String) を外部JARを使って、nullチェックの代わりと "" でないことをチェックする コードをよく見かけるという哀…

new 演算子で生成する変数のコーディングを減らす方法

私が作った Fieldsetter 以下は、 https://github.com/yipuran/yipuran-core/blob/master/src/main/java/org/yipuran/util/Fieldsetter.javahttps://github.com/yipuran/yipuran-core/wiki#fieldsetterフィールド名称を指定する点で、タイプセーフではない。…

漢字の正規表現

CJK 統合漢字 を Unicode で正規表現漢字のみである場合の正規表現(Java)^[\u4E00-\u9FFF]+$漢字と分類されるのが微妙な次の文字を含めるならば、、\u3005 々 // 同上記号・同の字点 \u3006 〆 // 締め \u3007 〇 // 漢数字のゼロ^[\u4E00-\u9FFF\u3005-\u…

サクラエディタで snakecase ⇔ camelcase

以前、Excel VBA で、Python で書いた snake case ⇔ camel case スクリプトで、 Excel 上に入力したものを変換する方法を書いた。 oboe2uran.hatenablog.comでも、Python が入っていないPC環境では不可能なので他の方法で日常、すぐに使える方法はないかと …

Eclipse が起動しない JVM is not suitable for this product

Eclipse Pleiades 2020年版をインストールして起動したら、 JVM is not suitable for this product; Version 11 or grater is required と表示され起動できなかった。 Java11 以降を前提としており、環境として Java8 で開発したり Java11 で開発したり する…

サクラエディタのメニューアイコンが消えた時

サクラエディタを再インストールした時だったか、急にサクラエディタのメニューのアイコンが表示されなくなった。対処は、、サクラエディタ常駐してたら、まずは終了して、%UserProfile%\AppData\Roaming\sakura\を開き、このフォルダにある sakura.ini ファ…

Stream の最後を求める

どうしても stream で処理するなら、reduce による集計で求めるサンプル List<String> list = List.of("A", "B", "C". "D". "E"); String last = list.stream().reduce((a, b) -> b).orElse(null); last → "E"stream の先頭なら、reduce((a, b) -> a)list が空なら、</string>…

Optional の stream() メソッド

未だに Java バージョンが、Java8 のままのプロジェクトが多く、以降のバージョンで追加された メソッドの恩恵を受ける機会に恵まれず、追加メソッドの存在を忘れてしまってる。Optional のリストがあった時に、null でないものだけを Stream で処理したい時…

OpenCV 画像認識 detectMultiScale を実行してプロセスが終了しない

Windows環境、Python で、OpenCV で、画像から顔検出 OpenCV: Face Detection using Haar Cascades顔認識として、以下から取得したカスケードファイル opencv/data/haarcascades at master · opencv/opencv · GitHub haarcascade_frontalface_default.xml 正…

deselect_node.jstree Event

jsTree で選択中のノードを解除する操作は、ctrl キーを押しながら 選択しているノードをマウスクリックする。このイベントを拾うイベント名は、deselect_node.jstreeよって、 選択が外れた時の処理を記述する場合は、、 $('#tree').jstree({ // 省略 }).on(…

jsTree描画オブジェクトを JSON にする

jsTree で描画するツリー構造イメージを、ノード名を JSON キー、JSON値は jsTreeデータオブジェクト のIDで、 JSON を作成する。 https://www.jstree.com/RUNボタンを押したら、とりあえず、JSON を生成してコンソールログ出力する。 HTML <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>sampl</title></meta></meta></head></html>…

Blob作成、dispatchEvent イベントの伝播でダウンロード

実現させていく例として2年程前に書いた oboe2uran.hatenablog.comoboe2uran.hatenablog.com↑で書いた、jsTree 編集データJSONのダウンロードする方法です。 今回は、Python eel を使いません。初期表示の JSON もURL指定読込みでなく、JSソースと…