2013-11-25

CVE-2013-4164 と RHEL5


ぐぐって出てきたredhatのチケットトラックらしきものをみて、viewvcをみにいくと、差分はこんな感じであることを知る。util.cのruby_strtod()に問題があるという。この書き方は、1.9.3 の最新版だけでなく、1.8.7 の最新版で同じようになっていることがわかる。

ところが、RedHatの最新版は、
ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Client/en/os/SRPMS/ruby-1.8.5-31.el5_9.src.rpm
とかいうのである。たぶん(私は保証せんよ)。

emacs必要とかいうのでビルドする気をなくしたが、 1.8.5 のリビジョン10553あたりからとられているようである。そこでは、同じループがなく、仮数部が長すぎる場合に無視するようなコードになっている

それが何を意味するかは、みなさんの責任でご判断ください。

(追記)
RHEL チケットトラックのコメント6番にも書いてあった。

2013-11-18

「パーフェクトRuby」読書メモ - 最初の見開き

買ったから、古びないうちに無理にでも読まないともったいない。ちょっとづつメモしていきますよ。たぶんすぐめげると思うけど。

最初の見開き、最初の例がこれ。

class Sample
  def say
    puts 'Hello, World!'
  end
end

sample = Sample.new
sample.say

すごいですねえ。 そうこなくっちゃいけませんね。いや、もちろん、その次に、3行目だけを取り出したものが手続き型の例だとしてつづくのですが。

あとは、String.ancestors とか何気に表示させているのも、クラス構成の重要なところを早めに出す工夫としてよろしいのではないかと。

どうでもいいですけど、String はもう Enumerable じゃないし、Kernel の下に BasicObject はあるし、古き良き 1.8.7 よさらば、なんですが。

2013-11-12

示量変数と積分量は格子点データによろしくないと思うが中々皆さん理解してくれない

示量変数 extensive quantity と示強変数 intensive quantity というのは、物理量が空間の測度あるいは媒体の量に比例するようなものであるか、あるいはそうでないかという区別である。たとえばひとかたまりの物体のエネルギーや質量は、それを半分に分ければ半分になるが、温度や圧力は半分にわけても半分にはならない。

格子点データには示強変数が通常は用いられる。温度が5 km格子で与えられているとして、10 km格子が欲しければ、単に間引けばよい。格子の数は1/4になるが、格子点が同じ場所になるなら同じ値が使える。

これが示量変数、質量や、もうちょっと気象らしい例でいうと降水量を格子セル内に降った水量 kg とかで与えてしまうならば、間引きや他の投影法についての格子変換は複雑にならざるを得ない。示量変数は面積や体積で割ることで、示強変数になる。降水量でいえば kg のかわりに kg.m-2 を用いればもう間引きは心配いらない。

時間次元でも似たような問題があって、積分量(たとえば降水量 kg.m-2)のかわりに降水強度(kg.m-2.s-1)を用いたならば、いつからいつまで積分したかを明示する必要がある。

まあ、そうは言っても積分量を使いたい人は多いので、積分区間を明示するしかないのである。

ところで、河川流量の格子点データで単位 m3.s-1 を使いたいという話をきいて仰天した。きいてみると、モデルが変わっていて、本来は線(一次元)地物としてあらわしたほうがよさそうな地形を格子点の列であらわし、流れのない格子は欠損値にするんだという。
http://www.emc.ncep.noaa.gov/mmb/nldas/drought/Stream/
こんなのでいいのか、と言いたくなってはくるが、さて何が悪いか言うのは難しい。