history

青木日記 RSS

<前の日 | この月 | 次の日>

2003-05-19

rm -rf

何を思ったか、いきなり

# rm -rf /usr/local/bin/ruby /usr/local/lib/ruby

してしまいました。あせった。 lib まで消しちゃったもので uconv とか nora とか全部コンパイルしなおしです。 ちゃんと動いてるかな。

境界は 5 時

ありゃ、次の日になっちゃった。

ログ消失

ぬああ、5 月の日記が消えた!

しかもミスオペではないようだ (コマンドラインヒストリで確認した)。 いったい何が起こったんだ。 迂闊に ruby をバージョンアップしたのがいけなかったのか。 いやそりゃ実はちょっと eval.c 書きかえたんだけど、 いきなりそんなことになるか?

やばいな、もしかして動かしてるだけでどんどん消えていくんじゃないだろうな。 いや違うか、少なくともアップデートしないと変更は起こらないな。 update.rb まわりが変なんだろうか。 あるいは独自の SMTP → HTTP ブリッジのせいかも。

あ、データ自体はメールでコピーが残ってるんで復活できます。 これで安心して破壊テストがやれるってもんだ。うむ。

破壊テスト中

む、アップデートはできるのか。

※ 今書き込むと消える可能性があるので、 原因が判明するまでツッコミは御遠慮ください。

warning

うーん、ruby の warning が出てるな。 split で文字列が使えなくなったやつか。 問題はないはずだけどとりあえず潰しておこう。

ruby

ちなみに eval.c は 1.430 に戻してあります。 なので、イテレータ絡みで変になってるわけではない、はず。

原因の一端?

これが関係あるかもしれません。

% ruby -v -e 'p "aaa\n\naaa".split("\n\n",2)'
ruby 1.8.0 (2003-05-17) [i686-linux]
-e:1: warning: string pattern instead of regexp; metacharacters no longer effective
["aaa\n\naaa"]
 
% ruby -ve 'p "aaa\n\naaa".split(/\n\n/, 2)'
ruby 1.8.0 (2003-05-17) [i686-linux]
["aaa", "aaa"]

この影響で CSS 設定が変になったりしてました。

しかし表示のほうは動いてるので、 ウェブ経由で更新するとかの条件が加わると破壊されるのかもしれません。 ファイルが消えたときはかなり連続で「編集」してたので たぶんその影響があります。

ちなみになんで編集してたかと言うと、パーサがうまく働かなかったからです。 キャプションになるはずのところがどうしても段落になってしまう。 これもたぶん split が影響してるんじゃないかと思うんですが。

ところで

ruby 1.8.0 がインストールされているとして、 以下のプログラムをコンパイル・実行するとどうなるか答えなさい (5 点)

#include <stdio.h>
#include <stdlib.h>
#include "ruby.h"
 
int
main(int argc, char **argv)
{
#if RUBY_VERSION_CODE < 180
    puts("Hello, World!");
#endif
    exit(0);
}

解答

~/tmp % gcc -I/usr/local/lib/ruby/1.8/i686-linux t.c -o t
~/tmp % ./t
Hello, World!
~/tmp %

「#include "version.h"」を入れないとだめなんだよもん。

で、

いま明かされる衝撃の事実!

~/s/src/ruby % grep -l RUBY_VERSION_CODE *.[cy]
class.c
hash.c
string.c
 
~/s/src/ruby % fgrep -l version.h *.[cy]
error.c
version.c

修正完了?

直ったかな。

結論

直ったようだ。結論。

  • 安易にコマンドをアップデートしちゃいかん。
  • テストはこまめに 導入前に

やれやれ。

ところで全然関係ないけどこんな言葉を思い付きました。

  • 開発版 みんなでわたれば 恐くない

……嘘つき。

復旧

完全復旧しました。 やっぱし開発版は開発版ですね。 気をつけましょう。

Not Compaq

http://homepage1.nifty.com/cosmic/font/notcompaq.html

[d|i|g|i|t|a|l] なフォント。 こんな感じ。

sh と Haskell

sh の

cat file | head -10

と Haskell の

head :: [String] -> [String]
head xs = take 10 xs

はかなり似てる。

Rubyにぬるぽを導入するスレ

ム板のぬるぽスレにこれを張った人は潔く名乗り出なさい!

597 名前:デフォルトの名無しさん 投稿日:03/05/02 0025
    raise 1442118444.to_s(36)

「……でも、そんなスクリプト、誰にでも書けるんじゃないの……? そんなものは何の証拠にならないわ」

(ざわ……ざわ……ざわ……)

「そ、そうだ! こんなもの誰にだって書ける! Ruby を知っていれば誰にだって……!」

「ところがそうじゃないんだ……」

「なにっ?」

「このスクリプトだけはそうじゃない…… 長さや複雑さは関係ないんだ」

「な、なにを負け惜しみを……」

「ふ……これを見ろ!」

(ざわ……ざわ……ざわ……)

「こっ、これは?!」

% ruby-1.8.0 -e 'raise 1442118444.to_s(36)'
-e:1: nullpo (RuntimeError)
 
% ruby-1.6.8 -e 'raise 1442118444.to_s(36)'
-e:1:in `to_s': wrong # of arguments(1 for 0) (ArgumentError)
        from -e:1

「そうだ…… Fixnum#to_s に引数が導入されたのは 1.8 からなのさ! しかも cvs log によれば 36 を基数にできるようになったのは…… 2003 年の 4 月 14 日なんだ」

(?!)

「そ、そんな……変更からぬるぽスレの書き込みまで…… 二週間くらいしかないってことじゃない!」

「ああ。犯人は相当 ruby の変更に通じているに違いない。 だから間違いなく……犯人はこの中にいる! (どーん)」

我ながらアホなものを書いてしまった。

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS