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

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

java

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…

java-db-transaction-managerが出ていた

大昔の話ですが,java-db-transaction-managerというのを書いて,リリースしていました.moznion/java-db-transaction-managerPerlのTransaction ManagerであるDBIx::TransactionManagerのJava移植版です.シンプルなやつが欲しかったので. 機能としてはDB…

tinyormで任意のcolumn名を指定できるようになってた

MySQL の lower_case_table_names について,テーブル名とデータベース名の中の大文字小文字について - その手の平は尻もつかめるさこういう話があり,column名を小文字オンリーのsnake_caseでやりたかったりすることがあります. 今までのtinyormではRow Cl…

Jettyを使ったリバースプロキシ構成のときに本当のアクセス元の情報が知りたいんですけど〜って時

Jettyを使ったリバースプロキシ構成をやっている時に,プロキシではなく本当のアクセス元の情報を知りたいという事があります.例えばHttpServletRequest#getRemoteAddr()とかで取りたい,みたいな.というかほとんどの場合でそういった欲求があります. そ…

Java でテストカバレッジを取る (JaCoCo編)

一種の指標になるので,なんだかんだでテストカバレッジは取りたくなります.Javaでそれをどうやるかをサッと検索すると,Coberturaを使う方法とJaCoCoを使う方法が引っかかると思うんですが,Coberturaの方はJava8のコードが含まれているとJavaNCSSの兼ね合…

URIBuilderTinyというのを書いた

URIBuilderTinyというやつを書きました.Maven Centralにもあがっています.盛り上がってまいりました.moznion/uribuilder-tinyhttp://search.maven.org/#artifactdetails|net.moznion|uribuilder-tiny|2.0.1| 一般的なソフトウェアエンジニア諸氏におかれ…

donovan という1枚 java ファイルを書けばウェブアプリを立ち上げられる WAF を書いた

※ WAF: Web Application Framework 表題の通りです.Maven Central にも上がっています.moznion/donovan avans という tokuhirom さんが書いた WAF があり,Sledge や Amon2 の流れをくむシンプルで良いフレームワークがあって,最近はもっぱらそれでウェブ…

Java でパターンに基いてランダムな文字列を生成できる random-string というのを書いた

Java 版の random-string を書いたので Maven Central にアップしました.moznion/java-random-string これはパターンに基いたランダムな文字列を生成する君です. 他言語の実装には Perl の String::Random や JavaScript のString_random.js などがありま…

Servlet コンテナによって HttpServletRequest#getPart(String name) の挙動が違う

Part gotPart = httpServletRequest.getPart("hoge"); みたいなコードがあった時,送られてきた multipart リクエスト (httpServletRequest) に1つも part が含まれていない場合の挙動が Servlet コンテナによって変わってきます.送るリクエストはこんな感…

Servlet 3.0 から導入された multipart 関連の処理を Tomcat で有効にする術について

servlet 3.0 の multipart 関連処理を有効にする方法 - blog.64p.org これの関連なんですが.こういう設定をしておかないと,HttpServletRequest#getPart() や HttpServletRequest#getParts() が null を返してきてマジ意味わからん!!!! みたいな感じの…

Java で新しくプロジェクトを始めるときに何を使ってセットアップすべきか

Java で新しいプロジェクトを立ち上げる時, Maven Archetype を使う 独自のセットアップスクリプト (LL とかで書かれたやつ) を使う という2つの方法が考えられると思います (他にもあるかも知れない). さてどちらが良いのか. Maven Archetype を使う 利…

Maven Archetype で文字列を置換したりする

Maven Archetype で archetype を作るとき,文字列を置換したくなることがあります. 例えば $artifactId に foo-bar と入っている時にこれを foo_bar という風に s/-/_/g したくなる事などがあるでしょう.世の中色々あるのです.そういう時は以下のように…

Maven Archetype で ## がコメントとして扱われるのでなんとかする

