tech::hexagram

personal note for technical issue.

Mac OSXで立ち上げたVagrant内で、dockerのcontainerを立ち上げる時の小技

課題

$ docker run -p 8080:80 --name some_container -it some_env:latest /bin/bash

このように記述すると、containerを立ち上げた後に、開発用のユーザアカウントを用意してSSH接続する想定の場合は、sshdの起動の設定をする必要がある。

2回目以降の起動時に、このcontainerを docker start しようとすると、特定のユーザのアカウントでMac -> vagrant -> dockerとSSH接続するときに不便。

解決策

monit というツールを利用すると、docker start時にsshdを自動で立ち上がるようにすることができる。

Dockerでは、内部で動かせるサービスは1つだけなので、 docker run [options] /bin/bash と指定すると起動時にbashしか立ち上げることが出来ない。

monit は、本来様々なサービスやプロセスの死活監視に利用されているが、 docker から動かすサービスに指定すると各サービスを動かすためのコンテナとして利用することが出来る。

なお、今回使うconatinerは ubuntu/trusty64 を前提として話を進める。

事前準備

monitのインストール

/bin/bashを起動プロセスに指定したsome_container内で、以下を実行してmonitをインストールする。

[docker]
$ sudo apt-get install monit
confの設定

monitインストール後のデフォルトの状態では、監視したいサービスの設定は /etc/monit/conf.d/ 配下を読み込むようになっている。 このため、以下の内容でconfファイルを追加する。

[docker]
$ sudo emacs /etc/monit/conf.d/sshd.conf
---
check process sshd with pidfile /var/run/sshd.pid
  start program = "/etc/init.d/ssh start"
  stop  program = "/etc/init.d/ssh stop"
ここまでの内容をsome_envにcommit

一旦dockerから抜けて、以下をVagrant内で実行する。

[vagrant]
$ docker stop some_container
$ docker commit some_container some_env

containerの立ち上げ

ここまで事前準備が終わったら、一度some_containerを捨てて、起動プロセスにmonit を指定して docker run でcontainerを立ち上げ直す。 -I オプションを付けておかないとバックグラウンドで monit が立ち上がり、docker上でフォアグラウンドで起動しているタスクがなくなってしまうため起動後即終了してしまう点に注意。

[vagrant]
$ docker rm some_container
$ docker run -p 8081:80 --name some_container -it some_env:latest /usr/bin/monit -I -c /etc/monit/monitrc

containerの終了

Mac OSXの電源を落とすときに、このcontainerを落としておかないと、次回以降同じcontainerを立ち上げ直すことができなくなる。 これはvagrant上で docker stop some_container を行わずに電源が落ちると、monitのPIDが残るらしく、以下の様なエラーが出ることがあることが原因の模様。

monit daemon with PID 1 awakened

これを避けるには、Mac OSXの電源を落とすときに必ず docker stop some_container を行うようにすると良い。 ただ毎度手動でやるのは手間であるのと忘れることもあるため、以下で自動化すると楽なのでお勧め。

/Library/StartupItems/配下に自動起動するデーモンを追加する

必要なのは以下の2つのファイル。

  • /Library/StartupItems/SomeDaemon/SomeDaemon : スクリプト本体
  • /Library/StartupItems/SomeDaemon/StartupParameters.plist : スクリプトに関する説明を記述するためのplistファイル

追加方法は以下を参考にすると良さそう。

VagrantのCentOS7の仮想環境はcentos/7のほうが良さそう

centosから公式のimageと思われるboxが5ヶ月前くらいにリリースされたらしく、こちらを利用したらsftpのpathが正しい状態になっていた。

というわけでこの件は解決した!

決算書を読む上で役に立つ13のポイント

最近、会社の先輩から決算書を読む上で役に立つ本を貸していただいた。

この中で、決算書を読む上で役に立つ13のポイントがとても良くまとまってよかったので自分の整理用にまとめておく。

損益計算書

  • (1) 売上、利益は成長しているか?

  • (2) 粗利は高いか?

  • (3) 販管費は多いか?

  • (4) 利益率は良好か?

    • 営業利益率・経常利益率を見る

賃借対照表

  • (5) 現金は多いか?

    • 資産の部 - 実質的な現金として扱うのは、現金及び預金・有価証券・短期貸付金・投資有価証券の合計額
  • (6) 売掛の回収は早いか?

    • 売掛 : 物は売ったけどお金を貰ってない
    • 資産の部 - 売掛金の、売上に占める割合
    • 10%であれば、1年で比較すると36.5日分の売上相当の売掛金しか保有していない
  • (7) 在庫の量は多いか?

    • 資産の部 - 流動資産のうち、商品・製品・原材料・仕掛品・貯蔵品の売上に占める割合
    • 2.5%であれば、1年で比較すると9日分の売上相当の在庫
  • (8) 設備の規模は膨大か?

    • 資産の部 - 有形固定資産の売上に対する割合
  • (9) 株式や債券の保有は多いか?

    • 資産の部 - 固定資産のうち、投資有価証券の資産合計に対する割合
  • (10) 買掛の支払いは早いか?

    • 買掛 : 物は買ったけどお金を払ってない
    • 負債の部 - 内償還の社債の、売上に対する割合
    • 10%であれば、1年で比較すると36.5日分の売上相当の買掛金
  • (11) 借金は多いか?

  • (12) 資本金は多いか?

    • 純資産の部 - 資本金の、利益剰余金に対する割合
  • (13) 利益剰余金は多いか?

    • 純資産の部 - 利益剰余金の、負債・純資産合計に対する割合

最近のジムトレーニングメニュー(2016年1月版)

最近はもっぱらランニングと筋トレ。だいたい以下の順番にこなす。

ランニング

