jjgod / blog Random notes & thoughts by Jiang Jiang.

Tools

dump 混合光盘镜像中的 ISO 9660 分区

Leopard / Snow Leopard 光盘镜像是混合 (hybrid) 分区格式,也就是一个磁盘镜像中,既有 HFS+ 分区,也有 ISO 9660 分区 (Boot Camp 驱动就存放在这个分区上),在 Mac OS X 上只会挂载前者,在 Windows 下只会挂载后者。虽然可以在 Terminal 下手工挂载后者,但也不是很方便,这里记录一个脚本,方便直接把 ISO 9660 分区 dump 为 ISO 文件: $ cat dump.sh #!/usr/bin/env bash DISK=`hdiutil attach -noverify $1 | awk ‘/Apple_partition_scheme/ { print $1 }’` dd if=$DISK of=$2 bs=512 count=`hdiutil pmap $DISK | awk [...]

Packaging for Installation on Mac OS X

在 Mac OS X 下为程序打包该用什么格式?这是个很有趣的问题,首先,显然绝大部分的应用程序都应该: 使用手动安装,也就是一个独立的 .app,里面通过 @executable_path/../Frameworks/ 的方式链接所有依赖的第三方库,也就是说,不往系统相关目录里乱放东西。这是 Apple 官方的 Software Delivery Guide 中推荐的安装方式。 支持用 Sparkle 这样的自动更新框架,实际上符合上一点的也就自然可以用 Sparkle 完全自动的完成更新。 用 .zip 格式分发。为什么不用 .dmg?因为 .dmg 不容易直接解压,挂载速度比 .zip 慢得多,增加拖动的手续,所以我支持这篇 zip vs dmg 的观点。 但是如果遇到特殊的情况呢?比如你写的是一个非得往系统目录 (/Library/…) 安装内容的软件呢?比如我最近参与改进的 SunPinyin 输入法,就必须打包为 Installer 支持的 .pkg 格式安装了,否则很难确保软件被正确的安装。 关于这个打包方式,最重要的一点心得是:千万不要用 Apple 自己提供的 PackageMaker,这恐怕是 Apple 开发的最恐怖的一个开发辅助工具了,因为: 它必须用图形界面修改内容 它保存的 .pmdoc 格式非常混乱,而且居然喜欢把绝对路径存入文件中 不支持 Installer Plugins 扩展 [...]

用来修正错误编码的文件名的 Safari 插件

我之前讨论过一次这种文件名的错误编码,为了在浏览器下载时的不必手工修正这个问题,这里提供一个 Safari 的 SIMBL 插件: SafariURLFix。 使用步骤如下: 如果没装过,先安装 SIMBL; 下载 SafariURLFix.zip,解压后,放到 ~/Library/Application Support/SIMBL/Plugins 目录 (如果没这个目录就自己创建); 在 Terminal 中输入: defaults write com.apple.Safari JJURLsToFix -dict newsmth.net GBK 其中 newsmth.net 为你希望应用修正的网站域名。也可以打开 ~/Library/Preferences/com.apple.Safari.plist 文件自己编辑 JJURLsToFix 这个 Dictionary,自行添加新的,见附图。 重新启动 Safari,尝试下载这样的文件,看看文件名是否被正确纠正了。 如果还有什么问题,欢迎在下面提出。

用 AppleScript 来辅助 Pages 排版

Pages 的混合语言排版功能一直为人诟病 (实际上 Pages 的多语言支持也一直很弱,甚至比不上 TextEdit),比如像组合字体 (combined font) 这样在排版软件中很常见的功能也迟迟没有提供,所以经常有人说用 Pages 排版中英文混合的文章是一种折磨。 昨天看到 Apple 版上的一篇文章,便想起来试试 Page ’09 新增的 AppleScript 功能,其实用到的功能在之前的 Pages 版本中应该也有,不过我手头没有更早的版本,所以无法试验了。可以点这里看完整的脚本,其实核心代码非常短: from appscript import * pages = app(id=”com.apple.iWork.Pages”) for doc in pages.documents(): words = doc.words() i = 0 for word in words: i += 1 if isch(word[0][0]): doc.words[i].font_name.set(“SimSun”) 这个脚本没有直接用 AppleScript,而是通过第三方提供的 py-appscript 接口来调用 (它的语法比 ScriptingBridge 要友好很多),作用是,扫描所有 [...]

CoreAVC 与 CorePlayer

昨天碰巧翻到一个叫 CoreAVC for Linux 的项目,其实应该之前很早就听说过,因为这个项目在去年五月份的时候曾经被 Google Code 停止提供服务,因为“DMCA complaint”,但现在又恢复了,不过可能 patch 更新得不够及时,不一定能够用在 svn HEAD 的 mplayer 上。 CoreAVC for Linux 到底是个怎么样的项目呢?众所周知的是,CoreAVC 是目前公认软解 H.264 效率最高的解码器,在 Windows 平台有提供,价格是 $15 (不过大部分 Windows 用户都用破解版本的)。开发这个解码器的公司还把它移植到了 Palm, Symbian, Windows CE 等平台上,是移动平台中最有名的一个通用播放器,叫 CorePlayer。 从去年二月开始,CorePlayer 被移植到了 Windows 和 Mac OS X 平台上,但官方没有提供给 Mac OS X 平台的 CoreAVC (假如有的话,应该是 Perian, Flip4Mac 那样作为 QuickTime 插件的形式,但不知道这个公司出于什么考虑,并没有像 Windows [...]

← Before After →