月別: 2013年9月

iCloudのBookmark同期とは異なったもう一つのBookmark管理方法-2ーWebloc_UrlFile.app

■「.webloc」ファイルから「.url」ファイルへ変換するWebloc_UrlFile.app

e5b5cDropBox内に「.url」ファイルを置いて、異なる環境のマシン間でBookmarkを共有することを目標としたいのですが、「.url」ファイルを直接ブラウザから作る手だてがありません。
そこで、一旦ブラウザで作成した「.webloc」ファイルを「.url」ファイルへ変換することにしました。
Webloc_UrlFile.appです。
Safari、Firefox、Google Chromeいずれのブラウザからの「.webloc」ファイルであっても自動判別して、「.url」ファイルに変換します。ドラッグ&ドロップにも対応していますが、スクリプトメニュー内のFinderスクリプトフォルダ内に入れてお使いください。Finder上で「.webloc」ファイルを選択した状態で、スクリプトメニューからWebloc_UrlFile.appを実行すれば変換します。
複数のファイルを対象にしてもOKです。

■ダウンロード
http://amstudio.sytes.net/amweb/Webloc_UrlFile.iso.zip
※Webloc_UrlFile.appの著作権は放棄いたしませんが、対価は不要です。自己責任で、自由にお使いください。
インターネット上のリンクは、作者への事前/事後の承諾は不要ですので、自由にリンクして下さい。
基本的に、再配布・転載は認めません。

■保証
動作に関する保証はいたしません。また、使用によって生じたと思われるいかなる損害に対しても、作者は一切責任を負い ません。使用は御自身の責任において行なってください。

広告

iCloudのBookmark同期とは異なったもう一つのBookmark管理方法—1

iCloudサービスが始まってから、SafariのBookmark同期は本当に便利です。SafariのBookmark同期サービスが始まる前までの、あの苦労は何だったのかという思うくらいです。同じApple IDでログインしている限り複数のOS Xマシン、iOSデバイス間でSafariのBookmarkが同期されます。
このBookmark同期とiCloudタブを合わせると、これ以上は必要ないのではと思わせるほどですが、なかなか、人の欲望はきりがないものです。
というのは、追加/削除、更新が頻発するBookmark群が発生するのです。短期的なプロジェクトごとのBookmarkや、ウィッシュリスト集などがそれで、頻発する変更作業をSafari上で編集・加工するのは結構面倒。
そこで、気になる商品をWebでピックアップしている裡に思いついたのが、ウェブロケーションファイルを保存する方法です。

■ウェブロケーションファイル
OS XのSafariでウェブロケーションファイルを作るのは簡単です。
Safariで任意のサイトのページを開いた状態で、ウィンドウ丈夫のアドレスバーの左の小さな地球のアイコン(あるいはそのサイトのFavicon)をドラッグして、デスクトップでもその他のディレクトリでもいいので適当な場所へ、その小さなアイコンをドロップすれば「.webloc」という拡張子を持ったウェブロケーションファイルができあがります。この「.webloc」ファイルをダブルクリックすれば、そのサイトがSafariで開きます。
Safariのブックマークメニューやブックマークバーからプルダウンしてサイトを開くよりも直感的でもあります。
また、この「.webloc」ファイルはFinder上で、通常のファイルと同じように管理(検索、移動、並べ替えなど)できるので、1ファイル<->1サイト対応のショートカットとして便利です。
そして、この「.webloc」ファイルをカテゴリごとにフォルダ管理し、そのフォルダをDropboxなどのCloudストレージに置く。こうすれば、複数のマシンからアクセスできるだけでなく、iOSデバイスからも利用できそうです。
ここまで考えて、いろいろと試してみました。

■「.webloc」ファイルは1種類ではない
Safariと同じように、Firefox、Google Chromeでもウェブロケーションファイルは同じような操作で作成できます。拡張子も「.webloc」で同じです。
ところが、SafariとFirefox、Google Chromeで作成される「.webloc」ファイルは、ファイルの構造が違っています。
Safariの作る「.webloc」ファイル

cc2d9

Firefox、Google Chromeが作る「.webloc」ファイル

f1bbc

