Posts Tagged ‘Mac’

1 | No Comments | 12月 6th, 2009

ファイル一覧を得て、それをまとめてあるディレクトリにコピーしたいなーと思って xargs に渡したところで、第一引数に渡したいけどどうするの?って思って調べたら、cp には -t [target directory] というオプションがあるようです。これを使って

{ファイル一覧を得る処理}| xargs cp -t [target directory]

とすることで目的が達成できそうです。しかし、Mac で上記のコマンドを実行すると -t が使えないようで、更に調べると Mac に最初から入ってる cp コマンドは、GNUの cp とは機能が異なるということが分かりました。

GNU の cp と同等のものを入れたい場合は、macports で coreutils てのをインストールすると良いです。

% sudo port install coreutils

こうすると、頭に g がついた形でインストールされます。例えば、cp は gcp、mv は gmv といった具合。非推奨というか、他のアプリケーションを使おうとしたときに弊害が出る可能性があるけれど、GNU の cp を cp として使いたい場合は、インストール時にオプションをつけることで実現できる。

% sudo port install coreutils +with_default_names

実際、違いで困ったことが今回初めてだったのでvariantsなしでインストールしてみました。これで、cp -t のオプション使えるようになります。mv -t も同様の動作になる。gcp と gmv としてですが。

今回やろうと思ったことは、解像度が 1920×1200 の画像だけを抽出して壁紙として使おう、ってことだったので、Mac に標準で入ってる画像いじくるコマンドの sips を使った。本当は1回で 高さと幅を絞り込みたいのだけれど、やりかたが分からなかった…。

sips -g pixelWidth [ファイル名] で、幅がとれます。表示は下記のように、2行に渡ってパスと情報がでます。

/Users/chihaya/save/壁紙/wallpaper1.jpg
  pixelWidth: 1024

grep -B n でn行前まで表示できるので、pixelWidth: 1920 でひっかけて、1行前のパスを取得して、さらにもう1回 sips で高さをとって pixelHeight: 1200 でひっかければ、1920×1200の画像とれそうです。

sips -g pixelHeight *| grep -B 1 "pixelWidth: 1920"| grep "/Users/chihaya"| xargs sips -g pixelHeight| grep -B 1 "pixelHeight: 1200"| grep "/Users/chihaya"| xargs gcp -t ./wall_papers/

とすれば、current directory にある画像のうち、1920×1200 のものを、 ./wall_papers/ 以下にコピーすることが出来ます。簡単。

1 | No Comments | 11月 17th, 2009

 SnowLeopardでiTermを使っていて、なぜか screen すると Windows が勝手に小さくなってしまって困っていたのですが、設定がありました。

 Bookmarks -> Mangae Profiles で、使っているプロファイルを開きます。

 そのなかで、

Disable session-initiated window resizing

という項目をチェックすると、勝手にリサイズされなくなりました。

1 | 6 Comments | 4月 7th, 2009

 ファイルの最終アクセス日を記録しないように以前設定をして、書き込み頻度を下げましたが、/tmp を Ramdisk にして更に書き込み頻度を下げてみようと思います。

Mac OS XでRAMDiskを参考にして設定しました。

% sudo hdid -nomount ram://262144
/dev/disk1

で、128MBのRAMDiskが出来ます。/dev/disk1 のデバイスとして認識されています。

ram://xxx の数字は、 512バイトのブロックをいくつ作るかということらしいです。今回は、128MB作りたかったので、128 x 1024 x 1024 / 512 = 262144 を指定しました。

その後、HFS+で作ったRamdiskをフォーマットします。

% sudo diskutil eraseDisk HFS+ ramdisk /dev/disk1

/dev/disk1 は、さっき認識されたデバイス名を指定すればおk。この操作は、ユーティリティ → ディスクユーティリティ で「Mac OS拡張」でフォーマットするのと同じことです。先ほどのコマンドで、作ったRAMDiskが /Volumes/ramdisk にマウントされました。

ちなみに、自動的にマウントしようとするならば、出力をそのまま受け取ればよいです。
というか、常にこれをやればいいです。上記をまとめたらこうなります。

% sudo hdid -nomount ram://262144| xargs sudo diskutil eraseDisk HFS+

こうすると、Finder にも ramdisk が出ています。コマンドで確認すると、128MBのramdiskが出来ているのが分かります。

% df -h
Filesystem      Size   Used  Avail Capacity  Mounted on
/dev/disk0s2   119Gi   67Gi   52Gi    57%    /
devfs          112Ki  112Ki    0Bi   100%    /dev
fdesc          1.0Ki  1.0Ki    0Bi   100%    /dev
map -hosts       0Bi    0Bi    0Bi   100%    /net
map auto_home    0Bi    0Bi    0Bi   100%    /home
/dev/disk1s1   128Mi  3.0Mi  125Mi     3%    /Volumes/ramdisk 1

さて、次は /tmp を RAMDiskに向けます。

見てみると、Leopard では、/tmp はただのシンボリックリンクのようなので、これを変更すれば良いです。tmp -> /private/tmp

% sudo unlink /tmp
% sudo ln -s /Volumes/ramdisk /tmp

一旦シンボリックリンクを切って、ramdisk に向けてはりなおすだけです。

これで、/tmp を RAMDisk にすることが出来ました。

問題がなさそうだったら、起動時に自動的に /tmp が RAMDisk になるように設定をします。

/etc/rc.local を編集します。

#!/bin/sh
 
# Make RamDisk
hdid -nomount ram://262144
diskutil eraseDisk HFS+ ramdisk /dev/disk1
 
# for SSD
mount -u -o noatime /

前提として、以下を1回実行している必要があります。

