読者です 読者をやめる 読者になる 読者になる

StayさえあればもうMBAをサブディスプレイに繋げるのは怖くない

アフェリエイト記事というものもたまには書いてみようかなということで
2012年最高にイノベーティブだったアプリをご紹介します。

  • 追記 2012/12/20

Macbook で外部ディスプレイ接続時にウィンドウをイイカンジに並べる

@takus君が紹介しているmac-forget-me-notが問題なく動作するようだったら
わざわざ1300円払うことないのでまずそっち試してみると良いと思います!

@takus++
しかし同じタイミングで似たようなエントリー書くとか、これは恋にハッテンしても良さそうな展開ですね!

わたしの環境だと起動しなくなったりしていたので忘れていました。
あと何か800円ぐらいするヤツも試したけどダメでした。名前も思い出せない。
オレオレChangeLogメモは必要ですね。。来年からつけよう

  • 追記おわり


Stay App

カテゴリ: ユーティリティ

価格: ¥1,300

何ができるのかというと

http://cordlessdog.com/stay/

ここのオフィシャルの動画を見ていただくとわかるのですが
そのディスプレイに繋いだ状態の各アプリのウィンドウを記憶させることができるのです。

毎回外部ディスプレイ繋いだ時に解像度が違うからアプリの再配置し直すの
とてもストレスフルな感じで最終的に外部ディスプレイ使わなくなったりもしたのですが
このStayに各画面のアプリ配置を覚えさせれば、もうなにもこわくないです。


こんな感じでディスプレイを自動で記憶してくれるのです。

たまに動作があやしくなるので、わたくしは

1. MBAを閉じる
2. 外付けディスプレイをサンダーボルトで接続
3. 外付けディスプレイに画面が表示される

この順番でやっています。

1. 外付けディスプレイをサンダーボルトで接続
2. MBAを閉じる
3. 外付けディスプレイに画面が表示されるが配置が切り替わらない

という現象が良く起きるので、前者をおすすめします。
また、動画だと「Store Windows fro All Applications」で
一撃で全てのアプリの配置を記憶しますが、大抵固まりますので
アプリケーションをアクティブにして、ひとつずつ
「Store All Windows for hogehoge」で格納していくのがよさそうです。

あとChromeが配置覚えてくれないのでChromeは毎回手動でズラしています。

Moom App

カテゴリ: ユーティリティ

価格: ¥85

配置はMoomがあるとショートカットで再配置できて良いですね。

あ、あとStay、1,300円もしますが、オフィシャルから30日のトライアル版落とせるので
トライアル版落として使えるかどうか判断するのおすすめです。

自宅の音楽ライブラリにMacとかiPhoneとかiPadで聞きに行くの、Subsonicで良いと思う

Subsonic

みなさん、自宅の音楽ライブラリどうやって活用しているんでしょう。
私はSubsonic使ってます。

http://subsonic.org/pages/installation.jsp

インストールも上記の通りで結構簡単に入るようになってる。
自宅サーバCentOSで動いてるのでそこでSubsonic動かして、
iPhoneとか出先のMacとかで聞いてる。

donateしないと何か機能制限あった気がするけど何だったか忘れた。

iPhoneはアイコンがものすごくダサいけどiSub使ってる。

最低限のやりたいことできるし、聞くか聞かないかわからないけど取り敢えずiPhoneに入れてる音楽、
よく聞くヤツを10GBぐらいキャッシュしておいて、必要になれば新しいのキャッシュして
古いの消していく感じで使っている。インターネット環境ないところあんまりないし
基本職場と家と移動時間ぐらいで、移動時間もほとんどインターネット繋がってるしそんなに問題になってない。

ブラウザからも音楽聞けるし色々捗るのでおすすめします。

苦行の果てに得たCentOSの6系をインストールする時はkickstartが良さそうという解脱の境地

ということで

- CentOS6.3をインストールしようとしたらCustom Layoutの項目がなくてGUIかVNCを立ち上げるかkickstartでインストールしないとLVMしか選べなくなった
- CentOS6.3上にKVMでCentOS6.3を入れる苦行

上記苦行を経験した結果、kickstartだと問題なくインストールできることがわかったので、
KVMに限らずCentOSの6系をGUIなしやLVMなしでインストールしたい場合は
kickstartでインストールする一択になりそうですね。


** CentOS 6.3 install on KVM from kickstart

一応参考までにkickstartファイルとコマンドを載せておきます。

参考

- @fujiwara
- CentOS 6.3のKickstartファイルに指定するインストールパッケージの名前を調べる
- Kickstartでディスクの初期化時に止まってしまう