Firefox、Google Chromeが作る「.webloc」ファイルはきれいな(?)xmlファイルですが、Safariの作る「.webloc」ファイルはバイナリ形式のplistファイルで、先頭の文字列‘bplist’がこれを表しているようです。このバイナリ形式のplistファイルは、一般のテキストエディタで開くとコントロールコードを含んだまま開いてplistと同じようには扱えません。
(しかし、TextWrangler.appであればXML形式のplistファイルとみなして開くことができます。編集後、保存の際にはバイナリ形式のplistファイルとして保存することができるようです)

■ウェブロケーションファイルにはもう1種類ある
ややこしいことに、ウェブロケーションファイルにはもう1種類「.url」ファイル形式があります。
この「.url」ファイルはWindows環境と互換性があり、Windowsマシン上で1ファイル1サイト対応のショートカットとして使用できます。
Safariが世に出る前は、Macintoshの標準ブラウザはIEでした。IEで、SafariやFirefox、Google Chromeと同じような操作で作られるウェブロケーションファイルはこの「.url」ファイル形式だったのですが、残念ながら現時点では簡単に作成する方法がありません。
2006年頃には、WeblocMakerという名前のアプリケーションで、URLを入力すればMacintosh/Windowsそれぞれの形式でインターネットロケーションファイルを作成できるものがあったのですが、Intel版が作成されることはなく消えてゆきました。

「.url」ファイルは図のように、単純なテキスト形式で、

618ce
[InternetShortcut]
URL=http://www.google.co.jp/

という記述形式となっています。

■「.webloc」ファイルと「.url」ファイル
「.webloc」ファイル、「.url」ファイルはどちらもOS Xマシン上では同じように動作します。
WindowsマシンとのBookmark同期を考慮すれば、「.url」ファイルを選択するしかありません。
では、「.url」ファイルをどのように作成するのか、ということになるのですが、その前に、Cloudストレージ上に「.webloc」ファイルと「.url」ファイルを置いた場合に、iOSデバイスからのアクセスがどうなるのかいくつかチェックしてみました。

・SugarSync

「.webloc」ファイル、「.url」ファイルともにSugarSync内では単なるファイルの扱いで、その他のアプリケーションで開く、という流れで使うほかないようです。

・SkyDrive

Sugarsyncとほぼ同様ですが、その他のアプリケーションで開くためには1ステップ工程が多く必要になります。

・Norton Zone

期待しているCloudストレージですが、現時点で日本国内のアップルストアからはiOSアプリケーションがダウンロードできない状態なので、チェックできません。

・Yahoo!ボックス

「.webloc」ファイル、「.url」ファイルともに“対応していないフォーマットです。”というダイアログが出るだけで、その他のアプリケーションで開くという選択肢もありません。もうちょっとどうにかなってほしいところです。

・DropBox

さすがの真打ちです。「.webloc」ファイル、「.url」ファイルともに内部のテキストを直接表示します。

「.webloc」ファイルでは、Safariのもの、Firefox、Google Chromeのものどちらもテキストエディタで開いた状態に表示しますが、リンク機能としては、両者とも文字列の末尾にゴミがつきやすく、そのままではリンクエラーを起こしてしまうケースが多発します。
「.url」ファイルでは、問題なくリンクが機能します。

結論として、DropBox内に「.url」ファイルを置けば、OS Xマシン、Windowsマシン、iOSデバイスいずれの環境からでも同じBookmarkが使えるということになります。

更に、iCloudを経由した環境の同期

e86d7iClouDrive.appを使って、mi.appのツールフォルダをもう一つのマシンと同期させましたが、同じ手法で、スクリプトメニューのユーザスクリプトフォルダ、TextWrangler.appのスクリプトフフォルダを同期させました。

66398

iClouDriveフォルダの本体は、‘~/Library/Mobile\ Documents/iClouDrive’にあり、アクセスしやすいようにシンボリックリンクがホームディレクトリにあります。
スクリプトメニューのユーザスクリプトフォルダの置き場所‘~/Library’にはシンボリックリンクで‘Scripts’フォルダを置き、TextWrangler.appのスクリプトフフォルダは、‘~/Library/Application\ Support/TextWrangler/Scripts’の中に‘TextWrangler_Script’のシンボリックリンクを置きました。

■iClouDriveを使うメリット

  • iCloud経由ですので、Macintoshで扱えるファイル名であれば同期時に制限を受けない
  • 他のクラウドストレージと比べても、小さいファイルでは同期が速い

