[#43713] Re: 演算子の優先順位(was: Re: irb と python のバグ?) — "きむらこういち" <hogemuta@...>

木村です。

20 messages 2007/07/14
[#43715] Re: 演算子の優先順位(was: Re: irb — TunTun-m <tntn@...> 2007/07/14

bc では次式の結果は 0.81 ではなく 0.8 になります。

[ruby-list:43682] Re: 質問 file の保守

From: rubikitch@...
Date: 2007-07-07 20:14:25 UTC
List: ruby-list #43682
From: ohrsts@lapis.plala.or.jp
Subject: [ruby-list:43680] Re: 質問 file の保守
Date: Sat, 7 Jul 2007 21:00:24 +0900

るびきちです。

>  また、file の保守(追加 変更 削除)は普通どんなに処理するので
>  しょうか?  

fileのサイズ、どんなデータが入っているか、などに依ります。
僕は面倒なので、だいたい10MBまでのファイルに関しては「方法3」を使います。
IOとレコード変更処理を分離できてテストが楽だからです。
最近のハードウェアはメモリをたくさん積んでいるので富豪的に。

open(file, "r+b") do |io|
  do_edit(io)
end

こんな風にIOオブジェクトを引数にわたすといいです。
do_editをテストするときはStringIOクラスを使うとファイルを媒介せずにテストできます。
ファイルのフリをした文字列です。

# もっと小さいファイルに関してはFile.readで一気にStringにしてしまいます。



今扱っているのは固定長レコードなので n 番目のレコードだとわかれば

open(file, "r+b") do |f|
  f.seek(48*(n-1))
  f.write(str)
end

とできるでしょう。巨大なファイルに効果抜群です。

# ファイルを開くときはブロックを使うのがRuby Wayです。

> わざわざ script を作るまでもなく、emacs 等のエディタのほうが、やりや
> すいケースもあるかも、とも思えます。

その処理が一度きりであれば、エディタでかまわないでしょう。
何度もするようであれば小さいものであってもscriptを作るべきです。
その部分を自動化することで楽をできますから。

--
rubikitch
http://www.rubyist.net/~rubikitch/

In This Thread