Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2011-11-07

[][][]ネットからダウンロードしたファイルをドラッグ&ドロップして、アラートを出ないようにする。

Snow Leopardの頃はあまり気にならなかったんですが、Mac OS X Lion(10.7.2)にしてから、ネットからダウンロードしたファイルを開く時のチェックがかなり厳しくなったようです。これね:

f:id:seuzo:20111107002626p:image

ひとつかふたつならなんてことないんですが、FTPなどからダウンロードしたファイルが100も200もあると正直うんざりしますな...

ってことでAppleScriptのドロップレットを書いてみました。フォルダ内のファイルも再帰的に処理します。

(追記:2011-11-11T15:52:29+0900)内部的にxattr -r オプションを使って、entire contentsをやめるようにしました。

(*
remove_download_EA
ネットからダウンロードしたファイルを開く時の警告表示を出ないようにするドロップレット

for Mac OS X 10.7.2

2011-11-07	ver0.1	とりあえず
2011-11-11	ver0.2	xattr -r オプションを使って、entire contentsをやめた

(c)2011 seuzo
*)

--ファイル名の警告
to violation_name(file_path)
	set file_path to quoted form of ((POSIX path of file_path) as Unicode text) --まずPOSIX pathにする
	set file_path_test to do shell script "echo " & file_path & " | perl -pe 's/[\\/\\.0-9A-Za-z _-]+//;'"
	if (file_path_test is not "") then
		display dialog file_path & " のファイル名には英数字以外の文字が使われています。" & return & "実行時にトラブルになるかもしれません。続行しますか?" buttons {"Cancel", "続行"} default button 1 with icon 1 --キャンセルで終了
	end if
end violation_name

--リストの結合
to as_join(thedelimit, theList)
	set oldDelim to AppleScript's text item delimiters
	set AppleScript's text item delimiters to thedelimit
	set tmpstr to theList as text
	set AppleScript's text item delimiters to oldDelim
	return tmpstr
end as_join


--ドラッグ&ドロップで実行
on open of my_files
	set target_path to {}
	
	tell application "Finder"
		repeat with i in my_files
			set aFile to i as alias
			my violation_name(aFile) --ファイル名の警告
			set end of target_path to quoted form of (POSIX path of aFile)
		end repeat
		set target_path to my as_join(" ", target_path)
		
		
		try
			set my_script to "xattr -rd com.apple.quarantine " & target_path
			--display dialog my_script
			set ans to do shell script my_script
			--display dialog ans
		on error errMsg number errNo
			--エラーがあっても無視する
			--display dialog "実行エラーです" & return & errMsg & return & errNo buttons {"Cancel"} default button 1 with icon 1 --キャンセルで終了
		end try
	end tell
end open

アプリケーション形式でダウンロードしたい人はこちら:remove_download_EA.app.zip 直

問題:ファイルをドラッグ&ドロップした時、1回だけ警告が出ます。フォルダごとドラッグ&ドロップすれば警告は出ません。

問題:すでにcom.apple.quarantine属性が外れているファイルを、未処理のファイルと一緒に選択してドラッグ&ドロップしても、未処理ファイル分を処理しません。ASのバグっぽいので、修正できないかも。フォルダごとドラッグ&ドロップすれば、すべてのファイルを処理します。


参照

ネットからダウンロードしたファイルを開く時の警告表示を消す方法 - 強火で進め

【コラム】OS X ハッキング! (253) Leopard解体新書(4) 〜拡張された拡張属性〜 | パソコン | マイコミジャーナル

Macでlsした時のパーミッションにあるアットマークを消す。xattrコマンド。 - kanonjiの日記

ダウンロードしてきたファイルを初めて開く時の警告ダイアログを表示させないようにする | Macの手書き説明書

2009-12-07

[][][][]特定のラベルを持つファイル(フォルダ)だけを探したい

特定のルールを決めてラベル付けしているMacユーザーは多いと思います。あんまり気軽に付けられるものだから、深い階層のファイルまでラベル付け放題で、どこに付けたんだかわからなくなっている人も多いかもしれません(俺だ)。

f:id:seuzo:20091206175755g:image

そんな時はフォルダの検索窓からラベルを検索するといいですよ。

