2012年10月26日金曜日

新しいMacが発表されましたね

ちょっと遅いですが、10月23日(米国)にAppleのイベントがあり、予想通りiPad miniといくつかの新しいMacが発表されましたね。
iPad miniだけの発表かと思ったらiPad Retinaディスプレイモデルの第4世代へのアップデートやiMacのアップデートなどがありましたね。
iMacは薄く格好良く性能も上がっています。DVDドライブは付いていませんが。
この流れだといずれMacBook ProからもDVDドライブはなくなりそうです。

私は、Mac miniに注目していましたが、前の世代のOS X Server搭載モデルより高速なクアッドコアCore i7 2.3MHzにUSB3.0がついて2万円安くなっています。
気になるのはFusion Driveです。そろそろ2007年Mac miniを買い替えたいと思っているので、調べないと。ベンチマーク結果や仕組みを知りたいと思います。

しかし、このところモニタの調子が悪くなってきたのでiMacも検討候補になってしまいました。Thuderboltディスプレイに24インチモデルがあるといいのですが。

2012年10月19日金曜日

ClamXavとSophos Anti-Virusの非科学的な比較 [追記]

自宅のMacでは、ウィルスチェッカーとしてClamXavをメインに使っています。Sophos Anti-Virusもインストールしていますが、オンアクセス(常時監視)はしていません。

私の環境で感じたそれぞれの長所と短所を書いてみます。






ClamXav


ClamXavの長所
  • Sophos Anti-Virusより軽い(と感じる)。ベンチマークをしたり、同じ条件になっているかわかりませんので(アーカイブの中の検索など)、単なる個人の感想です。

ClamXavの短所
  • ClamXav Sentryという常駐プログラムで、あらかじめ決めておいたディレクトリを監視することができます。が、すべてのディレクトリを設定しているわけではないので、ちょっと心配です。
  • たまに、ClamXav Sentryが起動はしているのにオフ状態になっていることがあります。








Sophos Anti-Virus for Mac Home Edition

Sophos Anti-Virusの長所
  • すべてのファイルをオンアクセス(常時監視)できます。

Sophos Anti-Virusの短所
  • コンフリクトするアプリケーションがあります。Cyberduckなど。どちらに原因があるのかわかりませんが。
  • 他のプログラムと競合してそのプログラムの速度が遅くなることがあります。Time Machineや、ディスクユーティリティのアクセス権の修復時が多いです。アクセス権の修復はわかる気もしますが、Time Machineでバックアップしている時は何とかする方法はないでしょうか。
  • 動作タイミングがおかしいのでは、と思う時があります。例えば、ファイルをダウンロードしたり、ソフトウェア・アップデートが終了した時点では特に何も動作していないように見えて、その後、intercheckプロセス(Sophos Anti-Virusの一部)が、CPUを100%近く使い続けることが時々起きます。多分チェック自体はちゃんとされているのでしょうが、気になりました。

その他
どちらも、Widowsのウィルス(かアドウェア)は見つけてくれた実績はあります。また、ウェブなどで調べてもどちらも評価はそれなりにいいようです。Macのウィルスは見つかったことはありません。

改めてこうして見ると、ClamXavを使ってはいますが、私のMacの性能が高ければ、Sophos Anti-Virusを使うという手もあるのかなと思いました。Cyberduckとのコンフリクトについては解決してほしいですが。
[追記: CyberduckとSophos Anti-Virusのコンフリクトの一時的回避方法の記事を書きました]

2012年10月18日木曜日

シェルスクリプトを実行するAutomatorドキュメントでアプリケーションしか保存していなかった場合?

Automatorでシェルスクリプトを実行させることができますが(1, 2)、保存するときにアプリケーション形式でしか保存していないと、そのアプリケーションはAutomatorではもう編集できません。と書いてあるブログやツイートがいくつかありました。
初めは信じていたのですが、うっかりアプリケーション形式でしか保存しなかったものがあり、確かめたところ、そういうことはないようですね。バージョンなどが違うのかもしれませんが。私の場合はSnow Leopardと古いので、以下のようです。

確かに、Automatorで作成したアプリケーションをFinder上で右クリックしても、「開く」メニューしか出ませんが、Automatorを立ちあげて「開く」を選ぶと編集できます。わざわざファイルの種類に「アプリケーション」が出てきますね。
ちゃんと表示されて、再保存、別名で保存もできました。
作成したアプリケーションのパッケージ中にある document.wflow を見ると、そこにシェルスクリプトが書いてあります。ですのでそちらからスクリプトを回復する記事を書こうと思った訳ですが、そこまでする必要はなかったようです。

