見やすさアップ。gendosu.jpのデザインを修正しました

実は、一つまえのgendosu.jpは、全体的に字が大きくて

お年寄り向けになっていた(おい!!)気がしたので

今回思い切って新しいデザインに変えてみました。

old-site

こんな感じから…….

new-site

こんな感じへ。

アイキャッチ画像も出るようにしました。

そして、なんかヘッダ周辺、最近っぽくないですか??

個人的にはなんか良い感じになったと思います。

検索もボタンが付いてわかりやすい。

レスポンシブなので、スマホで見てもタブレットで見ても

それらしく表示されます。

これでアクセスがアップ!

となれば良いのですが。

 

 

 

 

 

 

 

ま、ただのテーマ変えですが。。

開発サイクルをブースト!するかもしれない。Dokku触ってみた(初期編)

開発環境って、一度作るとあとはそれほどいじらないのでいいんですが

適当に作ったけど適当に社内で公開したい場合にお気軽にデプロイしたい。

Capistrano使ったりするのもいいんだけど…。

それに、小さめのツール類が多いんだけど、毎回nginx立ててポート変えてとかconfでゴニョゴニョして公開するの、面倒。

サクッとデプロイしたら即公開みたいな環境ないかなー。herokuみたいな。

と思って探したらdokkuというのがあったので、触ってみました。

dokkuとは


OSSのherokuライクなPaaS実装。
dokkuを入れたサーバに対してgitでプッシュするだけでデプロイ完了します。
バックエンド(MySQLとかRedisとか)はプラグインで対応。

公式

https://github.com/dokku/dokku

調査


まずは手元で動作確認。

vagrantを使っての動作確認をしていきます。

まず、何も入っていないvagrantのvmを起動します。

バージョン違いで動かないのは嫌なので、公式通りUbuntu14使います。

調査用Vagrantfile
https://github.com/gendosu/vagrant-dokku

以下のdokkuのインストールをvagrantのprovisionに入れてあるので、自分で手順を試す場合は

としてください。

しばらく待つと起動する。

起動したらvmにログインします。

続いて、dokkuのインストール。

公式にある通りにコマンドを入れます。
https://github.com/dokku/dokku

で初期設定画面が待機しているので、開いてこれが完了すると、

http://[dokkuを入れたサーバのIP]/

id_rsa.pubのキーとドメイン名を設定して初期設定します。
初期設定画面で入れるドメインは、とりあえず触る程度であれば
ドメイン名にIPを含ませて叩くと常にそのIPを返してくれるという
xip.ioというサービスがあるので、これを使います。
もしdokkuを本番に組み込むようなことがある場合、自分でワイルドカードドメインを設定する必要があると思います。
ということで、vagrantで起動したvmのIPを使ってドメイン名を作ります。
dokku.172.28.128.5.xip.io

dokku-domain-setting

こんな感じになるかと思います。
Finish Setupボタンを押すと、設定が完了します。
続いて、ローカルのマシンの方にdokkuのクライアントを入れていきます。
多分公式のshellでやるのが手っ取り早いので、そのままコマンド実行します。

ローカルに適当にテスト用のrailsプロジェクトを作ってデプロイしてみましょう。これでローカルのマシンでdokkuコマンドが使えるようになりました。

今回は本当にとりあえずなので、公式サイトの
Deploying an Application
からサンプルリポジトリを使ってデプロイします。

サーバに入って、postgreSQLのプラグインを入れておきます。

再びローカルで、postgresqlサービスを作成して、アプリにリンクさせておきます。

デプロイはherokuとほとんど一緒です。これで、デプロイ準備は整いました。

でdokku

が追加されていると思います。(dokku apps:createで作成される)
このリポジトリに対してpushするだけでアプリがデプロイ出来ます。

早速デプロイされたアプリにアクセスしてみます。
http://ruby-rails-sample. dokku.192.168.1.1.xip.io
以上です。

感想


