Open Terminal in Current Folder & Create New Text in Current Folder by AppleScript

如下图所示,在Finder的toolbar中最后有两个自定义的图标,第一个是iTerm2图标,点击该图标会在Finder当前目录中打开iTerm2程序,第二个是TextWrangler图标,点击该图标会在Finder当前目录中用TextWrangler创建一个新文本文件,文件名为当前日期时间。
Finder

我们使用AppleScript来完成这两项工作。

1. 打开AppleScript Editor

2. 将后文给出的两段脚本copy到AppleScript Editor中,分别保存为两个Application。也就是在Save as的时候选择File format为“Application”(默认为Script)。
保存位置随意,我保存在/Applications目录下。比如第一个脚本保存为“Open iTerm2 Here”,第二个脚本保存为“New Text Here”。

3. 修改新建Application的图标,在Mac中复制粘贴的强大在这里体现了。
以“New Text Here”为例,在Finder中同时选中“New Text Here”和TextWrangler这两个程序,Cmd+I快捷键调出属性窗口,在TextWrangler的属性窗口中鼠标点击最上面的小图标(如下图),按Cmd+C复制,然后鼠标点击“New Text Here”属性窗口中最上面的小图标(原本是AppleScript的默认图标),按Cmd+V粘贴。
Copy Icon

4. 将修改完图标的两个App拖动到Finder顶端的Toolbar中,完成。

AppleScript:
–Open iTerm2 Here
–这里我使用的是iTerm2,你可以改成自己习惯的Terminal程序,比如iTerm,那么只需要将以下脚本中的tell application “iTerm2″改为tell application “iTerm”即可。

-- cd to the current finder window folder in iTerm2. Or drag a folder onto this script to cd to that folder in iTerm2.
-- found this script in the comments of this article: http://www.macosxhints.com/article.php?story=20050924210643297
-- script was opened by click in toolbar
on run
	tell application "Finder"
		try
			set currFolder to (folder of the front window as alias)
		on error
			set currFolder to (path to desktop folder as alias)
		end try
	end tell
	CD_to(currFolder, false)
end run

-- script run by draging file/folder to icon
on open (theList)
	set newWindow to false
	repeat with thePath in theList
		set thePath to thePath as string
		if not (thePath ends with ":") then
			set x to the offset of ":" in (the reverse of every character of thePath) as string
			set thePath to (characters 1 thru -(x) of thePath) as string
		end if
		CD_to(thePath, newWindow)
		set newWindow to true -- create window for any other files/folders
	end repeat
	return
end open

-- cd to the desired directory in iterm2
on CD_to(theDir, newWindow)
	set theDir to quoted form of POSIX path of theDir as string
	tell application "iTerm2"
		activate
		delay 1
		-- talk to the first terminal 
		tell the first terminal
			try
				-- launch a default shell in a new tab in the same terminal 
				launch session "Default Session"
			on error
				display dialog "There was an error creating a new tab in iTerm2." buttons {"OK"}
			end try
			tell the last session
				try
					-- cd to the finder window
					write text "cd " & theDir
				on error
					display dialog "There was an error cding to the finder window." buttons {"OK"}
				end try
			end tell
		end tell
	end tell
end CD_to

–New Text Here
–这里我使用的是/usr/local/bin/edit来直接创建新文档,此命令在安装完TextWrangler之后才会有,如果你使用其它的文本编辑器(比如系统自带的TextEdit),那么可能无法使用该脚本。
–该脚本中获取当前日期时间拼成文件名的实现方法有些丑陋,如果你有更好的方法请告诉我。

-- Create new text file in Finder's Current Folder
-- 2011.7.1 Written by Kamus

-- script was opened by click in toolbar
on run
	tell application "Finder"
		try
			set currFolder to (folder of the front window as alias)
		on error
			set currFolder to (path to desktop folder as alias)
		end try
	end tell
	create_text_file(currFolder)
end run

-- cd to the desired directory in iterm
on create_text_file(theDir)
	set theDir to quoted form of POSIX path of theDir as string
	set yearStr to year of (current date) as integer
	set monthStr to month of (current date) as integer
	set dayStr to day of (current date) as integer
	set timeStr to time of (current date) as integer
	
	try
		do shell script "/usr/local/bin/edit " & theDir & yearStr & monthStr & dayStr & timeStr & ".txt"
	on error the error_message number the error_number
		display dialog "Error: " & the error_number & ". " & the error_message buttons {"OK"} default button 1
	end try
end create_text_file

How to using Quick Look to view SQL scripts in Mac OS X

在开始本文之前,先介绍两个与本文毫无关系但是很酷的QuickLook插件。
Zip Quick Look Plugin - 直接在QuickLook中查看zip包中的内容。
Folder Quick Look Plugin - 直接在QuickLook中查看文件夹的内容。

