Java

再帰メソッドとラムダ式

再帰呼出しをするように関数型インターフェースを書くまでもない、 単にメソッド宣言を省略するだけの目的で考える。 再帰と言っても、実際の仕事の機会では、フィボナッチ数列を求めるような機会よりも 処理が遅くてもいい探索目的の機会の方が多い。例題(…

LazyModalPanel

先日、Wicket で、処理中をModalWindow で表現するを書いたのですが、、 oboe2uran.hatenablog.com処理が終わった後に、正常終了か異常終了かのメッセージを表示したい というのを対応しようと書き直しました。 というのを処理完了時に出すようにします。Wic…

Apache POI 入力規則リストの注意

先日、以下を書いたが、この中の createExplicitListConstraint は注意が必要だ。 Apache POI 入力規則リストの生成 - Oboe吹きプログラマの黙示録入力規則をシート参照でなく任意のリストで指定する createExplicitListConstraint は、 どうやら、引数で指…

リストの逆順

今更、Javaのおさらいです。 List<String> list = Arrays.asList("A", "B", "C", "D", "E"); java.util.Collections の reverse をすれば簡単ですが元のリスト自体を逆順にしてしまいます。 そうじゃなくて、「リストの逆順の処理を短く記述したい」 逆順のリスト生</string>…

Apache POI 入力規則リストの生成

よく見かけるサンプルを基に書くと、以下のように固定リストを指定した書き方がある。 try(Workbook book = new XSSFWorkbook(); OutputStream out = new FileOutputStream("a.xlsx")){ XSSFSheet sheet = (XSSFSheet)book.createSheet("シート1"); IntStre…

Wicket Page で getResource と Test class での getResource

Webプロジェクト src/main/resources に置いたファイルを WebPage でも、 src/test/java で書くテストクラスでも読込みたい。個別のクラスローダーで読みたく ClassLoader.getSystemClassLoader() を使ってしまうと 読めないので、Wicket の WebApplication …

Wicket が、8.2.0 になった!

Wicket 8.2.0 がリリースされた!ただし、com.googlecode.wicket-jquery-ui は、8.1.0 のままだ。wicket-guice も、最新の guice 4.2.2 に依存になっているので注意guice 4.2.2 は、Java 11 対応のビルドのことで、diff が見当たらない。

メソッド参照の否定形

先日、Java11 の String の strip と isBlank が便利で、Wicket を使う時に 楽になることを書きました。 oboe2uran.hatenablog.comでもこのラムダの記述をメソッド参照で書けないかと再興しました。元ソース final TextField<String> itemField = new TextField<>("i</string>…

ZIP の脆弱性??Zip Slipディレクトリトラバーサル脆弱性

私のプロジェクトにも、Apache commons-compress を使ってるせいなのか、 Git-Hub から通知が来てしまいました。→ yipuran-compress We found a potential security vulnerability in one of your dependencies. Only the owner of this repository can see …

Java11 String の strip と Wicket の TextField 入力値の取得

Java11 になって、地味に嬉しいのが、java.lang.String の strip() メソッドでしょう。Java10 までは、Wicket の TextField<String> の入力値の取得も、 できるだけ Optional を使って書いても、結局、前後に入力された全角空白を取り除く処理を 書かないとなりませ</string>…

Java11 からの HttpClient

先月、OpenJDK 11 もリリースされて、Java9 でインキュベータとして出てた HttpClient が、 java.net.http パッケージに入った。 去年、Java9 の HttpClient を試す - Oboe吹きプログラマの黙示録 を書いたのだが、 リクエストの送信も、Java11 から、、Http…

Java祝日計算の対応

昨日、やっと2019年に追加される祝日が、政府内閣から発表、 祝日の間に挟まれて休日になる「国民の休日」が、敬老の日と秋分の日で、数年に1回しか発生しない パターンから、2019年だけのプログラム泣かせになってしまった。 ちなみに、秋分の日は…

jsTree で下のツリー階層を開く時にもAJAX通信で読み込む方法

jsTree配布デモを見ても、ツリー全体JSONをAJAXで読み込む方法はあるが、 静的に書いたJSON から下の階層を開く時や、AJAX読込み後さらに下の階層を読み込む方法が、 なかなか解らなかった。massload とかプラグインあるみたいだが、どうもできない。。。 ク…

jsTree JSON データの変換

ツリービューの情報を管理するのに、ノードの親子関係の処理を新たにコーディングするのは、どんな言語であれ 労力が必要です。 できれば、画面でツリーの描画操作の結果をそのまま管理するのが楽です。 せっかく JSON というオブジェクトで表現するのですか…

try~with~resources リソース解放されない

今更ではあるが、try~with~resources 文が便利で、ついうっかりこう書いてしまう。 File file = ....; try(PrintWriter pw = new PrintWriter(new BufferedWriter( new OutputStreamWriter( new FileOutputStream(file, file.exists()), "MS932")))){ } これ…

commons pool を AOP で処理する

Apache commons pool の利用を、Google guice AOP 使用 で書いてみました。 仕様で重要な点は、 ・POOL を定義して参照する為の Key をメソッドアノテーションで POOL から取得Object が return 値になるようにする ・このメソッドアノテーションを付けるメ…

MethodInterceptor を interface で書く

昨日書いた投稿に触発されて、AOPについて考える。 現在の yipuran-mybatis の原型を書いたのは 2010年でまだ、Java6 だった。 DB接続コネクションとトランザクションを AOP でまとめたのが yipuran-mybatis であったが、 使用する時に、IBatisDAO クラス…

commons-pool 更新されてた。

Apache の commons-pool 久々に目に留めたのですが、 2018-6-14 に、Maven セントラルリポジトリに、UPされてた。 MariaDB で発生していたバグ、 [POOL-336] GenericObjectPool's borrowObject lock if create() fails with Error - ASF JIRA など、対応され…

guice インターセプタの Matchers.annotatedWith

久々に、 Google guice でコードを書いていて、うっかりしていることに気がついた。インターセプタの Matchers.annotatedWith で、@Named に対する 指定をする時、 com.google.inject.name.Names の named メソッドを使うのだが、 インターセプタではなく、…

Jython 実行時、Cannot import site module and ...

Jython 実行時、以下のエラー ImportError: Cannot import site module and its dependencies: No module named site Determine if the following attributes are correct: * sys.path: ['C:\\Users\\xxxxx\\.m2\\repository\\org\\python\\jython\\2.7.0\\L…

Java で ini ファイルを読み込む

ini ファイル形式、”[ ]" で括ったセクションと呼ばれるカテゴリ毎の key と value を書いていくもの。 一般的には、セクションは必須だと思うが、次のルールで Java で読み込む。・行区切りのテキストで、文字コードはデフォルトで UTF-8 で読込み、UTF-8以…

キー入力プログラム

昔、Java でキー入力するのに、こんなコードを書いた。。。 public final static String getKeyin(String prompt) throws IOException{ int iCount; String rtn = ""; char cStr[] = new char[256]; InputStream inputStream=System.in; System.out.print(pr…

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>…