2007年7月アーカイブ

MacとWindowsで使える外付けディスクを用意したい。
DVからの動画を入れるので、そこそこ速度が必要で、1ファイルも大きくなる。
市販のFAT32のファイルシステムのドライブだと、FAT32の制限「1ファイル4Gまで」がある。

FAT32は上記制限でだめ。newfs_msdosのオプションをあたってみたけど、無理そう。
Macのファイルシステム、HFS+はWindowsでは読めない。
Windowsのファイルシステム、NTFSはMacFUSEとNTFS-3Gというソフトを使えばMacでも読み書きできるらしい。

やってみた。MacFUSE-Core-0.4.0.dmg、ntfs-3g 1.710。

結論。
遅くて実用にならなさそう。
Macbookにある1GのファイルをUSB外付けディスクに転送してみたけど
17分かかる。

sshfsも自宅にあるiTunesライブラリを漁ってると落ちたりする。
まだsmb over sshから乗り換えるには早そう。

今のところSambaかNASか。

昨日Moxyを使えるようにしてみたので、メモ。
Mac環境だとdbm_class: DB_Fileしないとエラーが出ました。

取得

    http://code.mfac.jp/trac/

インスト

    perl Makefile.PL
    make
    make install

設定ファイル

    ~/.moxy_config.yaml
    --- 
    global:
      assets_path: /Users/bokutin/compile/mfac/Moxy/assets
      server:
        module: HTTPProxy
        port: 9999
        host: localhost
        max_clients: 80
      storage:
        dbm_class: DB_File

    plugins:
      - module: Pictogram
      - module: HTMLWidth
      - module: HTTPEnv
      - module: StickyUA
      - module: ControlPanel
      - module: GPS
      - module: UserAgentSwitcher
      - module: XMLisHTML
      - module: RefererCutter

SHELL

% alias moxy_server
moxy_server='perl /opt/local/lib/perl5/site_perl/5.8.8/moxy.pl --config=/Users/bokutin/.moxy_config.yaml'

おしまい。
テーブルがそのままレンダリングされちゃうよー。
いいのかな・・・

Moxy Simulator

Catalyst-Runtime-5.7007。

catalyst.pl project直後のproject::Controller::Rootの

sub default : Private {
    my ( $self, $c ) = @_; 

    # Hello World
    $c->response->body( $c->welcome_message );
}

を以下のように変えて

sub default : Private {
    my ( $self, $c ) = @_; 

    system("ls");
    if ($? == -1) {
        warn "failed to execute: $!\n";
    }
    elsif ($? & 127) {
        warn "child died with signal %d, %s coredump\n",
            ($? & 127),  ($? & 128) ? 'with' : 'without';
    }
    else {
        warn "child exited with value %d\n", $? >> 8;
    }

    # Hello World
    $c->response->body( $c->welcome_message );
}

のようにsystem()を使うと
failed to execute: No child processes
と言われる。
sendmailを呼びだすようなMIME::Lite::TT::HTML::Japaneseなどを
使っても刺さる。

どうやらこの症状は起動しているサーバーによって挙動が違い
付属のテストサーバーでは、上の通り「No child processes」。
付属のテストサーバーに-rオプションを付けると、system()でロックする。
lighttpdだと、問題なし。

臭ったところのCatalyst::Engine以下ですが、
Catalyst::Engine::HTTPにlocal $SIG{CHLD} = 'IGNORE';を発見。
これが原因になってたよう。

なので、テストサーバ、リスタート付きテストサーバ、lighttpdの三種で
互換性のあるコードを書くには

{
    $SIG{CHLD} = 'DEFAULT';
    system("/bin/ls");
    ....
}

などとしなくては、ならないのかにゃ。

なんか心地好くない気がするけど、とりあえず解決。

MacBook Pro EFI Firmware Update 1.3。
操作手順の通りに操作して、電源ON後ビープ音も鳴るものの、肝心のアップデートが実行されず、失敗する。プログレスバーも現われない。
上手くいかなかったから、ほったらかしてたけど、ソフトウェアアップデートの度にアップデートを促される・・・

という状態でしたがMaxFixItに解決法が載ってました。
ようは、Application -> Utilityにある過去のファームウェア・アップデートを消して、1.3をダウンロードしなおしたら上手く行きました。

Firmwareupdate

HDDを換装したからこういうことが起きちゃったんですね。すみません。

落としたくらいじゃ全然壊れないよ! とふんでいたiPod (MA448J/A)ですが
先日、落として壊れてしまいました。
電源をオンにすると、SadMacアイコンが表示されて、カラカラ音がします。

SadMac Icon SadMac

iPodに付いていたHDDは東芝MK8010GAHでした。
仕様としては

  • 1.8インチ
  • ZIFSoket

が重要でしょうか。

MK8010GAHはアップルロゴ入りのHDDで、小売はしていないようです。
換装するHDDは表面上のスペックが同等なMK8009GAHにしました。

換装の仕方はifixipodsfast.comにムービーがありますので、これを参考にしました。

以下、写真とメモです。

ビデオではグリーンの専用リムーバー?を使っていますが
ぼくはガチャ玉で代用。
Cimg1076

この部分からが、一番外しやすいと思いました。
Cimg1091

Cimg1069

Cimg1071

iPodに載っていたHDD、MK8010GAH。ZIFSoket。

Cimg1074

換装するために調達したHDD、MK8009GAH。
同じくZIFSoketですが、ケーブルが付いていません。
外してこちらに付けます。

Cimg1080

HDDに両面テープで付いているクッションを移植します。
スポンジと両面テープを一緒に剥すのがコツでしょう。

Cimg1086

以下、換装するまで見たことなかったiPodとiTunesの写真。

Cimg1089

Cimg1093

Cimg1094

Cimg1095

Cimg1096

おしまい。

DBICというか DBIx::Class ですが、0.8から新しく入ったDBIx::Class::ResultClass::HashRefInflator でも使うかなと思ってたところ ちょこっと弄ったら、全然不要でした。

#    # 0.2 sec
#    $result_rs->search({id => \@ids})->update({folder_id=>$folder_id});

#    # 6 sec
#    for my $id (@ids) {
#        my $result = $result_rs->find({id=>$id}) || die;
#        $result->set_from_related('folder', $folder);
#        $result->update;
#    }

#    # 6 sec
#    for my $id (@ids) {
#        my $result = $result_rs->find({id=>$id}) || die;
#        $result->set_column( folder_id => $folder_id );
#        $result->update;
#    }

@idsは200個ぐらい。 resultはfolderに属している(belongs_to)です。

計測はiTunes再生しながら Benchmark::Stopwatch しましたので不正確ですケド・・・

発行されるSQL文の低減とinflate_resultが無くなったのが要因かにゃ。