読者です 読者をやめる 読者になる 読者になる

桁数の多い数字に慣れる

数字→英語→日本語

数字 英語 日本語
1,000 thousand
10,000 ten thousand
100,000 hundred thousand 十万
1,000,000 million 百万
10,000,000 ten million 千万
100,000,000 hundred million
1,000,000,000 billion 10億

日本語→英語→数字

「じゅうまえん」という言葉を聞いたとき、それがいくつ0が付いた数字なのか想像する事が重要

日本語 英語 数字
thousand 1,000
ten thousand 10,000
十万 hundred thousand 100,000
百万 million 1,000,000
千万 ten million 10,000,000
hundred million 100,000,000
十億 billion 1,000,000,000

ベトナムで働き始めて5ヶ月、やっと睡眠時間が短くなってきた

2015年の6月からベトナム・ホーチミンで働き始めたので、早5ヶ月が経とうとしています。

来た当時のことを振り返って、最初の3ヶ月はやはり疲れました。
最初はベトナム人に受け入れられるのか非常に不安だったことから、常に異常なほどの笑顔を振りまいていた覚えがあります。
業務でのコミュニケーションは一言一言を全力で伝え、
すべてのものが新鮮で、写真を撮りまくって、日本との違いに感心していました。

そんな調子なので毎日の終わりには非常に疲れました。
疲れと、睡眠の長さは比例しました。
毎日9時には寝て、朝は6:30くらいに起きて(9時間睡眠!?)、それでも日中若干疲れて感じることがありました。
たしか3ヶ月目に疲れが溜まって、風邪を引いて体調を崩したことを覚えています。


昨日、12:00に寝て6:00起きで非常に眠かったですが、1日を疲労感無く働けました。
あれ、日本にいたときと同じ6時間睡眠で行けた、慣れてきたのかなと感じました。

睡眠時間短縮で生まれた時間を有効活用したいです。

ベトナムの社員旅行に参加して感じた、ベトナム人の「素直さ」

ベトナム・ホーチミン市にあるオフショア開発ラボが参加する、合同の社員旅行に行ってきました。

行き先はベトナムの中部のダラット。 軽井沢のような冷涼な気候でした。

チームビルディングというアクティビティがありました。
100人以上の参加者で

  • 列を作ってダンス
  • バナナボートに人を乗せて、ボールを網の中に入れたら成功
  • 水風船を二人で投げて、キャッチできたら成功
  • 二人三脚
  • カラフルな豆をお皿に貼り付けて、その美しさを競う

のような運動会のような競技を行いました。

もし日本の会社でこのような会をやったら、

  • 「なんでこんな子供みたいなことをやらされるんだ」
  • 「意味が分からない」

のような意見が出て、しらけて誰も真面目にやらないと思います。

しかしベトナム人の社員の人たちは、全力で参加して、本当に楽しそうに上記のような競技を行っていました。

この姿勢はとても衝撃的でした。

用意された環境・ネタに対して、その裏などを考えず、素直に乗っかって楽しむ。

この気質は、日本人の姿勢と対照的に感じました。

ChefでPHPインストールのrecipeを作る

knife cookbook create php -o site-cookbooks
site-cookbooks
    └── php
        ├── CHANGELOG.md
        ├── README.md
        ├── attributes
        ├── definitions
        ├── files
        │   └── default
        ├── libraries
        ├── metadata.rb
        ├── providers
        ├── recipes
        │   └── default.rb
        ├── resources
        └── templates
            └── default

いろいろできすぎる。 とりあえずまず必要なのはrecipes/default.rbぐらいなので、現時点ではそれだけgit管理に入れておくことにする

recipes/default.rb

#
# Cookbook Name:: php
# Recipe:: default
#
# Copyright 2015, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
execute "remove php packages" do
  user "root"
  command <<-EOL
    yum -y erase php54-*
    yum -y erase php55u-*
    yum -y erase php-*
  EOL
end

execute "install php56-remi" do
  user "root"
  command <<-EOL
    yum -y install --enablerepo=remi,remi-php56 \
    php \
    php-devel \
    php-gd \
    php-intl \
    php-mbstring \
    php-mcrypt \
    php-mysqlnd \
    php-opcache \
    php-pdo \
    php-pecl-apcu \
    php-pecl-xdebug \
    php-pear \
    php-xml
  EOL
