Java

JJUGナイトセミナー「Java SE 10 / JDK10 リリース特集」に行ってきた #jjug

先日、JJUGナイトセミナー「Java SE 10 / JDK10 リリース特集」に行ってきました。簡単に所感をまとめます。 jjug.doorkeeper.jp メモから抜粋。(資料が公開されたら貼っておきます ⇒ 2018/03/29 追加しました) JDKリリースモデル変更について 5/17 Java Day…

Spring の @Validated と Bean Validation の javax.validation.groups.Default と groups について

実際の挙動がイメージとちょっと違うのでメモる。 パターン1 バリデーショングループのインタフェースで javax.validation.groups.Default を継承しないパターン。 interface Group {} @NotNull private String foo; @NotNull(groups = Group.class) private…

JJUG CCC 2017 Fall に行ってきた #jjug_ccc

簡単に所感をまとめます。セッション資料はどこかで公開されるはず。 www.java-users.jp Selenide or Geb? あなたはそのときどちらを使う? Selenide Java製WebDriverラッパー DSLによるjQueryライクなセレクタ IDEの補完を活用できる Ajaxなどの非同期処理…

今さらながら Selenide を使ってみる

今さらながら使ってみたけどいい感じ / Selenide: concise UI tests in Java https://t.co/IDTaRXqICV— kntmr (@knt_mr) 2017年10月5日 簡易なテストページを作って試してみました。 サンプルコード 以下、備忘録。 各ブラウザの WebDriver をダウンロードし…

JJUGナイトセミナー「メッセージングミドルウェア特集」に行ってきた #jjug

先日、JJUGナイトセミナー「メッセージングミドルウェア特集」に行ってきました。簡単に所感をまとめます。 jjug.doorkeeper.jp メモから抜粋。(資料が公開されたら貼っておきます) 実運用して分かった Rabbit MQ の良いところ・気をつけること オープンソー…

java.lang.IllegalArgumentException: Comparison method violates its general contract!

自作の Comparator でリストをソートしたら初めて見るエラーメッセージが。 java.lang.IllegalArgumentException: Comparison method violates its general contract! 再現コード ※Java 1.8.0_92 です。 なかなか再現できずいろいろ試した結果、以下のように…

Spring の Bean Validation でエラーメッセージにフィールド名を埋め込む

