2011-08-05 (Fri) [長年日記]
_ String#bytesize
Ruby 1.9ではString#sizeやString#lengthがバイト数ではなく文字数を返すようになったので、バイト数がほしい時はString#bytesizeを使う必要がある。
悪い例:
h['Content-length'] = body.size.to_s
良い例:
h['Content-length'] = body.bytesize.to_s
ASCIIの範囲の文字しか使ってなかったり、エンコーディングがASCII-8BITだったりすると、sizeとbytesizeの値は一致するので、こういったバグはなかなか気付きにくい。 地道にマルチバイト文字を使ったテストを追加するしかないかな。
実はbytesizeはRuby 1.8.7でも使えるので、良い子はバイト数はbytesizeで取得しましょう。
_ Conceptual Mathematics読書会(第1回)
Conceptual Mathematics: A First Introduction to Categories
会社でConceptual Mathematicsの読書会をすることになって、第1回を開催した。
nari先生のご指名で当番を仰せつかったのだが、音読と翻訳が思ったより大変だった。 前に読んだ時はすらすら読めた気がしたんだけど、無意識に知らない単語は読みとばしてたんだな。
今日読んだのはPreviewのSession 1でinformalなintroductionのパート。
Excerciseはみんなでやると楽しいけど、次回からはそれぞれが考える時間を取った方がよさそう。
Excercise 2は、それぞれの地点から物を落として地面に到達するまでの時間を計り、同じ時間だったら同じlevel、という回答でよいのかな。 yhara先生から気圧を計るという案も出て、その時は本文の内容と外れてる気がしたけど、気圧からlevelへのmapがちゃんと定義できるとすれば同じような話といえるかもしれない。