SVX日記
2005-09-05(Mon) ∀DSLナロードバンドに驚愕す
去る8月27日に引越しをした時、そのあまりの回線開通の手際のよさにYahoo!!BBには敬服させられた。しかしながら、さりげなく12Mの契約を8Mに落としていたオイラであった。直結しているサーバ以外、全て801.11bの無線LANでネットアクセスしているオイラの環境では、下りで2Mも出ていれば十分なのである。大事なのは常時接続であること。そして、できることならばサーバを設置している都合上、上りの速度はギリギリまで出て欲しいかな、てなトコロである。だから、12Mを8Mにダウングレードし、月に400円安く済ませる作戦は当然の選択であろう。
しかしながら、どーにも気になるのだ!! 一体全体、現在、回線速度はどのくらい出ているのか? そういえば、そんなコトを気にしつつ、モジュラーケーブルを高いものに交換しつつ、ウダウダしつつ、スプリッタを工夫したりしつつ、なにやら妖しげなノイズフィルタに手を出したりするのが、ADSLの黎明期には流行ったが、あれは一体なんだったのであろう? いま、そんなコトしとるヤツおるんかいな?
でも、一度くらいの「ブロードバンドスピードテスト」は縁起物であろう。無線LAN経由で接続されているノートPCで計測しても意味がないので、サーバにログインして外部にある自分のプロバイダスペースから、FTPでゴゴーンと、デカいファイルをダウンロードして速度を計測する……ん? キロバイトを、メガビットに変換して……おかしいな。一応、ネットワークスペシャリストの資格保持者なので、こんなトコロで計算を間違っている場合じゃないのだが……ま、気のせいだろう……無線LAN越しでいいや、ノートPCで計測サイトでの計測もやってみよう……。
奇妙なことに、上りは501kbpsも出ている……そりゃね、あたしゃ、さっき確かに言いましたよ。「大事なのは常時接続であること」って。「上りの速度はギリギリまで出て欲しいかな」って。確か上りは、仕様上は640kbpsが最高だから、ある意味、上りはギリギリ近くまで出ているともいえますよ。そりゃね、ADSLのAはAsymmetric、非対称のAですよ。だけどそりゃ、上りに対して「非対称に下りが速い」っていう意味であって、上りのが速いADSLなんて聞いたことないっすよッ!! ∀DSLかよッ!!
にしても、367kbpsって……これじゃ、ナローバンドとブロードバンドの中間みたいなモンだよ。ナロードバンドかよッ!! さすがにメールやネットサーフィンには大した支障はないけど、CDイメージや、WindowsUPDATEなんかしようと思ったら、ちょっとツラいんじゃないかなぁ。とほほほ。
NTTの局からの経路長はどれくらいかと思って、経路長検索をかけてみたが、なんだよッ!! 出ねぇよッ!! ウチは電話線がつながっていないのかよッ!! おまけにこのサイト、時間帯によってはサービスを停止するらしいぞッ!! 人間が入っているのかッ!? そりゃ、オイラは以前に「ATMって後ろには人間がいるんじゃないの?」って発言して、大笑いされたよッ!! だけど、全部機械なら、なんで時間帯でサービスを閉めるんだよッ!! そっちのがオカシイだろッ!! キーッ!! UFJ銀行はATMを24時間営業って、それが当たり前だっつーのッ!! 機械のクセに、休むな、ボケッ!!
……はぁはぁ。イキオイあまって脱線して、あまり関係のないトコロまで攻撃してしまった。まったくもって申し訳ない。わしゃ昔からムカついとったから、スッキリできてよかったわい。あー、すまんすまん、すまんなぁ。
しかし、正気に戻って考えても、下りよりも上りが速いというのは、どーにもヘンな事態である。12Mから8Mに変更したからといって、天下のYahoo!!BBが、ワザと回線速度を落とすなどという、イケズなコトをするとは思えないが、どーにも余計なコトを勘ぐってしまうオイラである。電話して調整してもらうというのもテではあるが、上りがイイ感じに出ているだけに、ヘンにイジりたくないという気持ちもある。悩むところだ……。
2010-09-05(Sun) 遅ればせながらファイバツーザホーム
そして抜かりなく、ファイバカムホーム。午前中にはゴンドラがやってきて、めでたく開通である。ファイバは小屋裏へ。小屋裏には、24ポートのスイッチがあり、各部屋へカテゴリ5EのLANケーブルが配備済みである。うっしっし。
2011-09-05(Mon) SVXゲット
それはそうと、妙に低音が出るスピーカが手元にあるせいで、どうしても聴きたくなってしまって、買ってしまった。その楽曲とは、セガのSDI。なんだか、ついでに聴きたい曲もたんまり入っていたので。SEGA SYSTEM 16 COMPLETE SOUNDTRACK VOL.1。しかし、言うに事欠いて「セガ 野球リーグ」「セガ 女子プロレス」って。オイラの記憶が確かなら「メジャーリーグ」「ダンプ松本」だったはずである。世知辛い世の中よのぅ。
昔、レコードで持っていたのだが、再販されてから、もう10年も経つのか……ホント、どんどん遊ばないとなぁ。フト、気づくと死んでるかもしれん、という勢いだ。
2013-09-05(Thu) kobo、増やしまくります
2015-09-05(Sat) E7突破
2023-09-05(Tue) Rubyで端末画面に画像を表示する
一応、CUIコンソール画面に画像を出力できたんだが、Maveに実装することを考えれば、縮小(ついでに拡大)機能と、右側のトリミング機能が必要だ。ついでに透過処理もできるとカッコいい。
さて、透過処理はどうすれば……と考え込んだところで「▀」という「上半分塗りつぶし」文字と「▄」という「下半分塗りつぶし」文字を使い分ける必要があることに気づく。そういや、参考に読んだcatimgのコードで両方を使い分けていたのはそういうことだっとのか。
# ./grouping.rb
["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R"]
1: A,B,C,D,E
2: F,G,H,I,J
3: K,L,M,N,O
4: P,Q,R
#!/usr/bin/env ruby
x = '@'; xs = []; 18.times {
xs << x.succ!.dup
}
puts(xs.inspect)
n = 0; xp = []; xs.each {|x|
xp << x
if(xp.size == 5)
puts('%d: %s' % [n += 1, xp.join(',')]) # same!
xp.clear
end
}
puts('%d: %s' % [n += 1, xp.join(',')]) # same!
__END__
ここで「same!」とある行を2度書くのがすごくイヤなんだよな。こういうのに対応する構文を持つ言語ってあるのかしらん……とか考えつつ、その部分はさておき、他はどうにかこうにか納得できるコードが書けた。
#!/usr/bin/env ruby
require 'rmagick'
if(ARGV.size == 0)
abort(<<USAGE)
Usage: rcatimg image_file [width] [trim]
USAGE
end
image = Magick::Image.read(ARGV[0])
w = image[0].columns
h = image[0].rows
tgt_w = `tput cols`.to_i
tgt_w > w and tgt_w = w
(it = ARGV[1]) and tgt_w = it.to_i
trm_x = false
(it = ARGV[2]) and trm_x = it.to_i
tgt_h = h * tgt_w / w
sstep = (h << 8) / tgt_h
# +---------+ tdms = [ [ 0b00, 'Ar;Ag;Ab', 'Wr;Wg;Wb' ],
# | A C D | [ 0b10, nil, 'Xr;Xg;Xb' ],
# | W X Z | [ 0b01, 'Cr;Cg;Cb', nil ],
# +---------+ [ 0b00, 'Dr;Dg;Db', 'Zr;Zg;Zb' ] ]
ess = [ "\e[38;2;%2$sm\e[48;2;%3$sm\u2580\e[m", # 0b00: f_col, b_col, [▀]
"\e[38;2;%2$sm\u2580\e[m", # 0b01: f_col, [▀]
"\e[38;2;%3$sm\u2584\e[m", # 0b10: f_col, [▄]
' ' ] # 0b11: [ ]
y8 = 0; tdms = []; tgt_h.times {
x8 = 0; tgt_w.times {|cx|
trm_x and (cx < trm_x or break)
c = image[0].pixel_color(x8 >> 8, y8 >> 8)
tdms[cx] ||= [0]
tdms[cx][0] <<= 1
if(c.opacity < 64)
tdms[cx] << '%d;%d;%d' % [c.red >> 8, c.green >> 8, c.blue >> 8]
else
tdms[cx][0] += 1 # 透明
tdms[cx] << nil
end
x8 += sstep
}
if(tdms[0].size == 3)
tdms.each {|tdm|
print(ess[tdm[0]] % tdm)
}
puts; tdms.clear
end
y8 += sstep
}
if(tdms.size != 0)
tdms.each {|tdm|
print(ess[(tdm[0] << 1) + 1] % tdm)
}
puts
end
if(ENV['INFO'])
puts('#' * trm_x) if(trm_x)
puts('#' * tgt_w)
puts('[%d, %d] -> x%d/%d -> [%d, %d]' % [w, h, 256, sstep, tgt_w, tgt_h])
end
__END__