ラベル 設定 の投稿を表示しています。 すべての投稿を表示
ラベル 設定 の投稿を表示しています。 すべての投稿を表示

2009年4月9日木曜日

Mac OS X 10.5 Leopard に SVN サーバを立てる

Mac OS X 10.5 Leopard に標準でインストールされている Apache 2 を SVN レポジトリとして使うための設定です。結構よく見るネタなのですが、実際やってみたら、色々ハマるところがあって苦労したのでまとめておきます。

前提

Apache 2 は標準でインストールされています。SVN が標準で入っているかどうかはわかりません。Developer Tools をインストールしとけば入るでしょう。

レポジトリの URL は http://localhost/~user/repos/ 、ファイルシステム上のレポジトリは /Users/user/Sites/svnrepos と仮定して手順を紹介します。ファイルシステムのレポジトリを URL が指す /Users/user/Sites/repos とすることはできません (← ハマる原因①) 。

1. レポジトリを作る

シェルから 次のコマンドを実行します。

% svnadmin create /Users/user/Sites/svnrepos
% sudo chown -R www /Users/user/Sites/svnrepos

SVN のレポジトリを作成し、Apache 経由のアクセスに備えて、ファイルオーナーを www にします。グループは特に関係ありません。

2. /etc/apache2/httpd.conf に以下を追加

Apache の設定を変更します。変更箇所を差分として示します。

% diff /etc/apache2/httpd.conf /etc/apache2/httpd.conf.orig
117d116
< LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so
489,494d487
< <Location /~user/repos>
<  DAV svn
<  SVNPath /Users/user/Sites/svnrepos
< </Location>

※ 末尾の / あるなしは、とても重要です (←ハマる原因②) 。

3. Apache を再起動する

システム環境設定の共有 > Web 共有を使って、Apache を再起動します。

4. 新規プロジェクトを登録

試しにプロジェクトを登録してみましょう。

% mkdir project
% cd project
% mkdir trunk
% mkdir branches
% mkdir tags
% svn import -m "initialize" . "http://127.0.0.1/~user/repos/newproject"

5. 登録したプロジェクトをチェックアウト

今、登録したプロジェクトをチェックアウトし、作業を開始します。

% svn co "http://127.0.0.1/~user/repos/newproject"
% cd newproject

ここまでうまくいけば、一通り使えるようになっています。この設定では、認証などの設定が済んでいないので、引き続き設定を行ってください。

2009年3月26日木曜日

LaTeX2e (dvipdfmx) のフォントを小塚明朝・ゴシックに

最近、ヒラギノフォントを埋め込んだ LaTeX で書かれた論文をときどき目にするようになりました。ヒラギノフォントは確かに美しいのですが、Mac OS X バンドルの明朝 W3 と角ゴシック W6 の組み合わせは、どうもバランスが悪いように思います。

Adobe Creative Suite 4 をインストールすると、小塚明朝・ゴシックが一式入るので、こちらを使用するようにしてみましょう。太さはそれぞれ 6段階あります。

まずは、LaTeX にフォントを認識させる準備です。/Library/Fonts/ にインストールされている小塚フォントのシンボリックリンクを作ります。

sudo mkdir -p /usr/local/share/texmf-var/fonts/opentype
cd /usr/local/share/texmf-var/fonts/opentype
ls /Library/Fonts/KozMinPro-* | sudo perl -MFile::Basename -ne 'chomp; symlink($_, basename($_));'
ls /Library/Fonts/KozGoPro-* | sudo perl -MFile::Basename -ne 'chomp; symlink($_, basename($_));'

dvipdfmx で小塚明朝・小塚ゴシックを埋め込む設定にします。/usr/local/share/texmf-var/fonts/map/dvipdfm/updmap/cid-x.map を以下のように変更します。ファイルがなければ作成します。

rml H KozMinPro-Regular.otf
gbm H KozGoPro-Medium.otf
rmlv V KozMinPro-Regular.otf
gbmv V KozGoPro-Medium.otf

最後に、作成したファイルを TeX が見つけられるようにしてあげます。

sudo mktexlsr

私は、TeX が持っている Computer Modern フォントとのバランスを考えると、小塚明朝 Light と小塚ゴシック Regular の組み合わせが、ゴシックの強調文字としての視認性としては、小塚明朝 Regular と小塚ゴシック Medium の組み合わせがベストと思いますが、皆様はいかがでしょうか?

2009年3月1日日曜日

Mac OS X のスリープモードの変更 (sudoers)

Mac OS X のスリープモードの変更には /usr/bin/pmset を使う。管理者権限が必要なので、GUI レイヤーから行おうとすると、若干の問題が生じる。そこで、スリープモードの変更に限って、管理者パスワードなしで行えるように設定する。

以下には、お使いの Macintosh を安全でない設定に変更する方法が書かれています。Mac OS X のスリープモードの違いを理解した上で、自己責任で設定を変更してください。

設定

sudo の設定ファイルである /etc/sudoers を編集する。sudoers に構文エラーがあると、sudo が実行できなくなるので、必ず以下に示すように visudo を使って編集する。visudo は編集終了後に構文検査を実行し、エラーがある場合は、更新するかどうか確認を求めてくる。

% sudo visudo

vi の操作については、ここでは解説しない。/etc/sudoers のファイルに、次の 1行を追加する。追加する場所は、サンプルの手前。

user ALL=NOPASSWD:/usr/bin/pmset -a hibernatemode ?

userには、スリープモードの変更を許可したいユーザ名を指定する。

この設定により、次のようにスリープモードの変更ができる。

% sudo pmset -a hibernatemode 0

スリープユーティリティ

スリープモードの変更が可能になったので、次のようなスクリプトがユーザモードで実行可能である。

