[Scala]liftで、 ProtoUserを継承している場合のログイン画面変更

liftで、 ProtoUserを継承している場合のログイン画面変更方法

loginXhtmlメソッドでhtmlを生成しているので、たとえばUserモデルの場合
※デフォルトで作成されるUserモデル

とすればよい。

これをテンプレートファイルで対応したい場合は

とする

 

 

object User extends User with MetaMegaProtoUser[User] {

[Scala]lazyについて

lazyというのは、値を遅延評価する宣言

lazyは「var」や「def」に設定することはできません。

[Scala]文字列操作

文字列の長さを取得

文字列の繰り返し

()で、指定位置のcharを取り出す

文字列の比較(<,>,<=,>=)

StringBuilderに文字列を追加

文字列の先頭を大文字に変換

文字列の文字を1文字ずつ処理をする

文字列比較

文字列Aに文字列Bが含まれるかを判定

指定した条件に当てはまる文字列をカウント

差分の抽出

bodyという文字列の中でbadがそれぞれ含まれるかを判定して含まれていない文字を返す

文字の重複削除

指定文字数分だけ、削る

先頭から削る

右から削る

左から削る

条件に一致するまで文字を削り続ける

文字列の比較

大小文字を無視して比較

文字が含まれるかを判定

条件に一致した文字のみを抽出(逆はfilterNot)

条件に一致した文字を抽出

数値チェック

foreach

書式指定

ロケールを指定して書式指定

指定文字数で分割

先頭の1文字を得る

対象の文字の最初に出現する位置のインデックスを得る

カラかどうかを判定する

文字列の最後を得る

カラ文字にlastを使用すると例外が出る

文字列を改行で区切ってイテレータで返す

改行コードを残したい場合

コレクションをループで回して処理をする

正規表現

文字列置換(replace、replaceAll、replaceFirst)

逆に並べる

文字列の一部を取得

文字をソート

分割

末端の改行コードを削除

前方、後方の空白を削除

 

la> “test” map {c => c.toUpper}
res17: String = TEST

[Scala]Scalaで「::」はconsと呼ぶらしい

Scalaでリストを作成する場合

とするが、表題のconsを使用して

とすることが出来る。

ここに1つ重要なルールがあり、

consでリストを生成する場合、右結合になる

簡単に言うと、一番最後の項目から評価されます。

その時、一番最後の項目はListである必要があります。

Nilというのは、List型であるので、上記のconsを使用した配列の生成が成り立ちます。

[Scala]::と:::について

Scalaの言語仕様で「::」と「:::」というのがある。

「::」とは連結メソッドですが、「:::」との違いは?

という感じで、リスト同士を連結したような場合に、展開するかしないか

Linuxでファイルの日時を変更する

最終参照・更新日時を指定日時に変える

最終参照日時を現在の日時に変える

指定したファイルと同じ日時に変える

※after.txtの日時をbefore.txtの日時に変更する

 

Scala and LiftのプロジェクトをEclipse上に作成する

Scala and LiftのプロジェクトをEclipse上に作成する

なんか、単純なようですが、うまくいかなかったので、うまくいく方法を書いておく。

Eclipseの新規作成で、Scala ProjectではScalaのプロジェクトしか作成されません。

Liftのプロジェクトを作りたいときは

Maven Projectを選択

archetypeを選択

プロジェクト名などを設定

とすると、プロジェクトが作成されますが

どうも、ビルダーがjavaのままでエラー出まくりだったりするので、プロジェクトファイルを編集します。。

やりたくない。。

Close Projectでいったんプロジェクトをクローズします。

という定義がありますが、これがビルダーとしてjavaとmaven2を使うという設定なので、ここを

に変更

という所を

に変更

あとはプロジェクトを右クリックしてOpen Projectで開く。

ビルドパスにScala Libraryを追加

これで、プロジェクトのクリーンをすれば、エラーは消えるはず。

あーめんどくさい。

やっぱりScala and Liftな環境をEclipseで開発したい!

Scala and Liftの環境を、Ubuntu上に構築したのはいいが、やはり使い慣れたEclipse上で開発したくなりました。

ということで、Eclipseに環境を構築する手順を書いてみます。

まず、Eclipseを入れるOSですが、Windowsです。

なので、Windows上にjava環境をセットアップしていきます。

JDKインストール

Windows用のJDKをダウンロード
http://www.oracle.com/technetwork/java/

環境変数の設定

次に、scalaです。コンソールでscala使いたいので入れておきます。

Scalaのインストール

http://www.scala-lang.org/

環境変数の設定

liftプロジェクトを入れたり実行したりするときに使います。
たぶん

Mavenのインストール

http://maven.apache.org/

環境変数の設定

Eclipseのインストール

http://www.eclipse.org/

Scala IDEのインストール

http://www.scala-ide.org/

M2Eclipseのインストール

eclipseのInstall New Softwareを開き、m2eをインストールする

再起動後、

このようなワーニングが出る場合、eclipse.iniファイルを開き、-vmargsの前の行に

を追加する

Ubuntu 11 にScalaとLiftの環境を構築する

Scalaが気になるので、実行環境を作ってみる。
Scalaと、Scalaでwebアプリケーションを作るに当たって必要になってくるソフトウェアを上げてみる。

Scalaとは

  • JVM上で動作する比較的新しい言語
  • オブジェクト指向言語(つまりJava)と関数型言語

Liftとは

  • Scalaで構築されたWebアプリケーションフレームワーク

Mavenとは

