技術ネタを書けるような人間になりたいという心情を詠んだ句

スタック食わない再起って怖くね?

巷で話題のElixirを触ってみました。
カジュアルErlang的ポジションだそうで、関数型言語なのでした。

末尾再帰がスタックを消費しないというのはErlangとかScalaと同じなのですが、
引数の型チェック忘れて何度か無限ループやっちゃいました。

ちゃんとガード式つけましょうね。

def recursive(n) when is_integer(n) do
  recursive(n, [])
end

defp recursive(n, acc) do
  #do_something
end

みたいな。



文字列の扱いググろうとして「elixir string」って検索するとギターの弦ばっか出てくるのはどうしたもんかね。

EmacsのC-s検索で大文字小文字区別ができなかった

Emacsでいわゆるインクリメンタル検索するとき、大文字小文字は是非とも区別して欲しいのです。

巷の解説では

(setq case-fold-search nil) ;大文字小文字を区別する
(setq case-fold-search t)   ;大文字小文字を区別しない

となってるのに、これ書いても効果なし。

ムムムーとなってたときに、これ発見。
StackOverflowさまさま。

(setq-default case-fold-search nil)

上手にできました。

apt-getがコケる

とあるVPSを契約して、「まずはコレっしょ」ということで

# apt-get update

ってやったら

Ign http://archive.ubuntu.com maverick-security/...
Ign http://archive.ubuntu.com maverick-security/...
Ign http://archive.ubuntu.com maverick-security/...
Err http://archive.ubuntu.com maverick/...
  404  Not Found [IP: ...
Err http://archive.ubuntu.com maverick/...
  404  Not Found [IP: ...

みたいなのがバーっと出てうまく行きましぇん。
VPSだから色々制限があるのかなー?と思ったんですが、
よくよく思えばこのOSはちょっと古めのUbuntuなのでした。

ということで/etc/apt/sources.listを編集。

deb http://archive.ubuntu.com/...

となっているところを

deb http://old-releases.ubuntu.com/...

として再度update。めでたし。

kotlinしてみた

ずっと更新サボっちゃいました。はい。

この頃、新しい言語を学びたい欲が少々ございまいして、ちょっとkotlinを触ってみました。
こんなデモが用意されてて、練習できるようになってるんですねー。

しかしまあローカルで動かしたいですよねってことで、こちらを読んでコンパイラを落とし、Hello Worldする。

fun main(args: Array<String>) {
  println("Hello.")
}

Hello.ktで保存して、えいっ

$ ./kotlinc/bin/kotlinc-jvm -src ./Hello.kt -output .
ERROR: kotlin/Hello.kt: (2, 3) Unresolved reference: println
exec() finished with COMPILATION_ERROR return code

むー。どーいうこった。printlnが理解されない。
試しに、

fun main(args: Array<String>) {
  System.out.println("Hello.")
}

ってやったらコンパイルできた。
んでもって

$ java -classpath kotlinc/lib/*:. namespace
Hello.

できた。でもSystem.outとかいちいち書いてたら、最初からJava使え的な感じですよね。
importとかすればいいんですかね。
色々試したけどよく分からんかったので、おとなしくintelliJ IDEA入れましょうかねぇ。

いまさら気づいたこんなこと

普段の作業では、文章中の単語の出現回数とか数えることがよくあるのですよ。ボク。

Hashを使って、単語がキーで回数が値とかやるわけですが、初出現の単語がくるとhash[key]はnilと評価されて足し算がmethod_missingとなるので

if count[w].nil?
  count[w] = 1
else
  count[w] += 1
end

とか

count[w] = count[w].nil? ? 1 : count[w]+1

とかやってたんですよ。

もっとスマートに書けないかなーと思っていたら、むっさ簡単に書けるじゃないかコンチクショー(# ゜Д゜)ー!

count[w] = (count[w] || 0) + 1

count[w] = (count[w] or 0) + 1

なぜ今まで思いつかなかったのか…

2012/11/14 追記
こういう書き方はnilガードって言うらしいです。

Gruffテーマ一覧

久しぶりの記事。

エク○ルを使うのが何となく嫌で、探してみたらありましたよ。
gruffというgemが。

解説ページは山ほどあるのでググってください。
しかしグラフのテーマ一覧みたいなのは見当たらなかった。

ということでホイ。

37signals
f:id:goflb1238:20121020010334p:plain

keynote
f:id:goflb1238:20121020010023p:plain

odeo
f:id:goflb1238:20121020010024p:plain

greyscale
f:id:goflb1238:20121020010026p:plain

pastel
f:id:goflb1238:20121020010029p:plain

rails_keynote
f:id:goflb1238:20121020010039p:plain

うん。きれいですね。
pastelの薄さにはドン引きですね。うん。