Java

キー入力の連続

1年前に、標準キー入力させるのに、java.util.Scanner を使用した例を書いた。。。 oboe2uran.hatenablog.comこんなメソッドを用意して使うのもいいが、 public static String keyIn(String guide){ System.out.print(guide); try(Scanner scan = new Scann…

Apache POI でExcel 日付読込み

久々に JavaでExcel を読込む apache POI を使う。 try(InputStream is = new FileInputStream("sample.xlsx"); XSSFWorkbook book = new XSSFWorkbook(is)){ XSSFSheet sheet = book.getSheetAt(0); XSSFRow row = sheet.getRow(2); XSSFCell cell = row.ge…

Stream で処理する正規表現

Java8 でも使えるように書いてみた。。昨日の、 正規表現マッチのストリーム処理を考察 - Oboe吹きプログラマの黙示録 に続いて、思いついたので、まとめてみた。 import java.util.Iterator; import java.util.Spliterator; import java.util.Spliterators;…

正規表現マッチのストリーム処理を考察

Java8 では、正規表現で分割 split したストリームは取得できるけど、 java.util.regex.Pattern の splitAsStream(CharSequence input) ⇒ Stream<String> マッチした文字列のストリームは標準では提供されていない。自然に Matcher の find() 実行ループをメソッドに</string>…

Python dictionary → Java Map

Python dictionary を 標準出力してJavaでMap として読み込む。先日書いたものの勢いにまかせて、、、Python 標準出力→Java受け取り - Oboe吹きプログラマの黙示録Javaからプロセス起動で実行するPython と文字列の受け渡し - Oboe吹きプログラマの…

Python 標準出力→Java受け取り

先日書いた中の Python 標準出力→Java受け取りは、 Javaからプロセス起動で実行するPython と文字列の受け渡し - Oboe吹きプログラマの黙示録 リストを長い正規表現で解析する方法でこれでは、ちょっと効率が悪そうで 汚いコードである。 b' ' などとPyt…

InputStream transferTo

先日の oboe2uran.hatenablog.comJava9 以上なら、 java.io.InputStream.transferTo(OutputStream out) throws IOException 使えば、 List<String> list; // list に送信するものを入れてから try(ByteArrayOutputStream out = new ByteArrayOutputStream()){ Script</string>…

Javaからプロセス起動で実行するPython と文字列の受け渡し

Javaプログラムとプロセス起動したPython 間で標準入出力を介して文字列を受け渡しをする。 Python は内部処理の文字コードが Unicode のせいか、 受け渡しの文字列は Unicode でなければ、双方で受け取れない。Pythonスクリプトの用意 標準入出力実行は、メ…

Java8 で、Matcher の Stream

先日の Unicode 文字列ーUTF-8変換をする処理メソッドを整理 これを Java 8 でも動くようにするには、 2年前に書いた、MatchResult の Stream を使うしかないであろう。 oboe2uran.hatenablog.com↑の MatcherStream を使用して、先日の Unicodes の public …

Unicode 文字列ーUTF-8変換をする処理メソッドを整理する。(Javaで)

過去、Unicode 文字列を変換する処理を書いたが、https://github.com/yipuran/yipuran-core/blob/master/src/main/java/org/yipuran/util/StringUtils.javahttps://github.com/yipuran/yipuran-core/blob/master/src/main/java/org/yipuran/util/SJutil.java…

画像バイナリデータからMIMEタイプを判定する。

Java で、画像バイナリデータ byte[] の状態のデータから image/jpeg などのタイプを調べます。 画像 File であれば、java.nio.file.Files の probeContentType(Path) を使えば良いのですが、 バイナリデータの状態から検査したい場合が稀にあるでしょう。デ…

AjaxFileDropBehavior 利用をラムダで書くようにする

先日の Python 画像加工結果→Javaで受信→WebPage表示 - Oboe吹きプログラマの黙示録 僅かだがスマートに記述するために、Throwable で Serializable な BiConsumer を用意して AjaxFileDropBehavior の継承を用意しました。 Throwable で Serializable な Bi…

Python 画像加工結果→Javaで受信→WebPage表示

画像URL → Python 処理に渡す。。。 → Python PILLOW で画像加工 → 結果をPython 実行の標準出力で出力 → この Python 処理を Java のプロセス起動で実行して 結果標準出力をストリームで受け取る。 → Webページで表示 という流れのシナリオで一切画像ファイ…

Python標準入力と Java

改行で標準入力→リストで取得の Python スクリプト、改行2回で標準入力が完了するスクリプト stdio.py # -*- coding: UTF-8 -*- import sys class Stdio: # 標準入力 @staticmethod def input(): inlist = [] try: while True: i = input('') if i=='':brea…

Java→Python Pdfkit実行→PDF受け取る

Wicket で、Python Pdfkit実行してPDFダウンロードさせる方法を考えました。 このメリットは、 ・作成するPDFが、PdfkitがHTMLからPDFへの変換であることから WicketでブラウザにWeb Page 表示してPDF作成イメージを確認できること。 ・HTMLでPD…

Google gson MalformedJsonException のパターン

Google gson で JSON読込みした時に発生する MalformedJsonException のパターンとは、以下の表にまとめることができる。 エラーのパターンは、これ以外あるかもしれないが、だいたいこんなところ。 例外のメッセージ エラーの意味 JSONエラーの例 Untermina…

Chart.js Time グラフの為のデータJSONを作成するクラス

Chart.js https://www.chartjs.org/ X軸=時刻 の線グラフを描画するためのJSONデータ作成する Java クラスを作成して、AJAX通信によるJSONデータ → Chart.js グラフ描画をデザインを除いた 可変の JSONデータ生成だけでも汎用的にならないかと考えました。…

java.lang.reflect.Type インスタンスを生成する方法

総称型orクラスを知りたい時、知らせたい時に java.lang.reflect.Type を伝える為の Type インスタンスを生成する方法 Google guice を使用している前提で2通りある。com.google.common.reflect.TypeToken import com.google.common.reflect.TypeToken; Typ…

MalformedException の捕捉処理を書き易くする。

Google gson の fromJson や JsonParser で発生する JSON書式エラー、MalformedException の捕捉を するとして、try~ctach 文の中に書いてもいいのですが、 1つのロジックで何回もJSON読込みの必要な処理があって、毎回 catch文の中で MalformedException …

JSONの書式チェック

Google gson の fromJson や JsonParser 生成は、次のようなJSONであると { "A": "12", } com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected name at line 3 column 2 path $.A と例外を発生してくれます。JSO…

配列型に対するmybatis の TypeHandler よく使いそうなものを作った

先日書いた int[] → ArrayTypeHandler - Oboe吹きプログラマの黙示録 に刺激されて、String[ ] , LocalDate[ ] , LocalDateTime[ ] , double[ ] とのマッピング もあるべきと思い、 GitHub - yipuran/yipuran-mybatis: mybatis used application の方で公開…

int[] → ArrayTypeHandler

SQLクエリの結果から、int [ ]で受け取るための mybatis ArrayTypeHandler先日、PostgreSQL 再帰クエリの結果から、INTEGER型 配列を Integer[] で取得するものを 書きました。 oboe2uran.hatenablog.comInteger [ ] ではなくて、やはり、int [ ] で取得した…

PostgreSQL の再帰SQL→Array → mybatis で取得

先日の例、 PostgreSQL の再帰SQL で要素の連結結果を求める。 - Oboe吹きプログラマの黙示録 テーブル名:division id parent_id name 1 null A 2 1 B 3 2 C 4 2 D ここから、連結文字列の結果、id と name "1" "1,2" "1,2,3" "1,2,4""A" "A,B" "A,B,C" "A,…

Generic JsonDeserializer

先日、Gsonデシリアライザ ラムダで。 - Oboe吹きプログラマの黙示録 や、 Gsonデシリアライザ、汎用化? - Oboe吹きプログラマの黙示録 を書きましたが、 再考して、以下に至りました。 JsonDeserializer実装生成で目標のインスタンスの Supplier と JsonDe…

テスト用に作ったファイル読み込み

Java テスト用に作ったファイル読込み 以下のような static メソッドを書いて使い回してました。 public static String readText(String path) throws IOException{ try(InputStream in = new FileInputStream(path); ByteArrayOutputStream out = new ByteA…

PBKDF2ではなくSHA256で CryptoJS のAES暗合復号

Java と JavaScript 間の AES暗合 - Oboe吹きプログラマの黙示録 に書いたように、PBKDF2WithHmacSHA1 で実行する AES暗合も一計ですが、 単純に、SHA-256 ハッシュ&初期ベクトルを単純にハッシュ値から持ってくる方法も、 CryptoJS で書こうと思えば書けま…

Java と JavaScript 間の AES暗合

Java と JavaScript 言語間の暗合文や鍵の渡し方はいろんな方法あるので ここでは書きません。 相互での暗合復号の実際の実行を書いてます。 CBCモードで、PBKDF2WithHmacSHA1 です。 Java側JavaScript は、crypto-js を使います。 https://code.google.com/…

Java と Python の AES暗合復号

実運用を考えて、書き直しました。 AES のモードは、CBC ,パディングは、PKCS5Padding Java側 import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Arrays; import …

Gsonデシリアライザ、汎用化?

久々に Google gson のデシリアライザを書いていて思いました。。 文字列のリスト、 import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.google.gson.JsonArray; import com.google…

GSON フィールド除外アノテーションを考えた。

Google gson には、@Expose というアノテーションを付与したフィールドだけを JSONシリアライズ対象に する機能があります。 でも逆に、特殊なアノテーションを付与してそのフィールドをシリアライズ対象外にする。 という機能がありません。 ほとんどが、ex…