Mac OS X的Quick Look是很强大的功能。在Finder中高亮需要查看的文件,然后按空格键就可以在弹出的新窗口中直接预览该文件的内容,支持几乎所有需要预览的文件类型,比如txt文本,pdf,微软office文档,苹果iWork文档,可以用Quicktime播放的视频等等。

但是正如Apple的很多产品一样,预置的功能已经很好,但是却几乎不给使用者任何调整的方法,比如在我的机器里有很多.sql扩展名的SQL脚本文件,我很想能够用Quick Look来快速查看,但是在Mac OS X中天生的Quick Look是不支持快速预览sql文件的,并且没有给于任何选项来将某些文件类型加入到Quick Look中。

在默认情况下,用Quick Look打开SQL脚本,将仅仅显示如下文件信息窗口。我个人的系统设置是如果双击SQL脚本,则用TextWrangler打开,因此这里显示为“TextWrangler text document”。

我们需要手工修改一些文件,来让Quick Look也可以直接预览SQL脚本。

1. 修改Info.plist文件,在我的例子中是修改TextWrangler的plist文件,如果你选择不同的应用程序打开SQL脚本,那么需要修改相应程序的plist。

vi /Applications/TextWrangler.app/Contents/Info.plist

在最后这两行的前面:

</dict>
</plist>

添加下面这些内容:

<key>UTExportedTypeDeclarations</key>
<array>
<dict>
  <key>UTTypeConformsTo</key>
  <array>
	<string>public.text</string>
	<string>public.plain-text</string>
  </array>
  <key>UTTypeDescription</key>
  <string>SQL Script file</string>
  <key>UTTypeIdentifier</key>
  <string>com.barebones.textwrangler</string>
  <key>UTTypeTagSpecification</key>
  <dict>
	<key>com.apple.ostype</key>
	<string>TEXT</string>
	<key>public.filename-extension</key>
	<array>
	  <string>sql</string>
	</array>
  </dict>
</dict>
</array>

其中com.barebones.textwrangler可能需要改成你使用的应用名称,比如TextMate则是com.macromates.textmate,通常这个名字可以在plist文件的前面部分找到。

2. 使改动生效

touch /Applications/TextWrangler.app

然后再次使用Quick Look就可以直接查看SQL脚本内容了。

参考文档:
Add Quick Look support for certain file formats

OPatch failed with error code 73 when patch Oracle 10.2.0.4 on Mac OS X

现在Mac OS X中的Oracle数据库最新版本是10.2.0.4 (没有10.2.0.5更没有11g)。如果想给该版本数据库打上PSU补丁的时候,会遇到以下错误。

Running prerequisite checks...
Prerequisite check "CheckPatchApplicableOnCurrentPlatform" failed.
The details are:
Patch (  ) is not applicable on current platform.
Platform ID needed is : 46
Platform IDs supported by patch are: 293
UtilSession failed: Prerequisite check "CheckPatchApplicableOnCurrentPlatform" failed.

OPatch failed with error code 73

这个错误是由于Bug # 8647770引起的。解决方法如下:
1. 下载patch 8647770.
2. 安装补丁

$ export OPATCH_PLATFORM_ID=293
$ cd 8647770
$ opatch apply

安装完此补丁以后,再重新运行PSU Patch,就可以正常打上补丁了。

Mac之路(十)- How to Change Default Programs in Mac OS X Leopard

有时候我们想双击某个文件的时候默认用另外一个程序打开,比如在Mac中视频文件默认用Quicktime打开,想改成MPlayerX;图片文件默认用Preview打开,想改为Picasa。

Change default application in Mac OS X

很简单。
1. 在Finder中找到任何一个想改变默认打开方式的文件,选中文件,按苹果键+I(也可以点击File->Get Info)打开文件信息窗口。
2. 找到Open with项,在下面的下拉菜单中就是所有可以选择的程序,选择你希望默认打开的程序。
3. 记住要点击“Change All”按钮,否则改动只对当前文件有效,而不是对与该文件类型相同的所有文件有效。

Mac之路(九)- 自定义截屏目录、文件名

在本站中搜索“Mac之路”,可以找到之前写的一系列文章,有些很幼稚,有些现在看起来仍然很有用。

这是此系列的最新一篇,主要介绍如何自定义Mac自带的截屏快捷键所截取图片存放的路径,图片的格式,图片的名称。

本文主要参考自:
http://snowleopardtips.net/tips/everything-you-need-to-know-about-screen-captures.html

Mac自带的截屏本身已经很强大,如果还不知道如何截屏(Sreen Capture)的,请自行Google,关键字“Mac截屏”。

默认情况下,截取的文件存放在用户桌面上,文件名类似“Screen shot 2011-03-01 at 18.48.25 .png”这样带时间和空格,格式为png文件。

