タグ 64p.org
人気順 10 users 50 users 100 users 500 users 1000 usersgroovy で ant task を記述したい - blog.64p.org
ant でロジックを記述するのはなかなか大変であるし、今となっては潰しのきかないスキルでもあり、未来ある若者に ant を使わせるべきではない。 しかし、世の中には ant を利用することを強いられている若者もいると聞く。 そういった中で、タスクを groovy でこなす方法を紹介しよう。 groovy でタスクを定義できれば、コードの可読性があがりハッピーになれるはずだ。 groovy でタスク... 続きを読む
Java 8 の DateTimeFormatter の曜日等のフォーマットについて - blog.64p.org
DateTimeFormatter を利用して曜日などのフォーマットを行おうとすると、実際どういうふうにフォーマットされるのかよくわからんということになる。 https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html をちらっと見ると、以下のように書いてあって、各シンボルが何を表すのかよくわから... 続きを読む
apache bench(ab) が OSX で刺さった夜は - blog.64p.org
ある日、OSX Yosemite で apache bench でベンチマークを使っていると、なぜか stuck して困っていた。 ab -c 10 -n 16500 http://127.0.0.1:5000/ どうも、対向サーバーを jetty にしても plack にしてもダメなので、なんなのかな~と。。 ab そのものを疑ってみる いろいろ調べてみると、対向サーバーを変えても同じような感じ... 続きを読む
Server::Starter から簡単に Java プロセスを起動できるようになった - blog.64p.org
JVM には inetd から起動するときのために、file descriptor 0 をソケットとして開く機能がついている。Jetty 等もこの機能に対応しているので、簡単に利用できる。 file descriptor を 0 に固定出来る機能が Server::Starter にあればよかろうということで、以下のような指定で起動できるように実装した。 $ start_server --port... 続きを読む
Blocking echo server in Java - blog.64p.org
ServerSocketChannel を利用した blocking な echo server の実装でまともなのが見当たらなかったので書いた。 System.inheritedChannel() 使うようにもできるようにしたかったから1から書いたという感じ。 import java.io.IOException; import java.net.InetSocketAddress; impor... 続きを読む
Server::Starter を Java で利用する方法。または、System.inheritedChannel() の挙動について - blog.64p.org
Server::Starter を Java でも使いたいなあ、そうすれば LL の場合と同じような運用ができるなあ、という要望をたまに稀によく聞きます。 そんなときに決まって返される答えは、fdopen できないから無理じゃないすかね。。 ということである。 SO_REUSEPORT しよう SO_REUSEPORT なら、java でもちょっとの工夫で使えるんじゃないの? っていう説が出てくる... 続きを読む
Perl6で「ソフトウェアエンジニアならば1時間以内に解けなければいけない5つの問題」の5問目を解いてみた - blog.64p.org
http://qiita.com/tag1216/items/25ff0f957340c54ae73c Perl6 だと eval が EVAL になってるのと、文字列結合演算子が ~ になっているのと実行が異常に遅いこと以外は違いはない。 calc(1, 1); sub calc { my ($b, $n) = @_; if ($n==9) { say $b if EVAL($b) == 100... 続きを読む
Java の AST を解析できる javaparser がアツい!!! - blog.64p.org
https://github.com/javaparser/javaparser javaparser は Java をパースして AST にしてくれるライブラリである。 この手のライブラリは数多あるのだが、ほとんどのものが Java 1.5 ぐらいでメンテナンスが止まっている。 実際このライブラリもメンテナンスが止まっていたのだが、Java 1.8 対応版とし開発が再開されたものだ。 このライブ... 続きを読む
Linux 上で5秒で chroot jail を使えるコマンド「jailing」が凄い! - blog.64p.org
https://github.com/kazuho/jailing/ kazuhoさんがやってくれました。 ずいぶん前からlinuxでchroot jailを作るのに簡単な方法ないかなーと思ってました。個人的にはsystemd-spawnというのを使ってたのですが、幾らか気に入らない所があったり構築に時間がかかったり、ディスク容量を消費していました。簡単に使えて、ディスク容量を消費しないやつがほし... 続きを読む
perl 5.21.1+ で POSIX.pm が C99 functions を default で export する問題。 - blog.64p.org
https://github.com/yappo/p5-Geo-Coordinates-Converter/pull/1 Perl 5.21.1+ だと思うんだけど、POSIX.pm が C99 functions をサポートしていて、さらにそれを default で export してくる。具体的には round() とかそのへん。 具体的には以下のものね。 'strtold', # platf... 続きを読む
GS Collections Kata をひと通りやった - blog.64p.org
GS Collections というゴールドマン・サックスさんが出してる Java 用のコレクションライブラリがある。 Java Day Tokyo/JJUG CCC 2015 Spring で知ったのだが、これは以下のような利点を持っているようだ。 使いやすいインターフェース メモリ使用量が標準のコレクションよりもよい場合がある Multimap や sortedbag などの標準にはないコレク... 続きを読む
[java] モダンな APT の開発手順まとめ - blog.64p.org
APT とは Annotation Processing Tool のことで、Java でコードの自動生成を行う際に利用される。 APT を利用すると、Java クラスやリソースの自動生成が可能となる。 インターネットに情報は結構あるのだが、昔のものが多くて、Eclipse に JAR を追加して云々とかそういう感じのものが多くて辛いので調べたことをまとめておく。 アノテーションを作る 適当なアノ... 続きを読む
[perl] Error in tempfile() using template /tmp/XXXXXXXXXX: Have exceeded the maximum number of attempts (1000) to open temp file/dir at hoge.pl line 14. のようなエラーが発生した場合の対処方法 - blog.64p.org
File::Temp を使っていると、表題のようなエラーが発生することがある。 これは一件すると、ファイルを開く処理が失敗した用に見えて、ファイル開き過ぎとかかなあと思うんだけど、実際はそういうことではないようだ。 File::Temp の実装はこのへんになっていて、要するに EEXIST が発生した場合に 1000 回ファイル名を変えてリトライして、その結果としてダメだったというときにいい感じに... 続きを読む
Xslate の mark_raw は template に書かない - blog.64p.org
Xslate の mark_raw は template 側では使わずに、Controller ないし Model で使って欲しい。 ある文字列が、HTML として処理すべきものかどうかは、サーバー側で判断すべき事案であって、マークアップエンジニアが判断すべき事項ではないから、というのが大きい。 「タグがうまく入力できないんですけど」というディレクターからの起票によって、それをマークアップエンジニ... 続きを読む
JS とかの管理を grunt+bower でやるようにしてみた - blog.64p.org
bower 的なものを使わないと、「これどこから拾ってきたんや……」という感じになりがちなので、一応やったほうがいいでしょうと。 bower は直接使っていると、git のレポジトリをぶちまけるばかりで、あきらかに不要なファイルを配信することになり気持ち悪いなーと思っていたのですが、grunt なり gulp なりを使うと、いらないファイルは展開されないようです(ちゃんと main というプロパテ... 続きを読む
jolokia につないで雑に情報を見るツールを書いた - blog.64p.org
https://github.com/tokuhirom/jolokia-dashboard jmx/jolokia なサーバーがいっぱいたってるんだけど、いちいち jconsole の URL とか調べるのがダルい、という問題があり、そういったものをささっとアクセスできるようなウェブUIでも作っておくか、ということで作ってみた。 作ったのはいいんだけど、もっといい方法が発明されたのでこれはオクラ... 続きを読む
[java] どのブランチから作られた jar かをわかりやすくしたい - blog.64p.org
どのリビジョンが実際にデプロイされてるかをその場ですぐに確認したいというような要求がある。 そういうわけで、jar の中にリビジョン情報などを埋め込みたい。 そんなときには git-commit-id-plugin が便利。 https://github.com/ktoso/maven-git-commit-id-plugin 設定がごちゃごちゃと書いてあるが、ごちゃごちゃ書かなくても OK であ... 続きを読む
Perl6 の開発先端を味わう方法 - blog.64p.org
過去にも掲載したと思いますが、こんなシェルスクリプトで一発でインストールできます。 #!/bin/sh set -x set -e WORK=$HOME/.rakudo-build/ PREFIX=$HOME/perl6 mkdir -p $PREFIX mkdir -p $WORK rm -rf $WORK/rakudo git clone https://github.com/rakudo/r... 続きを読む
MySQL Connector/J を利用するときは cacheServerConfiguration=true を設定する - blog.64p.org
MySQL は一般に接続コストが低いことで知られており、コネクションプーリング等しなくても使えるので便利。 だが、Java 用の MySQL Driver であるところの MySQL Connector/J はデフォルトでは数個のクエリを接続時に発行しており、デフォルトのままでは無駄に負荷がかかる。 デフォルトでは以下のように4つの準備クエリが発行される! どう考えてもおかしいですよね!やばいっす... 続きを読む
mprofile を Python に移植した - blog.64p.org
http://developer.cybozu.co.jp/archives/kazuho/2009/07/mysql-539d.html SHOW FULL PROCESSLIST を 0.1 秒ごとに1000回取得し、その結果を眺めるという kazuho さんが書いた mprofile という便利スクリプトがあります。 これは Perl で書かれていて、それはそれでいいんですが Python ... 続きを読む
[perl] epoch 秒っぽいやつを置換する - blog.64p.org
https://metacpan.org/pod/from_unixtime をみてやってみた。 > cat sql_result id 1 created_at 1419702037 updated_at 1419702037 > perl -MTime::Piece -pe 's/\b(1[0-9]{9})\b/"$1(".localtime($1)->strftime("%F %T").")... 続きを読む
検索結果は 200 OK を返す - blog.64p.org
検索結果が0件なときに「存在しない」のだから404を返そうとするコードをたまに見るんだけど、これは 200 OK でやったほうが良い。 処理自体が成功したかどうかを返すのに HTTP status code を使った方がよろしい。 続きを読む
json に値を直接書く話 - blog.64p.org
昔の JSON は Object か Array しかルートに書けなかったけど RFC 7159 では true/false/null/number/string を書けるようになってて便利だっておじいちゃんが言ってました。 https://tools.ietf.org/html/rfc4627 https://tools.ietf.org/html/rfc7159 続きを読む
Java 8 Date and Time API の実践的なチートシートできたよ~ - blog.64p.org
Java8 を使いこなそうとすると、やはり Date and Time API も使いこなす必要がでてくる。 我々 Perl 畑出身の人間からすると、Perl の世界では DateTime/Time::Piece というモジュールが一般的に日付の計算に使われており、iandeth.さんのブログエントリがチートシートとしてよく知られている。このいつも見慣れたエントリの体裁で、一般的な日時の操作を実用... 続きを読む
JJUG CCC 2014 Fall で「Java で1から10まで書いた話」を発表してきました - blog.64p.org
Javaで1から10まで書いた話(sanitized) from Tokuhiro Matsuno コード書いた話が少ない中でわりと異色な感じでしたが、思ったより反応もあってよかったです。 続きを読む