1月 29

起動ディスクをCarbon Copy Clonerを使って外付けのディスクにバックアップしている時に気づいた現象。

なぜかボリューム直下の”home”というフォルダが、Finderから見えない。バックアップコピーに失敗してるかと思いきや、Terminalから/Volumes/外付けHD/にいき、lsしてみたところ、ちゃんとhomeフォルダは存在する。

しかも、

$ open home

とやれば、ちゃんとFinder上で開ける。その開いた状態でcmd + iをしてファイル情報を見ても問題ない。というか、Finder上では可視/不可視の設定ってできないしね。

ls -l で表示される結果をよくよく見てみると、

drwxr-xr-x@   6 hoge  staff   204B  9  3 10:51 home/

と、パーミッションの隣に、なにやら見慣れるアットマークが。あれ?こんな記号、あったっけ?と思い調べてみると、

OSXの拡張属性、@(アットマーク)付きファイル

とのこと。たしかに、ls -la@としてみると、

drwxr-xr-x@   6 hoge  staff   204B  9  3 10:51 home/
com.apple.FinderInfo  32B

上記Blogでは、この拡張属性を消せばいいと書いてあるが、なんかしっくりこないので、追記にあるように、SetFileコマンドを使ってみる。

まず、SetFileと対になる(?)GetFileInfoを使う。

$ GetFileInfo home
directory: "/Volumes/backup/home"
attributes: aVbstclInmedz
created: 05/22/2009 11:13:54
modified: 09/03/2009 10:51:44

この、attributesというのがキモ。attributesの説明は、SetFileコマンドのヘルプか、manをみるとよろし。要するにそれぞれの記号がファイルの属性を表している。このうち、Vのみ大文字なので、manualによると、V = invisible つまり、不可視フラグが立ってるということである。

これを、SetFileコマンドを使ってhomeディレクトリに対し、可視フラグを設定するには、

$ SetFile -a v home

でOK。(つまり、V = 不可視設定、v=可視設定)

なんつーか、1つのファイルに対して、複数方面からの設定やらフラグやらが設定しており、非常にややこしいですな。Macのファイルシステムは。

Popularity: 3% [?]

written by ANN

9月 10

Mac OS Xには、標準でzipやgz,lzhファイルなどを展開できる機能がある。圧縮されたファイルをダブルクリックすればよいのだが、どうも標準のこの機能はあまり使い勝手がよくない。

先ほどもとあるファイルを展開しようとして、zipファイルをダブルクリックした。しかし、このファイルは不要と気付いたため「キャンセル」ボタンを押したのだが、そこからうんともすんともいわなくなった。

アーカイブユーティリティ

command + option + escapeで、「アプリケーションの強制終了」を行うとするが、それっぽいアプリは起動しておらず、finderを再起動しても、相変わらず上記ダイアログは出っぱなしだった。

プロセス名がわかればkillできるなと思って調べると、この「アーカイブユーティリティのキャンセル」は、内部的には、

/System/Library/CoreServices/BOMArchiveHelper

であり、dittoコマンドのGUIラッパーとのこと。

そこで、反応しなくなっ「たアーカイブユーティリティ」を強制的にキャンセルというかクローズさせる方法。

「アプリケーション>ユーティリティ」の中の「アクティビティモニタ.app」を起動する

次に、プロセス名から「BOMArchiveHelper」探し、選択→「プロセスを終了」→「強制終了」でOK。

acmonitor

つーか、zipファイルの展開をキャンセルくらいで止まるなよ、と言いたい。ま、Macだからしょうがないね!

Popularity: 4% [?]

written by ANN

5月 22

ニーズが無いだろうけど、書く!

PHPのGDで巨大な画像ファイルを処理すると、負荷がすごい。そこでMacのサーバ限定だけど、sipsコマンドを使うことで低負荷/高速/高画質の画像変換ができるんじゃね?というのが前回のエントリーの内容。

実際に某サーバーの処理を書き換えて試してたところ、うまくいく場合と、いかない場合があることに気づいた。なかなか原因がわからなかったが、やっとわかったので、sipsコマンドをPHPから呼び出す際の注意点について書いてみたい。

sipsコマンドの使い方としては、こんな感じ。

/usr/bin/sips --resampleHeight 100 変換前ファイル --out 変換後ファイル

php内では、ふつうにsystem()でOK.

PHP:
  1. $srcfile = "/var/home/hoge/fuhihi.jpg";
  2. $dstfile = "/var/home/hoge/fuuu.jpg";
  3. system("/usr/bin/sips --resampleHeight 100 $srcfile --out $dstfile");

このとき、出力側のファイルとなる$dstfileのパスに、シンボリックリンクが含まれていると、sipsが書き出しに失敗する。

なぜか、入力側($srcfile)にシンボリックリンクが含まれていても問題ない様子。

画像変換した後のファイルの出力において、なぜ区別する必要があったのだろうか。単純にバグだろうか。
いや、普通に考えて画像変換程度で、区別する必要はないだろう。

しかし、そうなってる以上、考えてもしょうがないで対策。

PHP:
  1. $srcfile = realpath("/var/home/hoge/fuhihi.jpg");
  2. $dstfile = realpath("/var/home/hoge/fuuu.jpg");
  3. system("/usr/bin/sips --resampleHeight 100 $srcfile --out $dstfile");

単純に、sipsに渡すパスに対して、realpath()を通してやることで、シンボリックリンクが実体のパスになるので、これで問題なし。

便宜上、PHPで使う場合…という感じで書いたが、system()からはshell経由で呼ばれるはずなので、shell上でも同じ問題が発生します。

ただし、あくまで出力ファイルのパスにシンボリックリンクが含まれているのがまずいだけであって、たとえば、カレントディレクトリにシンボリックリンクが含まれていても、sipsコマンドのパスに含まれてなければOKです(ややこしい。だからなかなか原因がわからなかった)

最近は、OS X Serverを使ったりしてるので、その周りも後ほど書いてみたい。

Popularity: 11% [?]

written by ANN

4月 16

phpで画像処理する定番といえば、組み込みのGD(PHP: GD - Manual)が定番なのだけれど、どうも処理元の画像が大きいと、非常に処理が重たい気がする。

とある画像データベースサイトでは、デジカメで撮影した画像を大量にアップロード・リサイズする必要があり、GDで処理していたのだが、最近のデジカメは1ファイルが12~15Mバイトもめずらしくなく、コレを何十枚と処理していくと、結局、apacheさんの負荷およびCPUの負荷がハンパなく、すぐにLoad avgが急上昇してしまう。

なんとか改善できないかと考えて、サーバがMac(OS X)だから、sipsコマンド【Scriptable Image Processing System(スクリプト可能イメージ処理システム)】が使えないかと考えた。変換処理をコマンドに任せることでapache(httpd)の負荷も減らせるかもしれないし。

- sips 公式テクニカルノート Technical Note TN2035: ColorSync on Mac OS X
- SIPS コマンド - 画像をコマンドラインで - その1 (リサイズ / 回転 / 反転 など) --- --- 脳みその中身-

試しにいくつかリサイズしてみたところ、体感的にはPHP/GDのリサイズより早い気がした。

気がしただけでは面白くないので、実際に簡単なサンプルを作ってベンチマークをとってみた。
つまり、SIPS vs GDである。

>>>>>続きを読む

Popularity: 19% [?]

written by ANN

9月 25

ちょっと仕事でデジタルフォトフレームを扱う。デジタルフォトフレームとは名前のままだけど、主にJPEGを表示できる小さいインチのディスプレイという感じ。
実際の機能は、メーカー/機種によってさまざまで、モニタのサイズはもちろん、jpeg以外にmp3を再生できたり、
mov/wmvを再生できたりする(まだかなり制限は多いけど)

データは、USBメモリや各種メモリカード、USBケーブルでつないで転送したりする。

ソニーなんかもデジタルフォトフレームを出していて、これから少しずつ利用者が増えてくるデバイスだと思う。

デジタルフォトフレーム D70
ソニー (2008-05-09)
売り上げランキング: 415

しかし、実際使ってみると、思わぬ落とし穴が。

ということで、デジタルフォトフレームを使うときの5つの注意点を挙げてみる。

>>>>>続きを読む

Popularity: 23% [?]

written by ANN

6月 27

Mac OS X 10.4.11(Intel) にて、Fireworks CS 3 にてバグらしき動作 2件あり。

1.エディタ(文字編集画面)にて、deleteキーが効かない。

よって文字が消せない。Windows版や、v8では問題なかった。しょうがないのでControl + Hにて代用。
どうせ次バージョンで対応なんだろな。

2.特定フォント+特定サイズ+アンチエイリアスの種類によって文字が欠ける

fwcs3-bug.png

最初、文字の上になにかオブジェクトが載ってるのかと思ったら、どうもそうじゃない。特定の文字+特定のフォント+特定のサイズ+特定のアンチエイリアス設定で、文字が欠けるようだ。

発生条件は、
「ヒラギノ 明朝 Pro W6」「13pt」「アンチエイリアス-スムーズ」で、「ら」の文字が、一部、欠ける。
この条件が一つでも違うと、ちゃんと表示される。謎すぎる。

似たような現象の人
Adobe Fireworks CS3(Mac)+モリサワフォントで生じるバグ - Por toda a minha vida