スリープさせるスクリプト catnap は以下の通りである。

#!/bin/sh
/usr/bin/sudo /usr/bin/pmset -a hibernatemode 0
/usr/bin/pmset sleepnow

セーフスリープさせるスクリプト safesleep は以下の通りである。

#!/bin/sh
/usr/bin/sudo /usr/bin/pmset -a hibernatemode 3
/usr/bin/pmset sleepnow

ハイバネーションさせるスクリプト hibernate は以下の通りである。

#!/bin/sh
/usr/bin/sudo /usr/bin/pmset -a hibernatemode 1
/usr/bin/pmset sleepnow

後は、これらのスクリプトを GUI レイヤーから呼べるようにすればよい。その方法は様々であるが、清野はクラシカルなアップルメニューが好きなので、FruitMenu (US $12.00) を使用している。

FruitMenu の設定により、このようなアップルメニューが得られる。

2009年2月28日土曜日

Dock の Finder アイコンを変更する

Finder のアイコンは Mac OS X のバージョンによって異なりますが、新しい Finder アイコンが気に入らない方はお試しください (Mac OS X 10.4.7 で確認) 。

以下の情報は Terminal での作業に関する知識を十分お持ちの読者を想定しています。作業の失敗によって、大切なデータを消失したり、OS を再インストールをする結果になることがあります。カスタマイズは自己責任です。

準備

材料として、次のファイルが必要です。

  • Finder のアイコン (.png 形式) 。一般にはアルファチャネルの情報が必要です。.icns 形式をプレビュー.appで変換するとよいでしょう。

手順1:

/System/Library/CoreServices/Dock.app/Contents/Resources/finder.png を所望のアイコンファイルに置き換えます (root権限が必要です) 。

手順2:

/Library/Caches/dock.iconcache.501 (※) を削除し、Dock を再起動します。

※ .501の部分はユーザIDです。dock.iconcache はログインしているユーザごとに作成されるので、すべてのユーザについて、キャッシュを削除してください。

FileVault と Web共有 (Apache) を同時に使う

FileVault をオンにすると、http://localhost/~user/ にアクセスできなく (403 Forbidden) なります。これはホームディレクトリのパーミッションが drwx------ になっているためで、drwx---x---x (711) に直せばアクセスできるようになります。

他の人と共有している Mac ではセキュリティ上の問題が発生しますので、充分注意してください。

2009年2月27日金曜日

RAM ディスクを作成する

RAM ディスク
http://homepage.mac.com/nand/macosx/ramdisk.html

Mac OS X にはディスクキャッシュ、HDD の断片化を予防するための遅延再配置機能があるので、一時ファイルを作成するために RAM ディスクを使っても、労力に見合う効果は得られないと思います。

現在のところ、RAM ディスクのうまい使い方は思いつきませんが、メモとして書いておきます。

メモリが慢性的に足りないノートブックタイプの Mac では、利用する価値はないでしょう。SSD の環境と組み合わせると、何か可能性が使い道があるかもしれません…。(2010-07-17追記)例えば、ATOK のユーザ辞書のように頻繁に読み書きするファイルを RAM ディスクに置くことで、SSD の劣化を防ぎパフォーマンスの改善ができるようです。

2009年2月25日水曜日

Mac OS X のスリープ

Mac OS X のスリープモードは 3種類あります。これらの違いを以下の表に示します。

No名称スリープモードへ移行時、メモリをHDDにスリープモードから復帰時、HDDからメモリへスリープ中の電源
0スリープ待避しない読み込まない省電力モード
1ハイバネーション待避する読み込む
3セーフスリープ待避する読み込まない省電力モード

No は pmset というコマンドでスリープモードを指定する時の数値です。

  • 0 は最もオーソドックスなスリープで、スリープ状態への移行およびスリープからの復帰が高速であるが、スリープ中にバッテリがなくなる等、電源が切れた時は、システムはクラッシュする。
  • 1はメインメモリの内容をHDDに書き出してからスリープし、復帰時にはHDDからメモリへ書き戻す。スリープ中は電源を必要としないが、スリープ状態への移行および復帰は最も遅い。
  • 3は0と1の中間で、万が一の電源断に備えてメインメモリの内容をHDDに書き出すが、スリープ中もメインメモリの内容を保持し続ける。スリープ状態への移行は 1 と同じ時間を要するが、スリープからの復帰は 0 と同様に高速である。

工場出荷時では、デスクトップマシンは 0 が、ノートブックでは 3 が指定されています。

運用からスリープを考える

ノートブックタイプのマシンで、バッテリを節約しなければならない局面は多いものです。しかし、デフォルトのセーフスリープでは、こまめなスリープが却って仇になります。

セーフスリープでは、スリープの度に、メモリの内容を HDD に書き出します。このために 30秒くらいかかります。この間、HDD は回りっぱなしです。これでは、本体を動かすのも恐いですね。

また、移動や睡眠などで長時間使わないのが分かりきっている時には、ハイバネーションさせて電池の消耗を抑えたいものです。

こうした要求から、スリープモードを使い分けられると便利です。

以下には、お使いの Macintosh を安全でない設定に変更する方法が書かれています。自己責任で設定を変更してください。

切り替えるには、Terminal.app から、次のようにタイプします。

% sudo pmset -a hibernatemode 0

root 権限が必要です。0 の部分を、上記の表の数字にしてください。

つぶやき

公開していない (リンク張っていない) はずなのに、なぜか旧サイトの中でもこのページは大人気でした…。なぜ公開していないかというと、間違いが含まれていたからです。それにしても、どうやって見つけたんでしょう?

スリープさせるためのスクリプトについては、別の記事で紹介します。