% sudo unlink /tmp
sudo ln -s /Volumes/ramdisk /tmp

for SSD のくだりは、最終アクセス日時をディスクに記録しないようにするためのものです。参考→iMacをSSDに換装した[ブログ内記事] 順序を逆にすると、既に何かが起動して /tmp にファイルを作っているからか、動かないアプリがあるかもしれないので気をつけて下さい。ぼくの環境では、 mount -u -o notime を先に書いたら、OSのコピペ機能が動かなくなりました。

若干リスキーな変更なので、自己責任で試してみるといいと思います。

未分類 | No Comments | 1月 8th, 2009

MacBookもSSDに入れ替えて完全にSSD厨な感じだけど、環境構築してたら MySQL + Ruby でつまづいたのでメモしとく。

Ruby は、MacPorts で 1.8.7 をインストール。MySQL は、MySQL公式のダウンロードページ から、Mac OS X 10.5 (x86_64) をインストールした(これが良くなかったみたい)。

このあと、いつものように

% sudo gem install mysql -- --with-mysql-config /usr/local/mysql/bin/
mysql_config
Building native extensions.  This could take a while...
Successfully installed mysql-2.7
1 gem installed

ってやってインストールするんだけど、

% script/console
=> Booting WEBrick...
dyld: lazy symbol binding failed: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle
  Expected in: dynamic lookup
 
dyld: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle
  Expected in: dynamic lookup

って出てしまう。

ぐぐってみると、同じ症状が出てる人がいた。Leopard MacbookにMySQLをインストール〜Railsで使えるようにするまで
(http://blog.digital-squad.net/article/92963519.html) を参考にさせて頂いて、試してみる

% sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Building native extensions.  This could take a while...
Successfully installed mysql-2.7
1 gem installed

しかし・・・

% script/console
Loading development environment (Rails 2.0.2)
/Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle, 9): no suitable image found.  Did find: (LoadError)
        /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle: mach-o, but wrong architecture - /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle       from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
        from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:496:in `require'
        from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
        from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:496:in `require'
        from /Users/chu/rails/viena/config/environment.rb:97
        from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
        from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb/init.rb:253:in `load_modules'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb/init.rb:251:in `each'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb/init.rb:251:in `load_modules'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb/init.rb:21:in `setup'
        from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/irb.rb:54:in `start'
        from /usr/bin/irb:13

違うエラーになった。

下記を試せばいいっていう書き込みもあったけど、どうやら、x86_x64 のMySQL を使うとこれが出るっぽい。

% sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Building native extensions.  This could take a while...
Successfully installed mysql-2.7
1 gem installed

というわけで、Mac OS X 10.5 (x86) を改めて入れ直して、

% sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Building native extensions.  This could take a while...
Successfully installed mysql-2.7
1 gem installed

ってやったら普通に動いた。うーん。

友達曰く、port で入れれば普通に動くのに。らしい(‘A`)

1 | 1 Comment | 12月 23rd, 2008

自宅の iMac (core2モデル) がどうにも遅くて、明らかにディスクアクセスが遅そうだったので、試しにSSDに付け替えてみた。

このまえ、ノートPCにUbuntu8.10入れたときと同じ Patoriot Memory の SSDを買ってきた。ネットではあんまし評判よくないけど、使ってて問題なさそうだったので。今回は128GBの PE128GS25SSD モデルを買った。10月くらい前に64GBを買ったときは22000円で、12月に128GBが28000円とはなー。また Ark で購入したよ。

交換は、オドロキの分解方法!! 新iMacのメモリーとハードディスクを交換するを参考にやってく。全面のガラスパネルをはずすのは、吸盤があればなんでもできると思う。ぼくは、キッチンで使ってる吸盤でくっつけてみたけど、問題なくとれました。

上記サイトには、ケーブル外して…って書いてあるけど、液晶と本体の間には4本のケーブルがあって、2本はすぐ外れる(ていってもテープを外す必要はある) けど、もう2本は外れる気配がなくてつけたまま隙間から作業した。

SSDは2.5inch のものが多いので、3.5inch 変換コネクタを買ったらいいかと思ったんだけど、内部で元通りの方法で固定するのはかなり至難の業なので、買わないでなんかケーブルとかでうまいこと固定したほうがいいかもしれない。SSDは振動しないから、ケーブルで固定するくらいで大丈夫じゃないかなぁ?

付け替えて、Macをクリーンインストールしてみた。

インストール直後なので、付け替え前に比べて速くなるのは当たり前なんだけど、体感ですごい速い!っていうのがわかるくらいサクサク動いてる。しばらく使ってどうなるかは別だけど(´∀`)

Windowsで出てるベンチよりは速くないみたいだけど、Xbench の結果をはりつけておきます。

e38394e382afe38381e383a3-3
※クリックで拡大します

SSDということもあり、無駄な書き込みはしたくないので、ファイルの最終アクセス時間をいちいち記録しないように、noatime の設定をしました。

Macの動作が遅くなる。スワップとかnoatimeとかをいじってみた の記事を参考に設定しました。

/etc/rc.local に、下記を記述すればいいみたいです。

#!/bin/sh
 
mount -u -o noatime /

再起動すると、確かに noatime のオプションがついてます。

/dev/disk0s2 on / (hfs, local, journaled, noatime)

MacのSSD対策で、/tmpをRamdiskにする【変なヤバいもんログ内記事】 も追記しました。これも書き込み回数を減らすのに役立つかも!

09/03/13追記 3ヶ月くらい経ったけど、重くなったりはしていない感じ

09/12/01追記 1年弱経って、プチフリが結構起きるようになった。おとなしくIntel X25-M を買いました。

download the hurt locker