GNOME3に移行

debian/testingを愛用してるんだけど、apt-get dist-upgradeしたらまさかのGnome3に...

いろいろ手間取ったのでメモ。

gdmからログインしようとするとSad Mac的な画面に...

GNOME3はcompizと一緒に使えない

apt-get remove compiz-core

Gnome Terminalが透過しない

apt-get install mutter/experimental

mutter 3.0.0系のバグなので、experimentalから3.2を取ってくる。

ウィンドウのドロップシャドウに透明度が設定されてなくて死んでるらしい

shutdownメニューどこ

トップバー右上のメニューの「サスペンド」はAlt押すと「電源OFF」項目に変更される

glDrawElements/gl.drawElementsが(GL_)INVALID_OPERATIONを返す

http://www.opengl.org/sdk/docs/man/xhtml/glDrawElements.xml

GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to an enabled array or the element array and the buffer object's data store is currently mapped.

という説明をみてなんじゃこりゃとおもったんだけど、どうやらenableVertexAttribArrayされたattribに対して、有効なVBOがバインドされていない場合にそうなる。説明そのまんまなんだけどenabled arrayってなんぞというところで躓く。

デバッグ環境

http://benvanik.github.com/WebGL-Inspector/
UIかっこいい。gl命令のトレース表示、さらに部分実行とかも可能。

しかし説明のとおりにやってもfile://URLではうまく行かないので、適当にサーバを立ち上げる必要がある。
サーバ立ち上げてもGLアイコン連打しないとデバッガUIがでてこない。

https://github.com/jackpal/webgltrace
WebGL Inspectorあればいらないと思うかもしれないが、一部の命令に対するエラーがWebGL Inspectorからは見えないことがある。
その場合、どうやらWebGL Inspector上では命令の実行されたこと自体がなかったことになるようだ。

こっちの全命令に対してのフックだとちゃんとエラーがおきたことがわかる。

SOSP 2011 memo

Fast Crash Recovery in RAMCloud

Diego Ongaro, Stephen M. Rumble, Ryan Stutsman,
John Ousterhout, and Mendel Rosenblum

On-memory KVSでログをディスクに書いていってその情報を元に他ノードを復旧。
するための様々なテクニックとか

Transactional storage for geo-replicated systems

Yair Sovran
Russell Power
Marcos K. Aguilera
Jinyang Li

操作対象を全て"commutative data type"という操作が可換ななにかにすることによって、transactionが絶対にコンフリクトしない+txの適応順序がノード間で異なることを許すと幸せになれる

ほかにもかく

サブディレクトリにデプロイ

http://example.com/app1
http://example.com/app2
http://example.com/app3

のように同じドメインに複数のアプリをデプロイしたい場合は、appserverのthinのオプションにそれぞれ--prefix /appNを指定するとできる。

nginx.confは

upstream app1thin
{
  server 127.0.0.1:4567;
}

server {
  # ... snip ...
  location @app1thin {
    proxy_pass http://app1thin;
    proxy_set_header  Host $host;
    proxy_set_header  X-Real-IP          $remote_addr;
    proxy_set_header  X-Forwarded-Host   $host;
    proxy_set_header  X-Forwarded-Server $host;
    proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;
  }
  location /app1 {
    try_files $uri @app1thin;
  }
}

という感じでやってる。