Glide Note

glidenote's blog

Homebrewで入れたgit,zshを優先的に利用する

ちょっと前に会社のMacを入れ替えて、Homebrewで最新のgitzshなどを導入したのに 最初から入っているシステムのgitzshが優先的に利用されていることに気づいて、 この設定、数年おきにしていて、いつも忘れるのでメモ。(2回ググったらブログに書く)

呼び出されているgitのバージョン確認。(実際にはhub経由でgitを呼び出してました。)

1
2
git --version
git version 1.8.5.2 (Apple Git-48)

本来利用したいHomebrewでインストールしたgitのバージョン

1
2
/usr/local/bin/git --version
git version 1.9.2

下記のように/usr/local/binが一番上になるように/etc/pathsの順番入れ替え。上から優先的に利用されるようになる。

1
2
3
4
5
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

exec $SHELLで設定反映。

1
2
git --version
git version 1.9.2

ちゃんと意図した動作になった。

開発環境の情報共有会でDash,SourceTree,Alfredの話をした

社内で開発環境についての情報を共有する会を開催した。 参加者全員が発表のスタイルで、ただ聞いてるだけの人がいないようにしたら いろいろな情報を共有出来て大変参考になった。

私は1日のほとんどをターミナル上で過ごすので、ここ数年GUIアプリにはあんまり関心が 無かったんですが、最近導入して便利だったやつを共有したら好評だったのでまとめておく。

Dash

ドキュメントブラウザ、スニペット管理ツール。ドキュメントをローカルにダウンロードして 利用するので高速。今日(2014/03/29)時点で130以上のドキュメントとAPIに対応していて、 プログラミング言語に加えて、MySQL、MongoDB、Puppet、Vagrantなどのドキュメントもある。 自作ドキュメントを追加することも可能。

有償アプリですが、一部機能制限のかかった無料版でも特に問題なし。 単独でももちろん便利なんですが、後述するAlfredと組み合わせると大変便利。

Alfredだけでなく下記のように様々なアプリと連携出来るようになっている。

私はスニペット管理にはoscardelben/sheetを使っているので、 ドキュメントブラウザとしてだけ使ってます。

SourceTree

MercurialとGitのGUIクライアント。普段gitはコマンドラインからしか使わないし、コミット履歴もtigで 見ているので、GUIのクライアントは不要だと思っていたんですが、使ってみると画面が見やすくて、 1日の終わりにSourceTreeでコミット履歴を眺めてると、どういう変更が入ったか把握出来て良い。

1日の終わりに自分の関わっているプロジェクトのコミット履歴を見返す習慣が付いたのも良かった。

Alfred

ランチャーはずっとLaunchBar 5を使っていて、 Alfredと併用していたんですが、Workflowが大変便利なので、昨年完全に乗り換えた。

情報共有会ではAlfredをランチャーとして使っている人は結構いたんですが、 有償版で利用出来るWorkflowを使っている人がいなかったので、どんな感じで使っているのか実演してみた。

やってることを簡単に説明すると下記のような感じ。早送りしている訳でなく実際もこのくらい軽快に動いてます。

  1. Puppetのhieraのドキュメント呼び出し
  2. RubyのFileUtilsのドキュメント呼び出し
  3. Vagrantのsshのドキュメントを呼び出し

今回の共有会はAlfred + Dashの布教のためにやったような感じ。

便利なAlfred workflow

他にも便利なWorkflowがあるので一部紹介。

私はPinboardのヘビーユーザなので、alfred+pinboardも下記のような感じで多用してます。

情報共有会で出てきた情報を列挙

出てきた情報をメモった順で箇条書き

当日参加していた同僚が作ったCastoが非常に素晴らしかった。

便利なアプリでも有料アプリだと買う価値があるのか迷うと思うので、 こういう情報の共有をすると良いと思う。

余談になりますが、今回スクリーンキャストの録画にはQuickCastを使ってみたけど、かなり使い勝手が良かった。

参考

tmux 1.9aの挙動が怪しかったので1.8に戻した

一昨日対応したのでメモとして残しておく。

tmuxが落ちまくって、開いてるウィンドウが一斉に無くなってストレスフルな状態に。 作業しているMacのtmuxのバージョンを確認したら1.9aというやつにいつのまにか上がっていた。 (brew upgradeとかやってたのが原因だけど)

homebrew使っているので、homebrewを使って古いバージョンに戻す。

brew versions tmuxでtmuxのバージョンを確認

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
brew versions tmux

Warning: brew-versions is unsupported and may be removed soon.
Please use the homebrew-versions tap instead:
  https://github.com/Homebrew/homebrew-versions
  1.9a     git checkout 7bec702 Library/Formula/tmux.rb
  1.9      git checkout fcb3161 Library/Formula/tmux.rb
  1.8      git checkout c356bf7 Library/Formula/tmux.rb
  1.7      git checkout 2de0838 Library/Formula/tmux.rb
  1.6      git checkout f4a0f44 Library/Formula/tmux.rb
  1.5      git checkout 1ffde14 Library/Formula/tmux.rb
  1.4      git checkout 2e82661 Library/Formula/tmux.rb
  1.3      git checkout 0a56d33 Library/Formula/tmux.rb
  1.2      git checkout 585ee08 Library/Formula/tmux.rb
  1.1      git checkout af6d133 Library/Formula/tmux.rb
  1.0      git checkout a82e823 Library/Formula/tmux.rb

