ネクスト・ソサエティ

なにげにドラッカーを読むのは初めてだったりする。経営者が読むもんだと思っていたので。

社会がどう変わるかという話ですね。モチベーション3.0なんかが語っている世界に近いです。

継続的に学習、教育の必要な社会になるのは間違いなく、知識労働者の資本とは知識そのものであり、知識社会と知識経済においては知識が主たる生産手段だと。

知識労働者として生きていくには3つのことを自答する必要がある。

  1. 自分の強みは何か、どのような強みを発揮できるか
  2. 何を期待してもらいたいか、いつまでに結果を出せるか
  3. そのためにはどういう情報が必要か

ProductName ネクスト・ソサエティ ― 歴史が見たことのない未来がはじまる
P・F・ドラッカー
ダイヤモンド社 / 2310円 ( 2002-05-24 )


  • 成熟産業に対する保護は無効
  • 鉄道が生んだ心理的な地理によって人は距離を克服し、eコマースが生んだ心理的な地理によって人は距離をなくす。もはや世界には一つの経済、一つの市場しかない
  • 製造の力では製品を差別しきれない
  • たとえ世界一の研究所を持っていたとしても、業界の景色を変える技術や製品は出てこない、研究所は内側を向いているから
  • 命令や管理の時代は終わった
  • イノベーションとは、市場に追いつくために自分の製品やサービスを自分で変えていくこと
  • 雇用関係は与件であってメンバーは変えられない。したがって、成果をあげるのは指揮者の対人能力
  • 高齢化よりも少子化のほうが問題だ

Javascriptの配列はトリッキーなオブジェクト

JGPを読んでいたら、配列リテラルはオブジェクトリテラルを使って書けると書いてあった。

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


var nums = ['one', 'two', 'three'];

これは

var obj_nums = {'0':'zero', '1':'one', '2':'two'};

ただし配列リテラルの方はArray.prototypeを継承するが、オブジェクトリテラルの場合にはObject.prototypeを継承する。

そこで継承関係をいじれば配列として使えるのかなぁと試してみた(Firebug)。

まずそのままだと

var obj_nums = {'0':'zero', '1':'one', '2':'two'};
console.log(obj_nums.toString()); // [object Object]

var nums = ['zero','one','two'];
console.log(nums.toString()); // zero,one,two

となる。続いて継承をいじってみる

var obj_nums = {'0':'zero', '1':'one', '2':'two'};
obj_nums.__proto__ = Array.prototype;
console.log(obj_nums.toString()); // (an empty string)

empty stringってなんやねんと思ったがlengthプロパティを付けてみる。

var obj_nums = {'0':'zero', '1':'one', '2':'two'};
obj_nums.__proto__ = Array.prototype;
obj_nums.length = 3;
console.log(obj_nums.toString()); // zero,one,two

Arrayリテラルと同じ挙動を示すようになった。内部でなにやってんだろうか?

ただし、オブジェクトを出力するとobj_numsのほうがプロパティが見えるんだよなぁ。これがちょっと気になる。

var obj_nums = {'0':'zero', '1':'one', '2':'two'};
obj_nums.__proto__ = Array.prototype;
obj_nums.length = 3;
console.log(obj_nums);

var nums = ['zero','one','two'];
console.log(nums);

array

というわけで、来週の読書会は配列のあたりをやりますので興味があれば参加すると楽しいと思います。ちなみに杉山フルーツの生ゼリーをおやつに迎える予定にしておりますよ。

もちろん、お昼につけナポを食べるのもありだと思います。

水素を引きぬいてラジカルにする

共有結合先の原子をチェックして冗長なものが出ないようにした。GAMESSのテストも終わったのであとは走らせるだけ。

共有結合先の原子を知るメソッドがなくて、総当りでGetBondを行う。もし結合が形成されてなければNoneが返ってくるのでそれで評価できるらしい。

import openbabel as ob
import sys

def clone(mol):
    obc = ob.OBConversion()
    obc.SetInAndOutFormats("mol", "mol")
    molstring = obc.WriteString(mol)
    new_mol = ob.OBMol()
    obc.ReadString(new_mol, molstring)
    return new_mol

