トップ «前の日記(2005-01-13) 最新 次の日記(2005-01-15)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2005-01-14

_ 膝の上

PowerBookをラップトップとして使ってると、最初は暖かくていい気持ちなんだが、ふと気づくと痛くなっている。低温火傷の前兆なんだろうか? (あるいはもう手遅れか)

_ play it again, Sam

YARVを使って何かスクリプトを動かしてみようと思ったが、考えたら計算してドンドンみたいなプログラムって全然作らないから何も思いつかない。

そういや、sum(1)とかたまに使うし、あのあたりならどうかなと思ってman sumしたらアルゴリズムが書いてあったんで作ってみた。

This is a 16-bit checksum, with a right rotation before each addition; overflow is discarded.
——man sum (OS X)

こんな感じか

def sum(s)
  r = 0
  s.each_byte do |b|
    if (r & 1) != 0
      r >>= 1 
      r |= 0x8000
    else
      r >>= 1
    end
    r += b
    r &= 0xffff
  end
  r
end
 
File.open(ARGV[0], 'rb') do |f|
  puts sum(f.read)
end

でも、これだとtest.rbに埋め込めないから(ARGVがひっかかる)、適当なファイル名を入れてやってみたけど良くわからないや。

っていうか、readで一度に全部読もうとしているところが諸悪の根源と気づいたり。それでsum(1)だとバイト数じゃなくてブロック数が表示されるのか(多分、この単位で読み込むんだろう)。


2003|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|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|

ジェズイットを見習え