2012年10月16日火曜日

ZumoDriveの残骸を削除

以前、ZumoDriveを使っていました。

DropBoxのようにネットワーク上にファイルを保存できるサービスです。ローカルに保存するフォルダのサイズを、ネットワーク上に保管するフォルダのサイズより小さくしてもかまわないというところがユニークなサービスでした。
残念ながらZumoDriveはサービスが終了してしまったので、アンインストールしたのですが、今日、~/Library/Context Menu Pluginに、_ZumoDriveCM.plugin というプラグインが残っているのを見つけました。Uninstallerを使ったはずですが、漏れていたのでしょうか。

いつもなら、もうそのプラグインは使われていないと思って、ターミナルからrmコマンドで消すところですが、ゴミ箱に入れてから消そうとしました。そうすると、
「項目“_ZumoDriveCM.plugin”が使用中なため、操作は完了できません。」
と言われ削除できませんでした。

プラグインはFinderから使っていたので、Finderにでも読み込まれたのだろうかと思いましたが、念のためlsofコマンドで調べたら、Firefox、Excel, Word, PowerPointが_ZumoDriveCM.pluginをオープンしているようでした。
一旦、Firefoxなどを終了させてから再度ゴミ箱を空にしたら、今度は削除できました。もしかしたら、消されずに残っていたのも、何かのアプリケーションから使われていたためかもしれません。

rmコマンドだと別のアプリケーションから使われていても無理やり削除できたりするので、ゴミ箱に入れて消す方がよさそうです。
また、FirefoxやWordなどのアプリケーションからZumoDriveを使うことができたのか、今となっては調べられませんが、ちょっと気になります。

プレビューで保存するPDFの圧縮率を調整する

Macで作成したドキュメントをPDFに変換した時に、そのファイルサイズが大きいと思うことがあります。
例えば、同じPowerPointファイルをWindows上とMac上でそれぞれPDFに変換してみると、Mac上のPDFの方が大きいことが多いようです。
そのような時、Mac上ではプレビューでPDFファイルを圧縮することができます。
手順は次のとおりです。
(1) 圧縮したいPDFをプレビューで開きます。
(2) 「別名で保存」メニューを選び、フォーマットをPDFにし、「Reduce File Size」を選んで保存します。
元のPDFにもよりますが、半分以下の大きさになることもあります。
ところで、サイズが小さくなるのはいいのですが、PDFの品質が良くない場合があります。
そういう場合に、Quartzフィルタを自分で作ることができます。ColorSync ユーティリティ (/Applications/Utilities/ColorSync Utility.app)を使います。ColorSyncは、元々はディスプレイやプリンタの色調整などをするためのユーティリティのようです。
ColorSync ユーティリティのアイコン

ColorSync ユーティリティを起動した後、フィルタアイコンを選びます。
PDFの圧縮の場合は、この中のReduce File Sizeフィルタをコピーして変更します。右の三角マークを右クリックします。
ここでは、新しい名前をReduce File Size (high)にしています。
もしフィルタがロックされていたら、フィルタを変更可能にするためロックを解除します。
イメージを圧縮の項目で、JPEG 50%になっている部分を、例えば70%程度にします。これは目的に合わせて調整が必要です。圧縮率ではなく品質パラメータと思われます。
また、イメージのサンプリングもオリジナルは50%になっていますが、大きくすると画質もよくなります。ただ、下の図のように100%にすると、PDFが圧縮されず元のサイズより大きくなってしまいましたので注意してください。これは、元の画像からどれ位の割合でデータを拾ってくるかの設定のようです。
設定が終了したら、プレビューでPDFフォーマットで保存する場合、Quartzフィルタから先ほど設定したReduce File Size (high)が使えるようになっています。
お試しください。

2012年10月14日日曜日

スクリーンショットのこと

ブログを書きはじめてスクリーンショットをよく撮るようになりました。
だんだん覚えているところですが、忘れないように自分の使っている方法をまとめたいと思います。


キーボードショートカットでスクリーンショットを撮る方法


