CLOVER🍀

That was when it all began.

Scala

ScalaのReflectionについて、まとめてみる - 定義情報取得編 - 2

前回の続きです。今回はジェネリクスの利用まで、少し踏み込んでみます。これまでに書いたエントリのまとめは、こちらです。導入編 http://d.hatena.ne.jp/Kazuhira/20130730/1375192075 定義情報取得編 - 1 http://d.hatena.ne.jp/Kazuhira/20130801/137537…

ScalaのReflectionについて、まとめてみる - 定義情報取得編 - 1

前回は、Scalaのリフレクションを使う際の、簡単な導入について書きました。今度は、実際にReflection APIを使用して、Scalaのクラスやメソッドから情報を取得していく方法を書いていきたいと思います。これまでに書いたエントリのまとめは、こちらです。導…

ScalaのReflectionについて、まとめてみる - 導入編

最近、ちょっとしたところでScalaのリフレクションを使おうとして、思っていた以上に忘れていてなかなかハマってしまったのがちょっと悔しくて、これを機にまとめてみようかなと思いました。3回くらいに分けて書くつもりです。よろしければ、お付き合いくだ…

Infinispan/Hazelcast/Ehcache/Guavaでベンチマーク

この前、Javaで使えるキャッシュライブラリについてまとめたエントリを書きましたが、やっぱりキャッシュといえばパフォーマンスが気になるところですよね…。NoSQLでのベンチマークといえば、YCSBですが、なんかInfinispanの扱いが微妙だったので、パスして…

scala/scalac/fscなどのコマンドのオプションを、Scalaコンパイラのソースから確認する

先ほどまで、とあるライブラリを使ったコードのコンパイルがうまくいかなくて、Scalaコンパイラのコードとかを眺めていたわけですが、その時にbuild.gradleに compileScala { compileScala.scalaCompileOptions.additionalParameters= ['-Ydebug'] } みたい…

続・Infinispan Tree APIで、sbt+Scalaでビルドができない件について

6/24追記) Mavenでの動作確認と、もう少し結論を加えました昨日、sbtでもGradleでも、ScalaでInfinispanのTree APIでビルドに失敗し、しかもscalacコマンドではビルドに成功するという意味不明な状態を見ることになりました。前回のエントリ http://d.haten…

Infinispan Tree APIを使用して、sbt+Scalaでビルドできない件について

最初に書いておきます、未解決です。 Unsolved!(6/19 追記) コンパイル、通せるようになりました! http://d.hatena.ne.jp/Kazuhira/20130619/1371647811この前、InfinispanのTree APIを使おうとして、sbt+Scalaでビルドに失敗するということを書きまし…

使用しているsbtのバージョンを確認する

いつの頃からか、sbtの対話シェルを使っている時に「sbt-」で補完候補に挙がるのが > sbt- sbt-binary-version sbt-dependency sbt-plugin sbt-resolver だったので、sbtの細かいバージョンを確認する方法は?とか思ってました。候補に挙がっている「sbt-bin…

ScalaでGroovyのGrapeのようなことがやりたい

GroovyのGrapeって、便利ですよね。個人的には、Groovyを使う大きな理由のひとつだったりします。だって、お手軽だもん。 @Grab('org.apache.commons:commons-lang3:3.1') import org.apache.commons.lang3.StringUtils スクリプトに、これを書くだけで依存…

sbtでrunをforkするようにすると、readLineでハマる

昨日、Infinispanを触っていて、軽くハマったのでメモ。昨日は結局解決できなくて、別の方法を取りましたが…。例えば、こんなbuild.sbtを用意します。 name := "sbt-readline" version := "0.0.1-SNAPSHOT" scalaVersion := "2.10.1" で、こんなScalaソース…

getOrElseUpdateOpt?

これを見て http://d.hatena.ne.jp/nanjakkun/20130412/1365772017ちょっと面白そうだったので、書いてみました。思いついたのは、こんなパターンくらい。 trait MyMap[A, B] extends Map[A, B] { def getOrElseUpdateOpt1(key: A, defaultValue: => Option[…

sbtで、プロジェクト内のライブラリ依存関係を調べる

Mavenのdependency:tree的な。プラグインとかあるんだろうなーと思ってちょこっと調べたら、やっぱりありました。少し前から気付いてはいたのですが、先のInfinispan Queryを使う時に、初めて使ってみましたよ。sbt-dependency-graph https://github.com/jru…

ScalaとJavaとインナークラスと

