2012-01-01から1年間の記事一覧

JPAについて調べてみた

ほぼ毎日使うのだけれど、かなり曖昧な理解のまま放置していた。 エラーが起こるたびに場当たり的な対処をしてきましたが、これではいけないと1から調べてみました。 間違っている箇所もあるかもしれませんので、お気づきの点はぜひご指摘ください。永続化…

Apple Mac miniで作るVMware vSphereラボ環境 ー vCenter Serverのインストール

DCと仮想ESXiを追加したのでvCenter Serverをセットアップします。 まずWindows 2008 R2をインストールするのですが、評価版のイメージがかなり古いようです。ダウンロード時のままだとvCenter Serverどころか、SQL Server 2008 R2 Express、VMware Toolsも…

Apple Mac miniで作るVMware vSphereラボ環境 ー Nested ESXiとDCのインストール

前回までの内容でMac miniにESXiがインストールできました。 これから仮想ESXi、vCenter Server、FreeNASを使った仮想ストレージを用意します。 セットアップするのは次の5つの仮想マシンです。 ドメインコントローラ(DC) ESXi x 2台 vCenter Server iSCSI…

Apple Mac miniで作るVMware vSphereラボ環境 ー ESXiのインストール

前回の続きでMac miniにESXiをインストールしていきます。 CD-Rが余っている場合は普通にISOを焼いてもらえれば、USBメモリを準備する必要はありません。 CD-Rがない場合は最初に500MB程度の容量のあるUSBメモリを用意してください。今回は引き出しの奥にあ…

Apple Mac miniで作るVMware vSphereラボ環境 ー はじめに

VCP受験を思い立ったとき、会社以外でvSphereを実行できるテスト環境が欲しいと思っていたのですが、スペース的にも騒音的にもサーバー機器を家に置く訳にはいきませんでした。かといって家にある古いWindows PCにVMware Workstationを入れてラボを作れるか…

PlayFrameworkのViewでHTMLエスケープをさせない方法

