tokuhirom's blog
Harriet 0.05 released.
shipped.
2016-02-06(Sat)
Spring Boot で redirect: とかなってるやつを自分で拡張したい
通常の Spring Boot では `redirect:/` とか書くと、Moved Temporaly になるけど Moved Permanently 返したいときがある。 そんなとき、以下のよ
2016-02-06(Sat)
spring boot でテスト書いてたら 403 になって、csrf filter に引っかかってるぽくていらっとしたときの対策
``` @Before public void setUp() throws Exception { mockMvc = MockMvcBuilders .webApp
2016-02-06(Sat)
spring の MockMVC で通信結果をダンプしたいとき
mockmvc.perform(get("/")) .andDo(log()); とかしとけばいい。 .andDo(print()); のほうが、確実に出
2016-02-06(Sat)
spring boot で、テスト時だけ読ませたい @Configuration があるとき
なんかよくわからんけど @ContextConfiguration 指定すると @SpringApplicationConfiguration が処理されなくなるのかな。よくわからんけど。 なので
2016-02-06(Sat)
Java で method_missing したい。
Java で method_missing したいというのは、テストを書いているときによくあるケースである。 Mockito など利用すればいいのだが、その中身が気になってしまうのが、エンジニアの性で
2016-02-06(Sat)
Ported Cookie::Baker to Perl6
I ported @kazeburo san's great Cookie::Baker to Perl6. This is my third module for Perl6 ecosyste
2015-12-19(Sat)
Raw::Socket was retired.
I removed raw-socket from ecosystem. Because I had misunderstood the behavior of IO::Socket::Async
2015-12-19(Sat)
Getopt::Tiny for Perl6
Hi, I shipped Getopt::Tiny for Perl6's ecosystem. You can install it by panda command: panda
2015-12-19(Sat)
Shipped full featured Plack clone for Perl6 named `Crust`
Hi, i'm tokuhirom, one of the core developer of Plack. During the past few weeks, I've been hack th
2015-12-19(Sat)
«を入力する方法»
Perl6 ではよく `$<pairs>».made` などと入力するシーンがあるが、これの入力方法はわかりづらい。 この記号は Guillemet と呼ばれていて、まあ ASCII の範囲外なので普
2015-12-19(Sat)
WebSocket with Perl6
Yay, I released WebSocket.pm on ecosystem. You can write a WebSocket server very easy! Here is an e
2015-12-19(Sat)
Perl6 でリストから無限リストをつくる
## 問題 `my @a = <yellow red green>` のようなリストから `'yellow', 'red', 'green', 'yellow', 'red', 'green', ..
2015-12-19(Sat)
Perl6 のフィボナッチ数列生成についての解説
mattn ブログで紹介されている Perl6 のフィボナッチ数列が奇妙に見える人が多いようなので、まともな解説。 ref. フィボナッチ数列とは以下のような数列です。 1, 1, 2
2015-12-19(Sat)
Perl6 における イテレータの挙動のメモ
Perl6 のイテレータは、role Iterable を実装しているクラスから取得することができる。 Iterable には `iterator` メソッドが実装されていて、これを取り出せばよい。
2015-12-19(Sat)
jcmd が "well-known file is not secure" という IO 例外を上げてくるときの対処
jcmd が "well-known file is not secure" などと意味不明なことを申した場合、この例外は 以下の位置から上がっている。 ``` JNIEXPORT void JN
2015-12-19(Sat)
C++ と valgrind
libstdc++ は内部でメモリプールを持っている上に、プロセス終了時に開放しないので、valgrind が勘違いする。 以下のような極めて単純なプログラムでも All heap blocks w
2015-12-19(Sat)
valgrind でメモリリークの誤検出が起きる場合、suppression を指定する
valgrind は、問題がない場合でも誤検出することがママある。 そのような場合、suppressions ファイルを生成すればよい。 たとえば、`dlopen()` は内部でエラーメッセージ保存
2015-12-19(Sat)
cmake で変数を全部ダンプする
cmake で現在利用可能な変数の名前とその値をすべてダンプしたいということがあると思う。そんな時にはこうしたらいい。 get_cmake_property(_variableNames V
2015-12-19(Sat)
MoarVM における DESTROY メソッドの呼び出し手順
refcnt 型のインタープリタの場合デストラクタの呼び出しは極めて容易だが、GC の場合はちょっと面倒だ。 Rakudo の場合は、src/Perl6/Metamodel/Finalization
2015-12-19(Sat)
Perl5 での Plack に当たる Crust をみんなで作った話
この記事は <a href=" 6 Advent Calendar 2015</a> の1日目です。 Perl 6 は、2015年のクリスマスにリリースされることになっており、我々としてはそれを待ち
2015-12-19(Sat)
C 言語で qsort_r がポータブルじゃなくて困る時の対策
qsort は、ソート対象の変数以外を渡すことができないため、マルチスレッドのプログラムでは取り扱いづらい。tls 使えばいいが、それもなあ、という感じな時は、qsort_r を使いたい。 しか
2015-12-19(Sat)
AssertJ 用の IntelliJ postfix completion plugin を書いた
2015-12-19(Sat)
xfce4で、スタートメニューを開くコマンド
xfce4-popup-whiskermenu
2015-12-19(Sat)
spring boot で、freemarker のテンプレートの読み込みがサーバー再起動しないと読まれなくてだるいって時の対処方法
spring boot はデフォルトでは classpath から読んでるので、まあなんか再読み込みさせるのが難しい。eclipse なら自動でコンパイルされるのでまだマシだが、intellij だと
2015-12-19(Sat)
My latest hack around Server::Starter
In past few days, I sent some p-r to Sever-Stater. This is my note around these commits. # Added --
2015-09-28(Mon)
shipped tinyorm 1.6.0
I shipped tinyorm 1.6.0 # Added mysql's SET type support #22 I added `@SetColumn` annotation. Tiny
2015-09-28(Mon)
How do I include git.properties file into war/tar with gradle?
You can put the task like following: task generateGitProperties { def revisionHash = ["
2015-09-28(Mon)
jps を自前で実装してみる
tools.jar の中に入ってるクラスを呼べば、同じようなことができるとのこと。 ``` import java.net.URISyntaxException; import java.util.
2015-09-28(Mon)
golangで、制御文字を表示させたい
なんか文字列を比較して見た目には同じなのだがマッチしないというような場合、"\x00" のような制御文字が混入している可能性がある。 このような場合、Perl では Devel::Peek を利用して
2015-09-28(Mon)
golang で os/user 使ってるとクロスコンパイル時にうまく動かないってとき
cgo 使ってる部分が動かないとのことで。 user name 取りたいときは `os.Getenv("USER")` とでもするのが妥当そうである。 なお、windows だとなんか動いてい
2015-09-28(Mon)
h2o の fastcgi サポートで Plack::Handler::FCGI を動かす
h2o で PHP を FCGI で動かすという話題が最近見かけますが、もちろん h2o+FCGI+Perl も快適に動作します。 具体的には以下のように書けばよろしい。 listen: 9
2015-09-28(Mon)
pthread のバージョンを確認したいでござる
pthread で NPTL が使われてるかどうか確認したかったのだけど、ただしく確認する方法がよくわからなかったので confstr で調べた。 #include <malloc.h>
2015-09-28(Mon)
golang で regexp のキャッシュ
golang で regexp をコンパイルするときは var stack_at_re = regexp.MustCompile(`\s*at ([^(]+)\(`) のように M
2015-09-28(Mon)
java と strace
java command は `clone(2)` するので、普通に strace してもダメ。 `strace -f java ...` のように -f オプションをつければ、clone した先も追
2015-09-28(Mon)
Graceful shutdown on Embedded Jetty
You should set following 2 options. server.setStopAtShutdown(true); server.setStopT
2015-09-28(Mon)
apache bench(ab) が OSX で刺さった夜は
ある日、OSX Yosemite で apache bench でベンチマークを使っていると、なぜか stuck して困っていた。 ``` ab -c 10 -n 16500 ``` どうも、対
2015-09-28(Mon)
gradle で findbugs の除外ルールを設定する
findbugs { excludeFilter = file("${project.rootDir}/config/findbugs/findbugs_filter.xml"
2015-09-28(Mon)
How do I include git revision in jar file with gradle?
If you want to include source git revision into jar file, you can include it in MANIFEST.MF. This he
2015-09-28(Mon)
Java 8 の DateTimeFormatter の曜日等のフォーマットについて
DateTimeFormatter を利用して曜日などのフォーマットを行おうとすると、実際どういうふうにフォーマットされるのかよくわからんということになる。 をちらっと見ると、以下のように書いてあ
2015-09-28(Mon)
Jetty でディレクトリリスティングを拒否したい
webAppContext.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false"); で、
2015-09-28(Mon)
groovy で ant task を記述したい
ant でロジックを記述するのはなかなか大変であるし、今となっては潰しのきかないスキルでもあり、未来ある若者に ant を使わせるべきではない。 しかし、世の中には ant を利用することを強いられ
2015-09-28(Mon)
log4jdbc は logback の設定をミスってるとすげー遅い
log4jdbc を使うと jdbc でアクセスしたクエリのログが簡単にとれて便利なのだが、設定を誤るとパフォーマンスを超絶劣化させてくるので注意が必要である。 log4jdbc はデバッグレベルだと
2015-09-28(Mon)
BetterTouchTool が便利
2015-09-28(Mon)
gradle でブランチ名からバージョン番号を指定する
うちの職場では、jar を jenkins でビルドして、nexus enterprise にアップすることにより、実際にデプロイされたコードの履歴を保持するというようなことをやっている。 なので、
2015-09-28(Mon)
YAPC::Asia 2015 に行ってきた
<iframe src="//www.slideshare.net/slideshow/embed_code/key/bvkklAVgJcMGSu" width="425" height="355"
2015-09-28(Mon)
perl6 で TSV を SQL に変換する
もはやこういったものは Perl6 で書いた方が楽かもしれない。 ``` my @header = lines.shift.split(/\t/); say "INSERT INTO member
2015-09-28(Mon)
elasticsearch と testing
Java で elasticsearch を利用したアプリケーションを開発する場合、NodeBuilder など用いて、JVM 内で elasticsearch を立ち上げるのが順当に見えるが、実際は
2015-09-28(Mon)
サーバーサイドのテンプレートエンジンに mustache を使うのはあんまよくないようだ
mustache は速いしいいんじゃないの? と思ったのだが、実際使ってみると微妙だ。 ## 機能が少ない やはり機能がしょぼい。それはそれでいいんだけど。特に自分でテンプレートを記述する時という
2015-09-28(Mon)
Perl5's File::Path::mkpath equivalent in perl6
Shell::Command::mkpath provides same feature. > use Shell::Command; > mkpath("/tmp/x/y/z");
2015-09-28(Mon)
[perl6] how do i read binary file?
You can read a file as binary file in this form: my $dat = slurp($filename, :bin);
2015-09-28(Mon)
Perl6 で windows かどうか判定したい
`$*DISTRO.is-win` とするだけでよい。極めて読みやすい。
2015-09-28(Mon)
[perl6] done が done-testing に変わる
変わるってことで、まあ Perl6 が正式リリースされる前だからいいんだが、Perl6 のコードを取り出すにはどうすりゃいいんだってことになって、soozy.slack で話題になっていた。 最
2015-09-28(Mon)
perl6 で stacktrace をフルで出す
CATCH { .backtrace.full.say } で OK です。
2015-09-28(Mon)
You can install cperl by plenv
Today, reini released cperl-5.22.1, is faster, typed perl5 implementation. See I added cperl suppo
2015-09-28(Mon)
I wrote Raw::Socket for Perl6.
## Concept We can't pass file handles to another threads on MoarVM. See This is serious problem
2015-09-28(Mon)
perl6 ではコールバックを受け取る関数では Sub を受け取るように明示する
perl6 では以下のようなコードでは 3 が帰る。 (sub { (-> { return 3 })(); return 4 })().say `-> { }` という記法からすると
2015-09-28(Mon)
formatting moarvm's profiler result in CLI
moarvm outputs profiler result as HTML. It's too heavy to display for large programs. But it can out
2015-09-28(Mon)
lldb で core ファイルを見たい
lldb binary -c core で見れる。
2015-09-28(Mon)
fork と kevent
kqueue は fork した後はイベントが無効となり利用できない。 BSD 系のOSではrforkというシステムコールが用意されておりこれを利用すれば引き続き同じリソースを利用可能だが、Mac O
2015-09-28(Mon)
Prev
Next