[#29374] nil.to_s — Shugo Maeda <shugo@...>

前田です。

59 messages 2006/09/01
[#29375] Re: nil.to_s — "U.Nakamura" <usa@...> 2006/09/01

こんにちは、なかむら(う)です。

[#29380] Re: nil.to_s — Yukihiro Matsumoto <matz@...> 2006/09/01

まつもと ゆきひろです

[#29387] Re: nil.to_s — Shugo Maeda <shugo@...> 2006/09/01

前田です。

[#29390] Re: nil.to_s — Yukihiro Matsumoto <matz@...> 2006/09/01

まつもと ゆきひろです

[#29398] Re: nil.to_s — "NARUSE, Yui" <naruse@...> 2006/09/01

成瀬です。

[#29400] Re: nil.to_s — Yukihiro Matsumoto <matz@...> 2006/09/01

まつもと ゆきひろです

[#29491] symbol and string — Tanaka Akira <akr@...>

open-uri で :proxy=>nil という指定を行うと、以下のようにエラーになります。

33 messages 2006/09/05
[#29499] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/05

まつもと ゆきひろです

[#29500] Re: symbol and string — Tanaka Akira <akr@...> 2006/09/05

In article <1157470154.047826.13379.nullmailer@x31.priv.netlab.jp>,

[#29503] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/06

まつもと ゆきひろです

[#29504] Re: symbol and string — Tanaka Akira <akr@...> 2006/09/06

In article <1157505538.340126.8472.nullmailer@x31.priv.netlab.jp>,

[#29507] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/06

まつもと ゆきひろです

[#29512] Re: symbol and string — keiju@... (石塚圭樹) 2006/09/06

けいじゅ@いしつかです.

[#29529] Re: symbol and string — SASADA Koichi <ko1@...> 2006/09/08

 ささだです。

[#29530] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/08

まつもと ゆきひろです

[ruby-dev:29518] PStore bug and verify

From: NARUSE Yui <naruse@...>
Date: 2006-09-07 02:33:43 UTC
List: ruby-dev #29518
成瀬です。

まず、pstore.rb で binary mode へのし忘れがあります。
diff -u -r1.27 pstore.rb
--- pstore.rb   5 Feb 2006 05:28:11 -0000       1.27
+++ pstore.rb   7 Sep 2006 02:28:40 -0000
@@ -297,7 +297,14 @@
           file = File.open(@filename, File::RDONLY)
           file.binmode
           file.flock(File::LOCK_SH)
-          content = (File.read(new_file) rescue file.read())
+          begin
+            File.open(new_file, "r") {|n|
+              n.binmode
+              content = n.read
+            }
+         rescue
+            content = file.read()
+         end
         rescue Errno::ENOENT
           content = ""
         end
行数が増えてしまって悲しいパッチなのですが、
[ruby-dev:28720] の IO.read の話は進展なしですか?


さて、某ちゃんねるで PStore が話題になっていますが、
# f.binmode が効かない?
# http://pc8.2ch.net/test/read.cgi/tech/1147935007/81

以前から PStore は信頼性がいまいちという話を継続的に聞きますし、
データが壊れた経験も何度かあります。

そこで、ちゃんと書き込めたか確認するようにしませんか。
今回の件ならば、
diff -u -r1.27 pstore.rb
--- pstore.rb   5 Feb 2006 05:28:11 -0000       1.27
+++ pstore.rb   7 Sep 2006 02:22:58 -0000
@@ -330,6 +330,10 @@
               t.binmode
               t.write(content)
             }
+            File.open(tmp_file, "r") {|t|
+              t.binmode
+              raise unless md5 == Digest::MD5.digest(t.read)
+            }
             File.rename(tmp_file, new_file)
             commit_new(file)
           end
で、新たなデータは失っても、既存のデータは維持できるかなと。

また、何バイトかごとに chksum つけるとか、
何らかのエラー訂正符号をつけられるとだいぶ信頼性が上がると思うのですが。

-- 
NARUSE, Yui  <naruse@airemix.com>
DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA

In This Thread

Prev Next