| @Mac/iPhone

日曜の朝に Mac を触っていたら突然 OS が落ちた。しょうがないのでスタートボタンを押して OS を起動させた。 OS 起動後、メッセージを見ようとするけど Messages.app 起動時にクラッシュして見られない。

一旦 iCloud アカウントからログアウトして再ログインしたらいけるかなと思ってログアウトして再度ログインを試みる。しかし各種設定をオンにしてもサーバーとの通信に失敗しているようで、 iCloud の利用ができない状態になってしまった。

同時にインターネットアカウント設定が出来ないことに気がつく。「インターネットアカウント を読み込めませんでした」というエラーが出る。

Apple Support Discussion で見かけた Unable to load iCloud and Internet...: Apple Support Communities を参考に ~/Library/Caches/com.apple.iCloudHelper を消して com.apple.iCloudHelper を kill してログアウト -> ログインを試すもダメ。 iCloud 関連で用いるファイルにロックがかかっている状況で OS が突然停止して iCloud 死んだぽかった。

英語の Apple Support Discussion の情報を一通り眺めて試してみたけど Messages.app とインターネットアカウント設定は復活せず、あきらめて TimeMachine のバックアップデータから復元することにした。 33 時間かかって復元は終わった。 Messages.app は無事起動するようになったが万事元通りとはならず、アドビ系のソフトが全滅した。

まえ MacBook の HDD を SSD に変えたときに TimeMachine のバックアップから復元したら同じように Adobe CS4 のライセンシングが機能しなくなって Photoshop とか使えなくなった。前回はハードドライブが変わったからそうなったのかと思っていて、同じ SSD に復元するのであればこういうことは起こらないのではないかと勝手な期待を抱いて復元してみたら、案の定ライセンシングが機能しなくて起動しなくなった。

前回はディスクケースに取り出した古い HDD を入れてディスクから Mac を起動してアドビ系のライセンス認証を解除して回ることで Photoshop とか起動できるようになった。今回はディスクの換装ではないので古いドライブが存在しているわけではなく消去して上書きインストールされているので、旧データの OS を起動してライセンス認証を解除するということもできない。 Adobe が CS4 向けに提供しているライセンス修復ツールは PowerPC アプリケーションというクソっぷりで、 Intel CPU の Mavericks で起動するわけもなく。どうせ Adobe のサポートとかに電話しても Mavericks で CS4 の動作は保証しておりませんとか言われるだけだろう。つらい。

Adobe のソフト、基本的に異常な操作感だし使いたくないけど、印刷屋に年賀状とかのデータを送るときにどうしても使わないといけないのがだるい。国はアドビ対策基本法とか制定してアドビ倒産に追い込んで欲しい。

TimeMachine のバックアップから復元するときはご面倒さまでも Adobe ソフトのライセンス認証を解除してから行われることをおすすめします。最近の Creative Suite ではこういうことおこんないのかな。マジでクソい。

追記(2014/05/08)

昨夜、一旦ソフトをアンインストールして入れ直したら Photoshop とか使えるようになった。ライセンシングが機能しなくなったらインストールし直せば何とかなるようです。ディスクが何枚にも分かれてるので時間かかるけどな。

| @技術/プログラミング

Rails で public_activity.gem を使っていて、 activities テーブルにレコードが追加されたタイミングで callback を仕掛けたい衝動に駆られた。ちょっと調べてみたけどやり方が見つからなかったので、チームの人と相談して以下のようにした。 public_activity は PublicActivity::Activity というモデルを gem の中に持っていて、こいつが belongs_to :model になる。

なのでこのモデルクラスを open して以下のように記述した。

# RAILS_ROOT/lib/public_activity/activity.rb

module PublicActivity
  class Activity
    after_create do
      HogeHogeMailer.send_mail(self.trackable).deliver
    end
  end
end

ただしこのファイルを config/initializers/ とかで require してやらないと Rails がファイルを読み込んでくれない。 Rails.application.config.autoload_pathslib/**.rb とかを追加しとけば自動的に読み込まれるんじゃないかなと思ったけどそうじゃなかった。 Rails の autoload は、 ConstMissing という例外が発生したときに定数の名前からファイル名を推測して require するらしい。名前が既に定義済みだと ConstMissing 例外が発生せず autoload では読み込まれないので明示的に読み込む必要があるということらしい。

読み込みされていないクラスを使用すると ConstMissing という例外が発生します。 この部分に介入して autoload_paths の中に規約に合うファイルがあるか確認します。 存在する場合は読み込みします。 存在しない場合は ConstMissing を発生させます。

Rails の自動読み込みの話 - そんなこと覚えてない

ナルホディウスですぞ〜!!!

そのうち忘れそうなのでここに書き記しておきます。

| @Mac/iPhone

2年くらい前に Western Digital の My Book Live という NAS を買った。ほんとは Time Capsule が良かったんだけど Time Capsule を買う金はなくてこれにした。

狭い机の上にハードディスクを置くのが嫌だったので NAS にしたんだけど、ものすごく使いづらい。 WiFi 経由なのもあるかもしれないけど、転送速度がすごく遅い。 MacBook Pro Mid 2009 のディスクを HDD から SSD に交換したとき、 My Book Live 内の TimeMachine バックアップから WiFi 経由で復元したら、 300 GB 程度のデータを転送するのに丸三日かかった。 WiFi ルーターが Fon の 802.11b/g のやつだから 802.11n のやつに変えればもう少し実用的な速度になるのかも知れない。

TimeMachine 用に使うにはバックアップに頻繁に失敗するのもつらい。なんかディスクの信頼性が低下したとかで頻繁に過去のバックアップを消去して新規バックアップを作成しろとか出る。 Mountain Lion の頃によくこの警告出てて Mavericks にしてからあまり出なくなったけど、それでも 2 ヶ月に 1回くらいの頻度でバックアップ新規作成(=フルバックアップ作成。これも 2, 3 日かかる)しないといけなくなるのでつらい。

ちなみにバックアップディスクの信頼性が低下したときは以下のような一連の呪術的なプロセスを経ることでタイムマシーンのバックアップディスクとして再利用可能になる。