2007年1月26日金曜日

1万曲保持するのに必要なストレージ

※前のblogから記事を移動。元の公開日:2007/01/26(金) 03:14:17

---

<動機>
現在の全所持CDにこの先5年くらいで増やす分を加算して
余裕を持って多めに見積もって1万曲。
・ライブラリー家据え置きPC
・持ち運び1ーノートPC or HDD portable
・持ち運び2ーシリコンオーディオ or 携帯電話
の3シーンでどの容量のブツにどのくらいのビットレートで
エンコしたらいいかなって試算

<計算結果>
・仮定
手元のライブラリより
1163638sec(=1w6d11h13m58s)/4419song=263sec/song
から1曲あたりの長さを260秒と仮定。
1万曲で2,600,000s(=totalsec)となる。

・CDDAを非圧縮で保存した場合
bps_cdda=16bit*44.1kHz*2ch=1441.2kbps
TotalSec*bps_cdda/8=468,390,000 KB (=wavtotal)
500GのHDDに収まる。
1枚のCDを平均して600Mと考えると10000曲=CD780枚くらいで
CD1枚13曲くらいってな換算なのか
1曲あたり45,864KB

・可逆圧縮をかけると
http://www.synthetic-soul.co.uk/comparison/lossless/index.asp?Sort=Compression&Desc=0
このあたりから適当に圧縮率65%とすると、
wavtotal*0.65=304,453,500KB
(60%換算で281GB、70%換算で329GB)
300GのHDDでは不安。
1曲あたり29,812KB

・320kbpsで圧縮すると
vorbis q9, lame V0 最音質重視モード
totalsec*320/8=104,000MB
百Gちょい
1曲あたり10,400KB

・192kbpsで圧縮すると
vorbis q6くらい。たぶん。
lameはよく知らないけどpreset fast standard(V2)でこのくらい?
totalsec*192/8=62,400MB
60Gってとこ
1曲あたり6,240KB

・128kbps
エンコーダーのデフォルトってだいたいこのくらいなのかな。
totalsec*128/8=41,600MB
40Gくらい
1曲あたり4,160KB

・48kbps
vorbis q-1, lame V9, neroaac q0.35あたりかな。。。
totalsec*48/8=15,600MB
1曲あたり1,560KB

・32kbps
vorbisの圧縮率最大(q-2)。
neroAacEncのHEv2でq 0.2くらいかも。
faacのq 10でも同じくらいになったけど聞けた物ではなかった。。。
totalsec*32/8=10,400MB
約10G
1曲あたり1,040KB

<感想>
・500GのHDD買ってきてwav+cueでそのままおいとけばいいんじゃね?
圧縮するにもcodec選ぶのめんどくせーし。
お金余裕ある時にミラーかければなくなることもないかな。
・192kbpsくらいならノートで持ち歩いても邪魔にならなそう。
portable HDD player 買うとしたら60G↑って感じか。
自分の耳と手持ちのイヤホンじゃ違いもよくわかんないしmp3でいいんでないかな。
streamingするならvorbisの方がいいけど、portable系で致命的に聞けないからなぁ。
・8Gのプレーヤーなら大体入るかもって感じ。
ipodnano8Gにaacplus-v2-q0.2でってのがほぼ唯一の解か。
ちゃんと再生できるんかなぁ
携帯だとmicroSDが2Gまでしかないから無理か。
q0.1にしてさらにサイズを半分にしたらmicroSD2枚で解決!w
USBリーダーにつっこんでストラップにつければ携帯性も○ってことで
やっぱしこっちも問題は再生できるかどうか。
・quicktime君はPS(SBRも?)を読んでくれなくてひどい音やった。。。apple頑張ってくれ。。。
・なんかいろいろ適当すぎで数字が小さい方はあんま参考にならなかった。
ビットレートもVBRだから実際はかなりばらつくしなぁ

2007年1月17日水曜日

ファイルからshift-jisの行を抽出

※前のblogから記事を移動。元の公開日:2007/01/17(水) 02:09:45

---

とあるソフトウェアの英語版を配布することになったということで、プログラムの中の日本語を英語に直さなきゃならんらしい。
・メニュー
・ツールバーのポップアップヒント
・ステータスバーに表示するメッセージ
・ダイアログボックス
・ヘルプ、バージョン情報
・メッセージボックス
あたりだろうか。
だいたいはリソースの中だろうけどソースのどこかに散らばってるのもあるよね・・・

ってなわけでとりあえず一覧を作ってみるスクリプトをrubyで書いてみた。
SJISの行でなおかつ"を含んでいたら(コメントよけ)ファイル名・行番号と共に出力する。
指定ファイルがバイナリファイルだったら何もしない。

require 'nkf'

#CODES = {
# NKF::UNKNOWN => "UNKNOWN", # 0
# NKF::JIS => "JIS", # 1
# NKF::EUC => "EUC", # 2
# NKF::SJIS => "SJIS", # 3
# NKF::BINARY => "BINARY", # 4
# NKF::ASCII => "ASCII", # 5
# NKF::UTF8 => "UTF8", # 6
# NKF::UTF16 => "UTF16", # 7
#}

while file = ARGV.shift
port = open(file)
str = port.read
next if NKF.guess(str) == NKF::BINARY
port.close
num = 0
IO.foreach(file){|line|
code = NKF.guess(line)
num = num + 1
#print file + "(" + num.to_s + "): " + CODES.fetch(code).to_s + "\n"
if code == NKF::SJIS
if line.include?("\"")
print file + "(" + num.to_s + "):" + line
end
end
}
end

やってみたら結果291行・・・
多少はコメント行も残ってるけど、手作業で直すのしんどいなぁ。

2007年1月4日木曜日

ntpの同期間隔を短く

※前のblogから記事を移動。元の公開日:2007/01/04(木) 15:58:50

---

参考:http://support.microsoft.com/kb/297227/ja
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient 
名前:SpecialPollInterval
種類:DWORD
値:秒数

1日=86400秒。