tokuhirom's blog
/proc/$$/smaps の読み方のメモ
``` #include <assert.h> #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <sys/t
2017-03-12(Sun)
golang プロセスのモニタリングってみんなどうしてるんですかね、という話
``` [9:43 AM] tokuhirom plack のアプリだと Plack::Middleware::ServerStatus::Lite とかで監視したりしますけど、go だとそうい
2017-02-22(Wed)
memcached の conn_yields について
memcached の conn\_yields が上がっていた場合、conn\_yield がでなくなるまで起動時オプションの -R を上げろって主張している人がいます。 * * 実際問題、
2017-02-03(Fri)
cursor.executemany(operation, seq_of_params) の挙動
python の `cursor.executemany(operation, seq_of_params)` について、 ``` data = [ ('Jane', date(2005, 2,
2017-01-30(Mon)
vagrant を centos linux で動かしたい
↑のエントリどおりに動かしたら動いた。
2017-01-24(Tue)
MySQLでタイムゾーンがどう設定されているか確認したい
``` mysql> select @@system_time_zone, @@session.time_zone; +--------------------+-------------------
2017-01-07(Sat)
/dev/random のエントロピーが足りないときは Haveged を使う
/dev/random を利用した乱数生成器を利用する場合、VPS などの場合にはエントロピーが足りなくて stuck する場合があります。 たとえば以下のような感じ。 ``` "localhos
2017-01-06(Fri)
Keynote の数式エディタは何が良いのか問題
* latexit 最高派 * word 最高派 * powerpoint でよくない? 派 * mathjax をスクショで取ればよくない? 派 * 色々派閥があるようだ。。 とりあえず la
2016-12-12(Mon)
DBD::mysql のメンテナンス体制が変わっていた
レポジトリが ここに変わっていた。 この issue は buffer overflow なので、ちょっとまあアレなんだけど2年前から放置されてて困ったなーと思っていたが、なんか新体制で別のレポ
2016-12-12(Mon)
YAPC Hokkaido で「Perl6 と Web 開発と」というタイトルで発表しました #yapcjapan
<iframe src=" frameborder="0" width="960" height="749" allowfullscreen="true" mozallowfullscreen="tr
2016-12-10(Sat)
RxJava で無理やり MDC を使うライフハック
```java import java.util.Map; import org.slf4j.MDC; import rx.functions.Action0; import rx.functio
2016-11-25(Fri)
Jet Brains Night 行ってきた
Yahoo! Japan さんのオフィスで Jet Brains Night というミートアップイベントがあったので行ってきた。 大きめのセミナールームを2個ぶち抜いた感じで、スクリーンが前面4面と
2016-11-24(Thu)
Vert.x で access log を出したい
``` router.route().handler(LoggerHandler.create(LoggerFormat.DEFAULT)); ``` でいいのだが、ドキュメントを見ていてもわかりづ
2016-11-15(Tue)
netty で http server
RxNetty 触ってると、素の Netty だとどうなんだっけ? というところも把握しておかないと厳しい面もありますので、一応ひさびさに netty で素の http server を書いてみる。
2016-11-13(Sun)
RxNetty 使ってるときに access log を取得する方法
RxNetty を利用しているときに、access log を取得しておくと便利です。 RxNetty 自体には access log を取得するフックがないので以下のようなフィルタを用意してみまし
2016-11-13(Sun)
RxNetty のメトリクス取得について
2016-11-12(Sat)
RxJava2 と reactor どっちがいいのか問題
<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr"><a href=" RxJ2はAndroidでも使うこと
2016-11-10(Thu)
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 を試したぞ!
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についてのメモ
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)
Prev
Next