提案研修のメモ

営業提案の研修行ったら面白かった。

・提案で大事なのは解決策ではなく、クライアントが解決すべき課題をどう捕らえるか

・論点を捕らえることが大事
 論点とは「問い」
 答え(解決策)に目が行きがちだが、「答え」じゃなくて「問い」に目を向ける。

・論点とは問い、つまり、相手が何を気にしているか/何に困っているか
 報告と相談の違いはどちらが「問い」を持っているかの違い
・相手の課題に興味を持つことが大事。

・論点を明確にするというのは、「「何を考えればいいか」を考える」というメタ思考。
 ・「結論からさきにいうと?」という質問にぱっと答えられないのであれば、論点が明確になっていない。

・論点を明確にするには「問い」の形式で設定するのが良い
 ×:明日の朝食について
 ◎:明日の朝はパンを食べるべきか?

・表面的な論点の後ろに隠れた真の論点を見抜け

・論点の順番も重要
 What⇒Why⇒How
 とくに「Why」が重要で抜けやすい。すでにわかっている人にとっては当たり前だが、未知な人には一番の要!
 相手の問題関心を想定して論点をならべる。

・提案型営業の流れ
 1顧客の課題は何か
 2その課題はどう解決するべきか
 3解決策としてこれはどこがすぐれているのか
 4その証拠としての判断事例
 ・1,2がコンサル的な動き。
 ・1でその背景、目的、制約を把握できるか鍵

Windows上にhyperledger/fabricを環境構築する。

Blockchain実装の大本命?であるhyperledger/fabricをローカルで動かしてみます。
fabricはethereumとかより非常に構築がしやすくなっています。

事前準備

まずは以下のソフトを入れましょう。

Goをインストールしたら環境変数に2つ登録します。

名前:GOROOT
 値:C:\Go\

名前:GOPATH
 値:C:\gopath    //任意のフォルダを作成する。

fabricのソースのDL

Gopathのなかにフォルダを作ってからGitCloneする。
src以下のフォルダ名は一致していないと後で困るのでここからはつづりミスをしないようきをつけましょう。

cd %GOPATH%
mkdir src\github.com\hyperledger
cd src\github.com\hyperledger
git config --global core.autocrlf false
git clone https://github.com/hyperledger/fabric.git

VMの起動

cd %GOPATH%\src\github.com\hyperledger\fabric\devenv\
vagrant up

最初にイメージをDLしたりするので20分ぐらいかかる。のんびりまちましょう。
これが終わって起動してきたらprovisionします

vagrant up --provision

これまたまあまあ時間がかかるのでのんびり待ちます。
これで基礎のイメージが出来ました。

処理が終わったら接続します。接続するやり方は以下の記事参照
garapon.hatenablog.com

membersrvcとpeerのDockerfileを作成

DockerFileを作ります。

cd $GOPATH/src/github.com/hyperledger/fabric
make peer-image
make membersrvc-image

出来たら確認する。

$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED              SIZE
hyperledger/fabric-peer        latest              f30c8c516186        6 seconds ago        1.748 GB
hyperledger/fabric-ccenv       latest              bd03a61e190b        About a minute ago   1.738 GB
hyperledger/fabric-src         latest              0b4d156de3a8        About a minute ago   1.721 GB
hyperledger/fabric-baseimage   latest              6abe2f90116a        About a minute ago   1.687 GB
<none>                         <none>              3c19ba8a6065        6 hours ago          1.385 GB
busybox                        latest              2b8fd9751c4c        4 weeks ago          1.093 MB
hyperledger/fabric-baseimage   x86_64-0.0.10       a2392cc113fd        8 weeks ago          1.076 GB

こんな感じで出来ました。

起動

docker-compose -f docker-compose-4-consensus-batch.yml up --force-recreate -d

すると、MemberserviceとPeer4つがあがってきます。

