ものがたり(旧)

atsushieno.hatenablog.com に続く

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:
    • MD, #D, Eclipseが背景にある
    • Mono/.NETで動作
    • 以下のような問題を解決:
      • 共通の拡張モデル
      • 利用上の便宜を考えたAPI
      • 遅延ロード
      • アドイン依存処理
      • 柔軟なアドイン検索モデル
      • 拡張の条件付き実行
      • 任意のモジュール
      • ローカリゼーション
  • 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
  • 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みたいな議論は起こっているようだ。で、結局のところ、境准教授が指摘していたように、サーバが米国に設置されているから米国法に準拠してサービス展開せざるを得ないようだ。皆それを聞いて考えるのは、やはりこれだった:「じゃあシーランドに持って行くか」