Just another Ruby porter,

〜2006年7月中旬〜


<Prev(,) | Next(.)> | Recent(/)>> | RDF

2006-07-11 (Tue)

[LDR] 続livedoor Readerのpreが変?

なるほど。LDRのpreの空白が壊れるのは このJSON::Syckの挙動 が原因ってわけね。なんとなく事情は察した。

[GCC] GCC 4.1.1

前回と同じ。

% CFLAGS=-Os CXXFLAGS=-Os CC=/usr/bin/gcc ../configure \
  --enable-languages=c++ --with-system-zlib \
  --enable-sjlj-exceptions --enable-threads \
  --disable-version-specific-runtime-libs --disable-nls \
  --without-included-gettext --without-catgets
% make CFLAGS=-Os LIBCFLAGS=-Os LIBCXXFLAGS=-Os \
  STAGE1_CFLAGS=-Os BOOT_CFLAGS=-Os bootstrap

またswapfile作るの忘れてメモリが足りなくなった。 次回のために念のため書いとこう。 512MBのswapファイルを作ってswaponする。

% dd if=/dev/zero of=/tmp/swapfile bs=1M count=512
% mkswap /tmp/swapfile
% sudo swapon /tmp/swapfile

2006-07-12 (Wed)

[Mail] 3文字spam

最近Subjectに謎の3文字のspamがやってくるようになった。
0NL, 98F, DGG, 6GW, UTV, M6Y, G64, 873, 121,...
ドメインは0451.comが多い。
内容は英文で文章の途中から始まり途中で終わるというパターン。
いつも3,4行程度。まあ、これだとspamの意味もないわけで何かの暗号?
ちょっと気持ち悪い。

届いてない荷物が配送済み状態

ぽすれんからなかなかDVDが届かないと思っていたら、
ヤマトの荷物追跡情報ではすでに配送済みになってた。
うーむ。なんかやっかいなことになったな。
メール便ってやつだから証拠がないんだよねえ。
夜中なのでとりえあえずWebのフォームで問い合わせてみた。
昼になると電話するの忘れちゃうしな。
どういう返事がくるか?


2006-07-13 (Thu)

隣の家の使われてないポストに投函されていたという結末

今日は

ヤ「壁に埋め込まれているポストに投函した」
俺「うちの壁にはポストはない」
ヤ「すみません。不手際があったようです」

などとメールでやりとりをしていたわけだが、結構楽しかった。
結局は隣の家のポストに投函されていたらしい。
実際は壁というか門なんだけど、
そのポストはすでに使われておらず口がガムテで塞がれている。
つまり入れるには裏に回って裏蓋を開ける必要がある。
しかもちゃんと住所と名前が書いてあるんだよねえ。
なんでわざわざそんなとこに入れるかねえ。

そういえば壁にポストが埋め込まれた家ってのはあまり見たことがない。
埋め込むんならドアじゃないの?


2006-07-14 (Fri)

[RSS] Bloglinesもハイライト表示

jとかkを使わないと気づかないが、Bloglinesもいつのまにかハイライト表示するようになっていた。 左側にバーが出る。


2006-07-15 (Sat)

[admin] berylliumの/varが溢れた

2時間ほど気づかず。syslogとmail.logに同じpostfixのログが吐かれていたので、 syslogのほうにmail.noneを追加してメールのログを吐かないように修正。 これで半分の速度になるので少しは軽減できるかな。


2006-07-16 (Sun)

[Mail] Gmailのフィルタリング

今頃ではあるけど、

Matches: from:(kt.rim.or.jp) AND -from:(foo@kt.rim.or.jp)
Do This: Skip Inbox, Delete it, Apply label "junk"

という感じでどうかな。ちょっと試してみよう。

[Cygwin] Linux上にgcc 3.4.4-1のCygwinのクロス環境を作る

2年振りにCygwinのクロス環境を新しく作る。 手順はそんなに変わらない。

% prefix=/usr/local/cygwin
% tar xf cygwin-1.5.20-1.tar.bz2 usr/{include,lib} 
% tar xf mingw-runtime-3.9-2.tar.bz2 usr/{include,lib} 
% tar xf w32api-3.7-1.tar.bz2 usr/{include,lib} 
% cp -a usr/. $prefix/i686-pc-cygwin

まずはbinutilsから:

% tar xf binutils-20060709-1-src.tar.bz2
% cd binutils-20060709-1
% CFLAGS=-Os ./configure --prefix=$prefix --target=i686-pc-cygwin
% make all install

つづいてgcc:

% tar xfO gcc-core-3.4.4-1-src.tar.bz2 gcc-core-3.4.4.tar.bz2 |\
  tar xf - --bz
% tar xfO gcc-g++-3.4.4-1-src.tar.bz2 gcc-g++-3.4.4.tar.bz2 |\
  tar xf - --bz
% cd gcc-3.4.4
% tar xfO ../gcc-core-3.4.4-1-src.tar.bz2 gcc-3.4.4-1.patch |\
  patch -p1 -t
