七月 11th, 2007

TextMate 更新到 1.5.6(1405)!

3 Comments, 未分类, by admin, 682 views

TextMate 是我放弃Windows转而使用MacOSX的重要理由, 这个对我来说完美的文本编辑器让我每每觉得用它写程序是天大的幸福.
这是从今年4月之后的第一次更新, 当然第一时间下载!
以下就是本次更新中我关心的主要内容:

[2007-07-07: REVISION 1401]
[CHANGED] Xcode bundle: The success/failure sounds used by the Xcode build command now has tame defaults, namely Hero and Basso — if you want to get back the old sounds set the TM_SUCCESS_SOUND/TM_ERROR_SOUND variables to Harp/Whistle respectively. These variables can also be set to other sounds.[NEW] Objective-C bundle: The Method Completion now contains the basics of a command testing system, along with a handful of test cases. The Method Completion now takes into account letters written behind the caret (Joachim Mårtensson)

[CHANGED] File types (extensions) specified in language grammars are now matched against the full path so e.g. ‘.git/config’ and ‘.ssh/config’ are both valid extensions — the match is required to be anchored either at an ‘/’ or ‘.’ so e.g. ‘tml’ will not match ‘index.html’. On a tie, the longest suffix-match is chosen.

七月 10th, 2007

Cocoa 学习资源分享

5 Comments, Cocoa, by admin, 1,548 views

苹果因为用的人不多, 所以各种资料并不如Widows上多. 就算它的主流编程框架Cocoa也找不到多少资源, 更加别说中文资源了.
这给学习带来了很多的困难, 我在找了很久之后找到了以下一些目前来说能找到的最好的资源.

电子书
1. Cocoa.Programming.for.Mac.OS.X.2nd
这本书应该说是公认的最好的Cocoa入门教程, 基本上把Cocoa的方方面面都介绍到了. 从最基本的objective-c到Cocoa的各种常用类库基本都有详细的介绍. 这本书最好的地方就在于它每讲一个知识点都会有个附加小章节来介绍相关的进阶知识点.
你在阅读的时候可以很容易感觉到作者真得非常用心的设身处地的站在读者的位置上思考当读者读到这一段的时候会想到些什么样的东西. 最关键作者还是一个资深的Cocoa讲师, 对于读者有什么样的问题简直已经估计入神了.
我常常看到这些小的知识点都会会心一笑, 哈哈, 这个家伙真得已经 Hack into my mind!
如果能够静下心来慢慢看完的话, 相信对于Cocoa就算是入门了.
唯一的缺点就是本书没有(将来估计也不会有)中文版.

More

七月 9th, 2007

强悍的RSS阅读软件 — NetNewsWire

3 Comments, 未分类, by admin, 538 views

以前都用Firefox的插件Sage来看我订阅的各种RSS, 但是Sage的速度一直不能令我满意. 在Windows下面也有尝试过很多不同的RSS阅读软件, 但都因为各种原因放弃使用了.
因为一个偶然的原因(其实是我已经忘了是什么原因 :P ), 我开始寻找Mac下面的RSS阅读软件, 找了很多, 也试用了很多, 但是都无法让我满意(主要原因都是看起来不漂亮, 其次功能也一般). 直到发现了至今让我爱不释手的 NetNewsWire.
先给大家看看它的界面.
这是在Dock上的图标

NetNewsWire Dock.jpg

这是运行主界面

NetNewsWire.jpg

漂亮吗? 但是漂亮并不是唯一的选择标准, 它提供了一个非常强悍的功能: 订阅特殊的RSS来源!
见下图

NetNewsWire Menu.jpg

可以看到, 提供了一下几种订阅:
1. 搜索引擎
订阅使用搜索引擎搜索指定关键字的结果.

2. Tag (这个功能已经很强悍了)
订阅Tag服务的指定Tag, 比如可以从del.icio.us订阅感兴趣的各种Tag.

3. 本地文件
所有的RSS说穿了都是一个遵守RSS标准的XML文件, 这个功能可以订阅本地计算机上任意一个符合RSS标准的XML文件.
这个功能就太强大了, 只要会写点程序的人都可以用自己喜欢的语言去解析自己感兴趣但是并不提供RSS的站点来生成一个这样的文件. 比如我经常上起点中文网, 我就可以用Ruby写个脚本自动登录上去, 然后用正则表达式分析我的书架, 把有更新的书籍做成一个标准的RSS XML文件, 这样就可以实现对于起点中文网的订阅.
对于这个功能来说, 可扩展性基本可以说是无限了, 只要是个网站都可以任意抽取信息来生成订阅. 但是这个功能也有个非常大的限制, 不能精确的控制本地文件的更新时间(当然, 你也可以用计划任务来定时执行任务). 比如NetNewsWire每30分钟重新读取一次这个文件, 但是正好读取的时候这个文件本身并没有被更新, 那就会让你获取最新信息的时间延迟了30分钟.