この方法が正しいかどうかはわからないけど一応メモ。 下のような形でHTMLを出力させるメソッドがあったとして… @Entity public class MyModel extends Model { @Transient public final static HashMap typeMap = new HashMap(){{ put(0, "Type1"); put(1, …

VCP5を取得しました

半年前にトレーニングに参加したVCPですが、先日やっと試験に合格しました。 VCPとして認定されるには下記コースへの参加が条件になっていますので、受験される方はトレーニングの受講が必要です。 VMware vSphere : Install, Configure, Manage [V5]コース…

apache 一部のサブディレクトリだけを認証なしに設定する

ルートディレクトリに対してBasic認証をかけている場合に、サブディレクトリの一部を認証なしでも通すように設定する方法です。 LocationMatchを使って認証が必要ないLocationにSatisfy Anyを指定します。対象のLocationだけ認証なしにしても、当然ながらそ…

backbone.js Viewのイベントを実行したターゲットを取得

backbone.jsのviewでeventsに定義したメソッド内で対象の要素を取得するにはtargetを使います。 eventsで定義されたメソッドの中だと「this」はviewそのものを参照するので、console.log($(this).html())とやってもnullが返ってきてしまいます。 正しくイベ…

Playframework モデルのプロパティのデータ型を指定する

PlayframeworkでモデルにString型のプロパティを追加すると、データ型はMySQLだと自動的にVARCHAR(255)になります。 このままだと255を超える長さの文字列を追加しようとするとPersistenceExceptionになります。PersistenceException occured : org.hibernat…

backbone.js モデルのバリデーション

backbone.jsでモデルのバリデーションを行うにはモデルでvalidateメソッドを実装します。 下のSourceにあるサンプルだと1つのエラーで1つずつAlertを表示するような形でしたが、複数の入力フィールドがあるのでまとめてエラーを出したいと思います。 var MyM…

PlayFramework Listを使ってIN句でqueryをかける

idとtypeでqueryをかけて結果を取得するような場合、bindを使ってListの内容をそのままIN句に使うことができます。 String型のリストなら自動でシングルクォートを付けて、SQLエスケープもやってくれるようです。 List<MyModel> list = new ArrayList(); List<Long> idList </long></mymodel>…

backbone.js モデル保存後のCallback

Backbone.jsでモデル保存後のcallbackを設定するには、1つ目の引数に保存するプロパティ値を渡して、2番目の引数にsuccessとerrorを渡します。 success、errorはどちらか一方だけでもOKかと思います。 this.model.save( {var1: "test", var2: "hoge"}, { su…

PlayFramework ManyToManyのリレーション

// 親モデル @Entity public class Parent extends Model{ @ManyToMany(mappedBy="parents", cascade=CascadeType.ALL) @OrderBy("birthday") public List<Child> children; } // 子モデル @Entity public class Child extends Model{ @ManyToMany public List<Parent> pare</parent></child>…

http.maxParams

大きめのデータをPOSTで飛ばしているときに、コンソールに警告が出ていました。Number of request parameters xxxx is higher than maximum of 1000, aborting. Can be configured using 'http.maxParams' application.confに次の行を追加すると解決しました…

PlayFrameworkでセッションID、DBのデータが必要なFunctionalTest

たぶんFunctionalTestの使い方が間違ってますが一応書こうと思います。まずセッションIDについて。 開発中のアプリで、セッションにモデルのIDを保存しておくメソッドと、そのIDを後から使うメソッドがあります。 簡略化して書くと下のようなコードです。実…

Jasmine+Sinon.jsを使ってAlertが正しいテキストで表示されることを確認する

confirmでも同じように使えました。 // Spec describe("MyAlertTest", function(){ beforeEach(function(){ setFixtures(sandbox()); $("#sandbox").append("<button id='testBtn' value='test' />"); this.alertSpy = sinon.stub(window, "alert").returns(true); }); //これなしだとTypeError: </button>…

IE9でBackboneアプリが動かない

ChromeやFFで問題なく動作していたBackboneアプリがIE9では動かない。。 デバッグツールを立ち上げるとこんなエラーが出ていました。SCRIPT1028: 識別子、文字列または数がありません。 var ItemView = Backbone.View.extend({ render: function(){ $(this.…

Jasmine+sinon.jsでjQuery.ajaxが呼ばれているかテストする

sinon.spyを使うと$.ajaxが呼ばれているかをテストできます。 このときはBackboneのCollectionでfetchが正しいパラメータで呼び出されているかをテストしてみました。 describe("some ajax test", function(){ beforeEach(function(){ this.ajaxSpy = sinon.…

Jasmine+BackboneでViewのテストをするときにダミーのHTML要素を使う

jasmine-jqueryのsandboxを使うと、テストの間だけ使えるDIV要素を作ってくれます。 各テストの間でちゃんと掃除をしてくれるので、わざわざ削除する必要もありません。 beforeEach(function(){ setFixtures(sandbox()); }); sandbox()を使うとdiv要素にidと…

Jasmineで非同期のリクエスト終了後にテストを実行する

今日はJasmineを使ってBackbone.Viewのテストを書いていました。 サンプルに載っていた通り、非同期リクエストでViewのテンプレートを読み込んでいたのですが、テンプレートの読み込みが終了した時点でテストを実行しようとして、うまくいかずにハマりました…

PlayFramework 別のモデルと関連があるモデルにGsonのtoJsonが使えないとき

Gsonを使うとモデルをそのままJSON形式に変換したい時に、こんな形で一発変換できます。 Gson g = new Gson(); Person p = Person.findById(myId); g.toJson(p); // {"name": "Taro Yamada", "birthday": "1920/06/30"} ただ、Personが別のモデルとManyToOne…

Ajaxリクエストをテスト

PlayのFunctionalTestでAjaxリクエストをテストしてみました。 ここではJSON形式でデータを渡すので、Gsonを使ってHashをJSON形式に直してからPOSTしています。 HashMap dataToSend = new HashMap(); dataToSend.put("key1", "value1"); dataToSend.put("key…

Eclipseでvim/textmateライクなテーマを使う

仕事ではJavaが多いのでEclipseを使います。 画面があまりにもシンプルで寂しいので、Eclipseのテーマをいじれないか探してみたところ、プラグインを使ってVimやTextmateっぽい感じにすることができました。wombatやmonokaiなども最初から用意されています。…

PlayFrameworkでローカルにあるJarを使いたい

こんな形でjarをローカルフォルダに突っ込んで、使用することができます。 こうしておくとJenkinsでも、ビルド前にdependencies --syncすることで、ちゃんと指定したjarを使ってくれます。 jarのファイル名は、artifactのところにあるように「モジュール名-…

jQuery + Backbone + JasmineでBDD その1

jQuery + Backbone + JasmineでBDDを試してみます。元ネタはこちらのすばらしいブログです。 最初に断っておきますが、私はJasmine初体験でBDD、TDDの知識も本で読みかじった程度です。 ついでに言うと、jQueryもちょろっと触ったことがあるくらいです。なぜ…

PlayFrameworkのtemplate その2

Includeテンプレートの中で別のテンプレートを呼び出すにはincludeを使います。 includeされたテンプレートでは、親テンプレートで使用可能な値を使うことができます。includeする親側での呼び出しは下のような形です。 #{include 'Books/bookDetail.html'} …

PlayFrameworkのtemplate

今日はPlayのテンプレートで3つ発見があったので、そのときのことをメモします。 ソースが手元にないので覚えてる部分から書いていきます。・別のテンプレートをページの一部に読み込む(Railsのpartialみたいな) ・ループの中でインデックスを取得する ・…

PlayFrameworkでTDDのマネをしてみた

自分用の小さな開発案件にPlayを使ってTDDを真似てみようと思いました。 とりあえずModelのテストからと書き始めたところ… //Model @Entity public class Company extends Model{ } //Test public class CompanyTest{ @Test public void testSomething(){ Co…

YUM, RPMのメモ

Redhat系のOSの場合、yum, rpmでパッケージの管理をすることになります。 削除や追加もたまに発生するのですが、毎回コマンドを忘れてしまい、その度に調べることになるのでメモします。YUMすでにインストールされているパッケージを調べるにはlist installe…