end

vagrantのprovisioning機能で、chefのrun listを指定する

(公式ドキュメントに記載あり)
Chef Solo - Provisioning - Vagrant Documentation

vagrant upでchef soloも含めて実行したいとき、chef soloの実行レシピの指定(run list)をvagrantfileに記載できます。

Vagrant.configure(2) do |config|
(略)
  config.vm.provision "chef_solo" do |chef|
      chef.cookbooks_path = "site-cookbooks"
      chef.add_recipe "apache"
      chef.add_recipe "mysql"
  end
end

これで、site-cookbooks配下のapacheレシピとmysqlレシピが実行されます。

        └── site-cookbooks
            ├── apache
            │   ├── CHANGELOG.md
            │   ├── README.md
            │   ├── metadata.rb
            │   ├── recipes
            │   │   └── default.rb
            │   └── templates
            │       └── default
            │           └── httpd.conf.erb
            └── mysql
                ├── CHANGELOG.md
                ├── README.md
                ├── metadata.rb
                └── recipes
                    └── default.rb

vagrantのmount foldersが失敗する(synced_folder機能)

vagrant up後に出るこのエラー

Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

The error output from the last command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device

vagrantのログを見ると、これがこけている

Building the main Guest Additions module[FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)

結論だけ書くと

  • vagrant-vbguest プラグインインストール
  • config.vm.box = "bento/centos-6.7" のboxに変えて出なくなった

qiita.com

Vagrant can't mount shared folder in VirtualBox 4.3.10 · Issue #3341 · mitchellh/vagrant · GitHub

【Chef】サーバー(vagrantの仮想マシン)に直接ログインしてchef-soloを実行する

サーバー(vagrantの仮想マシン)に直接ログインしてchef-soloを実行する

vagrant ssh

vagrant上でchef-soloのインストール

[vagrant@localhost ~]$ curl -L https://www.opscode.com/chef/install.sh | sudo bash
[vagrant@localhost ~]$ chef-solo -v
Chef: 12.5.1

dstatというcookbookを作成

[vagrant@localhost cookbooks]$ sudo knife cookbook create dstat -o /var/chef/cookbooks
WARNING: No knife configuration file found
** Creating cookbook dstat in /var/chef/cookbooks
** Creating README for cookbook: dstat
** Creating CHANGELOG for cookbook: dstat
** Creating metadata for cookbook: dstat

dstatをインストールするレシピ追加

[vagrant@localhost cookbooks]$ sudo vi /var/chef/cookbooks/dstat/recipes/default.rb
#
# Cookbook Name:: dstat
# Recipe:: default
#
# Copyright 2015, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
package "dstat" do
  action :install
end

chef-solo実行(hello, dstatというcookbookを実行)

$ sudo chef-solo -o hello,dstat
[2015-10-10T08:47:10+00:00] WARN: *****************************************
[2015-10-10T08:47:10+00:00] WARN: Did not find config file: /etc/chef/solo.rb, using command line options.
[2015-10-10T08:47:10+00:00] WARN: *****************************************
Starting Chef Client, version 12.5.1
[2015-10-10T08:47:11+00:00] WARN: Run List override has been provided.
[2015-10-10T08:47:11+00:00] WARN: Original Run List: []
[2015-10-10T08:47:11+00:00] WARN: Overridden Run List: [recipe[hello], recipe[dstat]]
Compiling Cookbooks...
Converging 2 resources
Recipe: hello::default
  * log[hello world] action write

Recipe: dstat::default
  * yum_package[dstat] action install
    - install version 0.7.0-2.el6 of package dstat

Running handlers:
Running handlers complete
Chef Client finished, 2/2 resources updated in 05 seconds

結果として、vagrantの仮想マシン上にyumでdstatがインストールされた。

通常は、このようにサーバーにわざわざログインしてchef-solo実行はしない。
knife-soloが、手元で作ったクックブックをリモートのサーバに転送してchef-soloコマンドを実行してくれる。