  • Java用プロジェクト管理ツールである

環境の構築

Ubuntu 11 はインストール済みとする。

JDKのインストール

Maven 3のインストール

http://maven.apache.org/

からmavenをダウンロード

解凍

環境変数の設定

~/.profile に設定

JAVA_HOME

M2_HOME

M2

PATH

Mavenのインストール完了確認

以下のような実行結果が表示されれば問題なし

Liftのプロジェクトを作成する

Mavenで、Liftのプロジェクトを作成するコマンドを実行すると、必要なプラグインが一通りダウンロードされる

コマンドラインで適当に答えていけばインストールとプロジェクト作成の完了

色々な一覧と、上記のメッセージが出た場合、liftを入れたいので、とりあえずliftと入れて改行

すると、liftで絞り込まれるので、「lift-archetype-basic_2.9.1」を探して、その番号を入力

と出るので、2を選択

は適当に設定

も適当に設定

これはそのまま改行

ここはおそらくgroupIdが入るので、そのまま改行

最後にyを入力

これで、liftのプロジェクトと、それに必要なプラグインがインストールされました。

コマンド一発でプロジェクトを作成したい場合、下記のように情報をすべてパラメータで設定すれば一発で作成することが可能。

とりあえず、テストサーバ起動

テストサーバにアクセス

http://localhost:8080/

これで、何か表示されれば完了です。

Railsでx_sendfileを使う

Railsでsend_fileというメソッドがある

これは、ファイルなどをそのまま返す場合に使ったりするが

これを使うとRailsのメモリ使用量が増加していく。

2.1でこの現象が出るが 2.3とかもかも?

なんかメモリを解放してないっぽい感じですが、これに関しては、ほかの方が調べてたりするので深く調べないことにする。

で、解決方法は、x_sendfileを使うのがスマートな気がするので、これを採用する。

導入手順

  • apacheにmod_xsendfileを組み込む
  • apacheの設定ファイルを変更
    とりあえず、設定ファイルにxsendfile用のディレクティブを追加
  • Railsのソースでsend_fileしているところにオプションを指定
    とりあえずテスト用にpaの処理に変更を加える

    という感じで。
  • apache再起動

Railsで日付処理

Railsで日付処理は、意外と簡単に出来たりする。

1日前

1日後

1ヶ月前

1ヶ月後

1年前

1年後

また、本日の開始日時として、たとえば

2011-10-01 00:00:00

という情報を取りたい場合

逆に

2011-10-01 23:59:59

という情報を取りたい場合

月初を得る

月末を得る

Solaris 11にMySQLをインストール

Solaris 11 にGUIを入れた環境でMySQLをインストールする手順

パッケージマネージャを起動

mysqlでパッケージを絞り込む

この中から

  • mysql-51
  • mysql-51/library

をチェック。

インストール/更新ボタンをクリック。

これで、パッケージはインストールされる。

mysqlをサービスとして設定する。

mysqlの起動確認

mysqlのプロセスが起動していることを確認。

mysqlクライアントで接続確認

正常に起動できれば、以下のメッセージが表示される。

Solaris 11 Expressをインストール後、GUIを入れる

Solaris 11 Expressですが、CUIでのインストールになるようです。

なので、GUIをインストールしてみます。

なにやらパッケージをインストールします。

マシンを再起動します。

GUIを有効にします。

VMware PlayerにSolaris 11 Expressをインストール

VMware PlayerにSolaris 11をインストールしてみたくなった。

入れる目的は、zfsの調査。

あと、適当にrubyのメモリリーク調査用とかに使おうかなぁ程度。

ということで、まずはインストーラをダウンロードする。

Oracleのホームページにあるダウンロードから

Oracle Solarisをクリック

そこから、Oracle Solaris 11を探して、ダウンロード。
sol-11-exp-201011-text-x86.iso

MVware Playerを起動し、

をクリック。

を選択して次へ。

Sun Solarisを選択して次へ。

仮想マシンの名前は適当に設定して次へ

ディスク容量の指定は30GB位を指定

ハードウェアをカスタマイズで、フロッピーを削除

これで、マシンはできあがりました。

次にインストーライメージを指定して起動します。

仮想マシン設定の編集を開き、CD/DVDを選びます。

ISOイメージファイルを使用するにして、ダウンロードしたISOイメージを指定します。

設定を閉じます。

VMを起動するのですが、CDブートを有効にするため、一度BIOS画面に入る必要があります。

そこで、VMwareでBIOSを出すを参照。

ブートディスクでCD ROMを選んでBIOS終了。

VM再起動

これでSolarisのインストーラが走ります。

redmineのwikiで、テーブル内の文章を改行

redmineにはwikiがついてます。

基本Textile形式で記述する物なので

表を作るときは

という感じで書きます。

が、たとえば趣味が複数あって、途中で改行させたいといった場合に、<br/>タグとかが使えません。

これは、redmineが採用しているライブラリ「redcloth3」の中でbrを許可しないようになっているからです。

どうしても表の中で改行を使いたい場合、この「redcloth3」ライブラリを変更する必要があります。

redmineのlibの中に「redcloth3.rb」というファイルがあるので、これを開き
「ALLOWED_TAGS」という変数を探します。

という感じになっていると思います。

ここに指定したタグが許可されますので、brを追加します。

あとはredmineを再起動するだけです。

visudoなんかで使用されるエディタをviに固定したい

visudoを実行するときなど、なんかおかしなエディタが起動したりする。

visudoって、viって付くくらいだからviが起動したらいいのにと思う。

そこで、vi固定する方法。

標準のコマンドエディタは alternativesという機構で管理されている。
altenativesは同様のソフトウェアがあるとき、どれを使うかを管理する仕組みで
たとえばJavaで使われるJavaVMがSun JavaなのかOpen Javaなのかとか?

で、とりあえず管理コマンドを叩いてみる

実行すると、こんな感じのが出る

使いたいエディタの番号を入れると、それを使うように設定される