やるべきこと、やるべき場所

やるべきこと

人には、やるべきことが与えられていると、最近思うようになった。
こういうと大層なことを言っているように聞こえるかもしれないけど、
一つ一つの仕事が社会に影響して、人々の生活が回ってる。

それぞれの仕事には向き不向きがあったり、不満や人間関係があったり、
楽しいことや辛いこともあるけど、仕事を通して影響を与えられるなら、
こんなに楽しいことはない。

自分が満足して、自分らしく生きられて、大きく社会に影響できる環境を、
創れるようにならなきゃダメだなぁと思う。

やるべき場所

たぶん働くべき場所というか、自分がもっと輝く場所っていうのは
人それぞれにちゃんとあって、そのやるべき場所っていうのは答えが無いんだけど、
今いる場所が、自分がいるべき場所か? 自分がやるべきことをやってるのか?
という問いは、定期的に行ったほうがいいかもしれない。

Fig and Rails Env Is Too Heavy, I Found workaround(Mac OSX)

(PS)

I quit use fig so I decieded to develop localhost. because I have no time to construct devenv.
Firstly, this blog was quite good and effective for me.
Sync is working fine, but suddonly, rsync was getting weird.
Additionally, these rsync strategy is faster than sync folder,
but it is definetly slow than localhost.
Localhost is super fast.
And I faced problems as follows. - rails console history or mysql history is gone away when fig restart.
- rails console mysql connection has gone away because of restarting db.
For now, I think fig(docker compose) is not good as development environment.
If you have identical dev env, please message to me.

TL;DR

  • virtual box disk io is not good because of file sync. so turn off.
    http://gyazo.com/f02f61fea1a6f2d306c37d08b6553776
  • use NFS, for sync your directories.

Environment

  • fig 1.0.0
  • boot2docker v1.3.1
  • docker container(rails)
  • docker container(mysql)

Background & Problem

Recently, it is very easy to create development env because fig and docker.
But I was starting development, I noticed it is verrrry slow… It’s so annoying.

Workaround

Turn off /Users directory sync

By default, /Users directory is synced with boot2docker.
This sync is very slow so I turned it off, response speed is up.

Use NFS

I turn off sync, so I have to another method to sync my host’s source code.
I googled, and found this thread .
This thread is quite good for me.

I used this solution because I wanna use fig.

sync.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
!/bin/bash

set -u # prevent unbound variables
set -e # terminate on error

SSH_PORT=$(boot2docker config 2>&1 | awk '/SSHPort/ {print $3}')

# load rsync
boot2docker ssh tce-load -wi rsync

# ensure existance of .rsyncignore
touch .rsyncignore

function sync {
  # sync current directory to ~/share on the vm
  rsync -rlz --exclude-from=.rsyncignore -e "ssh -i $HOME/.ssh/id_boot2docker -p $SSH_PORT" --force --delete ./ docker@localhost:/home/docker/share
  echo "sync: $(date)"
}

sync
#fswatch -o . | xargs -n1 -I{} sync

This script is almost good, but in my case, the last command fswatch is don’t affect.
so I used simple command watch -n 2 sh sync.sh. it works for me.
I wrote .rsyncignore something like below.

.rsyncignore

1
2
tmp/
vendor/

Dockerfile

gem is installed global.

1
2
3
4
5
6
7
FROM ruby
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev ruby-nokogiri vim
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD . /myapp
RUN bundle install

fig.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
db:
  image: mysql:5.6
  ports:
    - "3306:3306"
  environment:
    - MYSQL_ROOT_PASSWORD=hoge
  # volumes:
  #   - ./data:/var/lib/mysql

web:
  build: .
  command: bundle exec rails server --port=3000 --binding=0.0.0.0
  working_dir: /myapp
  dns: localhost
  volumes:
    - /home/docker/share:/myapp
  ports:
    - "3000:3000"
  expose:
    - 3000
  links:
    - db

In db section, volumes isn’t need.
In web section, volumes is attached from boot2docker to web container.

That’s it.

fig

Fig(docker Compose) で Rails する

追記

