tokuhirom's blog
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)
OpenJDK についての思い
1. Oracle put all JDK source codes on the OpenJDK repository. 2. Oracle won't provide free JDK distr
2018-06-27(Wed)
centos7 で time zone を変更する
``` timedatectl set-timezone America/Chicago ``` これでOK
2018-06-26(Tue)
github pages で underscore を含むディレクトリが表示されないとき
具体的には amon.64p.org を github pages に移したのだが、その際にハマった。 sphinx はデフォルトで _static/ 以下に静的ファイルを生成するからだ。 に解決
2018-06-26(Tue)
OWASP dependency-check を利用して脆弱性のある Java ライブラリに依存していないか確認する
依存しているライブラリに脆弱性がある場合、それを検出できると嬉しい。 OWASP dependency-check の gradle プラグインを入れると、簡単に検出が可能となる。 設定は以下のよ
2018-06-08(Fri)
このブログについて
まあなんか、そんなにブログに書くこともないというか、うーん。 このブログ、Ruby で書かれているんですが、Ruby で書かれていると、変更しづらくて。。 いずれ Ruby 以外の言語で書き直したい
2018-05-30(Wed)
GraalVM の native-image で HelloWorld してみる
# 目的 によると、graalvm を利用すると Java Application の起動が圧倒的に高速になるようだ。実際にどの程度高速化されるのかを Hello World Application
2018-05-23(Wed)
commons-math3 の二次元行列用の型についてのメモ
## BlockRealMatrix キャッシュフレンドリーで速いらしい。 ## Array2DRowRealMatrix `double[][]` で表現されるひじょうに素直な実装 ## D
2018-05-14(Mon)
commons-math3 の BetaDistribution を利用する場合は rng をキャッシュする
commons-math3 の BetaDistribution を利用する場合、alpha/beta が変わるたびに `new BetaDistribution( alpha, beta)` とかし
2018-04-10(Tue)
nuxtjs で bootstrap 使いたい
nuxt.js で twitter bootstrap を有効にする方法 を参考にやれば良い。 ``` npm i bootstrap-vue --save ``` して、nuxt.confi
2018-03-27(Tue)
Host の canonical name を取得するワンライナー
``` python -c "import socket; import sys; print(socket.getaddrinfo(sys.argv[1], 0, socket.AF_INET, 0
2018-03-06(Tue)
spring boot2 で redis 使った session を使う方法
ここを参考にすると良いです
2018-03-05(Mon)
lombok 1.16.20 以後で @lombok.Value された値を Jackson で deserialize しようとするとエラーになる
@lombok.Value された bean に対して ObjectMapper で deserialize した場合、以下のようなエラーがある。 ``` com.fasterxml.jackson
2018-03-01(Thu)
spring boot 2 で prometheus を actuator で export させるやり方
``` implementation("org.springframework.boot:spring-boot-starter-actuator") implementation("
2018-02-25(Sun)
Ruby の deserializer の速度比較
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16] ``` require 'msgpack' require 'benchma
2018-01-31(Wed)
Capturing grafana dashboard and post it to LINE group using LINE Notify
I want to post a screenshot of the Grafana dashboard to LINE Notify. Grafana distribution includes
2018-01-05(Fri)
rust のベンチマーク取る時は `cargo build --release` しなくてはならない
``` [package] name = "hello_world" version = "0.1.0" authors = ["Your Name <you@example.com>"] [dep
2017-12-23(Sat)
-Dsun.net.inetaddr.ttl=1 するよりも networkaddress.cache.ttl 使おう
jvm はデフォルトで DNS cache が 30sec かかっている。これはやや長過ぎると web service では判断されるケースが多い。 そこで、通常ではこれを短く設定して本番環境のデプロ
2017-12-01(Fri)
Prev
Next