CLOVER🍀

That was when it all began.

Scala

Scalaの-Xprintと-Xshow-phasesについてメモ

たまに使いたくなった時には忘れていて、しかもなんか調べにくいのでオプションをメモっておくことに。Scalaでは、scala/scalacコマンドなどでのASTを-Xprintオプションで出力させることができるのですが、出力させるフェーズを指定する必要があります。そ…

Scalaから、Javaのインターフェースに定義されたeq(Object)メソッドを呼び出す方法を考える

以前、こんなエントリを書きました。Scalaから、Javaのインターフェースに定義されたeq(Object)メソッドを呼び出せない? http://d.hatena.ne.jp/Kazuhira/20131215/1387109792Scalaでは、AnyRefに final def eq(that: AnyRef): Boolean というメソッドが定…

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

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

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…

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

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

Scalaのアップキャスト?

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

Scala ARMを使ってみる

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

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

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

Dispatch × jsoup

先ほど使ってみたDispatchですが、core以外にもいくつかモジュールがあるようで、今回はその中でも興味のあったjsoupとの連携を試してみます。dispatch-jsoup https://github.com/dispatch/reboot/tree/master/jsoupjsoup自体は、Javaで利用可能なHTML5向け…

ScalaのHTTP通信ライブラリ、Dispatchを使ってみる

最近GroovyのHTTPBuilderをよく使っていますが、ちょっと思うところがあってScalaでのHTTP通信ライブラリを使ってみました。そういえば、Scalaを使ってHTTP通信のコードを書くのは、初めてな気がします。今回使うのは、有名っぽいDispatchです。Dispatch htt…

Java/Groovy/Scalaで、コマンドライン引数処理

最近、ちょっと身の回りでコマンドライン引数の処理が話題に挙がりまして、ちょっとJava系でどんなのが使えるのか調べてみました。ちなみに、もともと話が出たのはJavaでしたが、このエントリでは加えてGroovyとScalaも書きたいと思います。実行するコマンド…

Typesafe Configと、ラッパーFicusで遊ぶ

前から名前は聞いたことはありましたが、使ったことのなかったTypesafeの提供するConfigでちょっと遊んでみました。typesafehub/config(Configuration library for JVM languages) https://github.com/typesafehub/configTypesafeって、あのTypesafe社です…

Scala+sbtと、JMHを合わせて使う

2014/7/6追記) sbt-jmhというsbt用のJMHプラグインができたそうなので、そちら向けのエントリを書きました。 sbt-jmhを使って、ScalaでマイクロベンチマークComments http://d.hatena.ne.jp/Kazuhira/20140706/1404641244先ほど、こんなエントリを投稿しま…

Scalaから、Javaのインターフェースに定義されたeq(Object)メソッドを呼び出せない?

前回書いた、InfinispanのQuery DSLを使った時に、これにかなりハマりました。Scalaには、AnyRefクラスにeqというメソッドが定義してあります。 final def eq(that: AnyRef): Boolean Scalaでクラスを書く場合は、わざわざこのメソッドと衝突するようなもの…

JPQLとString Interpolationを使って遊んでみる

この前、ScalaのString Interpolationを初めて自分で定義してみたので、ちょっと練習的にネタを書いてみました。ターゲットは、JPQLです。JPQLを使ってクエリを投げる時には、 em.createQuery("SELECT u FROM User u WHERE age > :age", User.class) .setPar…

Undertowで遊んでみる

こちらで紹介された、Undertowが面白そうだったので、久々にClojureで書くことを兼ねて遊んでみました。WildFly の Web 基盤、Undertow の紹介 http://emamotor.blogspot.jp/2013/12/introduction-undertow.htmlUndertow http://undertow.io/紹介されていた…

ScalaのString Interpolationを自分で書いて試してみる

Scala 2.10.0で追加されたString Interpolationですが、これまでs補間子やf補間子のような既存のものは使ってきましたが、そういえば自分で書いたことがなかったので試してみました。参考にしたのは、以下の2つのサイトです。文字列の補間 http://docs.scala…