$ docker ps
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS              PORTS                    NAMES
c80799b160e2        hyperledger/fabric-peer         "sh -c 'sleep 5; peer"   5 minutes ago       Up 4 minutes                                 bddtests_vp2_1
46f1ac71efb7        hyperledger/fabric-peer         "sh -c 'sleep 5; peer"   5 minutes ago       Up 5 minutes                                 bddtests_vp1_1
91c702ef6377        hyperledger/fabric-peer         "sh -c 'sleep 5; peer"   5 minutes ago       Up 5 minutes                                 bddtests_vp3_1
94ad8ce46101        hyperledger/fabric-peer         "sh -c 'sleep 5; peer"   5 minutes ago       Up 5 minutes        0.0.0.0:5000->5000/tcp   bddtests_vp0_1
1d32f4eed13f        hyperledger/fabric-membersrvc   "membersrvc"             5 minutes ago       Up 5 minutes                                 bddtests_membersrvc0_1

こんなかんじで、あがってくるので以下のようなポートにJSON投げまくればOK。

http://127.0.0.1:5000/chaincode 

Logを見たいときは以下

docker logs -f bddtests_vp0_1

明日はチェインコードのはデプロイをしてみます。

Vagrantで起動したマシンにTeraTermマクロで自動接続する

Vagrantでマシンを起動するとログインが秘密鍵認証になります。
自動化しないとマクロでばーーんとかいうのが出来ないので自動化しましょう。

対象のVagrantの接続情報を確認する

Vagrant upをしたディレクトリでvagrant ssh-configコマンドをたたくと以下のような接続情報がわかります。

>vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/garapon/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

この中のHostName、Port、IdentityFileを使います。

マクロを作る

以下の内容をvagrantlogin.ttlとかそんな名前で保存してダブルクリック。
HostName、Port、IdentityFileはさっきのコマンドの内容で修正します。

; Vagrant 接続

;; 設定
hostname = '127.0.0.1'
port = '2222'
keyfile = 'C:/garapon/.vagrant/machines/default/virtualbox/private_key'
 
;; 接続
msg = hostname
strconcat msg ':'
strconcat msg port
strconcat msg ' /ssh /auth=publickey /user=vagrant /keyfile='
strconcat msg keyfile
 
connect msg

これで出来たー。

Vagrantで作成したVMに「Authentication failure. Retrying」でつながらない場合の対処

こーんな感じでつながらなくなった時の対処

    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Authentication failure. Retrying...
    default: Warning: Authentication failure. Retrying...

原因は秘密鍵と公開鍵があわなくなっているから。
なので再生成すればよい。

vagrant ssh-config
...
  IdentityFile C:\Users\garapon\.vagrant.d\vagrant_private_key

秘密鍵の場所を調べて、それをもとに公開鍵を作成

ssh-keygen -yf C:\Users\garapon\.vagrant.d\vagrant_private_key > public_key

これで作った鍵をサーバー上の
/home/vagrant/.ssh/authorized_keys
に追記でOK.

Flexeraaxで作られたインストーラが「Windows DLL failed to load」とかで落ちる

Flexeraaxで作られたインストーラがこんなえらーでおたらJava7で実行しましょう

Flexeraax2$aaa: Windows DLL failed to load
	at Flexeraax2.af(Unknown Source)
	at Flexeraax2.aa(Unknown Source)
	at com.zerog.ia.installer.LifeCycleManager.init(Unknown Source)
	at com.zerog.ia.installer.LifeCycleManager.executeApplication(Unknown Source)
	at com.zerog.ia.installer.Main.main(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.zerog.lax.LAX.launch(Unknown Source)
	at com.zerog.lax.LAX.main(Unknown Source)

LAX_VMパラメータでjava.exeをしていしてあげるとよい。

>ibm-4.4.7.0-node-v4.4.7-win-x64.exe LAX_VM "C:\work\pleiades_\pleiades\java\7\bin\java.exe"

こんな感じでハッピー

Outlookの会議出席依頼の承認メールを仕分けする。

OutLookの会議承認の返信メールがやたら飛んできてめんどくさい。
でもあて先とかでは仕分けできなくてこまっていたらやり方が本家サイトにかいてあった。

ルールのおすすめ設定 | Outlook 研究所

会議出席依頼

    [ツール]-[仕分けルールと通知] をクリックします。
    [新しい仕分けルール] をクリックします。
    [受信メール用に独自の仕分けルールを作成する] を選択し、[次へ] をクリックします。
    ステップ 1 で [会議出席依頼または会議の更新である場合] をオンにし、[次へ] をクリックします。
    ステップ 1 で [仕分けルールの処理を中止する] をオンにし、[完了] をクリックします。

あたりまえの設定なのか。。。