ちゃんとした酒屋によれなかったので、スーパーで適当に買った。
惣誉のほうはアルコール度数が18度と高めなのでオンザロックが美味いという変わった日本酒だけど、これは好みかも。一方天鷹の生酒はちょっとレトロっぽい感じがしたけど、結局良く飲んでた。
ついでに買ってきた水ナスの漬物をつまみながらクイクイと飲んだ。

あと適当に。

ちゃんとした酒屋によれなかったので、スーパーで適当に買った。
惣誉のほうはアルコール度数が18度と高めなのでオンザロックが美味いという変わった日本酒だけど、これは好みかも。一方天鷹の生酒はちょっとレトロっぽい感じがしたけど、結局良く飲んでた。
ついでに買ってきた水ナスの漬物をつまみながらクイクイと飲んだ。

あと適当に。

11082011 javascript
dotHTML5から
ソースがGitHubで公開されているのでコードリーディング。Soket.IOの使い方が勉強になる。
あと、ヘッダのリソースをsession経由で渡せばいいのか。
req.session.resources = [ { type: 'javascript', uri: '/libraries/file-iterator/file-iterator.js' }, { type: 'javascript', uri: '/socket.io/socket.io.js' }, { type: 'css', uri: '/stylesheets/sender.css' }, { type: 'javascript', uri: '/javascripts/sender.js' } ]; req.session.variables = [ { name: 'webSocketHost', value: "'" + config.client.webSocket.host + "'" }, { name: 'webSocketPort', value: config.client.webSocket.port } ]; res.render('sender');
こうしておくとテンプレートにハードコードしなくて良いからいいかもしれん。今度使おうっと。Flaskだったら辞書に突っ込んでレンダリングすればいいのかな。
8/21(Sun) @コミュニテイfで第二回Shizudevつくる会やります。
09082011 life
最初の2日はキャンプ。
今日は妻が健康診断のためにこどもの世話をしていたのだけど、自分の仕事は何も出来ずに一日潰れた。恐るべし娘と息子。
娘にペンタブレットとphotoshopの使い方を教えてた。お絵描きが好きなのでこういうのは好きみたいだな。とっとと上達して僕のウェブサービスのロゴとかデザインとかできるようになってくれるとありがたい。


子供お絵かき板Flickrみたいなのあればいいのにねーと思った。
夕方補助輪を外した自転車の練習をした。
昨日お友達に「まだ補助輪つけてるのー?」って言われたのがショックだったらしい(泣きそうになってたし)。で、昨晩寝る前に「明日から補助輪外す!」って言ってたけど本当に外すとは。
少し、一緒に練習すれば走れるようになりそう。
16連釘パンチとか言ってひたすらくすぐると喜ぶ。しつこいので泣くまでくすぐり続けておくのが定番だが、息子との仲良し度も高まった。息子と娘は性格が全然違うが、二歳くらいで既に違うなってわかるのはやっぱ遺伝要因なのかなぁとか思う。環境要因ではないよなと。
トリコ面白いけど、HUNTER×HUNTERの連載が再開したのも喜ばしい
子どもが生まれてから初めてテントを担いだキャンプですな。二週間くらいに急に思い立ったので、探したほとんどのキャンプ場の予約は埋まってたのだけど、子どもの国のキャンプサイトは数サイト空きがあったので申し込んだ。
キャンプサイトで、テントとタープ貼り終わったのがお昼で、その後に突然の雷雨がきてテントの中で雨宿りしてたら時間を食ってしまった。水の国に行って水遊びをする予定を変更して、アルパカ見たりしてた。

娘が乗馬で大喜び。

二日目は、クモノスネットで遊びつつ歩きながら水の国に行って水遊びをして、街の国で、ヨーヨー釣りしたり、かき氷を食べて帰ってきた。帰りはバスみたいなのに乗って街の駅から草原駅まで戻ってきた。

こどもの国は広くて一泊だと結構慌ただしい。二泊してゆったりするのがいいかも。
生物学的等価体として知られているものにカルボン酸とテトラゾールがありますね。
医薬化学において、テトラゾール環はカルボン酸の等価体と見なされ、医薬品の部分構造に汎用されている。これは前述のようにpKaがほぼ等しいため、