4. 脚本
提供通过任意可执行脚本(Perl, Python, Ruby, Shell Script, AppleScript….)来订阅RSS, 这个功能是上一个功能的加强版. 具体来说, 就是提供一个可以返回RSS XML字符串的脚本, 然后NetNewsWire就会定时去运行这个脚本来得到最新生成的RSS XML字符串, 并更新订阅信息.
这就完美的解决了上面功能的唯一缺点.

5. Bloglines
这个功能和上两个比起来就正常多了, 如果你是BlogLines的注册用户, 那么只要提供的用户名和密码就可以方便的通过NetNewsWire订阅你在BlogLines上面聚合的信息.

七月 9th, 2007

两天学习Cocoa的成果 — iDic.

1 Comment, Cocoa, by admin, 515 views

两天不断的看各种关于Mac Cocoa的文档, 有了一点点心得, 写了个利用www.dict.cn提供的接口查字典的小程序.
C467DC39-61DE-4A50-A20A-6A414100EEF1.jpeg
现在还有一个不太满意的地方, 点击左上角”X”按钮的时候, 居然是关闭窗口而不是退出程序….
正在时间处理相关的文档, 希望能够尽快搞定. 之后就上传上来.

2007-07-10
搞定这个问题了.

点击这里下载.

解决方法非常简单, 只要把主窗口的”Delegate”outlet连接到你的Controller上面, 然后在Controller里面加上如下delegate:

1
2
3
4
-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)appliication
{
	return YES;
}

七月 9th, 2007

抓取QuickSilver的界面.

No Comments, 未分类, by admin, 419 views

在写关于使用QuickSilver文章的时候经常想抓图做说明, 可是因为一旦呼出QuickSilver就会导致抓图快捷键失效, 着实为这个头疼了很久.
今天终于想出办法来解决了, 哈哈. 就是用 QuickSilver 提供的 “Run after Delay”(延时运行).
参照下图新建一个”Trigger”, 我设定的快捷键是 “Ctrl + Shift + P”.
176CB845-01BA-47BC-B4AA-DBBDB4FED1FC.jpeg
这样每当按下”Ctrl + Shift + P”的时候就会在5秒之后启动抓图动作, 哈哈, 现在终于可以把QuickSilver的运行界面抓下来了.

七月 9th, 2007

QuickSilver查英汉词典的脚本.

5 Comments, 未分类, by admin, 607 views

苹果下面没有找到很好的中文字典, 于是自己用AppleScript写了个去dict.cn查词的小脚本, 这下方便了.

点击这里下载.

2007-06-29 更新查不到单词时候没有任何反应的bug

安装步骤:
1. 解压”dict.scpt”并复制到”~/Library/Application Support/Quicksilver/Actions/”.
2. 重新启动 QuickSilver.
安装完成.

使用方法:
1. 呼出QuickSilver命令窗口.
2. 按”.”切换到文字输入模式.
3. 输入要查的英文单词.
4. 按”Tab”.
5. 输入”dict” + 回车.

马上就能看到结果咯(老实说, 这取决于你的网速), 当然前提是你的网络连接处于联通状态.

为了更加方便的使用这个小东西, 我又为QuickSilver增加了一个”Trigger”.

我把F1设定到了这个Action上面, 实际运行效果就是, 每当我遇到不懂的单词的时候, 只要选中它, 然后按下 F1, 很快就会出来解释.

七月 9th, 2007

使用AppleScript调用WebService.

No Comments, 未分类, by admin, 525 views

这是个有趣的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
try
    tell application "http://www.boyzoid.com/comp/randomQuote.cfc"
        set returnValue to call soap {method name:"GetQuote", parameters:{HTMLformat:false}}
    end tell
    set L to |item| of returnValue
    repeat with anItem in L
        if |key| of anItem is "AUTHOR" then
            set auth to value of anItem
        end if
        if |key| of anItem is "QUOTE" then
            set quot to value of anItem
        end if
    end repeat
    set s to "-- " & return & quot & return & " -- " & auth
on error what
    set s to "No signature today, sorry."
end try

这个脚本可以随机通过调用WebService获得一句英文名言, 有趣吧.
我执行的结果是这个:
“– Magnetism, as you recall from physics class, is a powerful force that causes certain items to be attracted to refrigerators. — Dave Barry”

实现目标

把任意个数的文件夹拖到脚本上面后, 脚本对所有文件夹中的所有东西(包括子文件夹和任意文件)进行批量重命名.

