mike-neckのブログ

Java or Groovy or Swift or Golang

sdkman で複数のバージョンの Java をディレクトリーごとに切り替える

複数のプロジェクトを行ったり来たりする際に、プロジェクトごとに Java のバージョンが違っている際は、たいてい IntelliJ が覚えていてくれるので、それほど困ってはいないのですが、世の中にはターミナルでなんでもこなす人がいるらしく、プロジェクトご…

asciidoctor-gradle-plugin の使い方

google で「asciidoctor gradle plugin」で検索して表示される結果が古すぎて使い物にならなかったので、書いておくことにした。古いものベースで gradle を書いていたところ、DSL でわからないところがあったため、 github でコードを探したが見つからず混…

github actions で GraalVM でつくったネイティブアプリケーションを GitHub リリースする

date コマンドを使うときにいつもググって調べるくらいの unix 音痴で、 Java の JSR310 ならすぐできるのにと思うことが多いので、そのようなコマンドを作ることにしました。 github.com 機能はまだ作り込んでいなくて、まずはフォーマットを指定できるだけ…

Picocli + Kotlin + graalvm-native-image plugin でネイティブツールを作る

ちょっと Java(Kotlin) でツールでも作ろうと思ったので、勉強のためにチュートリアルやってみた。やってみたという話なので何も深いことは書いてない。

Kotlin 用のテストフレームワークをリリースしました

表題の通り、テストフレームワークをリリースしました。 名前は ktcheck です。 JUnit Platform 上で動かせますが、普通のメインプログラムの中でも使えます。 利用方法 インストール・導入 gradle の場合、次の記述を dependencies ブロックに記述します。 …

Sonatype OSSRH へのリリース方法 Gradle 編 最新版-2020-04-08

久々に Maven Central にリリースしようと思って、 gradle と GnuPG などをいじくったので、そのまとめ。 3行でまとめ GnuPG のバージョン 2 を使う GnuPG は secretKeyRing ファイルがなくなっているので、 signing の指定方法が幾分変わっている。 CI から…

Slack の Bolt フレームワークを Spring Boot + Kotlin で試してみた

Slack の Bolt フレームワークが Java でもリリースされたということなので、早速試してみた Bolt は最先端の Slack アプリをつくるためのフレームワーク。これまでの JavaScript に加えて、今日 Java バージョンもリリースしました! ☕ 早速試してみてくだ…

JUnit Platform Engine の作り方

JUnit Jupiter でのテストクラスの書き方は、世の中にたくさん、このブログよりも SEO に長けているブログの記事が見つかるので、それを参照されるがよい。 そうではなくて、ここでは JUnit Platform Engine の書き方、作り方の手引を書く。 ちなみに、僕は …

MacOSX で DBeaver を起動する

データベースの ERD を整理したいこともあり、よいツールはないものかと探していたところ、 eclipse ベースの DBeaver (読み方は「ディービーバー」だと思う、アイコンがビーバーだから)がよさそうだと思い、使ってみようとしたのだが…

HTTP のテストをおこなう CLI ツールの httpmon をリリースした

HTTP のテスト・モニタリングを行う CLI ツール httpmon の v0.2.0 をリリースしました。とはいっても、 github のリリースページ に実行形式のファイルが置いてあるだけです。 README.md に書いてあるとおりですが、 ターミナルで http のテストをするだけ…

Spring Batch を Spring Boot で作った場合のプロセスの終了コード(exit code) の設定の仕方

Spring Batch で終了コードを設定する方法を調べると、おそらく次の資料に出くわす docs.spring.io terasoluna-batch.github.io ただ、 Spring Boot で Spring Batch を作る場合はこの方法では多分うまくいかない。これらの資料では Spring Batch にある Com…

graalvm-native-image プラグイン 0.3.0 をリリースしました

表題のとおりです。 plugins.gradle.org

ターミナルで画像ファイルをクリップボードにコピーするツール作った

表題にあるようなツールがないかと探してみたのですが、テキストをクリップボードにコピーするツール(pbcopy のラッパー)は見つかるものの、画像ファイルをコピーするツールが見当たらないので作ってみた。 github.com README.md に書いてありますが、コマン…

最近見た残念なコード