この内容は古いです、というか fig で建てるところまではコレでイケルと思いますが、実際には自分で fig で開発してないです。
フォルダの同期が以上に重たく、そのせいで rails console や server とかしても実用に耐えられないレベルのパフォーマンスしか出ないからです。
おそらく sync ディレクトリを変える、 rsync で送る、 イイ感じに出来たら pull する仕組みを創るなどすれば、うまくいくとは思いますが、
localhost での開発に慣れている場合、それはただの時間の浪費としか思えないと思います。
現在では開発環境として扱うのは難しいという判断に至りました(当然個人の感想です)。
参考までにrsync の記事も参照されると良いかもです。

メモ

ちなみに、 現在では、 fig は docker-compose になっている。
が、それに気づかず しばらく fig で進めた。

fig で rails は tutorial 通りでは動かなかった。
基本は tutorial にそってやったが、boot2docker 経由でやる場合に、
binding のあたりで、container 内からは呼べるけど、 boot2docker の中から呼べなくて、
その辺を修正した。
ちなみに、 postgresql がサンプルになっていたが、 mysql でやりたかったので適宜変更した。

fig.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
db:
  image: mysql:5.6
  ports:
    - "3306:3306"
  environment:
    - MYSQL_ROOT_PASSWORD=hogehoge

web:
  build: .
  command: bundle exec rails server --port=3000 --binding=0.0.0.0
  volumes:
    - .:/myapp
  ports:
    - "3000:3000"
  links:
    - db

fig run web rake db:create db:migrate

なぜか mysql に繋げなくなるパターンがあったが、
docker images でだした image を docker rmi で全て消してやり直したり、
それでも微妙だったので、 fig run db mysqld とかするといい感じになった。

所感

fig でやれたらよかったと思ったので、ちょっと時間がかかったけど、うまくできそうでよかった(小並感)

楽天カード(e-NAVI)の現地利用額(為替レート)は翌月12日まで照会できない

楽天カード(e-NAVI)の現地利用額(為替レート)は翌月12日まで照会できない

タイトルの通りであるのだが、電話で問い合わせたところ、
システム的に翌月になるまで照会が出来ないとのこと。
もし同じ要求がある人がいたら、翌月12日まで待つしかないので諦めよう。

Mac 開発環境 Setup 2015

新しい mac を手に入れた時にすること

これが非常に良さそう なので、一旦自分用に考えてみる。

気をつけるべきこと

  • 一番最初のセットアップ時に、 firevalut にチェックを入れるかどうか
  • 入れないほうがセキュリティ的にはどうかと思うけど、なんか変なハマり方しなくて良さそう

準備

あらかじめ Brewfile を作っておく

  • brew install rcmdnk/file/brew-file
  • この後使用するコマンドが依存している python ライブラリを入れる必要がある
    – sudo easy_install pip
    – pip install requests
    – brew file init vimtaku/Brewfile
    – あとは手順にしたがってすすめると push とかいろいろやってくれる

手順

xcode のインストール

1
xcode-select —install

homebrew のインストール

1
2
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
brew doctor

Brewfile からインストール

1
2
3
git clone https://github.com/vimtaku/Brewfile.git
cd Brewfile
brew file -f Brewfile install

homesick のインストール

ちょっと違うかも。

1
2
3
4
5
/usr/local/bin/zsh
gem install homesick
rbenv rehash
homesick clone vimtaku/dotfiles
homesick link
mac

GTD テンプレート

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

# Inbox

----
# 行動を起こす必要があるもの

## カレンダー
Google カレンダー参照

## 次に取るべき行動のリスト
### @会社
### @自宅
### @電車
### @暇

## 連絡待ちリスト

## プロジェクトリスト
### プロジェクトA
### プロジェクトB

## プロジェクトの参考情報

----
# 行動を起こす必要がないもの

## ゴミ箱

## 保留
### いつかやる・多分やるリスト

## 資料

----------------------------------------
# GTD の処理方法
1. 収集
-- トリガーリスト
2. 処理
-- ワークフローにしたがって振り分ける
3. 上記の行動を起こす必要があるもの(カレンダー、次に取るべき行動のリスト、連絡待ちリスト、プロジェクトリスト、プロジェクトの参考情報)と行動を起こす必要がないもの(ゴミ箱、保留、資料)
4. レビュー
5. 実行

# プロジェクトプランニング
プランニングについては、考える必要がないもの以外では、以下のとおりに進めると良い。
## 目的と価値観を見極める
## 結果をイメージする
## ブレインストーミング
## 整理
## 会議
## 情報収集
## 次に取るべき行動を判断

