2012年07月

シェル操作練習

やましろ (yamashiro)さんからの課題をgistに書きました。
シェル操作課題 (cut, sort, uniq などで集計を行う) 設問編 - Yamashiro0217の日記

Playframework2におけるroutesの書き方のサンプル

Playframework2.0.2におけるroutesの書き方のサンプルアプリを作成しました。軽くコメントも入れてあります。
githubのサンプルプロジェクト
playframework2_logo

routes

# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)


# routesの書き方サンプル

## 基本

### 静的パス。Static path。完全一致した場合。
GET     /                            controllers.Application.index
GET     /test11                      controllers.Application.test11

### 動的パート。Dynamic parts。クライアントからIDを受け取る場合など。/test12/123
GET     /test12/:id                  controllers.Application.test12(id:Int)
### 動的パート。ワイルドカードを使える。/test3/hogeや、/test3/huga/fugaなどを受け取れる。
GET     /test13/*name                controllers.Application.test13(name:String)
### 動的パート。正規表現を使える。$id<regex>の中に書く。以下の例は数字4文字。
GET     /test14/$id<[0-9]{4}+>       controllers.Application.test14(id:Int)


## 引数について

### 引数を取らない
GET     /test21                      controllers.Application.test21
### 引数を取る。書き方その1。/test22/123
GET     /test22/:id                  controllers.Application.test22(id:Int)
### 引数を取る。書き方その2。/test23?id=123
GET     /test23                      controllers.Application.test23(id:Int)
### 引数の型は省略可。(その場合、Stringになる?)
GET     /test24/:name                controllers.Application.test24(name)
### デフォルト引数の設定。/test25?name=hoge
GET     /test25                      controllers.Application.test25(name="hoge")


## HTTPメソッド

### POST、GET、PUT、DELETEに対応している。
POST    /test31                      controllers.Application.test31
PUT     /test32                      controllers.Application.test32
DELETE  /test33                      controllers.Application.test33


## 補足
### 先に書かれた方が優先される。
### play ver1系では、HTTPメソッドにワイルドカードが使えたらしい。今はエラーになる。
####
#### *       /test41                      controllers.Application.test41
### play ver1系の引数を中括弧で指定するやり方も無くなったらしい。


## 参考資料
### ver2系の資料
#### http://www.playframework.org/documentation/2.0.2/ScalaRouting
#### https://github.com/playframework-ja/Play20/wiki/ScalaRouting
### ver1系の資料
#### http://playdocja.appspot.com/documentation/1.1/routes


参考文献

Documentation: ScalaRouting — Playframework
ScalaRouting · playframework-ja/Play20 Wiki
Documentation: routes — Playframework(ver1系の話)
Documentation: ScalaTest — Playframework
Documentation: ScalaFunctionalTest — Playframework
Play20/samples/scala/helloworld/test/ApplicationSpec.scala at master · playframework/Play20
簡単なアプリケーションを作成しよう — How to use playframework 2.0 1.0 documentation

gitでの操作ミスへの対処

スライドを作成したので公開します。初歩的な内容です。
gitで過去に戻りたい
View more presentations from tattyamm

#この文章の目的

* gitでできることを知っておく
* 特に操作ミス、やり直しのできる範囲を知りたい

#コミット漏れ、ちょっとした編集ミス


hoge.txtとfuga.txtを編集した

正解
$ git add hoge.txt fuga.txt
$ git commit -m "大事な変更をしました"

ミス
$ git add hoge.txt
$ git commit -m “大事な変更をしました”   //ここで足りない事に気がついた
$ git add fuga.txt
$ git commit -m “大事な変更をしました(その2)"

やりたいこと
commitが1回であったようにしたい

方法1
新たにコミットを作る
$ git add fuga.txt
$ git commit --amend
前にしたcommitとは別に、新しい歴史を作り、そこにcommitした状態

方法2
コミットを取り消してから、改めて作業する
$ git reset --soft HEAD^
コミット前の状態に戻るので、改めて作業を行う

方法3
commitをまとめて1つにする
$ git merge --squash


#コミットメッセージをミスった

ミス
メッセージの入力を間違えた
$ git commit -m "犯人はヤス"

このまま何もせずに
$ git commit --amend
とすれば、新たにコミットメッセージを登録できる


#この編集、全部いらない

特定のファイルを、最後にcommitした状態に戻す
git checkout -- readme.txt

一応以下の方法でも可能だが、普通の方法では無い、取り消せない、という問題がある。
$ git stash
$ git stash clear


#とにかくよくわからないけど戻りたい

$ git reflog
今までのHEADの移り変わりが出てくる。それを特定時点まで戻る。
$ git reset --hard HEAD@{1}


新しい機能追加なのにgit commit --amendしてしまった
解決策:git reset HEAD@{1}


#注意

これらの動作はローカルリポジトリなら問題無い。
リモートリポジトリでは、新たにcommitする方が良い。
チーム作業ならば、応相談。

例 リモートリポジトリの場合
リモートのommitを削除
$ git reset HEAD^ --hard
$ git push origin -f
あるいは
$ git push -f origin HEAD^:master
複数人で使っているリモートリポジトリでの作業は危険。


#まとめ

* gitの流れに沿っていれば、やり直しが効く
* それでも、削除する系の動作には注意しよう
* リモートの扱いには注意


#参考文献

流れがわかりやすい
Git初心者が絶対に覚えておくべきコマンド - idesaku blog
網羅的
【派閥別】Gitのコミットを間違えたときの対処法まとめ - 本当は怖い情報科学
commitのやり直しについて
git commitをやり直しする&取り消しする(「get commit --amend」と「git reset」) - hogehoge foobar Blog Style5

これからPlay Frameworkをはじめる人が読むリンク集

playframework2_logo
とりあえず動かしたい人が読むリンク集をメモ。

・想定環境:Play frameworkのver2系をScalaでInteliJを使い開発したい人。
・Play ver1系とver2系は別のものです。間違えてver1の資料を読まないようにしましょう。
・(そもそもフレームワークとは何か勉強したい、という人は、)Rub on RailsとかCake PHPとか他のフレームワークを知らないときつい気がします。そっちを軽くやってから入るのも良さそう。

Play 2.0 ドキュメント · playframework-ja/Play20 Wiki
とりあえずここを読みましょう。

初めての Play アプリケーション · playframework-ja/Play20 Wiki
Helloworldが終わったら、ここを読みながらサンプルのアプリを作る。

簡単なアプリケーションを作成しよう — How to use playframework 2.0 1.0 documentation
ここを参考にテストを書く。(2012.07.28追記)

Javaで軽快に使える「軽量フレームワーク」特集 ~本格的なRoRスタイルフレームワーク「Play!」(1) (1/7):CodeZine
Play1向けですがわかりやすい。

軽量フレームワーク「Play」GAEにデプロイ最短手順・2012最新版 - アンテナ立てて
Google App Engineでやりたい人向け。GAEモジュールはPlay2系には対応していません。Play1.2.4を使いましょう。

Play framework 2.0 RC2 を heroku で試してみた - happytanの足跡
Herokuでやりたい人向け。

CentOS 6.2にJavaのPlay framework 2.0.2をインストール 一言多いプログラマーの独り言
CentOSでやりたい人向け。

(ここからは古い資料)
Play framework - Home
本格派エンジニアの工具箱:第14回 Ruby on RailsライクなJavaフレームワーク「Play Framework」|gihyo.jp … 技術評論社
これらの資料はver1系なので、上で紹介したものを優先して読みましょう。


このサイトは
 Webアプリケーション開発のことや、iPhone・Android向けアプリ開発の話題がメインです。技術情報を取り扱っています。
 管理:えんたつ。twitter: @tattyamm
mimage
カテゴリ別アーカイブ
RSS
リンク
プログラミング本
アプリを作る時などに読んだ本
iPhoneプログラミングUIKit詳解リファレンス iPhoneプログラミングUIKit詳解リファレンス Android Layout Cookbook アプリの価値を高める開発テクニック パーフェクトPHP (PERFECT SERIES 3) JavaプログラミングBlack Book 2nd Edition (Black Bookシリーズ)
表記
当サイトではGoogle Analyticsを使用しております。詳細はこちらを御覧ください