Scala

protectedの挙動ですが、まず

scalaでは、class とか object のメンバーはデフォルトではすべてパブリックとして定義されます
object PublicObject {
  val publicVal
  var publicVar
  def publicMethod = 1
}
この例では、3つのメンバーは全部publicとして定義される

privateとprotectedは、Javaに良く似 ...

Lift, Scala

ScalaでMD5を生成するには…

Javaのライブラリを呼び出して生成することになります。
import java.security.MessageDigest
val digestedBytes = MessageDigest.getInstance("MD5").digest("arekore".getBytes)
digestedBytes.map("%02x".format(_)).m ...

Scala

abstractなclass とか trait に、型指定のないtype aliasを書くと、派生クラスでこのtype aliasの定義を強制します。
abstract class Oya {
//このクラスを継承した派生クラスでは、Xのtype aliasを明示しなければならない。
type AT

//X型はこのクラス内で使用可能。
var x:AT
def getAt:AT = x
}

class Ko exten ...

ubuntu

設定内容

9000番ポートでsvnリポジトリを公開
svnリポジトリのデータは/var/svn_dataに保存
リポジトリ名はrepoで公開

まずはSubversionのサーバモジュールをインストール

sudo apt-get install subversion libapache2-svn

/etc/apache2/sites-availableに移動

cd/etc/apache2/sites-available ...

Lift, Scala

前回「Scala + Liftで、GlassFishの接続プールを使う」の中で、JNDI名はデフォルトでは「lift」であると書いたが、このJNDI名を変えて接続してみたい。

設定は簡単で、

Boot.scalaの中のBootクラスの中のbootメソッドの一番最初に
class Boot {
  def boot {
DefaultConnectionIdentifier.jndiName = "custom"
… ...

Lift, Scala

GlassFishはWeb ・EJBコンテナなので、せっかくなので、Scala + Liftの環境からJDBC接続プールを使いたい。

幸い、liftにはJNDIでDB接続する仕組みが入っているようです。

liftがデフォルトで参照するJDBC接続プールは、liftという名前のJNDIなので、今回はliftという名前で設定します。

GlassFishはほぼ標準状態で入っている前提で。

まずはmysqlのjdbcドライバをGlassFishのli ...

Eclipse, Lift, Scala

なんか長いタイトルですが

要はMavenで作ったScala + LiftのプロジェクトをGlassFishにデプロイしたい

で、eclipseでGlassFishにデプロイしつつデバッグもしたい

という欲張り企画なんですが

eclipseのプロジェクト作成とか、Mavenのプロジェクト作成では

これらの要件を満たす設定になってくれないので

手動で設定を変更します。

必要な物

eclipseは「Ecli ...

Scala

とりえあず、以下のようなコードを書きます。

val pf:PartialFunction] = {
case null => None
case "" => None
case s => Some(s)
}

これで、nullはNone、””もNone、普通の文字列はOptionに変換という処理をしてくれます。

関数の使い方は

val list = L ...

Scala

Scalaで可変長引数を受け取る関数を定義する時は

def func(args: String*) = args.foreach(println)

と書く

で、この関数に対して

func( "test1", "test2", "test3")

とすれば、

test1
test2
test3

となる

で、本題で、「: _* ...

Lift, Scala

class User extends LongKeyedMapper with IdPK {
def getSingleton = User

object uid extends MappedString(this, 24){
override def dbColumnName = "uid"//<= こんな感じ
}
}

という感じで書く

 

Lift, Scala

object User extends User with LongKeyedMetaMapper {
override def dbTableName = "users"
}

という感じでテーブル名を指定する

Lift, Scala

前々回くらいで、【Scala】LiftでMySQLに繋ぐ(Maven編)では、MavenでMySQLにつなぐための設定をしたが、今回はsbtでMySQLにつなぐための設定を。

project/build/LiftProject.scalaファイルに、MySQLのドライバの設定を追加します。

override def libraryDependencies = Set(
"net.liftweb" %% "lift-webkit& ...

Lift, Scala

Liftにはrun modeが6つ準備されている

development
test
staging
production
pilot
profile

デフォルトでは、developmentが選択される。

run modeを変えて起動する場合、
-Drun.mode=production
というように、起動時にオプションを指定することで変えることが出来る

run modeでDBの接続する先を変えたりする場 ...

Lift, Scala

Scala + Liftの環境は、最初はH2DBにつながるようになっている。

一般的にサービスを提供する場合、やはりMySQLなどに繋いで使いたい

ということで、MySQLに接続する方法

Mavenでプロジェクトを作っている前提で

pom.xmlファイルのdependenciesに以下を追加

<dependency>
<groupId>mysql</groupId>
<ar ...

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, ...

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を初期値として、リストのアイテムごとにブロックで指定した ...

Eclipse, Scala

まずはMavenでプロジェクトを作成する

scala-archetype-simple v1.3 を選択

あとは順次進んでプロジェクトを作成する

できあがったプロジェクトは一度eclipseから削除する
※間違えてもディスクから削除はしない

エディタなどで「.project」ファイルを開く

<natures>タグの中に以下を1行を追加

<nature>org.scal

Scala

%tyのtは日付および時刻変換文字用の接頭辞

%<tmの<は引数のインデックスを指定するインデックスで、以前の書式指示子の引数が再利用されます

つまり、

%$1tmと同じ意味になります。

$1というのは、引数のインデックスで

とすれば、%tmでは、d1の年を、%$3tmでは、d3の月を、%$2tdでは、d2の日を参照してフォーマットされる

java, Scala

このようなエラーが出た場合、tempディレクトリにキャッシュのdllが残っているのが原因。

以下のコマンドで削除できる