先人たちの知恵に感謝

先人たちの知恵に感謝といえば、12月14日にこんなイベントもあるらしいですね!
モヒカンに運用のことが聞けるチャンスですが、なかなか人が多いところで質問するの気後れするし、
かといって歓迎会で声かけるっていってもどうせまたモヒカン同士がワイワイやって話しかけられる雰囲気じゃないんだろう。。
勇気を出して質問しても、下手な質問したらどこからかマサカリがあらわれて命が危ないんじゃないか。。

って思っている方は、比較的情弱な私を介することで敷居低くなるとおもいますのでご利用ください。

あの憧れの先輩に声をかけたいけど
ちょっと2人じゃこわいし、けど先輩の知り合いのアイツを介せばなんとかいけそうかも!!!

みたいな感じで:)

苦行の果てに得たCentOSの6系をインストールする時はkickstartが良さそうという解脱の境地

ということで

- CentOS6.3をインストールしようとしたらCustom Layoutの項目がなくてGUIかVNCを立ち上げるかkickstartでインストールしないとLVMしか選べなくなった
- CentOS6.3上にKVMでCentOS6.3を入れる苦行

上記苦行を経験した結果、kickstartだと問題なくインストールできることがわかったので、
KVMに限らずCentOSの6系をGUIなしやLVMなしでインストールしたい場合は
kickstartでインストールする一択になりそうですね。


** CentOS 6.3 install on KVM from kickstart

一応参考までにkickstartファイルとコマンドを載せておきます。

CentOS6.3上にKVMでCentOS6.3を入れる苦行

いやー、KVMのおかげで仮想環境がだいぶ簡単に構築できるようになりましたね。
ということで作業メモ。

仮想君にはブリッジで橋渡しをするのでbride-utilsも仮想関係と一緒に。

yum install bridge-utils
yum groupinstall Virtualization "Virtualization Client" "Virtualization Platform" "Virtualization Tools"

問題なくインストールが完了すれば
virshコマンドとかqemu-imgコマンドとかが使えるようになる。


# /etc/sysconfig/network-scripts/ifcfg-br0 

DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.0.2.100
BROADCAST=192.0.2.255
NETMASK=255.255.255.0
NETWORK=192.0.2.0
ONBOOT=yes

# /etc/sysconfig/network-scripts/ifcfg-eth0 

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0

上記設定でbr0のインタフェースが上がればOK。

イメージをつくる前に、わたしの環境では /data/ というパーティション
別のディスクを入れているので

$ mv /var/lib/libvirt/images /var/lib/libvirt/.images
$ ln -s /data/images /var/lib/libvirt/images

とかでシンボリックリンク張っています。
これでイメージファイルとホスト側のOSのディスクが分かれるのでディ・モールト良い。

$ qemu-img create -f raw /var/lib/libvirt/images/centos-one-20G.img 20G

とかでイメージをつくる。
スパースファイルじゃない作り方メモったのにどこかに行ってしまった!!!
ご存知のかた教えてくださいませ!!!

このスパースファイルが実際にどれぐらいのディスク領域を使用しているのかは

$ qemu-img info /var/lib/libvirt/images/centos-one-20G.img

で、わかりますね。

Sparse File (スパースファイル/穴空きファイル) - うまい棒blog

id:hogemさん++

virt-install \
--connect qemu:///system \
--name=debian-love \
--ram=2048 \
--disk=/var/lib/libvirt/images/centos-20G.img \
--vcpus=2 \
--os-type=linux \
--os-variant=virtio26 \
--network bridge=br0 \
--accelerate \
--hvm \
--location http://ftp.iij.ad.jp/pub/linux/centos/6.3/os/x86_64/ \
--graphics vnc,port=5900,listen=0.0.0.0,password=hogehoge \

そしてわたしが今回困惑したのはまさにここ。
本来であればvncとか不要で、 console=tty0 console=ttyS0,115200n8' と指定してあげれば
インストールがはじまってあとは楽勝や!

ってなるはずなんですが
さっき上げたエントリーの通り、テキストモードだとLVMしか選べないため
VNCで接続しなければならないのですが、ここで console=tty0 console=ttyS0,115200n8 を指定すると固まります。
ということで、consoleの指定を外してVNCで接続してGUIでインストールすると無事起動します。
そのおかげで virs console debian-love とやっても表示されなくなります。

最悪わたしの場合は、ホストOSはGUIで動いているので問題ないのですが
これを回避するにはやはり、kickstartファイルを作成して

