Java

H2のMODEオプション

昨日、同僚にH2のJDBC URLに「;MODE=MySQL」のようにオプションを付けることでH2の挙動をMySQL風、PostgreSQL風、Oracle風などのように切り替えることができるということを教えてもらいました。H2のドキュメントでは以下のあたりに書かれています。 http://w…

第六回 #渋谷java で発表してきました

弊社の@seri_kさんの主催で月一回程度の頻度で開催されている #渋谷java という勉強会があるのですが、普段JavaやJavaEEのdisばかりしているので、今回は私のJavaEE力を見せつけるべくセッション枠で発表させていただきました。 そんなトランザクションマ…

Vert.xのアーキテクチャ

Vert.xはJVM版のnode.jsとして紹介されることが多いのですが、実際はnode.jsよりもやや複雑なアーキテクチャになっています。 node.jsはシングルスレッド×ノンブロッキングI/Oで並列化を行います。そのためどこかの処理でブロックしてしまうとアプリケーショ…

そんなトランザクションマネージャで大丈夫か?

弊社の@seri_kさんが主宰されている「渋谷Java」という勉強会があるのですが、5月31日(土)に開催される第六回ではワタクシも以前からどこかで話す機会はないものかと4年ほどずっと温め続けていたJTAネタを「そんなトランザクションマネージャで大丈夫か?」…

ステップカウンタ 3.0.3リリースしました

多言語に対応し、差分の測定も可能なStepCounterの新版3.0.3をリリースしました。 https://github.com/takezoe/stepcounter今回の修正点は以下の二点です。 シェルスクリプト(*.sh)に対応しました。 差分カウンタのバグを修正しました。 大した修正ではあ…

主要IDEのJava 8対応状況

NetBeansやIntelliJはすでに昨年からJava 8対応のバージョンがリリースされていますし、EclipseでもようやくJava 8対応プラグインのRC版がリリースされました。が、やはり複雑なラムダ式の解析ができない場合があるなど各IDEのJava 8対応状況はまちまちのよ…

第五.五回 #渋谷java に行ってきた

4月から株式会社ビズリーチに入社したわけですが、会社の先輩である@seri_kさんが自社で開催している渋谷Javaに社員特権で飛び入り参加させていただきました。 http://connpass.com/event/5482/個人的に特に面白かったのはKotlinとGWTの話ですねー。まさかこ…

Apache MINA sshdでオレオレsshサーバを作ろう

GitBucket 1.12ではssh経由でのリポジトリアクセスをサポートしていますが、これに使用しているのがApache MINAのsshdです。 https://mina.apache.org/sshd-project/index.htmlApache MINAはNIOを使用したTCP/IP、UDP/IPベースのネットワークサーバアプリケ…

XLSBeans 1.2.3をリリースしました

ExcelファイルをアノテーションでPOJOにマッピングするライブラリ、XLSBeans 1.2.3をリリースしました。 https://github.com/takezoe/xlsbeansこのバージョンでの修正点は以下の通りです。今回は以前から要望の多かった型変換のカスタマイズなど、久しぶりに…

Excel方眼紙を支える技術

最近仕事でExcel方眼紙を読んだり書いたりするプログラムばかり書いているのですが、そんなExcel方眼紙を支える最新のJava技術を紹介したいと思います。 なにはなくともPOI JavaでExcelと言えば外せないのがPOIです。以前はJExcel APIという対抗馬もあったの…

OrientDB - 組み込みにも使えるドキュメント指向DB

アプリケーションに組み込んで使えるJavaベースのドキュメント指向DBを探していたところ、stack overflowでOrientDBというものが紹介されていたので少し調べてみました。 OrientDBは2010年頃から開発されており、以前はGoogle Codeを使っていたようですが昨…

JavaDay Tokyo 2013でIDEバトルやります

来週5月14日(火)に秋葉原で開催されるJavaDay Tokyo 2013で「Java IDEの最新トレンド」というセッションをやらせていただくことになりました。 https://oj-events.jp/public/application/add/64 IDEバトルというと数年前のJJUGのセミナーを思い出します。き…

Mavenでdeployするときのパーミッション

ssh(scp)でdeployする際、リポジトリ上のディレクトリやファイルはデフォルトではdeployしたユーザのみ書き込み可能なパーミッションになります。今まで特に困っていなかったのですが、複数人で作業していてローカルからdeployを行うと、別の人がdeployで…

Mavenプロジェクトをオフラインでビルドする

ライブラリの依存関係やスコープを管理できたり、様々なレポートを出力できたりと、なんだかんだいってもMavenは便利です。少しでも道から外れるとpom地獄が待っていますが、幸いにしてトラウマになるような事態に出会ったことはいまのところありませんw た…

Guava 10のOptionalを試してみた

Guava 10にOptionalというのが追加されたらしいので試してみました。 Optionalクラスは名前の通り、ScalaのOptionクラスやHaskellのMaybeモナドのようなもので、値をラップすることでnullを使わずに値が存在しないことを表現するというものです。これによっ…

Quartz 2.0の流れるようなインターフェース

