Intellij IDEA にスペルチェックの辞書を登録する

Intellij IDEA のスペルチェック機能便利ですね。

ですが、Redisとか自分のプロジェクト専門の用語とかが当然辞書に入ってないので、波線が出てしょんぼりしますね。

そんなとき、

<どっかのディレクトリ>/dictionaries/unko.dic
                                    baka.dic

などというディレクトリ構成を作り、dicファイルの中身に改行区切りのredisやbakaやhogeなどという言葉を入れ、
[Settings]-[Spelling]で設定画面を開き、[Dictionaries]タブの[+]ボタンで上記ディレクトリを選択すればおk!

既存のライブラリが java.util.logging API 使ってて、俺は今 logback が使いたいんだ!

既存のライブラリが java.util.logging API 使ってて、俺は今 logback が使いたいんだ!設定ファイルは logback.xml に統一したいんだ!という人向けの情報

http://mvnrepository.com/
で「jul-to-slf4」java logging api から slf4j へのブリッジになるライブラリを落としてきます。


以下のようなコードを書きます。Java

java.util.logging.Logger rootLogger = LogManager.getLogManager().getLogger("");
Handler[] handlers = rootLogger.getHandlers();
for (int i = 0; i < handlers.length; i++) {
    rootLogger.removeHandler(handlers[i]);
}
SLF4JBridgeHandler.install()


Scala

  val rootLogger = LogManager.getLogManager().getLogger("")
  val handlers = rootLogger.getHandlers
  handlers.foreach(rootLogger.removeHandler(_))
  SLF4JBridgeHandler.install()

sbtからすべてのテストを実行すると失敗する件

IDEAから単体でテストしたり、
sbtプロンプトから

>test-only hoge.FooTest

ならテスト通るが、

>test

で実行すると動かない問題にハマった

結論からいうとsbt 0.11.2 0.10.0 以降には、タスクの並列実行(Parallel Execution)の機能が入った。
https://github.com/harrah/xsbt/wiki/Parallel-Execution


タスクが並列実行されて早くなっていいね!
って話だろうが、テスト、特にDBとかファイルとか扱ってるテストは並列実行されると困る。
答えは .sbt や Build.scala 的な奴に

parallelExecution in Test := false 

を足す


スローテストとか問題になってきたら、DBとか副作用のあるテストをまとめたプロジェクトを作って…とかやれないこともないが多分めんどくさいしやらない

sbtでcompileとかpackageとかの前に自分のタスクを差し込みたい

まぁ、たとえばpackage前にjarに入れたいファイルを加工する自前のタスクとか挟みこみたいわけです。

例えば単純なカスタムタスク

  val hello = TaskKey[Unit]("hello")
  val helloTask = hello  := {
    println("hello")
  }

があったときに、compile タスク実行前に hello を表示させたいという欲求があるときは、
.sbt、Scala ファイルには

(compile in Compile) <<= compile in Compile dependsOn (hello)

という感じにかけと書いてあるわけです。


なんか動かん…
答えは僕の環境がマルチプロジェクトだったからだった…
ようは Project を生成するときの settings に 上記 dependsOn を書き換えた compile を渡せばよい。


めんどくさいので、今の想定されるうちのプロジェクトのビルドファイル晒しておきます。

IntelliJ IDEA でエディタのフォントサイズをさくっと変える方法

コードレビューとかペアプロしてるときとかはフォントサイズでかくしたいですよね

いちいち設定画面で設定するのはだるい

[File]-[Settings]-[Editor]-[Mouse]-[Change font size(Zoom) with Ctrl + Mouse Wheel]
にチェックを入れて、

Ctrl+Mouseホイールでおk

追記:
@yusukey に教えてもらったけど、
Macならピンチアウト/イン(マウスパッドで、2本の指で拡大/縮小)でデフォルトでフォントサイズ変更できた!

scala + specs2 + sbt で特定のクラスの中のさらに特定のテストだけ実行したい

Scala で specs2 使いながら開発・テストしてるときに、特定のクラスのさらに特定のテストだけ実行したいときありませんか?僕はありました

なので調べました

とりあえず特定のクラスのみは以下

sbt>test-only hoge.FooTest

ね。簡単でしょう?

特定のテストだけがだるかった

まずソースを見て欲しい

with Tags というのと should のあとに section、in のあとに tag というメソッドを呼び出してるのがお分かりいただけるだろうか?このとき

sbt>test-only SpecsStudyTest -- include world

と実行すれば"world"とタグ付されたテストが実行される
他にもいい方法あったら誰か教えてくだしあ!


(特定のクラスはいいとして特定の部分まではやり過ぎ感あるw)

sbt で最新のScalaのバージョンのライブラリがまだリポジトリにないときの対処法

Scalaのバージョンが 2.9.2 にあがりましたね。


ついさっき、lift-json を試用してみようとしたんですよ
そしたら今日現在、lift-jsonは2.9.1までのjarしか置いてない…
http://oss.sonatype.org/content/repositories/releases/net/liftweb/



sbt使ってるんですが、どうするのがいいのだろうか…


正解: "net.liftweb" % "lift-json_2.9.1" % "2.4"
こう書く

sbtに

crossScalaVersions := Seq("2.9.2", "2.9.1")


と書いてlift-jsonを解決させた

なんか無理やり感もあるのでなんか他にいい方法あったら誰か教えてください

追記:
結局実行時に怒られた…どうすればいいの?