command + shift + 3
画面全体のスクリーンショットを撮ることができます。
デフォルト設定では、ファイル名は、スクリーンショット(yyyy-mm-dd hh.mm.ss).png になります。yyyy-mm-dd hh.mm.ssの部分は、2012-10-14 9.12.56のような日付と時間になります。
保存場所は、デスクトップフォルダです。画像のフォーマットはPNGです。
これらのデフォルトは変更可能です。(後に変更方法を書きます。)

command + shift + 4
アプリケーションやフォルダのウィンドウ単位でのスクリーンショットや、マウスで選択した範囲のスクリーンショットを撮ることができます。
キャプチャーしたいウィンドウを選択した状態
キャプチャーしたい範囲を選択した状態


アプリケーションでスクリーンショットを撮る


Macに標準でついてくるアプリケーションでスクリーンショットを撮ることができます。
「プレビュー」と「グラブ」があります。
メニューとQuicksilverによるアイコンを出しておきます。
プレビュー

グラブ

アプリケーションを使う方法は覚えた頃は使っていましたが、今はあまり使っていません。ほとんどキーボードショートカットを使っています。マウスポインタなどを入れたい場合は、次のターミナルコマンドを使っています。


ターミナルコマンドでスクリーンショットを撮る


Mac OS Xには、screencaptureというスクリーンショットを撮るためのコマンドが用意されています。
いろいろオプションはありますが、私はマウスポインタを取りたい時に使っています。
デフォルトの画像フォーマットはPNGです。
基本形 (画面全体を撮る)
screencapture ファイル名.png
基本形 (ウィンドウを撮る)
screencapture -w ファイル名.png
基本形(選択した範囲を撮る)
screencapture -s ファイル名.png
5秒後にスクリーンショットを撮る
screencapture -T 5 ファイル名.png
5秒後にマウスポインタの入ったスクリーンショットを撮る
screencapture -T 5 -C ファイル名.png


スクリーンショットのデフォルト設定を変更する


スクリーンショットを撮る場合のデフォルト値を変更することができます。
ターミナルのdefaultsコマンドを使います。
なお、defaultsで変更したらその後、SystemUIServerを再起動しないと有効になりませんので注意してください。
killall SystemUIServer

- スクリーンショットの保存場所を変更できます。次の例は、保存先をダウンロードフォルダにしています。
defaults write com.apple.screencapture location ~/Downloads

- ウィンドウのスクリーンショットを撮る際に、影を入れるか入れないかを設定できます。次の例は、影を入れないようにしています。
defaults write com.apple.screencapture disable-shadow -boolean true

- 画像フォーマットを変更できます。私は、PNGのままでプレビューなどで変換しています。
defaults write com.apple.screencapture type [jpg|gif|png|tif|pdf...]

Windowsファイル共有のファイルパス名をWindow形式に変換する

会社でもMacを使っているのですが、ファイルサーバはNASによるSMB共有(Windowsファイル共有)になっています。
普通に使っている分にはそれほど困らないのですが、Windowsを使っている人が大部分なので、ファイルの保存場所を連絡するとき等に、少し面倒くさいことがあります。

Mac OS Xでは、ファイルのパス表記は、
/Volumes/Server/somefolder/some.file   (Unix形式パス名)
になりますね。スラッシュの代わりにコロンで区切ったMac OS形式もありますけど。
一方Windowsでは、上の例ですと
\\Server\\somefolder\some.file
となります。
WindowsユーザにUnix形式のパス名を教えても、アクセス出来ないと言われますので、Windows形式で連絡するのが親切かなと思います。
よくやるのは、Unix形式のパス名をメーラにコピー・ペーストして修正する方法です。
たまに、Windowsマシンも持っているのでそちらから入って同じ場所をアクセスして連絡することもあります。どちらにしろ度々あると面倒になってきます。

そこで現在は、以下のようにしています。少しはましになったかなというところです。

まず、準備です。
(1) Automatorでシェルスクリプトを実行を選んで次の行を入力します。(1行です)

echo "$@" | iconv -f UTF-8-MAC -t UTF-8 | sed -e 's/^\/Volumes/\//' -e 's/\//\\/g' | pbcopy

以前の記事の「Automatorでシェルスクリプトを実行する」も参考にしてください。
iconvコマンドでは、UTF-8文字コードをMacで使われている形式からWindowsなどで使われている形式に変換しています。これをしないとカナの濁音記号などが別の文字になったりします。
sedコマンドでは、先頭のVolumesを削除して、スラッシュをバックスラッシュに変換しています。
pbcopyはクリップボードに文字列をコピーします。別アプリケーションでペーストして使えるようになります。
(2) このAutomatorのワークフローをアプリケーションとして保存します。例えば、towinpath.appのような名前にします。
以上で準備は終わりです。

