Twitter 上でのログイン込みで OAuth 認証をを、
Play Framework で Twitter4J を使って試してみる。
せっかく Play を 2.1.1 に上げたところなので、
Play 2.1 の新機能である Filter 機能を使ってみよう。
アプリにアクセスすると Twitter の認証画面が出て、
認証すると Tweet するような感じで作ってみる。
| ● 2013年6月23日日曜日 - | Play Framework から Twitter4J を使う。 |
| ● 2013年6月22日土曜日 - | [Play] Play 2.0.3 から Play 2.1.1 へバージョンアップ |
| ● 2013年6月16日日曜日 - | [Play] Play Framework のセッション |
| ● 2013年6月15日土曜日 - | [Play] Play の Welcome Application |
| ● 2013年5月12日日曜日 - | [Scala] AppEngine で Scala を使う |
| ● 2013年3月2日土曜日 - | [Scala] 無名関数の return の仕組み(その2) |
| ● 2013年3月1日金曜日 - | [Scala] 無名関数の return の仕組み |
| ● 2013年2月18日月曜日 - | [Scala] 無名関数中での return 文 |
| ● 2013年2月4日月曜日 - | [Scala] Lazy による遅延評価 |
| ● 2013年2月2日土曜日 - | [Scala] 名前渡し |
| ● 2013年1月21日月曜日 - | [Scala] 関数リテラルの2つの定義方法 |
| ● 2013年1月20日日曜日 - | [Scala] Soure.fromUrl での認証 |
| ● 2012年10月18日木曜日 - | [Scala] JSON の標準パーサーで数値型が Double になる問題への対処方法 |
| ● 2012年9月30日日曜日 - | [Scala] Eclipse に Scala の Maven プロジェクトを インポート。の続き |
| ● 2012年9月28日金曜日 - | [Scala] Eclipse に Scala の Maven プロジェクトを インポート |
| ● 2012年9月26日水曜日 - | [Scala] REPLを使う |
| ● 2012年9月23日日曜日 - | [Scala] match 文の仕組み |
| ● 2012年9月21日金曜日 - | [Scala] 正規表現によるマッチ |
| ● 2012年9月20日木曜日 - | [Scala] 一般クラスのマッチ |
| ● 2012年9月18日火曜日 - | [Scala] Eclipse の Java プロジェクトで Scala を使えるようにする。 |
2013年6月23日日曜日
2013年6月22日土曜日
[Play] Play 2.0.3 から Play 2.1.1 へバージョンアップ
最近 これまで使っていた Play 2.0.3 のバージョンを変えていなかったので、
Play 2.1.1 にバージョンアップしたらいろいろ動かなくなった。
そもそもコンパイルが通らない。
いくつか手を入れないといけなかったのでメモ。
そもそもコンパイルが通らない。
[warn] :::::::::::::::::::::::::::::::::::::::::::::: [warn] :: UNRESOLVED DEPENDENCIES :: [warn] :::::::::::::::::::::::::::::::::::::::::::::: [warn] :: play#sbt-plugin;2.0.3: not found [warn] :::::::::::::::::::::::::::::::::::::::::::::: [warn] [warn] Note: Some unresolved dependencies have extra attributes. Check that these dependencies exist with the requested attributes. [warn] play:sbt-plugin:2.0.3 (sbtVersion=0.12, scalaVersion=2.9.2) [warn] sbt.ResolveException: unresolved dependency: play#sbt-plugin;2.0.3: not found
いくつか手を入れないといけなかったのでメモ。
- Play Framework の Migration Guide
-
Play! 2.0から2.1にアップデート - k4200’s notes and thoughts
アップデート作業について記載されている。今回はここにお世話になりました。
2013年6月16日日曜日
[Play] Play Framework のセッション
Play Framework には Tomcat のような HTTP セッションがない。
Play でのセッションは Cookie として実現されている。
Play でセッションを使う場合にはこのようなコードになる。
もしくは、Option.getOrElse を使って、
Play でのセッションは Cookie として実現されている。
Play でセッションを使う場合にはこのようなコードになる。
package controllers
import play.api._
import play.api.mvc._
import play.api.mvc.RequestHeader
object Application extends Controller {
def index = Action.apply { request =>
val currentVal : String = request.session.get("hoge") match {
case Some(x) => x;
case None => "";
}
Ok("hoge = " + currentVal).withSession(
request.session + ("hoge" -> "hogege"));
}
}
request.session.get は Option を返すので、
パターンマッチで Some か None かを判定して、Some から値を取り出す必要がある。もしくは、Option.getOrElse を使って、
...
val currentVal : String = request.session.get("hoge").getOrElse("");
...
とする。こっちの方が簡単でいい。2013年6月15日土曜日
[Play] Play の Welcome Application
Play Framework 2.0.3 で 「play new XXX」で simple Scala application を作成したときに生成される Application.scala は 以下のようになっている。
ここで、Application#index メソッドの返り値は、
何が起きているのか分かりずらいので少し中を見てみることにしよう。
package controllers
import play.api._
import play.api.mvc._
object Application extends Controller {
def index = Action {
Ok(views.html.index("Your new application is ready."))
}
}
ここで、Application#index メソッドの返り値は、
play.api.mvc.Action[play.api.mvc.AnyContent]になっている。
何が起きているのか分かりずらいので少し中を見てみることにしよう。
2013年5月12日日曜日
[Scala] AppEngine で Scala を使う
Eclipse + App Engine で Scala を使ってみる。
以前、既存 Java プロジェクトで Scala を使えるようにする方法は確認したので、 Google Web Application プロジェクトを作って、 そこで Scala が使えるようにする方法で行く。
以前、既存 Java プロジェクトで Scala を使えるようにする方法は確認したので、 Google Web Application プロジェクトを作って、 そこで Scala が使えるようにする方法で行く。
2013年3月2日土曜日
[Scala] 無名関数の return の仕組み(その2)
前回の記事 に引き続き、無名関数中の return 文の仕組みについて調べてみる。
今回は 匿名関数を引数に引き渡して深い階層からリターンしてくる場合を見てみよう。
今回の Scala コードはこれ。
def main(args:Array[String]) {
println("main start")
test();
println("main finish")
}
private def test() {
val f = () => return;
println("test start")
test2(f);
println("test finish") // 実行されない。
}
def test2(f: () => Unit) {
println("test2 start")
f();
println("test2 finish") // 実行されない。
}
------------------
main start
test start
test2 start
main finish
test2() 内の 匿名関数実行で test2()、test() を一気に脱出している。
ラベル:
Programming,
Scala,
関数,
匿名関数
2013年3月1日金曜日
[Scala] 無名関数の return の仕組み
この前の記事で、Scala の無名関数中での return 文の動きについてみてみた。
今回はその仕組みが Java 的にどうなっているのか見てみる。 JD-Plugin の導入には前回失敗したので、デコンパイルには Java Decompiler の GUI 版を使った。前回使ったコードはこれ。
def main(args:Array[String]) {
println("main start")
test();
println("main finish")
}
private def test() {
val f = () => return;
println("test start")
f();
println("test finish") // 実行されない。
}
------------------
main start
test start
main finish
ラベル:
Programming,
Scala,
関数,
匿名関数
2013年2月18日月曜日
[Scala] 無名関数中での return 文
無名関数の中で return 文を使うと、関数を抜けるのではなく、
無名関数を定義した関数自体を抜けてしまう。
test() が f() 呼び出しで return していることがわかる。
関数なのだから なんとなく 無名関数 だけを return しそうな気がするので 気を付ける必要がある。
def main(args:Array[String]) {
println("main start")
test();
println("main finish")
}
private def test() {
val f = () => return;
println("test start")
f();
println("test finish") // 実行されない。
}
------------------
main start
test start
main finish
test() が f() 呼び出しで return していることがわかる。
関数なのだから なんとなく 無名関数 だけを return しそうな気がするので 気を付ける必要がある。
ラベル:
Programming,
Scala,
関数
2013年2月4日月曜日
[Scala] Lazy による遅延評価
変数宣言時に Lazy キーワードをつけるとその値が必要になるまで値の評価を遅延できる。
var x = 1; lazy val z = x*2; x = 2; println(z); -------------------- 4変数宣言時には x の値は 1 だが、println(z) 呼び出しで z の値が必要になった時点で評価されるので、 出力は 4 になる。
ラベル:
lazy,
Programming,
Scala,
遅延評価
2013年2月2日土曜日
[Scala] 名前渡し
Scala で関数を定義する際、仮引数名と型名の間に 「 => 」を記載すると名前渡しとなり、値が必要になったときに式の値が評価される。
var x = 1;
def main(args: Array[String]) {
x = 1;
notdelayed(x*2);
x = 1;
delayed(x*2);
}
def notdelayed(value : Int) {
x = 100;
println("notdelayed: " + value)
}
def delayed(value : => Int) {
x = 100;
println("delayed: " + value)
x = 200;
println("delayed: " + value)
}
--------------------
notdelayed: 2
delayed: 200
delayed: 400
ラベル:
Programming,
Scala,
遅延評価,
名前渡し
2013年1月21日月曜日
[Scala] 関数リテラルの2つの定義方法
Scala で関数リテラルを定義する場合、通常はこのような形式で定義する。
val a : Function2[String, String, Unit] = (x,y) => {
val xx = x + y;
println(xx);
}
a("abc", "def")
--------------------
abcdef
ラベル:
Play framework,
Scala,
関数,
関数リテラル
2013年1月20日日曜日
[Scala] Soure.fromUrl での認証
認証が必要なページへアクセスする際の認証の方法。
Apache HttpClient 等を使うのであればその流儀でやればいいのだが、scala.io.Source.fromUrl 等で簡単に済ませる場合のやりかた。
Java の java.net.URL で使う方法をそのまま使う。
Apache HttpClient 等を使うのであればその流儀でやればいいのだが、scala.io.Source.fromUrl 等で簡単に済ませる場合のやりかた。
Java の java.net.URL で使う方法をそのまま使う。
2012年10月18日木曜日
[Scala] JSON の標準パーサーで数値型が Double になる問題への対処方法
前回、Scala の JSON 標準ライブラリを使ってみた。
Scala の 標準パーサーでは、数値型が常に Double として扱われてしまう問題がある。
val text = """{ "x":1 }""";
val result = JSON.parseFull(text);
val map = result.get.asInstanceOf[Map[String, Option[Any]]];
println (map.get("x").get);
--------------------
1.0
ラベル:
JSON,
Programming,
Scala
2012年9月30日日曜日
[Scala] Eclipse に Scala の Maven プロジェクトを インポート。の続き
前回、m2eclipse-scalaを使って、Scala プロジェクトの pom.xml を Eclipse にインポートした。
インポートの結果作成された .project ファイルと、.classpath ファイルの中身を確認しておく。
インポートの結果作成された .project ファイルと、.classpath ファイルの中身を確認しておく。
2012年9月28日金曜日
[Scala] Eclipse に Scala の Maven プロジェクトを インポート
Eclipse に Scala の Maven プロジェクトを m2e を使ってインポートする。
m2eclipse-scala を使う。
これをインストールしておかないと、pom.xml を import するときに、 maven-scala-plugin:2.15.2:compile と testCompile の resolve ができずにエラーになってしまう。
m2eclipse-scala を使う。
これをインストールしておかないと、pom.xml を import するときに、 maven-scala-plugin:2.15.2:compile と testCompile の resolve ができずにエラーになってしまう。
2012年9月26日水曜日
[Scala] REPLを使う
これまで Scala は Eclipse IDE で使ってきた。
Eclipse IDE で使う分には Scala SDK のインストールは必要ないのでインストールしていなかったのだが、 ちょっとしたことを確認するのに REPL があると便利なので入れてみる。
Scala の本家 から最新の stable release である Scala 2.9.2 をダウンロード。
Windows 版は zip 版と msi 版があるが msi 版は何がどう設置されるのかわからないので zip 版をダウンロード。 展開して bin ディレクトリにパスを通す。
これだけで準備は完了。REPL を使ってみる。
Eclipse IDE で使う分には Scala SDK のインストールは必要ないのでインストールしていなかったのだが、 ちょっとしたことを確認するのに REPL があると便利なので入れてみる。
Scala の本家 から最新の stable release である Scala 2.9.2 をダウンロード。
Windows 版は zip 版と msi 版があるが msi 版は何がどう設置されるのかわからないので zip 版をダウンロード。 展開して bin ディレクトリにパスを通す。
これだけで準備は完了。REPL を使ってみる。
2012年9月23日日曜日
[Scala] match 文の仕組み
このブログを見て match 文 の仕組みが分かった気がするのでメモしておく。
-
パターンマッチをもっと便利に - extractor(抽出子)による拡張
- ゆるよろ日記 -
2012年9月21日金曜日
[Scala] 正規表現によるマッチ
正規表現を使った match ... case 文を使ってみる。
val p : Regex = ".*no=([0-9]+),name=(.*)".r;
val values = List(
"no=10,name=ten",
"no=11,name=eleven",
"no=20,name=twelve" );
for (value <- values ) {
value match {
case p("10", v) => println("name for 10: " + v)
case p("11", v) => println("name for 11: " + v)
case p(n, v) => println("name, value= " + (n,v))
}
}
name for 10: ten
name for 11: eleven
name, value= (20,twelve)
2012年9月20日木曜日
[Scala] 一般クラスのマッチ
List や Tuple ではない一般のクラスの場合、unapply、unapplySeq いわゆる抽出子(extractor)を定義しておくことで match ... case 文で使えるようになる。
...
val a = new MatchSampleClass;
a match {
case MatchSampleClass(x, y) =>
println("x: " + x + " y: " + y);
case _ => println("OTHER: " + a);
}
....
class MatchSampleClass
object MatchSampleClass {
def unapply(obj : MatchSampleClass) : Option[(String, String)] = {
return Option(("ONE", "TWO"));
}
}
x: ONE y: TWO
2012年9月18日火曜日
[Scala] Eclipse の Java プロジェクトで Scala を使えるようにする。
目標: 既存の Java プロジェクトで Scala も使えるようにすること。
基本的には、.project ファイルと .classpath ファイルに手を入れればできるはず。
やってみよう。
前提条件は、Eclipse に Scala IDE が導入されていること。
環境は、Eclipse Juno + Scala IDE nightly build 版( Juno 対応版)。
.project や .classpath ファイルを直接編集するので、Eclipse は終了しておくか編集対象プロジェクトを Close しておく。
基本的には、.project ファイルと .classpath ファイルに手を入れればできるはず。
やってみよう。
前提条件は、Eclipse に Scala IDE が導入されていること。
環境は、Eclipse Juno + Scala IDE nightly build 版( Juno 対応版)。
.project や .classpath ファイルを直接編集するので、Eclipse は終了しておくか編集対象プロジェクトを Close しておく。
登録:
投稿 (Atom)