heroku cloneそのままという印象。
裏でdockerが動いているが、ほぼ意識しなくて良い。
dokkuはスタンドアローンな仕組みなので、スケールさせるサービスには向かないと思います。
社内で適当にサイトを立ち上げてプレビューするとか
外部公開でも絶対にアクセスが増えないとか
ローカルだけどherokuみたいに気軽にデプロイしてサーバで動いているのを確認したいとか
そーいう用途向きのプロダクトに感じました。
スケールさせることが前提なのであれば
deisやflynnといったプロダクトを使ってみるのがいいかもしれません。
最近だとDocker社がApache Auroraを手中に収めてたりするので
DockerでいくのであればApache Mesosあたりを試してみるのもいいかもしれません。

参考サイト


gitにExcelファイルあげちゃった。そして差分も見たいです。

gitにExcelファイルあげちゃった。そして差分も見たいです。

エンジニア以外にもgithubを使い出しているところが増えつつありますが、

このような要望が少なくありません。

エンジニアとしては、それはExcelがちょっと・・・という感じかもしれませんが

非エンジニアとしてはExcelが自分の仕事の表現手段、というか

やはり操作感は他のツールとは別格かと思います。

そこにエンジニア目線で別のツールを押しつけるのもどうかと思ったりもします。

※別のツールを提供した方が効率が上がるケースももちろんあるので、その場合は提供した方が良いです。

ということで、Excelファイルをgitにあげて管理したい、しかも差分も見たいと言った場合

gitの設定を少しいじると雑ですが差分が出るようにはなります。

macの場合

前提条件

GOでコンパイル出来る環境

使用するもの

https://github.com/tokuhirom/git-xlsx-textconv

インストール

~/.gitconfig

を開きます。

git cloneしたリポジトリの直下に

.gitattributeファイルを作成します。

を追記します。

これでxlsxの結果が比較できるようになりました。

row追加

row削除

シート名変更

GOがコンパイル出来ない環境、Windows環境の場合のは、後日

Yahooボックスの無制限プランから移行されたプランがよい

以前、Yahooボックスで無制限プランが存在した頃、加入したのは良いけど色々不具合がたえなく、いくつかファイルも失い、今に至る訳ですが、無制限プランが終了するというタイミングで、プランに加入しているユーザー限定ではありますが、

yahooboxplan

という感じに

基本プランの容量が1.5TBに拡張されておりました。

今の所、基本プランの容量拡張プランが

Screenshot_20151217-191230

という価格設定なので、旧無制限プランの1.5TB追加は歪んだ状態と言えそうです。

おそらく、将来のどこかでOneDriveのようにプランの整理をするタイミングが来る気がします。

ですが、一時的にでも使えるのであれば使って行きたいと思っています。

Atomで特定のディレクトリの中でファイルを検索する時に使えるTips

Atom Editorで、プロジェクト内のファイルが多すぎてキーワード検索をかけると結果が多すぎて、そこからさらに検索かけたくなったりします。
そんな時に、例えばこのディレクトリは除外したい or このディレクトリ内だけ検索したい、なんて感じで条件が指定出来れば随分絞り込めると思います。

やり方は、
FindメニューのFind Project
普段、検索する時は

find

こんな感じで検索画面が開くと思います。
この3段目、検索する場所を絞る設定になっています。
例えば、
lib配下だけを検索したい場合には
ここに

と入れれば良い訳です。
もし、複数の場所から検索したい場合は

とすれば、libとappとpublicのディレクトリから検索出来ます。
さらに、例えばpublicの下に無駄に大きいassetsのautocompile結果が同時に格納されていたとして
その下は検索したくない、なんていう時は

とすれば、public/assets配下は無視されるようになります。
応用で、gitでsubmoduleを多用している場合、.git配下も検索対象になってしまいますが

としておくだけで、.git配下は無視するようになります。

では!

おまけ
grepで同様に絞り込んだりするのは

という感じでしょうか。

