2006年 12月 01日

キーボード

学校の端末を英語配列で使えるようにする方法を考える。権限が少なすぎ……なんか簡単に変えられないのかなぁ。ユーザごとにキーレイアウト変えられないわけがないとは思うのだけれど……

memo

OSX Drag Picture

スクリーンショットを対話的にとるとき、マウスでドラッグして選択するのがあるけど、あれってどうやってやるんだろうって考えてた。
マウスイベントをキャプチャーして……とか面倒くさそうだなぁとか思ってたけど全然違う方法で実装できそうだ。

require 'osx/cocoa'
include OSX

class SelectionView < NSView
	attr_accessor :delegate

	def drawRect(rect)
		NSColor.colorWithCalibratedRed(0, :green, 0, :blue, 0, :alpha, 0.1).set
		NSRectFill(bounds)

		if @start && @end
			NSColor.colorWithCalibratedRed(0.5, :green, 0.5, :blue, 0.5, :alpha, 0.5).set
			NSRectFill(calc_rect)
		end
	end

	def mouseDown(event)
		@start = NSEvent.mouseLocation
	end

	def mouseDragged(event)
		@end = NSEvent.mouseLocation
		setNeedsDisplay(true)
	end

	def mouseUp(event)
		@end = NSEvent.mouseLocation
		delegate.windowShouldClose(nil)
		window.close
	end

	def calc_rect
		x = [@start.x , @end.x].min
		y = [@start.y , @end.y].min
		w = (@start.x - @end.x).abs
		h = (@start.y - @end.y).abs
		[x, y, w, h]
	end
end

class TEST < NSObject
	def applicationDidFinishLaunching(aNotification)
		size = NSScreen.mainScreen.frame.size
		rect = [0, 0, size.width, size.height]
		@window = NSWindow.alloc.initWithContentRect(rect,
		                                  :styleMask, NSBorderlessWindowMask,
		                                    :backing, NSBackingStoreBuffered,
		                                      :defer, 0)
		@window.setDelegate(self)
		@window.setOpaque(0)
		@window.setHasShadow(0)
		@window.setLevel(1000) # NSScreenSaverWindowLevel

		@view = SelectionView.alloc.initWithFrame(rect)
		@view.delegate = self
		@window.setContentView(@view)

		@window.makeKeyAndOrderFront(nil)
		@window.orderFrontRegardless
	end

	def windowShouldClose(sender)
		p @view.calc_rect
		exit
		true
	end
end

$App = NSApplication.sharedApplication
$App.setDelegate(TEST.alloc.init)
$App.run

スクリーンと同じサイズのできるだけ透明なウィンドウを作ってあげてそいつでイベントうけとる。

2006年 11月 29日

C language って検索しにくいんだよ!!

C 言語を最初に知ったぐらいの時、C 言語は自分にとって楽しい言語じゃなかった。ポインタを理解していなかったし、そもそもコンピュータの仕組みを理解していなかったし、ついでにいえば「下手すればコンピュータが壊れるコードを書く」みたいなことを思っていたので手を出せなかった。

何か知らないうちに Ruby をいぢって、Ruby の拡張ライブラリを読んだり、ちょっと作ってみたりするうちにポインタを理解していることに気付いて、最近 C 言語のキャストについてふとした拍子に理解して、だんだん C がわかるようになってきた。

機械語は読めないものだっていう先入観があったけど、Binary 2.0 あたりの流れでそうじゃないことに気付いた。読む人が読めば読めるもののようだ。なんとなく画像処理について気付いた時と同じ気持ちになった。

頭が悪くても、ゆっくりやっていれば結構どうにかなるのかもしれない。急ぐ事を強要されているけど、無視してもいい気がしてきた。

Ruby はなんとなくで「できそうなもの」だったから、やる気が沸いたんだよなぁ。C はそのとき「できなさそうなもの」だったからやる気が沸かなかった。Perl もそうだ。PHP はまだ「できそうなもの」だった。

どっかとっかかりがあればいいんだよなぁ。電子回路設計とかってどっから入ればいいんだろう。

2006年 11月 28日

HHKB Pro2

買った!
Delete の位置が違和感(バッククオートを押してしまう。C-H に矯正すべきか……)

mayu

OSX で窓使いの憂鬱みたいなのってないのかな

2006年 11月 24日

cygwin

うーん。いろいろためして DOS プロンプトで生きていこうと思ったけど難しいなぁ。
USB メモリに cygwin インストールしたほうがいいのかもしれない。

@echo off
PATH ¥bin;¥ruby¥bin;¥putty;¥vim7;%PATH%

title  Console
prompt $_$P$_$G 
doskey ls=dir /B $*
doskey lm=dir /OD $*
doskey cat=type $*
doskey less=more $*
doskey diff=fc $*
doskey rm=del $*
doskey rm-rf=rmdir /s /q $*
doskey findstr=grep $*
doskey mv=move $*
doskey cp=copy $*
doskey cp-r=xcopy $*
doskey clear=cls
doskey ps=tasklist $*
doskey ..=cd ..
doskey kill=taskkill /PID $*
doskey traceroute=tracert $*
doskey vim=start ckw.exe -e vim7.exe $*

cmd

みたいなのを USB ドライブのルートから起動するようにしてるけど、補完とか細かい部分がキモくて……