2007年 04月 05日

非同期を同期っぽくする方法

callcc
コールバックからもとの継続を呼ぶ (一度メソッドから抜ける)

# 同時にいくつも呼ぶことを想定していない
	def hoge(sender)
		@foo.set_callback(self, :event_callback)
		@foo.load_something 
		if callcc { |@c| false }
			p "loaded"
			@c = nil
		end
	end

	def event_callback
		@c.call(true) if @c
	end

Queue
Queue#pop のブロッキングを使う

# 同時にいくつも呼ぶことを想定していない
	def hoge(sender)
		@q ||= Queue.new
		@foo.set_callback(self, :event_callback)
		@foo.load_something 
		@q.pop
		p "loaded"
	end

	def event_callback
		@q << :callback
	end

なんかもっと簡単なのがあるのかなぁ

webview たん

もうあきらめて全部のページについて WebView を作るようにしたみたけど、これもなぜかうまくいかない

		t = Transition.alloc.initWithType(CGSCube)
		t.setOption CGSLeft
		t.freezeWindow nil # freeze fullscreen
		@mainWindow.setContentView @pages[@page]
		@mainWindow.display
		@mainWindow.setViewsNeedDisplay true
		@mainWindow.flushWindow
		t.invoke(1)

@pages に WebView のインスタンスがはいってる。けどなぜか setContentView と display その他ではちゃんときりかわってくれない! なんでだ

WebView 一個だけにして、ページ内 JS からシステムエフェクトをよべるようにしたほうがスマートな気がした。

2007年 04月 04日

PASMO の履歴確認ページ

名前を半角カタカナで入力しないといけないのだけど、SKK で半角カタカナを入力する方法がわからない。勝手に変換してくれよおおおおおおおおおおおおおおお

C-q だった

2007年 04月 03日

852

三日読んでなかったらレート5だけで 852 未読が

PlaceEngine TypeKey OpenID Login

なんかうまくいかないよおおおおお

2007年 03月 30日

CGSPrivate.h 画面のフリーズなど

CGSNewTransition() が実行されたとき、spec.wid に指定されたウィンドウの描画がフリーズされる (spec.wid が NULL の場合は画面全体がフリーズされる)。すなわち、CGSNewTransition() から CGSInvokeTransition() の間までで「新しいウィンドウの状態」をつくってあげると、それとの間で Transition する。(フリーズしても、1秒だか3秒だかで解除される。安全のためっぽい)
というのに気付くまで30分ぐらいかかった……VirtueDesktop のソースコメントを読んでやっとわかった……

でもって、エフェクト付きのをコミットした。けど、まだ使える段階になってない。

OSX.require_framework のロードパス

ってどうやって調べるんだろう。

WebKit のレンダリング終了

ってどのイベントなんだろ。

WebView を二枚つくって交互にやっていこうと思ったけど、すすむだけってわけじゃないし、もどるときとかとぶときにエフェクトが変になってしまう。
ページひとつひとつに WebView つくってあげてあらかじめロードしておけば問題ないけど、気持ちわるい。

2007年 03月 29日

Mac OS X のエフェクト

Cube とかそういうのは非公開APIのようだ。VirtueDesktop のコードを読んで検索したら http://dev.lipidity.com/feature/tutorial/xcode-transitions-core-graphics-image-2 がみつかった。

Cocoa framwork

AppleRemote のおかげで Cocoa framework が意外に簡単に作れることがわかった。
ので CGSPrivate.h を含む Transition クラスを作ってあそんだりしてみてる。とりあえずキューブなのはできた。定数のインポートとかがわかんない。