2009年4月30日木曜日

第○何曜日を計算する

PHPで書かれていたものの移植です。y年m月の第nd曜日の date オブジェクトを返します。

-- y年m月の第nd曜日の date オブジェクトを返す。
on getWhatDayOfWeek(y, m, n, d)
 -- 指定した年月の1日の曜日を取得
 set f to current date
 set year of f to y
 set month of f to m
 set day of f to 1
 set dd to d - (weekday of f) + 1
 -- 1週間を足す
 if dd ≤ 0 then
  set dd to dd + 7
 end if
 set day of f to dd
 -- 第n曜日まで1週間を足し込み
 set day of f to (day of f) + (n - 1) * 7
 return f
end getWhatDayOfWeek

。例えば、2009年 4月の第二水曜日を得る場合は、以下のように使います。

my getWhatDayOfWeek(2009, 4, 2, Wednesday)

すると、以下のような date オブジェクトが返ります。時刻は無視してください。

date "2009年 4月 8日 水曜日 10:44:00 AM"

なお、valid でない日付を指定した場合でもそれなりに動いてしまいます。例えば、2009年 13月は2010年 1月と読み替えられます。また、2009年 4月の第5金曜日は 2009年 5月 1日が返ります。意図した結果となっているかどうかは、呼び出す側で確認してください。

2009年4月26日日曜日

Files / Files lite のドキュメントを同期する

Mac で作成した様々なファイルが iPod Touch 上で閲覧できる FilesFiles liteのようなソフトはとても便利です。ここでは、これらのソフトを使う上で、ファイルを簡単に同期する方法を紹介します。

運用

運用の前提は次のとおりです。

  • Files では、ドキュメントの閲覧・削除を行います。
  • Mac 本体に Files に転送するファイルの原本を置きます。原本は、/Users/user/Documents/Files Documents 以下のフォルダに置くものと仮定します。
  • iPod Touch の名前は、iPod_touch_name と仮定します。

運用の流れは次のとおりです。

  • (1) Mac で原本を更新します。更新は、Finder または手動で動かすスクリプトによって行われることを想定しています。
  • (2) 原本の更新内容を iPod touch へ転送します。
  • (3) iPod touch でドキュメントの閲覧および不要なドキュメントの削除を行います。
  • (4) iPod touch の削除を Mac 上の原本へ反映します。
  • (5) (1) へ戻る

以下では、同期のためのツールの設定方法と、(2) と (4) を行う方法を紹介します。

設定

Files との同期は WebDAV を使って行います。sitecopy を使うと便利です。インストールしましょう。

~/.sitecopyrc を以下のように設定します。

site iPod_touch_name
server iPod_touch_name.local
port 8080
protocol webdav
username fuser
password fpasswd
local "/Users/user/Documents/Files Documents"
remote /
url http://iPod_touch_name.local:8080/
checkmoved
exclude .DS_Store

fuserfpasswd は Files で設定したユーザ名と認証パスワードです。

その他、sitecopy の実行に必要なフォルダの作成およびパーミッションの設定を行います。

% chmod 600 ~/.sitecopyrc
% mkdir ~/.sitecopy
% chmod 700 ~/.sitecopy

原本を保存するフォルダを作ります。

% mkdir "~/Documents/Files Documents"

Files との初期同期を行います。Files のファイルが空の状態で、Files を起動してから、次のコマンドを実行します。

% sitecopy -ai ; sitecopy -au

これで準備完了です。

Mac → iPod Touch の同期

Mac 上の原本のドキュメントを、iPod Touch 上の Files へ転送します (運用の流れ (2) の操作です) 。Files を起動してから、次のコマンドを実行します。

% chmod -R a-w "/Users/user/Documents/Files Documents"
% sitecopy -au

sitecopy はファイルリストを持っていて、実際のファイルとの間の不一致が発生するとうまく動作しません。ファイルリストの不一致を防ぐため、運用の流れ (4) の操作を行うまで、原本を書き込み禁止にします。これは根本的な解決方法ではありませんが、気休めにはなるでしょう。

iPod Touch → Mac の同期

iPod Touch の Files 上で行った削除の操作を、Mac 上の原本にも反映させる操作を行います (運用の流れ (4) の操作です) 。Files を起動してから、次のコマンドを実行します。

% chmod -R a+w "/Users/user/Documents/Files Documents"
% sitecopy -af ; sitecopy -as

原本を書き込み許可にし、削除の操作を反映させます。

2009年4月19日日曜日

LAMY pico 到着

先日注文したコンパクトに収納できるボールペン LAMY pico (マットクローム) が到着しました。やや大きめの箱に入っていて、箱を開けると LAMY pico が恭しく登場する演出はさすがです。あえて詳しく書きません。買った人だけが味わえる感動があります。

第一印象は、「小さい」の一言に尽きます。ペンの先入観を打ち砕いてくれます。もちろん、当初の目標であったかばんへの収納も OK です。

ペン先を出してみると、このくらいまで伸びます。書き味も申し分ありません。

