tokuhirom's blog
QMK で増井さんの Dynamic Macro を実装してみた
Keyboard のファームウェアとして、QMK が有名なわけだけど、その上で増井さんの Dynamic Macro を実装してみた。1ファイルのCライブラリとして実装してるので、自分のファー
2023-12-25(Mon)
screencapturekit-rs がpanic!するのを直した
何故か panic! していたところがあったので、ちゃんと Result を返すように修正した。
2023-12-14(Thu)
screencapturekit-rs に音声キャプチャ機能をつけた話
pull-request を出しただけで、まだマージされてないんだけど。 最近のMacでは、ScreenCaptureKit というのがあって、任意のウィンドウの画面をキャプチャしたり、音声
2023-12-08(Fri)
Java 21 からは `new URL(String)` は deprecated
今後は `URI.toURL` を利用せよとのこと。
2023-11-30(Thu)
Kotlin で GUI アプリを作るならやっぱり jetpack compose for desktop
2023-11-29(Wed)
Kotlin で Mac の window list を得る
方法を探したが、結局 ProcessBuilder プロセスで AppleScript を実行するのが正攻法っぽい。 ```kotlin import java.io.BufferedRead
2023-11-24(Fri)
Kotlin multiplatform で生成するコードでは、application block にすべてのコードが入っているので注意。
Jetpack compose for desktop でアプリケーションを書く場合、 で最初のコードを生成すると思うのだが、こいつが生成するコードには少し癖がある。 ```kotlin f
2023-11-24(Fri)
Jetpack Compose for Desktop で Caused by: java.lang.ClassNotFoundException: javax.naming.NamingException って言われるとき
アプリが完成したなぁ、とおもっていざ `./gradlew packageDmg` したとき。 ``` Caused by: java.lang.ClassNotFoundException:
2023-11-22(Wed)
Kotlin で数字を3桁区切りで区切ってコンマを入れる
整数値を3桁区切りでコンマを入れるためには、NumberFormatクラスを使用することができます。以下は、Kotlinでの例です。 ```kotlin import java.text.Nu
2023-11-07(Tue)
ローラーマウスモバイルの COPY/PASTEをリマップする
[ローラーマウスモバイル]のCOPY/PASTEボタン、COPY/PASTE に使いたい感じは全くしないので、[Karabiner Elements]でリマップする。 ~/.config/kar
2023-11-06(Mon)
Hello, world レベルの JVM を作った
Java エンジニアなら JVM を実装してみたほうがいいなぁ、ということで簡単に。 * Class file の仕様を呼んで `data class` に詰め込んでいく。 * 実行してく
2023-10-18(Wed)
libs.versions.toml に記載されているが利用されていないバージョン番号を探す
長年システムを運用していると、`libs.versions.toml` に記載があるが存在しないシステムが発生することがある。これを検出したい。 ```python import toml
2023-10-16(Mon)
ナベアツは数字がでかくなるほどアホになる割合がアップする
2023-10-11(Wed)
2つのディレクトリの jar ファイルを比較するスクリプト
ChatGPT、こういうのの生成はやたら得意なので、ChatGPT で生成した。 こういう単純なスクリプトは手で書くより早いよねぇ。 ```python import os import
2023-10-10(Tue)
Pebble という Java のテンプレートエンジンが Jinja2 みたいで良い
最近、コードをテンプレートで生成するのに mustache を使っていたのだが、表現力がしょぼすぎて辛かったので pebble にしてみた。Jinja2 みたいな感じで使いやすい。 mu
2023-10-04(Wed)
StarField 一周目クリア
Bethesdaゲームを順当に宇宙に移したな〜という感想。 いつも通りシステムに対する説明がたりてなかったりするけど十分面白い。
2023-09-21(Thu)
gradle が遅いなと思ったら gradle-profiler を使おう
2023-09-18(Mon)
let's plot kotlin で X 軸を YearMonth にしたときにソートされないよって場合
epoch millis にして `scaleXDateTime` するのが良さそう
2023-09-14(Thu)
JDK の JIT の様子を眺める方法 6選
JDK の JIT の様子を眺める方法について考える。 実際には **現代のサーバーサイドエンジニアリングでは JDK の JIT がパフォーマンスイシューの原因になっているケースは極めて少ない
2023-09-14(Thu)
自作ブログの構成更新
k8s を趣味でも使うか、、と思ってこのブログでも DigitalOcean の k8s を使うようにしてみたのだが、DigitalOcean への月々の支払いが $100/mo とかになってきて、さ
2023-08-17(Thu)
Remnant 2 クリア
Remnant 2 をクリア。難易度はサバイバー。サバイバーでも十分すぎるぐらいに難しい。特にボス。ラスボスとラビリンスがキツかった。。 ソウル系のTPSというやつ。 かなりゲームバランス良く
2023-08-17(Thu)
kravis をやめて letsPlot に移行した
どちらも ggplot2 を意識したインターフェース。 というか kravis は ggplot2 の wrapper なので、ggplot2 の実装をそのまま使えて便利っちゃ便利。 一方で、
2023-08-02(Wed)
Spring の @Scheduled は 1つのスレッドで動く。
Spring の @Scheduled はデフォルトでは1つのスレッドで動くので、必要ならば `spring.task.scheduling.pool.size` を設定してプールサイズを
2023-07-31(Mon)
fsmonitor のソケットが原因で generateGitProperties がエラーになる
``` > java.io.IOException: Cannot snapshot .git/fsmonitor--daemon.ipc: not a regular file ```
2023-07-26(Wed)
SparkSQL で暗黙の型変換を抑制する
automatic type coercing が起きると期待しない結果になることがある。 ``` select if('-999999999999' < 0, true, false) as
2023-07-14(Fri)
大規模言語モデルは新たな知能か――ChatGPTが変えた世界 (岩波科学ライブラリー)
2023-06-27(Tue)
OkHttp3 では GET request に content-body が送れない
elasticsearch/opensearch 等では GET request に content-body をつける必要があるが、OkHttp3 では対応していない。強い気持ちがあるようだ
2023-06-19(Mon)
diablo4 のストーリーをやった
ネクロマンサーでレベル50まで。 tier1でやった。 楽しかった。エクスプロージョンが使いこなせると楽しくなったかなー。
2023-06-16(Fri)
Java の ByteBuffer の endian は big endian がデフォルト
一般的なプログラミング言語に慣れていると「普通に考えたらデフォルトは machine native だろ」って考えがちだけど、Java の Byte buffer は big endian がデフォル
2023-06-15(Thu)
Exposed を試した
普段は mybatis を使うことが多いのだが、Prototyping する機会があり、たまには Exposed など使ってみることにした。 Exposed は JetBrains 製なので kot
2023-06-05(Mon)
自分の Blog admin site を書き直した
Kweb がどうも日本語入力がうまくいかなくなったので諦めて普通の Ktor ウェブアプリに戻した。 機能的にはほぼ同じだがシンプルになった。Kweb で少しシンプルに書けるかなーと思ったのだが、そ
2023-06-05(Mon)
magic research をクリアした
2023-06-02(Fri)
blog を更新しようとしたら、落ちた。
なんか知らんけど、 blog を更新しようとしたら落ちた。 kweb が kotlin-logging の 4 beta に依存してて、 class not found な状態に。悲しい。 しょうが
2023-06-02(Fri)
Marvel's Spider-Man: Miles Morales
PS5でクリア。 正当な拡張コンテンツという感じ。Spider man 2 も発売決定してるのでそれも楽しみですね。
2023-06-02(Fri)
Watchdogs 1/2 クリア
Watchdogs LEGION をクリアしてから youtube のレビューなどを見たところ、以下のような意見が散見された。 * ロンドンは道が狭いからカーチェイスが楽しくない * ストーリーが薄
2023-06-01(Thu)
Watchdogs Legion クリア
寄り道しながら27時間ぐらいでクリア。 - 街中の人を採用できるというのが斬新だが、キャラに思い入れしにくいというのは本当にそう。 - 今後の AI 技術の発達によって、音声合成・会話合成がより進
2023-05-01(Mon)
krangl が deprecate されていた
kotlin の dataframe 的なライブラリである [krangl]( が deprecate されていた。 [kotlinx.dataframe]( が後継なので、これを利用するようにする
2023-04-12(Wed)
BioHazard RE:4 クリア
神ゲーだと思う。Atomic Heart でがっかりした直後だから余計にそう思うのかも。。 STANDARD 28.2時間 で B。Window gaming PC で Steam 版をクリア。弾がな
2023-04-06(Thu)
freemarker の js_string の歴史
freemarker の js_string がどのような変遷をたどってきたのかをまとめてみた。 ## 2.3 Date of release: 2004-June-15 > New bui
2023-04-06(Thu)
Java 9 以後での InputStream を String にするやり方
commons-io で `IOUtils.toString(inputStream, StandardCharsets.UTF_8)` としているケースは、Java 9 以後なら `new Stri
2023-04-05(Wed)
OpenAPI の enum を使いこなす
openapi-generator で enum を制御するにはこのへんを参照。 `x-enum-varnames`: 変数名 `x-enum-descriptions`: descriptio
2023-04-03(Mon)
openapi-generator の custom generator を gradle plugin から使う
openapi-generator は ServiceLoader で generator を探すので、CLASSPATH に custom generator を突っ込むことができれば良いです。
2023-03-29(Wed)
openapi-geneartor の java generator で NantokaAllOf.java が大量にできる件
AbstractJavaCodeGen あたりを継承して以下のようにメソッドを上書きすれば抑制できる。 ```java @Override public boolean getUse
2023-03-28(Tue)
Rust から NSLog を呼びたい
Mac OS においてデバッグするときには、NSLog を呼ばないととにかくやりづらい、というときがあります(InputMethodKit を使った開発をするときなどが特にそうです)。 そんなときには
2023-02-04(Sat)
オープンなかな漢字変換エンジン 0.2 リリースのお知らせ
オープンなかな漢字変換エンジンを開発しているということを先日お知らせしました。 そのあと、順調に開発が推移しまして、いい感じにいろいろな機能が盛り込まれました。日本のOSSでは29日に定期リリース
2023-01-29(Sun)
Rust で整数を漢数字に変換したいよー
こんな感じで実装できる。真面目にやればもうちょいちゃんと書けるけどこんな感じで。。 ```rust use std::cmp::min; const NUMS: [&str; 10] = ["",
2023-01-27(Fri)
最近またLinux用の日本語IMEを作っている
**本件は mozc の ut がどうこうとかは関係なくて、ふと linux desktop を使おうと昨年末に思いまして、昨年末からちまちまやってます** かな漢字変換って作るの難しいのかなぁ
2023-01-16(Mon)
lindera-cli を試す
Rust で書かれた形態素解析機の lindera には CLI もある。 ```shell cargo install lindera-cli --features ipadic ``` のよう
2023-01-09(Mon)
cargo test で fork させたい
cargo test はプロセスを共有する。これではテストをしづらいケースがある。例えば C のライブラリのラッパーなどの場合、初期化関数を何回も呼んではいけないケースがある。 rusty-fo
2023-01-05(Thu)
rust の split_once が便利だった。
最近、趣味で僕が書いてるプログラムでは split を 2 こまでしたいというケースが多くて、以下のように書いていた。 ```rust fn main() { let s = "foo ba
2022-12-30(Fri)
Rust の FFI で C の callback に closure を渡したい
↑の記事で丁寧に解説されているので、読むと良い。 ポイントとしては、rust は `extern "C"` された静的な関数しか FFI 対象に渡すことができないということ。そして、closur
2022-12-26(Mon)
rust で `*mut u8` から `&[u8]` を求める
FFI などで `*mut u8` な pointer と `i32` な size が得られたときに、そこから `&[u8]` というスライスにしないと rust 側では扱いづらい。 そういう場合に
2022-12-25(Sun)
jumpapp を i3 に適用して一発でアプリにフォーカスをあてる on Linux
[jumpapp]( というコマンドがある。これを使うと該当のウィンドウが起動していなければ起動し、起動していればフォアグラウンドにもってくることができる。 僕の場合は i3wm を使っているので、
2022-12-23(Fri)
linux desktop で slack app がうまくログインできないときは frantz をためそう
linux desktop で slack app を使おうとしてもログイン後に browser から戻ってくるところでなんかうまくいかなくてログインできないことがある。 そういう場合は、Frantz
2022-12-22(Thu)
ライフゲエムを実装した
2022-12-22(Thu)
arch linux で使うのに最適な twitter クライアントを探す
最近色々ある twitter ですが、なんだかんだ twitter クライアントを起動しておきたいなと思っている今日この頃なので、、 最初は CawBird を使っていたが、vim keybind
2022-12-22(Thu)
Obsidian を linux で使うとウィンドウに枠がつかないとき(i3 などの場合)
2022-12-22(Thu)
i3wm でスクショを取る設定
を参考に設定。 PrtScn で選択した領域をスクショできるだけでまぁいいかなという気がしたので以下の設定だけ入れました。 ``` bindsym Print exec --no-startu
2022-12-21(Wed)
xremap を使い始めた
2022-12-21(Wed)
archlinux で fcitx5 で特定のアプリ(chromeなど)で日本語入力できないとき
``` pacman -S fcitx5-im ``` とする。fcitx5-gtk や fcitx5-qt などがインストールされて問題が解決する。
2022-12-19(Mon)
Prev
Next