tokuhirom's blog
blog に syntax highlight 機能をつけた
prism.js がナウいのかどうかはよくわからないけれど、とりあえず入れた。markdown のレンダリングに使っている flexmark が prism.js で使うように languag
2022-11-03(Thu)
fish の greeting message を無効化する
```shell set -U fish_greeting ``` とする。 検索用キーワード: fish welcome message
2022-11-02(Wed)
CPAN module を release するための docker image を作った
CPAN module をリリースするには、色々と前準備が必要というか、、色々な CPAN module をインストールしなきゃいけなくてちょっと手間だった。最近は年に数回しかしないのだが、、
2022-11-02(Wed)
k8s への移行
業務で k8s 化を推進しているので、趣味でも k8s にしようかなぁ、と。 デプロイしているコードはこのへん。Docker image をビルドするように変更している。 - -
2022-11-01(Tue)
wezterm への移行
iTerm2 がなんかもっさりするというのはあるので他のターミナルへの移行。sugarlife さんがおすすめしてくれたので移行してみる。 `brew install wezterm` で入った
2022-10-25(Tue)
Scraping でも kotlin を使いたい
groovy で scraping するという記事をたまたま見かけた。 ここで、JVM言語でのscraping という観点でいうと、groovy というものは優れているわけだが、、実は kotlin
2022-10-22(Sat)
Java で -Xmx 指定してない場合のデフォルトのヒープメモリ使用上限
Linux の 64bit 環境だと、32GBと物理メモリの1/4の少ない方が上限となる。 『Javaパフォーマンス』に載っている。この本自体古いので、最近の JVM だとまたちょっと違うかもし
2022-10-19(Wed)
Java 17 でインドネシア語の Locale の扱いが変わっている
- - # Java 11 ``` | Welcome to JShell -- Version 11.0.16 | For an introduction type: /h
2022-08-09(Tue)
Perl のワンライナーで複数行置換したい
`BEGIN{undef $/;}` を入れると良い。 ``` perl -i -pe 'BEGIN{undef $/;} s/START.*STOP/replace_string/smg'
2022-08-07(Sun)
krangl で unpivot(melt) する方法
R の dplyr みたいなデータ操作ができる kotlin ライブラリである krangl でデータの unpivot をしてみる。 ```kotlin val df = dataF
2022-07-14(Thu)
Dell U4021QW というウルトラワイドモニターを買った
2022-06-27(Mon)
not stripped の linux バイナリは strip したら小さくなる
↓のように、非常に大きい実行ファイルがあったとする。 ``` -rwxr-xr-x 1 tokuhirom tokuhirom 30M Jun 23 00:37 /tmp/thrift-lin
2022-06-23(Thu)
山善の昇降式デスクを買った
<iframe sandbox="allow-popups allow-scripts allow-modals allow-forms allow-same-origin" style="width
2022-06-22(Wed)
Android の Launcher は、AIO Launcher がライフチェンジングだった件
2022-06-20(Mon)
armeria-grpc で io.grpc.StatusRuntimeException: UNKNOWN になるとき
サーバー側がエラーを返しているが、その理由を返していないときにこのエラーになる。 内部コンポーネント同士の通信の場合、サーバー側での問題を propagate してしまうことも可能。 ar
2022-06-14(Tue)
GINQ - Groovy-Integrated Query
Groovy でデータを処理する DSL ```groovy def numbers = [0, 1, 2] assert [0, 1, 2] == GQ { from n
2022-06-05(Sun)
yabai と skhd を最近は利用している
yabai という mac で動く tiling window manager を活用している。これと、同じ作者の skhd というショートカットマネージャーを組み合わせることで、ウィンドウの操作をほ
2022-06-03(Fri)
java.util.Random が mockito でモックできないとき
``` ExponentialBackoffTest > test() FAILED org.mockito.exceptions.base.MockitoException:
2022-04-03(Sun)
spring-session-data-redis に含まれる RedisSessionRepository を利用して redis の容量を節約する
spring-session-data-redis のデフォルト実装である RedisIndexedSessionRepository を利用すると以下の問題があります。 - spring-se
2022-03-14(Mon)
JFR Event Streaming を利用して、ByteBuffer で OutOfMemoryError が起きたときに harakiri する。
``` import jdk.jfr.consumer.RecordedClass import jdk.jfr.consumer.RecordedEvent import jdk.jfr.co
2022-03-03(Thu)
new Locale("id", "ID").toString() の結果がバージョンによって違う
``` import java.util.Locale; public class Foo { public static void main(String[] args) {
2022-02-08(Tue)
Java 17 以後は Clock の interface として InstantSource が定義されている
Clock を mockito で @Spy しようとした場合などに、最近では制限が厳しくていじりづらくなっているが、、 Java 17 からは Clock の interface が切り出され
2022-02-04(Fri)
protoc の aarch64 対応は 3.17.3 から。
``` > Could not resolve all files for configuration ':protobufToolsLocator_protoc'. > Could not
2021-11-17(Wed)
kover - coverage agents for kotlin
kover は kotlin 用のカバレッジ収集ツール。jacoco でも収集は可能だが、以下のような違いがある。 - inline functions に対応 - multiplat
2021-11-08(Mon)
Kitten's game をやっていた
いわゆる放置ゲーなのだが、userjs による自動化をしつつ、なんだかんだ furthest ring に到達するまでやった。challenge も全部やったし、まぁやりきったかなという感じ。 Ac
2021-10-23(Sat)
ContainerCreating で k8s が止まってるとき
`kubectl describe pods` したら原因がわかるようだ。
2021-10-13(Wed)
k8s の設定とアプリケーションコードのレポジトリは分けるべきか?
CI のサイクルが違うので、分けておいたほうが開発しやすいようだ。 アプリケーションコードをいじるたびにベースイメージのビルドをしていると時間がかかる。
2021-10-13(Wed)
JFR の event stream を Fluency で fluentd に送る
ここまでできれば、あとは fluentd で storage に格納して、flamegraph 等を描画すれば良いだけである。 ``` import jdk.jfr.consumer.Reco
2021-10-06(Wed)
JFR のスタックトレースはデフォルトで64
JFR では Stacktrace を取得する処理があるが、デフォルトのスタック取得深度は 64 である。 現代のウェブアプリケーションではフレームワーク側で64スタックぐらい余裕で消費しているので
2021-10-05(Tue)
JFR の jdk.ExecutionSample では、STATE_RUNNABLE な Thread しか見れない。
必要であれば、async-profiler とかで見たほうが良いよ、と。 逆にいうと、STATE_RUNNABLE だけをとってるから、待ちになりがちな web system の場合、容量少
2021-10-04(Mon)
jfr で取れる生データがどんなものか確認できるウェブアプリを作った
JFR のイベントってどんなんあるんかなーと思ってもドキュメントとかが見当たらないし、確認の方法がよくわからないわけだが、、 実データを見るのが一番良さそうなのだが、実データ見るのがめんどく
2021-10-01(Fri)
ブログを MySQL ベースにした
昔はブログを MySQL ベースで運用していたのだが、、MySQL ベースでやってると運用がちょっとめんどくさくて、お金をかけずに自前でブログを運用するとなると、ファイルベースで管理したほうがなにかと
2021-09-21(Tue)
Tomcat の session id の生成がめちゃくちゃ遅いとき
``` Sep 27 23:41:00 dev3 docker[56810]: 2021-09-27 23:41:00.043 WARN 1 --- [nio-8080-exec-1] o.a.c
2021-09-21(Tue)
VPS を Ubuntu に変えたよ
何かの作業するとき用に VPS をなんとなく契約しているのだけど、すごい昔の centos で色々めんどくさくなったのでふっとばして ubuntu 20.04 に変更したよ。
2021-09-19(Sun)
gradle の test 失敗情報を stdout に出させる。
``` test { useJUnitPlatform() testLogging { // Make sure output from
2021-09-01(Wed)
PowerShell の New-ScheduledTaskTrigger で、DaysOfWeek に複数要素指定する
`New-ScheduledTaskTrigger -Weekly -At $At -DaysOfWeek @("Monday", "Tuesday", "Wednesday", "Thursday"
2021-05-16(Sun)
Windows 10 で caps2ctrl が動かないときは powertoys 使う
caps2ctrl で remap していたが、なんか動かなくてぐぐってみると、microsoft が出している powertoys なら動くとのこと。 実際 powertoys を使ったらちゃんと動
2021-04-08(Thu)
lettuce で redis cluster を使ってる場合に、プロセスがうまく落ちないってとき
lettuce-timer のスレッドとかが残ってうまくプロセスがシャットダウンでき無いとき。 Lettuce の場合 `StatefulRedisClusterConnection` などのコネク
2021-03-08(Mon)
Wikipedia から SKK の辞書を生成するスクリプトをかいた。
SKK-JISYO.L が最近、メンテナンスされてなくて `れいわ /令和/` が入ってなかったりして困ってしまう。 そこで、neologd から辞書を生成してみた。 しかし、neologd
2020-08-30(Sun)
pytest でテスト名称がマルチバイト文字のときにエスケープされて見辛いとき
pytest.ini に以下のように記述すればよい。 ``` [pytest] disable_test_id_escaping_and_forfeit_all_rights_to_communi
2020-08-29(Sat)
Mac で synergy がうごかないとき
Linux を server, Mac を client として synergy を使おうとした。 ``` [2019-03-13T22:16:56] DEBUG: can't get the ac
2020-08-21(Fri)
mecab-ipadic-neologd-git の AUR package をなおした
なんかよくわからんが fakeroot の下だと file コマンドがうごかないのでなぞだった。 なんかそれっぽく直した。
2020-08-20(Thu)
SparkSQL のクエリをユニットテストしたい
品質向上のために Spark クエリのユニットテストを実施したいという場合、JVM 言語で開発している場合には、Spark/hive をライブラリとしてロードできるから、容易に実装することができる。
2020-08-07(Fri)
curl で silence したいけどエラーはみたい。
``` -s, --silent Silent or quiet mode. Don't show progress meter or error messa
2020-08-05(Wed)
SystemRules ではなく SystemLambda を使う
stdout/stderr の出力をキャプチャするのに systemrules が便利だが、junit5 対応はしていない。 junit5 に対応するためには system-labmda を使う。
2020-07-21(Tue)
適当に JDBC でデータとってきてダンプするスニペット
生JDBCで適当にデータ出してデバッグしたいって時につかうやつです。 ``` protected void selectAndPrint(Connection connection, Str
2020-06-26(Fri)
Swift で Foundation の data をバイト列で初期化したい
`Data([0xDE, 0xAD, 0xBE, 0xEF])` こんな感じ。Data とか、一般的な名前すぎてググってもなんか見つけにくい。
2020-06-18(Thu)
thrift compiler のバイナリを static build したい
からダウンロードする。 # linux の場合 ``` sudo yum install glibc-static -y ./configure --enable-static --with
2020-06-17(Wed)
[C#] C# で byte 列を16進数に変換したい
の通りにやればいい。 ``` byte[] data = { 1, 2, 4, 8, 16, 32 }; string hex = BitConverter.ToString(data); /
2020-06-12(Fri)
Gradle の dependency locking について
昔の gradle には dependency locking 機能がなかった。ビルドするタイミングによって、別の依存モジュールが利用されたりしていた。。 最近、gradle に dependency
2020-05-13(Wed)
PowerShell に git branch 情報を表示する
を利用すればいい。 PowerShell gallery からインストールすればいいです。 profile.ps1 に以下のように設定した。 ``` Import-Module posh-gi
2020-03-20(Fri)
jacoco で lombok で生成されたコードを無視したい
`lombok.addLombokGeneratedAnnotation = true` を追加すればよろしい。Jacoco 側にそういう対応が入っている。
2020-03-07(Sat)
/actuator/configprops で kotlin の @ConfigurationProperties つけてるビーンが出ないよってとき
configprops は constructor の引数を見ている。何も指定しないと java と同じく arg0 とかになって acutuator で設定が見れない。 ↓gradle の場合は以
2020-02-27(Thu)
NullPointerException の stacktrace が出ないケース
hotspot だと最適化の都合で、出ないケースがあるらしい。 `-XX:-OmitStackTraceInFastThrow` を入れると全部出るようになるが、パフォーマンスに若干の影響があ
2020-02-27(Thu)
Skitch が catalina で使えなくなったので頑張って OSX のスクショ機能を使っていた
OSX のスクショ機能なんであんな使いにくいの。。モーダルにしなくてよくない?? って苦しんでたけど、 ↓これで skitch をまた使えるようになった。安心。
2020-02-26(Wed)
compressed oops
* JVM では pointer を通常 64bit 使うところを 32bit で表現するように圧縮している。 * メモリ節約のため * メモリが32GBあると圧縮されなくなる * hea
2020-01-29(Wed)
cloc みたいな行数適当に数える奴
``` #!/usr/bin/env perl use strict; &main; exit; sub main { my %white = map { $_ => 1 } qw/
2020-01-25(Sat)
[kotlin] lateinit が初期化されてるか確認する
`lateinit var foo: String` である時に、lateinit 変数が初期化ずみか調べるには `::foo.isInitialized` とすると良い
2020-01-11(Sat)
mysql 8.0.17 から 8.0.19 までは member は予約語
`MEMBER; added in 8.0.17 (reserved); became nonreserved in 8.0.19`
2020-01-10(Fri)
レポジトリの中に含まれる kotlin/java ファイル数を歴史込みで集計する
TSV が出るので、出たら tableau とかで集計する。 ``` # XXX git checkout --force するんで手元がぶっ壊れるので注意してね! XXX import subpr
2019-12-12(Thu)
Prev
Next