def abs_h(mol):
    radicals = []
    mol.AddHydrogens()
    h_indexs = []
    hetero_indexs = []

    for atom in ob.OBMolAtomIter(mol):
        if atom.GetType() == 'H':
            h_indexs.append(atom.GetIdx())
        else:
            hetero_indexs.append(atom.GetIdx())

    hatoms = []
    non_redundant_hs = []
    for h_index in h_indexs:
        hetero = neighbor(mol, h_index, hetero_indexs)
        if hetero not in hatoms:
            hatoms.append(hetero)
            non_redundant_hs.append(h_index)

    for h_index in non_redundant_hs:
        new_mol = clone(mol)
        new_mol.DeleteAtom(new_mol.GetAtom(h_index))
        new_mol.SetTotalSpinMultiplicity(2)
        new_mol.SetTotalCharge(0)
        radicals.append(new_mol)
    return radicals

def neighbor(mol, index, hetero_indexs):
    q_atom = mol.GetAtom(index)
    for i in hetero_indexs:
        if mol.GetBond(index, i):
            #print "#%d is attached to atom #%d" % (index, i)
            return i

if __name__ == '__main__':
    input = sys.argv[1]

    obc = ob.OBConversion()
    obc.SetInAndOutFormats("smi", "mol")

    mol = ob.OBMol()
    next = obc.ReadString(mol, input)

    radicals = abs_h(mol)
    for r in radicals:
        print obc.WriteString(r)

正社員は危ないという話

65歳まで定年引き上げが議論されてるってことは、僕らの時代には70近くまでいくんじゃないかなぁ。そもそもリタイアメントできるっていう保証があるからサラリーマンに意味があるわけであって、死ぬまで働き続けるのを前提でサラリーマンを選択するってのは超ハイリスクだよなと思う。

この本は、ファクトをつかむにはいいけど、基本的に如何に雇用されるかということに論点をおいているので処方箋としてはいまいちかな。サラリーパーソンとして勝ち残るためにどういう努力が必要かなぁと知りたい場合には読めばなんか得るものはあると思う。

ProductName 正社員は危ない! "リストラなう"を生き抜く方法
尾方 僚
朝日新聞出版 / 1470円 ( 2010-10-07 )


  • 転職マーケットでは、管理職といえども実務経験が重視される
  • 建前では「能力次第で、若い人に仕事を任せる」といいながらも、組織の実態は年功序列を中心にすえた力学で動いている
  • 本来会社に入ることはキャリアのスタート
  • ポジションよりもロールを求めて転職する
  • 今の会社を離れるということについてネガティブなコメントはいっさいしてはいけない
  • 出る杭になる
  • いま辞めさせられても一年はゆとりをもって暮らせるマネーを用意しておく

CH3ラジカルのGAMESSインプット

ROHFで。

!   File created by the GAMESS Input Deck Generator Plugin for Avogadro
 $BASIS GBASIS=STO NGAUSS=3 $END
 $CONTRL SCFTYP=ROHF RUNTYP=OPTIMIZE MULT=2 $END
 $STATPT OPTTOL=0.0001 NSTEP=20 $END

 $DATA 
Title
C1
C     6.0    -1.60293    -0.39674    -0.00000
H     1.0    -0.53293    -0.39674    -0.00000
H     1.0    -1.97337    -0.92091     0.85611
H     1.0    -1.95466    -0.89443    -0.87948
 $END

平面になった。

methyl radical

TODO: pythonのGAMESSラッパーをPyPIに登録する

openbabelで分子のコピーをする

clone的なメソッド用意されてないのね。

この前は、こんな感じでコピーするようにしたけど、

def clone(mol):
   new_mol = ob.OBMol()
   for atom in ob.OBMolAtomIter(mol):
       new_mol.AddAtom(atom)

   for bond in ob.OBMolBondIter(mol):
       new_mol.AddBond(bond)
   return new_mol

適当なフォーマットに書きだして再読込でもいいそうなのでそうした。

def clone(mol):
   obc = ob.OBConversion()
   obc.SetInAndOutFormats("mol", "mol")
   molstring = obc.WriteString(mol)
   new_mol = ob.OBMol()
   obc.ReadString(new_mol,molstring)
   return new_mol

会話がとぎれない話し方のコツはオウム返し