# 週次レビューの方法
基本的なレビューは随時行う。週次レビューは週に一度時間をとって行う。  
以下にそのまま項目を引用しておく。
## 雑多な紙類を集める。
## 処理を行う
## カレンダーのチェック(過去)
## カレンダーのチェック(未来)
## 頭のなかにあるものを出す
## プロジェクトリスト及び大きな目標のレビュー
## 「次に取るべき行動リスト」のレビュー
## 連絡待ちリストのレビュー
## プロジェクト候補のチェックリストのレビュー
## いつかやる・多分やるリストのレビュー
## プロジェクトの参考情報
## 創造的、かつ大胆に考える
gtd

GTD の本を読んだ

GTD の本を読んだ

この本

本の内容

大体読んだらわかることなんだが、
- http://w.browndots.net/20131008/task-management/gtd/restarttogtd12/
- http://postd.cc/gtd-in-15-minutes/
この辺によくまとまっているのでそちらを参照してもらうと良いかも。

所感

僕の尊敬するとある人が、GTD やってますと言っていて、それから何年も経つがやってみたいと思ったので、
本を買って読んでみたがとても良さそうに感じた。
頭のなかを一つのシステムに書き出すことによって、それについて考える時間が増えた実感があるし、
やるべきことが可視化されることは非常に良いと思った。あとは週次レビューをどう組み込むかかなぁと思った。

自分の場合どのような方法で実践するか

ツール

vim(qfixhowm のメモ) + dropbox でやる

これについては基本的に markdown で見るのが一番自分らしく、わかりやすいので markdown で管理する。
週次レビューについては、毎週金曜か土曜日に時間をとってやるのが良いと思った。

紙とマインドマップ

基本的には IT の仕事なので紙とマインドマップと vim があれば大丈夫かと。

qfixhowm のメモを dropbox のやつで見た時 iphone から見れるようにするやつ

がほしいのでどっかでつくる。

とりあえずでテンプレート作ってみた

http://vimtaku.github.io/blog/2015/02/18/gtd_template

gtd

金はチケットである

金はチケットである

金はチケットだ。
美味しいものを食べたり、サービスを受けるための交換手段である。
金はあればあるほどよい。より良いサービスを受けられるからだ。
ただ、金がそこにあるだけで幸せなのかというと、たぶんそうじゃあないと思う。

金の入力

金はどこからくるのだろう。
今日食べたご飯や、受けたサービスは、金を使って得られたものだ。
自分の場合、基本的には、金は会社から得られたものである。
会社はなぜ自分に金を払うのだろうか。
それは自分が、会社にサービスを提供した(もしくはするという契約を結んだ)からである。
富を創りだせるからこそ、金を払うのである。

金を手にすることは困難だろうか。
確かにそれは難しいことではある。
ただ、価値を提供できれば、それ相応の金を得られるはずだ。

単純に、金を稼ぐことは楽しい。
サラリーマンをやる上でも、給料が上がらないというのは面白くない。

富を創ること、が、完全に金に結びつくかはわからないが、
富を創ることで、お金をいくらでも得られるのだとかんがえると、
人生はいかに楽しいものかと思う。

現状の金の入力に満足出来ないなら、
自分が価値を提供できていないのだと振り返ることができるはずだ。
価値を生み出せるはずだと信じて、富を創る行動を始めたら良いと思う。

金の出力

金を使うのは簡単だ。
金は使えばすぐに無くなる。
サービスは、その相互の関係において値段が付けられる。

そういう意味で、納得出来ないサービス(買い物)はすべきでない。
そしてまた、納得出来ない価格(給料)でサービス(仕事)すべきでもないはずだ。

金とサービス

単純に、金を使うのは楽しい。
一般的に、良いサービスほどお金がかかる。
そういう意味で、金はチケットだと思う。

いつも行っている美容室で、普段髪を切るのに 3000 円かかるとしよう。
たまたまその美容室が混んでいて、どうしても髪を切りたいあなたが
たまたま入ったおしゃれな美容室は、すぐに髪を切ってくれて、 6000 円だったとしよう。
それでいつもよりクールな髪型になるんだ。

より良いサービスにはお金がかかる。
あなたはより良いサービスを受けたいと思う。
それにはチケットが必要なのだ。
(蛇足ではあるが、普段のサービスを受けるためにもチケットは必要である。)

