Diary?::2006-03-17

10:04

はてな側の用意したキーボードショートカットだとまともに使えるあたり、 Opera のバグっぽいな。

11:44

「Winny を使うな」というお達しが「P2P ソフトウェアを使うな」に変わるまで、どれだけ時間がかかるのか? 俺はかなり悲観的に (= 近い将来そういう風潮になると) 見てる。

散々いろんな所で書かれていることだけど、Linux のディストリビューションの中には BitTorrent を配布手段に用いている所もあるし、帯域制限の厳しい環境の人にとっては P2P は生命線となりうる。それを十把一絡げにして禁止するのは大問題だろう。

ていうかさぁ、 Winny に問題があるというよりはセキュリティに疎い連中が多いってのが問題なんじゃないの? 特定のソフトウェアを使うなというお達しを出すのではなく、セキュリティに関する啓蒙を行っていく方がずっとまともな方法だと思うんだが。そうすれば、少なくとも重要なデータを家に持ち帰って流出なんてことにはならないだろう。

根本的な解決ってのはコストがかかるものだろうけど、未来永劫にわたって第二、第三の Winny に頭を悩ませるよりはずっと安く済むだろうね。

15:45

リテラルの持つ表現力や演算子のオーバーロードについてのお話。基本的には同意なのだけど、演算子のオーバーロードに対しては俺は結構慎重に考えている。

例えば Python のリストは + 演算子でリスト同士の結合が行えるのだけど、人によってはこれはリストの末尾に要素を加える操作と思ってしまうかもしれない。そうしてリスト + 整数などの操作を行うと、それはエラーになってしまう (ここで引数の型で判別などとしてはいけない。リストの末尾要素として別のリストを加える操作をしようとしてはまる) 。整数や文字列であれば加算の持つ意味はほぼ一つに限定されるけど、リストに関しては少なくとも二つの間違いとはいえない意味が考えられる。これはかなり重要な事だろう。

だから檜山さんが例として出しているファクトリ関数などを使って

x += v2(1.0, 2.0)

などと記述するのは誤解が無くていいやりかただと思う (というか使わせてもらいます)。ここでタプルに対して + 演算子をオーバーロードしてしまうと、少なくともその場では x がリストなどである可能性が残ってしまう。

あくまでも私見だけれど、演算子のオーバーロードは同じ型とみなせるオブジェクトに対してのみ用いるべきであり、整数と小数はともかく文字列と整数などの場合は便宜をはかってはいけないと思う。データの振る舞いとデータに対する操作は一貫性を持つべきであり、例外的な動作が増えれば増える程プログラムの複雑性は増加するはず。

おまけ。 Vector2D を Python で書いてみるとこうなる。

class Vector2:
	def __init__(self, x, y):
		self.x = x
		self.y = y
	
	def __add__(self, vec2):
		return Vector2(self.x+vec2.x, self.y+vec2.y)
	
	def __iadd__(self, vec2):
		self.x += vec2.x
		self.y += vec2.y
		return self
	
	def __sub__(self, vec2):
		return Vector2(self.x-vec2.x, self.y-vec2.y)

	def __isub__(self, vec2):
		self.x -= vec2.x
		self.y -= vec2.y
		return self

	def __str__(self):
		return 'Vector2: %f, %f' % (self.x, self.y)

v2 = Vector2

a = Vector2(1.0, 1.0)
print a
a += v2(1.2, -0.5)
print a
b = a - v2(-3.0, 2.1)
print b

その結果。

Vector2: 1.000000, 1.000000
Vector2: 2.200000, 0.500000
Vector2: 5.200000, -1.600000

18:03

Opera の M2 にも spam フィルタがついてたのね。今まで spam なんぞ届いたことが無かったから気がつかなかった。

18:10

環境
Vine Linux 3.2 / scim 1.4.2 + anthy / Opera 9.0 tp 2
現象
Opera で日本語入力した際に変換結果の語頭にフォーカスが移る。
期待される動作
変換結果の語尾にフォーカスされた状態になる。
解決方法
http://d.hatena.ne.jp/saiton/20051115/1132054456

この場合インライン入力が出来なくなるのだけど、こっちの方がまだましなので。

21:58

そうか、こういう事ばかりやっているから十兵衛はおかしくなったのか。

22:42

考えの足りてない善人は思慮深い悪人よりもたちが悪い。悪人は自分のやっていることが法に触れている、あるいはなんらかの倫理基準に照らし合わせて問題があることを認識した上で行動に出ている。つまり、最低限の意志疎通が可能ということだ。

ところが考え無しの善人というのはそうではない。自分の行いが間違っているかもしれないという疑念を一切持っていないのだ。思慮深い悪人はそういう行動にでなくても済む方針を提示すれば納得するだろうが、考えなしの善人はそうとは限らない。むしろ「自分は良い事をしているのに何故?」という反応が待っている。

「水からの伝言」ってのは、きっとそういう一般にいい人と思われる人達が広めているのだろうな。

あーそれと、俺は全ての人間はどこかの誰かに対して何らかの悪事を行っていると考えているので、何というか自分は善人だと思っているあなた、あなたは自分が思っているよりもずっと邪悪だ。

23:41

最近になって「最強伝説黒沢」を読み始める。……俺の知る限りでは福本作品って、煮詰まって袋小路にはまるかそうでない場合は打ち切られるかのどっちかなんだよな。いや、後者は「無頼伝涯」しか知らないんだけど (俺としてはとても面白かったんだけどなあ。掲載紙がまずかったか)。

さあ、この漫画はどっちだ。

Written by Kuwata Chikara
Creative Commons