2007年 01月 23日

PC の使用時間

自分の場合、寝るとき・食事をとるとき以外は殆ど PC の画面を見ている (といってもやってることはいろいろ) わけだけど、PC をあんまり使わない人ってその大部分の時間に何をしているんだろう。

パッと思いつくのは

  • テレビ

ぐらいしかない。でもこれだけで時間を潰せるわけないよなぁ。

でも逆に普段 PC をあんまり使わない人からしたら、ずっとディスプレイを見ているのは不思議に映るのかもしれない。うーん。

写真撮るのが楽しい。

IMG_2451

新しい発見があるってのが解ってきた気がする。わかってなかったのかよ、って感じだけど……

しかしこうもっとこう、撮影者と被写体との距離感 (のバランス) を感じるのが撮りたい。


でもあんまり拘らないでやっていきたいと思う。色がどうこうとか、細かく考えると微妙にオカルトチックになってしまうのでおおざっぱにやりたい。特に色は Web で公開してるのがメインだから拘っても無駄だし

証明

正しさは反論できないけど、納得できるかどうかは別の問題だと思う。だから表現。所詮論理なんて人を説得したり、理解させて納得させるための手段なのに、それが一番になって表現がないがしろになって、納得しにくくなったら意味がない。

数学の証明が、他人にわかるように書けばいいことに気付くまで時間がかかった。しかも解ったときには既に文系に進んでいて数学の授業がなかった。それまで自分は「コンピュータに理解させる証明」を書かないといけないと思っていた。でも証明に使うのは自然言語だから、そんな証明は書くことができない (コンピュータはそもそも「理解」がいまのところできない)。だから「とりあえずこう書けばいい」の組合せから抜けられなかった。

でもまだ、なんで自然言語で書かれた証明が「証明」になるのかよくわからない。みんなが考えている「論理的方法」が本当に同じものなのかわからない。頭悪くてどっちにしろ証明自体が楽しいと思えるようにはならないだろうからどうでもいいといえばどうでも、いい。


伝わったって感じることが大切だと思う。


関係ないけど、プッシュ型のメディアとプル型のメディアってちゃんと考えないといけないと思った。プッシュ型のメディアで大きいコンテンツを配信するのってちょっとどうなの……みたいな。「読まされる」とか「聞かされる」のって気持ち的にあんまり好ましくない。話の長くならないように気を付けないと……

「すいません先生! あとでじっくり考えたいのでブログに纏めておいてくれませんか? 今は作業を進めたいです!」

SKK再入門

OS X に AquaSKK 入れてみた。慣れるまえにやめそうな気がする。
「言って」とか変換するときに悩んでしまうんだよなぁ。あと思ったことを一回単語に分けないと入力できないのは結構つらい (慣れの問題だとは思うけど)。

今 SKK で書いています。なんか C-j で「ひらかな」モードにいかない。なんでだろ。C-g は効く……
z. で三点リーダが入力できるのがいいなぁ。ことえりだと「てん」で変換してた。毎回!!

そうそう mayu の OS X 版欲しい

さがしたけどないっぽいんだよなぁ。カーネル付近でいぢる特定用途のはあって、それ改造すればできそうな気もするけど、デバッグが大変そうで手がでない。

Opera の JSONP の罠ではまってた

検索したらすぐに script 要素を挿入した時点で処理とまるってでてきてくれて流石だと思った。
コールバック関数は script 要素を挿入する前に書かないと

SKK

そんなに打てないわけじゃないかも。結構普通に使えてる、、気がする。やっぱ送りがな間違えて失敗するけど……
これで補完候補がガンガン表示されてガンガン補完できたらいいのになぁ。って思ったけどそれなんて PRIME って感じもする。

rubyclr を使って、Ruby から joystick を扱ってみる

require 'rubygems'
require 'rubyclr'

reference 'System'
reference 'System.Drawing'
reference 'System.Windows.Forms'

include System::Drawing
include System::Drawing::Drawing2D
include System::Windows::Forms

