Macでウインドウ位置を記憶、復元する
この間4Kディスプレイを導入したことを書きましたが、使っていてちょっと困ったことがありました。Macがスリープから復帰すると、解像度が一旦小さくなるのか、開いていたウインドウが全部左上に寄せられて、サイズも小さくなっている現象が発生します。
tmuxのcopy-pipeで少しすっきり
tmuxを使っていてちょっと困るのがクリップボード周りの処理で、クリップボードと連携させるにはtmuxのコピーバッファを一時ファイルに吐き出して、それをOS側のクリップボードツールに取り込むというような面倒なことしないといけませんでした。
tmux1.8で、copy-pipeというものが導入されてこの辺がすっきりしました。
MacのFirewallがデスクトップ共有をブロックしてしまったときの対処法
Mac OSXにはWindowsと同様、標準でFirewallが搭載されていて、基本的に全ての外部からの接続を拒否します。
ただ、sshやデスクトップ共有などのサービスを有効にすると、それに必要なポートは自動的に開けてくれます。
自動的に開けてくれるはずなのですが、デスクトップ共有については非常に怪しい挙動をします。
サービスは有効にしているのに、ポートはブロックされたままで接続できないことがよく発生します。
そんな時にはまらないための対処法を紹介します。
iBooks登場で、iTunesから本ライブラリが切り離されて困る
Mavericksになって、iOSにあったiBooksがMacアプリとして登場しました。
iPhone, iPadとの連携という意味では使いたいと思ってるんですが、ライブラリの管理がよく分からなくて困ってます。
gitoriousをMacにインストールする
gitoriousは、githubクローンでなかなかよくできているのですが、いかんせんインストールがなかなか大変。
Macへのインストールにいたっては、ほとんど情報もなくそれなりに苦労したのでメモ。
この記事自体や設定ファイルなどを https://github.com/kmr/gitorious_mac_install にも置いてます。
ユーザの作成
gitユーザを作ります。
一般ユーザで普通にユーザ追加してください。
gitユーザでssh接続できるように、共有設定なども確認します。
gitユーザ環境周りの設定として以下のファイルを作成、記述します。
- ~/.bashrc
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
- ~/.bash_profile
if [ -f ~/.bashrc ] ; then . ~/.bashrc fi
.profile を .bashrc のシンボリックリンクとして作成しておきます。
git% ln -s /Users/git/.bash_profile .profile
ssh設定のディレクトリを作成して、そこに environment というファイルを作成します。
git% mkdir .ssh git% chmod 700 .ssh
- .ssh/environment
PATH=/Users/git/contents/gitorious/script:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/sbin:/bin:/sbin
パーミッションを変えておきます。
git% chmod 644 ~/.ssh/environment
sshd の設定
ssh経由のpushのためsshdの設定をします。
- /etc/sshd_config
PermitUserEnvironment yes (コメントを削除し、yesに設定)
パッケージ群のインストール
必要なパッケージ群をインストールします。
自分は、macports を使っているのですが、最近はいろいろあるので適当に読み変えてください。
あと、rubyパッケージをrubygemsでインストールします。
gem系パッケージは、結構バージョンにうるさいので、エラーとかでバージョンが違うと言われたら素直にそのバージョンをインストールしてあげてください。
% sudo port -v install apache2 +openldap+preforkmpm % sudo port -v install mysql5-server % sudo port -v install pcre % sudo port -v install oniguruma5 % sudo port -v install apg % sudo port -v install libgeoip % sudo port -v install libyaml % sudo port -v install php5 % sudo port -v install phpmyadmin % sudo port -v install memcached +umem % sudo port load memcached % sudo port -v install ImageMagick +graphviz+jbig+jpeg2+lqr+mpeg+perl+q32+rsvg+wmf % sudo port -v install sphinx +mysql5 % sudo port -v install git-core % sudo gem install -b --no-ri --no-rdoc bluecloth -V % sudo gem install -b --no-ri --no-rdoc openid -V % sudo gem install -b --no-ri --no-rdoc mime-types -V % sudo gem install -b --no-ri --no-rdoc diff-lcs -V % sudo gem install -b --no-ri --no-rdoc json -V % sudo gem install -b --no-ri --no-rdoc ruby-mysql -V % sudo gem install -b --no-ri --no-rdoc mysql -V % sudo gem install -b --no-ri --no-rdoc rack -V % sudo gem install -b --no-ri --no-rdoc ruby-hmac -V % sudo gem install -b --no-ri --no-rdoc echoe -V % sudo gem install -b --no-ri --no-rdoc daemons -V % sudo gem install -b --no-ri --no-rdoc ruby-yadis % sudo gem install -b --no-ri --no-rdoc hoe % sudo gem install -b --no-ri --no-rdoc stompserver -V % sudo gem install -b --no-ri --no-rdoc chronic -V % sudo gem install -b --no-ri --no-rdoc rails -v '2.3.11' -V % sudo gem install -b --no-ri --no-rdoc rdiscount -V % sudo gem install -b --no-ri --no-rdoc stomp -V % sudo gem install -b --no-ri --no-rdoc geoip -v '0.8.9' -V % sudo gem install -b --no-ri --no-rdoc bundler -V % sudo gem install -b --no-ri --no-rdoc rmagick -V % sudo gem install -b --no-ri --no-rdoc daemons -v '1.1.0' -V % sudo gem install -b --no-ri --no-rdoc rubygems-update -v '1.3.6' -V % sudo update_rubygems _1.3.6_
ActiveMQのインストール
ActiveMQは、ここから最新版をダウンロード、解凍インストールします。
http://activemq.apache.org/download.html
ここでは、/opt/local/activemq に解凍したとします。
以下のように設定ファイル、起動スクリプトを一部変更します。
- /opt/local/activemq/conf/activemq.xml
... <transportConnectors> <transportConnector name="localhost" uri="tcp://127.0.0.1:61616"/> </transportConnectors>
- /opt/local/activemq/bin/macosx/activemq
スクリプトの頭に以下のエントリを追加します。
これは Java関係の環境変数を設定するためです。
# Setup JAVA . /opt/local/.java_env
上で読み込んでる .java_env を作成します。
- /opt/local/.java_env
# Setting Java environment export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home export PATH=${JAVA_HOME}/bin:${ANT_HOME}/bin:${MAVEN_HOME}/bin:${PATH}
あと、ActiveMQ実行ユーザをgitユーザと同じように作っておきます。
MySQLの設定
MySQLにgitorious用のDBとユーザを作成します。
gitorious公式のセットアップではrootユーザを使うように書いてありますが、変えた方がいいです。
% mysql -u root -p rootユーザのパスワード入力 mysql> create database redmine character set utf8; mysql> create user 'gitorious(変えてもいい)'@'localhost' identified by '適当なパスワード'; mysql> grant all privileges on gitorious.* to 'gitorious'@'localhost'; mysql> quit;
gitorious本体の設定
gitorious本体をチェックアウトしていろいろ設定します。
この辺から、いろいろエラーが発生したり苦労するかもしれません。
まず、gitorious のリポジトリから gitorious のコードをクローンしてきます。
/opt/local/gitorious にインストールすることにします。
% git clone git://gitorious.org/gitorious/mainline.git gitorious % cp -pr gitorious /opt/local/ % sudo chown -R apache:staff /opt/local/gitorious % sudo chown -R git:staff /opt/local/gitorious/script % sudo chmod 777 /opt/local/gitorious/log % sudo chmod 777 /opt/local/gitorious/tmp/pids % sudo mkdir /Users/git/git-repos % sudo chown /Users/git/git-repos % sudo mkdir -p /Users/git/tmp/tarballs-work % sudo mkdir -p /Users/git/tmp/tarballs-cache % sudo chown -R /Users/git/tmp
chown でオーナ指定している apache:staff は、Apache の起動ユーザなので、各環境の設定に合わせて変えてください。
いくつかの設定ファイルを自分の環境、使い方に合わせて設定します。
設定するファイルは、/opt/local/gitorious/config以下にあるサンプルファイルをコピーして使います。
% cd /opt/local/gitorious/config % sudo cp -p broker.example.yml broker.yml % sudo cp -p gitorious.sample.yml gitorious.yml % sudo cp -p database.sample.yml database.yml
以下でランダム文字列を設定する必要がありますので、事前に以下のコマンドを実行して出力される文字列をコピーしておきます。
改行は削除して1行にしてください。
% apg -m 64 uvnu..... .....non_
- /opt/local/gitorious/config/gitorious.yml
production: # The session secret key (`apg -m 64` is always useful for this kinda stuff) cookie_secret: uvnu.....non_ (上で作ったやつ) # The path where git repositories are stored. The actual (bare) repositories resides # in repository_base_path/#{project.slug}/#{repository.name}.git/: repository_base_path: "/Users/git/git-repos" # Stuff that's in the html <head>. custom stats javascript code etc extra_html_head_data: # System message that will appear on all pages if present system_message: # Port the ./script/gitorious script should use: gitorious_client_port: 80 # Host the ./script/gitorious script should use: gitorious_client_host: github.example.com (このgitoriousを運用するサーバのDNS登録名) # Host which is serving the gitorious app, eg "gitorious.org" gitorious_host: github.example.com (このgitoriousを運用するサーバのDNS登録名) # User which is running git daemon gitorious_user: git # Email address to the support for the Gitorious server gitorious_support_email: gitorious@example.com (サポートメールアドレス) # Email spam on server errors to: exception_notification_emails: # Mangle visible e-mail addresses (spam protection) mangle_email_addresses: true # Enable or Disable Public Mode (true) or Private Mode (false) public_mode: false (これをfalseにすると新規ユーザ追加できなくなる) # Define your locale locale: en # Where should we store generated tarballs? # (should be readable by webserver, since we tell it to send the file using X-Sendfile) archive_cache_dir: "/Users/git/tmp/tarballs-cache" # Which directory should we work in when we generate tarballs, before moving # them to the above dir? archive_work_dir: "/Users/git/tmp/tarballs-work" # is it only site admins who can create new projects? only_site_admins_can_create_projects: false # Should we hide HTTP clone urls? hide_http_clone_urls: false # Use SSL? Requires web server configuration. Recommended for security. Forces the use of # HTTPS on login page and all pages while user is logged in use_ssl: true # Is this gitorious.org? Read: should we have a very flashy homepage? is_gitorious_dot_org: false # Pick a default license #default_license: GNU Affero General Public License (AGPLv3)
- database.yml
# MySQL (default setup). Versions 4.1 and 5.0 are recommended. # # Install the MySQL driver: # gem install mysql # On MacOS X: # gem install mysql -- --include=/usr/local/lib # On Windows: # gem install mysql # Choose the win32 build. # Install MySQL and put its /bin directory on your path. # # And be sure to use new-style password hashing: # http://dev.mysql.com/doc/refman/5.0/en/old-client.html production: adapter: mysql database: gitorious username: gitorious password: MySQLの設定で指定したgitoriousユーザのパスワード host: localhost encoding: utf8
- broker.yml
そのままでOK。
bundlerを使って不足パッケージチェック、インストールします。
ここで、バージョンが違うというエラーが出たら、指定されたバージョンのgemパッケージをインストールしてください。
% cd /opt/local/gitorious % sudo bundle install
最後に、データベースを初期化、管理者ユーザの作成など。
git% rake db:create RAILS_ENV=production git% rake db:setup RAILS_ENV=production git% rake ultrasphinx:bootstrap RAILS_ENV=production git% RAILS_ENV=production script/create_admin 管理者ユーザのe-mailとパスワードを聞かれるので入力 git% crontab -e * * * * * . ~/.bashrc && /opt/local/gitorious && rake ultrasphinx:index RAILS_ENV=production
Apacheの設定
まずは、passengerモジュールをインストール。
今回は、macportsでインストールしたApacheを使うので、オプションを指定します。
# sudo /opt/local/bin/passenger-install-apache2-module --apxs2-path /opt/local/apache2/bin/apxs --apr-config-path /opt/local/bin/apr-1-config
Apacheは、VirtualHostを作成します。
つまり専用のサーバ名を与えます。
当然、この名前で名前解決できる必要があります。
LoadModule passenger_module /opt/local/lib/ruby/gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so PassengerRoot /opt/local/lib/ruby/gems/1.8/gems/passenger-3.0.7 PassengerRuby /opt/local/bin/ruby <VirtualHost *:80> ServerName github.example.com (gitorious.ymlのgitorious_hostと合わせる) DocumentRoot /opt/local/gitorious/public <Directory "/opt/local/gitorious/public" > Order deny,allow Allow from all </Directory> </VirtualHost> <VirtualHost *:443> ServerName github.example.com (gitorious.ymlのgitorious_hostと合わせる) DocumentRoot /opt/local/gitorious/public ServerAdmin [email protected] ErrorLog "/opt/local/apache2/logs/error_log" TransferLog "/opt/local/apache2/logs/access_log" SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile "/opt/local/apache2/conf/github.example.com.cert.pem" (SSLサーバ鍵についてはググればいっぱい出てきます) SSLCertificateKeyFile "/opt/local/apache2/conf/github.example.com.key.pem" BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 CustomLog "/opt/local/apache2/logs/ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b" <Directory "/opt/local/gitorious/public" > Order deny,allow Allow from all </Directory> </VirtualHost>
自動起動設定
自動起動の設定方法はいろいろありますが、個人的に一番分かりやすいmacports系デーモンのまねで設定します。
起動スクリプトなどは、/opt/local/etc/LaunchDaemon 以下の作成します。
スクリプトは、github に置いておきますので参考にしてください。
これらのスクリプトをMac起動時に起動するよう設定します。
% sudo ln -s /opt/local/etc/LaunchDaemon/org.macports.activemq.plist /Library/LaunchDaemons/org.macports.activemq.plist % sudo ln -s /opt/local/etc/LaunchDaemon/org.macports.stompserver.plist /Library/LaunchDaemons/org.macports.stompserver.plist % sudo ln -s /opt/local/etc/LaunchDaemon/org.macports.git-daemon.plist /Library/LaunchDaemons/org.macports.git-daemon.plist % sudo ln -s /opt/local/etc/LaunchDaemon/org.macports.git-poller.plist /Library/LaunchDaemons/org.macports.git-poller.plist % sudo ln -s /opt/local/etc/LaunchDaemon/org.macports.git-ultrasphinx.plist /Library/LaunchDaemons/org.macports.git-ultrasphinx.plist % sudo launchctl load -w /Library/LaunchDaemons/org.macports.activemq.plist % sudo launchctl load -w /Library/LaunchDaemons/org.macports.stompserver.plist % sudo launchctl load -w /Library/LaunchDaemons/org.macports.git-daemon.plist % sudo launchctl load -w /Library/LaunchDaemons/org.macports.git-poller.plist % sudo launchctl load -w /Library/LaunchDaemons/org.macports.git-ultrasphinx.plist
これで、https://github.example.com/ にアクセスして管理者ユーザでログインしたり、ユーザ登録したり、プロジェクト、リポジトリ作ったり、push、pullしたりして問題なければOK。
途中、うまく動かなくて『あーもー』となってメモ取るの忘れた部分もあるかもしれませんが、その時はコメントか github のメモ修正してください。
MacのバックアップをNASに作るTip
ふと思いたって今迄サーバとして使っているMacbookに刺していた外付けディスクを、Airmac ExtremeのUSBに刺してサーバ落としてもメインのマシンとかからアクセスできるようにしました。
ついでなんで、バックアップに使っているディスクもAirmacに繋いだのですが、どうもアクセス権とかのバックアップまでされない。
それは困るなあと思っていたのですが、最終的にディスクイメージを作ってそれをマウントして使う方法で解決しました。
やることは簡単で、スパースバンドルという形式のディスクイメージを作って、そいつをマウントして使うだけ。
スパースバンドルは、ディスクユーティリティの 新規 > 空のディスクイメージ で作成します。
こんな感じ。
ポイントは、パーティションをハードディスク、イメージフォーマットをスパースバンドル・ディスクイメージにした上で、サイズにバックアップに使うディスクのサイズ以下を指定すること。
ディスクのサイズは後で変更できるので、とりあえずバックアップ対象より少し多めにしておく、とかでも大丈夫。
また、ここで1Tと設定したからといって実際に1Tのディスクイメージファイルが作成されるわけではなく、最初は数十から数百メガのファイルで、ディスクイメージ内にデータが書きこまれるにつれサイズが大きくなっていきます。
要するに、最初は、1Tの容量のハードディスクですよ、という情報が入ったファイルが作成されるだけです。
サイズの変更は、作成したディスクイメージをマウントしていない状態で、ディスクユーティリティの イメージのサイズを変更 によってサイズ拡張、その後ディスクイメージをマウント(実行するとマウントされます)して、パーティションのタブを選んでパーティション拡張してあげればOK。
簡単。
こうして作成したディスクイメージをバックアップに使う外付けドライブに移動して、マウント、バックアップ先ディスクとして使えば普通のローカルドライブとして使えてアクセス権なども問題なくバックアップされます。
あまり知られていないけど、結構便利です。
Macをメディアサーバ化するPlexのススメ
英語blogに以前書いたのですが、MacのFrontRowの強化版のようなアプリにPlexというものがあります。
iTunesのライブラリや、ディレクトリから音楽ファイルやらムービーファイルを検出してライブラリ化して見ることができます。
メニュー構成とかがとてもカッコよくて、それだけでも使いたくなります。
更に、プラグインを追加することによって、Youtubeなど、様々なネット動画サービスに接続できるようになり機能的にも FrontRow よりずっと優れています。
こんな感じでずらっと。
しばらく更新がなかったのですが、今年に入ってアップデートがあり少し問題があった品質面でもかなり安定してきました。
この間 MacbookPro を買って空いた Macbook を、メディアサーバとして再構築しDVI-HDMI変換ケーブルでTVに接続しています。
前からメディアサーバは立てていましたが、ずっと昔の Mac だったので、不安定でちょっと使いづらかったのですが、これでようやく安定しました。
オススメの使い方は、音楽はPlexが勝手に認識してくれるiTunesライブラリをそのまま使う、ムービーはディレクトリ指定してスキャナで取り込むパターンです。
自分は、ムービーもiTunesライブラリとして取り込んでいるので、iTunesライブラリとして認識してくれることを期待したのですが、どうもダメっぽいです。
ということで、ディレクトリ指定でiTunesライブラリのMoviesフォルダを取り込むのですが、単なるムービーとして取り込むとアニメのシリーズとか関係なくフラットにメニューに並ぶようになってしまいます。
丁度、FrontRowと同じ状態で、数が多いとちょっとサーチするのキツい。
それを回避しようと思うと、TV Showsとして取り込む手段があります。
TV Showsは、シリーズとかをメニューとして整理してくれて、階層的に作品を管理できるようになります。
ただ、Plex標準のTV Showsのスキャナだと、iTunesのムービーの設定のうち『ビデオ』に該当する番組情報とか埋めてないと認識してくれません。しかも、シーズン番号とかエピソード番号とか入れてないと無視されます。
自分は、そもそも番組情報を入れず、音楽ファイルと同様の情報しか入れていません。
iTunesのムービーの設定のうち『情報』に該当するやつですね。
これ。
これじゃそのまま使えねー、ということでスキャナを書きました。
ソースはこんな感じ。
これを、~/Library/Application Support/Plex Media Server/Scanners/Series/Simple Series Scanner.py に保存しておいてやると、Plex Media Server のツールである Plex Media Manager のライブラリ追加で Media scanner として Simple Series Scanner が使えるようになります。
こいつを選択して、Section type に、TV Shows、Primary metadata agent に Personal Media Shows あたりを選択しておいてやると、上で書いたiTunesのムービーの設定のうち『情報』を元に、アルバム情報とかからシリーズ構成を作成してくれるはずです。
また、エピソード番号にあたるトラック番号とかが入力されていなくても、適当な番号でごまかして取り込みます。
こんな感じで、アルバムで整理され、
ドリルダウンすると、ちゃんと同じアルバムのムービーが並びます。
ちょっと適当な整理だけど、自分には十分使いやすくなりました。
Plexは、マジオススメなんで、ぜひ使ってみて。
MacBook Pro early 2011 を買いました
そういや地震ですっかり飛んでいましたが、メインのMacBookを買い替えたのでした。
今まで使っていたものは、おおよそ3年ものでメモリも4Gまでということで、丁度いい時期かなと思い。
ここ数年はずっとメインマシンをノートにしていて、不自由したことはないのですがこの間まで使っていた13インチはちょっと外でコード書いたりするには画面がちっちゃいと感じていました。
自分はそんなに長距離持ち運ぶということがないので、重さより作業のしやすさを取ろうということで再び15インチに戻しました。
というわけで買ったのは、こんな構成。
MBP 15.4/CTO
2.2GHz Quad-core Intel Core i7
4GB 1333MHz DDR3 SDRAM – 2x2GB (これは購入後8Gにリプレースした)
256GB Solid State Drive
8x Double-Layer SuperDrive
MBP 15″HR Antiglare WS Display
Mini DisplayPort-DVI Adapter
No iWork preinstalled
No Final Cut Express preinstd
No Aperture Preinstalled
No Logic Express Preinstalled
No FileMaker Preinstalled
No MSO preinstalled
US Keyboard/Users Guide-JPA
Country Kit-JPN
OS自体の起動、アプリの起動、Android エミュの起動などがすごく速くなって、ストレスはほぼなし。
AdobeCS5とか以外は、ほぼDockで1ポップ以内で起動します。
これは、CPUよりはSSDの威力なんだろうなあ。
素晴しい。
ビデオメモリも1Gなので、動画編集なんかもサクサクいけるはず。
とりあえず3年はがんばってくれると信じている。
MacBook (Late 2008) + MacOSX 10.6.5 を 64bit で起動する
なんか一部アプリが動かなくなったな、と思って調べてみたら、この間リリースされた MacOSX 10.6.5 で久々に EFI が更新されていた。
MacBook (Late 2008) は、64bit CPU 乗せてるくせして、Macbook Pro と差別化するため 64bit で起動しないよう細工されてます。
F○ck Apple!
で、その小細工に小細工を施して 64bit で起動できるわけですが、MacOSX 10.6.5 で小細工が修復されてしまいました。
というわけで、小細工しなおしました。
以前のポストで書いた内容から変わっています。
更新する boot.efi が更新されてしまったから。
MacOSX 10.6.5 では、以下のアドレスの値を修正します。
これが元の boot.efi
- /System/Library/CoreServices/boot.efi
0028700 60 42 02 00 00 00 00 00 00 00 00 00 00 00 00 00
0028710 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0028720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0028730 68 42 02 00 00 00 00 00 00 00 00 00 00 00 00 00
0028740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
これを別名で、以下の6箇所書き替える。
- /System/Library/CoreServices/boot64.efi
0028700 60 42 02 00 00 00 00 00 04 00 00 00 01 00 00 00
0028710 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0028720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0028730 68 42 02 00 00 00 00 00 04 00 00 00 01 00 00 00
0028740 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
あとは、以下のようにして boot64.efi で起動するように設定。
# cd /System/Library/CoreServices/
# sudo chown root:wheel boot64.efi
# sudo chflags uchg boot64.efi
# sudo bless –folder /System/Library/CoreServices/
–file /System/Library/CoreServices/boot64.efi
- /Library/Preferences/SystemConfiguration/com.apple.Boot.plist
以下のエントリを追加。
<key>Kernel Flags</key>
<string>arch=x86_64</string>
これで再起動すれば 64bit カーネルで上がります。
なお、例によって自己責任でどうぞ。