それでは!

Dockerを使っていく上で避けて通れないChef,ansibleとの付き合い方

こんにちは。

最近はローカルの開発環境も、ほとんどDockerに移行した感じです。

そこで、本番も見据えたDockerという事で気になることの一つ

構成管理ツール
chef、ansibleなどなどとの兼ね合い、どうするかな?

と言ったところ考えてみようと思います。

Dockerはコンテナ作成・管理ツールという性質上、コンテナ内部のパッケージやアプリの配備などをDockerfileで行う仕組みになっています。

ということは、端的に言ってしまうとchef、ansibleなどがなくてもコンテナを作れてしまいます。

わざわざDockerで作ったコンテナに対してchefを流して環境を作る、とか意味がありません。

では、Dockerfileの中でChefを呼ぶのはありか?という所ですが

個人的にはこれもあまり嬉しくないなと思います。

Dockerfileを見るだけで、そのコンテナがどんな環境になるのか、というのが一発でわかるようにしたいです。

また、構成管理ではないですが、Dockerでシェル叩いていたり、起動する単一プロセスに構成設定のシェルを指定しているDockerfileが割と多かったりしますが、これも実際何しているのか?というのをシェル見ないと分からなくなってしまうので避けるようにしています。

では、全く使わないのか?

と言われると、NOで

Dockerをそもそも動かすホストマシン側の構成管理については

Chef、ansibleが使える物と思っています。

最低限、Dockerが動かせる環境をChefで構築する

docker engine
docker machine
docker compose
docker swarm

あたりのインストールを自動化しとくのが良いと思います。

そうすることで、ホストマシンが自前だろうがAWSだろうがIDCFだろうがさくらだろうが

さらにOSがUbuntuでもCentOSでも、ホストマシンを自動で構築することも可能になってきます。

所定のdocker engineさえ入っていればコンテナが動くわけです。

なお、docker-machineを使う場合、docker-machineが対応しているクラウドサービスの場合は構成管理しなくても良い位手軽に起動する事が出来たりします。
これは、docker-machineのcreateで作成されるホストには、docker-machineが自動で上記のモジュール類を入れて環境設定してしまうためです。

Dockerを本気で使っている方々には当然の内容ではありますが、以上、一つの考え方として参考にしていただけたらと思います。

Yahoo Box ディスクトップアプリが終了か(XP以前のWindowsで使えなくなるそうです)

先ほど、以下のようなメッセージ(本当はアラートだけど、目を疑いすぎてアラートが消えてログ漁った)が出てきた。

yahoobox

Yahooボックス ディスクトップアプリも終了か!!と焦ったものの、XP以前の環境で使えなくなるという事らしい。

いや、本当に焦った。

関連サイト:

Windows XP以前の基本ソフト(OS)をご利用のお客様へ

 

OneDriveの容量無制限撤廃について思うこと

以前、Office 365 SoloでOneDriveの容量が無制限に向っている

という内容で紹介したが、日本では正式に対応する(してなかったと思う)前に無制限が撤廃されることになった。すくなくとも、容量追加の申請画面へのリンクはなかったように思う。

関連記事:

OneDrive、容量無制限の提供終了、無料プランも15GBから5GBに縮小

OneDriveの容量削減はオンラインストレージの死につながるか? – 阿久津良和のWindows Weekly Report

Yahoo Boxも容量無制限プランを廃止しており、やはり無制限というのは、無理がある物なのであろう。

簡単に考えても

Office365soloの場合、月額およそ1000円相当で、ストレージが無制限に使えるなんて、利益になる気はしない。

とは思いつつも、Microsoftなら出来るという淡い期待はあった。今回の件で、改めて無制限は難しいというのが理解させられたように思う。

関連記事にあるとおり、自分も今までの撮影した写真や動画といったものは、今一度NASに入れようと思っている。一度NASのディスクが逝かれて、呆然とした過去があるので、今回はRAIDを組もうと考えている。

