2001-06-18(月) [長年日記]
■ ノートPC
心の底ではC1には転びたくないと思っているので(アイデンティティの問題があるしさ)、L1に援軍があると嬉しい(笑)。やっぱ画面ですか。C1は縦480しかないもんね。
あと、たしかにNICは環境によって差し替えられる方がいいとも言える。自宅は有線、職場は無線、外ではBluetoothとかね。よしよし、L1気分が高まってきたぜ。これでSmartMediaスロットが憑いてれば即買いなんだが……。ネットワーク使用中にデジカメのデータを吸い出せないのはつらい。どっちかをUSBにしろということ?
でも、デジカメもSANYO DSC-MZ1がいい感じだしなぁ。ワイドレンジショットって、コントラストのキツい石像撮影にはうってつけ。そうなるとメディアもCFに変わるから、そんなところにこだわっていてはいかんっ。つーか、気にしないでとっとと買え >おれ
■ Mobiler
tDiaryが一息ついたので、Mobilerのバージョンアップにとりかかる。
ここ数日、ZnZさんにもらったJisCompactFilterを使ってみてるんだけど、特定の文字列で極端に遅くなり、メモリを食い尽くす現象が。無限ループかと思ったけどそうではなくて、データ構造に問題があるような……気がする。なにせ、アルゴリズムがよくわからない(笑)。人のコードが理解できないことほど悲しいことはないのぅ(泣)。
とりあえず全角/半角が頻繁に切り替わっている長めの文字列では、hが莫大な大きさになってしまって現実的ではないということはわかった(気がする)。改造方法を考察中。知恵熱出そう。
ちなみに、問題が出るのはこんなの(↓)である。出典はPC Watch。
1MHz刻み)で設定できる。DIMM×4(最大512MB)、AGP×1、PCI×6、CNR×1、USB×4
JISCompactの処理を書いてみました。
#!/usr/local/bin/ruby -Ke
module ISO_2022_JP
K2A = {
'♯' => '#',
'、' => ',',
'。' => '.',
}
A2K = {}
' !”#$%&’()*+,−./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|} ̄'.split(//).each_with_index do |ch,i|
c = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'[i].chr
A2K[c] = ch
K2A[ch] = c
end
def min(kcode_string)
#フェーズ1 文字列を半角に出来る部分と出来ない部分に分ける
states = []
tokens = []
token = ''
state = :ASCII
kcode_string.scan(/./) {|ch|
s = ch.size
ascii = K2A[ch]
case state
when :ASCII
if s==1
token << ch
else
if ascii
token << ascii
else
unless token.empty?
states << state
tokens << token
end
token = ch
state = :JIS
end
end
when :JIS
if s==1
unless token.empty?
states << state
tokens << token
end
token = ch
state = :ASCII
else
if ascii
unless token.empty?
states << state
tokens << token
end
token = ascii
state = :ASCII
else
token << ch
end
end
end
}
unless token.empty?
states << state
tokens << token
end
#フェーズ2
last = states.size-1
(0..last).each {|i|
state = states[i]
token = tokens[i]
if state==:ASCII and i>0 and i<last
if token.size<6
kanji = ''
token.each_byte {|b|
kanji << A2K[b.chr]
}
tokens[i]=kanji
end
end
}
tokens.to_s
end
module_function :min
end
p ISO_2022_JP::min("1MHz刻み)で設定できる。DIMM×4(最大512MB)、AGP×1、PCI×6、CNR×1、USB×4")
p ISO_2022_JP::min("漢A漢")
p ISO_2022_JP::min("漢AA漢")
p ISO_2022_JP::min("漢AAA漢")
p ISO_2022_JP::min("漢AAAA漢")
p ISO_2022_JP::min("漢AAAAA漢")
p ISO_2022_JP::min("漢AAAAAA漢")
"token = ascii"は間違いです。
"token = ascii.dup"にしてください。
今週末あたりに会社支給で新しいノートが貸与されますが、
Powerbook G4になりました(わら
ある程度自分で選んだことも原因だけどね。
携帯機はiPAQにLinuxいれて、それをメインにしたいな。