mike-neckのブログ

JavaかJavaFXかJavaEE(なんかJava8が多め)

Javaでの和暦の扱いについて

Date and Time APIでの和暦の扱いをちゃんと調べていなかったので、調べた。 なお、以下で用いるコードにおいては次のフォーマッタおよび、タイムゾーンを使った。 final ZoneId tokyo = ZoneId.of("Asia/Tokyo"); final DateTimeFormatter formatter = new …

JetBrains系IDEと各種ITSとGitを連携してスマートに作業する

JetBrainsユーザーグループにて「IntelliJとYouTrack」というタイトルにて発表してきましたが、グダグダな発表をしたのでちゃんとまとめた記事を書きます。 jbugj.connpass.com 要点 JetBrains系IDEでは、標準に付属しているツールを用いることで、スマート…

testcontainersで使い捨てのデータベースコンテナを用意してSpring Bootアプリケーションのテストをおこなう

テストを流したらデータベースを起動していなくて、テストが全部コケさせることがよくあり、悩んでましたが、 @making さんに testcontainers を教えてもらったので試してみました(経緯は若干違う)。 github.com testcontainersはテスト時にのみ使う使い捨て…

Speedment ORMのメモ

Stream APIを使ったORM。 概要 MavenプラグインでDBスキーマからモデルのクラス/レポジトリー(に該当する)クラスを吐き出す Applicatoinクラスからレポジトリー(に該当する)クラスを取り出す レポジトリーにStream APIを通じてクエリーを投げる インストール…

Kotlin ts2kt の使い方メモ

KotlinがDefinitelyTypedに対応したと聞いたので早速試してみた 概要 ちょっと試しただけのメモ TypeScriptの型定義情報をKotlinの型定義情報に変換するKotlin公式のツール d.tsが型の定義を頑張ってくれていれば、Kotlinで楽できる ファイル名をそのまま出…

ArtifactoryのDockerイメージとgradleでのartifactのデプロイのメモ

少々こまったことがあったので、Artifactoryを調べたので、そのメモ。なお、数年前も同じことを調べたという記憶があるのだが、メモを残していなかったのであらたに調べることになった… 書かれていること ArtifactoryのイメージをビルドするDockerfile プロ…

eclipseがメインのIDEに指定されているプロジェクトでIntelliJを使って開発する

職場のプロジェクトがメインで指定するIDEはeclipseですが、IntelliJ IDEAが大好きなのでIntelliJ IDEAで仕事しています。 するとどうしても問題が出てきます。 importの順番が異なるために無駄なdiffが出てくる コードスタイルが異なるのでレビューしづらい…

sdkmanでJavaのインストール

結構前のことですが、 sdkman でJavaをインストールできるようになったとのことで、Javaの更新をsdkmanでやるようにしてみた。 sdk list java まず、どのバージョンのJavaが利用できるのか確認してみます。 $ sdk list java ===============================…

lombokで生成されたgetterにアノテーションを付与する方法と問題

lombokの既存バグにハマったので、その一時的な回避策のメモ。 なお、この情報は以下の環境でおこなった。 Java - 1.8.0_102 lombok - 1.16.12 なお、issueはこちら。 github.com lombokで生成されるgetter(あるいはsetter)にアノテーションを付与する方法 G…

JUnit5入門(6) - JUnit5とGuiceでDIが必要なオブジェクトを構築してテストする

前回の続き これまでの内容をまとめて、DIが必要なオブジェクトをテストするやり方(のひとつ)をやってみる。DIにはGuiceを用いる。 環境 JDK|1.8.0_102 junit-jupiter-api|5.0.0-M3 junit-platform-engine|1.0.0-M3 guice|4.1.0 テスト対象のインターフェー…

JUnit入門(5) - JUnit5の拡張(Extension)

前回の続き JUnitの Extension インターフェース JUnit4のRunnerと同様、JUnit5も拡張をすることができる。 JUnit5が提供している 拡張インターフェース(Extension を継承したインターフェース)は次のとおり。 ContainerExecutionCondition メソッド - evalu…

JUnit入門(4) - TestFactoryとDynamicTest - JUnit5におけるパラメタライズドテスト実現法

前回の続き @TestFactory @TestFactory はJUnit4における Theories ランナーを用いたテストパラメーターをいろいろと組み合わせるテストを実現するために用いる。 @TestFactory を付与したメソッドは次のいずれかを返すメソッドを実装する必要がある。 Itera…

JUnit5入門(3) - アノテーション

前回の続き JUnit4同様、JUnit5ではテストのメタ情報や、実行制御はアノテーションを介して行われる。今回はそのアノテーションをまとめる。 JUnit5が提供するアノテーション一覧 アノテーション 役割 説明 @Test メタ情報 付与されたメソッドがテストである…

JUnit5入門(2) - アサーション

前回 の続き 今回は値の比較、アサーションについて。 JUnit5が提供するアサーション JUnit5はJUnit4とほぼ同等のAssertion機能を提供している。また、より高度なAssertionを求める場合は、サードパーティライブラリーの利用を勧めている。 JUnit5のAssertio…

How to run test class whose name doesn't end with Test in JUnit5 with Gradle.

JUnit5 publishes junit-platform-gradle-plugin. With it you can run JUnit5 tests with gradle. But if you don't give Test at the end of the test class name, this plugin ignores to run it. If you want to run a test classes whose name don't en…