现在我们准备修改为:截屏文件自动保存在用户目录下的Pictures/snap目录中,并且名字为“screenshot001.jpg”,其中的数字自动递增。

1. 修改存储目录
在Terminal中执行如下命令,location关键字后为目录的绝对路径:

defaults write com.apple.screencapture location /Users/kamus/Pictures/snap

2. 修改文件类型
在Terminal中执行如下命令,type关键字后为想要保存的文件类型:

defaults write com.apple.screencapture type jpg

3. 修改文件名
这部分比较复杂,无法用defaults write com.apple.screencapture name ‘filename’这样的命令来完成。所以这里我们使用到了Mac中强大的Automator folder action。

首先创建一个Automator脚本。一个Automator脚本就类似一个工作流,按照指定的步骤一步一步执行下去。创建完毕的脚本截图如下:
Automator

实际上这个工作流就是先在指定目录中寻找符合条件的文件名,然后在文件名后面附加递增的数字。

Folder Action类型的Automator脚本默认保存在~/Library/Workflows/Applications/Folder Actions/目录下。(不同类型的脚本保存的目录不同,比如Service类型的Automator脚本则保存在~/Library/Services目录中)

bogon:Folder Actions kamus$ pwd
/Users/kamus/Library/Workflows/Applications/Folder Actions
bogon:Folder Actions kamus$ ls -l
total 0
drwxr-xr-x@ 3 kamus  staff  102 Mar  1 19:11 RenameScreenCaptures.workflow

接下来需要将该脚本绑定到snap目录上。
在Finder中找到该目录,右键单击,在菜单中选择“Folder Actions Setup…”,在弹出窗口中选择刚刚保存的脚本,在我的例子中保存为RenameScreenCaptures.workflow。

Choose automator folder action

做完以上所有更动,需要Logout用户再登陆,或者直接在命令行中输入:

killall SystemUIServer

再重新截屏试一下,All done。

Using Safari5 Reader for Reading Technical Posts

最新Release的Mac下的浏览器Safari5除了全面支持HTML5之外,还有一个着重提到的功能就是Reader。

关于Reader的赞美之辞可以参看《改变阅读习惯的Safari 5阅读器》

那么实际上Reader对于我个人的用处是在浏览DBAsupport.com站点的文章,此站点文章质量较高而且还时常出现不少新奇有趣的文章。但是这个站点恼人的地方在于:1.在Google Reader中无法看到全文 2.在站点上直接浏览文章的话要承受大量的广告。

比如原站点中的文章大概看上去是这样五颜六色的。

使用了Safari5 Reader以后,变成了一篇白底黑字的清爽文章。

但是目前这个版本的Reader仍然有需要改进的地方,特别是对于可能会有大量代码的技术文章,那些代码在原文中有rss格式化,但是Reader转换以后格式就不正确了,这样会导致较长的代码有一部分无法看到。

仍然是上面这片技术文章。原文中的格式如下图,虽然也不尽美观,但是注意那些小字体的部分,至少可以看到全部文字。

而在Reader中最后超出页面的那些文字都无法看到了,而且似乎是苹果太在意用户阅读体验了,甚至连横向的滚动栏也没有。是的,我知道Reader中的字体可以缩小,但是即使缩到最小也仍然有一部分在页面之外。

Hope will be fixed soon.

Mac的中国域名

今天才发现www.mac.com.cn这个域名居然不是属于Apple公司的。

Domain Name mac.com.cn
Domain Status clientTransferProhibited
Registrant Name 广州金彩艺电脑有限公司
Administrative Email wwwwa163@163.com
Registrar 广东时代互联科技有限公司
Name Server ns1.pro.net.cn
Name Server ns2.pro.net.cn
Creation Date 2000-02-15 00:00
Expiration Date 2009-02-15 00:00

虽然页面上倒也是Mac的内容,可惜无论从页面设计还是从浏览量来说都让人惋惜,不知道Apple有没有把这个域名收编了的计划。

Total Commander in Mac

From MyMac

终于,在PureMac上找到了这款跟Total Commander同一风格的Mac上的文件管理器-Disk Order,虽然还有些简单,但是基本功能都已经具备。

1。双窗口
2。多Tab
3。快捷键浏览和编辑文件(F3,F4,跟TC中完全相同)
4。内置FTP客户端
5。内置批量重命名文件功能
6。常访问目录收藏功能

也许到了该抛弃Finder的时候了,真是奇怪,操作系统内置的文件管理器总是那么不尽如人意,不论Windows还是Mac OS。

唯一遗憾的是,Disk Order仍然是Shareware,注册版需要收费22.57美元,只有再次使用D版了( Serial Box中可以找到注册码)。

BTW: Disk Order的图标还真难看,一点儿没有Mac的艺术风格,我都羞于将它拖到Dock上,要使用就那Quicksilver调用(石锅拌饭写了比较详细的Quicksilver使用说明)。