再帰

Scalaの勉強を再開した。
Ninety-Nine Scala Problems

とりあえず今日は第一問目。

scala> last(List(1, 1, 2, 3, 5, 8))
res0: Int = 8

こんな関数lastを作りなさい、と。
で、作ったのはこれ。

def last[T](ls:List[T]):T = {
  l(ls.size - 1)
}

答えはコレだった。

def last[T](ls:List[T]):T = ls match {
  case h::Nil => h
  case _::tail => last(tail)
  case _ => throw new NoSuchElementException
}

あらら・・。
よく英語を読むと、Prologからの移植で、再帰の練習問題っぽい。なるほど。
Scalaのパターンマッチの柔軟さがよくわかって勉強になるけど、実際、どっちのスタイルで書くべきなんだろう。今回くらいの簡単なものなら上のほうが一見行数も少ないし(下同様にエラーチェックするともう一行追加しないといけないけど)良さそうに思えるものの、もう少し複雑な処理なら下のスタイルのほうがいい感じになるのかな。
もう少し経験を積む事が必要だ。

GitHub×Jenkins

GitHubでソースコードを管理していて、Jenkinsによる自動テストを実行したいと思い設定していたらいきなりハマった。
なぜかgit cloneすらできないという・・・。
色々やったところ原因わかりました。
秘密鍵を置くフォルダは、ユーザーが実行する時はホームディレクトリに.sshを用意してやるのですが、jenkinsのjobから実行させて成功させるにはjenkinsのディレクトリに.sshを配置しないといけませんでした。
実行権限をユーザーにしていればそこを見てくれるのかと思いきや違うんですね。。。

※ちなみにOSはLinuxです。当初Windowsでやっていたのですがうまくいかなくて変更。ちなみに上記施策を行ってもWindowsはダメでした。

英語勉強

うまく言えなかった表現:

・1日中家で過ごしました。:I stayed the whole day at home.

・家からオフィスまでどのくらいかかるんですか?:How long will it take from your home to your office?

・彼はもう寝ているよ。: He is asleep.

・海が見える場所に滞在したい。: i want to stay in a place where i can see the beach.

・妻は息子に寝て欲しいと思っている。:My wife wants him to sleep.

・2歳の息子: 2 year old son.(2 yearsではない。"息子は2歳"という、my son is 2 years oldはyearsとなる。)

・実家は雪が降らないのでスキーが苦手です。:It doesn't snow in my hometown so I'm not good in skiing.

・嫁は東京よりも京都に住むのが好き。:My wife prefers to live in Kyoto than Tokyo.

・How have you been?と聞かれて。: I've been fine. / I've been busy.

・英語の成績はAでした。:My grade in English was an A.

・英語は得意教科でしたか?:Were you good at English?

・会社の近くにはあんまレストランないですわ:there aren't much restaurants around the company.

・普段同僚と昼食を食べます。:i usually eat together with my officemates during lunch.

・毎週金曜日に私と他の2人が授業を受けます。: I, together with two other students, are taking his class every Friday.

 

自己紹介表現

・I work in Tokyo. / I work for company-nane. / I work at Tokyo branch.

 

覚えておいたほうがよさそうな表現:

・That's incredible. :すげー、信じられない(ほど素晴らしい):夜遅く帰っているのに毎日勉強していると言うような人に。

・I don't get it.:分かりません。

・to bring something(the meetingなど) forward : 早まる

・to put something back : 遅れる

・Could I just summeries? : まとめさせてもらっていいですか

・When is your good time for you? : (スケジュール調整などで)いつがいい?

・What's the spelling of your company name?

・I'd like you to … : やってほしいなーみたいなソフトなお願いの仕方

 

文法:

・always、usually、neverなどの副詞を使うと、動詞は原形(3人称単数のsは不要)。

She often watch TV.  watchesではない。

・I'm going to Tokyo next week. 現在進行形で未来を表すことができる。Are you working tomorrow?とか。

・I'm going shopping tomorrow. I'm going swimming. これも未来形。going -ing.

 

より自然な英語表現(日本人がミスしやすそう):

・皿を洗う:wash the dishes ⇛ do the dishes

・携帯電話:a mobile phone ⇛ a cell phone

・クレーム(日本語英語なので注意。文句を言うという意味のクレームはclaimではない):claim ⇛ complain

・Mr. + ファーストネームはおかしい。Mr. + ファミリーネーム。

・Where are you from? か Where do you from? なら出身を聞く。Where did you from?なら今日どこから来たかを聞く。

Play!触ってみた

1.2.3を使いました。

はまった

crud用のhtmlを編集しようとして、マニュアルにあるとおり以下のコマンドを実行したところ、、

play crud:ov --template Users/list

こんなエラーが。

Invalid command: crud:ov

アプリケーションの場所を明示することでうまく行った。

play crud:ov {PATH_OF_YOUR_PROJECT} --template Users/list

疑問

同じクラス内に、startとendというDateがあった場合、endはstartよりも未来であるべきというのをどう表現したらよいかわかっていない。