Java

ZIP 圧縮と展開

先日、tar and gzip 圧縮・展開を書いたので、ZIP圧縮・展開です。これは Apache commons-compress を必要とすることなく 標準ライブラリと、Throwable な Consumerがあれば綺麗に書けます。→ ラムダ式の例外処理を綺麗にする - Oboe吹きプログラマの黙示録…

Java9 module-info 未対応 JAR の Maven 解決方法

先日、初めてJava9 Jigsaw に触れて四苦八苦したが、、、 Java9 Jigsaw モジュール参照側は結局すべてモジュールを引っ張れないとならない?! - Oboe吹きプログラマの黙示録 Java9 Jigsaw モジュール使用プログラムの実行 - Oboe吹きプログラマの黙示録 Jav…

tar and gzip 圧縮・展開を補強

Tar GZIP 圧縮を先日書いた oboe2uran.hatenablog.comこれに、圧縮する時に対象を制限したり展開せずにエントリを抽出するものを追加した。 長いけど以下のとおり。ただし、→ FileCollection - Oboe吹きプログラマの黙示録 が必要 import java.io.BufferedIn…

Java9 の HttpClient を試す

Java9 HttpClient インキュベーターなので、この先どうなるか判らないが、 Apatch HTTPClient を使わなくて済むようになるのか? とりあえず試してみる。 モジュール使用宣言を用意する必要があり、module-info..java を次のように用意する。 module sample{…

Java9 でまとめる方向が見えてきた非同期ストリーム

community.oracle.com 有志が日本語に訳してくれて助かります。 https://orablogs-jp.blogspot.jp/2016/10/reactive-programming-with-jdk-9-flow-api.html

Java9 Jigsaw モジュール参照側は結局すべてモジュールを引っ張れないとならない?!

Java9 Jigsaw モジュール使用プログラムの実行 - Oboe吹きプログラマの黙示録 に書いたが、Elipse Maven で、WTP 書いてコンパイルができないのは、 依存する JAR が export を宣言した module-info を用意したJAR を使ってないからだ。 でも、開発するWebア…

マップの比較、MapDiff

1年近く前に、リストの比較を書いた。 リストの比較、ListDiff - Oboe吹きプログラマの黙示録それなら2つのマップの比較も普遍的なものが書けるであろう。 import java.util.Map; import java.util.function.BiFunction; import java.util.function.Consum…

Java9 Jigsaw モジュール使用プログラムの実行

モジュール参照のJavaプログラムを実行するにはモジュール exportしている JARの置かれたパスを指定して 読み込めるように指定オプションと参照側のクラスを指定しないとならない。 java -m {モジュール検索先PATH} -p {実行するモジュール名}/クラス名{モジ…

Java9 待望の Optionalのメソッド

(1)Java8 まで、Optional の、肯定と否定を、以前書いたように実行していたが、 Optional のifPresent の否定形 - Oboe吹きプログラマの黙示録ifPresentOrElse で書けるようになった。さほど文が短くなるわけではないけど、型を書かなくてもいい。 Option…

Java9 Jigsaw と Maven

Java9 も一般公開リリースされて日数も経ったが、まだ仕事の現場で使用されたというのは聞こえてこない。 Jigsaw モジュール定義で公開したいものだけを module-info.java に書いて、参照側でモジュール定義名を参照限定する機能、 ソース管理と伴に隠蔽化し…

ByteArrayInputStream を使って文字列 String を作る

未知の byte配列のデータ、制御文字が入っているかもしれない byte配列のデータ、 ただし制御文字以外は ASCIIコードだけであるとします。これをそのまま文字列として print してしまうと制御文字が含まれてしまうので制御文字を取り除いた String を求めた…

mybatis logbackが出なくなった場合の対処

mybatis 、logback を使っていて、logback のバージョン上げたのか何かのきっかけ、 依存関係かなにか?指定しているアペンダ悪い?で mybatis のデバッグレベルのログが出なくなってしまった。 実行するSQL文が見れてデバッグに便利だったlogaback.xml …

Optional の filter を連結して使う

Webアプリでのフォーム入力に限らす、Javaでは変数への入力実行の後の妥当性チェックを記述していると どうしてもコードが長くなる。 コードが長いと、タイプミスの確率も上がるし、なにしろ読むのが辛い。長くても何回も if文を書きたくない。java.util.Opt…

グルーピング&ソートの続き

先日のグルーピング&ソートに続いて、、、 グルーピングした時にソートもする。 - Oboe吹きプログラマの黙示録同じく Foo なるクラスオブジェクトのリストで、グルーピングして並べた時に、先頭だけキーをそのままで 他をキーが表示されないように置き換え…

グルーピングした時にソートもする。

グルーピングしながら、ソートした結果リストを求めることを いざコーディングしようとすると、即時、思いつかないのが残念でメモ。Collectors.collectingAndThen を使うのが重要サンプル、以下、文字列の key と value があるクラスオブジェクト public cla…

実行中のクラス名やメソッド名の取得

Thread.currentThread() を参照することで、スレッド名 → Thread.currentThread().getName() クラス名 → Thread.currentThread().getStackTrace()[1].getClassName() メソッド名 → Thread.currentThread().getStackTrace()[1].getMethodName()で取得できるの…

Pattern to Stream

前から常に思っていたのですが、Java8 には、java.util.regex.Pattern に、splitAsStream があるのに、 matchAsStream に相当するマッチしたものをストリームで返すメソッドが提供されてないんだと不満でした。 Java9 なら、Matcher に、 Stream を取得でき…

Stream でListの中で特定要素があるインデックスを求める

完璧=普遍的とは言えないが、、 例) List<String> list = Arrays.asList("a", "b", "c", "d", "e"); int findIndex = IntStream.range(0, list.size()).map(i->list.get(i).equals("c") ? i : -1).max().orElse(-1);;でも、2つ以上マッチする場合は、最後のインデ</string>…

PaxHeaders.X が作られないように圧縮ファイルを作成する

apache commons compress で圧縮ファイル tar.gz を作成していたら、階層が深かったり長すぎるファイル名で圧縮後、解凍を行ったときに、PaxHeaders.X という名のディレクトリエントリ、中に展開したときに不完全に解凍されたファイルのパスが作られてしまっ…

ラムダ式の例外処理を綺麗にする

ラムダ式の中で例外が発生する場合は厄介なもので、何とかしようとするならラップに近い形で自分で用意するしかないみたい。Consumer 、Function 、Predicate これらの例外捕捉処理バージョンを作っておけばかなり便利かもしれません。 import java.io.Seria…

Javaで MACアドレスを抽出する

java.net.NetworkInterface を利用して抽出します。 NetworkInterface から、getHardwareAddress() で、ハードウエアのアドレス=MAC アドレスに相当が見れます。NetworkInterface は、以下の static メソッドがあります。 getByIndex(int index) → 指定イン…

byte[] を IntStream で、、、

byte配列 を IntStream として処理する方法、int配列 ならば、 int[] i = { 25, 26, 27, 28 }; Arrays.stream(i)は、成立するが、 byte[] b = { 25, 26, 27, 28 }; Arrays.stream(b)というのは成立しない。それでも byte配列 を IntStream として処理したい…

ファイルPATH の階層によるコンパレータ

使わないかもしれないけど。 public final class FilePathComparator implements Comparator<File>{ private String splitCharacter = File.separator.equals("\\") ? "\\\\" : "/"; private OrderBy orderby; public enum OrderBy{ ASC(1), DESC(-1); private int</file>…

File.separator の処理

ファイルのPATH Windows でも Linux でも、階層に分けた同じ結果リストを求める。 どういう課題かというと、、、Windows c:\a\b\cLinux /a/b/cとある時、 a a/b a/b/cというリストを改行出力した結果を得たい。 Windows 環境の PATH であろうが、Linux環境で…

Files.lines を使おう。

Java で 有名なフレームワークを使った Webアプリ開発ばかりやっていると、 ファイルシステム上のテキストファイルを1行ずつ読込み処理するというものを作る機会は 案外、少ないもので、どうするんだっけ。。と思いだすまで数十秒かかってしまい自己嫌悪。…

tar and zip の圧縮・展開

昨日書いた FileCollection は、実はこの tar and zip の圧縮・展開 を書く為の伏線です。 oboe2uran.hatenablog.comApache commons compress を使用して https://commons.apache.org/proper/commons-compress/関数型インターフェースで圧縮・展開を用意した…

FileCollection

昨日の続き、、ディレクトリを走査するもの、名前が良くないので、FileCollection と名付け さらに、Predicate を走査ではさみたくなった。 import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; …

ディレクトリツリーを走査を再興

昔、再帰関数で書いたのかもしれないけど、改めて再帰関数、結局これしか思いつかないけど 久々に for 文を書いてみました。(Java8 になってから、本当に for文を書く機会が減った。。。)要の再帰関数は、、 private List<File> parse(File file, List<File> list){ l</file></file>…

Tomcat 8.x + Wicket8 で WebSocket native

Tomcat 8.x + Wicket8 で WebSocket native がなかなかうまくできず苦労していたのだが、 やっと解った。。Tomcat 7.x + Wicket7 では、WebSocketFilter と WicketFilter を web.xml で2つ書いてURL による切り分けをしてたのですが、 Tomcat 8.x + Wick…

XStream null value を出力するケース、再び書き直す。

先日書いた、カスタムのコンバータで、XStream でXML出力する時の NULL の値のタグを書くケース、 HierarchicalStreamWriter を BiConsumer で渡して書かせるなんてやはりセンスないので、、、 oboe2uran.hatenablog.com先日の方法ではなく、NULL で空タグを…