2008-01-28

危険.名前を変更して連続番号

Rubyで、はじめて仕事用のプログラムを作りました。
よく使うし、これはとても役に立ちます。
こうしたらいいとか、気の付いたことがあれば教えてください。

# 以下、プログラム(インデントは全角スペースなので、copyしてもエラーが出ます)

ipath = "px1600" #input path
name_h = "r1" #name header
count = 0

Dir.open(ipath).each{|file|
 if file =~ /(.*)\.(JPG|jpg)$/
  count += 1
  name_c = ("00" + count.to_s).slice(-2,2)
  File.rename(ipath + "/" + file, ipath + "/" + name_h + name_c + ".jpg")
 end
}

2008/1/31
 とても大きな問題がありました。ファイルが消失する場合があります。
 変更前と変更後に同じ名前があるとき、ファイルが消滅する可能性があります。
 実際、このプログラムを2回続けて実行すると、消失することがあります。
2008/1/31
 Dir.open(...).each{...} # 推測ですが、closeされないのではないか?
 Dir.open(...){|d| d.each{|f| ...}} # やっぱりこうかな?
 とにかく、ある程度、試用してから公表すべきだよね。
 とにかくうれしくて、ついつい、やってしまった。(後悔)
2008/2/10
 変換元と変換後のフォルダを別にすることにして解決

2008-01-13

正則性公理-無限降下列の禁止?

あいかわらず、正則性公理は「なぞ」である。
が、これを仮定することによって、無限降下列x1∋x2∋x3∋...を排除できるらしい。
ここのところは、自分にはまだ理解できていない。
「無限降下列が存在しない」ならば「推移的な集合は最小元を持ち」、「整列できる」。
つまり、順序数の集合や基数の集合を考えたときに、昇順に整列できる。
これが、ひとつのミソかも。

謎:「正則性公理」→「無限降下列x1∋x2∋x3∋...は存在しない」
誰か教えてくれないかなぁ。

2008/3/26: かがみさんからコメントをいただきました。------------------------------
> 正則の公理は Xが空でない集合の場合、ある x ∈ X が存在し x ∩ X = φ ということでした。
> 今、無限降下列 x_1∋ x_2∋x_3∋... が存在したと仮定します。すると X={ x_n : n ∈ ω } が正則の公理の反例となります。
> 実際、任意の n ∈ ω に対し x_{n+1} ∈ x_n ∩ X となります。

2008/4/6: 納得です。