2014年07月15日

さいきんは空前の Java ブームの兆しが高まっているので、練習を兼ねてlogminimalっていうライブラリ書いてみました。

import static jp.yappo.logminimal.Log.*;
public class Foo {
    public void var() {
        critf("crit log");
        warnf("warn log");
        infof("info log");
        debugf("debug log");
        critf("crit log %s", str);
        warnf("warn log %s", str);
        infof("info log %s", str);
        debugf("debug log %s", str);
    }
}
って感じで使えます!かんたん!

デフォルトの出力内容とかは以下のテストが通る感じの出力です。

		assertEquals(LogTest.logResult, "[2014/06/10 18:19:20] [CRITICAL] log 0001 at jp.yappo.logminimal.LogTest.test(LogTest.java:35)");
warnf("%s %04d", "log", 1);
assertEquals(LogTest.logResult, "[2014/06/10 18:19:20] [WARN] log 0001 at jp.yappo.logminimal.LogTest.test(LogTest.java:37)");
infof("%s %04d", "log", 1);
assertEquals(LogTest.logResult, "[2014/06/10 18:19:20] [INFO] log 0001 at jp.yappo.logminimal.LogTest.test(LogTest.java:39)");
debugf("%s %04d", "log", 1);
assertEquals(LogTest.logResult, "[2014/06/10 18:19:20] [DEBUG] log 0001 at jp.yappo.logminimal.LogTest.test(LogTest.java:41)");

critf("foo\nbar\rbaz\tblha");
assertEquals(LogTest.logResult, "[2014/06/10 18:19:20] [CRITICAL] foo\\nbar\\rbaz\\tblha at jp.yappo.logminimal.LogTest.test(LogTest.java:44)");

ログの出力先は lambda で差し替えられます

Log.setLogger((time, type, message, rawMessage, trace) -> {
...
});
みたいにすればいいですね。

1個の java file で作ってるのでコピペでつかえてべんり!

Posted by Yappo at 17:13 | Comments (0) | TrackBack (0) | casual java

先週末 Oracle で開催された MySQL Casual #6 でBetter Groonga Replication という題名で Mroonga 使わずに Groonga のレプリケーション構成作って便利に使ってるよ!って話をしました。

普通に話したら Mroonga を使えってマジレス返されるので、なんで Mroonga を使わないで Groonga 単独で頑張ったかの理由などの話をしてたら時間かかりすぎたので9月に開催される Groonga のイベントでもうちょっと詳細の実装などを話そうとおもいましたまる

Posted by Yappo at 16:21 | Comments (0) | TrackBack (0) | tech

2014年07月09日

最近は他の言語とかの勉強をちょっとづつしてるんですが Java8 がでてぞんがい普通っぽくなったらしい Java を特に使ってみようと思って色々覚えようとしてるなかで、逆に Perl への気づきや学びやつらさあるところ等を発見する機会になったので、外から見た Perl という観点で

Java For Perl Mongers

というタイトルでトーク募集しています。

JPA の会長が

って言ってて危機感感じたので、僕しゃべりたいのでJava For Perl Mongersのページの中にあるソーシャルボタンでガンガン拡散してもらえると嬉しいです!

よろしくおねがいします!!!

Posted by Yappo at 13:58 | Comments (0) | TrackBack (0) | Perl

2014年06月19日

皆さんはプロジェクトのリソースとしてエクセルの xlsx ファイルを使う事があると思います。
何てったって事務職の人ですら楽々使えるスーパー優れた UI なので、 web の管理画面とかを作り込むよりもエクセルでシート作ってもらってしまった方が早いケースも多いんです。現実の世界では。

で、普通の人は TSV にするだの CSV にしてもらうだのすると思うんですが、一方的にデータ貰うだけなら良いんだけど、相手とやり取りする時にはどうしても xlsx ファイル経由とかにしないと相手がこまる!やっぱりエンジニアのエは優しさのエだから相手に優しくしないとだめです。

