tokuhirom's blog
  • PROXY protocl なサーバーに対して接続テストしたい
    ``` PROXY TCP4 255.255.255.255 255.255.255.255 65535 65535 GET /is/alive HTTP/1.0 ``` とか telnet で話
    2016-10-31(Mon)
  • hotspot の NullPointerException 時の表示をわかりやすくできないかなあと思って調べたけど挫折した
    # 解決したいこと `foo.bar(baz.boz());` みたいなケースで、NPE が発生した場合に、foo が null で例外発生したのか baz が null で例外発生したのかわからん
    2016-10-09(Sun)
  • openjdk をコンパイルして gdb で実行すると sigsegv しちゃうんだけど、って時の対処方法
    Java で開発していると openjdk を自分でコンパイルして gdb でステップ実行して内部動作をトレースしたいなーという時があると思います。 そんな時には以下のように、openjdk の c
    2016-10-08(Sat)
  • activemq を動かしてみる
    ``` brew install apache-activemq activemq start ``` で起動完了。 以下のようにして実行開始。 ``` for i in {1..1000}; c
    2016-10-05(Wed)
  • orelang を Java で実装してみた
    わりとよくある JSON ベースの lisp っぽいインタープリタの実装ですが、コードを見ていてもよくわからなかったので自分で実装しなおしてみました。 ```java package com.e
    2016-09-30(Fri)
  • @RequestMapping の produces を指定するとどうなるか
    `@RequestMapping` に `produces = MediaType.APPLICATION_JSON_UTF8_VALUE` を指定したときの効果について。指定すべきかどうなのか
    2016-09-27(Tue)
  • [java] SnakeYaml の機能を利用して Java でも YAML の custom tag を利用する
    YAML には tag という型を規定する機能がある。 ! が文書固有の型で !! がグローバルな型。 see h2o の 2.1 では以下のような設定ファイルが書けるようになるそうです。 `!f
    2016-09-26(Mon)
  • WebMvcAutoConfiguration で設定されるべき項目が設定されねーぞ!! ってときは @EnableWebMvc ついてないか確認しよう
    [WebMvcAutoConfiguration]( が `/webjars/**` に対するパス設定などをしてくれているはずなのに、なぜか有効にならない。。という場合、`@EnableWebMvc`
    2016-09-22(Thu)
  • kotlin で slf4j 使いたい
    ``` companion object { val log = org.slf4j.LoggerFactory.getLogger(this::class.java.encl
    2016-09-20(Tue)
  • JDK9 で入るという新しい HttpClient を試してみた
    jdk9 で HTTP/2 に対応した新しい HttpClient が提供される。これは待望の新機能である。 Java には標準で java.net.httpurlconnection という ht
    2016-09-10(Sat)
  • mockito の when で、ちまちまと実際に渡す値を設定すべきではない
    メソッドがちゃんと呼ばれたかどうかのチェックには `verify` を利用すべきです。 when の引数は基本的には any を指定し、複数の引数パターンで挙動を変えたい時のみ、any 以外を指定すべ
    2016-09-06(Tue)
  • mockito でスタブし忘れて NullPointerException 発生するのが辛い時の解決策
    mockito では mocking していない場合、`org.mockito.internal.stubbing.defaultanswers.ReturnsEmptyValues` が返ります。
    2016-09-05(Mon)
  • armeria で grpc するサンプルコードをかいた
    line が出している rpc フレームワークであるところの armeria が最新版で grpc をサポートしたとのことで、実際どんなもんか試してみた。 試すのは簡単。build.gradle
    2016-08-30(Tue)
  • コンテナ型の内部にラッパー型が入っている時にmockitoのverifyメソッドのエラー表示がわかりにくいのをなおした
    たとえば以下のケース。Map の中に long が入っていることを検証しているのですが、実際にはいっているのは Integer。 ``` @Test public void foo() {
    2016-08-24(Wed)
  • spring boot で logging の設定のやり方まとめ
    spring boot にはデフォルトでロギング機構が付いている。spring-boot-starter-web の依存に spring-boot-starter-logging 入ってるので、web
    2016-08-19(Fri)
  • 俺がレビューコメントでよくつけるやつ
    基本的にメンバーは良いコードを書くという前提で暮らしています。 * 良いと思います。テストがあるともっと良いと思います。 * 変更が軽微で、まあテストなくてもいいけど、あったほうがより良いよねえ、
    2016-08-04(Thu)
  • spring boot + embedded tomcat で async request を graceful shutdown する
    graceful shutdown 厨みたいになってますが、まあいいとして。。 embedded tomcat はちょっと見た感じ async request を綺麗に graceful shutdo
    2016-07-30(Sat)
  • undertow と graceful shutdown と
    undertow を利用する予定は特にないのだが、undertow だと graceful shutdown はどのように実現可能なのだろうか、ということが気になったので調べてみました。 ここでいう
    2016-07-27(Wed)
  • hs_err_pidの生成タイミング
    hs_err_pid は、jvm がクラッシュしたタイミングで生成されるが、実際どのようなタイミングで生成されるのかという話。 の report_and_die で生成されているとのこと。 VM
    2016-07-22(Fri)
  • mybatis の mapper を groovy で書くぐらいなら kotlin でも良いのではないか
    * * mybatis の xml は painful なので、groovy で書く、というライフハックがあるようです。 これはとても良いハックなのですが、最近の情勢を考えると、groovy よ
    2016-07-20(Wed)
  • jailing を golang に移植した
    なぜ golang に移植したかというとまあ以下のような理由です。 * capabilities で制御したかった * jailing は perl で記述されているために、setuid/se
    2016-07-17(Sun)
  • OSS版 Ansible Tower alternative である Ansible Semaphore を試したぞ!
    OSS版 Ansible Tower alternative である Ansible Semaphore を試したぞ!
    2016-06-25(Sat)
  • circleci_ikachan を書いた
    circle ci の webhook を受け取って、ikachan に forward するやつです。 ちょっと必要だったので書きました。 今回は、go で書いてみました。
    2016-06-24(Fri)
  • Promgen talk - Prometheus casual talks
    I promoted promgen, a prometheus configuration management console web app at Prometheus Casual Talks
    2016-06-17(Fri)
  • How do I display custom element with IncrementalDOM?
    Incremental DOM is great library to build dynamic DOM tree. If you want to build DOM tree contains
    2016-06-14(Tue)
  • x-tag で delegate しているときに root element を取得する方法
    ``` xtag.register('x-foo', { content: '<input /><span></span>', events: { focus: function(
    2016-06-06(Mon)
  • spring-data-elasticsearch について
    ES 2 が出てから半年以上経過しているにもかかわらず 2 対応がされていない。 クエリをすべてラップしているために 2 対応がなかなか難しいのだと思う。 Elasticsearch の場合、
    2016-06-03(Fri)
  • [prometheus][java] Added Spring Boot Metrics integration to Prometheus' simpleclient_java
    I sent p-r for client_java repository ... I want to export spring boot metrics to simpleclient_ser
    2016-05-26(Thu)
  • [golang] json_path_scanner 書いた
    JSON を読み取ったデータ構造を食わせると、「JSON Path」と「値」のペアのリストを得られるというやつ。 すでにありそうだったけど見当たらなかったので書いた。
    2016-05-22(Sun)
  • [prometheus] apache_exporter なおした
    Prometheus で apache を監視するための agent として apache_exporter があるが、これが全く動いてなかったので、動くようになおしておきました。
    2016-05-18(Wed)
  • [ruby] 10s 10m みたいな文字列から秒数を求めるには chronic_duration を使う
    なにかの実行間隔のような設定がある場合、chronic_duration を利用してパースすることができる。 実行例は以下の通り。integer をそのまま渡すとエラーになるので、integer
    2016-05-17(Tue)
  • sequel の migration に関するメモ
    Sequel には migration 機能がついている。これを利用するには以下のようなファイルを作成する。 ``` Sequel.migration do change do crea
    2016-05-15(Sun)
  • 個人的な grafana に対する不満トップ3
    # Editable をオフにすると戻せない > You can make it editable again using the Save As... feature and enter the
    2016-05-10(Tue)
  • CPU の system が妙に高いぞって時に犯人さがすには pidstat 使えば良い。
    `pidstat -h -u | sort -nr -k 5,5 | head` すれば良い。 `sudo yum install -y sysstat` してインストール。 簡単に誰が syst
    2016-05-10(Tue)
  • blog のバグを直した
    ブログシステムをうっかり書き直したらちょっとバグってたので直した。 * ctime/mtime を timestamp で保持していたが git なので保持されてなくて死んでたのでファイルの中に c
    2016-05-09(Mon)
  • [java][linux] Java の各プロセスのスレッド数を得るワンライナー
    ``` jps -l | ruby -ne 'pid, cmd = $_.chomp.split(/ /); puts pid + "\t" + File.read("/proc/#{pid}/sta
    2016-05-09(Mon)
  • javaagent として動く java のサンプラを書いた
    java アプリケーションのサンプリングを簡単にやるための簡単なライブラリを書いた。javaagent の習作的なやつです。 たんに、定期的に `Thread.getAllStackTraces
    2016-05-09(Mon)
  • [docker] alpine linux を使うなら gosu じゃなくて su-exec で良い
    gosu という setuidgid みたいなツールがあるが、よく README を読むと When using Alpine, it's probably also worth check
    2016-05-08(Sun)
  • Java mixed-mode flame graphsについてのメモ
    Java mixed-mode flame graphsについてのメモ
    2016-05-08(Sun)
  • gradle が混乱したときにとにかく念入りにキャッシュ消したい時にうつコマンド
    gradle を使っている時に、変なライブラリを依存に加えた結果、依存関係が混乱し、どうにもならなくなるときがある。 そんな時は設定を戻してから以下のように打てば、とにかくキャッシュは消えて、とりあえ
    2016-05-02(Mon)
  • Freemarker でテンプレート書くときに、Freemarker tag っぽいのを出力したい
    `${r"${person.name}"}` で OK. see. r"" は python と同じく raw string を表す。
    2016-05-02(Mon)
  • Spring Boot とファイルアップロード
    File upload のサンプルがこれ。 このへんによると、 ``` multipart.location specifies the directory where files will
    2016-05-02(Mon)
  • gradle で maven central にリリースできた。
    こちらを参考にしてやったら簡単にできた。 tagomoirs++ ``` // releng: gradle clean && gradle uploadArchives -Prelease
    2016-05-02(Mon)
  • Spring の ConfigurationProperties を kotlin で使う
    以下のように、`open class` にすれば良いらしい。kotlin のクラスはデフォルトで final 指定がつくので、open 指定しないとダメな様子。 ``` @Configuration
    2016-05-02(Mon)
  • fluentd を手元で動かしてデバッグしたいとき
    以下のようにして fluentd をインストール。 gem install fluentd --no-ri --no-rdoc /etc/fluent/fluent.conf に以下のよう
    2016-05-02(Mon)
  • [spring] spring mvc で、一部のコントローラは先に処理させたい時のライフハック
    /{user_id} はエンドユーザーのページだけど、 /entrylist は entry の list が出る、みたいな、ちょっと アレな URL 設計になってしまったサイトを spring m
    2016-05-02(Mon)
  • Spring の Freemarker で参照可能な変数について
    Spring で freemarker を利用している場合、いくつかの変数がデフォルトで利用可能になっている。 ``` protected SimpleHash buildTemplateMode
    2016-05-02(Mon)
  • spring で controller 書くほどでもないんだけどテンプレートエンジンでレンダリングして欲しい時のやり方
    addViewControllers ッテの使うと良いっぽい。 ``` @Configuration @Slf4j public class WebConfig extends WebMvcConf
    2016-05-02(Mon)
  • oh-my-zsh やめて zplug にしようかと思ったけどやっぱり zgen にした
    mput さんの記事→  を見て、zplug というものの存在を知った。 zplug を設定しようと思ったが、そもそも zsh の設定をこまごまとやるのがあんま好きじゃないし、コマンドのインストール
    2016-05-02(Mon)
  • spring boot アプリケーションのMetrics値取得について
    # Spring boot の metrics 機能について spring boot には metrics 機能が標準でついている。metrics では Counter と Gauge の2種類のメ
    2016-05-02(Mon)
  • jspm で angular2 を使ってみる。
    jspm+systemjs を angular2 では推してるっぽいし使ってみるかとおもって使ってみるとなかなか一筋縄ではいかない。 ベータ! という感じがしてよい。 そういうわけで、jspm+sy
    2016-05-02(Mon)
  • How do I set TemplateExceptionHandler with spring-boot+freemarker?
    You should use one of following properties. -Dspring.freemarker.template_exception_handler=reth
    2016-05-02(Mon)
  • dropwizard metrics servlet で spring-boot app のメトリクスをいい感じに取得する
    spring-boot の MetricsFilter はしょぼい。ステータスコードごとのリクエスト数のカウンタと、最後にアクセスされたリクエストの処理時間ぐらいしか取得できない。 これは不便。Dr
    2016-05-02(Mon)
  • aspectj の post compile weaving を gradle で行う方法
    spring boot の起動が極めて遅くて辛いなと感じていたところ、どうやら spring aop が極めて多くの時間を浪費しているということが判明した。 spring aop をオフにすると起動時
    2016-05-02(Mon)
  • spring-boot のメトリクスデータを graphite に送る
    spring-boot のメトリクスデータを graphite に送る
    2016-05-02(Mon)
  • rxjava で peek() みたいなことしたい
    java8 stream api でいうところの peek をするには doOnNext を利用すればよい。
    2016-05-02(Mon)
  • Alfred のワークフローを Perl で書きたい!
    なんか Alfred2 を久々に使い始めている。 最近は IDE で生活する時間が長いので、terminal を開いてそこから peco を開いてみたいなことをするよりは、Alfred2 からサ
    2016-05-02(Mon)
  • ansistrano について
    Ansible 上で capistrano 的にデプロイできるようにするというプロジェクトがある。 これは一見良さそうだが、設定を真面目にやっていくと、同等のことを自分で手で書くのと同程度に大量の
    2016-05-02(Mon)
  • 【解決済み】jackson 2.7 以後は @ConstructorProperties を参照するようになっているので、lombok を使っている場合に何も考えずにアップグレードすると死ぬ
    Jackson 2.7 がリリースされていますが、このバージョンから @ConstructorProperties を参照するようになっています。 See * * @java.beans
    2016-05-02(Mon)
  • spring mvc の interceptor のパスマッチャのやつ
    Spring mvc の interceptor ってやつ。hook みたいなやつ。以下のようなパスの設定ができる。 excludePathPatterns の設定だけだと動かないとかいう説もあって、
    2016-02-06(Sat)
Prev
Next
© tokuhirom