--extra-args='ks=ks=http://HOST/centos-6-kickstart.ks console=tty0 console=ttyS0,115200n8'

上記のようにキックスタートファイルを作成してインストールするのが賢そうです。
自宅の環境構築って色々勉強になるので有り難いのですけど、週末ずっと家に引きこもって
うんうん悩みながら翌週迎えると休んだ気分にならないので、週末のどちらかはお散歩に行ったりしましょう!!!

...

ということでkickstartでインストールしてみたら上手くいったのでそれも書きます。

かきました

( '-')-3

CentOS6.3をインストールしようとしたらCustom Layoutの項目がなくてGUIかVNCを立ち上げるかkickstartでインストールしないとLVMしか選べなくなった

あれー、何か設定忘れてたかなーとか思って5系で試したら出てきて
あれー、何でだろーって思って色々しらべていたら

9.13. Disk Partitioning Setup




Important — Installing in text mode

If you install Red Hat Enterprise Linux in text mode,
you can only use the default partitioning schemes described in this section.
You cannot add or remove partitions or file systems
beyond those that the installer automatically adds or removes.
If you require a customized layout at installation time,
you should perform a graphical installation over a VNC connection or a kickstart installation.

Furthermore, advanced options such as LVM, encrypted filesystems,
and resizable filesystems are available only in graphical mode and kickstart.

カスタムレイアウトが選べなく鳴るのは100歩譲っても
デフォルトがLVMになるのってどうなの?って思った。
RedHatが今後どこへ向かうのか注意深く見ないといけないのかもしれない。
っていうのを海外のフォーラムで結構見たし本当にそう思う。

GNU/Debianの世界がはじまる!

Capistranoでログを標準出力とファイル出力の両方に出力する方法

もっとシンプルにできるやり方があれば教えてくださいませ!

chefを動かしているCapistranoのログをよしなにする必要があり
標準出力とファイル出力の両方に出力することはできないかなと悪戦苦闘した記録になります。

- 参考
capturing output to log file


require 'capistrano'
require 'capistrano/logger'

output = '/var/log/capistrano.log'
custom_logger = Capistrano::Logger.new(:output => output)
custom_logger.level = Capistrano::Logger::TRACE
self.logger = custom_logger

まず、こちらの設定で標準出力は行わず、ファイル出力されることを確認。

では合わせて標準出力に出すにはoutputをもうひとつ指定したらよしなにしてくれるだろうと。

custom_logger = Capistrano::Logger.new(:output => output)

custom_logger = Capistrano::Logger.new(:output => output, :output => STDOUT)


1つ目のoutput引数が2つ目のoutput引数に上書きされて終わり。
そう簡単にはいかないですよね。

ということでCapistranoの中身を確認するとlog関係は
/lib/capistrano/logger.rbここにありそうだなと。

    def initialize(options={})
output = options[:output] || $stderr
if output.respond_to?(:puts)
@device = output
else
@device = File.open(output.to_str, "a")
@needs_close = true
end

@options = options
@level = 0
end

def close
device.close if @needs_close
end

def log(level, message, line_prefix=nil)
if level <= self.level
indent = "%*s" % [MAX_LEVEL, "*" * (MAX_LEVEL - level)]
message.each do |line|
if line_prefix
device.puts "#{indent} [#{line_prefix}] #{line.strip}\n"
else
device.puts "#{indent} #{line.strip}\n"
end
end
end
end

putsってメソッドがあればdeviceってのに格納することがわかったので
それを偽装してやればいいんだ。ということがわかります。

config/mydevice.rb

class MyDevice

attr_accessor :buffer
def puts(msg)
STDOUT.puts(msg)
@buffer = @buffer + msg
end
def tty?
return false
end
def initialize
@buffer = ""
end
def clone
end
end

こんな風にSTDOUT(標準出力)と@buffer(ファイル出力のための変数)に出力するようにします。

deploy.rb

require 'capistrano'
require 'capistrano/logger'
load 'config/mydevice'

self.logger.device = MyDevice.new

そしてdeploy.rbに上記記述を書くことで、設定が上書きされます。

  task :message do
open("/tmp/capistrano.log", "w") {|f| f.write self.logger.device.buffer}
end

こんな感じでmessageを出力するtaskを記載することで
/tmp/capistrano.logへ上書きで出力してくれます。

Perlのツールでもこんなにコードを読んだことはなかったので
どうやって読んでいったらいいかのきっかけになったのと、クラスとかそういうものが
ぼんやりとわかってきたような気がします。

@fujiwara++