自分をコントロールしないと

心の動き

好きにならないといけないものは、どれだけ頑張っても好きになれなかった。
結局、どっちでも良いけど、何となくやりたくなるものが一番長続きしている。

自分をコントロールするというのはここ三年くらいのテーマだが、
全くと言って良いほどうまく言っていない。

自分というものは抑えつけようとしても、辛いだけでうまく乗りこなさないとならないものかもしれない。

どこから来るのか

自分をコントロールしたいという欲求はどこから来るのか。
根源としては自信の無さがあると思っている、自分をコントロールせず、思いのままに動かすと、
必ず堕落し、まともな人間になることができない。
だからこそ自分で自分を律し、正しい道へと導く必要がある。

大きくはそんなところかと思っている。

ただ、もう自分は自分を律しきれるものではないと思っている、
できることはただただ転ばないように気を配る程度で後はなるようになるしかないのかもしれない。

それは不安だが、すごく楽なことかもしれない。

Microsoft Cognitive Service -

試しに使ってみた

社内ハッカソンで使うかもしれないので、認識精度を確かめるためにデータを入れてみた。

Computer Vision — 画像処理および画像分析 | Microsoft Azure

意外といけるやんですな。

f:id:homahi0128:20171029195504p:plain

本当はAWSAWS Rekognitionを試したかったんだけど、政治的にダメそう。
まぁAzureの方が試しやすいデモページがあるのはありがたい。

Amazon Rekognition (深層学習に基づく画像認識サービス) | AWS

スマホ依存を離れたい

カラーフィルターをオフ

スマホの利用時間をもう少し有意義にしたいと思いつつ、
色々なものをスマホに詰め込んでいるので、ちょっと厳しい。

www.lifehacker.jp

面白そうなので試してみた。

WealthNavi

あとはWealthNaviに45万くらい入れてきた。
半年くらい様子見たけど、悪くなさそうなので。
自分で運用した方がいいよ、という意見はわかるけど、そういう余裕がない人のためのものとしては良いんじゃないかな。

イノベーションのジレンマ

www.slideshare.net

面白かった。特に途中のイノベーションのジレンマの項目は最高にあるある話だった。
うちの会社も意思決定を合理的に進めようという向きが強く、合理的ではない意思決定や不確実性に弱い人が多いなという印象。
自分はあまり厳密にエンジニア的なマインドセットは持ってないなぁ、と思った。
割と物事を確率的にみる向きがある。多分アナログゲームプレイ歴が長い影響な気がする。

確率的な判断は合理的な意思決定と非常に相性が悪い。
成功するし、失敗するかもしれないけど、成功する可能性が高い気がするからやってみたいという考えになる。
そこに対して理論を積み重ねないと合理的な判断をしたい人は取り合ってくれないが、合理的な判断を会議の上にいくらしても別に確率が高くなるわけじゃない。

頭悪いなぁ、と思うんだが、マインドセットの問題と思うと理解できる。

イノベーションのジレンマ - Wikipedia

残念だけど、向いてない

とても残念なことに、今の仕事は多分向いてない。

意見の合意が取られていることが最善の世界とか、無理。
なんで偉いのかよくわかんない人の腑に落ちない意見に左右されるとか、おかしいでしょ。

AnsibleでEC2サーバーを立ててApacheを導入するところまで。

概要

AWS上にEC2サーバーを立て、そこにApacheをインストールするところまで。

事前準備

pythonにboto/boto3を入れる

AnsibleはPythonで動いており、pythonAWSライブラリである。botoを利用してawsにアクセスするため

pip install boto boto3

AWS環境の事前準備

  1. マネジメントコンソールからAWS_SECRET_ACCESS_KEY / AWS_SECERT_ACCESS_KEY を取得して環境変数に設定する。
export AWS_ACCESS_KEY_ID='< マネジメントコンソールで取得したやつ >'
export AWS_SECRET_ACCESS_KEY='< マネジメントコンソールで取得したやつ >'
  1. EC2用のkeypairを作成し、ダウンロードしておく

作成したインスタンスにそのままアクセスできるように。 /.ssh/keypair.pemとして配置しておく。
Ansibleで作成することもできるが今回の本題ではないので省略。

Ansibleの設定

homahi-2:ansible homahi$ tree .
.
├── ansible.cfg
├── aws.retry
├── aws.yml
├── hosts
├── roles
│   ├── apache
│   │   └── tasks
│   │       └── main.yml
│   └── ec2
│       └── tasks
│           └── main.yml
├── site.yml
└── ssh_config

最終的にこんな感じにする。

Ansibleでやること

  1. AWSセキュリティグループを作る
  2. EC2を立てる
  3. Apacheを入れて再起動する

EC2を立てるまでと、Apacheを入れる部分は別のplaybookにした。

AWSの設定

hosts

[localhost]
127.0.0.1

[localhost:vars]
# /usr/bin/pythonというデフォルトパスを通常はみてしまう
ansible_python_interpreter=/Users/homahi/.pyenv/shims/python

ansible_python_interpreterはpyenvなどでデフォルトとpythonのパスが異なる時に必要になる。
これが無いと/usr/bin/pythonとかを見に行ってこける。
ちょっと詰まった。

aws.yml

- hosts: localhost
  connection: local
  gather_facts: no
  roles:
    - role: ec2

roles/ec2/tasks

- name: セキュリティグループを作成
  ec2_group:
    name: Test Security Group
    description: server security group
    region: us-east-1
    rules:
      - proto: tcp
        from_port: 22
        to_port: 22
        cidr_ip: """my_ip"""
      - proto: tcp
        from_port: 80
        to_port: 80
        cidr_ip: """my_ip"""
    rules_egress:
      - proto: all
        from_port: 0
        to_port: 65535
        cidr_ip: 0.0.0.0/0
- name: EC2を作成する
  ec2:
    image: ami-8c1be5f6
    instance_type: t2.micro
    key_name: keypair
    group: Test Security Group
    wait: yes
    wait_timeout: 300
    region: us-east-1
  register: _ec2
- debug: var=_ec2
- name: SSHで接続できるようになるまで待機
  wait_for: port=22 host="{{ item.public_ip }}" timeout=300 state=started
  with_items: "{{_ec2.instances}}"
ansible-playbook aws.yml -i hosts

これで22,80番portのみが自分のサイトに対して開いているEC2が立つ。 本当はdinamic inventoryで動的にIPを取得したいけど、今回は対象外。

Apacheを入れる

site.yml

- hosts: web
  become: yes
  remote_user: ec2-user
  roles:
    - role: apache

hosts(追記)

[web]
webserver

ssh_config

Host webserver
    HostName <<EC2のipアドレス>>
    Port 22
    User ec2-user
    IdentityFile ~/.ssh/keypair.pem

ansible.cfg

[ssh_connection]
control_path = %(directory)s/%%h-%%r
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -F ssh_config
ansible-playbook site.yml -i hosts

正常に動けば、EC2にApacheが入っていることが確認できる。

Macでansibleを使えるようにする

pyenvを入れる

Macには標準でPythonが入っているが、pyenvで環境ごと管理したい

git clone git://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

python2.7を入れる

3系じゃないのは3系だとAWS系のコマンドで使えないものがあったため

pyenv install 2.7.14
pyenv global 2.7.14

Ansibleを入れる

最初pipで入れるかと思ったらhomebrewで入れられたみたい。

brew install ansible
$ ansible --version
ansible 2.4.1.0
  config file = None
  configured module search path = [u'/Users/homahi/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/Cellar/ansible/2.4.1.0/libexec/lib/python2.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.14 (default, Sep 25 2017, 09:53:22) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)]
````