という点がiClouDrivを使うメリットとしてあげられます。予想以上にレスポンスはいいです。

ユーザスクリプトフォルダの同期では、システム環境変数に関わる系統のスクリプト/アプリケーションでは誤動作が発生しますし、パスワードやユーザ名を保持するタイプのものも誤動作を起こしやすいでしょう。その辺りのスクリプト・アプリケーションは同期対象から外しておいた方が無難です。

来るOS X 10.9 MavericksではKeyChainもiCloud経由で同期できるようになるみたい(少し難産になりそうな気配ですが…)なので、こういった環境の同期はどんどん進むのでしょう。
この次に同期したいのは、ホットキーですね。

iClouDrive.appを使って、ツールを同期する

DropBox経由のデータ同期に慣れてくると、データをサーバに上げる→サーバからデータをおろす→ローカルの所定の位置に移動する、といったクラウド以前のマニュアル同期の方法がとても面倒になってきます。
また、複数のマシンで作業をすることになると、環境を合わせることも結構な手間がかかることになります。
便利を知ると後戻りできなくなるということなのでしょうが、現時点で、作業環境が同期できないことは大きな苦痛となってきました。
最近の環境の修正で、クラウド経由で同期できるようになったことは、

  • iCloudの各種サービスの同期
  • 副次的にことえり辞書の同期

などですが、こうなってくると、ドキュメント系だけでなく作業環境も同期可能なものはないかと考え始めます。できればAdobe系のアプリケーションのプラグインなども同期できるとありがたいのですが、これはかなり面倒というか難しそうです。
少し手近なところで、mi.appの‘ツール’の同期から考えることにしました。

■mi.appの‘ツール’の同期

  • ‘ツール’フォルダをクラウドに置く
  • mi.appの‘ツール’フォルダがあるべき場所にはクラウド上の‘ツール’フォルダのシンボリックリンクを置く

この線で考えます。
クラウドは、レスポンスがよいところでないと同期のタイムラグが気になります。また、ファイル名で互換がとれないケースも考えられます。
SkyDrive、Norton Zone、Yahoo!Box、DropBox、iCloudをそれぞれ試みましたが、「㈰→①機種依存文字」「列反転1<->2」などのファイル名があると、DropBox、iCloud以外は同期がストップするかエラーアラートが出てそのファイルが除外されることになりました。
で、今回はiCloud経由とし、設定ツールにiClouDrive.app<http://www.zibity.com/icloudrive>を使ってみました。

e86d7iClouDrive.appは、‘~/Library/Mobile\ Documents/’に‘iClouDrive’というフォルダを作成して、データ同期を行うものです。アクセスを容易にするために、ホームディレクトリにシンボリックリンクが置かれます。

  • mi.appの‘ツール’フォルダを‘~/Library/Mobile\ Documents/iClouDrive’に置きました
  • mi.appの‘ツール’フォルダがあるべき場所、‘~/Library/Application\ Support/mi3/mode/Normal/’には‘ツール’フォルダのシンボリックリンクを置きました


結果OKです。

TextWrangler.appのスクリプトメニューにショートカット設定

もうあと少しでメインエディタの位置に座ってもおかしくないのですが、日本語の扱いの部分でいまいちメインに座れない残念なエディタがTextWrangler.appです。
残念な部分は、

  • 句読点を文字区切りとして認識しているらしく、ホワイトスペースが混じる段落では、妙な位置で行の折り返しをしてしまう(句読点で挟まれたかな漢字部分を大きな単語として扱っているような感じ)
  • もちろん、禁則処理に対応していない
  • もちろん、かな⇔カナ⇔カナなどの文字種変換機能は持っていない

などでしょうか。
とはいえ、この不満点を補ってあまりある程の便利な面もあります。

  • サイズの大きなファイルを難なく開ける
  • 自動判別では開けないエンコーディングの不明なファイルを、オープンダイアログからエンンコーディングを手探りで指定しながら開くと開けてしまったりする
  • バイナリplistファイルを、XMLplistファイルのように開いて編集できてしまう
  • 豊富なメニューコマンドのほぼ全てにAppleScriptからアクセスでき、ダイアログを介した検索などのコマンドでもレコーディングできてしまう

