その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

java

S3にホストされているMaven RepositoryをMaven (pom.xml) から参照する

S3にホストされているprivateなMaven Repositoryというものがあり、それをMaven (pom.xml) から参照する必要があったのでの方法についてのメモ。Gradleとかsbtとかからは割と使ったことはあったのだけれど、Mavenからは無かったので…… <project> ... <repositories> <repository> <id>your-repositor</id></repository></repositories></project>…

protoc-gen-java-dynamodb書いた / protoc pluginはじめて書いた

protobufでスキーマを書いて protoc-gen-java-dynamodb に食わせると、そのスキーマのJavaの生成コードに「生成されたDynamoDBのエンティティクラスのコード」を良い感じにねじ込んでくれるというprotocプラグインを書きました。 syntax = "proto3"; package…

eclipse/leshan で最近直した問題について

かなりニッチな話題ですが、OMA LwM2Mのサーバ・クライアントのJava実装であるEclipse Leshanにパッチを送って取りこまれたのでそのご報告です。github.comLeshanのクライアントライブラリには予期せぬ例外が発生した際にクライアントアプリケーションがスタ…

GitHub Packagesにホストされたprivate packageをsbtから使う

表題のとおりです. GitHubのオフィシャルドキュメントを読むとmavenで使う方法やgradleで使う方法は紹介されているのですがsbtで使う方法が調べてもシュッと出てこなかったのでメモとして記す次第. 基本的には以下のようにmavenやgradleと同様にbuild.sbt…

Javaの非同期アプリケーションのflame graph profileを取る

netty を使うような非同期 Java のアプリケーション (例えば Play2 Web アプリ) の flame graph profile を取るという話題です.色々な方法が考えられますが,jvm-profiling-tools/async-profiler を利用するのが最も手っ取り早そうな感じがしたので,その方…

jackson-databind で int の取りうる値を超えた場合の挙動

Javaの話題です.jackson-databind を使って JSON のデシリアライズを行っていて,数値を int にマッピングしている場合,その値が int (32bit) の取りうる値を超えた時の挙動が「バージョンによって異なって」います. 以下に挙げる挙動は 2.9.3 から 2.9.4…

CompletionStage<T>な変数を同期的に処理したいんですけど〜ってとき

Javaの話です.CompletionStage<T>を返却するようなメソッドがあって,それを同期的に処理したい (単体テストを書くというシーンが最も多いでしょう) ということが生きているとあります.しかしCompletionStageはget()のようなメソッドが生えていないので同期的</t>…

Jacksonでtop levelのpropertyを省略してMap<K, V>をserializeしたいんですけどってとき

public static class Something { private Map<String, String> prop; } をJacksonでserializeすると { "prop": { "foo": "bar" } } と,トップレベルにpropのようなpropertyが出てくるので微妙……となるシチュエーションがまれによくあります.で,どうすると良いかというと </string,>…

arnoldというJavaのbuilderライブラリを書いた

今時builderライブラリも無いだろという感じですが,書いたのです.github.comMotivationにも書いているのですが,普通に作ったJavaのbuilderは不完全なインスタンスを作成できる可能性を孕んでいます.注意深くコードを書けば問題ないかもしれませんが,え…

Multiple projectなgradleのprojectでcheckstyle pluginを有効にする

Multiple projectなgradle projectだと, apply plugin: "checkstyle" と書いてもそれだけではcheckstyle pluginがうまく動かない.おそらく Unable to create Root Module: config ... などというエラーとともに死ぬであろう. というのも,gradle checksty…

MyBatis + GroovyでMapperを作っている時に良い感じでWHERE IN使いたいんですけど〜って時

MyBatisのMapperをGroovyのannotationを使って書くと何かと便利 (主に「XMLを書かなくても良い」という点で便利) なわけですが,そんな中で「WHERE IN」を利用したSELECTを @Select annotationベースでどうやって書くのかという件です.要は SELECT * FROM u…

GuiceとSpringを共存させたい

もともとGuiceを使っているプロジェクトがあってそれをSpringに移植したい,だとか,Guiceをバリバリ使っているコンポーネントをSpringのアプリに組み込むことで資源の再利用をしたい,だとか,そういう事になることがある.あるのです.この前実際になった…

Springの起動時に好きな画像をAAにして表示する

Spring Boot 1.4.1 1.4.0 (訂正しました.詳細は id:dayflower さんのコメントを参照下さい) の機能として,Springの起動時に任意の画像をAAとして表示できる機能が追加されたようです. なんかここに書いてた.www.infoq.comやり方は非常に簡単で, banner.…

tinyorm 1.11.0 is out

tinyormのversion 1.11.0が出ました.Maven Repository: me.geso » tinyorm » 1.11.0新しい機能としてはに書いたように Connection を2つ持てるようになった Lazily な connection borrowing に対応した という2つが挙げられます. rc1の時点では中々にバギ…

Guice で独自の scope 切って inject したいって時

