Scala

JavaライブラリのScalaラッパーを書くときのTIPS

これは Scala Advent Calendar 2015 - Adventar の18日目の記事です。 Scalaでは特に何もしなくてもJava製のライブラリをそのまま利用することができます。 ただ、そのまま使うよりもScalaでラップしたライブラリを作ることで使いやすさが向上することが多い…

IntelliJ IDEAでScalaのメソッドパラメーターをカッコに合わせて整列しない設定

追記'15/11/15: 専用の設定が追加されました Scalaプラグインバージョン2.0.181から(?)設定に項目が追加されました。2.0.181は現在ScalaプラグインのUpdate channelをNightlyに設定していればインストール可能。 下記のContinuation Indentの代わりに、Setti…

scalikejdbcでDBMS独自構文を書く

例えばMySQLのon duplicate key updateなど まず、sql"..."で書けば何でもいけるのはいいとして def upsertUser1(id: String, email: String)(implicit session: DBSession) = sql""" insert into `user` (`id`, `email`) values ($id, $email) on duplicate…

configs 0.2.1

https://github.com/kxbmap/configs/tree/0.2.1 仕事とか提督業が忙しくて大分放置してましたがconfigsの0.2.1をリリースしました。 scalikejdbc/scalikejdbc-asyncのサポート追加とBoneCP 0.8に対応したくらいです。 configsの構成として、コア部分のconfig…

色んなSQLをSlickで書くと?

色んなSQLをSquerylで書くと? - k4200’s notes and thoughts 色んなSQLをScalikeJDBCで書くと? 上記の記事のSlick版です。 groupByに関するSlick 1.0.0のバグを回避するため、1.0.1-RC1を使用します。 例によってテーブル名とかは弄りました。 テーブル定…

Typesafe configのScalaラッパーを公開しました

configがJavaのライブラリでちょっと使いづらいのでScala用にラッパーを書きました。 https://github.com/kxbmap/configs configz というのもあったんだけど、これはScalaz力が足りず思ったように使えなかったです。 使い方 SBTのビルド定義に以下を追加しま…

Scala 2.10用のSBinaryはどこに?

SBinaryのREADMEに載ってないのでsbtからパクってきた奴をメモ。 resolvers += Resolver.typesafeIvyRepo("releases") libraryDependencies += "org.scala-tools.sbinary" %% "sbinary" % "0.4.1"

ScalazのTagged typeとshapelessのNewtype

Scalaz Advent Calendarの二日目です。 Tagged type ある型クラスのインスタンスが同じ型に対して複数定義されている場合、importによって使用するインスタンスを制御することができます。 object s1 extends App { type User = String object Hatena { impo…

IntelliJ IDEA Scalaプラグインのimplicit関連機能

IntelliJのScalaプラグインでよく使うimplicit関係の機能について。 code completion 暗黙型変換によって使えるようになるメソッドも補完されます。また、それらには名前に下線が引かれます。 あるデータに対して何かやりたいとき、とりあえずimport scalaz.…

util-evalでゲームの設定を書く

Scala Advent Calendar jp 2011 - [PARTAKE]の8日目です。 Scalaを利用している企業というとTwitterが有名ですね。そのTwitterは開発したScalaライブラリを色々と公開しています。 util-evalはその内のひとつで、実行時にScalaコードをコンパイル&評価する…

IntelliJ IDEAのプラグイン開発

ScalaでIntelliJのプラグインを作ろうと思ったのでメモついでに。 参考 http://confluence.jetbrains.net/display/IDEADEV/PluginDevelopment http://www.jetbrains.com/idea/training/demos/google_search.html 下のLive Demoと同じものを作るところまでや…

Hello JOCL

先日Scala2.9.0RC1が出ましたね。IDEも良くなってきて、IDEに頼って生きてきた身としては有り難い限りです。 さて、こちらも少し前の話ですが、JogAmpのJOGL/JOCL/JOALの2.0RCが出ています。 JOGLは少し触ってたのですが、他は見てなかったのでこれを機に触…

Parallel Collectionのベンチマークやってみました

Scala2.9で導入されるParallel Collectionについてベンチマークがなされており、Scala2.9を触ったことなかったのでこれに乗じてみようかと。 scala2.9のparallel collection の benchmark をしてみた - scalaとか・・・ Parallel Collectionのベンチマークや…

Scalaで再帰的な構造のXMLを生成する

もう誰かやっている気がするけども。 元ネタ GroovyのMarkupBuilderで再起的な構造のXMLを生成する - No Programming, No Life GroovyでKey、ValueをXMLにクールに出力する-keyValueXml.groovy- - Togetter C# で Key、Value な コレクションを XML にしてみ…

SwingApplication終了時の処理

scala.swingのSwingApplicationにはquit()とshutdown()というメソッドがあります。 quit()はshutdown()とSystem.exit(0)を呼んでくれるので、shutdown()をオーバーライドして終了時の処理を書けばいいんだよねー。 object QuitNotCalledApplication extends …

Animatorその1

全然Animatorじゃないけど。PartialFunctionで状態遷移だけ。 import scala.actors._ import javax.media.opengl.GLAutoDrawable class Animator extends Actor { private val drawables = scala.collection.mutable.Set[GLAutoDrawable]() private var acti…

NEWTでウィンドウ作成

JOGLのdemosやチュートリアルから引っ張ってきてScalaの書式にしただけだけども。 import javax.media.opengl.{ GLAutoDrawable, GLProfile, GLCapabilities, GLEventListener } import com.jogamp.newt.event.{ WindowAdapter, WindowEvent } import com.jo…