次に使い方ですが、以下のようになります。
(3) Finderで連絡したい共有サーバのファイルやフォルダを選択します。
(4) Quicksilverを使う場合、
    command + esc キーで(3)のファイルが選択された状態でQuicksilverを開きます。
    2ndペインに移って、open with... Actionを開きます。私の場合は、owで出てきます。
    3rdペインに移って、先ほどのAutomatorアプリケーション名(towinpath)を入れてリター
    ンします。

    Quicksilverを使わない場合は、(3)のファイルを(2)のtowinpath.appにドラッグアンドド
    ロップします。
(5) この状態で、クリップボードにWindows用パス名がコピーされた状態になっています。後は、例えばメーラ上でペーストするなりして連絡すればOKです。


2012年10月13日土曜日

iPhoneのiPodアプリのPodcastが消せない

考えてみると、はじめてのiPhoneネタです。
iPhone4を使っています。32GBモデルなのですが、いつも使用可能容量が16GB以上余っています。使ったこともないアプリもかなり入っていてこの状況なので、16GBモデルでもよかったかもしれないと思っています。これは本題ではないのですが。

iPodアプリでPodcastを表示したら10個ほどPodcastが残っているのに気づきました。でも、MacのiTunesからiPhoneのPodcastを見ても何もありません。以前聴いたPodcastが何故かiPhoneに残ってしまったようです。

残っているPodcastは聴いたことがあるものだったので、消そうとしたのですが消し方がわかりません。Podcastの一覧が表示される画面で削除設定も出せるのではないかと思っていたのですが、特に見当たりません。

探しても見つからないのでウェブで検索すると、削除したいPodcastの上でスワイプするとdeleteボタンが表示されるのでのでそれを押せばいいとわかりました。
iPhoneからPodcastを削除するにはどうしたらいいでしょうか
そういえば、VLCやGoodReaderも同じ操作なのを思い出しました。ありがとう、Yahoo知恵袋。

あまり関係ありませんが、Podcastは、通常の速度以外に、2倍速や1/2倍速で再生できるんですね。1.5倍や3/4倍のようにもう少し調整できるといいように思いました。
それから再生位置の調整も、プログレスバーのボタンを押したまま下にスライドするとスクラブという微調整(1/2, 1/4, 細かく)ができるんですね。iPodアプリで削除の方法を探していて知りました。

2012年10月7日日曜日

growlnotifyをiCalのアラーム代わりに使ってみる

iCalにイベントを登録して、時間が来たら知らせてくれるようにアラームを設定しています。朝など忘れやすいので、結構便利に使っています。

ただ、毎日決まった時間にやらないといけないことをiCalに繰り返しイベントとして登録していると、iCalの画面が同じイベントで溢れて、その他のイベントが見づらくなってしまいます。下の図はそれほどでもないですが。

iCalのカレンダーの種別を追加して、「定期的(隠す)」ためのイベント用を登録して普段は表示しない設定にすれば、隠すこともできますが、別の方法はないか考えてみました。

イベントの通知といえばGrowlですがそれに含まれているgrowlnotifyを使うとスクリプトベースで画面に通知を表示できそうです。環境はSnow LeopardとGrowl 1.2.2で試してみました。
全体の流れは、(1) growlnotifyのインストール、(2) 表示用スクリプト作成、(3) crontabへの設定となります。

(1) Growlのインストールだけでは、growlnotiryはインストールされませんので、Growlのインストールの後に、growlnotiryをインストールします。Growlのインストール用ディスクイメージをマウントすると、Extraフォルダの下にgrowlnotify.pkgというインストールパッケージがあります。
そのパッケージをインストールすると、/usr/local/bin/growlnotifyに実行ファイルがコピーされます。(Suspicious Package qlgeneratorより)
grwolnotifyのmanページもインストールされるので、それを見ると使い方は大体わかります。

(2) manページなどを参考にスクリプトを作成します。以下に例を示します。(ブログ用にちょっと簡略化していますが)

#!/bin/sh
/bin/date "+今日の%H:%M%n金魚にえさ" | /usr/local/bin/growlnotify -s -a iCal -d feed crontab