QuartzはJBossなどにも組み込まれているJavaでは定番のジョブスケジューラですが、2.0にバージョンアップしてジョブの定義などを流れるインターフェースで行うようになっていました。これはびっくり。 ジョブはJobインターフェースを実装して作成したり、Job…

charts4j 1.3

Google Chart APIを呼び出すためのURLを組み立てるためのcharts4jというJavaライブラリがあります。 http://code.google.com/p/charts4j/ 今年の1月に1.3にバージョンアップしてMaven対応したようです。pom.xmlに追加する依存関係はこんな感じ。 <dependency> <groupId>com.google</groupid></dependency>…

iText5用のiTextAsian.jar

あちこちで書かれているように、iTextは5系にバージョンアップしてから日本語などを使う際に必要なiTextAsian.jarがそのままでは使えなくなってしまっています。 http://d.hatena.ne.jp/thunderhead/20100408/1270695544 http://abetuyo.net/blog/2009/12/it…

Compiler Assisted Localization (CAL10N)

log4jやslff4jで有名なCeki Gulcuさんが開発したライブラリで、簡単に言うとタイプセーフなResourceBundleのようです。なにかものすごく今さら感がなくもないのですが、Webサイトの記述によると特徴はこんな感じ。 タイプセーフ 文字コードはなんでもいい、n…

OSCacheのクラスタリング

OSCacheのクラスタリングは今までやったことがなかったのですが、わけあってやってみました。 まず、OSCacheのクラスタリング機能が提供してくれる機能についてですが、やってくれるのはflushの同期のみです。キャッシュエントリそのもののレプリケーション…

Maven2でhttpとhttps両方でプロキシを使う

Maven2ではリポジトリへのアクセスにプロキシを通す必要がある場合、/.m2/settings.xmlで以下のような感じで設定します。 <settings> <proxies> <proxy> <active>true</active> <protocol>http</protocol> <host>proxy.somewhere.com</host> <port>8080</port> <username>proxyuser</username> <password>somepassword</password> <nonProxyHosts>www.google.com|*.somewh…</nonproxyhosts></proxy></proxies></settings>

fastutilをソースからビルドしてみた

fastutilはTroveなどと類似の高速コレクションライブラリです。 http://fastutil.dsi.unimi.it/ 発想としてはプリミティブ型それぞれに最適化されたコレクションクラスの実装を提供するというもので、マップであればキーがintで値もintのマップ、キーがintで…

MockRunnerのJDBC Mockの便利機能

先日紹介したMockRunnerのJDBC Mockですが、実戦投入を前提にチームのメンバーに見てもらっているのですが、いろいろと機能があるようです。たとえば以下のような感じでSQLの期待値の比較方法を制御することができます。 // 大文字・小文字を無視 jdbcTestMo…

MockRunnerのJDBC Mockを使ってみた

S2UnitはDBを使ったユニットテストの支援機能としてExcelファイルからDBにテスト用データを投入したり、ExcelファイルとDBの内容を比較したりすることができます。ただ、実際にやってみるとわかるのですがこのExcelファイルのメンテナンスコストが馬鹿になり…

jmemcached + Java memcached clientでcasが動かない

jmemcachedにJava memcached clientでアクセスするとcasコマンドの実行時に必ず以下のような例外が発生してしまいます。 20:59:42.360 [New I/O server worker #1-1] ERROR c.t.j.p.t.MemcachedResponseEncoder - error java.lang.NumberFormatException: Fo…

jmemcachedを使ってみる

jmemcachedはJavaベースのmemcachedサーバです。実用というよりも、Javaでmemcachdを使うようなアプリケーションを開発する際にローカル開発環境やCIなどテスト用途に使うのがよいと思います。 http://code.google.com/p/jmemcache-daemon/ Mavenを使う場合…

GroovyでJavaのリモートデバッグができる「YouDebug」

Javaのデバッガを叩くライブラリとかないかなーと思って探していたのですが、やはり世の中にはあるものです。 http://youdebug.kenai.com/ Hudsonの作者でもある川口さんの作とのこと。さすがにツボをついてますねー。日本語での解説は以下が参考になります…

Ehcache vs OSCache

オープンソースのJavaのキャッシュライブラリというとEhcacheとOSCacheが有名です。どちらも基本的な機能は似ていますが、いろいろと違いもあります。 単純に機能面で見るとEhcacheのほうがJMXでモニタリングが可能だったり、トランザクションに対応していた…

Ehcacheの設定とか使い方とか

ehcache.xmlでのキャッシュ設定 Ehcacheではクラスパスルートのehcache.xmlというXMLファイルで設定を行います。設定項目はかなり多岐に渡りますが、中でも肝になるキャッシュの設定について調べてみました。もちろんここで書いている項目以外にもクラスタリ…

Eclipseのコンパイラとjavac

public class Example { private static <T> T hoge(Object obj){ return (T) obj; } public static <T> T hage(Object obj){ return hoge(obj); } } みたいな感じで書くとEclipseだとOKだけど、Maven(というかjavac)でコンパイルすると下のメソッドから上のメソ</t></t>…