2012-01-05 [長年日記]
macbook proを買ったよ
あけおめ。
ということで、年末にmacbook proを購入した。量販店やAmazon.co.jpでいろいろみてみたんだけど、結局カスタマイズができるのがApple StoreだけということでApple Online Storeで購入した。カスタマイズの内容はモニタをノングレアにしただけ。メモリはあとで4GBx2に入れ替えた。
で、初期セットアップを終え、いくつかソフトウェアを導入したあと、Windowsから移行アシスタントでデータを移そうとしたらへんなふうにアカウントが追加され、再インストールしても残ったままになってしまった。調べたところによると、初期セットアップは捨てアカウントで行い、移行アシスタントで追加されるユーザを本アカウントにするのが正解らしい。なんだそれ。
2012-01-06 [長年日記]
ubuntu11.10でbind
macbook proの購入に前後して自宅サーバでいろいろ作業しようとしたところ、起動しなくなったりHDDの読み込みが遅くなったり(1MB/sec以下)と壊れかけの症状がでてきて、いろいろとやってみたけどダメだったのでPC本体をリプレイスした。リプレイス前はAopen XCCube LE201で、新しい方はShuttle XS35 V2*1。これとあわせてDDR3 PC10600のSO-DIMM 4GB,SATA 2.5inch HDD 500GBを購入。全部で23,000円程度。
で、前回Debian squeezeを入れたこともあってDebian系が面倒がなくていいなあということで、Ubuntu11.10を入れることにした。他のパッケージはaptでinstallすればだいたいOKだったのだけど、bindだけはweb上の情報がまちまちでハマってしまったので書いておく。前提条件として、今回はこの日記のドメイン名(mmho.no-ip.org)の名前解決をLAN側で行えるようにすることなので内向きの設定しかしていないし、外部からの問い合わせはこないので問い合わせ元によるフィルタリング等々は全くしていない。
ubuntuの場合、/etc/bind/named.conf.localがからで用意されているので、これを編集。
#正引き zone "mmho.no-ip.org" { type master; file "/etc/bind/mmho.zone"; } #逆引き 以下略
次に、zoneファイル。
; mmho.zone $TTL 604800 ;1day @ IN SOA mmho.no-ip.org. root.mmho.no-ip.org. ( 1 ; serial 604800 ; refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; minimum IN NS mmho.no-ip.org. IN A 192.168.x.x ;自身のIPアドレス
といった感じ。web上の情報では最後の行で、
mmho IN A 192.168.x.x
とするべしということになっているけど、自分自身のAレコードが必要?らしく、named-checkconf -zでそれらしきエラーが表示されていた。
*1 差額3,000円程度で上位機種であるXS35GT V2にできたのだけどグラフィック機能はそれなりでいいし、消費電力が上がるだけなのでこちらを選択
macとgitとgitosis
macでAndroidのアプリ開発をするにあたって、gitを入れておくことにした。ぐぐってみたらMacPorts経由で入れるのがいいらしい。そのMacPortsを入れるためにはXcode Toolsを入れる必要がある(長い)。
Xcode ToolsはAppStoreから無料で入手できる。ただし、ここでダウンロードされるのはインストーラーなのでそこからさらに実行してインストールを完了させる必要がある。MacPortsはここからインストーラをダウンロードできる。ディスクイメージになっているので、適当にマウントすればOK。osx lionだとデフォルトで/opt/local/binにパスが通っているのでパスの設定は不要。あとはターミナルから、
#sudo port selfupdate #sudo port install git-core
でgitの導入は完了。
ローカルで作業する分にはこれだけでOKなのだけど、せっかくサーバも新調したしということで、サーバ側でリモートのリポジトリを作っておいてそこにpushすることでバックアップとしたい。ということで、以下はサーバ側の作業。
まずは、git,gitosisのインストール。gitosisは複数のgitリポジトリを管理するためのソフト。
#sudo apt-get install git-core gitosis
でインストールされる。それ以降の作業は/usr/share/doc/gitosis/README.Debianにあるとおりなのだけど、一応説明すると、
#ssh-keygen
で公開鍵、秘密鍵を生成。
#sudo -H -u gitosis gitosis-init < ~/.ssh/id_rsa.pub
で環境を初期化。この状態でgitosis管理用のリポジトリがリモートに作成されているので、適当な場所にcloneする。
#cd ~/workspace #git clone gitosis@localhost:gitosis-admin
で、gitosis-admin以下に、gitosis.conf,keydir/user.pubが生成される。このgitosis.confを編集してコミット、プッシュすることによりリポジトリの管理ができる。たとえば、リポジトリ"test"をグループ"test"として作成し、userがアクセスできるようにするにはこんな感じ。
#cat gitosis.conf [gitosis] [group gitosis-admin] members = user writable = gitosis-admin [group test] members = user writable = test #git commit -am "add project" #git push
これでbareリポジトリが生成されるので、あとは、ローカル側でpushすればOK。
#mkdir test;cd test #git init #touch test.txt #echo 'test' > test.txt #git add test.txt #git commit -am "test" #git remote add origin gitosis@localhost:test #git push origin master
こんな感じ。既存のリポジトリをpushする場合にはgit remote add...からでOK。
で、mac側でもssh-keygenして、id_rsa.pubをgitosis-admin/keydir/user2.pubみたいな感じで追加して、membersにuser2をスペース区切りで追加すると、mac側からもgitosis@IPアドレス:リポジトリ名で各種操作ができるようになる。もちろん名前解決できるならIPアドレスの代わりにドメイン名でも構わない。また、複数のマシンから同じユーザとしてアクセスする場合はメンバーを追加するのではなく、既存の公開鍵のファイル(*.pub)に複数の公開鍵を格納するのでもOK。管理の手間を考えるとこちらのほうがよさそう。
2012-01-12 [長年日記]
macで写真を管理するにあたっていろいろやってみた
けど、結局Windowsでの方法とほとんど一緒になった話。
前提条件としては、
- アカウント移行ツールでPictures以下にデジカメの機種名\撮影日時\という形式で各フォルダに写真が保持されている
- 現在メインで使用しているのはNikon P6000
- iPhone3GSでもたまに撮るけど、こちらは適当でいい
- Holux M241でGPSのログをとってJPEGにExifとして位置情報をマージしたい
といった感じ。
まずは何も考えずにP6000をUSBで接続したところ、iPhotoが立ち上がりPictures\P6000以下の既存のファイルとの差分*1で取り込みする旨が表示されたのでそのまま実行。iPhotoエラい。
次に位置情報をExifにマージしようということで、Holux M241のドライバをここからダウンロードしてインストール、GPSBabelもダウンロードしてインストール(というかマウントしてアプリケーションフォルダにファイルコピー)。M241をUSB接続してGBSBabelを起動、取り込み元をFileからDeviceにすると、デバイスの種類(M241)、接続先(USB.SLAB_USBtoUART)が選択できるようになる。あとはファイルの形式を選択して実行すればOK。ファイル形式は汎用性がたかそうということでGPXを選択した。
と、ここまではよかったのだけど、GPXからExifに位置情報をかきこむ(ツールを探す)のに苦労した。OSXネイティブのアプリとしてはPhotoLinkerやらMyTrackというのが定番らしいけどどちらも有料(しかも結構高い)で、機能的にオーバースペック気味だったので却下、結局Windowsでも使用していたJpeg GPX Mergerを使用することにした。
Jpeg GPX Merger自体は問題なく起動するのだけど、写真が格納されているであろうPictures\iPhoto Libraryの中が参照できない。ぐぐってみたところiPhoto11以降?ではパッケージ形式になっていて内部構造は基本的に隠蔽されている、ということらしい。ネイティブアプリであれば参照できるのだろうけど、普通のファイルアクセスでは参照できないということで一応納得し、サーバー、Androidとのファイル同期(そのうちやる)のことも考慮してひとまずiPhoto Libraryは使わない方向で考えることにした。iPhotoエラいけどちょっと扱いづらい。
iPhoto Library内にある写真を実ファイルとして取り出すには、iPhotoで写真を選択して切り取り(もしくはコピー)、Finderで貼付けをする。試しに、Pictures\以下の適当なフォルダにカット&ペーストしたら一旦iPhotoから写真が消えて、直後に表示された。Pictures以下のファイルの読み書きを常に監視している様子。ということでPictures以下のどこかにファイルとしておいておけばiPhotoをビュワーとして使用するぶんには問題なさそう。実ファイルとしてアクセスできるようになったので、Jpeg GPX Mergerも問題なく動作した。
あとは適当なフォルダに撮影日時毎にフォルダ分けしてデジカメから取り込みを行なってくれるアプリだけど、これも結局Windowsで使用していたNikon Transferを使用することにした。現在はNikon Transfer 2としてNikon ViewNX 2に統合されているらしいので、ここから最新版をダウンロードしてインストール。相変わらずUIはしょっぱいけど、所望の動作は確認できた。iPhotoの環境設定でデジカメ接続時に起動するアプリをNikon Transfer 2とすることもできる。
*1 以前からPCにファイルコピーしてもデジカメ側にファイルを残す設定にしてあったため、同じファイルがPC側とデジカメ側に存在する
2012-01-16 [長年日記]
Androidに写真を同期する(rsync編)
以前、WindowsでのWMPを使用した同期方法について書いたけど、今回macになってWMPが使用できなくなったため、新たな方法を模索した記録。いろいろと面倒なので素人にはオススメしない。あと日々の同期についてはもう少し簡略化したい。
前提条件としては、
- macにマスターデータがある
- Android端末にすべての写真をコピーしたい
といった感じ。
まずはmac版のdoubleTwistを使ってみたのだけど、MTPに対応していない*1ためUSBで接続してもデバイスの認識すらしなかった。doubleTwistのAirSyncも試してみたけど、写真に関しては端末側からPCに取り込みすることしか出来なかったため、こちらも却下。まあでもネットワーク経由(≒Wi-Fi経由)で同期かけられるのはいいよなーということで色々調べたところ、rsyncによるネットワーク越しの同期がよさそうだったので、その線で行くことに。
何はともあれ、Androidでのrsyncの実装がないと話にならないので、適当に検索したらrsync backup for Androidというアプリがあって、本来はAndroidのバックアップをリモートデバイスに作成するのが目的らしいのだけど、オプションの設定でリモートからローカルへの同期もできるということで、これをAndroid端末にインストールした。rsync for Androidはsshによる通信にのみ対応しているため、こちらの環境も整える必要がある。
ここでちょっと寄り道してubuntuで稼動しているサーバに写真その他をミラーリングしてバックアップ兼メディアサーバー用のデータにし、Androidはこのサーバから同期することに。mac-ubuntu間もAndroidと同様にrsync+sshを使用する。こんな感じ。
mac-(rsync+ssh)->ubuntu-(rsync+ssh)->Android
当然ubuntuの部分を省略してもいいし、windowsでもrsyncの実装があればできると思うけどやってない。windowsだとパーミッションの設定が面倒そう。
rsyncではファイルの所有者の情報をそのまま保持する超便利な機能があるのだけど、リモート側をrootで動かす必要があるし、今回は純粋なユーザデータでリモートからデータを取得したときのユーザ権限になっていればOKなので、rsyncで同期するデータを取り扱うためだけのユーザをubuntu側で適当に作成する。こんな感じ。
remote$sudo adduser --system --disabled-password --shell /bin/sh --group share
これでユーザshareが作成される。このユーザにsshでログインするために、mac側で公開鍵を作成。
local$ssh-keygen
で、鍵を作成し、公開鍵(id_rsa.pub)の内容を/home/share/.ssh/authorized_keysにコピペ。ディレクトリ掘ったり、パーミッションを正しく設定する必要があるけど割愛。適宜アドレス空間による制限やシェルの起動禁止などを行なってmac側からログインし、ログインできる(シェルを禁止した場合はその後すぐ切れる)ことを確認する。
あとはmac側からリモートに同期をかける。送信するファイルを区分するためにexclude,includeをファイルで生成して使用したほうが汎用性があるけど、今回は同期させたいファイル群をフォルダ単位で移動し、~/Pictures/original/機種名としてoriginal/でコマンドを実行している。
local$cd ~/Pictures/original/ local$pwd /Users/username/Pictures/original/ local$rsync -rtpv . --exclude '.*' -e ssh share@remote:~/Pictures/
ドットファイルは除外。rtpで、再帰的、タイムスタンプ更新、パーミッション維持となるけど、リモート側がrootでない場合は-rtpvの代わりに-avでも同じ結果になる(ハズ)。最初は-nでdry runしたほうが無難。初回はすべてのファイルを送信するので時間がかかるけど、次回以降は差分だけを送信する。
次に、Androidへの同期だけど、書き疲れたのできょうはここまで。
*1 Android3.2ではUSBマスストレージクラス対応がないっぽい
2012-01-18 [長年日記]
Androidに写真を同期する(rsync編)(その2)
この前、mac->ubuntuでのrsyncによる同期について書いたけど、その続き。mac->Androidでもほぼ同様の操作で同じことができるけど、macでsshdを起動しておく必要がある。
基本的にはrsync backup for Androidを起動してsshなどのバイナリのダウンロード、鍵の生成を行い、プロファイル作成して項目を埋めていくだけ。気をつけるポイントは、ソース(今回はリモート側)のパスの指定で、最後のスラッシュの有無で挙動が変わること。同じディレクトリレベルを指定し、スラッシュを付ける(リモートを~/Pictures/、ローカルを/sdcard/Pictures/)という方法が無難だと思う。また、Androidのアプリとファイルのパーミッションの関係で、リモートからローカルに引っ張ってきたファイルのタイムスタンプとパーミッションを変更できない*1ので、Additional rsync optionsを以下のようにする。--deleteはお好みで、最初は付けないほうが無難。
-vr --size-only --delete
最後に「rsync in reverse direction(from server to this device)」のチェックボックスをONにして保存。プロファイルを選択すると同期がはじまる*2。最初はファイルサイズ分だけの時間がかかるけど、次回以降は差分だけなのですぐに終わる。
これでファイルの同期はできるのだけど、写真や動画、音楽等のメディア系のファイルが追加された場合、ギャラリーなどのアプリに認識させるためにはメディアスキャンを行う必要がある。それを行うだけのアプリもあるし、端末の再起動でもOK。ということでひと通り同期はできるようになったけど、もうちょっと手数を減らしたいなあということで続くかも。
kp [テスト]