# Timer 付き Form のセットアップ
Application.enable_visual_styles
Application.set_compatible_text_rendering_default false
form = Form.new
form.StartPosition = FormStartPosition::CenterScreen
form.Text = "><ノ"
form.Size = Size.new(120, 0)

timer = Timer.new
timer.Interval = 50
timer.Enabled = true

# ManagedDirectX Input # DirectX SDK が必要
reference 'Microsoft.DirectX'
reference 'Microsoft.DirectX.DirectInput'

include Microsoft::DirectX
include Microsoft::DirectX::DirectInput

joystick = nil
devices = Manager.GetDevices(DeviceClass::GameControl, EnumDevicesFlags::AttachedOnly)
while devices.MoveNext
	joystick = Device.new(devices.Current.InstanceGuid)
	break
end

joystick.Properties.AxisModeAbsolute = true
joystick.SetCooperativeLevel(form, CooperativeLevelFlags::NonExclusive | CooperativeLevelFlags::Background)
joystick.Acquire

prev = ''
timer.Tick do |sender, args|
	state = joystick.CurrentJoystickState

	on = []
	state.GetButtons.each_with_index do |b,i|
		on << i if b.nonzero?
	end

	out = "X:%s, Y:%s, Z:%s, Buttons:%p" % [state.X, state.Y, state.Z, on]
	unless prev == out
		puts out
		prev = out
	end
end

Application.run form

ManagedDirectX とかいうらしい。
http://web.sfc.keio.ac.jp/~t03792sh/archives/2005/10/manageddirectxj.html を参考にした。

どうも Enumerable なやつがうまくいかなくて困った。.each とか使えるはずなんだけど、エラーがでて使えない。しかたないので普通のイテレータ使ってる。
あと joystick.Objects をイテレータでまわしてると Ruby オブジェクトに変換できないだかなんだかで落ちてしまうのでそこは書いてない。どうするんだろ。

SDL のほうが簡単そう。

ruby/sdl を使って、Ruby から joystick を扱ってみる

require 'sdl'

SDL.init(SDL::INIT_JOYSTICK)

SDL::Joystick.num.times do |i|
	p SDL::Joystick.index_name(i)
end

j = SDL::Joystick.open(0)
p j.num_axes
p j.num_buttons
p j.num_balls
p j.num_hats


prev = nil
loop do
	SDL::Joystick.update_all
	out = ''
	j.num_axes.times do |i|
		out << "%d:%06d " % [i, j.axis(i)]
	end
	j.num_hats.times do |i|
		state = j.hat(i)
		ret = [0, 0] # x, y
		case state
		when  SDL::Joystick::HAT_CENTERED
			ret = [0, 0]
		when  SDL::Joystick::HAT_UP
			ret = [0, 1]
		when  SDL::Joystick::HAT_RIGHT
			ret = [1, 0]
		when  SDL::Joystick::HAT_DOWN
			ret = [0, -1]
		when  SDL::Joystick::HAT_LEFT
			ret = [-1, 0]
		when  SDL::Joystick::HAT_RIGHTUP
			ret = [1, 1]
		when  SDL::Joystick::HAT_RIGHTDOWN
			ret = [1, -1]
		when  SDL::Joystick::HAT_LEFTUP
			ret = [-1, 1]
		when  SDL::Joystick::HAT_LEFTDOWN
			ret = [-1, -1]
		end
		out << ret.inspect
	end
	out << (0..j.num_buttons).select {|i| j.button(i) }.map {|i| i + 1}.inspect
	unless prev == out
		puts out
		prev = out
	end
	sleep 0.1
end

全然こっちのほうが簡単だなぁ。フォースフィードバック使えないのがちょっと寂しいかもしれない。
あと hat の返す値がちょっとめんどい。上のでは PyGame like にしてみた

Joystick でマウスを制御

なんで joystick とかいぢっていたかというとマウスを動かしたかったからなのです。そういうツールってあるにはあるのだけれど、いまいち挙動が気にいるのがないので書きたかった。

でとりあえず移動とクリックできるところまでつくってみた。ソースがダサい。
http://lab.lowreal.net/trac/browser/c/util/initj.rb