Scheme修行 11章

JGPによるとjavascriptはCの皮を被ったLispだからLISPの作法にも慣れておくと良いと思うのです。というよりこのシリーズは面白いので読むといいと思います。

ProductName Scheme修行
Daniel P. Friedman and Matthias Felleisen
オーム社 / 2940円 ( 2011-06-15 )


two-in-a-rowっていうリストの中に同じ値が隣あっているかどうかを調べる関数を定義する。

まずは相互再帰

(define two-in-a-row?
  (lambda (lat)
    (cond
     ((null? lat) #f)
     (else
      (is-first-b? (car lat) (cdr lat))))))

(define is-first-b?
  (lambda (a lat)
    (cond
     ((null? lat) #f)
     (else (or (eq? (car lat) a)
           (two-in-a-row? lat))))))

これを直接再帰に書き直す。

(define two-in-a-row-b?
  (lambda (preceeding lat)
    (cond 
     ((null? lat) #f)
     (else (or (eq? (car lat) preceeding)
           (two-in-a-row-b? (car lat)
                (cdr lat)))))))

(define two-in-a-row-2?
  (lambda (lat)
    (cond
     ((null? lat) #f)
     (else (two-in-a-row-b? (car lat)
                (cdr lat))))))

8/20にJGPの読書会@静岡があります。

ProductName JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
Douglas Crockford
オライリージャパン / 1890円 ( 2008-12-22 )


第5回Javascript読書会@静岡市民文化会館

今月は20日開催

  • 日時: 2011年8月20日(土) 13:00~17:00
  • 場所: 静岡市民文化会館・第5会議室
  • URL: http://www.scch.shizuoka-city.or.jp/
  • 地図: http://www.scch.shizuoka-city.or.jp/page019.html
  • 定員: 20名
  • 費用: 1,000円 (学生・未成年無料)
  • 持ち物 : パソコン、課題図書
  • 課題図書: JavaScript: The Good Parts (ISBN-10: 4873113911)※各自事前購入
  • 環境: JavaScriptのコーディング用エディタ及び動作確認用webブラウザ
  • 範囲: 7章
  • 担当: やじゅさん
  • 参加登録

鳳凰美田 NO.14 純米吟醸

鳳凰美田のNo,14瓶燗火入れは当たりだった。メロンのような爽やかな香りと程よい甘酸っぱさ、後味もキレてる。

実家には酒飲みがいないため酒器の類いが存在しない。そのため、湯のみでいい感じのやつを盃の代わりにしてグビグビ飲んでる。

1313147534

”ひとごごち”と”豊盃”を父母に、選抜固定を繰り返して造られた栃木県初の酒米・とちぎ酒14。

鳳凰美田・美田鶴

滝澤酒店で購入。

とちぎ二日目

道の駅与一の郷っていうところで蕎麦食べてきた。ここの蕎麦はなかなか美味いですね。そのあと、隣の物産館にあるジェラート屋でデザートタイム。オレンジチェリーっていう食用ほおずきがおいしかったですな。

1313137508 1313137510

Node.js Rocks!っていうスライドがあった

これはすばらしい、やる気度上がった。

あと、org-modeでHTML5なスライド作れるのか。

他にもスライドが公開されてた。こっちは初心者向けチュートリアルっぽい感じ


shizudevつくる会#2swarmationで協力プレイをしてみたい

とちぎ初日

ちゃんとした酒屋によれなかったので、スーパーで適当に買った。

惣誉のほうはアルコール度数が18度と高めなのでオンザロックが美味いという変わった日本酒だけど、これは好みかも。一方天鷹の生酒はちょっとレトロっぽい感じがしたけど、結局良く飲んでた。

ついでに買ってきた水ナスの漬物をつまみながらクイクイと飲んだ。

1313050091 1313050094

あと適当に。

1313050096 1313050098

ExpressとSocket.IOで作られたドラッグ&ドロップ対応ファイルアップローダ

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つくる会やります。

夏休み三日目

最初の2日はキャンプ。

今日は妻が健康診断のためにこどもの世話をしていたのだけど、自分の仕事は何も出来ずに一日潰れた。恐るべし娘と息子。

お絵描きの練習

娘にペンタブレットとphotoshopの使い方を教えてた。お絵描きが好きなのでこういうのは好きみたいだな。とっとと上達して僕のウェブサービスのロゴとかデザインとかできるようになってくれるとありがたい。

yuki110809_1

yuki110809_2

子供お絵かき板Flickrみたいなのあればいいのにねーと思った。

ProductName Wacom Bamboo Comic CTE-450/W1

ワコム / ?円 ( 2007-11-16 )


自転車特訓

夕方補助輪を外した自転車の練習をした。

昨日お友達に「まだ補助輪つけてるのー?」って言われたのがショックだったらしい(泣きそうになってたし)。で、昨晩寝る前に「明日から補助輪外す!」って言ってたけど本当に外すとは。

少し、一緒に練習すれば走れるようになりそう。

息子とトリコごっこ

16連釘パンチとか言ってひたすらくすぐると喜ぶ。しつこいので泣くまでくすぐり続けておくのが定番だが、息子との仲良し度も高まった。息子と娘は性格が全然違うが、二歳くらいで既に違うなってわかるのはやっぱ遺伝要因なのかなぁとか思う。環境要因ではないよなと。

ProductName トリコ 1 (ジャンプコミックス)
島袋 光年
集英社 / 420円 ( 2008-11-04 )


トリコ面白いけど、HUNTER×HUNTERの連載が再開したのも喜ばしい

ProductName HUNTER×HUNTER 29 (ジャンプコミックス)
冨樫 義博
集英社 / ?円 ( 2011-08-04 )


富士山子どもの国でキャンプ

子どもが生まれてから初めてテントを担いだキャンプですな。二週間くらいに急に思い立ったので、探したほとんどのキャンプ場の予約は埋まってたのだけど、子どもの国のキャンプサイトは数サイト空きがあったので申し込んだ。

キャンプサイトで、テントとタープ貼り終わったのがお昼で、その後に突然の雷雨がきてテントの中で雨宿りしてたら時間を食ってしまった。水の国に行って水遊びをする予定を変更して、アルパカ見たりしてた。

1312793415

娘が乗馬で大喜び。

1312793418

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

1312793420

こどもの国は広くて一泊だと結構慌ただしい。二泊してゆったりするのがいいかも。

pros

  • キャンプサイトが10区画でだいたい埋まっているし、夜中も見まわりしているので安心感がある。
  • キャンプサイトまでちょっと遠いけど、リヤカー貸してくれるので荷物を運ぶのは楽。手軽さで選ぶならパオという手段もある
  • テントサイトは1000円と安い。パオなら4000円(パオは予約が埋まるのが早い)

cons

  • 夏でも夜はかなり寒い。防寒対策必須。
  • こどもの国は広くて結構歩く。

テトラゾールの負電荷はどこにたまるのか?

生物学的等価体として知られているものにカルボン酸とテトラゾールがありますね。

医薬化学において、テトラゾール環はカルボン酸の等価体と見なされ、医薬品の部分構造に汎用されている。これは前述のようにpKaがほぼ等しいため、

Wikipedia

tetrazole

テトラゾールってこんな構造だから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ループでグルグルまわして計算させれば手順がきちんとドキュメントとして残るのでよい。