Bean Validation と書いたが、メッセージにフィールド名を埋め込むのは、正確には Spring が提供する機能らしい。 サンプルコード アノテーションは以下の通り。 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) @Constraint(validatedBy =…

Oracle 認定資格デジタルバッジ

8月から Oracle 認定資格を保有していることを証明する電子証明書『デジタルバッジ』の提供が開始されたようです。保有資格をオンラインで公開できるものらしい。 education.oracle.com というわけで、Oracle Certified Java Programmer のデジタルバッジを…

Oracle Certified Java Programmer, Gold SE 8 認定資格

1Z0-809-JPN - Java SE 8 Programmer II を受験しました。 結果: 合格 / 正解率 72% (合格ライン: 65%) という訳で『Oracle Certified Java Programmer, Gold SE 8 認定資格』を取得しました。 「中上級者向け資格」とあるので、Java の開発案件を数年程度や…

java.util.function パッケージのインタフェースサマリー (用途別)

公式ドキュメントにインタフェースのサマリーが記載されているが、アルファベット順でイマイチ読み辛いので用途別に並べる。 java.util.function (Java Platform SE 8) Supplier インタフェース インタフェース 説明 抽象メソッド Supplier<T> 結果のサプライヤ</t>…

HttpServletRequest#isRequestedSessionIdFromCookie は初回アクセスのときは false を返す

JSESSIONID とか Cookie とか URL リライティングに関連する備忘録。 ※Servlet API 3.x の話です。 レガシーな Web アプリのちょっとしたリプレース中なんですが、携帯サイトがなくなったり、サイト自体が SSL アクセスされるようになったりしたので、セッシ…

Bean Validation の initialize でアノテーションの属性値をインスタンス変数に保持する件

Bean Validation の isValid は、実装によってスレッドの安全性が保証されるべきって書いてあるけど、initialize でアノテーションのパラメータをインスタンス変数に保持するのはダメなの?という話。 https://t.co/M4uQGmFMuZ— kntmr (@knt_mr) 2017年2月21…

JMockit の部分モックを試す

JMockit の部分モックを試してみる。このあたりの API はバージョンによって変更や削除となることがあるため要注意。ちなみに今回試したバージョンは以下。 JMockit 1.30 JUnit 4.12 gist.github.com メソッドをモック化する場合は、Expectations の中でモッ…

java.io.InputStream を複数のファイル読み込みで共有しない

java.util.zip.ZipOutputStream による ZIP アーカイブについて調べてたら、以下のようなコードを見かけました。(適当に抜粋してます) gist.github.com 単純に、ディレクトリ配下のファイルを commons-io で取得して、ZIP にアーカイブするコードです。これ…

Spring Boot + Spring Batch + Java 6 でバッチを実装した話

今回、Spring Boot + Spring Batch + Java 6 でバッチを実装する機会があったので、もろもろを備忘録としてまとめる。 開発環境 Spring Tool Suite v3.8.3 を使用。Spring Starter Project からプロジェクトを作成する。 Java Version 1.6 Spring Boot 1.4.3…

Apache HttpClient の HttpRequestRetryHandler でリトライをカスタマイズするサンプル

Apache HttpClient の DefaultHttpRequestRetryHandler は ConnectTimeoutException のときはリトライしない - kntmr-blog これの続き。 雑ですが、HttpRequestRetryHandler でリトライをカスタマイズするサンプルを書いてみました。ついでにリトライの間隔…

Apache HttpClient の DefaultHttpRequestRetryHandler は ConnectTimeoutException のときはリトライしない

すべてドキュメントに書かれてるんですが、HttpClient はデフォルトで3回リトライする機能を持っています。しかし、コネクションタイムアウト (ConnectTimeoutException) のときはリトライしません。そのあたりを調べたときのメモ。 ※以下は Apache HttpClie…

JJUG CCC 2016 Fall に行ってきた

JJUG CCC 2016 Fall に行ってきました。簡単に所感をまとめます。 [CCC2016Fall]Be a great engineer! #jjug_ccc #ccc_a1 // Speaker Deck 「こんなセッションを聞きに来てる時点でダメ」とのこと 技術の本質を考える 適材適所で使い分ける 技術には必ずニー…

djUnit を Eclipse 4.5 (mars) と Maven2 で使えるようにする

djUnit 自体、2011年頃から更新されていないため、もはや需要がないかもしれませんが、必要に迫られて調べました。 Eclipse 4.5 (mars) Eclipse 4.x 以降ではプラグインの仕組みが変更されているようで、古い形式のプラグインが動作しません。よって、古い形…

Oracle Java Archive

Java SE (JDK/JRE) アーカイブページ Oracle Java Archive | Oracle Technology Network | Oracle

JMockit で System.currentTimeMillis を Mock 化する

JMockit で java.util.Calendar のメソッドを Mock 化する - kntmr-blog 上記のエントリでは java.util.Calendar#getTimeInMillis を Mock 化してミリ秒を取得する例を挙げましたが、そもそもミリ秒を取得するだけなら java.lang.System#currentTimeMillis …

Oracle Certified Java Programmer, Silver SE 8 認定資格

1Z0-808-JPN - Java SE 8 Programmer I を受験しました。 結果: 合格 / 正解率 92% (合格ライン: 65%) という訳で『Oracle Certified Java Programmer, Silver SE 8 認定資格』を取得しました。 受験対象は「開発初心者向け」とあるので、Java の開発案件を1…

InputStream のカスタム Matcher

なんとなく思い付きで書いた java.io.InputStream のオレオレ Matcher です。あまり使い道はなさそう...。(単純にカスタム Matcher を書いてみたかっただけ) InputStream を byte 配列に読み込んで Arrays.equals で比較します。読み込んだ配列をメンバに保…

JMockit の Mock 化する方法あれこれ

JMockit で java.util.Calendar のメソッドを Mock 化する - kntmr-blog これの続き。 以下、テスト対象クラスとして単純に文字列を連結して返すだけのクラスを用意。 public class FooService { BarService barService; public String execute(String arg) …

JMockit で java.util.Calendar のメソッドを Mock 化する

必要に迫られて調べました。 JMockit 1.26 JUnit 4.12 以下は java.util.Calendar#getTimeInMillis の場合。 final long expected = 1234567890000L; new MockUp<Calendar>() { @Mock public long getTimeInMillis() { return expected; } }; long actual = Calendar.g</calendar>…

プリミティブのラッパーのコンストラクタの代わりに valueOf を使う件

Java9から(?)、java.lang.Integerやその他のプリミティブのラッパーのコンストラクタdeprecatedになる(valueOf使え)のかーhttps://t.co/p67OBUS3n9— Kenji Yoshida (@xuwei_k) July 27, 2016 valueOf でインスタンスを取得することになるわけか。 というわけ…

jad で class ファイルをまとめてデコンパイルする

メモ。 > jad -s java -d sources -r target-folder/**/*.class 階層を維持した状態で sources に出力される。

Javaでズンドコキヨシ

Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた—…

Javaの条件演算子のところをデコンパイルしてみた

以前、こんな感じのメソッドを見ました。(かなり割愛してますが) で、ちょっと調べたことをメモ。 int getValue(String arg) { return arg != null ? 0 : null; } 条件演算子で false のとき null を返すのに、メソッドの戻り値が int で定義されています。 …