などが便利な点のいくつかでしょうか。
「Text」メニューの項目を見るだけでも多機能ぶりが分かります。これで無償ですから頭が下がります。
e7821

■スクリプトメニュー
TextWrangler.appのスクリプトメニューはこんな感じです。

ea82e

上記のように、ほぼ全てのメニューコマンドをAppleScriptでコントロールできます。Grepでの検索置換、ソートなどもオプション設定を含めてスクリプトで記述できますので、複数の処理ステップを含んだマクロ処理までスクリプトで実現できます。
サブフォルダの「TextWrangler_Script」は自作のスクリプト集ですが、図のように、サブフォルダのスクリプトでもショートカットを割り当てることができます。

c0728
ショートカットの割当は、「Window」メニューの「Palletes」から「Scripts」を選択すると開くパレットから指定できます。

ファイルの日付スタンプを変更する—2-‘SetFile’

その後、‘touch’で色々と試しましたが、‘touch’コマンドの仕様として、<http://d.hatena.ne.jp/zariganitosh/20101210/falsify_file_info>で指摘されているように、

  • 指定した日時が作成日時よりも古ければ、作成日時・更新日時・アクセス日時を更新する
  • 指定した日時が作成日時よりも新しければ、作成日時はそのまま。更新日時・アクセス日時のみ更新する
  • たとえ-aや-mを指定しても、作成日時より古い日時であると、作成日時も更新する

といったものとなります。
つまり、作成日時を既定値よりも新しくすることは出来ないということです。また、‘-m’オプションで更新日時のみを既定値よりも古くすることは出来ない訳で、いってみればオプションを使う意味はあまりないという結論になります。
う〜ん、残念な(とは言え、本来はこれが普通なのでしょう)結論です。

結局、Xcode.appをインストールして‘SetFile’コマンドが使えるようにしました。
マニュアルがAppleのサイトにあります。
<https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/SetFile.1.html>
どうやら、‘SetFile’コマンドはファイル属性を扱うコマンドのようで、不可視属性やタイプ&クリエータまで書き換えられるようです。

$ SetFile -d 01/01/2013 00:00 file