テトラゾールってこんな構造だからpKaは同じだとしてもアニオン化した状態で負電荷どこにたまるのかなという素朴な疑問を持っていた。
ま、計算すればいいだけなので、pygamessを使って計算してみた。以下コード。チャージがcontrlセクションに入力するっていうのが気持ち悪い。
あと、最適化がなかなか終わらないのでmaxitとnstepは増やした。デフォルトをこの値にしてもいいかもしれない。
from pygamess import Gamess, GamessError import openbabel as ob g = Gamess() g.contrl['maxit'] = 200 g.contrl['icharg'] = -1 g.statpt['nstep'] = 300 g.system['mwords'] = 80 g.basis_type('631g') g.run_type('optimize') obc = ob.OBConversion() obc.SetInAndOutFormats("mol","mol") mol = ob.OBMol() obc.ReadFile(mol, "tetrazole.mol") print g.gamess_input(mol) try: newmol = g.run(mol) except GamessError, gerr: print gerr.value else: for obatom in ob.OBMolAtomIter(newmol): print obatom.GetIdx(), obatom.GetType(), obatom.GetPartialCharge()
いろいろ試していたので、GAMESSインプットを出力するようにしてある。
結果を見ると、確かに6,9番目の窒素のマイナスチャージが大きくなっているので、カルボン酸等価なんだろうなと納得したのであった。
$ /opt/local/bin/python optimize.py $contrl runtyp=optimize scftyp=rhf icharg=-1 maxit=200 mult=1 $end $basis gbasis=N31 ndfunc=1 ngauss=6 $end $system mwords=80 $end $statpt opttol=0.0001 nstep=300 $end $DATA C1 C 6.0 -5.1500000000 0.5694000000 0.3351000000 C 6.0 -3.6632000000 0.3894000000 0.3044000000 H 1.0 -5.3940000000 1.6144000000 0.4937000000 H 1.0 -5.6014000000 -0.0166000000 1.1314000000 H 1.0 -5.6123000000 0.2533000000 -0.5982000000 N 7.0 -2.8049000000 1.3874000000 0.2522000000 N 7.0 -1.6217000000 0.7950000000 0.2303000000 N 7.0 -1.7700000000 -0.4762000000 0.2679000000 N 7.0 -3.0563000000 -0.7807000000 0.3162000000 $END 1 C3 -0.5149 2 Car 0.437823 3 HC 0.153658 4 HC 0.142616 5 HC 0.138266 6 Nar -0.487902 7 Nar -0.192393 8 Nar -0.188063 9 Nar -0.489106
量子化学計算っていうのは意外にトライアンドエラーが多い。だからといってGUIのコンソールからちまちまと作業すると時間が取られて困るし、作業ログが残りにくいので、こういったスクリプトで幾つかの条件を用意してforループでグルグルまわして計算させれば手順がきちんとドキュメントとして残るのでよい。
意思決定は技術ですね。この本は結構面白かったので創薬の場合で考えてみた。
意思決定には、おかしなパラドックスがある。誰でも意思決定の重要性については理解しているが、それでも意思決定のトレーニングをする人は極めて少ない。
本書は特に意思決定の際にはまりがちな落とし穴を8つ紹介している
モデラーの間にはよく知られた格言がありますね、正しいモデルなんて存在しない、十分に表現できるモデルが得られただけだみたいな(正確なのは忘れた)。
思考モデルとは、外の世界の現実を自分の内側に描写したものである。細部よりもその情報が素早く自分に到達することを重視した、不完全な描写と言ってもいいだろう。
例えば芳香環を共鳴による電荷移動だけしか知らなくて電子雲のイメージを持てないとかそんな感じ。モデルの限界わかってないと、ハマることは多い。
帰納法的に考えてしまう問題は、要は限られた情報をもとに未来を予測してしまうことだ。
これはQSAR,QSPRの抱える本質的な問題ですね。構造XX相関は、知っていることの範囲でしか答えることができないし、どこまでいっても相関であって因果関係とは異なる。
ストレス反応があると短期的に特になることを追求できるが、長期的に何がいいのかを考えられないのだ。これが、トンネルビジョンになる原因の一つだ
プロジェクトでミクロな視点しかできないのは本人の資質かなと思っていたけど、環境要因も後押ししてるのかもしれない。短期成果は見えやすいのでプロジェクトリーダーにあがりやすいんだけど、こういう人がなるとプロジェクトが迷走しやすい(経験的に)
物事を予測する際に、人間がアルゴリズムを上回る結果を出すような分野を見つけるのは不可能
直感がうまく機能するのは安定した環境下なので、複雑な状態では重要性としては低い
理論構築をする過程では、仮説が実データと合っているかを研究社が検証し、その中で出てくる例外(アノマリー)を見つけ、さらに理論を研ぎ澄ましていくのだ
深く考えて本質を捉えるということですね。特にその際に相関関係と因果関係は違うということをきちんと理解することが重要。
lead optimizationするときには大抵logPとかPSAの相関からそういったパラメータの上げ下げで問題を解決するストーリーにしたがるけど、それってメカニズム的に説明がつくの?っていうことを常に問いかける癖をつけておくとよいですね。
所謂ブラック・スワンですね。
平均回帰性から、運により大きな成果をあげた人は次も同じくらい大きな成果をあげるとは限らない。結果よりもプロセスを重視するということは、そういった運の要素を見極めながら実力を評価するということなのでしょう。
まぁ、でも企業は結果を評価してプロセスなんて後付ですよね。頑張ったから結果がついてきたという言葉に現れているような気がする。
04082011 javascript
now.jsの練習。canvas操作ははじめての共同作業 Canvas編を流用させてもらった。
now.jsは単に呼び出せば非同期メッセージングができるようになるので便利ですね。あと実際に使ってみて楽だなぁと感じたのがjade、これはヤバイ。Pythonだと何が一番近いんだろうか?後で探してみよう。
expressコマンドでできたスキャフォールド
$ tree
.
├── app.js
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ │ └── client.js
│ └── stylesheets
│ └── style.css
└── views
├── index.jade
└── layout.jade
最後の二行追加したくらい。楽ちん
var express = require('express'); var app = module.exports = express.createServer(); // Configuration app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); app.configure('development', function(){ app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); app.configure('production', function(){ app.use(express.errorHandler()); }); // Routes app.get('/', function(req, res){ res.render('index', { title: 'Express' }); }); app.listen(3000); var everyone = require("now").initialize(app); everyone.now.distributeMessage = function(message){ everyone.now.receiveMessage(message); }; console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
npm -d install
で依存モジュールがさくっとインストールされるので便利ですね。
{ "name": "application-name" , "version": "0.0.1" , "private": true , "dependencies": { "express": "2.4.3" , "jade": ">= 0.0.1" , "now": ">= 0.0.1" } }
now.distributeMessage(JSON.stringify(points));
だけで、他のクライアントに通知されます。
Painter.prototype.move = function(event) { if (!this.isDrawing) { return; } var points = { bx: this.beforeX, by: this.beforeY, ax: event.clientX - 10, ay: event.clientY - 10, c: this.strokeStyle }; now.distributeMessage(JSON.stringify(points)); this.drawLine(points); this.beforeX = points.ax; this.beforeY = points.ay; };
!!! 5 html head meta(charset='UTF-8') title= title link(rel='stylesheet', href='/stylesheets/style.css') body!= body
canvas(id='layer0', class='canvas', style='position: absolute; top: 0; left: 0; border: 10px solid #dddddd;', width='900px', height='600px') script(src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js') script(type='text/javascript', src='/javascripts/client.js') script(src='/nowjs/now.js') script $(document).ready(function(){ var painter = new Painter('layer0'); now.receiveMessage = function(message){ var d = JSON.parse(message); painter.drawLine(d); }});
03082011 music drum'n'bass
02082011 javascript
socket.ioを更に抽象化してnowっていうオブジェクトを操作するだけで非同期メッセージングをできるようにしたという理解でいいのかな。
Quick "Hello World" Exampleを触ってみる。サーバー側はたったの12行
var html = require('fs').readFileSync(__dirname+'/helloworld.html'); var server = require('http').createServer(function(req, res){ res.end(html); }); server.listen(8080); var nowjs = require("now"); var everyone = nowjs.initialize(server); everyone.now.distributeMessage = function(message){ everyone.now.receiveMessage(this.now.name, message); };
ポイントはこの3行か。
everyone.now.distributeMessage = function(message){ everyone.now.receiveMessage(this.now.name, message); };
Expressとの連携も簡単だそうです
var app = express.createServer(); app.listen(3000); var everyone = require("now").initialize(app);
あとで何か作ってみる
02082011 富士
前回と同様、富士のコミュニティfでやります。
ワイワイとなんか作る場なので、ウェブアプリケーションを作ってもいいし、(みんなに背中を押されて)おもむろにさくらのVPSを契約して環境構築にはげんでもいいです。前回はNode.js度が高かった気がしますが、今回もそんな感じはするので、俺のNode.js作品見せつけに行ってやるぜってのでもみんな喜びます。
近くにはもちろんつけナポリタンのお店が点在してます。
僕はリアルタイムウェブでなんか面白そうなアイデアが見つかればExpress+nowjsで何か作りたいなぁと思っていますが、地道に自分のブログシステムのスマホ対応しているかもしれません。