◯立ち漕ぎのエアロバイク

全力で漕ぐ。大体ケイデンス(1分間あたりの回転数)90から100前後、負荷かけるときは110まで上げる。時間はだいたい25~30分くらい、マシンのデフォルト時間制限ギリギリいっぱいまで。普通にロードバイク乗るときは80くらいで回すのが基本だからそれよりはやや激し目。 しばらく前まではトレッドミル(普通のランニングマシン)を30分位ゆっくり走ってたけどそれよりマシンで表示される消費カロリーが高いから最近はエアロバイク中心でやっている。

音楽聴きながらだと大体一瞬で終わる。

筋トレ

以下を、マシンが開いている順番に順不同。

◯腹筋

20回1セット、垂直に上下するセットと斜め方向にひねりを入れるセットを交互にこなして5セットやる。捻りを入れるのは腹回りを絞るため。

◯ダンベル上げ

10kgのダンベルを持って体の横方向に腕を上げるのを10回1セット 10kgのダンベルを持って体の垂直方向に腕を上げるのを10回1セット 8kgのダンベルを持って腕をL字に曲げた状態からまっすぐ上に上げるのを10回1セット

これを左右両方で30回ずつ行う。

◯レッグプレス片足

これを一番時間かけてやっている。ロードバイクで坂耐性を上げるため。最近だと片足50kgくらい。15回1セットで3~4セット。 片足60kgも一度試したけど膝壊しそうだったから今はやってない。

◯上半身捻り

名前良くわからないけど座った状態で上半身を捻るマシンで時計回りと反時計回り合わせて150回くらい。

◯ロウアーバック?(背筋)

正面方向で15回1セットとして2~3セット 体を横に傾けた状態で10回1セットとして2~3セット

そんな感じ。これでだいたい順調に回せるとランニングと筋トレ合わせて1時間ちょっと。 そこからシャワー浴びて着替えて帰ってくると、家を出発してから大体1時間40分位で戻ってこれる。

rubyのeach, mapの違い

すごく初歩的ですが、新年一発目のエントリは去年の積み残しから。

each

[20] pry(main)> def hoge
[20] pry(main)*   (1..10).to_a.each do |i|
[20] pry(main)*     unk = i + 1
[20] pry(main)*   end
[20] pry(main)* end
=> :hoge
[21] pry(main)> ihr = hoge
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

http://ref.xaio.jp/ruby/classes/array/each

eachメソッドは、配列の要素の数だけブロックを繰り返し実行します。繰り返しごとにブロック引数には各要素が順に入ります。戻り値はレシーバ自身です。

レシーバ自身が返るので、いくら中で unk に代入したところで戻り値としては i が返り値になる。

map

[18] pry(main)> def huga
[18] pry(main)*   (1..10).to_a.map do |i|
[18] pry(main)*     unk = i + 1
[18] pry(main)*   end
[18] pry(main)* end
=> :huga
[19] pry(main)> ihr2 = huga
=> [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

http://ref.xaio.jp/ruby/classes/array/map

mapメソッドは、要素の数だけ繰り返しブロックを実行し、ブロックの戻り値を集めた配列を作成して返します。collectメソッドの別名です。

mapはeachとは違い、要素を使ってブロックを実行しブロックの戻り値を集めて返すようになっている。つまり中で定義した unk を集めた配列を作成して返すのでインクリメントされた配列が返り値になる。

今年もよろしくお願いいたします。

2015年技術周りざっくり振り返り

今年は部署が変わり、去年に比べてさらにいろいろな分野に手を出した一年でした。 技術的には

あたりに手を出してきました。来年は以下に取り組んでみたいです。

来年もよろしくお願いいたします。

2015年にはてブした記事振り返り

今年はてブした記事のうち、また見そうな記事について

  • やった
  • 後でやる
  • ネタ

に分けてまとめておく。

やった

cookien.com

  • 参考にしつつレシピ作ってた時期もあった。今はとりあえずほうれん草のおひたしはここからもらったレシピでよく作ってる

www.bunkei-programmer.net

railstutorial.jp

  • 結構古い部分もあるので注意。自分で気づいた部分についてはここにまとめた。

自作ソースコードに、MITライセンスを適用する3つのやり方
www.catch.jp http://deeeet.com/writing/2014/07/31/readme/deeeet.com

kade.hatenablog.com

  • 業務で直面したUIViewの制約。意外とハマる。

d.hatena.ne.jp * iOSで年を使うときは yyyyを使おう

後で確認(優先度高)

www.slideshare.net

  • size classよく分かってない気がするので確認

developer.hatenastaff.com

  • SwiftでAPIClient書くときのtips

http://dbstudy.info/files/20140907/mysql_lock_r2.pdfdbstudy.info

blog.glidenote.com

  • AWSインスタンス立てたり閉じたりするのをvagrant AWSで試していたけどちょっと微妙な感じがしていたので、terraform使ってみたい。あとGCPのインタフェースもありそうなので先取りで触ってみる

sucrose.hatenablog.com

後で確認(優先度低)

Bootstrapで日本語をより美しく表示させることにこだわった無料のテーマ -Honoka
coliss.com

  • ホノカチャーン

paiza.hatenablog.com

  • 基本jQueryおじさんなので…

realm.io

  • アプリ内でDB使うときは

dev.classmethod.jp

  • 今後の動向次第

ネタ

www.ishampoo.jp

  • 大概のシャンプーが駄目な感じ

aoshima-katsuyuki-kabukichou.com

  • 歌舞伎町こわい

www.pakutaso.com

  • ちくてん

d.hatena.ne.jp

  • やりたくないことはやらない主義で仕事してる

qiita.com

  • おもしろバグ

おわりに

来年も良いはてブライフを送っていきたい