で、作成日時が変更できます。日時の書式は、mm/dd/[yy]yy [hh:mm[:ss]です。
更新日時はmオプションで、

$ SetFile -m 01/01/2013 00:00 file

なんと、作成日時が更新日時よりも新しいなどという矛盾した設定も可能です。

■AppleScriptでアプリケーション化
AppleScriptでアプリケーションを書いてみました。

03582

Re-set Datestamp.appです。内容は、上記の‘SetFile’コマンドに作成日時、更新日時の選択を行うダイアログを表示する他には、日付フォーマットの整形を‘date’コマンドでやっているだけです。
Re-set Datestamp.appは編集可能な形式のアプリケーションです。改変/加工は自由に行って下さい。

■使い方
スクリプトメニュー内に置いて下さい。
処理対象をFinder上で選択してから、スクリプトメニュー内のRe-set Datestamp.appを起動して下さい。
次のダイアログで、日時と、作成日時あるいは更新日時の指定をすればOKです。

■ダウンロード
http://amstudio.sytes.net/amweb/Re-set_Datestamp.iso.zip
※Re-set Datestamp.appの著作権は放棄いたしませんが、対価は不要です。自己責任で、自由にお使いください。
インターネット上のリンクは、作者への事前/事後の承諾は不要ですので、自由にリンクして下さい。
基本的に、再配布・転載は認めません。

■保証
動作に関する保証はいたしません。また、使用によって生じたと思われるいかなる損害に対しても、作者は一切責任を負い ません。使用は御自身の責任において行なってください。

ファイルの日付スタンプを変更するには?

数年前に書き始めながら休眠中だったプランを改めて練り直す機会が出来て、提出する書類関連をまとめることになりましたが、それらの作成日と修正日を揃えたくなりました。
中心になるファイルは新規作成すればいいことだったのですが、付随資料まで全て新規にするのは作業的につらいので、フォルダ内のファイルを一斉に、例えば、2013年9月10に合わせたいと思った訳です。(少し詐欺的な気分がしない訳でもないのですが…)
遠い昔であれば、迷わずFile Buddyを引っ張りだしたのですが、調べたところ、現役で生き残ってはいました。
しかし、手に入れたとして便利に使うかというと、現時点では微妙です。検索に関しては、インデックスに依存しない方法でのファイル内の文字列検索など便利な機能満載ではあるのですが、OS 9のリソースフォークにリソースデータを収納するファイルシステムではないOS Xでは、システムを構成するファイルの数だけでも100倍は違っています。かつて便利に使った検索機能が、現時点ではあまり使うことのない方法に思えます。痒いところに手が届く程の高機能ではあるのですが、OSの向かっている方向とずれているような気がするのです。
環境はOS Xです。コマンドでやれない範囲ではなさそうだと、いくつかのキーワードで検索しました。
先ずは、ここ。
<http://blog.grapii.com/2010/07/change-a-files-creationmodified-date-on-mac-os-x/>

どうやら、‘touch’でなんとかなりそうです。このページの記述では、作成日、修正日ともに変更可能なように書かれています。

次に見つけたのが、ここ。
<http://d.hatena.ne.jp/zariganitosh/20101210/falsify_file_info>
なにかあると、このサイトに行き着いてしまうというのはある意味すごいことです。
ファイルのタイムスタンプについて、ほぼこのサイトで分かってしまいますね。感謝です。

‘touch’では、「指定した日時が作成日時よりも新しければ、作成日時はそのまま。更新日時・アクセス日時のみ更新する。」という記述が気になり、試してみたところ、その通りの結果です。
‘touch’では足りない部分があるということです。
‘touch’以外に、‘SetFile’というコマンドがありますが、これは、OS X固有のコマンドのようで、初期状態のOS X環境ではインストールされていません。開発環境であるXcode.appがインストールされていないと駄目というか、Xcode.appに付随するコマンドのようです。
Xcode.appがインストールされているマシンから、‘usr/bin/SetFile’をコピーしてみましたが、どうやら参照する別なライブラリが必要なようで、単体のコピーでは動作しませんでした。Xcode.appを入れるしかなさそうです。

rsync3をBackuplist+.appで使う—3

066f1Backuplist+.appのヘルプを読むと、excludeの指定パターンは絶対パスではなく、処理対象のディレクトリをルートにした相対パスだと思うのですが、そのつもりで行った記述では動作しません。
因に、ヘルプでは、

If you are backing up /Users/Homefolder/Documents and want to exclude a folder in Documents called “Taxes” you would enter simply

/Documents/Taxes

If you want to exclude a folder called “Federal” within “Taxes” you would enter

/Documents/Taxes/Federal

These paths begin at the root which is the Documents folder. The asterisk * is called a wild card and means anything afte rthe “Federal” directory is also excluded.

となっています。
実際に動作した設定は、次のようになります。

98969

図のように、ホームフォルダをルートにした場合、ヘルプを参照すれば、‘/nryk/Documents/VM’のように記述しなければならないと思うのですが、実際には、‘/Documents/VM’としたホームディレクトリ以下からの記述で動作しました。
また、小さな不具合ですが、このexcludedタブのリスト欄にファイル/フォルダのドラッグ&ドロップで登録することが出来るはずなのですが、必ずアプリケーションがクラッシュするので、パスは手入力で行いました。

rsync3をBackuplist+.appで使う—2

066f1Backuplist+.appの設定画面を並べてみましょう。
基本的な設定は、上のペインのセットとそのソースとデスティネーションの設定とツールアイコンをクリックするとプルダウンするドロアーの「Setting」で行えます。

80f04

図のようにソースとデスティネーションをフォルダ対フォルダで対応させていれば、下のドロアーのチェックボックスはほとんど不要で、同期モードとしてrsyncのdeleteオプションを使うかどうかの設定くらいでしょう。このdeleteオプションも、後述のAdvanced設定で、カスタムオプションに加えてしまえば済むことで、チェックボックスはチェック無しということもありです。(その他のチェックボックスの項目については、ヘルプファイルが充実していますのでそれを参照して下さい)

機能面では充実していて、図のようにスケジュールオプションまで持っています。
次のExclude Listでは、除外項目の指定が出来ます。パスの指定はフルパスでの指定ではないので注意が必要です。
ファイルの指定では、rsyncの文法に従ってワイルドカードも使用出来るようで、少し試行錯誤してみようと思っています。

ec7cd

その他のセッティングでは、ディスクイメージへの書き出し設定も出来ますし、Automationタブをみると処理前と後でスクリプトファイルの呼び出し実行や、シェルコマンドの実行、Growlへの告知、シャットダウン/スリープまで設定出来ます。ネットワークボリュームへのバックアプなどでは、処理前にネットワークボリュームのマウントスクリプトを用意しておけば簡単に自動処理のシーケンスを組めそうです。
そして、この”Wrapper”のいいところは、最後のAdvanced設定でしょう。

161cd

Expert optionsのチェックを入れることで、その下のテキストフィールドにrsyncのオプションを記述し実行させることが出来ます。
バックアップ処理実行中にメニューからコンソールを呼び出してrsyncのログを表示させることでリアルタイムで動作を検証出来るため、オプション動作のチェックに便利です。
Backuplist+.app 8.3では、デフォルトで、

$ rsync -aHAXN –fileflags –protect-decmpfs –force-change –stats

で動作するようになっていますが、私の環境では–fileflags –force-changeオプションで結構エラーが出るようで、エラーログをみながらオプションの調整が出来るのも強みです。
Include Pathsをチェックすれば、バインドされたrsyncだけでなく、別バージョンのrsyncをフルパス指定で実行出来るようです。

rsync3をBackuplist+.appで使う—1

rsyncがcpやdittoと異なる点は、差分/増分のコピーが出来るところです。つまり、バックアップを効率的に出来るということです。
(cp、ditto、rsyncの基本的な違いなどはここ<http://ext.omo3.com/mac/hdd_backup_cp_ditto_rsync.html>などが分かりやすいでしょう。)
rsyncをターミナルから–stats -vオプションなどを使って実行すれば、経過と結果が標準出力に書き出されますので、それなりに時間がかかったとしても待てるのですが、AppleScriptでアプリケーション化した場合には、経過が見えないので心理的に待つのが辛くなります。
そんな場合は、コマンド信奉者でもない限り、バックアップ用のアプリケーションを使った方が精神衛生上よいはずなので探してみましたが、バックアップ/同期用のアプリケーションは人気のジャンルらしく、なにを選んだものやら盛りだくさんで…。
そんな中で、rsyncの”wrapper”アプリケーションであるという“Backuplist+.app”<http://rdutoit.home.comcast.net/~rdutoit/pub/robsoft/pages/softw.html>を見つけました。

066f1rsyncの”wrapper”アプリケーションであるというだけあって、rsyncの一通りのシミュレーションが出来そうです(daemonモードなどを除いて)。現行バージョンは8.3で、バインドされているrsyncは3.0.9となっていて、‘/Applications/backupList+.app/Contents/Resources/RsyncBuilds/’の中にあります。

b3af4

ソースとデスティネーションのディレクトリの指定は、対象フォルダをドラッグ&ドロップで設定出来ます。注意しないといけないのは、パスの末尾に‘/’が自動では付かないことです。ソースのパスの末尾に‘/’が付く場合と付かない場合の挙動には注意が必要です。
図でいえば、‘/Users/nryk/Applications/’だとApplicationフォルダの中身が、‘/Volumes/NuFoundDisk/Applications’フォルダにコピーされますが、‘/’なしで‘/Users/nryk/Applications’と指定すると、‘/Volumes/NuFoundDisk/Applications’フォルダの中に更にApplicationフォルダが作成されるということになります。デスティネーション側では、パスの末尾に‘/’があっても無くても差異はありません。

デフォルトの動作は、

$ rsync -aHAXN –fileflags –protect-decmpfs –force-change –stats

という設定となっています。

-a (preserves most file attributes, resource forks an other things)
-H (preserves hard links)
-A (preserves Acl’s” or access control lists)
-X (preserves “Xattr’s” or extended attributes)
-N (also called –crtimes) (preserves creation dates)
–fileflags (preserves file flags and locked files etc.)
–force-change (needed to preserve immutable flags- see man page for more options)
–protect-decmpfs (needed to preserve the new file compression on OS 10.6 Snow Leopard)
–stats (gives a stats report at the end of files transferred etc…)

OS X対応ということで、–protect-decmpfsはHFS+圧縮に対応したオプション、-AはWindowsとの互換性を取るためのACLを有効にするオプションなどのようです。