CLOVER🍀

That was when it all began.

2012-01-01から1年間の記事一覧

HttpClientとConnectionManagerとCLOSE_WAITと

JavaでHTTP通信をやろうとすると、必ずと言っていいほど登場する、Apache HttpClient4(以前は、Jakarta Commons HttpClient3)ですが、これでちょっとハマっていた事象を見かけたので、軽くメモを。あ、その時に使われていたのは、Jakarta Commons HttpClie…

JDK 6から同梱されている、簡易HTTPサーバを使う

ちょっと試したいことがあって、HTTPサーバを用意したかったのですがApacheとかをインストールするのも面倒だったので、JDK 6から同梱されている簡易HTTPサーバを使ってみることにしました。が、実際に書いたのはJavaも面倒で、Groovyですが(笑)。参考にし…

Scalaでコレクションを並列に畳み込む

いや、Scalaに詳しい人からすると当たり前かもしれませんが、今まで知らなかったので…。通常、Scalaで例えばListの和を求めようと思うとfoldLeftとかreduceLeftとかを使うと思いますが、並列コレクションを使った場合って、これって並列に実行されると困りま…

JDK 7のFork/Join Frameworkで遊ぶ

JDK 7のリリース前から気になっていた、Fork/Join Frameworkを触ってみました。かなり今更感があるのは、気にしない方向で…。 Fork/Join Frameworkって? 詳しくは、こちらへ。 http://itpro.nikkeibp.co.jp/article/COLUMN/20110527/360769/?ST=develop&P…

Groovy 2.0.4

なんか、9月21日にGroovyの2.0.4がリリースされてたみたいですね。とりあえず、インストールしておきました。 $ groovy -version Groovy Version: 2.0.4 JVM: 1.7.0_07 Vendor: Oracle Corporation OS: Linux バグフィックスリリースだそうな。それにしても…

GroovyのOne Linerで、システムプロパティの値を出力する

また小ネタです。Groovyは、groovyコマンドの「-e」スイッチでOne Linerを実行することが可能ですが、これを使って現在のシステムプロパティを出力するコードを書いてみましょう。んで、できたのがこちら。 $ groovy -e 'System.properties.sort().each{prin…

Groovyで現在実行しているスクリプトのパス、またはファイル名を取得する