相づちのタイミングと表現、またはオウム返しの大切さのみを説いて200ページ超え。

コーチングの本読むとサラッと書いてあることが多いだけのパートに全てを割いているのである意味すごい。

  • 話し手の気持ちをひとつひとつ丁寧に言葉にすることを心がける
  • 強く伝えたいメッセージがあるときは瞳にピントを合わせる
  • ラジオはテキスト
  • 謝るときには何についてお詫びしているのか明確にする

ちょうど今日、職場のパーティーっぽい催しがあったので上記を心がけて臨んだらなかなか楽しい会話が出来たのでいいねと思った。

一方で、ちょっと変わった人がいて(僕が嫌われてるのかもしれないけど)、向こうから近づいてきたから話しかけたんだけど、あからさまに無視すんのね。なんか昔悪いこといったのかなぁと思ったんだけど心当たりもないし。ただ、あの態度は不快だし反面教師にしとくかと思った。

あと、その席で、職場の上司的だった同僚(先輩という表現がいいのか?)に丸くなったと言われた。一緒に話してた同僚に「なんで?子どもが出来たからか?」とか言われたので、「野菜を育てるようになったからだ」と答えておいた。

というか大学を卒業して以来、丸くなったと言われ続けているので、どんだけ真円に近づいてんのかなぁと思ったが、個人的には真円よりは深淵を極めたい。

本当は怒るとか正論で相手を打ち負かすというのはエネルギーを使うしコスト的にもペイしないというのを学んだのかなぁと思う。それから駄目なやつにダメって言ったところで自分の能力が上がるわけじゃないしなーと。

「馬鹿に向かってバカと言ってなにが悪い!」と思っている方はここらへんの書籍もあわせて読むといいかもしれません。

ProductName 怒らないこと―役立つ初期仏教法話〈1〉 (サンガ新書)
アルボムッレ スマナサーラ
サンガ / 735円 ( 2006-07-18 )


ProductName D・カーネギーの対人力
D・カーネギー協会
創元社 / 1260円 ( 2010-03-06 )


もう一点は、元の上司から、「自分でプロアクティブに動かないと大したコミットメントできないぞ」と言われた。

それはその通りなんだけど、そうだったら、今の上司なんていらないし、現上司に調整力がないとか折衝力が弱いとか言われたくないよ(僕よりもっとないじゃん)と思った。と書いてて、こういう考え方は後ろ向きかなーと思った反面、そうしないと上がっていけない職場の構造ってどうなのかなぁと思った。

まぁ、自分のキャリアを第一に考えるしかないよなぁという無難な結論付けで。

今日の畑(110614)

ナスもシシトウもピーマンも成長が悪い。連作障害かなぁ。ピーマン処分して里芋に変更しようかと悩み中

1308135163

一方、ズッキーニはぐんぐん育っている。

1308135166

グングンといえばモロッコインゲンのデカさに驚いた。双葉の時点で20cm位ある。

1308135171

そして、コンパニオンプランツとしてポット育苗していたマリーゴールドが開花するという不思議。植えるひまがない。

1308135168

RESTfulでお悩み中

Flaskにはjsonifyって関数があるから、いま作ってるサービスをRESTにしようと思ったんだけど細かいところでうまい実装が思いつかなかったり、そもそもきちんと理解してないことも発覚してRESTful Webサービスを読み直している。

ProductName RESTful Webサービス
Leonard Richardson
オライリー・ジャパン / 3990円 ( 2007-12-21 )


とりあえずJSON用のRESTを実装して、クライアントとしてのwebはそっちをアクセスするようにしたほうがいいのかなぁと。

ただ、そうするとURIがぶつかるからJSON用のAPIのほうは/v1/をpathの先頭につけたけど。

あと、FlaskのjsonifyってSqlalchemyの結果をそのまま渡すと駄目で、dictionaryを組み立てて渡さないとあかんのね。これがちょっとめんどくさい

7章のブックマークサービスをRoRで実装する章をFlaskで再実装するという修行をしないとあかんのかなぁ、、、

第4回JavaScript読書会は富士のコミュニティFでやります

ピーク(関数とオブジェクト)は過ぎたので、割と軽めの内容になってると思う。

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