MapReduceを調べていて、少し前のScalaとHadoopを使ったプログラムを書くと、Hadoopがインナークラスをメソッドの引数に強制するので、面倒、という記事を見かけました。要は、こういうやつです。 override def map(key: LongWritable, value: Text, context…

Re: 10分でコーディング

No Programming, No Lifeで出ていたので、ちょっとやってみました。元ネタ。 難易度 激簡単 目標時間10分以内あなたはこれからトランプを配っていきます。あなたにはトランプを配る人数、 そしてトランプが渡されます。今回はとても簡単なので例題で説明し…

Scala 2.10.0 Try & NonFatal

なんか、情報だけチラチラ見かけていて気になっていたので。まあ、半分くらいFutureの時に使っているのですが。 Try Futureの結果として使っていた、SuccessとFailureの親クラスです。Successが成功、Failureが失敗を表すわけですが、Failureは例外を情報と…

Scala 2.10.0 Macros

いよいよ、 http://www.scala-lang.org/node/27499 に載っている新機能/実験的機能リストの中で最後になる、マクロです。コンパイル時に、ASTを触って何らかの処理をすることができます。Macros http://docs.scala-lang.org/overviews/macros/overview.html…

Scala Reflectionの続き

ひとつ前のエントリで、コンストラクタ引数をうまく見分けられなかったという話の続き。もうちょっと粘ったらできました。ついでに、Javaの Class.forName("...").newInstance(); や Class c = Class.forName("..."); c.getConstructor(...).newInstance(...…

Scala 2.10.0 Scala Reflection

ホントは次は「Akka Actors now part of the distribution」のつもりだったんですけど、ちょっと触ってみたらScala Actorのマイグレーションというよりは、Akkaにどんどん踏み込んでいかざるをえなくなってきたので、ちょっと機会を改めることにしました。Ak…

Scala 2.10.0 Parallel Collections are now configurable with custom thread pools

並列コレクションの、スレッドプールのカスタマイズができるようになったらしいですよ。って、 http://www.scala-lang.org/node/27499 のポストが案内している http://docs.scala-lang.org/overviews/parallel-collections/overview.html は、並列コレクショ…

Scala 2.10.0 Modularizing Language Features

Scala 2.10.0で、以下のようなスクリプトを実行するとなんか警告されます。 Features.scala println(List(1, 2, 3) tail) println(4 twice) trait Foo { type MyMap[A, B]

Scala 2.10.0 Dependent method types

以下の新機能紹介の部分には、 http://www.scala-lang.org/node/27499 こんな感じにしか紹介されていませんが、 def identity(x: AnyRef): x.type = x // the return type says we return exactly what we got Dependent method typesについてちょっと試して…

Scala 2.10.0 Type Dynamic

Scalaで動的にメソッドやフィールドを定義するための、SIP-17 Type Dynamicについて扱おうと思います。 http://docs.scala-lang.org/sips/pending/type-dynamic.htmlScala自身は静的型付け言語なので、こういう仕組みが入るのはどうなんでしょうと思うのです…

Scala 2.10.0 Futures and Promises - 3

最後、Promiseです。 Promiseって? とりあえず、以下のドキュメントにあるPromiseの説明を読んでみます。 http://docs.scala-lang.org/overviews/core/futures.html http://docs.scala-lang.org/ja/overviews/core/futures.html Future がリードオンリーの…

Scala 2.10.0 Futures and Promises - 2

前回の続きです。今度は、Futureコンパニオンオブジェクトに定義されているメソッドを試していってみます。今回も、ソースには以下のimport文があるものとし import scala.concurrent._ import scala.concurrent.ExecutionContext.Implicits.global import s…

Scala 2.10.0 Futures and Promises - 1

今度は、Futures and Promisesです。 http://docs.scala-lang.org/overviews/core/futures.html日本語訳。 http://docs.scala-lang.org/ja/overviews/core/futures.htmlそこそこ量が多くなりそうなので、分割していきます。まずはFutureから。 Futureって? …

Scala 2.10.0 String Interpolation

今度は、String Interpolationです。 http://docs.scala-lang.org/overviews/core/string-interpolation.htmlこちらも、日本語訳が。 http://docs.scala-lang.org/ja/overviews/core/string-interpolation.html文字列リテラルの前に、補間子というものを入れ…

Scala 2.10.0 Implicit Classes

昨日に続いて、今日はSIP-13 Implicit Classesです。 http://docs.scala-lang.org/sips/pending/implicit-classes.html今までImplicit Conversionを使う上で面倒な定義を、楽にしてくれるもののようで。これまでは、確かに 変換するためのメソッド定義 変換…

Scala 2.10.0 Value Classes

とりあえず、以下のNew featuresから順に興味のあるものを試していってみようと思います。 http://www.scala-lang.org/node/27499まあ、基本他の方々のおっかけですよね…。まずはValue Classes( and Universal Traits)から。 Value Classes ドキュメント h…

Scala 2.10.0 リリース

Scala 2.10.0がリリースされましたね。 http://www.scala-lang.org/node/27499個人的には、Netty 4とScala 2.10.0のどちらが先に出てくるのかと思ってましたが、Scalaが先でしたか… *去年の末にはMaven CentralにはもうUP済みだったようですが…世の中のScal…

ScalaのパターンマッチでORを使う

きっかけは忘れましたが、何かの記事で見かけてScalaのパターンマッチでOR(|)が使えるということを知りました。よくよく見ると、これとかScala逆引きレシピ作者:竹添 直樹,島本 多可子発売日: 2012/07/03メディア: 単行本(ソフトカバー)これにも載ってい…