今のストレージ事情なら、3TBのHDDが1万円を切る値段で買えるので、Windowsの記憶域でパリティ(HDD3台で構成)にすればそこそこでかいストレージが完成する。

関連記事:

第14回 ディスクを仮想化する記憶域プール機能

ベンチャー・中小企業における開発チームのあり方

どうも、GENDOSUです。

今回は今までの経験から、少しだけベンチャー・中小企業における開発チームについて思った事などを書きます。

ベンチャー・中小企業における開発チームで重要な事は

  • 短期間で動くものを作る必要がある
  • リーダー(CEO)の想像するものを理解し、形に出来る必要がある
  • 時には体力勝負
  • 開発メンバーは他のメンバーを信頼することが必要

まず
「短期間で動くものを作る必要がある」については、ベンチャーに限らずサービスを作っていく上で、競合よりも遅れてリリーする事は、その分野での先行優位性を失う事にほかならない。

「リーダー(CEO)の想像するものを理解・共感し、形に出来る必要がある」
これはメンバーがそれぞれCEOの考える未来を理解・共感できていなければ、少しの認識のずれから思いがけない意志の断絶が起きる可能性がある。

「時には体力勝負」
差し迫った締め切りを守れるかどうかという時には体力(気力)が重要になってくる。

「開発メンバーは他のメンバーを信頼することが必要」
ベンチャーは小規模から始める事が多く、その少ないメンバーの中で信頼できないメンバーがいる事はチーム崩壊を招く恐れがある。
また、メンバーとしては優秀であるが、人を信頼できないメンバーも同様のリスクがある。
すべての業務を自分が把握しなければいけないと思っている(各メンバーが皆そうであることが理想ではある)人が
他のメンバーを信頼できないことにより、タスクを抱え込んでしまい業務が集中し潰れてしまう事があるためだ。
さらには、信頼されないという事で他のメンバーのモチベーションが下がるという事も起こり得る。

これらはベンチャーの開発チームを立ち上げ・維持する上で重要な事柄であり、採用時には採用側・応募者側のそれぞれがお互いを見定めなければいけない。

採用側の視点で見ると、他のメンバーと技術レベルが近いか、その会社の雰囲気に合うか、人として問題ないか、プロダクトに共感しているか、将来像が想像できるか、などに比重を置く。
対して、応募者側としては、この会社のプロダクトに共感でき、10年後20年後まで自分が働いていけそうか(倒産するかしないか?という意味ではなく)、面接官だけではなくて、出来るだけ一緒に働く事になるメンバーとの接点を設けてもらう。その上でチームに馴染めそうかを確認する。
出来たら、数日実際の作業をしてもらいつつお互いが納得した上で採用が決まる事が望ましい。

という事を個人的意見として述べてみました。

次回、「ベンチャー・中小企業における開発チームの維持」

Mithril.js でちょっとはまった(いや、かなり)

Mithril.jsを始めてみて、早速というか、すごく初歩的な事かもしれないけど

バーチャルDOMという事での罠にはまりました。

バーチャルDOMはバーチャルな訳ですよ。

バーチャル

ということは、実際にリアルにはそこに無いわけで

何を言っているかわからないと思うが

もう少し具体例を出すと

Mithril.jsで動的にul・liのリスト構造を表示させる。

このul・liの各アイテムは、ドラッグ&ドロップ出来るようにする。

ドラッグ&ドロップは、sortable.jsという感じの別のjsライブラリを使う。

といった感じでリストを出力したいと思います。

このリストをドラッグ&ドロップにしたいときに、最初は上記のように

m.mountの行の下に置いてみました。

この場合、たまに動くけど、たまに動かないといった微妙な挙動になり、結構悩みました。

で、よくよく考えたら、m.mountをした時点でバーチャルがギリギリリアルになっていないのではないか?

という事でした。

たぶんこれはビンゴで、実際どのように解決したのかというと