JUnit5入門(1) - テストクラスの作成とテストの実行

年末にかけてJUnit5(junit-jupiter)をいじったのでまとめ。 使い方的な話はQiitaにある記事のほうが詳しいかもしれない… qiita.com qiita.com qiita.com qiita.com JUnit5ライブラリーの導入 テストコンパイルスコープにjunit-jupiter-api、テストランタイム…

DateTimeFormatterのパターンとLocale

Junit5の ParameterResolver によってテストメソッドのパラメーターに渡せる日付文字列の形式をユーザーが自由に決められるようにするために、 DateTimeFormatter を使っていた際に、どうしても月のパターン MMM によって月が名前(例えば1月なら Jan)になら…

Kotlinの末尾再帰でFizzBuzz(Kotlin Advent Calendar 2016) #ktac2016

この記事はKotlin Advent Calendar2016の6日目の記事です。 昨日は RyotaMurohoshiさんの 「【!ってなんだ】KotlinとJava、nullとPlatformType【NullableにNotNull」 でした。 明日は kikuchy さんの 「」 です。 末尾再帰でFizzBuzz この記事ではKotlinの末…

Docker復習

歳なので覚えるのが遅くなったというよりも忘れるのが早くなった感じらしく、Dockerのことをすっかり忘れてたので、復習した。Dockerの使い方レベルなので自分が得するだけのエントリー。 dockerコンテナに環境変数を渡す -e VARIABLE=VALUE で渡す。 docker…

Freeモナドを使ってIOアクションをモッキングする的な

Freeモナドがすごい的な話がおよそ4〜5年前くらいに流行ってたのだが、その頃はHaskellなど触ってなかった僕には関係のない話でした。 Haskellを触ってて、IOアクションのあるようなプログラムをテスト的に動かしてみようとすると途端に困るわけです。 例え…

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

表題のとおりです。 www.java-users.jp 以下、参加したセッションの独断と偏見によるレポートです。 Prepare for Java 9 : Java9に備えよう Java9先取りのセッションです。 Jigsaw Kullar 非互換情報 ファイル/ディレクトリ構造が変わる話 プロパティファイ…

Kotlinのリフレクション(KClass)を調べた

KuickCheckを作った時にKotlinのリフレクションを一通り触ったが、完全に忘れてしまったのであらためてメモ。 ここではクラスを表すKClassとそのプロパティ、およびそれらが適用できるクラスをまとめてある。 Kotlinコンパイラーが生成するクラス KClassのプ…

KotlinでJSR303(Bean Validation)を使うときの注意

少しハマったのでメモ。 KotlinでBean Validationを使った時に、validationされないので、Stackoverflowなどを読んでいたら、アノテーションの書き方を工夫する旨あった。 まずはvalidationされないパターン data class Person ( @NotEmpty val name: String…

Kotlin用のjunit-quickcheck風なテスティングフレームワークを作った

表記のとおりです。 テストデータをランダムに自動生成して複数回実行させるというライブラリーです。調べてみたところ、Kotlin用のものがないようなので、作ってみました。名前はKuickCheckという名前にしていますが、今後どうなるかわかりません。あと、僕…

Kotlinのコンパイラーが吐き出すクラスまとめ

リフレクションをいろいろいじっていて気になったので中途半端にまとめてみた Kotlin クラスのメモ Kotlinをコンパイルすると生成されるクラス クラス/インターフェース/enum/オブジェクト1つにつき1つのクラス パッケージに所属する関数/プロパティ -> Ktク…

OpenCV/Java 環境構築メモ

JavaでOpenCVをごにょごにょやるのに、少し手間取ったのでメモ。 インストールする環境などは次のとおり。 Mac 10.11.5 インストールにはbrewを使う OpenCV 3.1.0 IntelliJ IDEA 2016.1.2 Java8u92 OpenCVのインストール (1) pythonをbrewでインストール $ b…

Javaの機械学習ライブラリーでFizzBuzzしてみた

FizzBuzzをするのにTensorFlowというネタツイートがあったので、「機械学習 FizzBuzz」で検索したらすでにいくつかあったので、真似してみたくなった。ちなみに機械学習のことは全然わかってません。 qiita.com blog.amedama.jp IT会社面接官:「数字を列挙…

Gradle2.11の新機能を試してみた(1)

Gradle2.11でJavaソフトウェアモデルに対してJUnitによるテストがサポートされたので試してみました。 基本 ディレクトリー構成は以下のとおりです。 root └─src ├─data │ └─java ├─data.test │ └─java ├─exceptions │ └─java └─functions └─java 使用するJa…

Gradle2.11リリースノート意訳(また途中)

gradleのバージョン2.11がとっくの昔に出ていたので、リリースノートを意訳しておきました。 原文はこちら Gradle2.11ではソフトウェアモデルとIDE連携およびコンティニュアスビルドを強化しています。 ソフトウェアモデル改善はGradleの現在の目標となって…

Gradle2.10のリリースノート意訳

久々にパソコンの前に座ったので、リハビリ代わりに先月にリリースされたGradle2.10のリリースノート意訳というか、中途半端に翻訳した。分量が多かったので訳してないところがありますが、引き続き入院してるので、翻訳の続きはありません。 オリジナル(英…