Mono Summit Notes 3日目 (11/30)
この日もほぼメモ書きのままで…多分この前夜の食事が原因でこの日から腹痛になって、あまりちゃんと聴けていない。
Debugging Mono with MDB
朝イチでMartinのセッション。10時にスタート出来たなんて奇跡に近い…と言いつつ僕自身が遅刻していたりして。遅刻ラインなのにスタバに行こうぜなんて言ったJBとRodrigoのせいだ(他人のせい)。毎年summitの頃になると動くものが出来るというmdbだが、今年も何とか動いているようだ。
いくつかのtipsの紹介。catch XXXException というコマンドで特定の例外をキャッチするブレークポイントを設定できる。staticメソッドの呼び出し(p Test.Foo())や、VB(.NET)もデバッグできる(*.mdbがある限り)。
Q&Aは(1)ASP.NETデバッグについて (2)*.pdbファイルのサポートについて (3)そもそも使われているのか(うはh)というものだったが、細かくは聞き取れず。答えはたぶん(1)AppDomain管理の関係でまだ無理、(2)cecilにpdb2mdbがある(3)それなりに…という感じだと思う。
Boo: a lean mean DSL machine
再びRodrigoのセッション。しかし腹痛に襲われてあまり集中できなかった…
- static type language / static type != baby-shitty / boo has type inference (i = 42; i = "foo" -> error)
- duck typing
- inspired by python
- object oriented
- functional:
callable Malkovich() as Malkovich
def malkovich() as Malkovich:
print "Malkovich"
return malkovich
malkovich()()()
- boo is sweet: object initializer / array initializer / "55ms" (TimeSpan)
- interpolation: print "total: ${t + 20ms}"
- generators (comprehensions)
deadParrots = parrot.Name for parrot in parrots
if parrot.IsDeceased
- boo is wrist briendly
url, local = argv
...
while not webClientCall.IsCompleted:
Console.WriteLine (".")
Thread.Sleep (500)
- interactive
- extensible (macros)
with reader = File.OpenText("llamas.txt")
print reader.ReadLine()
expression tree ( [| ... |] (like LINQ expression tree / quasiquotation)
override AbstractAstMacro.Expand(MacroStatement)
extensible (attributes)
def Scream([required] message as string):
print message.ToUpper()
-
- ... more than C# attribute
- extensible (steps)
- pipelining
- boo is an infrastructure for building languages: Unity, Spector, Binsor (DI), MockDSL
- future: more type inferencing (esp. generic constructs) / .net 3.5 / meta methods / DLR (duck) / split lang infrastructure and boo lang / extensible parsing? / boojay?
いろんな質問が出ていたが、腹痛すぎて聞いてられんかった。
OpenSUSE build service
(聞いとれんかった)
BOF
ばふ、ばふ、って皆が言うのが、何だか分からなかったのだけど、BOFのことだった…。最初にJordiのgbrainyについて。(ちょっと調べ物をしていて聞き逃した)
次はUnity。Unityベースのゲームの新作を紹介していた。Web上で動いている。レーシングカーでシューティングするようなゲームだが、毎月10,000,000人が訪れるらしい。テニスのゲームを紹介してから、Unity本体の説明。この辺は去年と同じだろう。
Q&Aでsilverlight対応とかはしないのかという話があったけど、そもそもSLは3D環境ではないので、考慮の余地は無さそうだ。
Mono.Addins
再びLluisによる解説。mono-addinsの設計について。
- 伝統的な手法 と その解決方法:
- app.exe -(reflection)-> addin1.dll -> lib.dll
- looking for classes is slow and memory-consuming. => アセンブリ属性
- all add-ins are loaded even when not needed => アドインマニフェストにロード条件を明記 / アドインのアクティベーションを設定可能
- multi add-in directories may be required => アドインロケーションを設定可能
- muli types of extensions (IService, ICommand ... messy) => エクステンションを得るのに共通メソッドを用意
- some add-ins may depend on others → アドインローダを強化
- other kinds of extensions: menu, template, help
- →ホストAPIで登録 / マニフェストで提供
- アドインは、正しく使おうと思ったら、簡単ではない
- Mono.Addins:
- design goals:
- 自己記述的なアドイン
- strongly-typed extensions
- どんな規模のアプリケーションでも実用的
- スケーラブル
- extension model:
asm1: add-in roots
/Service (extension point)
- extension node1 (addin), extension node2 (addin) ...
/MainMenu
asm2:
/Service
/MainMenu
- context of an add-in
- add-in description
- XML manifest
- custom attributes
- assemblies
- implement add-in extensions
- data files
- deployed together with the add-in
- add-in description
- examples (manifest/custom atts)
- querying an extension point (AddinManager methods)
- custom extension nodes: menu item
- add-in discovery (AddinManager.Initialize() / AddinManager.Registry.Update())
- conclusion:
- advanced and efficient add-in engine
- common add-in development model
- add-in management tools (mautil, online repo, management API)
- add-in development tools (MD extension, documentation tools)
その他
みんなで晩飯に行った時に、Second LifeのJim Purblickに仮想世界の法規制の話をちらっと振ってみたけど(まあ僕の英語力の限界もありry、それ以上深く突っ込んで訊くことは無かったけど)、余所の国でもid:atsushieno:20070802みたいな議論は起こっているようだ。で、結局のところ、境准教授が指摘していたように、サーバが米国に設置されているから米国法に準拠してサービス展開せざるを得ないようだ。皆それを聞いて考えるのは、やはりこれだった:「じゃあシーランドに持って行くか」