金と価値感

一度良いサービスを受けてしまうと、元のサービスに戻るのが耐えられないと言うのは真実だと思う。
自分が富を創ることでお金を入力し、自分が良いと思うものにお金を出力する。
すごく自分勝手に聞こえるかもしれないが、日常の支出をメタに書いただけである。

金をどう使うかは、その人の価値観に依存する。
良いサービスを知らない、受ける必要がないなら、お金を稼ぐ必要がない。
断捨離というやつかもしれない。
仏教的に、ただ生かされているんだというロックで生きるならそれで良い。
自分は仏教的な考え方にはある種賛成だけど、それを楽しむなら人生長すぎると思う。
だから現時点では、仏教的考え方もあるなぁと思いつつも、
精一杯富を創る(サービスを提供する)ことに全力を注ぎたい。

自分が金を出力して受けたいサービス

振り返ってみると、基本的に自分が受けたいサービスは、音楽と勉強と食事と服と程よい住まいだ。
より良い音楽を楽しむ方法にはお金をかけてみたいし、
より自分がよく価値を提供できるように勉強(主により良い本をよんだり)したいし、 より美味しいものを食べて(いたい|みたい)し、
自分が着たいと思った服を着たいし、
自分が便利だ!、と感じるところに住みたい。
逆にいうと、ちょっと考えたくらいだったらこんなもんなのかと思う。

富として生み出したい、金以外の価値

金はチケットであればあるほどよいが、富を創ることで金以外に得られるものは、本質的には金より重要だ。
富を創るために時間を使うのは、自分の価値観では、とても有意義なことである。

所感

ふとポエムを書きたくなったので書いた。
ハッカーと画家を読んだせいで、最近のポエム熱がやばい。
おそらくこの文章も富である。
ただこの文章にお金を払う人がいないだけだ。
そういう意味で、文章を書き続ける(ブログ他)ことは、
富を生み出す行為だと思う。

ふとどうでもよいことを思ったが、仏教をロックと割り切るなら、この文章もロックであるはずだ。

さくらvps に CoreOS を入れる

さくらvps に CoreOS を入れる

基本的には http://qiita.com/yujiod/items/dc154120c4df2e938111 に従ってやれば行ける。

ただ、自分は VirtIO を ON にしたせいか、
ネットワークの設定のところで、

1
2
[Match]
Name=ens3

となっているところの ens3 は eth0 にしないと繋がらなかった。
(cloud-config も同様)

所感

英字キーボードを久しぶりに打ったけど慣れてないのでめちゃくちゃ辛かった。
何もはまらなければすぐできるとは思うけど、
普通にダウンロードとか調査とか考えたら1時間くらいかかると思う。

vps

Boot2docker 内に立てた Datomic Transactor + Peer のコンテナに対して、mac の Lein Repl で Datomic を操作する

boot2docker 内に立てた datomic transactor + peer のコンテナに対して、mac の lein repl で datomic を操作する

下準備(docker image の作成)

ここに Datomic の Dockerfile があった
ので、datomic の version は違うが修正したら、使えるだろうと思ってたら、使えた。

最終的な Dockerfile は こちら。 これを元に build する。

1
docker build -t datomicfree .
1
docker exec -ti {container_id} /bin/bash

などとして、デバッグしたりした。

実行環境の説明

MacbookPro -> boot2docker(vagrant) -> docker container
という構成になっている。

docker container 起動

最初、 boot2docker の vagrant の割り当てメモリが小さすぎて、 datomic が立たなかったので、
一度 vm を停止してから、割り当てを変更して

1
docker run -p 4334:4334 -p 4335:4335 -p 4336:4336 -m 512m -t-i datomicfree

などとすることで、うまく起動した。
結局、 port foward は 4334 だけで良いと思ったがそれだけではダメなので注意。

1
2
ssh -L 4334:localhost:4334 -L 4335:localhost:4335 -L 4336:localhost:4336 docker@localhost -p 2022
(password: tcuser)

lein repl

あとは repl から操作するだけ。

1
2
3
(def uri "datomic:free://localhost:4334/test")
(d/create-database uri)
(def conn (d/connect uri))

あとは先ほどの Dockerfile のリンクにもあるので、そちらを参照のこと。

所感

ちょっとハマったけど、これができたのは大きい。