プログラマ的京都生活

2013年04月23日

[]再帰

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のパターンマッチの柔軟さがよくわかって勉強になるけど、実際、どっちのスタイルで書くべきなんだろう。今回くらいの簡単なものなら上のほうが一見行数も少ないし(下同様にエラーチェックするともう一行追加しないといけないけど)良さそうに思えるものの、もう少し複雑な処理なら下のスタイルのほうがいい感じになるのかな。

もう少し経験を積む事が必要だ。

2013年02月12日

[]コミットを戻す

  • とあるマージ時まで戻す

git reset --hard ab9979827336efb28157c096ac59f560dcc2XXXX

マージしたものをマージ前に戻したいときはマージコミット番号を指定してやればOK

2013年01月10日

[]GitHub×Jenkins

GitHubソースコードを管理していて、Jenkinsによる自動テストを実行したいと思い設定していたらいきなりハマった。

なぜかgit cloneすらできないという・・・。

色々やったところ原因わかりました。

秘密鍵を置くフォルダは、ユーザーが実行する時はホームディレクトリに.sshを用意してやるのですが、jenkinsのjobから実行させて成功させるにはjenkinsのディレクトリに.sshを配置しないといけませんでした。

実行権限をユーザーにしていればそこを見てくれるのかと思いきや違うんですね。。。

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

2012年12月13日

[]URLエンコード

さっと調べたい時があるのでメモ。

irbを起動して、

require 'cgi'

p CGI.escape("あ&い")

これで

%82%A0%26%82%A2

と出力されます。

逆に、

p CGI.escape("%82%A0%26%82%A2")

とやれば、

あ&い

となります。

2011年11月06日

[]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よりも未来であるべきというのをどう表現したらよいかわかっていない。

Connection: close