@kyanny's blog

My life. Opinions are my own.

いろいろ。

Scalaプログラミング入門

帰りに読んでて、これちょっと失敗したかなーと思った。というのは、文法の解説がはしょりすぎてて物足りなく感じる。「Java でいう○○」とか「Ruby でいう××」とかいう説明が多く目に付く。 Ruby はともかく Java を全然知らないおれにとっては、例えの意味がわからないので説明になっていない。手抜きしているように感じる。まあそもそも Scala やるなら Java は知っておけよボケ、という話なのかもしれませんが・・・。特に記号とか、簡潔な表記法についてこそ、ぐぐりづらいし詳しく知りたいところなのに、

def sum[T <: Number](as: T*): Double = as.foldLeft(0d)(_ + _.doubleValue)

みたいなコードが、

method[TypeArg] と <: と MultiLengthArg* と 0d と _.doubleValue

についての説明がそれぞれない、または不十分なまま出てきたりするので、読んでいて頭がついていかない。習うより慣れろ、という考え方で、意味はわからなくてもとにかく repl に入力しながら覚えていけ、というスタイルなのかもしれない。それだと通勤中にちょっとずつ読むのだと消化しづらい。やっぱりコップ本を買うべきだったんだろうか。 #rpscala とか #wpscala とかへ行ったときに意見を聞いてみよう。

あと Macbook に ~/scala というディレクトリがあって何個か .scala なファイルがあった。タイムスタンプは 2009/07/10 とかだった。むかしやったときもいちおうちょっとは手を動かしてたんだなと思ってちょっとほろっときた。

PHP の array_filter

callback 関数に操作対象の array 以外の値を渡せないのかな。かなり迷ったあげく、わからなくて foreach を使った。

$date = '2011-02-02';
function my_filter($item, $date){
  return !($item == $date);
}
$items = array('2011-02-01', '2011-02-02', '2011-02-03');
$items = array_filter($items, my_filter($item, $date)); // こういう風に書きたい

コールバック関数の「名前」を「文字列で」渡すのはどうも慣れない。慣れたくもない。あとこれは PHP が悪いわけではなくていちゃもんをつけたいだけの愚痴だけど、 php array_filter とかでぐぐると PHP Manual のミラーページみたいなのばかり検索にひっかかってページ数の割に情報量が少ないのが悲しい。たまにブログっぽいのがひっかかってもマニュアル書き写してるだけとか、もっとひどいのになると gihyo.jp みたいなドメインの連載記事っぽいやつなのにやっぱりマニュアル書き写してるレベルで引数複数渡せるのか渡せないのか、とかすごく単純な質問だと思うのだけど調べられないのには閉口する。

BigTuna

railstokyo で BigTuna という CI ツールを教えてもらったので早速今日社内の開発用VMに導入してみた。しかしVMが遅くて何をするにも待たされるので、どうにか BigTuna 本体は動いてるところまでもっていけたけどビルドプロセスを稼働し始めるところまでは至っていない。それでも buildbot を入れようとしたときは(去年の夏に挑戦した) Python のバージョンとかではまってしまって断念したので導入できただけでも前進といえるだろう。結局 ruby も rails も sqlite もソースから入れたりしてパッケージ管理システムから逸脱しまくっているけど。ここから先のほうが大変なのだけど、ずーっと Red でも構わないからまずナイトリービルドしてるところまではもっていきたい。なんか設定画面とかドキュメントとか眺めた限りではコミット時にコミットとかに主眼をおいてるっぽいけど、まぁ cron からビルドをキックするとかは簡単にできると期待したい。

Erlang の -spec

#TEWB3 に参加できないのは残念だけどサンプルコードは公開されてるので読める、ならば自分で読めばいいよね、ということで https://github.com/cooldaemon/BasicStudyForErlang/blob/master/3/sample/kvs/src/kvs.erl などを読んだら -spec というのがあって調べたらコンパイル時の引数型チェックをしてくれるものらしい、ということがわかった。のでサンプルコードを書いてみたのだけど、なんかうまくいってないような・・・何が間違っているんだろう?

-module(spec_test).
-export([test1/0, test2/0]).

-spec positive1(integer()) -> boolean().

positive1(N) when N > 0 -> true;
positive1(N) -> false.

positive2(N) when N > 0 -> true;
positive2(N) -> false.

test1() ->
    positive1(1).

test2() ->
    positive2(1).

#zftalk #zftalk-ja

#zftalk-ja@freenode に Zend_View の layout の中に値を assign したい、という質問があって、他にだれもいなかったのでマニュアル引いたりぐぐったりして一緒に調べてみたけどよくわからなくて、 #zftalk@freenode なら人も多そうだしわかるかな?と思って質問してみたが結局解決しなかったみたいで残念だった。あと一部の外人がちょっと口が悪くてなんだかなーと思った。でも英語だから意思疎通が難しいというよりは物理的な距離が離れてることのほうが大変だなあという印象をうけた。