f:id:seuzo:20091206175756g:image

この時のラベル番号は

数字ラベルの色
0無し
1グレー
2グリーン
3パープル
4ブルー
5イエロー
6レッド
7オレンジ

になっています。

だが、しかし! このファイル検索はSpotlightの一種なので、Spotlightを有効にしていない人(場所)についてはスルーしてくれます。まあ、そうですね。

で、AppleScriptでフォルダ(またはファイル)をドラッグ&ドロップすると探してくれるのを書いてみました。応急処置なので深く考えていません。なにげなくentire contentsとか使っているけど、大丈夫なのかな?*1 

ASのラベル番号はなぜだかSpotlightの番号とは違います(Finderで見える通りなので、むしろこっちが順番わかりやすい)。

数字ラベルの色
0無し
1レッド
2オレンジ
3イエロー
4グリーン
5ブルー
6パープル
7グレー
(*
copy_label_files
指定ラベルの付いたファイルのフルパスをクリップボードにコピーします。

-Mac OS X 10.6.1

2009-12-06
*)

--------------------------------------------------------●ドラッグ&ドロップされた
on open of theFiles
	tell application "Finder"
		activate
		set my_label_No to text returned of (display dialog "探したいラベルナンバーを0〜7の数字で入力してください" default answer "1") --探したいラベルナンバー
		set my_label_No to my_label_No as integer
		set my_data to ""
		
		try
			repeat with aFile in theFiles
				if (kind of aFile) is ("フォルダ" as Unicode text) then
					set all_items to entire contents of aFile
					repeat with ii in all_items
						if label index of ii is my_label_No then
							set my_data to my_data & (ii as Unicode text) & return
						end if
					end repeat
				else
					if label index of aFile is my_label_No then
						set my_data to my_data & (aFile as Unicode text) & return
					end if
				end if
			end repeat
		on error errMsg number errNum
			display dialog ((name of aFile) as Unicode text) & return & "Error! This file failure." & return & errMsg buttons {"Cancel"}
		end try
		
		if my_data is "" then
			
			display dialog "ラベル番号" & my_label_No & "を持つアイテムはありませんでした"
		else
			set the clipboard to my_data
			display dialog "" & (count paragraph of my_data) & "個のアイテムが見つかりました。" & return & "以下のデータをクリップボードにコピーしました" & return & my_data
		end if
	end tell
end open

*1:entire contentsは再帰的にフォルダ内を調べるのでたくさんのファイルを持つフォルダを投げるとエラーになります。以前(classic時代)はentire contentsにバグがあって、ほとんど使ったことありません。再帰処理で書きたくなかったんですすいません^^

2009-09-25

[][][]Ruby1.8系とRuby1.9系を共存させてみる。

Snow Leopardも順調そうだし、いい気になってRuby1.9をインストールしてみました。

もちろん、まだまだ1.8系は主流なんでしょうけれど、少しずつ1.9系にも慣れつつ移行できたらいいと思い、両方のバージョンを共存させます。

Ruby公式サイトのダウンロードページで確認すると現在の最新の安定板はruby 1.9.1-p243のようです。ダウンロードして解凍するのは、こんな感じです。

$ cd ~/src
$ curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p243.tar.gz
$ tar zxf ruby-1.9.1-p243.tar.gz 

あとはmakeしてインストールするだけですが、下記のようにprogram-suffixを指定すると「ruby19」とタイプすればこのバージョンが起動するようになります。「gem19」とすれば、このバージョン用のgemが動作します。インストール場所はホームディレクトリの中の「local」に指定しました。

$ cd ruby-1.9.1-p243
$ ./configure --prefix=/Users/[ユーザー名]/local --program-suffix=19
$ make
$ sudo make install

設定ファイル(~/.bash_profile とか)にパスを通しておくのを忘れずに。

PATH=$PATH:/Users/[ユーザー名]/local/bin

これでインストールは一応完了しました。いままでどおり「ruby」とタイプすれば1.8.7が呼ばれます。

$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]

ちゃんと両方のバージョンが共存しています。

$ ruby19 -v
ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-darwin10.0.0]

2009-09-24

[][][]開く(または保存)ダイアログで使えるショートカット