小ネタです。Groovyで、現在実行中のスクリプトファイルのパスおよびファイル名を取得する方法です。サンプルコード。 print_script_name.groovy println("path => " + this.class.protectionDomain.codeSource.location.path) println("fileName => " + new…

可変長引数を持つメソッドに付与する、@SafeVarargsアノテーション

可変長引数を持つメソッドをコンパイルした際の警告を抑制する、@SafeVarargsアノテーションというものがあるということを、前のJDK 7の言語仕様変更のエントリを書いている時に知りました。警告されたものは、場合によっては@SuppressWarnings付けるくらい…

JDK 7の新機能(主に言語仕様の変更)で遊ぶ

未だ仕事の現場ではJava 6を使っていますが、JDK 7もリリースされてupdate 6まで来たことですし、そろそろ1度触っておこうかなと思いまして。今回は、言語仕様系の変更を扱ってみます。ダイアモンド演算子だけは、さらっと触ったことがあります。NIO.2とかク…

Javaで使えるSSHライブラリ

最近、仕事でJavaからSSHを使用することが多いのですが、ちょっとどんなライブラリがあるか調べることになりまして…せっかくなので、結果をまとめてみることにしました。割と有名どころが多いので、知っている方はそれほど大した情報にはならないと思います…

GradleでWebアプリを作ってみようと…

タイトルの通り、今度はGradleのWar PluginとJetty Pluginを使ってWebアプリ…というかサーブレットプログラミングをやってみようと思ったのですが、うまくいきませんでしたという…。一応、以下を見ながらやったんですけどね、何がマズかったんでしょう? htt…

Gradle Daemonを使う

昨日はGradleをちょっと使ってみたわけですが、元がGroovyだからかどうかはわかりませんけど、とにかく重い印象があります。やっぱり、こういうのって1回きりの使い捨てより、常駐型でないと厳しいですよね。というわけで、ここでGradleが用意しているのがDa…

GradleでScalaを使う

今度は、GradleでScalaを使って「Hello World」をやってみましょう。基本、ユーザガイドに沿ってやっていく感じです。 http://www.gradle.org/docs/current/userguide/scala_plugin.html Scala用のプロジェクトを作る まずはディレクトリ作成。 $ mkdir hell…

GradleでGroovyを使う

Gradleで「Hello World」をするのにJavaを使ったわけですが、そもそもユーザガイドの最初がJavaから入っているわけで、Gradleのスタンス的には GradleはGroovyで書かれているけど、ビルドツールとしてはJava標準でGroovyもサポートしてるよくらいなのかもし…

Gradleことはじめ

ちょっと更新間隔が空いてしまいましたね。いろいろと予定があったり、暑さに負けたり(笑)していたのが主な原因ですが…。あと、NettyがそろそろVersion 4を出しそうな雰囲気なのですが、Alpha1からまだしばらくかかりそうなので、方向を変えてGradleを触っ…

JAXBと名前空間と

前回は、XML Schemaを書かずにJAXBを使用しましたが、次は入出力するXMLに名前空間を使用したいと思います。入力するXMLをちょこっと変更します。 val inputXml = """ |<data xmlns="http://d.hatena.ne.jp/Kazuhira/"> | <title>名簿</title> | <persons> | <person id="1"> | <firstName>Taro</firstName> | <lastName>Tanaka</lastName> | </person></persons></data>

JAXBをXML Schemaなしで使ってみる

最近、仕事でXMLとかJSONをデータの入出力形式とする開発をすることになったのですが、ここでどのライブラリとか使おうかなぁといろいろ思考中。JSONはJSONICでいこうと思っているのですが(Seasar2系使ってるし…)、XMLはどうしようかなと…。XStreamという…

JAXB RIで、アンマーシャル時のオブジェクトの生成をカスタマイズする

引き続き、JAXBネタです。アンマーシャルの際には、Constructor#newInstance(要はデフォルトコンストラクタ)が呼び出されているようですが、これをちょっと手を加えることでカスタマイズすることができます。対象はjava.xml.bind.Unmarshallerで、Unmarsha…

Leiningenで、依存関係を管理する

インストールに続いて、Leiningenでモジュールの依存関係の管理をしたいと思います。今回も、Commons Langにスケープゴートになっていただきましょう。というわけで、project.cljを修正します。 (defproject hello-lein "0.1.0-SNAPSHOT" :description "FIXM…

Leiningenことはじめ

そろそろ、Clojureでもビルド・依存関係管理ツールを触ってみようかと思います。Clojure界隈ですと、間違いなくLeiningenが候補となるので例に漏れずこちらで。 Leiningenとは? Clojureでのビルド・依存関係管理ツールで、プラグインなども豊富にあるようで…

Groovyの簡易依存関係管理ツール、Grapeを使ってみる

Groovy 2.0が出ましたね〜。機能的なところはあんまり見てませんが、なんか型チェックとかができるようになったんだとか?それって、Groovyで待ち望まれてたものなんでしょうか?よくわからんです…。ま、とりあえずバージョンアップはしておきましたと。とこ…

lazy valを使うと、裏で何が起こるのか?

Scalaの機能のひとつに、lazy valを使った遅延評価があります。毎回計算したくないのでメソッドじゃなくてフィールドにしたいけど、オブジェクトを生成した時にすぐに作成するにはコストが大きいような値を束縛するようなケースに使うわけですが…これの裏舞…

GroovyでScalaのOptionを書いてみる

今日の小ネタ、第2弾。ホント、なんとなく書いてます…。ScalaにはOptionというクラスがあって、標準ライブラリやら普通のアプリケーションのコードの至る所に出てきます。これは、どこぞのMaybeモナド…にあたるものだと思うのですが、これをGroovyで書いてみ…

Scala/Clojure/Groovyで即時関数

あまり意味のない小ネタです。JavaScriptで使われるテクニックとして、即時関数というものがあると思います。こういうやつですね。 immediate_func.js (function (firstName, lastName) { println("Hello! [" + firstName + " " + lastName + "]"); })("Taro…

Javaのコマンドラインでのモニタリング/トラブルシューティングツール

Javaアプリでトラブルがあったりすると、アプリケーションのログなどを読んで解析をすると思いますが、パフォーマンスやGC周りでのトラブルについては、JDKに標準付属しているコマンドを使用すると原因究明の手がかりがつかめたりすることがあります。自分も…

GCログに日付/時刻を出力させる

GCログの小ネタです。GCログのオプションとして、「-XX:+PrintGCTimeStamps」、「-XX:+PrintGCDetails」、「-XX:+PrintGC」(PrintGCDetailsを指定すれば、無くてもOK)は有名だと思いますが $ java -XX:+PrintGCTimeStamps -XX:+PrintGCDetails Monitor 0.2…

HotSpot VMの起動時に有効になる拡張オプションを調べる

「-XX:+PrintFlagsFinal」という拡張フラグを有効にすると、「-XX」で指定できる拡張オプションがどのように設定されているかを表示させることができます。これを利用して、「-version」オプションを使って以下のように入力すると… $ java -XX:+PrintFlagsFi…

実行中のJavaアプリケーションの拡張設定を確認/変更する

jinfoというJDKに付属しているコマンドラインツールを使用すると、Javaの起動オプションやシステムプロパティを確認できたり、「-XX」ではじまる一部の値については実行中に変更できるようです。詳しい説明は以下に書いてありますが、jstackやjmapなどと同様…

Clojureの->マクロと->>マクロ

今回もきっかけは「実践プログラミングDSL」からだったりしますが、ClojureDocsとかでもたまに見かけて気になっていた表現があります。Clojureのこれ -> とこれ ->> です。何だろ?と思っていたのですが、書籍にも出てきたので調べてみることにしました。 ->…

Object#withとClosureと

先週購入したこんな本を読んでいて、Groovyであんまり見慣れないコードが書いてあるのを見つけました。実践プログラミングDSL ドメイン特化言語の設計と実装のノウハウ (Programmer’s SELECTION)作者: Debasish Ghosh,佐藤竜一出版社/メーカー: 翔泳社発売日…