seameteo のアーカイブ

[java][play framework]テーブルの最初(最後)のx行を取得

2014年9月26日

finderとpageを使って、並べ替えされたデータベースのうち最初(最後)の数行をArrayListで得る。 finderは次のようにmodelクラスで定義されてるとする。 ``` public static final Finder find = new Finder(Long.class, ModelClass.class); ``` createDateは次のように定義されているとする。 ``` @Create
続きを読む

[scala][play framework]拡張for文+ループ変数の同時使用

2014年9月25日

思った以上に詰まる事項。 scalaテンプレート上で拡張for文を使いつつループ変数も使いたい場合。 * 失敗例 ``` @{var i = 0} @for(obj
続きを読む

[play]フォルダ分けした場合のscalaでのクラスの扱い

2014年9月24日

例えばフォーム用のクラスが多くなってきたので、フォームクラスはmodels.formsに分けるようにした場合。 viewsのscalaで、「クラスForm1はありません!」と怒られるだろう。 フォルダを作ってその中にクラスを入れた場合、scalaでは (サブフォルダ).Form1 のように指定しないといけない。 models.forms に Form1があるなら、 formdata:Form[forms.Form1]
続きを読む

[play]ホームへのリダイレクトを定数化

2014年9月24日

何らかの処理を行った後、トップ画面に戻るようにする事は多いだろう。 その場合、controllersでのreturn値は、例えば次のようになるだろう return redirect(routes.Application.index()); 一つの処理(関数)にいちいち書くと面倒なので、定数にしてしまおう。 例えば次のように定数定義をする。 public static Result GO_HOME = redirect(
続きを読む

[Java]相互変換:進数表記されたString と int

2014年9月17日

# String -> int parseInt(string s, int radix) を使う。 radixはsを何進数として扱うか。省略時は10進数として扱われる。 Character.MIN_RADIX ~ Character.MAX_RADIX (2 ~ 36) の範囲で指定可能。 ## 例 parseInt("10"); // 10 parseInt("10", 8); // 8 parseI
続きを読む

[java][play framework]modelの変数を永続化しない

2014年9月16日

modelオブジェクトに一時的な変数を確保しようとする。 通常どおり以下のように宣言した場合はDBに保存され永続化されてしまう。 ``` @Entity class House extends Model { // (中略) public String temp; } ``` 永続化されないようにするには、@Transientオプションを着ければよい。 ``` @Transient publi
続きを読む

[java][play]Javaで出力したHTMLをscalaで書きだす

2014年9月11日

Javaで String tags = "iamgod"; return ok(index.render(tags)); としてviewsにHTMLタグ付き文字列を送ったとき、 viewsのscalaで、例えば仮引数がstrのとき @str と書くとタグがエスケープされて<b>などがそのまま出力されてしまう。 HTMLタグとして出力するには、 @Html(str) とすることでエスケ
続きを読む

[java][play framework]フォーム用Modelクラスを作ったときの注意点

2014年9月10日

フォームに使うモデルを作った際の注意点。 activator run したまま新しいフォーム用クラスを作った際、 bindfromRequest() などをしようとするとエラーを起こしてしまう。 ### 解決方法 activator の方を Ctrl+D で一旦終了し、以下を実行する。 activator clean この後もう一度runかcompileするとリコンパイルされる。 うまくいけばフォームのbindがうまくいくよう
続きを読む

[play]@ManyToOneを制約する

2014年9月8日

以下のようにrequiredを入れた場合でも、フォームで空値を入れた場合に空値であることのエラーは起こらない。 そのため、hasErrors()で例外処理を行うことが出来ない。 @Constraints.Required @ManyToOne public Parent parent; ManyToOne指定の変数を制約するには、validate関数をオーバーライドして、idがnullになっているかどうか判定すればよい。
続きを読む

Javaでメルセンヌ・ツイスタを使う

2014年9月5日

# ライブラリを入手 今回はこちらのsfmtライブラリを使う。 http://www001.upp.so-net.ne.jp/isaku/rand2.html 「sfmt.zip : ライブラリ一式」からダウンロード。 # インストール zipを解凍したら「SfmtJAVA」を開く。 数字のフォルダがたくさん並んでいるが周期が違うのみで中身はほとんど変わりなし。 適当なフォルダを選んでその中にある「Sfmt.java」をプロジェクトに
続きを読む

herokuのpostgreSQLでのevolutionが動いてくれない場合

2014年9月4日

# データ型を確認 modelの変数に @lob // ビッグデータ型 を指定しているとデータベース上ではclobになるが、herokuでは動いてくれない。 # evolutionが自動化されてるかチェック application.confに applyEvolutions.default=true を記述しておく。 # 1.sqlを生成し直す 1.sqlを削除してから、再度 activat
続きを読む

herokuにうまくデプロイできないとき

2014年9月3日

(アカウントを間違えたので再投。) herokuにdeployしようとしても permission denied(public key) と出てプッシュできないとき、 ssh-add (秘密鍵) でssh鍵を登録してからpushするとうまくいく。
続きを読む

[java][play framework]データベースから一致する内容を取得

2014年9月2日

結果をリストで受け取る場合。 List l = {finderオブジェクト}.where().{条件}.findList(); 条件は、例えば eq("name","わたし") // 一致 などの条件指定の関数を使う。 eq("name","おれ").eq("location","家"). ... のように繋げる事もできる。 リストで受け取った後は、 if (l.size()
続きを読む

新規Javaアプリを作る手順

2014年9月1日

後々のために。 # 前提環境 * activator * eclipse * Github * heroku * 2週目以降 # 新規アプリ作成 activator new (プロジェクト名) で新規アプリを作成 選択肢が出てくるので、「play-java」を選択。 色々必要そうなファイルができる cd (プロジェクト名) でカレントディレクトリを変更しておく。 # gitの準備 まずは
続きを読む