mというメソッドの第2パラメータにconfigアトリビュートを追加します。

configというのは、リアルDOMの描画が終わった後に処理をさせたい内容を定義できる特殊なアトリビュートという事のようです。

先ほどのコードを、このような形に修正することで、

$(‘#sortedList’)が実際に描画された後に、sortableLoadというメソッドが呼び出されるようになります。

めでたし!

Mithril.js 始めました

Mithril.js はじめました。

https://lhorie.github.io/mithril/

今回、社内で使う管理画面の一部に、動的な制御入れたいな~という要望があり

その要望に対して自前で作ると

データの流れとかを考えたときにかなりややこしくなりそうだなと思い

それならクライアントサイドのjavascriptフレームワークを使おう、という事で

React.jsとMithril.jsで比較検討しました。

比較内容としては、他のサイトでも出ていると思うので、それはググっていただくとして

今回自分がMithril.jsを選んだ理由

それは学習コストが低い!

これにつきると思います。

どう低いのか?というと

mithril-doc

覚えるメソッドがこれだけです。

サンプルコードそのままですが

これだけで、bodyに動的にレンダリングしてくれます。

m.componentの書き方とか、非同期でリクエスト取りに行ったりするであるとか

書き方として覚えなければいけない部分はありますが、それでも

他のフレームワークと比べて簡単に導入できました。

次回以降、使ってみた感想というか、はまった場所、解決方法etcなどを順次上げていけたらと思います。

VMware Workstation Player(旧VMware Player)リリースされてた

VMware Workstation Player (旧称 Player Pro)
https://www.vmware.com/jp/products/player/

リリースノート
https://pubs.vmware.com/Release_Notes/en/workstation/12player/player-12-release-notes.html

一番大きな変更内容は

  • Run Windows 10 as a virtual machine
  • Run Windows 10 as a host operating system

あたりかな。

その他、新たにサポートされるOS(バージョン)

  • Ubuntu 15.04
  • Fedora 22
  • CentOS 7.1
  • RHEL 7.1
  • Oracle Linux 7.1

サポートされるグラフィックス

  • DirectX 10
  • OpenGL 3.3

 

 

Windows 10 まだまだ荒削りな所がある

先週あたりからWindows10をVAIO Proに入れて運用しています。

ちょっと前にVPN接続を作ろうとしたら対象のデバイスがないと言われ、Windows8にもどし、VPN接続を作ったとたん、勝手にまたWindows Update経由でWindows10が入ってしまったので、まぁいいかと。

で、一応VPN接続はWindows8で作ったものが引き継がれたようです。

それ以外にも

setting

といった感じに設定などで不具合がちょいちょい出てきたりします。

PCの細かな設定とか得意ではない人や、安定して使いたい方はまだWindows8の方が無難かな?

 

Dockerをmacで使うのが簡単になった

ここ最近のDockerの進化が早くて日々楽しいです。

で、つい先日、macでDockerを使うのが簡単になるツールが出ました。

Docker Toolbox
docker_mac

これは、Dockerを使う上で必要なツールをまとめたインストーラになっています。

toolbox

 

VirtualBoxも同時にインストールされます。

すでに入っていれば、上記のようにグレイアウトになります。

これは、以前Boot2Dockerで使われていたインストーラと同じ物のような感じで

それに加えて

Docker Machine
Docker Compose
QuickStart Terminal
kitematic

が同梱された物、という感じでしょうか。

正式にBoot2DockerからDocker toolboxへ移行する為の動きのようです。

厳密には、Boot2Dockerの後継としてDocker Machineが出来た。

※注意
このインストーラで入るツールはほぼベータ版になります。

ベータ版のため、docker clientのオプション「–valume(-v)」、ホストディレクトリとDocker内でファイルを共有する為のオプションがワーニングを出すようになります。

これは、近い将来

Docker volumeが実装された時の為のワーニングになりますが、現在はまだDocker volumeは実装されておりません。

https://github.com/docker/docker/pull/14242

これで、今までボリューム用の空コンテナを作ってそれを-vでマウントして使って、みたいな面倒な事をやっていたのが、これである程度解消される物と思われます。

Yahoo ボックスの容量無制限プラン、やはりだめだった件

Yahooボックスの容量無制限プラン

以前記事にも書いたが、どうも挙動がおかしかったりしており

改善されない状態が続いていた。

先月か先々月あたりには、一度、マイボックスという

容量制限がある領域へ、容量無制限の領域からファイルを移動した(本当に移動で、容量無制限容量無制限の領域からは消えていた)ファイルが全部復活してしまい

どれが移動したものか、ぱっと見わからなくなり

もうあきれ果てて仕方ないので、つい最近まで見ないようにしていた。

※その間も月額はかかっている

で、久しぶりにのぞいてみたら

容量無制限オプションサービス終了のお知らせ
http://info.box.yahoo.co.jp/notice/importance/2015070101.html

という、やはり!!

という感じの展開になっておった。

これはもう9月まで無駄金を払い、そのまま1.5Gbの容量制限プランへ移行するという手しかなさそうだ。

まぁ移動したかしていないかは、マイボックスにあるということで、全部ローカルに同期させて

そこでごにょごにょ出来ると思うので、悪くはないか。

もう9月といわず今すぐ移動したいところだ。

容量無制限とは、蟻地獄であった。。

そこから抜け出せる方法が提示されたので良しとするか。

 

VAIO ProをWindows10にしたらVAIO TV With nasneで動画の右側が表示されなくなった

もうタイトルのまんまの現象ですが

ノイズが出て右側だけまともに見れない状態になってしまいました。

nasne(ナスネ)™ 関連PCアプリケーションのWindows 10 対応状況のお知らせ
http://www.sony.jp/software/store/info/20150803.html

をみると、

対応するグラフィックスドライバー、オーディオドライバーをインストールする必要があります。
各ドライバーのWindows 10対応状況については、お使いのコンピューター(グラフィックス、サウンドデバイス)のサポート状況をご確認ください。

とあり、なんとも心配になっておりました。

ところが、どうもバッテリー動作の時は問題なかったりしたりするので

何かの設定でおかしくなっているのか???

ということになり色々と調べていると、動画に影響がありそうな設定を発見。

vaio_config

X-Reality for mobile

鮮明に動画を表示するエンジンの設定のようです。

上記はすでにOFFにしておりますが

これをOFFにする事で、無事VAIO TV with nasneで録画したビデオを再生できるようになりました。

良かった。

ローカルで環境ごとの仮想マシンを起動してるときにWARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!が出る場合の対処方法

というのは、SSHログインするときに
「SSH host key」というのを、確認してて
以前known_hostsに登録したものと違う場合に出すメッセージで
普段はほとんど出ないはずですが
仮想マシンで同じIPで別の仮想マシンを起動してたりすると
良く出ます。

たとえば、localhost:2200で仮想マシン1にSSHする時に

と聞かれて、yesとすることで

known_listsに仮想マシン1のHost Keyが登録されます。

この状態で
仮想マシン1を落として
仮想マシン2を再度localhost:2200で起動させた場合に

上記のワーニングが出ます。
これがめんどくさいので
localhostへのssh接続の場合は、このワーニングを出ないようにしたいと思います。

で、以下を追記

これでワーニングが出なくなります。

rundll32がCPUリソースを食いつぶしている件

Windows 8 & WIndows 8.1で(Windows 7もかな?)、
自分で重い動画を見ているわけでもない、ただ放置しているだけなのに
どうも重い、ファンが激しく回り続ける
でも、特にウィルスチェッカーが走っているわけでも無く原因が分からない。
そんなときは、タスクマネージャーを見てみましょう。

今回はタスクマネージャを見たときに
CPUの使用率が高い物の中にrundll32という物が居たときに有効かもしれない解決法を書いてみます。

ここで、タスクマネージャの見方をおさらい。
まずは、タスクバー(画面の一番下のバーですね)ここで、右クリック。

taskmanageropen

こんな感じのが出るので、タスクマネージャを開きます。

最初開くと、こんな感じになるかと思います。

taskmanager

下の詳細を押すと詳細な表示が出るので、押してみます。

プロセスというタブを選択すると、ほかにも色々と起動しているのが分かると思います。
CPUというところ、数値が常に20%とかになってませんか?
なっている場合、CPUという所をクリックすると
CPUの使用率順でプロセスをソートできるので
押してみましょう。
さて、頻繁に上に出てくる物がもしrundll32だったら、以下の対策が有効かもしれません。

で、なぜ20%?
最近のパソコンはCPU自体は一つだけれども、コア数が2とか4とか8とかになっているわけです。
なので、タスクマネージャで見たときもCPUの使用率は20%とか50%とかになっていたりします。
たとえ20%でも、一つのコアを占領してプログラムが稼働しているので
やはり少し重く感じたりという事はあるかと思います。

ということで、手順。

まずは
CPUという列の名前の所を右クリックして
コマンドラインというのを選びます。

showcommandline

そうする事で、そのプロセスがどのように(何に)呼び出されているのかが見えます。

今回はrundll32についてなので、rundll32のコマンドラインを見てみます。

appraiser.dll DoScheduledTelemetryRun

という感じの文字が入っていたらほぼ確定です。

「カスタマーエクスペリエンス向上プログラム」

です。

関連:カスタマー エクスペリエンス向上プログラム

普段あまり聞かないプログラムですが
これはユーザーのシステム構成、一部の Windows コンポーネントのパフォーマンス、および特定の種類のイベントに関する統計情報を収集します。そしてマイクロソフトにその情報を送りつけたりするプログラムです。
一般的に使うパソコンで、別にエラー情報をマイクロソフトに送らなくても良いんじゃない??
とも思ったりしますので
ここは素直にこれを停止してしまいましょう。

Windows8.1ならば、左下のWindowsマークを右クリックして
コンピュータの管理を開きます。

compatibilityappraiser

[コンピューターの管理] – [システムツール] – [タスク スケジューラ] – [タスクスケジューラ ライブラリ] – [Microsoft] – [Windows] – [Application Experience]
と開いていった先に

Microsoft Compatibility Appraisor

という物がいます。

今CPUリソースが常に20%とかになっている場合、ここの状態が実行中になっているかと思います。
これを停止することで、CPUリソースが解放されると思います。

さて、停止しても、これはスケジューラなので、また次回起動してしまったりします。
という事で、起動しないようにしてしまいましょう。
右クリックメニューには無効という項目があるので
これを選択。

これで解決。

gendosu流、dockerの使い方(Docker composeを使う)

dockerを開発環境で使うに当たって

前回「gendosu流、dockerの使い方」という内容を書きました。

その内容だと、

通常Dockerコンテナを手動で起動するには
まず、Dockerfileを作って自分好みにイメージを作成
作成したイメージからdocker runコマンドでコンテナ起動
たとえば、memcachedとmysqlとredisを使った一通りの構成を手動で起動しようとした場合
それぞれにイメージ作成やdocker run(start)をして起動していかないといけないです。
コンテナ間にリンクを張っている場合は起動順序も考慮する必要があります。

面倒ですね。

そこで、今回はDocker-composeを使ってみたいと思います。
こちらのツールはDockerのオフィシャルで配布されているツールになります。

簡単に言うと、複数コンテナの情報を1ファイルに集約して、そのファイルを元に
1コマンドで全コンテナを起動できるようにするツール

という事になると思います。

早速

インストール

Docker composeのインストールは

https://docs.docker.com/compose/install/

をみて作業を進めます。

これでdocker-composeというコマンドが入りました。

docker-composeを使うには
コマンドを実行するディレクトリ配下にdocker-compose.ymlというファイルを作成します。

※ディレクトリ構成

今回は前回の構成
webとmysql
という2つのコンテナを起動するような構成でファイルを作ってみたいと思います。

Dockerfile(supervisordのディレクトリも)は前回の物を流用します。

# Dockerfile

EXPOSEとCMDは、次のdocker-compose.ymlで設定するので、ここでは設定してません。

# docker-compose.yml

これで設定ファイルの準備が完了しました。

起動はdocker-composeにオプションを指定して実行します。

docker-composeのオプションで、代表的な物は

  • up
    コンテナをイメージから作り直して起動する
  • stop
    すでに起動しているコンテナを終了する
  • start
    停止しているコンテナを起動させる

あたりかと思います。

起動してみます。

upというオプションを指定して起動させました。

Dockerfileのビルドが走った後に

各イメージからコンテナが生成されて起動された事が確認できると思います。

あとは、前回同様、ポート2200を指定してsshすることでwebコンテナへログインする事が出来ます。

gendosu流、dockerの使い方

以前よりローカルでの仮想環境の生成・破棄は容易になったような気がしますが

Vagrantでは、インスタンスの生成、破棄のコストが高い気がするので

そこのところをDockerを使ってやってみるようにしてみました。

gendosu流dockerの使い方

まずは、ベースになるマシンとしてUbuntu Server 14.10 64bitの仮想マシンを立ち上げます。

これは、VagrantでもVMwareでも問題ないです。

今後、頻繁にアクセスすることになるので、vmのIPをhostsに登録してしまいます。

hostsには

192.168.?.?    local-vm

として登録しちゃいます。

これで、vmに

ssh root@local-vm

という感じでログインできるようになりました。

ここから、dockerのセットアップをします。

ubuntu14では、

http://docs.docker.com/installation/ubuntulinux/

にあるとおりに

とやってインストールします。

これで、入ったので、dockerにコンテナを作ってみます。

ただ、普通にやるとコンテナ内へのアクセスが面倒なので

各コンテナ内にsshを起動してしまいます。

これで、ポート指定で外部からssh接続できるコンテナになります。

やり方ですが

Dockerfileを作ってイメージを作成するようにします。

# => Dockerfile

というファイルを作成します。

同じ階層にsupervisord/ssh.conf

を作成します。

こちらは

とします。

このDockerfileをdocker buildでイメージにします。

これで、sshdが起動するdockerコンテナのイメージが作成されました。

このイメージを元に、「run-ubuntu-ssh」という名前でコンテナを起動します。

これで、2200番のポートを指定してssh接続が出来るようになりました。

各コンテナでsshが起動するのは無駄な気がしますが

アクセスが容易になる分、開発環境では便利になるのではないでしょうか。

さて、sshdは起動しましたが、たいていの場合MySQLとかも同時に入れたりしたくなったりします。

MySQLの場合は、別のコンテナでMySQLだけが入ったものを用意します。

これは、Docker.ioのdockerhubから持ってきます。

https://registry.hub.docker.com/

この中に、MySQLというリンクがあるので、ここを開いて、手順通りにやると

MySQLの入ったコンテナが起動できます。

先ほど、「run-ubuntu-ssh」コンテナを起動したときに使ったコマンド

docker runに、別のコンテナへのリンクを追加するというオプションがあります。

今回はそのオプションを追加します。
※先ほどのdocker runを実行している場合、一度docker stop、docker rmでコンテナを破棄します。

mysqlという名のコンテナに対してリンクを張っています。

run-ubuntu-sshコンテナの内部からは、mysqlという名前でmysqlコンテナへ接続できるようになっています。

というコマンドでMySQLへ接続できていればOKです。

別のコンテナを起動する場合、先ほどのdocker runのコマンドで、-p 2200:22のところを2201:22という感じにインクリメントしていくことで、比較的容易にコンテナを管理できると思います。