最近見た残念なコード。なお、プロダクションで使われているコードなので、意味内容を変えつつ誇張して書いているため、実際はここまでひどくはない。 class App { Map<String, String[]> map; public void add(String protocol, String base, String[] paths) { for (String p</string,>…

中央線Meetupに行ってきた

中央線Meetupという名の かわしまさん の講演会に行ってきた chuoline.connpass.com

メモ github actions で goreleaser を使ってリリースする

作ってるツールをどのように github の release に乗せればよいか調べていたところ、 goreleaser-action なる github actions 用の action があることを知り、 github actions の勉強がてら使い方を調べてみた github.com

SpringBoot 2.3.0.M1 で buildpack による Docker image 生成ができるようになってたので試してみた

表題の通り、簡単に試してみた。 以下、手順。

Windows 用に圧縮された zip ファイルの中身のファイル名一覧を Golang で取得する

Windows 用に圧縮された zip ファイルを解凍しなければいけなくなったのだけど、mac で unzip するとファイル名が ShiftJIS で解凍できずに困ったので調べた。

Windows で GraalVM の native-image を動かす場合の手順

この前教えてもらったりして一通り理解したつもりだったけど忘れてしまって調べ直したという経緯から記録にしておこうと思った。また、 GraalVM で native-image やってみましたと言っている日本語のブログなどが、すべて Mac / Linux が前提で、 Windows で…

今年読んだ本を振り返ってみる

大して本を読んでなかった… もっと雑に本を読みたい…

デフォルトプロファイルでログレベルを debug に設定しないほうがよい話

3 年間勤務した L is B を退職しました。 L is B で最後に組み立てていたプログラムが SpringBoot のアプリケーションでした。そのアプリは WebFlux にしていたため、データの動きが非常にわかりづらく、開発中はデータの流れを追えるように debug ログを出…

Spring の Scheduling Task で柔軟にタスクの実行開始時間を指定する

現在作っているもので、タスクの開始時間を柔軟に行えないか調べていたら、普通に Spring のドキュメントに書いてあり、実験の結果をメモした。 docs.spring.io なお、ここに書いてることは多くのケースでは使わないし普通のスケジューリングで十分だと思っ…

Gradle でテストが落ちても残りのタスクを続ける

例えば、テストの結果の xml を zip ファイルに固めて s3 に保存したい場合などに、テストが落ちてしまうと、後続のタスクも落ちてしまう。このようなタスクを一発で通したい場合のワークアラウンド。

現場でDDD 雑感 #genbadeDDD

現場でDDD という勉強会の第二回があったので参加してきた。 イベント募集のツイートを見たときに既に人数が埋まっていたので、参加できなさそうだなと諦めていたものの、前日に参加できそうなセッションがあったので、参加してきた。当日参加人数を確認した…

kotlintest の Listener の実行順番

わからなかったので、実験した。コードを読んだわけではない。

JAX-RS(Jersey) on ServiceTalk with Spring

2019 年の Java アドベントカレンダーの2日目のエントリーです。この前に書いた ServiceTalk の記事の続きです。今回は ServiceTalk の上で JAX-RS アプリケーションを動かします。 mike-neck.hatenadiary.com github.com

Enumeration を使いやすくする(Iterable にする/Iterator にする)

TL で Enumeration が使いづらいというツイートが流れてたら、鮮やかに解決するツイートも流れてきた。 なるほどなー、これ実際にはそのままダイレクトには書けないですけど、明示的にキャストしてあげれば書けますねfor (String name : (Iterable<String>) request.</string>…

JJUG CCC 2019 Fall で発表した #jjug_ccc

表記の通り、 JJUG CCC 2019 で発表してきた。 jjug-cfp.cfapps.io もともと発表資料を Key Note で作っていたものの、前日に予行演習した際に 90 分かかってしまい(セッションの時間は45分)、資料中に無駄な要素と有用な要素が分かちがたく結びついているな…

Apple 製の ネットワークアプリケーションフレームワーク ServiceTalk

2019/11/6 くらいに apple が servicetalk という Netty ベースのネットワークフレームワークを発表していたので、この数日間さわっていました。 さわった印象は、SpringBoot(Web) や micronaut 、 Helidon 、 Quarkus といった軽量 Web フレームワークに比…

第96回箱根駅伝予選会のデータを勝手に分析してみた

先週末くらいに箱根駅伝の予選会があったようで、いろいろな実況ツイートが先週末流れていました。 その中で気になったのは以下のようなツイートたちです 麗澤大学が10人ゴール通過順位が6位だけど、11位で辛くも予選落ち 山梨学院大学がまさかの予選落ち 前…