mike-neckのブログ

Java or Groovy or Swift or Golang

Interface に対してプログラミングする

interface に対してプログラミングするのがベストプラクティスであるとする考え方が、 Java のプログラミングにあるようです。 依存関係を切断・逆転できて便利とか、インターフェースが変わらない限りは実装が変更されても利用するクラスは変更されないなど…

GraalVM 20.3 から TraceClassInitialization オプションの指定方法が変更になっていた

GraalVM 20.3 から TraceClassInitialization オプションが boolean 指定ではなく、 List 指定になっています。 そのため、 20.2 まで以下のようにオプションを指定していた場合、カンマ区切りの FQCN に修正する必要があります 〜 20.2 まで -H:+TraceClass…

java プラグインの compile/runtime Configuration が 6.8 の次の 7 からなくなるらしいです

タイトルにあるようなツイートを見かけたので、念の為に。 Heads-up folks, next Gradle version after 6.8 will be 7.0! Be ready...— Cédric Champeau (@CedricChampeau) 2020年12月10日 雑な訳 6.8 の次は 7.0 だよ、いいね Don't forget this version re…

JJUG ナイトセミナーでの初登壇で触れた Gradle の Java toolchain の実験

JJUG ナイトセミナー初登壇してきた(LT は除く)。 で、これはその補足。 最後駆け足で紹介していた最近の Gradle の情報で、 Java toolchain(6.7) improovements(6.8) を実際に試してみた なお、すでに Java toolchain についてはすでにいくつかブログが書か…

あなたの知らない Gradle の kotlin-dsl プラグイン

やんくさんに頼まれたので、誰かが書くだろうと思って待ってたけど誰も書かない Gradle の kotlin-dsl プラグインについて書きます。 @mike_neck mikeさんアドベントカレンダー書くネタあったりしませんか?https://t.co/ZDwmyBpbC0— やんく (@yy_yank) 2020…

ffmpeg で色のバランスを変更する

colorbalance オプションを指定して変更する このオプションの指定方法は次のパラメーターがある rs/gs/bs 一番小さい値を指定する(-1.0 〜 1.0) rm/gm/bm 真ん中の値を指定する(-1.0 〜 1.0) rh/gh/bh 最も高い値を指定する(-1.0 〜 1.0) このオプションに…

JetBrains の Compose for Desktop で build.gradle.kts でなく build.gradle を使う