1.9aの前に何を使っていたのか全く覚えていないけど、長く使っていた覚えのある1.8に戻してみる。

1
2
3
4
brew remove tmux
cd /usr/local/
git checkout c356bf7 Library/Formula/tmux.rb
brew install tmux

解決した。

1.9aの挙動かなり怪しい感じなので要注意。

参考

dotenvを利用して環境ごとでVagrantfileの設定値を変更してみる

tcnksmさんのブログを見てて

おー、便利そうと眺めていたらdotenvで実現出来るとのやりとりを目撃。

私もdotenvを知らなかったので、Vagrant+dotenvがどんな感じで使えるのかやってみた。

Vagrantからdotenvが使えるようにインストール

何故かvagrant plugin installにはvagrant-*みたいなのしかインストール出来ないと勝手に勘違いしてたんですが、 普通にgem installしているだけなので、下記でdotenvが導入出来る。 (saharaが普通にそうだったし、~/.vagrant.d/gems/gems/の中を見れば普通にプラグインに依存してるgemが入ってるのも分かる)

1
vagrant plugin install dotenv

.envを用意

dotenvはディレクトリ内にある.envというファイル中身を参照するので、 環境ごとで変更する値を.envに下記のように記載。

1
2
3
4
VM_HOSTNAME     = 'dev001.foovar.com'
DO_CLIENT_ID    = 'my_client_id'
DO_API_KEY      = 'my_api_key'
DO_SSH_KEY_NAME = 'my_ssh_key_name'

Vagrantfileから.envの内容を呼び出す

.envの内容を呼び出すにはDotenv.loadVagrantfileに記載して、${ENV['HOGE']}みたいな感じで呼び出す。 私が普段使ってるDigitalOcean用のVagrantfileで使ってみると下記のような感じ。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dotenv.load

Vagrant.configure('2') do |config|
  config.vm.hostname              = "#{ENV['VM_HOSTNAME']}"
  config.vm.provision "shell", inline: "test -e /etc/yum.repos.d/epel.repo || rpm -Uvh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm"
  config.vm.provision "shell", inline: "test -e /etc/puppet || yum -y install puppet"

  config.vm.provider :digital_ocean do |provider, override|
    provider.client_id            = "#{ENV['DO_CLIENT_ID']}"
    provider.api_key              = "#{ENV['DO_API_KEY']}"
    provider.ssh_key_name         = "#{ENV['DO_SSH_KEY_NAME']}"

    override.ssh.private_key_path = '~/.ssh/id_rsa'
    override.vm.box               = 'digital_ocean'
    override.vm.box_url           = "https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box"

    provider.image                = 'CentOS 6.4 x64'
    provider.region               = 'Singapore 1'
    provider.size                 = '512MB'
    provider.ca_path              = '/usr/local/opt/curl-ca-bundle/share/ca-bundle.crt'
  end
end

vagrant upしてみる。

1
vagrant up --provider=digital_ocean

ちゃんと動いた。

Vagrantfileを共通化して、環境毎で個別に設定を変更したい場合や特定の値は公開したくない場合などはdotenv使えば良さそう。

(Vagrant+dotenvについては以前Vagrantのissueに提案されてましたPackerのuser variablesを使えと一蹴されてた。)

GitHubとかに公開する場合は誤って.envを公開しないよう.gitignoreに追加をお忘れ無く。

参考

トルネの外付けHDDがぶっ壊れたのでRAID1化した話

昨年末nasneの外付けHDDが壊れたのに続いて、先週トルネに接続していた外付けのHDDが壊れて 録画データが全飛びしたので、RAID1でミラーリングしたものを取り付けるようにした。 (私はそんなにテレビを観ないし、観たらすぐ消すスタイルなので正直ぶっ壊れてもいいと思っていたのですが、 奥さんはそうでは無かったので…)

ラトックシステム USB3.0/2.0 RAIDケース(HDD2台用) RS-EC32-U3R

買ったHDDケースはこれ。7千円ちょっと。Mac用のRAIDユーティリティだと細かい設定が出来ず単にRAID1を組んだだけ。 RAID組んだ後に、MacのディスクユーティリティでFAT32にフォーマットして終わり。 デグレードしたら、本体の前面ランプとブザー音で教えてくれる模様。

windows用のユーティリティだと FAN制御とか、メールでアラート飛ばしたりとか設定出来るらしい。


TOSHIBA DT01ACA200 2TB 6Gbps SATA対応 3.5インチ内蔵ハードディスクドライブ

トルネはFAT32で、2TBまでしか利用できないので、東芝のHDDで2TBのものを2個購入で1万6千円弱。 製造ロットで不具合抱えてたりする可能性を考えると、本当は別メーカーでRAID組んだ方がいいんだろうけど、 ベンダーからサーバ買ったときとか、HDD同じ型番だしまあ2台同時に死亡するのは過去の経験から RAIDコントローラー丸ごとなので、HDD別メーカーにしてても対処出来ない。


かかった費用は2万3千円くらい(高い…)。4〜5日使った印象だと音も静かで、録画も特に問題無し。

MacはTime Machine、自宅サーバはetckeeper+bitbucketやrsyncでVPSに毎日バックアップ取ってるから、 基本的にデータ全飛びみたいなのは基本無いんだけど、トルネはバックアップ意識してなかったので、 バックアップとかみんなどうしているのか気になる。

レコトルネ対応のBDレコーダー買って、保存するやつはBDに書き出せばいいだけの話かな-