Scala × Arquillianで、Java EEのテスト

JBoss ASにデプロイしながら進めていくのもいいのですが、ここはひとつ、テストコードから実行してみようと思いまして。今まで名前だけは聞いたことのあった、Arquillianを使ってみます。Arquillian http://arquillian.org/日本語でもいくつか情報が出ている…

ScalaでJava EE 6(JAX-RS+EJB+JPA)

*JAX-RSの部分を@emaggameさんからご指摘いただいたので、修正しましたJPAをちょこちょこ触ってきましたが、そろそろEE系のものも使ってみた方が面白いかなぁと思い、これまでずっと手を出してこなかったJava EEに踏み込んでみることにしました。使うアプリ…

Clojureで学ぶ、UDPネットワークプログラミング - マルチキャスト

いよいよ、マルチキャストを使ったネットワークプログラミングに。これまで、DatagramSocketクラスを使ったプログラムは、相手がひとりしかいない、ユニキャストでしたが、今度は複数の相手に送信するマルチキャストです。 *DatagramSocketクラスで、マルチ…

Clojureで学ぶ、UDPネットワークプログラミング - Non Blocking IO

前回はReliable UDPを書くのにClojureをすっ飛ばしてしまいましたが、今回はClojureから始めます。お題は、NIOを使ったUDP Echoクライアント/サーバ。外見上の動作は、前と変わらないので省略…。最初はClojure版から入ったわけですが、まーてこずりました。…

Scalaで書く、高信頼型(Reliable)UDP Echoクライアント/サーバ

これまで、Clojureを中心にUDPを使ったプログラミングをしていましたが、今回はちょっとScalaのみにします。お題は、高信頼型(Reliable)UDP。UDPは、データグラムが正しい順序で到着することを保証しませんし、パケットロスも検出できません。これを克服す…

Clojureで学ぶ、UDPネットワークプログラミング - ソケットオプション

前回の続きで、今回は書籍に習って前回のUDPサーバ/クライアントの改良型を書きます。Javaネットワークプログラミングの真髄作者: エズモンド・ピット,岩谷宏出版社/メーカー: ソフトバンク クリエイティブ発売日: 2007/04/28メディア: 大型本購入: 9人 ク…

Clojureで学ぶ、UDPネットワークプログラミング - 基礎

前回、突然TCPソケットを使ったEcho Serverを書きましたが、冒頭にちょこっと述べていましたがホントはUDPソケットを使ってみたかったのでした。なにかと言いますと、最近Infinispan(JGroups)みたいなマルチキャストを使ったノードディスカバリを行うミド…

ClojureとScalaで、Echo Serverを書く(復習編)

少し、ネットワークプログラミングの勉強をしようと思いまして。ホントはUDPを中心にやりたいのですが、まずは以前TCPで復習をしてみようかなということで。1年ちょっと前に、こんなエントリを書きました。Clojure(とScalaとGroovy)でEcho Serverを書く ht…

勢いで、ScalaFXとGroovyFX

夏休み前の小ネタ、第2弾。今日、やたら目にしたこちらを見て。RubyでGUIアプリを作るならJRuby+JavaFX+Rawrで決まり! http://blog.supermomonga.com/articles/jruby/javafx-rawr.htmlScalaとGroovyで、JavaFXを使って同じようなことをやっていました。あ、…

ScalaのReflectionについて、まとめてみる - オマケ

最後、ちょっと蛇足的に。これまでに書いたエントリのまとめは、こちらです。導入編 http://d.hatena.ne.jp/Kazuhira/20130730/1375192075 定義情報取得編 - 1 http://d.hatena.ne.jp/Kazuhira/20130801/1375370390 定義情報取得編 - 2 http://d.hatena.ne.j…

ScalaのReflectionについて、まとめてみる - インスタンス操作編

前回までは、クラスやトレイトなどの定義を取得するような、いわゆる解析、静的操作系の話題をまとめていましたが、今回はインスタンスの操作について書いていこうと思います。要は、動的にインスタンスを生成したり、メソッド呼び出しをしたりといったとこ…