实现的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
on open folderList
    repeat with aFolder in folderList
        if kind of (info for aFolder) is "Folder" then
            renameStuffIn(aFolder)
        end if
    end repeat
end open
 
on renameStuffIn(theFolder)
    set i to 0
    tell app "Finder"
        set folderName to name of theFolder
        set allItems to (get every item of theFolder)
        repeat with thisItem in allItems
            set i to i + 1
            set newName to folderName & i
            set name of thisItem to newName
        end repeat
    end tell
end renameStuffIn

执行步骤

把上述脚本贴到”脚本编辑器”里面, 选择保存 -> 应用程序.
把一个文件夹拖动到生成的应用程序上面就能看到效果, 建议建立一个临时的文件夹来做测试.

讲解

AppleScript有个默认的设定来支持拖放(Droplet), 当用户把一个东西(文件夹, 各种文件)拖到一个AppleScript脚本应用程序上面的时候, 系统会检测这个脚本里面是否有 “Open” 方法,
如果有, 就把拖上去的这个东西当作参数传进去.
在上述例子里面, 这个参数就是 FolderList. 拿到这个参数之后我们就可以在脚本里面进行任意的处理了.
可以想象到的应用场景有以下几个例子:
1. 把几个文件夹内的图片文件全部转换成制定格式.
2.把几个文件夹中音乐的ID3标签”专辑”全部改成文件夹的名称. (在这里可以把文件夹的名称改成专辑名称).
等等等等 (具体能做什么就看你的需要和想象力了,哈哈)

七月 9th, 2007

最近在看的几本小说.

No Comments, 未分类, by admin, 577 views

最近在起点追着看的几本小说

<神墓>

不知道是不是更新速度的原因,感觉上比较一般.也就是一般的神魔小说,主角一开始莫名奇妙的死而复生,而且还是在死了一万年之后.
这个设定有点意思,但是接下来还是回到了普通神魔小说的老套路上来,总之主角就在一路曲折中慢慢变强,估计最后也是天上地下唯我独尊了事.
神魔小说这么写倒是也中规中举,我觉得最关键的地方就在”曲折”二字上面.人如果情节安排得到当, 能够做到意料之外, 情理之中的话也算是一流的了.
现在还不知道将来如何发展,但是现在颇有资质泛泛的感觉. 个人认为, 一本好的小说就要做到所有情节都水到渠成, 所有的情绪都要发乎自然.
一旦有了强求, 立马就降品了. 最近的例子就是<弹痕>, 看这本小说的时候正好看完<终身制职业>, 正是热血沸腾, 于是就找了本同是军文的来看.
结果看下来确实觉得<弹痕>里面的那些热血, 那些爱国都是为了热血而热血, 为了爱国而爱国, 让人感觉好空洞.
希望<神墓>不要让我失望才好, 特别在现在这样一个好小说不易求的时候.

<神游>

看多了修真的小说, 看腻了金丹, 大成等等的字眼, 看烦了漫天的法宝. 这本就显得比较有趣了, 把修真这个本来只能YY的东西写得如此贴近生活真得
很不容易. 最好的一点就是它脱离了挫折->变强->挫折->变强….无敌 这个套路, 语言也平实流畅, 每天下班回家之后读上一或二章还是非常享受的.
但是有一点我觉得有些过了, 里面太过强调因果关系, 虽说如此也能说通, 但是这样精巧的因果设计未免沾了些烟火气, 和文风理念就有了相悖的地方.
总得来说, 这本小说还是很合我的口味的.

<师士传说>

这个是我现在最喜欢的, 只要一有更新就马上放下一切开始看. 情节紧凑, 节奏把握也恰到好处, 细节的处理也非常到位. 总得来说, 只要作者能把这个风格持续下去, 那么这本书必然成就经典.

以前都用Twitter的,今天突然想起来国内似乎有了一个类似的东西饭否 ,注册之余看了看API,顺手用AppleScript写了个QuickSilver的插件.
点击这里下载.

下面是配置步骤:
1. 前提需要安装QuickSilver.
2. 打开”钥匙串访问”,如下所示添加一个密匙.当然,账户名和密码就是你登录饭否的用户名和密码.
4A811E4F-D0B4-496D-A45A-78BAC6175F45.jpeg
3. 解压之后复制FanFou.scpt到”~/Library/Application Support/Quicksilver/Actions/”.
4. 重新启动QuickSilver.

到这里就算安装完成了,现在可以通过QuickSilver随时快捷的发布消息到饭否了.咔咔!
试试看.
1. 使用快捷键调出QuickSilver窗口.
2. 输入”.”切换到文字输入模式, 输入你想发布的消息.
3. 按下”Tab”.
4. 输入”QSFan”.
5. 输入”Enter”.
上饭否看看吧,消息已经发布了吧.