% CFLAGS=-Os CXXFLAGS=-Os ./configure --verbose --prefix=$prefix \
  --enable-languages=c,c++ --disable-nls --without-included-gettext \
  --with-system-zlib --enable-interpreter --enable-threads=posix \
  --enable-sjlj-exceptions --disable-version-specific-runtime-libs \
  --disable-win32-registry --target=i686-pc-cygwin
% make all install
<途中略>
checking for extra compiler flags for building... 
configure: error: No support for this host/target combination.
make: *** [configure-target-libstdc++-v3] Error 1

あれ?なんで?ぐぐってみる。 これ を見ると--with-newlibが必要か。
Cygwinのソース(newlibを含んでいる)なしでもいけるかな。

% CFLAGS=-Os CXXFLAGS=-Os ./configure --verbose --prefix=$prefix \
  --enable-languages=c,c++ --disable-nls --without-included-gettext \
  --with-system-zlib --enable-interpreter --enable-threads=posix \
  --enable-sjlj-exceptions --disable-version-specific-runtime-libs \
  --disable-win32-registry --target=i686-pc-cygwin \
  --with-newlib
% make all install

通った。

% i686-pc-cygwin-gcc -dumpversion
3.4.4

なんとかいけてるようだ。

% echo 'main(){}' >foo.c
% i686-pc-cygwin-gcc foo.c
% file a.exe
a.exe: MS-DOS executable PE  for MS Windows (console) Intel 80386 32-bit

最後にmingwの設定:

% tar xfO gcc-mingw-core-20050522-1.tar.bz2 \
  etc/postinstall/gcc-mingw-core-3.4.4-20050522-1.tgz |\
  tar xfz - -C $prefix
% tar xfO gcc-mingw-g++-20050522-1.tar.bz2 \
  etc/postinstall/gcc-mingw-g++-3.4.4-20050522-1.tgz |\
  tar xfz - -C $prefix
% mkdir -p $prefix/libexec/gcc/i686-pc-mingw32/3.4.4
% cd $prefix/libexec/gcc/i686-pc-mingw32/3.4.4
% ln -s ../../i686-pc-cygwin/3.4.4/c* .

libexecになってる点が前回までと違う。

% echo 'main(){}' >foo.c
% i686-pc-cygwin-gcc -mno-cygwin foo.c
% file a.exe
a.exe: MS-DOS executable PE  for MS Windows (console) Intel 80386 32-bit

これもok。


2006-07-17 (Mon)

[Ruby] Cygwin 1.5.20にはlibdl.aが追加されている

gcc -mno-cygwinでも-ldlでリンクが成功してしまうため、 Rubyのdln.cで矛盾が生じた。
またアドホックなac_cv_lib_dl_dlopen=noをconfigure.inに追加。
本当はautoconfの意味がないからやりたくはないんだけど。
そもそもCygwinのライブラリがあるとこをgcc -mno-cygwinで探すなよと。
まあ、specsファイルを使ってもライブラリパスの追加できても削除はできないしねえ。
なかなか難しい。


2006-07-18 (Tue)

[Ruby] version.h自動更新問題

問題というかブロックしちゃうやつのとりあえずの解決策。 いままでは

  1. cvs co version.h
  2. 現在の日付けに修正
  3. cvs ci version.h

と何も考えない方法だった。 cvs ci時にversion.hに変化がなければcvsは何もしないので、 そのあたりはcvsに任せっきり。 つまり毎回ロックすることになる。

今回これを

  1. cvs co -p version.h
  2. 現在の日付けと比較
  3. 同じならなにもしない
  4. 違ってたら改めてcvs co version.hして以下略

という方法に変更。cvs co -pはロックしないので、 こうすることでほとんどロックすることがなくなる。 つまり滅多にブロックしないことになるはずだが、はたしてどうなるか。


2006-07-19 (Wed)

[LDR] livedoor Readerのpreの表示がちょっと改善したような?

1つのindentにつき空白1個ってな感じに見える。 というわけで実験。

def foo
  if true
    if true
      p true
    else
      p false
    end
  else
    p false
  end
end

空白2個でindentした場合どう見えるかな?

[Ruby] Collatz予想

どうせハッシュを使ってキャッシュするならHash.newのブロックを使えばいいじゃんと思ったり思わなかったり。

collatz = Hash.new{|h, k| h[k] = h[k%2 == 0 ? k/2 : 3*k+1] + 1}.update(1=>1)
max = ARGV.shift || 100
p (1..max.to_i).map{|n| collatz[n]}.max

2006-07-20 (Thu)

[Ruby] [ANN] Mongoose 0.1.0

KirbyBaseの後継と考えてよさそう。

Mongoose is a database management system written in Ruby. It has an ActiveRecord-like interface, uses Skiplists for its indexing, and Marshal for its data serialization.

KirbyBaseはテキストファイルベースだったけど、
MongooseはMarshalベースになり、 スキップリスト で高速化しているらしい。

[Zsh] here-string(<<<)

here-stringの存在を初めて知った

<<< word
Perform shell expansion on word and pass the result to standard input. This is known as a here-string.

ということらしい。

% ruby <<< 'puts "hoge"'
hoge

つまりecho 'puts "hoge"' | rubyと同じ意味になるわけだよね。

% <<< hoge
hoge

なるほど。


<Prev(,) | Next(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!