どうも、 build.gradle.kts の良さがわからない老害おじさんです 標記の件、以下の通りにやれば動きます。多分 settings.gradle pluginManagement { repositories { gradlePluginPortal() maven { url "https://maven.pkg.jetbrains.space/public/p/compose/…

JJUG CCC 2020 Fall で jq の発表をしてきた

JJUG CCC 2020 Fall で jq の話ししてきたけど

人生初のダイエットやってみたら 2 ヶ月で 8 キロ弱減った件

表記の通り、ダイエット(と言っても大したことはしていない)をやってみたら、 8 キロ弱減った。 2ヶ月の散歩の成果です pic.twitter.com/CZtYSRrFOM— 引きこもり持田 (@mike_neck) 2020年10月24日 きっかけは健康診断で体重が 73 キロ(身長175cm) になって、…

GitHub Actions で PR を作るときの注意

.github/workflows 内のファイルを変更するときに、トークン secrets.GITHUB_TOKEN にはスコープ workflows が与えられていないので別途 workflows のスコープのついたトークンを用意する必要がある

jq のユニットテストフレームワークを作ってみた

jq

今度 jq をテーマにして JJUG CCC で発表するのですが、 jq のスクリプトに対するテストフレームワークはないのか探してみたところ見つけられなかったので、テストフレームワーク(フレームワークと言うには機能が足りないが…)を作ってみた。なお、見つけられ…

jq を shebang で起動する

jq

ファイルの先頭の shebang を記載する際に -f オプションを与えればよい #!/usr/bin/env jq -f .Contents

jq のバインディングオペレーターを使ったときの挙動が怪しいときに見るべきページはここ

jq

問題 === 次の jq スクリプトを実行したときの結果はどうなるか? ただし、 `jq` コマンドのオプションには `-n` と `-r` を与える。 ```jq (0, 1, 2) | . * 2 as $m | "[\(.) -> \($m)]" ```

『モブプログラミング ベストプログラミング』を読み終わった

日本でモブプロが話題になってから約 3 年、日本で出版されてから 1 年半くらい経過したでしょうか、やっと 『モブプログラミング ベストプラクティス』を読み終わった。

雑記 - Fiber はなくなりました

…え、あれ? Fiber なくなったの? Project Loom はコケたということ?マジで?!調べてみた!

java -version の結果

たぶん @yamadamn さんが既にやっているやつ。 調べることにした経緯は、 aws amplify cli のバージョンチェックがおかしいため。 github.com 上記のチェックでは、 java -version の結果が /(\d+\.)(\d+\.)(\d)/g にマッチすることを前提にしているが、どう…

github から Gradle のリリースのリストを取得して、 jq で RC 以外で各マイナーバージョンで最新のバージョンの値を取得する

jq

単なる jq のメモ。 やりたいこと github から release の一覧を取得して、 RC 以外のバージョンの最新バージョンの値を取得する GitHub API 例えば Gradle のリリースは、 GitHub の ドキュメント によると次の URL で 40 件ほど取得できる https://api.git…

GraalVM コミュニティー版のバージョンロードマップ

正確なものは公式ドキュメントを読んでください。これは 2020-08-09 時点の単なるメモです。 www.graalvm.org マイナーフィーチャーリリースは 3 ヶ月ごとに行われる 2, 5, 8, 11 月の 17 日 新しいフィーチャーリリースは以前のものに取って代わる(以前のも…

Kotlin 愛好会で発表した #love_kotlin

テストフレームワーク ktcheck の宣伝も兼ねて発表してきた love-kotlin.connpass.com 資料はこれ サーバーサイド Kotlin のテストフレームワーク事情 from Shinya Mochida www.slideshare.net 現在勤めている会社のテストのほぼすべては kotlintest(現 kote…

GitHub Actions で古い action を使っているか調べる action を作ってみた

ワークフローに使われている action に新しいバージョンがリリースされているか調べる カスタム action を作って github marketplace で公開してみた

指定時刻と現在時刻の差分を求める duration というツールをリリースした

ISO-8601 形式で入力した日時と現在時刻の差分を求める duration というツールをリリースしました。 github.com

graalvm-native-image プラグイン 0.6.1 続いて 0.7.0 をリリースしました

表題のとおりですが、 0.5.0 をほぼ全部書き換えています。 API そのものは変更していないので、ユーザーが既存のビルドを維持する場合に現在の DSL に手を加える必要はありません plugins.gradle.org 正確には v0.6.1 を 2020-06-21 に v0.7.0 を 2020-06-3…

savanna-gradle-plugin をリリースしました

仕事サボって作ってた pic.twitter.com/XOX7zWviLY— 引きこもり持田 (@mike_neck) 2020年6月19日 会社で仕事をサボってツイッター見てたら、t_wada さんのトレードマークと言えるライオンに関するツイートがいくつか流れてきました。 テストが書かれていない…

Gradle の C++ プラグインを使って JNI から C++ のコードを呼び出すアプリケーションをビルドする(Android プロジェクトではない)

GraalVM の native-image を作る際に利用する config.json を自動生成させて、アプリケーションを複数回実行してマージするというのをやろうとしており、 JNI を使う Java アプリケーション(JNA ではない)を Gradle でビルドする必要が出てきたが、残念なこ…

Proxy の InvocationHandler から interface の default メソッドを呼び出す方法

proxy を取得する対象のインターフェースクラスで MethodHandles.lookup() を呼び出して MethodHandles.Lookup を取得する で取得した MethodHandles.Lookup のインスタンスから unreflectSpecial(Method, Class) を呼び出して、MethodHandle を取得する pro…

検査例外を検査無しで投げる邪悪な方法

netty のコードで結構前に見かけて覚えていたけど、完全に失念してて悔しかったので、メモ 呼び出し側にとってはこういうコード書かれたらかなり邪悪だと思う。

precompiled groovy dsl (groovy-gradle-plugin)が便利そう

precompiled groovy dsl は buildSrc プロジェクトに gradle ファイルを入れておくと、メインの build.gradle でプラグイン取り込みの仕組みを使って取り込める機能で、ファイルを分割して apply from <file> としてたビルドファイルを分割していた仕組みの強化版(</file>…

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

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

asciidoctor-gradle-plugin の使い方

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

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

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