Maven Archetype で archetype を作る時,archetype に含めるファイルの中に ## が入っていると行のそれ以降がコメントとして扱われる為,内容が抜け落ちてしまうというような事があります. 例えば Markdown 形式のファイルなんかを archetype 内に含めてい…

capture-output-stream というのを書いた

こちらも温泉で出したやつです.Maven Central にもアップしました.moznion/capture-output-stream http://search.maven.org/#artifactdetails|net.moznion|capture-output-stream|1.0.0|jar 標準出力や標準エラー出力をキャプチャする君です.キャプチャし…

javadocio-badges というのをつくった

先週の3連休で温泉シバソンというイベントを有馬温泉でやってきて,そこで書いたアプリケーションがまあまあ使えるレベルに達したので公開しました. シバソンについての詳細は以下のブログを見ていただけると良いと思います *1.僕はこのハッカソンで MacBo…

java-mysql-diff が出た

java-mysql-diff が出ました.Maven Central にもリリースしています.moznion/java-mysql-diffhttp://search.maven.org/#artifactdetails|net.moznion|mysql-diff|1.0.0| 本パッケージは id:onishi さん作の mysqldiff の Java 8 移植版です. 最近 Java の…

java-mysql-namelocker が出ていた

そういえば java-mysql-namelocker が出ていました.Maven Central にもリリースされています.moznion/java-mysql-namelockerhttp://search.maven.org/#artifactdetails%7Cnet.moznion%7Cmysql-namelocker%7C1.0.0%7Cjar Perlには Mysql::NameLocker という…

Javaで空いているポート番号を取ってきたい

Javaで空いてるポート番号取ってきたかったんで,以下のように書いたらポート番号取れて便利でした. int port; try (Socket socket = new Socket()) { socket.bind(null); port = socket.getLocalPort(); } ドキュメントによると,Socket#bind()の引数にnul…

Maven でFindBugs のレポートを出力させる方法

またもやMaven の話です。 FindBugs FindBugs という大変素晴らしい静的解析ツールが存在している事は皆さんご存知の事でしょう。 FindBugs はソースコード中に潜在的に存在しているバグやバグの原因となる部分を検出してくれるので非常に助かります。 大体…

Maven でjar ファイル (apk ファイル) の署名を自動化する方法

前エントリで言いたい放題言っていましたが、Maven の話です。 この関連の情報は豊富にありますが、分散している感があるのでまとめました。 本題 ソフトウェアをリリースする際に必要な署名作業を、いちいち手動でやるのはだるいので、 それをMaven にやら…

JSONObject のput メソッドを使うとWarning がもりもり出るので僕、不満足!!

json-simple のJSONObject でサポートされているput() メソッドを使うと、 Warning がもりもり出て、画面が黄色くなってしまうので大変アレです。 ↓こんな感じで書くと、obj.putが警告を出してくるので精神が不安定になります。import org.json.simple.JSONO…

Vim でJava を書く環境を整えましたが、IDE で良い気がします

Vim でJava を書く環境を整えました。 結論 Eclipse 等のIDE を利用したほうが良いと思います!!! 理由は色々あるので後述します。 あと、Eclipse だとVrapper というVim のキーバインドを再現するプラグインがあるので、 それを使えばある程度幸せに暮ら…

Jetty を使ってWeb サーバを立ち上げ、更にSSL 接続を実装する

最近、Jetty を使ってJava でWeb サーバを立ち上げたので、その方法について備忘録的に書きます。 Jetty ? Jetty は、100%JavaのJava Servletコンテナ・Webサーバである。WebSocketなどのプロトコルもサポートする。Jetty はオープンソースプロジェクトとし…

getResourceが便利。今まで知らなかったのが悔やまれる。

お疲れ様です。いかがお過ごしでしょうか。 はい。Javaです。 JavaのClassLoaderクラスでサポートされているgetResource()便利で逆に凹みました。 皆さんご存知かとは思いますが、便利だったので備忘録として…… getResource() ? JavaTM 2 Platform Standard …