実売価格は 5,000円程度が大勢です。私は 3,190円 + 送料 650円で買いました。いい買い物でした。胸ポケットにも入る短いペン。新社会人へのプレゼントにもおすすめですよー。

2009年4月12日日曜日

コンパクトに収納できるペン LAMY pico

MacBook Air 導入をきっかけに、日々持ち歩く手荷物の最適化を進めています。最適化とは、重量・体積・機能のバランスを取ることです。必要な機能は確保しながら、なるべく軽く・小型なものを求めています。出張が多いので、カバンは移動オフィスと位置付けています。私のカバンの中は仕切り板で区切られ、ほとんどの物が定位置に収納されています。カバンを開けたら、仕事に必要なすべてのデバイスにアクセスできる、すぐに仕事ができる体制になるのが理想です。

一通りの最適化が済んできていて、現在の最適化対象は文房具です。元々、私はあまり字を書かないので、ペンにはこだわりがありません。ペンは、私のカバンで定位置を持っておらず、扱いが下です。一緒に仕事をする人たちに目を向けると、「ビジネスパーソンとしてペンにはこだわる」という意見をお持ちの方も多いようです。とはいえ、私はあまり字を書かないので、書き心地というより、サイズからアプローチしてみました。

実際、探してみると、短いペンはあまりありません。ペンはある程度の長さがないと手の中で固定できず、使いにくいからでしょう。最低でも12cm 程度は必要なようです。この問題を解決し、カバンの中で定位置を与えるためには立てて収納できるサイズ (最長11cm) であることが条件です。つまり収納時はコンパクトに、使用時は必要な大きさに伸びる、そのコンセプトを実現するペン、それが LAMY pico (ラミーピコ) です。収納時は 9cm、使用時は 12.5cm です。

少々高いですが、新社会人へのプレゼントなどにもいかがでしょうか。物がまだ届いていないので、使用感などは後日書きます。

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年4月5日日曜日

ボイスレコーダー iTalk + Mic

つづきです。

その乗り換えた先のソフトですが、GRIFFIN Technology の iTalk (無料) です。教訓を受けて、本体に転送するためのソフトウェア iTalk Sync もダウンロードして、一通り試しました。

で、その時、気付いた一番の問題点。無料のソフトウェアのため、広告が出るのですが、間違えて触ってしまうことが多いのです。触ってしまうと、録音中でも容赦なく広告主のサイトに切り替わってしまうので、とても困ります。最低限、録音を中断してよろしいですか? とか確認してほしいのです…。600円払うと、広告なしバージョンにアップグレードできます。よくできたソフトウェアなので、それくらいなら払ってもいいかな…。

次は、iTalk Sync について。iTalk Sync はとても CPU 時間を消費します。音声ファイルは、Finder にコピーはできました。iTunes に登録は、うまくいかないようです。$HOME/Music/ 以下に転送されているので、iTunes のバージョンアップに追随できていないのかもしれません。ま、AIFF が取れればいいですよ。充分充分。

今使っているマイク (XtremeMac MICROMEMO) は、iPod Touch をケースに入れたまま使えないので、やや不便を感じています。iPod Touch で使えるマイクは Apple 純正のものもいいですが、オーディオテクニカの製品がスマートでいい感じです。iPhone ならば、襟元に付けて、お気に入りのイヤホンと組み合わせたハンズフリーマイクにもできます。

その他の製品はこちらで検索

日本では未発売ですが、ThumbTacksはコンパクトでとてもいいですね。iPod Touch のイヤホン端子に差し込んでおけば、本体を片手で持って録音できるので、運用しやすそうです。

ボイスレコーダー

昨日、会議で急遽 iPod Touch をボイスレコーダーとして使うことになりました。それなりに準備していたものの、色々、反省することがありました。

準備状況ですが、マイクは iPod 5G の時から使っている XtremeMac MICROMEMO を用意していました。ソフトウェアは QuickVoice (無料) です。CD 品質で録音できる設定の存在、無料のソフトウェアをダウンロードすると、録音した音声データを Mac 本体に転送できるらしい、ということを確認しました。あとは、ちょっと試しに録音・再生したくらいで安心していました。

本番で使ってみると、録音まではスムーズに運びましたが、いざ音声データを Mac 本体に転送しようと思ったら…吸い出すためのソフトウェアが有料化されてるじゃないですか…。音声データを人質に取られてしまいました。仕方なく購入して、転送してみると…えらい遅い…だけではなく、一旦、iTunes を起動して、同期してからじゃないといけない。Mac 本体の HDD にデータは転送済みなのに、なんでこんなに遅いのよ? そして、.caf とか聞いたこともないフォーマット。すっかりやられました…。.caf は iPhone で使われている音声フォーマットで中身は .aiff のようです。

さらに調べると、完全無料で WiFi 経由で転送できて、.aiff で録音できるソフトウェアがあるじゃあないですか! .caf → .aiff → .mp3 と変換するのは面倒です。せっかく買ったソフトはもったいないですが、使いやすい方に乗り換えました。

教訓。

  • ぶっつけ本番はやめましょう。テストは本番と同じく手順をすべて確認しましょう。
  • ソフトウェアはさっさとダウンロードしておきましょう。