Java

Java Process の実行ラッパーをラムダで

昔、java.lang.Runtime から Runtime.getRuntime().exec で Process を作ってスクリプトを実行するラッパーを書いていた。 Process p = Runtime.getRuntime().exec(this.arrange()); _ProcessStreamReader p_stderr = new _ProcessStreamReader(p.getErrorSt…

文字列のHEXダンプを作る

Apache の commons io の HEXダンプ、 org.apache.commons.io.HexDump の dump(byte[] data, long offset, OutputStream stream, int index) 結果は、左端に offset のサイズ目盛があって良いのだけれど、 以下のように少し横幅が長く、HEXの表示部と文字列…

Java10 の Optional orElseThrowメソッド

元々、Java8 以降で、Optional の get() を使うことは、Optional の目的、性質からしてあまりなかった。 Java10 になっても、get() は、Deprecated アノテーションはついてない。 https://bugs.openjdk.java.net/browse/JDK-8160606 と、OpenJDK でこの先、D…

getResource から、配下の全てのファイルの操作

絶対の例外発生しないけど例外 throwable 宣言にメソッドを使用するのにわざわざ、try~catch ハンドリングを 書きたくなくて用意した、、、Throwable~ 関数型インターフェース Throwable~ 関数型インターフェースを使う - Oboe吹きプログラマの黙示録 と…

Properties 読込みを考え直す。

Java の Properties 、properties ファイル読込みは古くから存在して過去、 設定ファイル地獄で皆、苦しんだ歴史がある。そして、convention over configuration が提唱され それでも日本の多くのシステム屋は、うまくバランスを持ってきたとは言い難い。。 …

同率順位発生でスキップさせた振り方

TV新聞紙面で見るスポーツの結果、Golf など、同率順位を並べた後の順位は、 名前 point 順位 A 100 1 B 100 1 C 80 3 で表されることが多いです。 名前 point 順位 A 100 1 B 100 1 C 80 2 と、純粋にシーケンシャルに順位が振られているのを、スポ…

Duke ちゃんに叱られる

Java 界隈で やれ、「ラムダ式が。。」 やれ、「JEP 286 Local-Variable Type Inference を称賛する人と違和感の人がどうこうの。。。」 やれ、「Java 11 になれば、jdk.incubator.http として登場した JEP 321: HTTP Client はインキュベータでなくなる??…

Pattern Match 結果の Stream

Java 9 からは、java.util.regex.Matcher に、待望の public Stream<MatchResult> results() が追加されたが、 Java8 のままで同様の Match 結果の Streamを取得するのに、 去年、以下をここに書いた oboe2uran.hatenablog.comそして、 https://github.com/yipuran/yipura</matchresult>…

Throwable~ 関数型インターフェースを使う

Java のコードを書いてると、時々 例外発生 throws 節宣言のメソッド呼び出しを 書いていると煩わしくなります。 日付書式解析のParse の Exception や、以下 など。煩わしいと思う時があります。 URL url ; // URL セット URI uri = null; try{ uri = url.t…

JSON配列書式の読込みを Gson と Python で比較

これを書いたので、では Python と比較。。。 oboe2uran.hatenablog.com 題材: [ "a" , , "c" ] というテキストの解釈Python の方、 [ "a" , "b" , "c" ] というテキストであれば、、 import jsonprint(json.loads('[ "a", "b" ,"c" ]'))は、 ['a', 'b', 'c…

JSON 配列書式のテキストデータをリストに変換するいろんな方法

発端は JSON の値が配列の場合、'[ ] ' の書式の文字列データからリストを導き出すのに、 そもそも原始的にはどうなんだろうと思ったことでした。 かなり昔、Java のバージョンも小さい 10年以上前であれば、カンマ区切りで 文字列 String の split メソッド…

Illegal reflective access の警告を抑制するメソッド

先日書いた、 oboe2uran.hatenablog.comこれの対応として、以前から作成しているフレームワークというより寄せ集めの GitHub - yipuran/yipuran-core: Java application framework の中に入れることにした。 import org.yipuran.util.ReflectIllegalaccess; …

Java で操作するUTF-8エンコードのCSVに BOMを付ける。

CSV文字コードは、「SJISで作成」と、たいていのシステム、プロジェクトは今までそうしてきたであろう。 しかし、UTF-8でも、BOM付きにすれば、Microsoft Excel でも開いて文字化けしないで済む。 昔と違ってメジャーのテキストエディタは、U…

MongoDB Java で正規表現の検索

MongoDB の正規表現の検索は、MongoDB のコマンドでは、’/' で囲んだ正規表現で書く コレクションが以下のような場合、 { "info":{ name: "y-task13md" }, "data":[] }db.getCollection('xxx').find({ "info.name" : /^y\-t.+d$/ })これを、Java で、mongodb…

guice が Java9 以降で Illegal reflective access の警告を吐く

Java9 or 10 で、Google guice 使用の実行で、 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 to method java.lang.ClassLoader.defineClas…

Python でのカレンダー週番号

Python で年の週、を取得するのは、datetime の isocalendar 3 要素のタプル (ISO 年、ISO 週番号、ISO 曜日) が返ってきます。 import datetimetoday = datetime.datetime.today() weekNumber = today.isocalendar()[1] print(weekNumber)しかし、月曜始ま…

年の何週目は、WeekFields の weekOfWeekBasedYear で、

今更ではあるが、Java で、年初(1月1日)から何週目かを求める機会が今まであまりなくて メモ。 注意すべきは、この週の数え方で、週は、日曜が週の開始であることです。 でも、Java の DayOfWeek 列挙型は、 1 =(月曜日) ~ 7 =(日曜日) です。 LocalDate …

Jython 使ってJavaからPython (1)

なぜか Jython の情報が少ない。Python ってそんなに他言語と一線を画すような拘りがあるのだろうか? Python は Pythonの良い所を利用して、Java はJavaの長所を活かして相互補助して使おうと考えないのだろうか?Java → Python 実行で、パラメータ渡し、結…

JavaからPythonをcall 試したら、、

Java から Python を call するのに、Process 作ってシェル実行でなく、Jython を使うこと検討する。 シェル実行だと結果が欲しい時に実行結果の標準出力や標準エラー出力ハンドリングをしなきゃならないからだ。 Maven で、以下より jython-standalone JAR …

SlackAPI 問い合わせを Java HTTPS通信して実行する

証明書認証をスキップするような空証明書での HTTPS 通信を Java で書いて、 サンプルを試す先=相手側は、なかなか見つからないものです。 Slack API というのが、HTTPS でした。これなら比較的自由に試せます。。 まずは、常套手段である誰もが以下のよう…

Java8 system epoc time → LocalDateTime

今更だけど、長くてわすれるので、メモです long milliseconds = System.currentTimeMillis(); LocalDateTime time = Instant.ofEpochMilli(milliseconds).atZone(ZoneId.systemDefault()).toLocalDateTime(); long seconds; LocalDateTime time = Instant.o…

GenericBuilder の強化

Java データエンティティなど、データを表現するインスタンス生成する時に威力を発揮する ものを作っていた。。これを強化しようと思う。 (自分はエンティティという単語、DBに限定してしまうような表現が嫌い) https://github.com/yipuran/yipuran-core…

ElasticSearch JavaAPI は log4j2 使用だった。。

ElasticSearch JavaAPI を使用としたら実行時、Log4J の後継、log4j2 が使われていて ERROR StatusLogger No log4j2 configuration file found.log4j2.xml として最低限以下を記述して用意すればで、とりあえずこのメッセージは治まりをみせるが <Configuration> </Configuration> logback+…

JSON のキーを指定して対象の値を取得

JSON → 任意のクラスオブジェクトに変換させることなく、 JSON のキーを指定して対象の値、valueを取得するものを汎用的なメソッドを用意しようと考えると 先日紹介した oboe2uran.hatenablog.com を超える機能のメソッドを作るのは難しい。 紹介した GitHub…

2つのJSONの差をラムダで処理する

Google gson の JsonParserを使用して 2つのJSONの差をラムダで処理するもの。 import java.io.Reader; import java.io.StringReader; import java.util.HashMap; import java.util.Map; import java.util.function.BiConsumer; import com.google.gson.Jso…

得体の知れない不明なJSON を GSON で解析する

キー名、値の型、ツリー構造が不明(定義を知らされてない)JSON を Google GSON でとりあえず認識させる。 このような要件定義はあり得ないけど、とにかく読み込ませてできる解析をする。 gson の JsonParser から取得する JsonElement を recursively なロ…

GSON の JsonArray を Stream で処理する

JsonArray は、Iterable実装だから、spliterator() より、StreamSupport で Stream 処理できる。json を読み込ませて JsonElement je = new JsonParser().parse(reader); if (je.isJsonArray()){ JsonArray jary = je.getAsJsonArray(); StreamSupport.strea…

メモ: Mapのソートを簡単に書く

Memo Map<String, Object> map; map.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEach(e->{ // TODO e.getKey() e.getValue() }); List<Map.Entry<String, Object>> list = map.entrySet().stream() .sorted(Map.Entry.comparingByValue()).collect(Collectors.toList());</map.entry<string,></string,>

いまいちだった Json-Path を再興

昔、JSON が世の中に浸透し始めたころ、かつてXMLを読み込むの XPATH なる読出し 方法があった。JSON を読み込むために XPATH のようなPath記述ルールで読むものが登場し Google Code Archive に入ってた。 結構、便利な筈で git-hub で公開されており Ma…

Chart.js で折れ線グラフの交点(intersect)をToolTip 表示(double値編)

標準でありそうで存在しない。だから線を描画する2本の線、プロットする2点(X,Y座標値)を 2本線が交差するしないを Chart.js で描画するプロットリスト ~2つのリストの特殊な順列組合せで交点を見つけて描画する。対象グラフは前回投稿のようなグ…