mike-neckのブログ

Java or Groovy or Swift or Golang

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位で辛くも予選落ち 山梨学院大学がまさかの予選落ち 前…

Goland でテストを実行したら、 他のファイルにある型について undefined となる場合の対処

Goland でテストを実行しようとしたときにテストファイルとは異なるプロダクションファイルにある型について、 undefined となってテスト実行できない場合の対処。日本語の記事が見つからなかったので書いた。

Validation には例外を使わない

マーチン・ファウラーの文章を読んだのでメモ。 martinfowler.com

雑学 - パラメーターの個数は254個まで

調べたら 254 個までだった。 パラメーター 254 個 jshell> interface StrFun254 { String apply(String arg1,String arg2,String arg3,String arg4,String arg5,String arg6,String arg7,String arg8,String arg9,String arg10,String arg11,String arg12,S…

メモ - Google App Engine の Java バージョン

cloud.google.com Google が維持管理する OpenJDK または OpenJDK+Jetty9 Docker イメージ上でアプリを実行する と書いてあったので、警察ではありませんが調べてみた。

Gradle 5.5 で JUnit Jupiter が gradle init 時にテストフレームワークとして選べるようになっていた

表題の通りです 次のコマンドをターミナルで叩きます。 gradle init \ --type java-library \ --test-framework junit-jupiter \ --dsl groovy \ --package com.example \ --project-name example-library 次のような build.gradle ファイルが生成されます /…

Groovy が書けない人のための Gradle 入門

若干ネタ気味ですが、 Groovy を覚えるのが面倒だけど、 Kotlin を覚えるのも面倒という方のためにお勧めしたいのが、 Java で書くという方法です。 というわけで、次のような build.gradle を書きます。 Project project = getProject(); project.getPlugin…

Functional Spring Hands On に行ってきた

表題の通り、 Functional Spring Hands On に行ってきた。 pivotal-japan.connpass.com ハンズオンの資料はこれ github.com 基本的に手を動かさないと理解が遅いので、わりとハンズオンは好きです(用意する方は大変) 内容は、 Spring(WebFlux) アプリケーシ…

Mono<Void> は常に empty

当然といえば当然ですが、意外と気づかない。 例えば、特定の条件を満たさないとリクエストを処理しないような WebFilter を記述する。 @Bean WebFilter webFilter() { return (exchange, chain) -> { Optional<String> requestDate = extractRequestDate(exchange);</string>…

resilience4j の RateLimiter を少しだけいじった

resilience4j の RateLimiter を少しだけいじったので、そのメモ。 ここの実装はダメな実装になってるので、ちゃんとした使い方を調べてる人は他をあたった方が良い(強く推奨)。

loom の JDK をビルドしてみた

表題の通り、 project loom の JDK をビルドしてみた。 環境 以下の環境でビルドした。癖で(バーストしない方がよいかなと思って)インスタンスタイプは m5a.large にしたけど、 t3a.micro とかでもいいかもしれない(よくわからん)。 マシン : aws ec2 m5a.la…

JJUG CCC 2019 Spring で 「Collections Framework 入門」というタイトルで発表してきました #jjug_ccc

表題の通り、発表してきました。 jjug-ccc 2019 Spring 発表資料 Collections Framework 入門 #jjug #jjug_ccc #ccc_c1 from Shinya Mochida www.slideshare.net いくつか質問を発表後にいただきましたので、ここであらためて回答します (Q) 資料のコードの…