で、 xslx ファイルでエンジニア以外の人とデータやり取りするとやっぱり、バージョン管理したくなるのが人情です。
でも xslx ファイルはバイナリファイルなので git diff とかが残念です。。。

って事で作っちゃいました。

https://github.com/yappo/p5-git-xlsx-textconv.pl

xlsx2txt みたいなコマンドは結構あるけど、僕が作ったのは git diff した時に見やすさを重視してます。
だいたい下の画像のようになります。

シート名を行頭に持ってくるので複数のシートでもだいじょうぶです。
行名や列名を入れると行挿入で死ぬので入れてません。簡単ですね。

README.md の通りに install して .gitconfig を設定して プロジェクトの .gitattributes を設定すればすぐに使えます。

僕の用途だと1行に意味がある感じのシートだからわりとこれで良いけど、列と行を特定したセルにそれぞれ意味があるなら行列を1行で区切る感じの出力にしたら便利でしょう。

その他

折角だけど git merge も全自動で良い感じにするラッパー書きたかったけど git には良い感じに merge warpper script を指定出来なかったようだ。。

あと .xlsx って実は zip file で中身は XML だったから shell だけで解決させようと思ってたんだけど、データ構造わりと面倒くて諦めた。

もし Perl とか使うだけで発狂するような方がいたら Ruby に移植するなりお好きにしてください。その場合のライセンスも好きに設定していいです。

enjoy!

Posted by Yappo at 21:13 | Comments (0) | TrackBack (0) | tech

2014年06月09日

perl -E 'my $x = pack "C", 160; $x = "A${x}B"; say(join ",", unpack "C*", $x); $x =~ s/\s//; say(join ",", unpack "C*", $x)'
65,160,66
65,66
perl -E 'my $x = "ム"; say(join ",", unpack "C*", $x); $x =~ s/\s//; say(join ",", unpack "C*", $x)'
227,131,160
227,131

160 = 0xA0

UTF8 string に対して、うっかり byte data に対して s/\s// とかすると 0xA0 を使っている UTF8 string が broken どす。

\s is space character, and includes 'no-break space'.

Posted by Yappo at 22:35 | Comments (0) | TrackBack (0) | Perl

2014年06月04日

LINE株式会社という会社が月イチでdeveloper meetupを福岡でやっている、ついては第四回目でしゃべってくるがよい、ということになったので、いってきた。わーい博多だ。

http://yappo.github.io/talks/20140528-linedm04/

話題はどうしようかと思ったけど、普通に自分のお仕事で考えている話すか、ということでエンジニアの考え方の概要、どういう考え方で働けばいいのか、実務でどうかの話もからめてひと通りやった。30分の予定が40分近い話になってしまった。

もうちょっとコードレベルの話とかでも良かったんだけど、もう一人の資料みたらそういう感じだったので逆ばりして、意識高いだけのなんちゃってエンジニアっぽい感じのふわっとした話をしてみました。

こんな話でよかったかなあと思ったけど、懇親会で「バッチスクリプト動かす時に勇気居るの共感した」しかもお仕事で! という人に何人も話しかけてもらったりもして、それなりに興味を持ててもらえる話ができたのかなという気はした。参加者も登録数(定員いっぱい40人)くらいは実際に来場されてたらしい。よかったよかった。

来月以降はまた全然違う方向の技術の話をしに別の人が行くと思うので、今回の話がまったく楽しめなかったという方も、これに懲りずに参加してもらえると良いのではないかと思います。

雑感
死ぬほどうビールを飲んだので1泊のうちの出費がほとんどなかった。福岡は魅力的な場所だが長期滞在したらサイフだいじょうぶそう。

冗談は置いておいても、U/Iターン採用みたいのもやるらしいし福岡良い所だから移住して働くでも良いと思うんじゃないのかな?

あと、今回の話をよりちゃんとコード書ける人レベルに落とし込んだ話を YAPC::Asia 2014 でやります。

Posted by Yappo at 16:16 | Comments (0) | TrackBack (0) | 適当