CLOVER🍀

That was when it all began.

2014-02-01から1ヶ月間の記事一覧

InfinispanのRemote Queryを試してみる

Infinispan 6.0.0から追加されたHot Rod ClientでのRemote Queryですが、以前はProtocol Buffersが必要だったこともあり、ちょっと敬遠していました。で、最近になってまずはProtocol Buffersを使ってみたので、今度はRemote Queryを使ってみることにしまし…

Scalaでアノテーションの引数にアノテーションを指定する

出典、コップ本第2版P.552。Scalaでは、アノテーションの引数に直接アノテーションを書くことができません。例えば、以下のようなアノテーションを用意して src/main/java/Complex.java import java.lang.annotation.ElementType; import java.lang.annotati…

Protocol Buffersを試してみる

ちょっと理由があって、Protocol Buffersを試してみることにしました。Procol Buffers https://developers.google.com/protocol-buffers/?hl=jaこの手のシリアライゼーション系のライブラリは、ほぼ使ったことがありません。XMLとかJSONならまあ、ですが…。P…

Futureを使う時にJavaのExecutorServiceを利用する

ScalaのFutureといえば、 import scala.concurrent._ import scala.concurrent.ExecutionContext.Implicits.global をimportしてfuture関数を使うんだよみたいな話だと思いますが、Javaのjava.util.concurrent.ExecutorServiceやjava.util.concurrent.Execut…

Scala.jsで遊んでみよう

ScalaコードをJavaScriptにコンパイルする、Scala.jsというものがあるらしいです。Scala.jsを使って、ScalaをJavaScriptにコンパイルする http://www.infoq.com/jp/news/2013/06/scalajsこれを使用すると、ScalaのコードをJavaScriptにコンパイルすることが…

Scala.jsのArrayや、オブジェクトリテラルなどを使ってみる

先ほどのScala.jsのチュートリアルサンプルに加えて、JavaScriptでのArrayやリテラルなどをいくつか。とりあえず、こんな感じにimportしたとしまして。 import scala.scalajs.js import scala.scalajs.js.Dynamic.{global, literal} Array。 val array = new…

Threadのスタックトレース系のメソッド

たまに簡易的にデバッグする時に new Exception().printStackTrace(); 的なことを書くことがあるのですが、Threadクラスで似たようなことができるのを最近知りました。というか、最近知りましたネタ多いですね、このところ。Thread#dumpStack、Thread#getSta…

+:と:+でSeqに対してパターンマッチ

Scalaでパターンマッチによる分解で、よく紹介されるのはListだと思います。例えば、このような変数を定義して val xs = List(1, 2, 3) このようなパターンマッチを行います。 xs match { case 1 :: 2 :: 3 :: Nil => println("matched!!") case _ => // こ…

Scalaのアップキャスト?

とあるエントリを見て、Scalaのアップキャストっぽい構文を見て、「そんなのあったの?」ってところから。asInstanceOfがキャストと思ってましたけど、そういればこれってダウンキャストでしか使ったことないですしね…。ちょっと試してみます。REPLを起動。 …

Hibernate Search × Infinispan × WildFly

WildFlyに、Hibernate Searchが同梱されるようになったと聞き、せっかくなので試してみることにしました。Hibernate Searchが使用する、Luceneのインデックスの保存先はInfinispanとします。また、最終的にはWildFlyにCache Containerを定義して、クラスタリ…

JPAのSecond Level Cacheを試してみる

WildFlyもリリースされ、Infinispan 6.0.1.Finalが同梱されていることですので、JPA(実装はHibernate)のSecond Level Cache(以降、L2キャッシュ)を使ってみることにしました。以前にJBoss AS 7.1.1でやっていたころは、うまくいかなかったんですよねぇ……

WildFlyにXA DataSourceを登録する

WildFly 8.0.0.Finalがリリースされましたね!WildFly http://www.wildfly.org/これで、Java EE 7が始められます!やってる暇が、どれだけあるのかという疑問はありますが…。とりあえず、使い始める前にXA DataSourceくらい登録しておこうと思います。 WildF…

Scala ARMを使ってみる

少し前にScalaz Effects IOを使ったプログラムを書いてみましたが、今回はScala ARMを使ってみたいと思います。まあ、IO周りのライブラリを試してるだけですが、Scala ARMの場合はfor式を使ってリソースを扱うことができるので個人的には興味を引くのですが……

HazelcastのMapStoreを試してみる

Twitterで、「Hazelcastを家で使ってるけど、サーバを再起動するから、データはDBで持っていた方がいいな」みたいなツイートを見かけまして。簡単に済むのなら、毎回ロードするでいいのでは?と思いつつも、もうひとつの解としては何らかのストアにエントリ…

ScalaでIOを扱うには…から、Scalaz Effects IO

Scalaで、IOを扱う時のライブラリって、何がいいんでしょうね〜と思ったところから。Stack Overflowには、こんなスレッドがありました。Recommended Scala io library http://stackoverflow.com/questions/18171104/recommended-scala-io-libraryここで紹介…

実行時にクラスパスを追加する

仕事中に、ユニットテストをやっていて実行時に動的にクラスパスを追加したくなる状況がありまして、その時に使った処置。通常なら、ClassLoaderを作ってそこへのロード対象のURLを与えてどうにかするところでしょうが、既存のClassLoaderに追加したいという…

Java SE環境でCDIを使う(Weld SE)

CDI

CDIの参照実装のWeldですが、Java SE環境でも使えるんですね。どこかで聞いたことがあった気がしますが、忘れてました…。Weld http://weld.cdi-spec.org/そんなに情報はないですが、オフィシャルのドキュメントと18.4. Java SE http://docs.jboss.org/weld/r…

CDIのBeanManagerを使う

CDI

今まで@Injectとか@Qualifierとかを使ったインジェクションは少し試してきましたが、手動でBeanを取得するようなやり方はやってこなかったので、今回試してみることにしました。Seasar2でいうとS2Containerを直接使う、みたいな感じですね。CDIだと、BeanMan…

Infinispanのトランザクション設定を、いろいろ試してみる

先ほどAtomicMapを使ってみて、いくつか疑問に思ったことがあったので、InfinispanのCacheのトランザクション設定をバリエーションを並べて試してみました。やったことは、設定的には ロック戦略は楽観的、分離レベルはREAD_COMMITTED ロック戦略は楽観的、…

InfinispanのAtomicMapを使ってみる

前々から、これ何だろう?と思っていた、InfinispanのAtomicMapを試してみます。特にドキュメントには記載はありませんが、org.infinispan.atomicパッケージという存在と、たまにテストコードが更新されているので、気になってみました。 AtomicMapとは? と…

JavaMail 1.5を使ってみる

最近、ちょっとJavaMailを使ってメール送信するプログラムを書いたのですが、JavaMail 1.5から?ライブラリの構成が変わっていたので、ちょっとご紹介。JavaMail http://www.oracle.com/technetwork/java/javamail/index.htmlJavadoc https://javamail.java.…