これを見ると良い.要は CDI のようなものをやるという話である. CustomScopes · google/guice Wiki · GitHub ここに書かれているように,1. 任意の Scope を表す annotation を作る 2. Scope を実装する 3. Scope の実装と annotation を紐付ける (これは …

tinyorm 1.11.0.rc1 is out

tinyorm 1.11.0.rc1 が出ました.以下の様な変更が入っています. Connection を2つ持てるようになった 「Read/Write できる connection」と「Read だけができる connection」の2つの connection を持てるようになりました.tinyorm は内部でクエリのタイプ …

thin-cacheというJava向けのキャッシュライブラリ書いた

thin-cacheというキャッシュライブラリ書いた.いつものようにmaven centralにも置いてある.そしていつものようにJava 8以降が対象となっている.maven centralMicroservicesみたいな感じでサービスを作っていると,他のサーバにrequestを飛ばして得られた…

Docuss というテストとドキュメント出力を一緒にやるライブラリ書いた

Docuss というものを書いた.Java のライブラリ.なお Java 8 以上じゃないと動かない.どんなライブラリかというと, HTTP request を対象 URI に送り,それによって得られた response の内容をテストする為のラッパ的な機能を提供する response のテストが…

sprint という Java の string formatter を書いた

sprint という Java 向けの String formatter を書いた.Maven Central にも置いてある.http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22net.moznion%22%20AND%20a%3A%22sprint%22sprint は Sprint#ff() というメソッドを提供している.使い方としては…

redis-script-manager 書いた

p5-Redis-Script の Java 移植になります. Redis を使ってて困った時にインターネットを徘徊してると @shogo82148 さんのブログにたどり着く事が多く,日頃お世話になってるわけですが,今回は Redisのトランザクション・スクリプト・ランキングを扱うPerl…

Server::Starter + Java 環境下で JMX による監視を有効にしていると graceful restart 時に不具合が出ちゃって困るんですけど〜って時

割とニッチな話題ではありますが…… Server::Starter を使ってプロセスを立ち上げると graceful restart を簡単に実現できるなど便利な点が多く,LL 時代はこれでやっていっていたわけですが,残念なことに Java からその Server::Starter テクノロジを利用す…

Web Application Server を動かす時の Java8 起動オプションのメモ

一般的な Web Application Server *1 を Java8 で動かすにあたって,最近有効にしている起動オプションについてメモ. 何か間違っていたり,あるいは「こっちの方が良い」みたいなのがあれば教えて下さい. -server server mode で起動させる (指定しないと …

Guice で generics の仮型引数の実体 class (ParameterizedType) を上手いこと inject する

タイトルだけでは何を言っているかよくわかりませんが, public class Foo<T> { private Class<T> clazz; ... public void something() { // 例えばここで clazz を使って何らか処理をする System.out.println(clazz); } } みたいな class があるときに,ここの cl</t></t>…

mysql Connector/J の設定で効きそうなやつ

mysql Connector/J を使う時に色々効きそう (あるいは効かなそう) な設定項目を調べたのでまとめておくこととします.なお,対象としている mysql のバージョンは5.6 (以降),Connector/J のバージョンは5.1.34 (以降) です. Connector/J は設定できる項目…

HikariCP で leakDetectionThreshold を設定して connection leak を検出する

HikariCP のような connection pool を利用する上で犯しがちなミスとして,connection leak (pool から connection を borrow しっぱなしで pool に返却しないこと) があると思います.connection leak を放っておくと pool 内の connection が枯渇してにっ…

HikariCP で kamipo TRADITIONAL を有効にする

さて2015年も暮れになってきましたので,各位に於かれましては常識の如く kamipo TRADITIONAL を有効にしていることと存じます. kamipo TRADITIONAL とはなんぞや,という方は以下のエントリが参考になりますからご一読下さい. さて Java で kamipo TRADIT…

HikariCP のステータスを JMX 経由で取得する

HikariCP を使っていると,connection の状態をモニタリングしておきたくなると思います.例えば active な connection と idle 中の connection の比率を見たかったり,あるいは connection がリーク (アプリケーションが connection を borrow するだけし…

Java で 任意個の文字を何らかのデリミタ区切りで記述した文字列がサクッと欲しいみたいなとき

こう書くと手っ取り早そう. IntStream.rangeClosed(1, 10) .mapToObj(ignored -> "?") .collect(Collectors.joining(",")); // => "?,?,?,?,?,?,?,?,?,?" 次世代っぽい!!![追記] id:nowokay さんから以下の方が良いのではという指摘が.確かに分かりやす…

Jesque を頑健に使うために RobustWorkerPool というのを書いた

8/16 (日) に京都でハッカソンが催されるとの事だったので遊びに行って,表題のものを作ってきました (実際には大部分は予め作っていた).Jesque は Resque の Java 実装版で,今やっているやつではこれを使った JobQueue - Worker なシステムの実装を進めて…

gimei-java 作った

世は空前の gimei ブームです.この前 go 版が出ましたね. というわけで,というわけではなく,業務で必要だったので gimei-java を作ってしかるべきところ (つまりmaven central) にあげました.moznion/gimei-java Ruby には gimei という gem があり, g…