このスクリプトに、kingyo.shのような名前をつけて実行権限を付けて( chmod +x) おきます。
このスクリプトを実行すると、次のように表示されます。
growlnotiryの-sオプションは、表示がタイムアウトしないようにします。左上に現れるクローズボックスで表示を消せます。

-aオプションは、アプリケーションアイコンを指定します。iCalを指定したらiCalのアイコンが表示されます。なくてもかまいませんし、他のアプリケーションを指定することもできます。
-dオプションは、現在発行しようとしている通知にIDを付けるものです。既に同じIDのGrowlのウィンドウが開いていると、新たにウィンドウを開かずに、既に開いているウィンドウの内容が上書きされます。
最後の引数のcrontabは、ウィンドウの一行目に表示されるタイトルです。自分はcrontabで表示させるのでこうしましたが、これもiCalや他の好きなタイトルにすればいいと思います。
また、dateコマンドの+オプションで日付を含むメッセージを表示できます。それぞれ、%Hが24時間表示の時間、%Mが分、%nが改行を示します。

(3) 上で作ったgrowlnotify用スクリプトがちゃんと表示されるのが確認できたら、crontabに登録して定期的に実行できるようにします。最近の流儀に合わせてlaunchdで自動起動を指定してもいいと思います。(ここではcrontabを説明します)
crontabの現在の登録内容を確認するためのコマンドは、
$ crontab -l
です。出力内容をリダイレクトしてバックアップをとっておくといいでしょう。
crontabでデータベースを直接編集する場合のコマンドは
$ crontab -e
です。vimではなく、nanoやemacsを使う場合、環境変数EDITORにそのコマンドを設定してください。emacsを使いたい場合は以下のとおりです。

$ export EDITOR=emacs

朝7時30分に実行する場合は、以下のようになります。
30 7 * * * $HOME/bin/kingyo.sh
既に他の定義がしてある場合は、最後の行にでも追加するといいと思います。
crontabのデータベースのフォーマットは、タブコード区切りで、順番に分、時間、日、月、曜日(0が日曜日)、コマンドとなっています。
現在の時間に近い時間を設定してテストするといいと思います。

以上ですが、実はiCalにも通知の頻度は落としていますが(毎日ではなく、何日に一回とか)、同じイベントを記入したままにしています。
今のところ、スケジュール関係のデータベースはiCalをメインに考えていますので、データとして残しておきたいため、そのようにしています。

2012年10月6日土曜日

インターネットからのアプリケーションが起動されて、セキュリティが気になる時

たまに、インターネットからダウンロードされたアプリケーションが意図せず起動される時があります。
例えば、Safariを使っていて、Flash Playerのアップデータが見つかった場合などです。
こんな場合、みなさんはどうしていますか。
私は、Dockに現れたアプリケーションをFinderに表示してから、上の図のように「開いてもよろしいですか?」と聞いてくるウィンドウを一旦キャンセルしています。
その後、今回のようにある程度素性がわかっているアプリケーションの場合は、簡単にウィルスチェックなどしてから、改めて起動しています。私のMacではClamXavをメインに使っています。
ウィルスチェックがOKになった後、よく知らないアプリケーションの場合は、ウェブで検索して問題ないと判断すれば実行しますが、わからない場合、基本的には無視することにしています。本当に必要なものだったら、そのうちまた現れてきて、ウェブにも情報が上がってくると思います。

それから、ソフトウェアのアップデートをした時、すぐにインストーラが起動する場合があります。こういう場合もウィルスチェックや中身の確認をある程度できる場合もあります。
下の図は、ClamXavのエンジン(ClamAV)のアップデータをインストールしようとしているところです。
ここで、タイトルバーのパッケージアイコンを右クリックすると、下の図のようにそのパッケージが保存されているフォルダの階層が表示されます。

ここで、位置階層上のResourcesフォルダでマウスを離すと、対象のパッケージが選択された状態でそのフォルダが開きます。ClamXavのResources領域にアップデートパッケージがダウンロードされるんですね。
このパッケージファイルに対してウィルスチェックをすればよいと思います。
また、QuickLookにSuspicious Packageというジェネレーターがあり、それを使うとインストールされるファイルや、インストールスクリプトを見ることができます。私は、インストール先を見るときにたまに使うぐらいで常用しているわけではありませんが。
Sophos Anti-Virusのような常時チェックするタイプのウィルスチェッカーを使えば良いのかもしれませんが、ちょっと私の環境では不具合があり、ClamXavをメインに使っています。