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; } }
という感じでやってる。