tokuhirom's blog
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)
mutable なクラスがどのぐらい DI 対象になってるか調べたい
BeanPostProcessor で探せる。 ``` import org.springframework.beans.factory.config.BeanPostProcessor impor
2019-12-10(Tue)
[spring] @Configuration と @Component は違う、あるいは @Bean lite mode について
Spring の @Configuration は @Component の stereotype だと思っていたが、挙動が違うとのこと。 `@Bean Lite Mode` というものがあって
2019-11-19(Tue)
Spring framework 5.2 以後=Spring Boot 2.2 以後では WebClient のレスポンスの取り扱いが便利になっている件
WebClient からの response status などを取得しやすくなっている。 便利。 ``` val logger = LoggerFactory.getLogger(We
2019-11-07(Thu)
assertj 3.12.0 の breaking change がエグい
``` Iterator<Foo> fooIterable = getFooIterable(); assertThat(fooIterable) .extracting(Foo::getId
2019-10-31(Thu)
`ClassLoader#getResources("")` の返り値が Java9 以後は jar:file: も含むようになっている
``` package com.example; public class Example { public static void main(String[] args) throws j
2019-10-29(Tue)
【解決済み】 Boot 2.2 で AbstractRoutingDataSource しかない場合にアプリケーションが起動しない問題について
Boot 2.2 で scan 対象に AbstractRoutingDataSource しかない場合に、アプリケーションが起動しないという問題を見つけたので報告したところ、シュッと対応してくれ
2019-10-24(Thu)
Jackson 2.10 についてのメモ
ざっくりいうと * Jackson 2.10 は Jackson 3 のインターフェースを含みつつ 2 系の旧インターフェースを新インターフェースを `@Deprecated` 扱いで含んだリリース
2019-10-19(Sat)
Spring Framework 5.2 からは WebClient の retrieve でちゃんと http status を取れる
Spring Framework 5.2 がリリースされた。 > Support for Kotlin Coroutines. も大きいのだが、、個人的には以下に注目したい。 > Refinem
2019-10-01(Tue)
Python 2 で GMT で出てるやつを適当に JST にする
``` from datetime import datetime, timedelta def to_jst(src): return str(datetime.strptime(src,
2019-09-26(Thu)
sparksql で emoji/pictogram を含む行を検出する
`select text from table where dt='20190911' and text rlike '[\\uD800-\\uDFFF]'` とかでとりあえず良さそう。
2019-09-13(Fri)
filebeat で jvm unified log を収集する話
* jvm unified log を収集すると gc pause time を正確に収集可能 * gc の状態を正確に把握可能 → tuning に役立てられる可能性 * filebeat で収集し
2019-09-12(Thu)
jetbrains toolbox for linux を chromebook で動かす
fuse が動かないので `./jetbrains-toolbox-1.15.5796/jetbrains-toolbox --appimage-extract` で解凍。 `APPDIR=$PWD/
2019-09-10(Tue)
Unable to publish SessionDestroyedEvent for session foobar
* RedisOperationsSessionRepository は MessageListener を実装している * SessionDeletedEvent or SessionExpir
2019-09-10(Tue)
scala で guava のバージョンを確認する
とりあえずこんな感じで。try-with-resources でやりたかったが、あんま短くかけなそうだった。 ``` %spark import java.util.Properties impor
2019-09-03(Tue)
witcher 3 途中でやめた
そもそも剣で切り合うアクションあんま好きじゃない気がしてきた
2019-07-29(Mon)
pageres から capture-website にしようと思ったが puppeteer にした
長年、pageres を利用して web page から画像を生成していた。 pageres の後継として capture-website があることを知った。 ``` The biggest
2019-07-09(Tue)
Excel で特定の行または列を固定する方法
この辺。
2019-06-10(Mon)
zipkin の RateLimitingSampler が便利(特に低トラフィックの場合)
zipkin で tracing log を取得する場合、一定の割合でログをサンプリングしてストレージに保存していた(たとえば 0.1% だけストアするなど) この方法では、低トラフィックな環境では
2019-05-20(Mon)
line-bot-sdk-nodejs を typescript で使う
``` npm install --save express npm install --save typescript npm install --save @line/bot-
2019-05-07(Tue)
[js] List::Util::all みたいなのを js で
``` List::Util::all みたいなものをJSで書くときってどう書くのがいいんだろ lodash とかにありそうだけど syohex [8:55 PM] Array.prototype
2019-02-02(Sat)
ivy が最近は良いらしい
> 最近はhelmやめてivyつかってますよ! とのこと。僕も変えてみた。
2019-01-29(Tue)
YAPC::Tokyo 2019 で keynote してきた
keynote の準備に忙しかったりしてあまりトーク聞けなかったけど楽しかったです。
2019-01-28(Mon)
bash で **/* とかしたい
`shopt -s globstar` で OK
2019-01-19(Sat)
YAPC::Tokyo 2019 で keynote します
キーノートというのをするのが初めてなのでどういう話をしたら良いのかよくわかってない部分もありますが、僕のキャリア・エンジニアリングに関する考え方などを紹介しようかなあと思います。
2019-01-07(Mon)
spring の 4.3.15, 5.0.5 以後で mockmvc の json path のマッチングで matcher 使わなくてもよくなってる
mockmvc で jsonpath のマッチングを利用する場合、以下のようにする必要があった。 ``` .andExpect(jsonPath("$.id", is(5963))) ``` これ
2019-01-06(Sun)
spring boot で ExceptionLoggingFilter が ERROR level でログ出まくってうざいってとき
spring-cloud-sleuth を依存にいれたら ERROR レベルでのログの出方がおかしくなった。 このクラスが例外をキャッチしてエラーログに書いて rethrow するという
2018-11-30(Fri)
spring boot で静的リソースの書き換えを即時反映させたいよってとき
``` bootRun { sourceResources sourceSets.main } ``` この設定をすると、静的リソースが source directory から読まれるよ
2018-11-29(Thu)
webflux で x-forwarded-for とかをケアする
以下の様にすれば良いっぽい。 ``` import org.springframework.context.annotation.Bean import org.springframework.
2018-11-20(Tue)
あるプロジェクトを Gradle kotlin DSL に移行した
お仕事プロジェクトの一つを gradle kotlin dsl に移行させてみた。 理由としては以下。 - gradle kotlin dsl を利用すると、人によるブレが少ない - paren
2018-11-14(Wed)
Java9 だとspotbugs で OBL_UNSATISFIED_OBLIGATION 警告がでるとき
try-with-resources してるのに leak しているという警告が出るので謎ダナーと思ったら spotbugs のバグみたい。
2018-11-12(Mon)
spring boot 2.1+(spring framework 5.1+) applies `samesite=Lax` attribute to session cookie by default
After boot 2.1, DefaultCookieSerializer applies samesite=lax attribute by default. As a result, th
2018-11-09(Fri)
lombok 1.16.22+ と gradle 4.9+ の食い合わせが悪いイシュー
2018-11-08(Thu)
spring boot 2 で micrometer 使ってるときに、latency の percentile 値を prometheus に送る方法
``` management: metrics: distribution: percentiles: http.server.requests:
2018-11-01(Thu)
gRPC-WEB がもたらす我々の生活への変化
gRPC-WEB が GA となった。これが我々の生活にどのような変化をもたらすのかについて考える。 # 従来の gRPC の課題 gRPC は google が公開している RPC 方式であり、
2018-10-31(Wed)
sbt の %% と % の違い
`groupID %% artifactID % revision` と `groupID % artifactID % revision` の違い。 > If you use groupID %%
2018-08-14(Tue)
spring 5.1 で webflux に samesite 対応が入る
spring 5.1 から cookie の SameSite のさぽーとが入るっぽい つまり、boot 2.1 以後は spring 5.1 なので、webflux 使ってれば samesit
2018-07-31(Tue)
Spring IO platform が deprecated だった。。 今後は spring-boot-dependencies を使おう!
久々に みたら、"End of Life" の文字が。。 > The Platform will reach the end of its supported life on 9 April 2
2018-07-30(Mon)
ant の exec task で status code が non-zero のときにビルド失敗させるには failonerror="true"
`<exec executable="python" failonerror="true">` とかすれば良い
2018-07-27(Fri)
Re: Java 7 時代の String#split() 事情
Java 7 以後では `String#split(String)` で、引数が1文字の場合は最適化が効いて、高速になるという話。 社内でなんか話題になってたので最近の JVM だとどうなのかな
2018-07-15(Sun)
spring boot + jib を試す
jib を使うと java app を極めて簡単に docker image にすることができるというので試してみた。 tutorial 通りにやったらすんなり動いた。あっけない。 よくできて
2018-07-10(Tue)
MySQL の X Protocol/X DevAPI 周りについて調査したのをまとめたののメモ
2018-07-08(Sun)
Shibuya.pm で plenv/perl-build について LT した
perl 5.28.0 をインストールする際には perl-build のバージョンアップが必要ですよ、というアナウンス。
2018-07-08(Sun)
Nginx caches DNS records forever in proxy_redirect directive
>>> If a domain name resolves to several addresses, all of them will be used in a round-robin fashio
2018-06-27(Wed)
Prev
Next