history

青木日記 RSS

<前の日 | この月 | 次の日>

2003-08-22

メール攻撃

どこかのバカが俺のアドレスを騙ってウィルスメールを出しやがったらしく、 それのエラーメールとウィルスアラートが大量に来ていた。 勘弁してくれ……。

つーか、ウィルスを送った相手に通知メールを送る Norton って何様のつもりなんだよ。自分が SPAM まいてるじゃねえか。

(追記) あ、そうか、これが噂の SOBIG.F なのね。 SOBIG.F をくらった人のウィルスアラートに被害を受けたわけだな。

……なんかアホくさ。

SICP読書会

おっと明日だったか。またうっかり見逃すところであった。 久しぶりに出席しよう。

消費電力計測計画最終段落

とりあえず生データ

メインマシン (Pentium 4 2.4BGHz, DDR SDRAM 1GB, ATA 20GB + 80GB)
計測時間     10.2h
料金	     19円
消費電力     0.78kWh
 
サブマシン (Pentium 3 866MHz, SDRAM 512MB, ATA 40GB)
計測時間     10.0h
料金	     14円
消費電力     0.57kWh
 
Libretto L1 (Crusoe 566MHz, SDRAM 128MB, ATA 20GB)
計測時間     3.0h
料金	     1円
消費電力     0.07kWh
 
Sun Ultra30 (UltraSPARC-II 250MHz, EDO DRAM 256MB, SCSI-3 2GB + 4GB)
計測時間     6.10h
料金	     14円
消費電力     0.60kWh
 
digital AlphaServer 800 (Alpha 21164 333MHz, EDO DRAM 384MB, SCSI-3 4GB + 4GB, RAID1)
計測時間     5.0h
料金	     16円
消費電力     0.67kWh
 
digital PersonalWorkstation 600au (Alpha 21164 600MHz, SDRAM 320MB, SCSI-3 4GB + 4GB)
計測時間     4.34h
料金	     16円
消費電力     0.65kWh
 
EIZO E55D (ダイヤモンドトロン 17" CRT)
計測時間     8.01h
料金	     18円
消費電力     0.72kWh

単位を統一した後。

CPU		W	24h稼働時の月間電気料金
			(1kWh = 25円 で換算)
Alpha 600MHz	144W		2600円
Alpha 333MHz	134W		2412円
SPARC 250MHz	100W		1770円
CRT		 90W		1620円
P4 2.4GHz	 78W		1404円
P3 866MHz	 57W		1026円
Crusoe 566MHz	 23W		 420円

えっと……。

結論は Alpha の圧勝ってことで、オケー?

mutable string

Ruby の文字列が mutable であるのはやっぱそれなりに必然性があると思うんだな。 Ruby の文字列は Java で言う String と StringBuilder を兼ねてるから。 Java でも StringBuilder を String として扱いたいというときがあって、 それだからこそ CharSequence interface なんてのがあるわけでしょ。 でも Ruby ではこういうパターンには最初から String 一本で対処することができる。

もちろん Ruby には静的型システムの制約がないわけだから、 逆に String と StringBuilder が分かれててもいいんだと言うこともできる。 少なくとも Ruby レベルではメソッドシグネチャさえ揃えておけば 統一的に扱えてしまう。

しかし拡張ライブラリを考えるとどうか。 String と StringBuilder を統一的に扱えるのか。 ちょっと怪しいような気がしない?

ん? 大丈夫かもしれないな。 構造体を同じ配置にしておけばよい? いやそれとも構造体は struct RString を利用して、フラグだけで対処すればいい? さらに考えると struct RBasic の klass だけ変えてもいいのかな?

うーむ……。なんか immutable でもいけそうな気がしてきた。

いやでもやっぱそれなりに便利なときもあるかなあ。 だいいち Stack や Queue すら分かれてないのに (thread.rb にあるとか野暮なことは言わないこと) String と StringBuilder が分かれてるのはウザったい気もするね。 だいたい、よほどの素人じゃないと「うっかり」文字列を 変更してしまうことはないような気がする。

そういや Rite では String が immutable になるとかいう話はあったっけ。 なんかそんな記憶があるな。

href 0.2

href をバージョンアップしました。

hrefってのは ReFe の Haskell 版です (身も蓋もない例え)。

Haskell メモ

標準ライブラリの使い勝手がいま一つって気がする。 空リストを渡すとあっさり例外になったりとか。

しかも例外がどこで起こってるのか全然わからないのがすげえ嫌。 このへんは小刻みテスト・小刻みコンパイルで乗り切るしかなさそうだ。

Ruby で言うところの String#downcase がない。 String#sub がない。gsub がない。strcasecmp がない。 (もっとも真偽値を返す strcasecmp は Ruby にもないね)

# ちなみに downcase は比較的簡単に書ける
downcase = map (toLower)

関数によって名前を省略したりしなかったりするのが中途半端。 CamelCase が基本かと思うと突然 C 風になるのも中途半端。

正規表現にマッチしたかどうかだけ真偽値で知りたいのに Maybe [String] ってのを返してきてウザい。

と思ったけど、これは Data.Maybe.isJust を使えばよいということがわかった。

% href isjust
Data.Maybe,isJust
isJust :: Maybe a -> Bool
isJust x
 
    x が Just _ ならば True、そうでなければ False
 
        -- 文字列のリストのうち正規表現 re にマッチするものだけ残す
        filter (\str -> isJust $ matchRegex re str) strlist
 
本日のツッコミ(全1件) [ツッコミを入れる]
なかだ (2003-08-22 18:34)

「検出したんならそのウィルス部分は削れよ」とは思う。

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|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|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS