windows-logo

我が家最後の砦、VAIO Z の Windows10 アップグレード

VAIO Zの5年くらい前?機種は

DYNAMIC HYBRID GRAPHICS SYSTEM

という仕組みで、バッテリーを長持ちにさせる代わりにグラフィックをIntelのチップセットのもを使うようにしたり、ハイパフォーマンスにしてNVIDIAを使うようにしたり、という設定がスイッチで付います。

DSC_0222_switch

※Windows 10にアップした後に撮ったので、LEDが点灯してないですが、本当はスイッチの向いてる方向のLEDが点灯します。

これのおかげでモバイル用途もOKでゲームも楽しめるという贅沢な機種でした。

ですが、やはりメーカーのサポートというのは長くはなく、

Windows 10対応のドライバ類は提供されず。

という状態で、Windows 10 アップグレードのダイアログは出るものの

ディスプレイドライバが対応していません。(正式には忘れてしまいましたが)というワーニングが出るので

自動アップデートはかけられない状態でした。

で、いろいろと調べていると

NVIDIAのドライバをちょっと細工してインストールする事で

Windows 10にしてもNVIDIAを使う事が出来そう、ということで

意を決してアップグレードしてみました。

DSC_0218

やったことは

VAIO Z VPCZ1 のグラフィクス機能を Optimus Technology を用いて動かす。

このページを参考にさせていただきました。

ただ、現在のNVIDIAの最新のドライバだと若干違う部分がありました。

簡単にですが、アップグレード手順は

Windows 10のISOイメージを取得する

DVDにイメージを焼く

エクスプローラからDVDに焼いたところのアップグレードファイルを起動する

Windows 10アップグレードが始まる

適当に進めてアップグレード完了

ここからWindows 10で起動する訳ですが

普通にIntelのグラフィックドライバで画面が表示されるので

見た目的には問題なさそうな感じがします。

NVIDIA使いたいので、インストーラをダウンロードして

参考にさせていただいたページのようにドライバの情報を書き換え、

さらに起動オプションでドライバ署名無効にして

インストール。

半信半疑のままやってみたわけですが、一応使えるようにはなったみたい。

ただ、ドラクエベンチ流したらカクカクで何でかな〜と悩んだ結果ですが

NVIDIAのコントロールパネルで、使うドライバがIntel になっていて

そこをNVIDIAのに変えたらうまくいきました。

P.S.

少し雑ですが

明日でWindows10 アップグレードネタの賞味期限が切れる気がしたので

急いでインストールして、急いで記事アップしましたw

ssh2のキーが見たことないフォーマットだった時の対処の仕方

ある日、委託の方にサーバへのアクセス権を付与するためにSSHのキーをくださいと言ったら
以下のようなフォーマットで送られてきた。

SECSH形式?という解らない形式のものらしい。

と思ってよくよく調べたら

本来のSSHキーはこのような形式のようだ。

(本当か??)

今までOpenSSHに慣れすぎて来たという事なのかな。

というのは良いとして

これを普通のSSHのauthorized_keyに格納するには

としてやれば良い。

git cloneするときにブランチ指定して–depth指定する

よくチュートリアルのなどで

なんて感じでcloneして使うやり方を書いてあったりするけども

普通にgit cloneすると
他のブランチの情報とかも管理ディレクトリに持ってきている状態なので
ディスク容量も食うし、cloneする時間もかかる。

そこで、特にgit的な操作は以後しないのであればgit shallow cloneするのが良い。
やり方は

こうすると、ブランチの最新のリビジョンだけを持ってきてくれる。

DSC_0212

今年の夏は暑い!そして、スマホも熱くなる!そんなときはこのタオルでサッと熱をとるといいかも

今年は暑くてたまらないですね。

そして、スマホライフも熱との戦いとなりそうです。

ゲームをするとさらに熱くなること間違いなしですね。

機種によっては熱によってすぐに機能停止になったりするのもあるようです。

また、ゲームなど割と長時間プレイする場合はバッテリーがもたずに充電しながらのプレイになるときも多々あるかと思います。

自分もそうです。

そして、充電しながらだと、非常に熱くなって持っているのもしんどくなるので、

スマホの両端をつまむようにして持ちながらプレイしてたりします。

そんなスタイルがちょっと辛かったので

なんとかして熱を取る事が出来ないか?と考えておりました。

扇風機に当てるのも良いけど

もう少しなんかさっと取れたりするといいなぁと。

で、ある日

冷感敷きパッドというベッドに敷くタイプの安眠グッズがあり

そこでスマホをスリスリしてみました。

そうしたら、驚くほどスマホの熱が冷感敷きパッドに吸収されて、スマホの体感温度がすごく下がりました。

それ以来、充電しながらスマホでゲームする場合は、冷感敷きパッドの上でスリスリしながらプレイしてます。

でも、外に出たときにも少しスリスリしたいなぁ。。。

ということで、今度はタオル状の冷感グッズを探してみました。

こんなのを見つけました。

これは、見たところ冷感敷きパッドと同じタイプの素材で作られているようなので

早速ぽちって見ました。

DSC_0212

※弱めのLEDスポットライトの部屋なので、色が変です。

このタオルは、表が普通のタオル生地になっていて、裏側が冷感素材になっていました。

なので、こいつの裏側で、熱くなったスマホをスリスリ。スリスリ、スリスリスリスリスリスリスリ。

た、確かに熱は取れてる。

スマホ持っても熱くない!

でも、一つだけ欠点を見つけてしまった。

タオルでスリスリしながらゲームプレイしてると、ゲームに実が入らない。。

まぁゲーム中以外でも発熱してきた場合に、このタオルでサッと熱を吸熱してスマホを冷ます事が出来るので

発熱でバッテリーが心配、なんて感じるときは使ってみるといいかも?と思いました。

あと、さすがに冷感敷きパッドのように広大な面積がある訳では無いので

瞬時に吸熱出来る熱量も冷感敷きパッドには負けます。

それでも試してみたい!という方は試してみてもいいかも?

以上

関連リンク

memory_quota_exceeded_eye_catch

herokuでMemory Quota Exceededと言うのが出るようになったので、puma_worker_killerを入れた話

最近、herokuで稼働させているRailsのアプリが「Memory Quota Exceeded」と言われる事が多くなり、定期的にワーカーの再起動をしたいと思ってました。

memory_quota_exceeded

見る限り、swapも出てしまい、レスポンスも遅くなっているようです。

このような場合、heroku以外だと、unicornを使うので、unicorn_worker_killerを入れるのですが

herokuだとpuma推薦なのでpuma使っていました。

で、pumaもuniconのようにworker killer系の物があるのかな?と探してたところ

puma_worker_killerがあるようなので、使ってみました。

https://github.com/schneems/puma_worker_killer

herokuでの使い方は、「Turn on Rolling Restarts」というのを使うのが推薦のようなので

その設定で行ってみました。

デフォルトだと6時間ごとに再起動ということになるので、ひとまず様子見で3時間に設定してみます。

以下が、3時間でリスタートがかかるようにした設定になります。

こちらを設定したところ

memory_quota_exceeded_after_config

ピーク時は少しswapが出る時もあるものの、割と落ち着いたのかなと思います。

しばらくはこの状態で様子見をし、アラートがまた増えるような感じであれば再度調整という事にしようと思います。

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

ベンチャー・中小企業における開発チームの維持と言うことで、またいくつかキーワードを挙げてみます。

経営の視点から考えたとき、開発チームとして維持したい事は

収益性のある機能について継続的に改修、機能追加が出来る事。

将来に備えてスケール出来る仕組みを常に考えられるようにする。

経営判断での急な対応も出来る。

といったあたりがとくに重要となる。

開発チーム視点から考えたときは、上記に加え

メンバーのモチベーション維持。

技術的負債の解消。

新技術・新バージョンへの探求心。

技術共有。

あたりが重要となりそうです。

今回は開発チーム視点中心に少し考えてみます。

モチベーション維持、これはメンバーそれぞれに異なるやる気スイッチが有るように思います。

テストが得意、機能をとにかく早く仕上げられる、複雑なロジックがくめる、インフラが得意etc

開発リーダーとしては、

理想的なのは、その得意領域にそれぞれ割り当てするのがチームとしては最も効率が良くなります。

サービスが軌道に乗るまでは、俗人化するのはある程度許容する事で、コミュニケーションコストが下げられ、本人はやりたい領域の事が出来、効率は上がります。

前回も書きましたが、逆にモチベーションが下がる要因というのを排除していく事も重要となります。大きく影響するのはやはり人間関係で、信頼される事で大きく貢献出来るようにもなるし、本来以上の力を発揮出来ることもありますが、信頼されない状況があると、周囲にも影響があるので、ここは出来るだけ改善するようにしたいところです。

技術的負債。

これはおそらくどこの会社でもある問題ではあると思います。少しずつ改善していくのか、ある時期に一気にリプレースするのか。これはどちらかが良いというのは、おそらくなくて、プロジェクトの状況や会社の収益なども影響してくると思います。

そこがクリアになったとしてもチームとして技術的負債を改善していく空気が無ければ進まないので、日頃から少しでも改善していくための時間を作ったりTDDの意識をメンバーに持たせるようにするなりをしていく必要があります。そのための時間が必要と言うことをチーム外にも理解してもらう努力も必要です。

新技術・新バージョンへの探求心

新技術への挑戦や、新しいバージョンへのアップグレードが推奨される環境は、新しいことがやれている、という気持ちが持て、そこから社外にも知見共有などによってモチベーション維持とともに開発チームの技術力の底上げに貢献する事になります。

技術共有

知見の共有は、メンバーへの刺激になるとともに、自身の習得レベルの向上にも繋がるので推進したい所です。

公式エンジニアブログなどは、上記に加え、会社としての技術のアピールも出来、意識の高いエンジニアが応募してくる可能性は上がるかもしれないため、将来の投資にもなりそうです。さらに、技術領域が公開されるため、スキルのミスマッチもある程度防げそうな気がします。

 

 

docker-app-icon

Docker for Mac bata(1.12)とpowが共存出来ない

Docker for Mac bataがリリースされ、早速インストールしてみました。

docker-app-icon

アプリケーションディレクトリに入れて、このアイコンをダブルクリックするだけで

Dockerの環境が自動的に構築されるようです。

docker-menu-iconメニューバーにはDockerのアイコンが表示されるようになります。

1.11以前にDocker ToolboxでDockerを使っていた場合、この初回の起動時に

既存環境を新しい環境で使えるように変換が行われます。(yesにした場合)

今回は、全く新しい環境にインストールをしているので

変換も何もなく、すぐにインストールが終わりました。

変換した場合には、既存環境に応じて、それなりのディスク消費があるので

ディスクの空きが少ない場合は要注意です。

さて、Dockerの環境としては、まだこれから試してみる事はたくさんありそうですが

ここで出てきた問題が、タイトルの通り

powと相性が悪そう、という点です。

powは、Rackサーバで、ローカルでバーチャルホストを提供します。

なので、test-appというプロジェクトであれば、http://test-app.devでアクセスができるようになりますが
test-app.devは127.0.0.1になるので、localhostです。

一方、Docker for Macもポートを80番で指定してコンテナを起動したりすると

http://localhost/でアクセスができるようになります。

Docker for Macは、今までのDocker toolboxとは違い

Mac上でネイティブにハイパーバイザーを使って環境を構築しているようです。

ですので、標準の設定のままだと、これらが衝突し、Dockerのコンテナにアクセスできない、といった状況が発生します。

自分でもこのあたりが今出来る設定で回避可能なのかどうかは、調査中ではありますが

覚書として書いてみました。

 

関連情報

http://pow.cx/

https://www.docker.com/

https://github.com/docker/hyperkit

http://bhyve.org/

4DB6FE35-C1FA-440B-89C0-8A5AEC88076A

Evernoteが値上げ!今ここでOneNoteと比較してみる

Evernoteが値上げ&無料のベーシック版にさらに制限がつくようだ。

4DB6FE35-C1FA-440B-89C0-8A5AEC88076A

Evernote ベーシックを無料で入手するか、プラス版またはプレミアム版にアップグレードできます。 Evernote

ここで、今一度、自分なりにEvernoteとOneNoteの無料版の比較をしてみたいと思う。

1ノートごとの保存容量

Evernote OneNote
1ノートごとの保存容量 1記事25MB 無制限
全体の保存容量 なし? OneDriveにファイル作成のため、OneDriveに依存
アップロード容量制限 60 MBの月間アップロード容量 無制限
ウェブクリップ機能 各ブラウザにプラグインを追加して使用
ページ全体・選択範囲・ブックマーク
※オリジナルに近いスタイルのままノートに保存可能
Chrome拡張にて確認
クリップの意味合いが違うようで、
ページ全体のスクリーンショット
選択範囲のスクリーンショット
となるようだ
ノート内の画像編集 以前あったSkitchというアプリの機能がEvernoteのアプリに取り込まれているので、
Evernoteアプリ内で簡単なドローツールやコメント追記などが出来る。
画像などの編集はOneNoteアプリ上では出来ないようだ
編集端末 2台 制限なし

ここまで見て、個人的にはもうEvernoteしか無い訳ですが

有料版になってくると少し違った考え方になる必要がありそうだ。

Evernoteの有料版は、2種類あるが、プレミアムを想定して考える。

特に有用な機能を上げてみると

PDF内の文字を検索

Office文書の文字を検索

ノートの履歴閲覧

など。

過去にミスってノートの中身を消してしまったことがあったが、履歴から戻せて事なきをえた経験から

この履歴閲覧は必須と思っている。

OneNoteの方はどうか

こちらは、OneDrive自体の有料プランというより、MicrosoftのOneDriveのプランと言った方が良いが

今現在(2016年6月)OneDrive プラン

無料 5GB 無料
基本 50GB 170円/月
OneDrive + Office 1TB 1274円/月

いずれにしても月間の通信量制限はない。

Office 365 soloを契約することで、OneDriveが1TB付いてくると言う脅威のパフォーマンスが発揮される。

1274円/月でOfficeとOneDriveが1TB付いてくるのであれば、これはお得だと思う。

Evernoteの優秀なウェブクリップ、簡易画像編集、を取るか

OneNoteとOfficeとOneDrive 1TBを取るか

両者どちらか一方だけを選ぶことが出来ず、自分の場合は両方選んでしまった。

ウェブクリップ、通常のメモ用途としてのEvernote

Officeや1TBのオンラインドライブとしてのOneDrive

比較対象にあげたOneNoteは結局使っていない。

以上。

 

bash-on-ubuntu-on-windows

Bash on Ubuntu on Windows のアンインストールについて

https://github.com/Microsoft/BashOnWindows/issues/29

lxrunというコマンドがコマンドプロンプトでたたけるようになっているようで、これでオプションにuninstallを付ければ

Bash on Ubuntu on Windows のサブシステム一式が削除出来るようだ。

試しに消してみた。

キャプチャ6

 

windows-insider-preview

Windows 10 Insider PreviewをONにしてみた

最近、MacとWindowsの両方で似たような環境を作って作業することが多くなった訳ですが、どうもMacと比べると色々とWindowsの場合は開発環境といった面では劣る部分が多いというのを改めて感じました。

ただこれ、Windows10は開発用途以外の場合、結構使いやすいOSだと思っています。

自分の場合はノートPCでタッチ画面付きのものなので、マウスが無くても、サッと画面をタッチできたりして便利です。

ブラウジング用途でも手でスクロール出来る&拡大縮小が出来るというのは使ってみるとかなり便利な部分です。

ブラウジングの操作がスマホでなれているというのもあるかもしれません。

そこでMacを触ると、ついつい画面に手が行ってしまいがちです。

あ、タッチ出来ないのか。。と思いつつタッチパッドをスルスルする訳です。

少し話がそれました

Windows 10を開発環境として見た場合に、圧倒的に足りないのがコマンド操作周りだと感じました。

昔はCygwinやらCoLinuxからVirtualPCやVMwareなど、仮想環境は結構手を出してきていましたが

シームレスな環境というのはなかなか見つかりませんでした。

最近はDockerを入れてコンテナ起動ですが、結局は裏でVirtualboxが起動しています。

そんななか、Windows 10 Insider Previewで、Bash on Ubuntu on Windowsなる環境が試せるという話を聞き、これは入れるしかない。

と思いつつも要はベータなので、最悪環境が吹っ飛ぶかも?というところで躊躇してましたが

ふっきれました。

キャプチャ

ONにしちゃいましたよ。

というのも、最近Windowsがブルースクリーンになることが多く、どっちにしろリセットするなら、という気持ちが強くなってきました。

あとは純粋に試したい!という事で。

ついさっきONにしたわけですが、しばらく待たないと入らないようなので、続きはまたしばらく待ったあとにアップしたいと思います。

追記

やっとWindows Updateとして降ってきました。

キャプチャ

入れたらまた別途追記します。

追記2

早速bashをONにしてみます。

キャプチャk

Windowsの機能の有効化または無効化というのをクリックして

キャプチャ2

Windows Subsystem for Linux (Bata)

というところにチェックを付けてOKを押します。

ここで、一度再起動します。

コマンドプロンプトでbashと入力してリターンです。

キャプチャ3

そうすると、インストールするかどうかを聞かれるので、yと入力します。

キャプチャ4

アカウントとパスワードを最初に入力すると、文字は化けますが正常にインストールされたようです。

これで、スタートメニューには

キャプチャ5

このようにBash on Ubuntu on Windowsという項目が出来ています。

これを起動するとbashが使えるようです。

 

docker

Dockerfileを作っている最中にデバッグするときの基本的な手順

Dockerfileを作っている最中に動作確認中に途中で落ちてしまって、その状態でイメージの中身を確認したい時とかが多々あるかと思いますが
今回はそんなやり方、定番かもしれないですが書いてみようと思います。

まずは適当なDockerfileを作ってビルドします。

このビルド時にエラーが出てイメージの作成が止まったという想定です。

docker buildで失敗すると・・・

