jjgod / blog Random notes by Jjgod Jiang.

Server-Side

将 Debian APT 引入 iPhone

原文: Bringing Debian APT to the iPhone 作者: Jay Freeman (saurik) 译者: Jjgod Jiang

iPhone (或 iPod Touch) 是一台配备着 128MB RAM、4 到 32 GB 闪存的 667MHz 计算机 (尽管只跑在 412 MHz 上)。软件方面,它运行的是一套裁剪过的 Mac OS X,包括 Darwin 内核上基于 FreeBSD 的用户空间程序,作为其标准组件。虽然部分人可能会奇怪怎么有人会把它作为 Unix 工作站来使,但就我和其他许多人的看法,不拿它来做 Unix 工作站才是值得奇怪的。

BSD 子系统

所以给这台设备头一个安装的包是“BSD Subsystem (子系统)”也就没什么奇怪的了:这是一套标准的 Unix 实用工具,让习惯了 Unix 的开发者感到宾至如归。从 grep, sed 到 vim, pico,这套软件包提供了深夜编程活动的基础。

不幸的是,要真以这样的方式用过一会儿,你肯定会因为这些关键工具配置和编译时的缺漏而感到恼火。尽管完成到现在这样也是件好事,但对 Unix 实用工具的编译打包不应该仅仅停留在“它能安装成功”,而更应该延续到“它能正常工作”。下面是我不得不处理的一些问题:

bash – 命令在输入完之前就会被截短并执行 chmod/chown [...]

AppTapp 的打包问题

原文: Packaging Issues with AppTapp 作者: Jay Freeman (saurik) 译者: Jjgod Jiang

Debian 的 APT,Gentoo 的 Portage,FreeBSD 的 Ports……它们内部运作的方式往往迥异,有的在服务器上存储着按少量标准配置编译好的二进制程序,有的则将代码下载到本地再按需编译,但它们最终都能归结到一两个简单的命令,不会比一句 install bash 这样简单的操作更复杂。

在 iPhone 上包管理工具的时令之选是 AppTapp Installer。这款由 NullRiver 开发的 Installer 给 iPhone 开发社群提供了一套简单的程序 (该程序可在 jailbreakme.com 这样的系统上轻易自举),它可由普通用户访问,进行即时的应用程序安装维护。任何人都可以通过它来分发自己的软件,只要配置好自己的软件仓库,并将其 URL 告知用户,他们就能以此作为“source”来安装你们的软件。考虑到 iPhone 这个 Apple 设备文档匮乏又 (对开放的软件安装) 深怀敌意,Installer 能做到这样可不容易,非常值得称赞。

然而,对于软件打包者而言,AppTapp 却显得很是繁琐。它的开发者选择了 Objective-C 属性列表 (property list) 来存储所有的软件包元数据,其中包括要在安装时执行的命令——不过通常执行的是 shell 脚本。这通常导致配置文件看起来不够完美。一个用十句脚本代码就能表达的配置往往要好几页的 XML 才能描述。

<array> <string>If</string>

<array> [...]

How to argue correctly

你有一个好想法,或者你对某件事情很不爽,该怎么吹或者怎么骂呢?我们这里有一个坏的例子和好的例子。

来写 ikiwiki 的试用报告

大家都知道,无聊的人特点之一是见到好玩的东西就找来玩一玩,ikiwiki 就是新近发现的有趣东西,把我的兴趣:Subversion, Markdown, wiki 的概念整合到了一起,算是 wiki 程序里边思路比较另类的,本来看到要装一堆 Perl Module,不愿意去折腾,但 hlb 说等我的试用报告 (笑),就试着装了装看,发现真的很好玩,值得推荐,所以把装的时候遇到的问题流水帐地记下来,或许对你有用。

说了这么多,那 ikiwiki 究竟是什么呢?它其实是一套 Perl 程序,虽然是用作 wiki,但和一般的 CGI/mod_perl 的 wiki 程序不一样的是,它把所有的 wiki 数据文件用 Subversion 来管理,这样文件的历史记录、备份和并行控制就可以直接把 Subversion 的功能搬来用,这是 ikiwiki 最大的特点。

此外,ikiwiki 有趣的地方还在于它使用了 Markdown 的语法来作标记,相比常用的 wikitext,我觉得 Markdown 实在是人性化得多的标记方式。在 Markdown 的基础上,ikiwiki 做的两个额外的处理就是 wiki 的链接 (CamelCase 或者手动指定) 和子页面的创建。

ikiwiki 还有些好玩的功能,比如当作 blog 来用、支持反向链接 等等,你可以在它的 features 页面中看到,不过我这里是还没有尝试过啦。

哦,顺便提一句,ikiwiki 的作者 Joey Hess 是一位 Debian Hacker,也是 [...]

Markdown 的一点翻译

Markdown 是 John Gruber 精心设计的一套文本标记系统,由 Michel Fortin 转换到 PHP 并提供了 WordPress 的插件。这两天抽空翻译了一下 Markdown 的基本功能以备学习。感谢 hlb 的指点,我想下面要做的大概是翻译完整的 syntax 文件和 PHP Markdown 的扩展功能。此外,MultiMarkdown 也是个有趣的东西。

噢对了,翻译后的文件在这儿。

← Before