この方は、モリサワのフォントで似たような症状が起きてる。アンチエイリアスをシステムのアンチエイリアスにすると回避できるという点も同じ。

気になったので、手持ちの書体でいろいろ調べてみた。

>>>>>続きを読む

Popularity: 15% [?]

written by ANN

4月 14

きっと、役には立たない情報...。

某社の紙面製作環境はいまだにMacOS9が利用されている。取引のある印刷会社がIllustrator8までしか対応してなかったり、外注先と環境をあわせたり、過去のデータの改版等が結構あり、フォント環境を以降しきれずにいたりということが理由にあげられるが、要はそんなに予算が...。

そんな環境の中、未だにQuarkExpress3.3Jが使われていたりする。今回は何十ページもあるQuarkのページを1ページずつEPS化していく必要がでてきたので、それを自動化するのにAppleScriptを利用した。Quarkのバージョン上げたらまるごととPDF化できて楽なんじゃないだろうか? などと思いながらもやってみる。以前にも配置されている画像を収集しなおし、リネームして新規保存するみたいなスクリプトは作ってみたりしていたので、なんとなーくわかる程度のレベルだ。

ちなみにEPS保存するソースはまんまのものがあった。

連載[7-3] QuarkXPressスクリプティング入門

んで↑にフォルダ作成とかリネームとかいろいろ付け加えて作ってみて終わりと思っていたのだけど、問題発生。なんでだか分からないが、EPS保存したB5サイズのものが1.2倍くらいの大きさになっている。QuarkのEPS保存には「比率」という項目があり、 これをスクリプトで設定できたらそれでお終いのはず。だが、そのプロパティが見つからない。AppleScriptのQuarkExpressの用語集を開いてもsaveクラスにはそんなプロパティはない。

ググってみると

http://www.oomori.com/applescript/00000081/00002939.html

上記ページにscaleというプロパティを発見するが、どうも4.10以降に新しく追加されたプロパティのようだ。んじゃ3.3の時はどうすんのだー?と試行錯誤する。用紙サイズ、プリントの設定...。

で、たどりついたのが画面表示サイズ。どうやら画面上の表示サイズがEPS保存時のサイズに影響するようだ。画面表示サイズを実寸サイズ表示にしてスクリプトを動かすと、正しいサイズのEPSを作成してくれる。後はスクリプト上で画面表示を実寸サイズにすればいいだけだ。ということで画面表示サイズを変更できるクラスとプロパティを探す。

http://www.oomori.com/applescript/00000081/00002969.html

default documentクラスに「view sale」というプロパティを発見。数値の指定の仕方がよくわからなかったが、100%ということで以下のように設定してOKのようだ。
(※正直AppleScriptよくわからん)

--前略
tell application "QuarkXPress"
--表示倍率を実寸表示にする
tell document 1
set view scale to 100
end tell
--ページ数をカウント
count every page of document 1
set numOfPage to result
--各ページをEPS保存する
repeat with i from 1 to numOfPage
set newFile to manName & "_" & (i as text) & ".eps"
save page i of document 1 in newFolderPath & newFile EPS format Mac Color
end repeat
end tell
--後略

ちなみにFinderの情報ウィンドウというのだろうか?「アプリケーションXXXが操作を必要としています。」みたいな黄色バックのメッセージを表示するウィンドウの表示を抑制する方法知ってるエロい人いたら教えてください。

Popularity: 9% [?]

written by joy-pop

2月 13

Uさんから質問。

iMac(Intel)で、Office:mac 2004+ATOK 2006を使っていたら、Excelの書類をを開くとき、
いつのまにか、次のようなメッセージが出るようになったとのこと。
ATOK2006

Macintosh HD:Library:Application Support:JUSTSYSTEM:ATOK 2006:Extentions:ATOK 2006拡張ツール.xlaが見つかりません。

フィアル名およびファイルの保存場所が正しいかどうか確認してください。

うーん。なんだろ。単純にATOK 2006拡張ツール使ってないなら、設定からはずせばいいんじゃね?と試してみたが、だめだった。

よくよく見てみると、使っているMacのメインのボリュームが、"Macintosh HD"ではなく、違う名前になっていた。(何かの数値)おそらく、ATOK , Excelをインストールしたときは、"Macintosh HD"だったのだろうが、オペレーションミスで、"Macintosh HD"をリネームしてしまったのだろう。

ボリューム名を"Macintosh HD"に直したら、エラーもでなくなった。

というか、フルパスで記憶しておくなよ、と言いたい。

まぁ、ほとんど居ないとは思うけど、同じようなエラーが起きた人のための記事でした。

Popularity: 9% [?]

written by ANN