docker imagesには

というイメージが出来ています。
こいつは

Dockerfile上のタスク(RUNとかADDとかの単位)で正常に処理が完了した状態が一時的にイメージ化されているものです。
で、docker buildで失敗した状態というのは
docker ps -aで表示される停止しているコンテナが持っています。
なので、このコンテナに入ることが出来れば、失敗の原因を調べる事ができそうですね。

コンテナ状態だと、
例えば

こんな感じの表示にある通り、実行コマンドとして/bin/sh -c 〜〜〜〜というのが書いてあり

普通にdocker startしてしまうと、このコマンドが動いて終わるので

このコンテナを一時的にイメージにしちゃいます。

さらに、イメージ化したものをdocker runします。

これで、docker buildで失敗した時点のコンテナに入る事が出来ました。

consul-logo

consulとstretcherによるデプロイの検証

概要


consulのevent発行=>event watchの機能をフルに使ったデプロイになります。
event watchで起動されるデプロイツールがstretcherになります。

前提条件


オートスケーリングをする
ソースgzとかしてS3においておく
各サーバがS3からソースをダウンロードして展開する(stretcher)
オートスケーリングの仕組みは別途あるものとする

検証


consulの基本的な設定
webの場合
#/etc/consul.d/web.conf

/etc/consul.d/event.conf

インスタンスの作成時

サーバの起動スクリプトに以下を仕込んでおく
/usr/local/bin/stretcher s3://example/manifest.yml
アプリのリリース時
s3にリリースするソースファイルをアップしておく
s3のmanifest.ymlを更新しておく
consul event発行

クラスタリスタートさせる場合

/etc/consul.d/web.confに定義出来る

  • name
  • service
  • tags

の設定で頑張る事でなんとかなりそう。
具体例
/etc/consul.d/web.conf(クラスタ1のグループのサーバ)

/etc/consul.d/web.conf(クラスタ2のグループのサーバ)

クラスタ1のリスタートイベント発行

クラスタ2のリスタートイベント発行

1台だけ新しいソースにして動作確認する

これはサーバイメージの更新の時もありうるので
オートスケールの最低台数を+1する想定だけど
新しいmanifest-prerelease.ymlとかを作成して
/usr/local/bin/stretcher s3://example/manifest-prerelease.yml
として手で叩くでも良い。
それか、例えば、nginx.jsonに以下のような設定を入れ
サーバ1

サーバ2

サーバ3

サーバ4

consul reloadしてから

とすると、サーバ1だけにイベントが飛びます。

とすると、サーバ1とサーバ2にイベントが飛びます。

とすると、サーバ3だけにイベントが飛びます。
/etc/consul.d/nginx.jsonを、直接いじりたい場合(例えば、一台だけprerelease機にしたい場合)に
直接入ってファイルをいじって、consul reloadすれば、設定が更新されます。
その後に

とすれば、1台だけリリース可能。

全台デプロイ完了の検知

全台デプロイを検知する仕組みとして
consulの持つKey/Valueの仕組みを利用すると実現可能。
手順
deployイベント発行時にデプロイスクリプトであらかじめ

をしておく。

渡すmanifestファイルを以下のように

としておく。

としておく。
デプロイ時のスクリプトなどで
consul event〜〜
発行後

を監視。
keysがなくなれば全台デプロイ作業完了
最後に

を取得し
エラーがないことをチェックしてデプロイフローの完了となる。

感想

という事で、イベントを送る先をtagsで良い感じに制御出来ればconsulとstretcherによるデプロイは良さそうな気がします。
全台デプロイ完了の検知は、consulのイベントとかステータスとかだけでやりたかった。けど、なかなか上手くいかない。
引き続き良い方法があれば調べたい。
manifest.ymlはデプロイスクリプト(capistrano?)で自動で更新されるようにしたいため、ここにhook処理が羅列されるのは嬉しくない。
ソースを固めてs3に上げてmanifest.ymlを作るという部分はまだ考慮しきれていない。
各サーバでserviceにcheckという設定(このページではconsulの基本的な設定のweb.json)を付けると、指定したチェックが通るまではserviceとしては追加されないので
ロードバランサにぶら下げるときにも
consulのヘルスチェックを見てゴニョゴニョ出来たらいいのかと思ったりしました。

補足

イベント発行のAPI

 

logo

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

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

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

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

old-site

こんな感じから…….

new-site

こんな感じへ。

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

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

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

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

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

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

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

となれば良いのですが。

 

 

 

 

 

 

 

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

dokku-logo

開発サイクルをブースト!するかもしれない。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回 ディスクを仮想化する記憶域プール機能