Snow Leopardでは、開く(または保存)ダイアログ内で不可視ファイルが(標準で)見られるようなった。

View invisible files in Snow Leopard open/save dialog boxes | The Graphic Mac: Apple | Adobe | Design

Command + Shift + .(dot)キーストロークで不可視ファイルが見えるようになる。同じキーストロークで不可視/可視とトグルする。

f:id:seuzo:20090923113010p:image

へー、と思いながら、試しに...

Command + Shift + HでHomeになったりして...と思ったらなったりした。*1

Command + Shift + AでApplicationsになったりした。

ということは、Command + Shift + DでDesktopなんじゃろ。

あ、あれだ、Finderの「移動」メニューにあるのが使えるんだ、たぶん。知らなかった!

f:id:seuzo:20090923113011p:image

ちなみに、ファイルの頭文字をタイプすると即座にその付近のファイルが選択できる(こちらはずっとずっと前から)。すごく便利で頻繁に使うショートカットだ。ただし、ファイル名が日本語だとこの技は使えない。日本語ファイル名を使っている人はこんなところでもちょっとづつ損をしていると思う。

*1:こちらはSnow Leopardじゃなくても、ちょっと前から使えていたかもしれない

2009-09-15

[][]Snow Leopardの「テキストの置換」とは...

Snow Leopardには「テキストの置換」という機能が追加された。すわ、置換マクロ!? と色めいてしまったが、まったく違う。今は反省している。

「システム環境設定」-「言語とテキスト」-「テキスト」というタブを開くと...

f:id:seuzo:20090914154610p:image

これ、オートコレクトですよね。「テキストの置換」と言えなくもないだろうけれど、ちょっと混乱する。で、試してみたのでメモ。

おおまかな流れとしては...

  1. 「システム環境設定」-「言語とテキスト」-「テキスト」で置換語句を登録する
  2. (テキストエディットやSafariなどの)対応アプリケーションで使う(すべてのテキストアプリケーションで使えるわけじゃない)
  3. 環境設定(テキストエディット)で機能をオンにするか、文字入力中にコンテキストメニューから指定する

といった感じ。

1)登録

「システム環境設定」-「言語とテキスト」-「テキスト」を開き、左下の「+」ボタンをクリックする。

f:id:seuzo:20090914182638p:image

「置換前」と「置換後」フィールドにそれぞれの入力する。

f:id:seuzo:20090914182639p:image

2)設定

テキストエディットでは、環境設定で「テキストの置換」常にオンにできる。

f:id:seuzo:20090914182640p:image

ドキュメントを開いた状態でコンテキストメニューから「編集メニュー」の「自動置換」にチェックを入れると、そのドキュメントの設定となる。

f:id:seuzo:20090914182641p:image

3)使用

ためしに「市川せいぞー」と入力してみる。ここではまだオートコレクトはキックされない。

f:id:seuzo:20090914182642p:image

続けて「、」を入力すると、オートコレクトが動作して「せいぞー」→「せうぞー」となる。

f:id:seuzo:20090914182643p:image

ただし、「せいぞーちゃん、」と入力しても、変換はされない。

f:id:seuzo:20090914182644p:image

「せいぞー様」と入力すると、変換される。

f:id:seuzo:20090915000327p:image

要するにあれだ、単語の区切りを文字種でやっているのだ。「言語とテキスト」-「単語区切り」-「日本語」というのは、こういう区切りだった。形態素解析なんかを仄かに期待していたんだが。こういう品質での製品出荷に慣れてしまってもう落胆もしないな^^*1


確かに便利なんだけど、アレを思い出す

まあ、たしかに「©」みたいな文字を入力するにはいいかもしれない。分数や、絵文字フォント、間違いやすい綴りを登録しておけば楽かもしんない。

それに、スペルチェックやオートコレクトなんていう機能は、汎用的な用途があるのだからそれぞれのアプリケーションが持っている必要はないって発想もある。どこかで聞いたような発想だけど... そしてそのアーキテクチャはもうないけれど... その時も音頭を取っていたのはAppleだったけれど….

*1:InDesignのオートコレクトもそうだし、これがガイジンさんの限界だなあ。と思うのでした。