メモ。
Play Frameworkで独自に作成したクラスなどを
URLパスに指定したい場合、PathBindableを実装する必要があります。
そのやり方を説明してくれているサイトを発見したので備忘録的に書いておきます。
www.soutier.de/blog/2012/12/11/playframework-routes-part-2-advanced/
implicit objectという手があるのかー、
と自分のScala力の低さに悶々としてます。
2013年2月4日月曜日
2013年2月3日日曜日
sbtでscalacにコンパイルオプションを渡す方法。
背景
sbtでコンパイルを走らせた際にwarningが出で「-xxxっていうコンパイルオプションをつけてもう一度やってね」って言われるものの、そのコンパイルオプションの付け方がわからん!
ということが起こった時にググって解決したものの、それを忘れていたせいで今日困ったので
メモしておきます。
設定の仕方
sbtを起動したら、set scalacOptions += "-xxx"
を実行。
あとは普通にコンパイルするだけです。
他のやり方は?
build.sbtなどに設定する方法はあるのですが、ファイルを書き換えるのは手間なので、上記のやり方でやってます。
2013年1月10日木曜日
TypeScriptのtsc -wでコンパイルされない件。(TypeScript tsc --watch never compile)
問題
TypeScriptのtscコマンドにおける-w(--watch:ソースファイルの変更を検知して自動的にコンパイルしてくれるオプション)が、どうも効いていない。変更を検知するが、jsファイルを出力してくれない。
※環境
- OS:Ubuntu 12.10 64bit
- npm:1.1.69
- TypeScript:0.8.1?
実行すると
$ tsc form.ts -w
Recompiling(Thu Jan 10 2013 00:46:49 GMT+0900 (JST)): /usr/lib/node_modules/typescript/bin/lib.d.ts,/path/form.ts
のような表示はされるが、form.jsファイルが出力されず。
ソースを変更すると上記の"Recompiling xxx"というのは表示されるものの、やっぱりjsファイルは出力されず。
回避方法
どうもバグのようですが、2013/1現在、修正されていない模様。てことで
Typescript watch compiler
を使います。
これは、tscコマンドのwatchを常に行うようにしたものです。
インストールは以下の通り。
sudo npm install -g tscw
実行すると
$ tscw form.tsとなり、ディレクトリを確認すると無事form.jsファイルが作成されていました。
TSCW is watching for changes, initializing first recompile.
-> recompiling... done.
※tscw -w form.ts ではない点に注意。
また、ソースを修正すると
$ tscw form.tsとなり、変更を検知してコンパイルされていました。
TSCW is watching for changes, initializing first recompile.
-> recompiling... done.
[1:10:11]: change detected in file form.ts
-> recompiling... done.
tscwコマンドは、tscコマンドのオプションすべてが使えるようです。
2012年12月31日月曜日
2012年映画館で観た映画
(多分)2012年初公開映画のうち、映画館で観たものを挙げます。大体観た順。
他、再上映なんかで劇場で観たのは
誰もがそれぞれの視点で世界を見ていて精一杯で、他の人の世界の見え方に余裕がない感じとか青春だよなぁ、
とか、
登場人物の誰もが(観ている)自分のようであって自分でない、
とか、
ゾンビの「生きてもいないし死んでもいない」ってほんと「俺たち」にとってリアリティあるよなぁ、
とか、
「俺たちがこれをやってるのって、将来の何かに結びつくかどうかわかんないけど、『あの人たち』とつながった気がすることがある」ってこと、あるよなぁ、
とか、
傷心が芸術的なものに昇華する展開って、熱いし泣けるよなぁ、
とか、
「こういう生き方もあるんだ」と気づいた一人が、気づいてしまうがゆえに混乱しうろたえて、多分世界の見え方が変わっちまうんだろうなぁっていうシーケンス、しかもそれを映画的に最高に盛り上がるイベントの後に配置するってのがすごいなぁ、
とか、
その最後の最後、このキャラクターはAとBのどっちに行くんだ、というところで、Aの音声は小さくなっていき、Bの音声と視覚表現がだんだんと強くなっていく、という表現、
とか、
「それでもこの世界で生きていかなくてはならないのだから・・・」
などがもうたまらなく好きになってしまったのですよ。
青春映画のエポックメイキングだと思います。 日本に限らず、海外のティーンが見てもグッとくるんじゃないですかね?自分がぼんくら寄りだからそう思うだけ?
『裏切りのサーカス』は、俳優・スーツ・小道具もかっこいい上に、過去のパーティシーンと現在の対比が涙を誘います。
『007 スカイフォール』は、始まりからオープニングムービーまでが最高にテンション上がります。その後は随所に魅せ場があって良いですね。でも始まりからオープニングムービーまでがかっこよすぎてそれ以降はそこまでノれない感じ。
「妊婦は見てはいけない」シーンはもうほんと勘弁してください!という感想でした。
全体としては3Dが気持ちいいのとヌメヌメ感が気持ち悪くて好きだったのですが、 シャーリーズ・セロンだけは無駄使いだったのでもう少しなんとかして欲しかったです。シャーリーズからアレがどーんと出るのを観たかったですね。
色々と厳選したいと思います。
『ルーパー』とか『ライフ・オブ・パイ』とか、面白そうなのも一杯なので悩みますが。
- 哀しき獣
- 宇宙人ポール
- ゴモラ
- ドラゴン・タトゥーの女
- バトルシップ
- 戦火の馬
- ヒューゴ
- ドライブ
- スーパー・チューズデー
- アーティスト
- ル・アーブルの靴みがき
- 裏切りのサーカス
- わが母の記
- キツツキと雨
- ファミリーツリー
- 別離
- ロボット
- ネイビーシールズ
- アメイジング・スパイダーマン
- 隣る人
- ダークナイト・ライジング
- かぞくのくに
- アベンジャーズ
- プロメテウス
- トガニ
- 桐島、部活やめるってよ
- 最強のふたり
- まどかマギカ 前編
- まどかマギカ 後編
- アウトレイジ2
- 黄金を抱いて翔べ
- ザ・レイド
- アルゴ
- エクスペンダブルズ2
- 高地戦
- ル・コルビュジエの家
- おおかみこどもの雨と雪
- 007 スカイフォール
- レ・ミゼラブル
- 2つの祖国で 日系陸軍情報部
他、再上映なんかで劇場で観たのは
- マネーボール
- パーマネント野ばら
個人的総合1位
『桐島、部活やめるってよ 』です。劇場で見て以来、学園モノとか青春モノ、さらに現実の高校生集団もすべて『桐島史観』でみてしまうほどの影響力がありました。誰もがそれぞれの視点で世界を見ていて精一杯で、他の人の世界の見え方に余裕がない感じとか青春だよなぁ、
とか、
登場人物の誰もが(観ている)自分のようであって自分でない、
とか、
ゾンビの「生きてもいないし死んでもいない」ってほんと「俺たち」にとってリアリティあるよなぁ、
とか、
「俺たちがこれをやってるのって、将来の何かに結びつくかどうかわかんないけど、『あの人たち』とつながった気がすることがある」ってこと、あるよなぁ、
とか、
傷心が芸術的なものに昇華する展開って、熱いし泣けるよなぁ、
とか、
「こういう生き方もあるんだ」と気づいた一人が、気づいてしまうがゆえに混乱しうろたえて、多分世界の見え方が変わっちまうんだろうなぁっていうシーケンス、しかもそれを映画的に最高に盛り上がるイベントの後に配置するってのがすごいなぁ、
とか、
その最後の最後、このキャラクターはAとBのどっちに行くんだ、というところで、Aの音声は小さくなっていき、Bの音声と視覚表現がだんだんと強くなっていく、という表現、
とか、
「それでもこの世界で生きていかなくてはならないのだから・・・」
などがもうたまらなく好きになってしまったのですよ。
青春映画のエポックメイキングだと思います。 日本に限らず、海外のティーンが見てもグッとくるんじゃないですかね?自分がぼんくら寄りだからそう思うだけ?
涙腺がやばい部門
- わが母の記
- ファミリーツリー
- トガニ
- レ・ミゼラブル
熱い!部門
- バトルシップ
- ネイビーシールズ
- アベンジャーズ
- ザ・レイド
かっこいい!部門
- ドライブ
- 裏切りのサーカス
- 007 スカイフォール
『裏切りのサーカス』は、俳優・スーツ・小道具もかっこいい上に、過去のパーティシーンと現在の対比が涙を誘います。
『007 スカイフォール』は、始まりからオープニングムービーまでが最高にテンション上がります。その後は随所に魅せ場があって良いですね。でも始まりからオープニングムービーまでがかっこよすぎてそれ以降はそこまでノれない感じ。
もう勘弁してください!部門
- プロメテウス
「妊婦は見てはいけない」シーンはもうほんと勘弁してください!という感想でした。
全体としては3Dが気持ちいいのとヌメヌメ感が気持ち悪くて好きだったのですが、 シャーリーズ・セロンだけは無駄使いだったのでもう少しなんとかして欲しかったです。シャーリーズからアレがどーんと出るのを観たかったですね。
心に残った映画色々
- 別離:
それぞれの葛藤が描かれていてすごく切ない。 - かぞくのくに:
現実にこのような出来事があった、という点でやりきれない。 - 隣る人:
無邪気なようでいて無邪気でいられない子どもの姿がズシンと来ます。 - 2つの祖国で 日系陸軍情報部:
米国への忠誠を示すために日本との戦いに身を投じた日系の方々の記録。やりきれない・・・。
最後に
来年は諸事情であまり劇場で映画を見れなさそうなので、色々と厳選したいと思います。
『ルーパー』とか『ライフ・オブ・パイ』とか、面白そうなのも一杯なので悩みますが。
2012年12月8日土曜日
eMacsでscaLaを書く準備
この投稿はLL/ML Advent Calendarの12/8向けです。
エクなんとかというエディタのことはこの際忘れて、
eMacsでscaLaを書くことに挑戦しようと思い、設定方法などを記事にする次第。
scala-mode2は下記の機能を提供してくれます。
scala-mode2はGNU emacsの24.2を対象に開発されています。
24より過去にはない機能を使っているそうなのでご注意を。
設定手順
昔はScala本体と一緒に配布されて気もしますが、今はGithubからダウンロードするようです。
ファイルをダウンロードします。
パスなどの情報をemacsの初期化ファイル(自分の場合は~/.emacd.d/init.el)に書き込んでやります。
基本的にはこれだけです。Emacsを起動して、.scalaファイルを開くと、Scalaモードになっていると思います。
シンタックスハイライトが効いていますね。
やはり補完とかリファクタリングしたいですよねー。
ということでENSIMEを使います。
ENSIMEとは"ENhanced Scala Interaction Mode for Emacs"の略称とのこと。
えんざいむ、と読むそうな。
ENSIMEを導入することにより、
emacsの対象バージョンは22以降。23が推奨されています。
が、私が試している限り、24.2でも問題なく動いています。
設定手順
Downloadサイトから適切なファイルを取得します。
展開後、emacsの初期化ファイルに下記を追記します。
SBTから設定ファイルを作成
ENSIMEを使うには、設定ファイルを作成する必要があります。
設定ファイルを作成する方法は以下の2つの方法が用意されています。
今回は、Play Frameworkで新規作成したプロジェクトについて、ENSIMEの設定ファイルを生成してみます。
※Play Frameworkのバージョンは、2.1-RC1を使います。
{プロジェクトルート}/project/plugins.sbt に下記の通り追記します。
その後、プロジェクトルートにて
とやるとENSIMEの設定ファイル(.ensime)がプロジェクトルートに作成されます。
{プロジェクトルート}/app/controllers/Application.scala をemacsで開いてみます。
右下に[ENSIME: No Connection]というのが見えますね。
としてやるとENSIMEの機能を有効にできます。
totoshiさんが
EmacsでつくるScala開発環境 後編(ENSIME)
という分かりやすいポストを書かれているのでご参照ください。
正直、私のemacs力が低いため、未だemacsでScalaをバリバリ書ける!という状態ではないのですが、
だんだんと慣れていけたらなぁと思います。
明日は@youku_sさんと@kotashanさんが担当です。
動機
Scala基礎勉強会にて、Scalaを書くのにemacsを使っている人が多数いたので、エクなんとかというエディタのことはこの際忘れて、
eMacsでscaLaを書くことに挑戦しようと思い、設定方法などを記事にする次第。
環境
- CentOS 6.3(64bit)
- GNU emacs 24.2.2
で何を入れるの?
scala-mode2
まずは、scala-mode2という、Scala用のメジャーモードを使用します。scala-mode2は下記の機能を提供してくれます。
- インデント
- シンタックスハイライト
- モーションコマンド
- インデント:完成(finalized)
- ハイライト:仕掛り中
- モーションコマンド:emacsの標準的なものについては対応していますが、Scalaに特化したものはまだ対応できていない
scala-mode2はGNU emacsの24.2を対象に開発されています。
24より過去にはない機能を使っているそうなのでご注意を。
設定手順
昔はScala本体と一緒に配布されて気もしますが、今はGithubからダウンロードするようです。 ファイルをダウンロードします。
git clone git://github.com/hvesalai/scala-mode2.git
パスなどの情報をemacsの初期化ファイル(自分の場合は~/.emacd.d/init.el)に書き込んでやります。
(add-to-list 'load-path "/path/to/scala-mode2/") (require 'scala-mode)
基本的にはこれだけです。Emacsを起動して、.scalaファイルを開くと、Scalaモードになっていると思います。
ENSIME
が、これだけだとScalaをばりばり書くには物足りません。やはり補完とかリファクタリングしたいですよねー。
ということでENSIMEを使います。
ENSIMEとは"ENhanced Scala Interaction Mode for Emacs"の略称とのこと。
えんざいむ、と読むそうな。
ENSIMEを導入することにより、
- ファイルを保存するたびにコンパイルエラーを確認できる
- 補完
- 基本的なリファクタリング
- シンボルのインスペクション
- パッケージ/型のブラウジング
- デバッグ(※ステータスはwork in progress)
emacsの対象バージョンは22以降。23が推奨されています。
が、私が試している限り、24.2でも問題なく動いています。
設定手順
Downloadサイトから適切なファイルを取得します。展開後、emacsの初期化ファイルに下記を追記します。
(add-to-list 'load-path "ENSIME_ROOT/elisp/") (require 'ensime) (add-hook 'scala-mode-hook 'ensime-scala-mode-hook)
SBTから設定ファイルを作成
ENSIMEを使うには、設定ファイルを作成する必要があります。
設定ファイルを作成する方法は以下の2つの方法が用意されています。
- ウィザード形式で対話的に作成する
- SBTプロジェクトにて、ENSIMEプラグインを使って生成する
今回は、Play Frameworkで新規作成したプロジェクトについて、ENSIMEの設定ファイルを生成してみます。
※Play Frameworkのバージョンは、2.1-RC1を使います。
{プロジェクトルート}/project/plugins.sbt に下記の通り追記します。
addSbtPlugin("org.ensime" % "ensime-sbt-cmd" % "0.1.0")
その後、プロジェクトルートにて
play ensime generate
とやるとENSIMEの設定ファイル(.ensime)がプロジェクトルートに作成されます。
ENSIMEの有効化
{プロジェクトルート}/app/controllers/Application.scala をemacsで開いてみます。
右下に[ENSIME: No Connection]というのが見えますね。
M-x ensime
としてやるとENSIMEの機能を有効にできます。
ENSIMEを使った際の画面イメージは?
totoshiさんが
EmacsでつくるScala開発環境 後編(ENSIME)
という分かりやすいポストを書かれているのでご参照ください。
最後に
正直、私のemacs力が低いため、未だemacsでScalaをバリバリ書ける!という状態ではないのですが、
だんだんと慣れていけたらなぁと思います。
明日は@youku_sさんと@kotashanさんが担当です。
2012年12月3日月曜日
Play Frameworkの2.1-SNAPSHOTでDoubleのformatterが追加されていた。
Play Frameworkの2.1-SNAPSHOTでDoubleのformatterが追加されていたのでメモ。
Play Frameworkでの入力フォームについて、2.0以前では、自分でDouble型のフォーマットを書かなくちゃいけなくて面倒でしたが、2.1からはデフォルトでフォーマットが提供されるようです。
2.0の場合も、下記の実装をコピーしてフォーマッターを作れば簡単。
https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/data/format/Format.scala#L117
via http://stackoverflow.com/questions/12759430/play-bind-a-form-field-to-a-double
Play Frameworkでの入力フォームについて、2.0以前では、自分でDouble型のフォーマットを書かなくちゃいけなくて面倒でしたが、2.1からはデフォルトでフォーマットが提供されるようです。
2.0の場合も、下記の実装をコピーしてフォーマッターを作れば簡単。
https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/data/format/Format.scala#L117
via http://stackoverflow.com/questions/12759430/play-bind-a-form-field-to-a-double
使い方
2012年7月15日日曜日
ScalaでAndroidのAsyncTaskを使う際に可変長引数でAbstractMethodErrorが発生する件
Androidアプリにて非同期処理を実現しようとするとAsyncTaskを使うわけですが、
Scalaで書こうとすると実行時にAbstractMethodErrorが発生する訳です。
で、これはどうもJava側での可変長引数をScalaでよろしく処理できないためのようで。
てことで検索したら解決策を発見したのでメモ。
https://gist.github.com/1175555
AsyncTaskを継承したJavaクラスを作成し、可変長引数を受け取ったらその1個目の引数を使ってabstractメソッドに処理を移譲しています。
Scalaで書こうとすると実行時にAbstractMethodErrorが発生する訳です。
で、これはどうもJava側での可変長引数をScalaでよろしく処理できないためのようで。
てことで検索したら解決策を発見したのでメモ。
https://gist.github.com/1175555
@Override
protected Result doInBackground(Params... params) {
return doInBackground(params.length > 0 ? params[0] : null);
}
abstract protected Result doInBackground(Params param);
AsyncTaskを継承したJavaクラスを作成し、可変長引数を受け取ったらその1個目の引数を使ってabstractメソッドに処理を移譲しています。
登録:
投稿 (Atom)