Lift,Scala

Liftにはrun modeが6つ準備されている development test staging production pilot profile デフォルトでは、developmentが選択される。 run modeを変えて起動する場合、 -Drun.mode=production というように、起動時にオプションを指定することで変えることが出来る run modeでDBの接続する先を変えたりする場合 src/main/resources/propsにproduction.default.p ...

Lift,Scala

Scala + Liftの環境は、最初はH2DBにつながるようになっている。 一般的にサービスを提供する場合、やはりMySQLなどに繋いで使いたい ということで、MySQLに接続する方法 Mavenでプロジェクトを作っている前提で pom.xmlファイルのdependenciesに以下を追加 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</arti ...

Scala

2.9からParallel Collectionsが実装されてますが、よく分かりません。 `foreach`, `map`, `filter`などの処理をする時にマルチコア対応したコレクションという事ですかね。 import scala.collection.parallel.mutable._ しておく必要がありそうです。 例 Array(1, 2, 3, 4, 5).par.sum // または ParArray(1, 2, 3, 4, 5).sum 並列処理出来るコアの数を取得する sca ...

Scala

1~10を加算する処理を書くと (0 /: (1 to 10))(_+_)

Scala

「/:」という物が何か知りたくて調べてたら、これは foldLeftのエイリアスだと知った。 で、foldLeftというのは、何かというと、 Rubyでいうとinjectみたいなもの? rubyのinjectは .inject(0) {|result, item| result + item} と書くと、2 + 3 + 4 + 5 の結果が返ってくる 要は、0を初期値として、リストのアイテムごとにブロックで指定した処理をして、戻り値としてresultを返すという物だ これをScalaで書くと v ...

Eclipse,Scala

まずはMavenでプロジェクトを作成する scala-archetype-simple v1.3 を選択 あとは順次進んでプロジェクトを作成する できあがったプロジェクトは一度eclipseから削除する ※間違えてもディスクから削除はしない エディタなどで「.project」ファイルを開く <natures>タグの中に以下を1行を追加 <nature>org.scala-ide.sdt.core.scalanature</nature> <name ...

Scala

"%tY-%<tm-%<td".format(new Date) %tyのtは日付および時刻変換文字用の接頭辞 %<tmの<は引数のインデックスを指定するインデックスで、以前の書式指示子の引数が再利用されます つまり、 %$1tmと同じ意味になります。 $1というのは、引数のインデックスで val d1 = new Date val d2 = new Date val d3 = new Date "%tY-%$3tm-%$2td".format(d1, d2, d3) と ...

java,Scala

Failed to created JLineReader: java.lang.NoClassDefFoundError: Could not initialize class org.fusesource.jansi.internal.Kernel32 このようなエラーが出た場合、tempディレクトリにキャッシュのdllが残っているのが原因。 以下のコマンドで削除できる del %TEMP%\jansi.dll del %TEMP%\jline_.dll

Lift,Scala

Liftでコンソールを起動してモデルの動きなどを確認したい場合 プロジェクトフォルダで以下のコマンドを打ち込む C:\project> mvn scala:console -DmainConsole=LiftConsole scala> import myproject.model._ そうすれば、モデルへアクセスが出来るようになる

Ruby on Rails メモ

RailsのActiveRecordは、updated_atとcreated_atカラムがある場合、created_atには新規作成時、updated_atは新規と更新時に自動で日付が設定されます。 普段はこの動きで便利なんですが テストをする時などにupdated_atを操作したりしたい。 そんなときは以下のように書けばupdated_atに自動で日付が設定されるのを防ぐ事が出来る。 ActiveRecord::Base.record_timestamps = false record.sav ...

Scala

View BoundとContext Boundとは 「頻出する暗黙(implicit)変換・パラメータの利用方法」のシンタックスシュガー implicitとは scala> implicit val a:Int = 1 scala> implicit val s:String = "a" scala> def some(implicit v:Int) : Int = v scala> some res0: Int = 1 def some(implicit v:Int) ...

Scala

abstractとは 抽象 abstract class Main とすれば、抽象クラスになる   abstract

Scala

クラスに型パラメータを追加 class クラス名 定義例 class Sample { protected var t: T = _ def set(in: T): Unit = { this.t = in } def get(): T = { t } } 使い方 val s = new Sample s.set("abc") val v = s.get() 型パラメーターの境界(<:とか>:とか) クラスの定義と継承が以下のような状態の場合に class A1 class A2 e ...

Lift,Scala

liftで、 ProtoUserを継承している場合のログイン画面変更方法 loginXhtmlメソッドでhtmlを生成しているので、たとえばUserモデルの場合 ※デフォルトで作成されるUserモデル object User extends User with MetaMegaProtoUser {   def loginXhtml = {     (<form method="post" action={S.uri}><table><tr><td    ...

Scala

lazyというのは、値を遅延評価する宣言 // lazyをつけると、値の評価が初回アクセス時にのみ行われる lazy val a = { println("評価"); "a" } println( a ) // 初回の参照。ここでval aの評価が行われる println( a ) // これ以降は、val aの評価はなし lazyは「var」や「def」に設定することはできません。

Scala

文字列の長さを取得 scala> "test" length Int = 4 文字列の繰り返し scala> "abc" * 3 String = abcabcabc ()で、指定位置のcharを取り出す scala> "abcde"(2) Char = c 文字列の比較(<,>,<=,>=) scala> "abc" < "abd" Boolean = true StringBuilderに文字列を追加 scala> val str ...

Scala

Scalaでリストを作成する場合 val myList = List("a", "b", "c") とするが、表題のconsを使用して val myList = "a" :: "b" :: "c" :: Nil とすることが出来る。 ここに1つ重要なルールがあり、 consでリストを生成する場合、右結合になる 簡単に言うと、一番最後の項目から評価されます。 その時、一番最後の項目はListである必要があります。 Nilというのは、List型であるので、上記のconsを使用した配列の生成が成り立ち ...

Scala

Scalaの言語仕様で「::」と「:::」というのがある。 「::」とは連結メソッドですが、「:::」との違いは? scala> val list1 = List('a', 'b') list1: List = List(a, b) scala> val list2= List('c', 'd', 'e') list2: List = List(c, d, e) scala> val list3 = list1 :: list2 list3: List = List(List( ...

Linux

最終参照・更新日時を指定日時に変える touch -d "2 February 2011 10:00am" file1.txt 最終参照日時を現在の日時に変える touch -a file1.txt 指定したファイルと同じ日時に変える ※after.txtの日時をbefore.txtの日時に変更する touch -r before.txt -m after.txt  

Eclipse,Lift,Scala

Scala and LiftのプロジェクトをEclipse上に作成する なんか、単純なようですが、うまくいかなかったので、うまくいく方法を書いておく。 Eclipseの新規作成で、Scala ProjectではScalaのプロジェクトしか作成されません。 Liftのプロジェクトを作りたいときは Maven Projectを選択 archetypeを選択 プロジェクト名などを設定 とすると、プロジェクトが作成されますが どうも、ビルダーがjavaのままでエラー出まくりだったりするので、プロジェクト ...