COMPLETE ARCHIVE
1Q84

用了两天半的时间,几乎是一口气地在家看完了 1Q84 的三本书。最后的这一天正好是 2011 年的 2 月 14 日,其间有那么几分钟,窗外飘起了鹅毛大雪,只是雪很快就停了。

我需要坦白承认的一点是,我看小说的目的并不单纯,我并不是将其作为一部单纯的娱乐作品去看,就像我在看 Inception 的时候(我看了至少 3 遍 Inception),我想我更多的是将其看作一个已经到达了某个阶段的项目去看待。

是的,一个项目。从种子一样的 idea,找到适合的土壤,空气,水和照料的人(可能不只一个),然后终于长成了什么。

能够在很长的历史长河中,被视作鸿篇巨著的作品不多,正因其珍贵,而成为众多古往今来作家所追求的,可以说是终极目标。

是否能够实现这样的终极目标,做的人在做的时候其实并不十足的把握。因为似乎人心这样的东西,到了一定的阶段,就没有什么事情对于他而言,是真的非做不可的了。理论上来说,这个世界上最宝贵的事物,是那些不会重复自身的。你可能在做一件事,可后果却不一样——要么将一件可以在一个月内完成的事情重复十二遍,要么,每天都是全新的。

作为小说来说,1Q84 有几乎可以说是显而易见的中心论点和已经在过去作品中被反复咀嚼的论据(当然,前提是对于之前作品的熟悉),也有了一些或许细微却依然可以被察觉到的对以往论点的怀疑——比如对于 ideology 的态度,如果说之前的作品中就像热刀切下牛油,可是到了 1Q84 中却变成了「我们以往已熟知的那个世界已经不复存在了」。而作者并不满足于此,于是他同时也说了「真相只有一个」。只是究竟是哪个,却不见黄油也不见热刀了。

20:44, FEB 14 • Permalink
2010

这一年发生了很多事情,不过有的事情恐怕再过几年再说会更好。年岁增长的时刻,似乎迷信程度也在逐年增加。

这一年删掉的邮件和代码,及吃到肚子里的话和思索,比以往任何一年都要更多。我的中心论点没变。一切不过是在帮助提炼这个论点。

What it lies in our power to do, it lies in our power not to do.

0:42, JAN 4 • Permalink
BC2Stats 1.8.0

BC2Stats 1.8.0 is now approved and you can get it from App Store. In this update we integrated Game Center so that you can compare with Game Center friends. And your original BFBC2 achievements/trophies can be synced to Game Center. We wanted sync all achievements/trophies but there is a limitation in Game Center, so currently it doesn't include any achievements/trophies from DLCs.

In next version, we'll have all new Vietnam weapons.

21:11, DEC 29 • Permalink
20101112

最近完成了两件事情。

从 2007 年初见到 OpenDNS 那刻起,我就一直对这个东西非常着迷。互联网上有很多的协议,最普遍的协议是 HTTP,于是针对这个协议的各种开发框架和应用也就非常多。但是 HTTP 不是唯一的协议,还有其他很多好玩的协议,比如 IMAP,比如 DNS。所以我一直在想,能不能在 DNS 协议上做一些什么。

于是就有了 V2EX DNS,在 2010 年 11 月 10 日早上上线。这是一个面向公众的 DNS 解析服务,除了高速解决最普遍的解析问题之外,V2EX DNS 还提供了:

  • 对一些顶级域名常见的拼写错误进行纠错,比如输入 google.cmo 会自动跳到 google.com。
  • 有的网站由于各种原因,没有配置 @ 解析,那么当用户使用裸域访问时,就会出错。典型的例子如 gov.cnweibo.com。当使用 V2EX DNS 时,可以自动为用户尝试加上 www 进行访问(通常这也是用户的本意)。
  • 当输入了一个确实不存在的域名时,会导向至 Google 搜索帮助用户找到正确的网站。
  • 此外,我还有一些安全方面的功能在开发计划中。

开始使用 V2EX DNS 非常简单,只需将你的电脑上的 DNS 主服务器地址设置为:

178.79.131.110

即可开始使用。

目前 V2EX DNS 在上线 48 小时后,已经服务了超过 140 万次查询。大家在 V2EX DNS 网站首页底部看到的那根灰色的线,即时目前的实时查询流量,每 10 分钟更新一次。

而第二件事,就是 2010 年 11 月 12 日,Project Babel 2 的第一个正式版本 2.4.0-RC1 发布,大家可以从下面这个地址下载:

Download Project Babel 2.4.0-RC1

PB2 是一个开源社区软件,运行在 Google App Engine 上。V2EX 社区即是使用此程序搭建。

以上,是两件我坚信有价值的事情。坚持下去,一定会发生更有趣的事。

18:30, NOV 12 • Permalink
关于关注细节

对于细节的关注是分阶段的。就像没有建筑设计师会在一开始去关注厕所里应该贴什么瓷砖,在初始阶段应该关注的是这个楼是用来做什么的,有几层,门和窗的位置,整体的风格。在错误的阶段关注不该关注的细节是一种弱智行为,除非,你想做的事情不是设计大楼,而是装修厕所。

23:36, NOV 9 • Permalink
做你所爱的

做你所爱的,则每一天都可以让自己在充满幸福的疲惫感中睡去,然后在醒来时,充满能量巴不得立刻能够投入到昨天未完成的事项中。然后,自己会持续地优化这个过程,去除一切不负责任的幻想,去除一切繁琐而不必要的细节,去除所有让人头疼的各种方向的敷衍,一切在这个过程中提纯,而自己也将收获越来越多的快乐和满足。

1:13, NOV 9 • Permalink
20101101

最近见了不少人,他们中的很多都觉得 Android 上的应用开发,及 social game 是 next big things。而这似乎也成了目前京城某个圈子里的默契。只是对此我实在是没有感觉。找乐子是所有时代所有人都会有的需求,而对于一些意志薄弱者而言,甚至似乎活着的意义就是找乐子,于是他们甚至把自己辛苦挣来的工资都贡献给网游,贡献给网游公司的 ARPU。

并不是什么火,才去做什么。那样的人生起码不是我想要的。我赞同亦舒的话,对于活着而言,最紧要的是姿态好看,倘若一件事情费力争来,那么即使赢了也是输了。而我很早就明白的一个道理是,你没有必要去说服任何人,实际上你也办不到。所以对于别人能够说服我这件事,我觉得也是一个伪命题,这个世界上所有的决定,到头来,都是自己一个人在清晨时分睡不着而决定的。

当然,我感激每一次的会面,那是缘分。而人生到了某个阶段之后,就变成是每天去接触甚至融化不同的气场了。然后,越来越明白,究竟自己要的是什么。

23:23, NOV 1 • Permalink
信息量

这个世界上的人和事无非两类——有信息量的和没信息量。如果一个人每天说的话,都是大部分人已经知道了的,那么在大部分人看来,他就是一个没信息量的人。一个人如果长时间都在说没信息量的话,那么基本上就会进入到一个恶性循环,他只会越来越没有信息量,然后和周围一堆同样没有信息量的人在一起。

0:36, NOV 1 • Permalink
20101028

世事如棋,一着争来千古业。柔情似水,几时流尽六朝春。

16:28, OCT 28 • Permalink
Google App Engine datastore 的弱点

datastore 的强项在于存储有一定规模的数据,比如一个用户,一个帖子,一个回复,总之,一个实体。但是如果用 datastore 存储对象之间的关系,那么就会很痛苦——第一是性能,即使很小心的使用 entity group 进行规划,性能还是很弱;第二就是,复杂的关系 datastore 目前还处理不了或是有很大局限,比如 SELECT IN 类型的查询和跨表查询。

21:48, OCT 22 • Permalink
BC2Stats 1.7.0 is Here

Dear soldiers, BC2Stats is updated once again!

The latest update brings full Retina Display support as well as enhanced Next Events: now you can get a more accurate level up path from BC2Stats.

As BC2: Vietnam is coming soon, we'll update the app once the expansion is released. Thank you very much for your support.

10:08, OCT 20 • Permalink
关于如何选择工作

如果你有信心和能力做出一家 NASDAQ 上市公司,那么就去做吧。这种时候,想必你已经有了足够多的人和钱方面的积累。你需要的是一个足够好足够新的赚钱主意。

但是大部分人在目前恐怕是没有信心和能力做出一家 NASDAQ 上市公司的。那么怎么办呢?列出你可能加入的所有公司,逐一分析他们的盈利模式,然后找出离上市最近的那家,如果:

  • 他们的商业模式确实可行。
  • 你认同这个商业模式。
  • 你有办法帮助他们的生意做得更大或者更稳。

那么就加入这家公司,要成为最优秀的人就应该去最优秀的地方,然后至少做到他们上市两三年后,再思考下一步吧。那个时候,或许看待整个人生的方式和眼光都不一样了。

1:44, OCT 4 • Permalink
UI/UE 设计师在中国的未来

每次当我访问一些不得不访问的网站,如银行航空公司备案网站时,我总会在想——他们什么时候能够把他们的网站做得好看一些,好用一些呢?甚至推出一款 iPhone/Android 应用?

在过去的几年时间里,作为一个网站开发者同时也是 iOS 开发者,我研究了无数国内国外的好看好用的应用,他们中的很多无疑在设计理念和实现上非常科幻。作为一个设计者,我可以在自己的作品中将设计做到一个让自己满意的程度,可是自己的应用网站毕竟能够影响到的,只是很少的一部分人。

我真的希望在某个时候,当我访问一个银行或航空公司的网站时,他们的设计也能够让我发出由衷的赞叹。而我相信,在未来,当很多基本问题都被解决得足够好的时候,设计会成为很多用户选择一个服务的重要考虑因素。我希望那一天能够早点到来,我更希望能够参与。

5:16, SEP 25 • Permalink
什么是云计算?

云计算不是一个小概念,你可以从很多个角度去理解它。如果你是从企业使用的角度,那么云计算作为一种全新的 IT 架构,它可以带来:

  • 无限的计算能力
  • 无限的存储能力
  • 无限的传输能力
  • 接近 100% 的 uptime
  • 按照实际使用量进行收费

从以上的每一点,你可以用自己以前的 IT 架构与之对比,就可以感觉到不同。

而对于最终用户而言,云计算意味着:

  • 无限的存储能力:比如,如果照片都存在云里,那么就不用担心手机上存储空间不够。你可以通过手机访问你个人云存储中的几千甚至几万张照片。
  • 可靠的,易于访问的数据存储:因为所有的数据都存储在一个可靠的云计算数据中心,因此,比如不小心丢失了手机,那么也不用感觉困扰,因为手机中的所有的联系人,依然可以从云中同步下来存储到新的手机上。并且,甚至可以通过云,将原来手机中的数据锁定并清除。
  • 更低廉的使用费用:因为数据都存储在云中,因此用于访问的设备并不需要特别巨大的存储和计算能力,会更省钱。

目前针对企业应用,已经有了一些很成熟的云方案,尤其是存储类方案,如 Amazon S3Rackspace CloudFilesGoogle Storage for Developers。不过存储类方案各家都做得大同小异,主要的比拼点是品牌,规模和价格。而更有趣的,是计算类的解决方案。

IaaS and PaaS

计算类的解决方案目前主要有种:

  • IaaS - Infrastructure as a Service:这种方案的核心是服务器虚拟化及高度自动化的管理,通过部署大规模的虚拟化宿主,配合集群式的高性能存储,可以非常方便地在瞬间根据用户需要提供无限量的 virtual server(虚拟服务器),用户拥有这些服务器的全部权限(比如 *nix 的 root 权限),可以在上面运行任何自己的应用。但是 IaaS 依然需要用户去自己解决架构上的一些问题,比如安全,比如数据库服务器的数据复制,及应用服务器的容错处理等等。因为可以瞬间提供新的 virtual server,所以理论上来说,如果应用架构本身有成熟的 scale out 设计,那么 IaaS 也就提供了无限的计算能力。

    这类方案的典型例子就是 Rackspace CloudJoyent SmartMachinesAmazon EC2

  • PaaS - Platform as a Service:这是最创新的方案,技术上比 IaaS 更加先进。你可以把 PaaS 方案理解成一台具有无限计算,存储和传输能力的 application server,你会需要使用新的编程技术来实现应用,但是这样将使得你的代码可以同时运行在平台的数千甚至数万台服务器上。你的应用从上线第一天起,就为每天上亿的访问量做好了准备。当流量不断增长时,不需要担心架构升级带来的可能的 downtime,至于更基础的如安全和存储冗余等问题,就更是无需担心。目前这类平台里最成熟的实现就是 Google App Engine,而 Joyent SmartPlatform 现在也进入了 beta 期,同时由 NASARackspace 在合作进行中的 OpenStack 项目也非常有潜力。

关于未来

我相信 PaaS 会是未来的主流,因为它可以为用户节约很多的时间和麻烦。当 PaaS 在未来更加成熟的时候,那时用户可以将更多时间用于思考如何快速实现业务逻辑,而不是纠结于技术细节。

而作为云平台上的开发者,我看到的机会就是,目前各种 PaaS 平台上都非常缺乏真正可用的应用。

大公司对于 PaaS 的投入,就好像在搭建一个大型的购物商城,但是最终决定这个商城业绩的,不是这个商城的基础设施完善程度(当然这很重要),而在于其中的商家。而商家中最有价值的,就是那类连锁的大品牌。

0:13, SEP 19 • Permalink
20100909

昨天 V2EX 遇到了一点小意外,停机了一个半小时。这是停机前的流量:

这些凶猛的流量来自 Twitter 上 @Fenng 的推荐,及豆瓣上和菜头的一篇日记。并且终于在大约晚上 10 点左右时,让 V2EX,这个跑在 Google App Engine 上的云社区,达到了 CPU Free Quota 的最大限制。

而在 Google App Engine 上通过 Google Checkout 付费购买 CPU Quota 却是一件有些奇怪的事情,因为支持的国家中并无中国。而我试了好多次都遇到了各种莫名其妙的错误。于是最后,原本我以为可以在 20 分钟内解决的危机,变成了大约一个半小时。最后,莫名其妙的 Enable Billing 成功。于是可以有足够多的 CPU Quota 使用了。

而这一切是怎么发生的呢?

在过去的几个月时间里,Olivia 翻译完了 Rework 一书,当然,不是得到出版社支持的正规翻译,只是纯粹出于爱好,并且想从中学到东西。这些翻译稿陆陆续续地发在了我从 5 月起恢复的 V2EX 上。而在 9 月 8 日这天,这本书的初译完成。

然后发生的事情你就知道了。

感谢 Fenng,和菜头两位前辈及众多网友的认可。我们以后会继续完成更多有意义的事情。

而这件事情让我得到的另外几点教训:

  • 云计算在理论上来说意味着无限的计算能力和带宽,但是实际上当你遇到这样的突发流量时,云产品可能会因为一些非技术原因而让你尴尬。你需要提前做好准备,包括但不限于充分熟悉你所在使用和依赖的云平台。而经历了这次的流量事件之后,我对于这些问题也确实加深了理解。
  • 这个世界上很多有质量的,惊人的事情,在前期或许是几个月甚至几年的沉默。而这其中的风险在于,你如何能够预知在经历了这些沉默之后,自己所做的是一个不会感到后悔的选择?

我订了本周五中午的机票,下午到北京。期望这次能够见到很多老朋友。

3:40, SEP 9 • Permalink

项目进展到一定阶段,计划的意义就显出来了。

这是我关于 Project Babel 目前正在做和接下来打算做的具体内容,都写在这个 wiki 条目里。

Project Babel 是一个用 Python 语言写成的,运行在 Google App Engine 上的社区软件。我希望能够通过这个项目,产生一个对于创意工作者,中小公司及各种兴趣组而言足够好用的社区软件。同时通过将基础架构搭建于 Google App Engine 的云计算环境中,最大程度减少网站的维护工作量及安全担忧。

V2EX 社区即是使用最新开发版本的 Project Babel 搭建。

4:07, AUG 27 • Permalink
Future of Retina Display

如果 Retina Display 发展到下一代,那么分辨率将是 1280x1920,将可以完全覆盖 Full HD 显示区域(1920x1080),届时 Full HD 的视频播放和游戏想必会成为大卖点。

而那个时候,如果桌面 Mac 的分辨率还没有革命性的突破的话,或许开发者最好的选择就是外接第二个 Cinema Display 27 进行测试吧。

2:51, AUG 16 • Permalink
关于 iOS 上的 Killer App

究竟什么才是构成一个 killer app 的技术要素呢?

  • 程序能够充分使用各种用户觉得自然的手势,甚至发明出让用户觉得自然的手势。或者,当看到别人的 app 中有实现一个很好的手势时,能够迅速恰当地应用到自己的 app 中。
  • 精致但是不繁琐的设计,把握其中的度是最大的难点。争取只用图标就能抓住潜在用户的心。
  • 适当地集成一些 social media,但是绝对不能未经用户同意就以用户的名义发消息,更不能扰民。
  • 检查 deployment target 是否设置得足够低同时又可以满足程序运行要求,提交之前找至少 5 个不同国家的人进行充分测试,否则上线之后一个未发现未解决的 crash 会让你至少难受 7 天。如果一连几次提交都是为了解决悲剧的 crash,那么就应该停下来反省一下开发流程了。
  • 如果是新项目,那么从一开始就要为 Retina Display 的设计考虑,而不是先完成低清版本再补充高清。高清的支持可能需要低清 2 倍以上的设计时间。一个小提示:不要在放大状态调整 Photoshop 里矢量图形的边缘,会出现恶心的,同时难以修复的锯齿,应该在 100% 的视图里去做这件事。
  • 每天至少在 Xcode 里运行一次 CMD+SHIFT+A,确保一定要消除蓝色图标后的那个数字。

1:55, AUG 9 • Permalink

Project Babel 是一套运行在 Google App Engine 云计算平台上的开源社区软件,而 V2EX 网站即是该软件的第一个实际运行实例。

根据我之前的计划,2.4.0 将是 Project Babel 的第一个稳定版本,将提供完整的安装文档及 ZIP 格式的下载包。而目前 2.3.0 的源代码已经在 GitHub 公布,如果你希望尝鲜的话,现在已经可以 git clone。如果你希望用 Project Babel 在云计算平台上搭建自己的社区网站,而不是花费太多时间去折腾代码,那么我推荐你等待 2.4.0 正式版的发布。

所有的开发讨论可以在 V2EXBabel 节点找到,欢迎在那里反馈问题,讨论未来。

一套软件一旦开源,就不再属于特定的某个人了。特定的人或许可以在特定的历史时期推进软件的发展,而长远看来,却是靠原则,理念,环境和用户来驱动一切,我希望 Project Babel 也是如此。

2:19, AUG 2 • Permalink
V2EX Update 20100801

今天 V2EX 上了两个小的新功能,一是可以通过电子邮件找回密码,二是在搜索的时候可以列出相关节点

虽然都不是什么激动人心的酷功能,但是这类小功能,尤其是通过电子邮件找回密码,对于用户是非常有价值的。我用过很多个人编程爱好者做的网站,很多都没有这个功能。可以理解,因为完整的业务逻辑要实现起来很繁琐,同时要考虑到不能留有被滥用的漏洞。目前 V2EX 的限制是,用户不能在 24 小时内执行超过 2 次密码重设。

17:17, AUG 1 • Permalink
About 1.6.0 and Crashes

BC2Stats 1.6.0 arrived in App Store several days ago, and we're really exciting about it. We introduced a new feature called Next Events in this release, it can show you the shortest path to rank up. But what does that mean?

You probably already know that when you achieved certain amount of kills you can get a star for a weapon, and a bronze star gives you 500 points, silver 1000 points, gold 5000 points and platinum 10000 points. So Next Events can show you the least kills required for a weapon to get a star, and that's really fast way to rank up.

Several days after the release, we began to receive crash reports regarding this feature and we've figured out why: our upstream API BFBCS.com recently added a new weapon in their API outputs, and our app is not ready for that weapon because it lacks stars stats. That newly added weapon in API is called DEMOLITION, we guess it should mean the kills you achieved when you destroyed a building with C4, grenade or rockets. Since it lacks some necessary data for our app to calculate, then crashes happen. We'll support that weapon in future release, but for now, we're submitting an update to Apple for fixing the crashes caused by this unexpected change in API.

Thank you very much for your support and patience. The update should arrive in your iPhone in 5-7 days or even longer, because Apple has their mystery review process. If you can't wait, you can become our beta tester to get the update now.

For existing beta testers, you can download our latest fix from below links:

http://commondatastorage.googleapis.com/bc2stats/OLIVIDA_DEV.mobileprovision
http://commondatastorage.googleapis.com/bc2stats/BC2Stats.ipa

How to use: Please download the 2 files, drag them into iTunes and sync. If your iPhone/iPod says error regarding provisioning profile, you can safely delete all provisioning profiles on your iPhone/iPod (It can be found under Settings › General › Profiles), and install the app again from iTunes.

20:34, JUL 30 • Permalink
通过 WebDAV 用 MobileMe 来作为网站的头像服务器

MobileMe 是一个 $99 一年的网络服务,提供 20G 存储空间及每月 200G 的带宽流量。按照苹果的设计本意,这些存储空间和带宽足够用于支持用户用 iLife 所创建的高清格式家庭视频的分享。但是实际上能够像这样子用 MobileMe 的用户实在是太少,大部分人只是把它当作一个邮箱和网盘而已。

不过,MobileMe 的 iDisk 组件,其实是可以作为一个类似 S3 的云存储来使用的,并且很容易通过简单的编程来进行文件增删——iDisk 支持完整的 WebDAV。

最近,我将 V2EX 的头像系统,改用了 MobileMe 来提供服务。实践证明,在 App Engine 上,通过 WebDAV 来向 iDisk 上传数据是完全可行的,而且性能极好。但是有一些限制——App Engine 不支持 WebDAV 的 OPTIONS,PROPFIND 和 MKCOL 请求方法,唯一支持的有意义的是 PUT 和 DELETE,也就是说,你无法通过 App Engine 在 iDisk 上创建目录。因此目录必须提前用其他方式创建好。但是除此而外,一切都非常好用。

欢迎注册 V2EX 并试试我们的新的头像上传功能。

4:55, JUL 28 • Permalink
Cloud Future

Google 推出了 App Engine,Microsoft 有 Windows Azure,而最近 Rackspace 和 NASA 则宣布了 OpenStack 项目,这些平台和 Rackspace Cloud 这样的 VPS 服务不一样的地方在于,他们都引入了一整套的全新 API 及更高级的抽象,简单来说,在这些平台上部署的应用,都是全新开发的。

而我相信在未来,这些平台将会取代目前的传统 hosting。因为这些平台可以带来:

  • 更高的可靠性,单一应用由数千台服务器支持。
  • 更简单的部署,用户不需要关心哪些文件是更改了的,也不需要去服务器上胆战心惊地执行 SQL ALTER。在 Google App Engine Launcher 里,部署已经简化到单击那个蓝色的 Deploy 按钮,然后等待至多几分钟,所有的新业务逻辑就上线了,包括新的数据存储结构。
  • 更合理但是有可能利润率更高的收费,对于简单应用,用户可能会比以前付更少的钱甚至不付钱,而对于复杂应用,一个应用消耗过多的资源却不会影响到云里的其他应用的性能。并且这些额外的复杂度也成为了云服务提供商的利润来源。

小企业和个人会首先成为这样的新平台的用户和受益者,因为对于他们来说,这个新平台更可靠,更简单,甚至更省钱。而为了让应用能够在这个新平台上运行,以往在 LAMP 世界里已经实现过的应用将会需要全部重新实现一次,于是就会有全新的云博客,云记事本,云论坛,云相册……我相信这个其中会蕴含无数的好机会,而这也是 Project Babel 2Project Picky 的意义。

4:21, JUL 27 • Permalink

这是我一直想要的东西,能够在一个页面上速查所有 Twitter API 的 URL,请求方式,参数及是否需要验证。

目前这个页面还没有能够 100% 覆盖所有的 Twitter API,不过接下来我会每天更新的。

2:45, JUL 26 • Permalink
V2EX Update 20100723

在 Google App Engine 上实现了 Twitter 的 OAuth 方式的帐号关联,现在你可以选择将你在 V2EX 上的发贴和回复自动同步到 Twitter。同时也可以使用 V2EX 内置的 Twitter 客户端来发推和看推。

7:02, JUL 23 • Permalink

Rackspace 和 NASA 发起并支持的开源云计算项目。

目前一部分代码已经可以从 Launchpad 上下载到,不过根据文档,目前如果想要在自己的机器上安装这个东西,步骤还是不简单的。

从目前所透露出的信息来看,这个东西应该是在 Ubuntu 或 Debian 上进行主要开发和测试,目前主要支持的编程语言是 Python,用到了 Tornado 框架,一个由 FriendFeed 和 Facebook 贡献的开源 web 框架,某些方面非常类似 Google App Engine。而在数据存储方面,OpenStack 应该会提供一个类似 datastore 的对象数据库。

根据计划,OpenStack 会在今年 10 月中旬提供第一个发布版本。国内是否会有公司第一时间跟进并在国内提供这样的基于开源软件的云计算服务呢?

0:18, JUL 20 • Permalink

V2EX 现在有了为桌面浏览器而设计的全新样式,欢迎访问。

上线时的初代样式本是为移动设备所设计,因此现在若是使用 iPhone 或 Android 访问时,将依然可以看到 mobile 样式。

另外,V2EX 现在有了一个小小的新功能——Notes,这是一个简单可靠的云端记事本。

19:31, JUL 16 • Permalink
坚持

很多小宅男们的某个小小的梦想开始于 2005 年,而 5 年过去之后,却很少有人能够坚持在做 5 年前感到无比兴奋的事情。而那些确实还能够坚持下来的,现在都还不错。

当选择要做一件什么事情的时候,或许应该想想接下来可能会遇到的困难。只是你年轻的时候缺乏经验,于是你想不到接下来如此之多的天灾人祸。不过那么多年过去了,你也算是多少有些经验——知道什么路可以走,什么路走不通了。于是可以再想想,当下一个五年过去之后,有什么东西是一直属于自己,并且在不断发展壮大的。

5:33, JUL 15 • Permalink
BC2Stats 1.5.5 is Here

1.5.5 is the first version optimized for iOS 4, we updated weapon images to HD resolution for iPhone 4 Retina Display, and fast app switching is also supported, when you return to the app, it will restore the state exactly to where you last visited.

This is just a beginning, we'll bring more awesomeness in 1.6.0. Stay tuned. You can subscribe to our blog updates via this links.

If you're willing to help us testing 1.6.0 and future beta releases, welcome to sign up our beta program.

4:32, JUL 13 • Permalink
更改 Xcode 默认模板中的 __MyCompanyName__

比如,若是我想把 __MyCompanyName__ 更改为 OLIVIDA,那么打开 Terminal,运行下面这条指令:

defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{"ORGANIZATIONNAME"="OLIVIDA";}'

然后下次启动 Xcode 时,创建的新代码中就是 OLIVIDA 而不是 __MyCompanyName__ 了。

6:34, JUL 9 • Permalink
如果 iPad 装备上 Retina Display

如果 iPad 的显示屏也换上 Retina Display,那么分辨率将会达到 2048x1536,而目前 iMac 27-inch 的分辨率是 2560x1440,那么 Retina 版的 iPad 将覆盖目前 iMac 27-inch 的 85% 像素,并且,在纵向分辨率上超过 iMac。

于是如果到那个时候,iMac 没有升级到更高的分辨率的话(比如 5120x2880),将无法完整显示 iPad 的模拟器。

对于很多 Photoshop 使用者来说,无法看清楚屏幕上的像素将是一种挑战。比如我就经常依靠屏幕上的某个像素来确定某条线是否对齐。

5:28, JUL 7 • Permalink
Google Storage 的 HTTP Headers
fatty:~ livid$ curl -I http://commondatastorage.googleapis.com/bc2stats/BC2Stats.ipa
HTTP/1.1 200 OK
Expires: Mon, 05 Jul 2010 18:47:01 GMT
Date: Mon, 05 Jul 2010 17:47:01 GMT
Cache-Control: public, max-age=3600
ETag: "6764eb6ef0b0492c22b26835e0e91029"
Content-Type: application/octet-stream
Last-Modified: Mon, 05 Jul 2010 17:38:05 GMT
Content-Length: 9880939
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE

经过我验证,ETag 部分确实用的是文件的 MD5 checksum。

1:48, JUL 6 • Permalink

如果你的硬盘上有大量的电影收藏,并且你希望用无线网络在 iPad 或 iPhone 上观看这些电影,那么 Air Video 就是一款绝对值得推荐的软件。几乎支持所有格式,包括 RMVB,及主流的字幕格式。整个体验非常可靠。

18:06, JUL 3 • Permalink

需要使用最新版本的 Chrome 或 Safari 观看。

4:20, JUN 28 • Permalink
关于 Picky 后台的 is Page 和 is for Sidebar

默认情况下,每篇文章的 Is Page 和 Is for Sidebar 都是 No,这样的文章就是一篇通常的 blog post。这样的普通文章会出现首页时间轴及 RSS 中。

如果 Is Page 设置为 Yes,则文章不会出现在首页,也不会出现在 index.xml 中。但是可以通过指定 URL 访问到。

如果 Is for Sidebar 设置为 Yes,则该文章的标题会出现在首页左边的导航栏中。

这些设置的引入,及 Parent URL 和 Set 功能的加入,可以让你用 Picky 搭建出非常灵活的内容组织结构来。

20:04, JUN 27 • Permalink
Medal of Honor Closed Beta

Anyone got the beta key for Medal of Honor closed beta? We've just redeemed ours. Let's fight together on PSN, just add OLIVIDA as friend.

18:03, JUN 26 • Permalink
两张可爱的 Sprite

Google:

Twitter:

14:58, JUN 25 • Permalink
CALayer 与 iPad Apps 的性能

每一个 UIView 对象实例都包含一个 CALayer 实例,可以通过 [myView layer] 的方式访问到。而 CALayer 又提供了非常多的邪恶功能,比如修改一个 view 的圆角程度,甚至给它加阴影。这些方法都非常好用。但是代价就是程序的 framerate 就会大受影响,尤其是执行诸如 presentModalViewController 这样全屏幕豪华操作时。

结论是:要用 CALayer 可以,但是在写到屏幕上之前一定要先将这个 layer 的内容变成一坨简单的 bitmap,否则就等着看幻灯片吧。

4:15, JUN 23 • Permalink

Define.io我一直对词典这样的东西中意,我现在一直在使用的这个 alias——Livid 就是 2000 年某个夜晚的时候翻词典偶然所得。

我在 2004 年末的时候用 Python + dictd 完成了第一个版本的 Lividict,可惜那个网站无法逃脱一个致命的问题——就是它只运行在一台服务器上。所以当后来那台同时也运行着 V2EX 的服务器被拔线之后,这个需要独立 dictd 的 Python CGI 程序也就下线了。

当 2008 年 Google App Engine 问世时,我在第一时间注册了 lividict.appspot.com,不过那个时候对于如何在 App Engine 上做词典服务,确实没有太多的想法。不过似乎是一种巧合,App Engine 在一开始时,所唯一支持的语言,也是我在 2004 年时用来做 Lividict 的 Python。

两年之后,我终于把自己的这个项目开始着手实现,现在 Lividict 运行在 Google App Engine 上的第一个简单版本已经上线,并且可以通过 define.io 这个域名访问到。

为什么选择 define.io 这个域名,或许首先是因为运气,让我还能够注册到。其次就是 define 是 Google 一直以来的一个好用功能,比如你想查 livid 这个词是什么意思,那么只要在 Google 里输入 define livid 即可。所以用 define.io 来作为词典服务,实在是很妙的一件事情。

目前 define.io 能够提供的三类查询:

  • 简明英汉释义(词条和音标还相当不完整,我正在补充中)
  • 同义词词典(也就是 Thesaurus 查询。词条相当完整。同义词查询在构思产品名称或是代号时尤其有用)
  • 任何英文句子的中文翻译

这只是一个小小开始。define.io 运行在 Google App Engine 上的一个意义就是,我不用担心这个网站会因为什么物理原因消失。因此我可以将我的全部精力投入到功能的完善和增强中。这很幸福。

7:34, JUN 20 • Permalink

如果你正在基于 Google App Engine 制作一些好玩的东西,并且希望中国大陆的用户也能快速访问到你的应用的话,你会需要用到这个服务的。

6:10, JUN 15 • Permalink

来自 FriendFeed(已被 Facebook 收购)的开源 Python Web Server + Framework,用起来很像 GAE。源代码在:

http://github.com/facebook/tornado

如果你无法访问 tornadoweb.org,那么可以从我备份的这个地方下载最新的 0.2 版本:

http://web.me.com/v2ex.livid/tornado/tornado-0.2.tar.gz

安装方法:

tar xvzf tornado-0.2.tar.gz
cd tornado-0.2
python setup.py build
sudo python setup.py install

Hello World 例子:

import tornado.httpserver
import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

这是 FriendFeed 已经在生产环境中使用的技术,本身的实现和用法也很棒。总之是一个非常值得学习的框架。

5:21, JUN 14 • Permalink
Project Picky 加入简单的 Feed Hits 追踪

在 hg 中的最新版本现在已经可以追踪一些基本的来自 RSS Reader 的点击,会以 +x 的方式显示在 Writer 中。另外在 Neue 主题的最终页面上也可以看到。

4:53, JUN 14 • Permalink
更加安全稳定地部署 Google App Engine 应用

如果你在国内的普通网络上部署 Google App Engine 时遇到了各种奇怪问题,那么你可以试试为 appcfg.py 套上一层 SOCKS 代理。具体做法如下(以 Mac OS X 上的 Google App Engine Launcher 的安装位置为例):

  1. 下载 SocksiPy,提取出其中的 socks.py,放入 /usr/local/google_appengine。
  2. 在 appcfg.py 的 import sys 一行的下面加上这 4 行:
    import socks
    import socket
    socket.socket = socks.socksocket
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 7777)

其中最后一行中的 127.0.0.1:7777 即为 SOCKS 代理的地址和端口号,你可以换成自己的。至于如何获得这样的 SOCKS 代理,最简单的方式就是通过 SSH Tunnel 或 Tor。详细的我就不在这里展开了,你可以在网上搜索到很多这类文章。

3:36, JUN 14 • Permalink
创业之前的考虑

当为了自己的新事业构思想法时,应该考虑一下这个想法如果实现,能够确实帮助到多少人?

我认为,人数应当越大越好。并且应该考虑的是,用户使用这个产品的频度,最好是那种每天都用的。

然后,应该通过技术和市场的手段,能够让最多的用户很容易就接触到产品,用上产品。这样才会有成功的可能。

6:39, JUN 13 • Permalink
由简入繁,由繁入简

回顾很多软件产品的发展路线,发现其中一个有趣的规律。

每隔一段时间,在一个已经成熟的领域,就会出现一款简洁好用的软件来打破平衡。就像当年的 Firefox。可是那么多年过去之后,当 Firefox 发展到 4.0,于是也就不简洁了。而这个过程中,Chrome 出来了,一开始的时候也非常简洁,但是这个玩意从简洁到复杂的速度比 Firefox 还快。

似乎大公司的软件开发者们,就是很难抵住那种那种做更多功能的诱惑。而从投入产出比来说,其实在后期花大量时间做出来的新功能,其吸引新用户的速度未必能够和初期简洁时相比。于是有的人就选择离开,然后去做新东西了。

新东西肯定都是很简洁的。而能够一直让产品保持简洁,是一种立场,一种眼光和一种功力。比如 37signals 在此方面就功力十分深厚。

8:59, JUN 11 • Permalink

今天,EA DICE 宣布了 BFBC2 的 Onslaught DLC 的上线时间及价格:6 月 22 日,10 美元。感觉有点贵,因为类似的 Special Ops 玩法在 Modern Warfare 2 中是游戏自带的,不过对于这个游戏的死忠来说,也未尝不可。可是同时宣布的 Kit Shortcuts 却让所有人大跌眼镜。所谓的 Kit Shortcuts 就是,你可以付 20 美元,然后就提前解开多人游戏中的高级装备。

商业公司的商业项目当然可以追求利润,但是如果做出一个不符合大多数玩家期望值和常识的决定,就太可惜了——EA DICE 好不容易建立起了一个可以和 MW 系列分庭抗礼的多人 FPS 品牌,可是现在却因为短视在消耗这个品牌的好感度。

这一切让人感觉就像是,现在他们最关心的就是钱,而非持续提高游戏的质量。

8:43, JUN 11 • Permalink
BC2Stats 1.5.0 is Here

This is the biggest update ever. So many new features in BC2Stats 1.5.0:

  • Leaderboard: check the top 50 people playing on PS3, Xbox 360 and PC.
  • Watch List: add your friends or anyone to a watch list.
  • Versus: you can compare with anyone now.
  • No more crashes in Kits and Vehicles.
  • Weapon Leveling Details: now you can see how many kills needed for next star.
  • Force Refresh: if you think your stats is not most recent, you can always force refresh as many times as you want for getting latest stats.
  • And many more refinements.

For celebrating the launch of 1.5.0, BC2Stats will be on sale for a limited time for only $0.99, from JUN-9 to JUN-11. Grab your copy now: http://itunes.com/app/bc2stats

0:43, JUN 10 • Permalink
How to Become a Veteran in BFBC2

After PS3 has got 1.04 update, you'll find that veteran status is now displayed in player list, the number in a white rectangle indicates how many Battlefield series game this player played.

The best part of the veteran system is that you can get an extra weapon: M1 Garand. The semi-automatic rifle used by American soldiers in World War II.

Although you can't mount Red Dot Sight on it, M1 Garand is powerful and accurate in short/medium range.

And if you don't know how to get Veteran 1, here is a quick and easy method you can follow:

  • Log in to https://www.battlefieldheroes.com/playnow with the same EA account you're using for BFBC2. Battlefield: Heroes is a free multiplayer FPS developed/operating by DICE.
  • Create a character in Battlefield: Heroes and play several rounds.
  • Log in to http://www.battlefieldbadcompany2.com/ and click My Soldier > Veteran, and choose Battlefield: Heroes to add. Then you'll get Veteran 1 and being able to use M1 Garand in BFBC2.

So, veteran system is a really cool idea. Do you know that the 1st in PS3 Leaderboard, id lfenec is Veteran 10! That's pretty impressive, isn't it?

p.s. You can also get to veteran by playing Battlefield: 1943 demo, that is a free demo you can download from PSN/XBL.

[Thanks, Paul]

2:37, JUN 7 • Permalink
Project Picky 的文章集(Set)功能

如果你在用的是 Project Picky 位于 hg 中的版本,那么你会发现从二月开始,每篇文章多了一个字段——article_set。

这是一个叫做“文章集”的新功能,通过给文章赋予同样的 article_set 值,你可以将一类文章归类起来。那么这样做的好处是?

1. 每篇文章下方显示的 related article 相关文章。比如这篇 Concentration 的下方。

2. hg 中的一个最新功能,可以将某个 set 的所有文章以 Atom Feed 格式输出。比如你希望将你的某个 Project Picky 安装实例中的一部分文章用到其他地方,那么这个接口就会很方便。比如这是 set=essay 的所有文章:

http://picky.olivida.com/set.xml?set=essay

值得注意的是,在部署了这些新功能之后,你可能需要花一些时间等待 GAE 为这些新功能用到的新查询类型构建索引。构建时间根据你的文章数量而定,所需时间可能不短。

另外就是,hg 中的 Project Picky 为大部分页面实现了 head 方法,这样的话,如果遇到像 Digg 这样通过 head 检查 URL 可用性的网站,就不会再出现错误提示了。

4:13, JUN 5 • Permalink

来自苹果官方的 HTML5 演示。今天,这家公司已经不仅仅只是一家电脑生产商了。

不过,或许是出于某种考虑,这些演示中并没有涉及那些“高深”的 WebSocket 和 Local DB Storage。

15:06, JUN 4 • Permalink

除了不支持 API Proxy(但是在 VPN 上工作得很好),我觉得已经在各方面超越 Tweetie。我尤其喜欢新版本中的 Unread 提示。如果一定要说一个缺点的话,就是切换帐号时的点击数多了一些。总之强烈推荐!

15:01, JUN 4 • Permalink

如果你正在创造某种 business,那么花些时间读一下 37signals 的 REWORK 是绝对值得的。这本书中包含了很多你会希望自己早点知道的,常识。

13:02, JUN 2 • Permalink
你的时间有多值钱

基本上取决于,当同样长度的时间用掉之后,作为结果,可以影响到多人少的心情和生活。而这些人居住在地球上的什么地方,也很重要。

12:00, JUN 2 • Permalink
Concentration

一些道理在脑子里想的时候很简单,但是实际上遇到考验时,却不一定能够坚持自己的立场。这一年半来,遇到很多看似可以在短期内带来收入的事情,但是过上一段再来重新评估这样的项目时,却发现是对主线的冲击。因为实际上我目前最宝贵也最缺乏的东西是时间,因此任何可能占用到我时间的东西应该屏蔽——自然就包括很多和主线无关,但是却貌似不错的项目。

所谓的主线是:

  • 从服务用户,到从用户那里收到钱,中间的层级应该尽可能少。
  • 在全球,尤其是美国和欧洲,有超过 100 万的潜在付费用户。
  • 潜在用户中,有相当部分愿意为了好的设计和用户体验付费。
15:08, MAY 29 • Permalink

一款支持 iPhone 和 iPad 的开源软件,可以在手机上查看汇总的 App Store 销售报告,及汇总的来自各国的 review。

如果你之前没有用过这类软件,那么用之前要慎重——因为你可能会从里面了解到太多你还没有准备好去了解的残酷现实。

2:55, MAY 27 • Permalink

Flash 肯定不能限制这些多媒体网站进军 iPad。

并且,最神奇的是,退出 MobileSafari 之后,音乐也依然在继续。

17:25, MAY 17 • Permalink
关于独立 Mac 开发者的成功

来自 Panic 的一条推:

FACT: Since Transmit 4, 11 days ago, Les/Tim/Mike and I have replied to 4,442 support emails. 644 left in the queue. Thanks for patience! -C

自从 Transmit 4 上线以来,他们平均每天要回复 500 封支持邮件。也就是说,如果一刻都不停歇的话,差不多 3 分钟一封。

我现在每天差不多要回 2 到 5 封,已经感觉这个世界是如此的多样化。如果以后这个数字也变成 3 位数,希望那个时候能够有足够专业的人来一起帮我吧。

11:27, MAY 8 • Permalink
关于钱

这是来自 Tim O'Reilly 的一段话:

"Money is like gasoline during a road trip. You don’t want to run out of gas on your trip, but you’re not doing a tour of gas stations. You have to pay attention to money, but it shouldn’t be about the money."
17:05, MAY 6 • Permalink

等了差不多 7 天,BC2Stats 1.2 终于通过审核了。增加了对 SPECACT DLC 的支持,增加了 Veteran Status / Skill Level / Teamkills,修正了命中率,及其他更多的细节调整。而最激动人心的功能,就是可以查看所有的 dogtag 了。

BC2Stats 1.2

20:56, MAY 5 • Permalink

BC2Stats 1.2 新功能的抢先预览。也是我第一次在 YouTube 上传 HD 质量的视频。感叹一下,YouTube 的上传界面实在是一件艺术品,太好太强大了。像 YouTube 和 Twitter 这样的东西,真的很容易就玩上瘾了。

3:59, MAY 2 • Permalink

用过的最好的 Notes 客户端,可以和 Simplenote 同步。Simplenote 是一个简单的想法,但是执行异常优异,或许有一天会成为和 Twitter 一个量级的东西。他们的后台选择了 GAE,这也使得我对 GAE 更有信心。

5:48, APR 30 • Permalink
关于 BFBC2 的销量

因为最近在做 BFBC2 的 app,根据目前我手上的数据,这个游戏的全球销量应该已经超过 400 万份,三大平台(PC,PS3 和 Xbox 360)的同时在线人数在 14 万左右(正版玩家)。并且还在持续增长中。一个新的标杆就这么树立起来了。

18:05, APR 29 • Permalink

全新的 V2EX 回来了。

18:27, APR 26 • Permalink
20100424

人真的应该在年轻的时候,坚持去做一些有难度的事情。尤其是当面对的是来自这个社会甚至这个世界的困难的时候,更是不要退缩。因为人心如水,若是不断地退缩,最后就只能流到低下的地方去了。

每一段需要咬牙坚持的经历,都是后来自己会去感激的。

3:30, APR 24 • Permalink
20100422

工作在一个第三方的 API 上,很多时候真的是很没安全感的事情。因为最终用户不会管你的程序不可用其实是因为第三方的 API 有问题。所以,无论如何,我应该在今年内做出一个自己的 API 来。

20:05, APR 22 • Permalink

BC2Stats,一款用于在 iPhone 或 iPod Touch 上查询战地:叛逆连 2 (Battlefield: Bad Company 2) 多人对战成绩的软件,现在已经更新到了 1.1 版本。这个版本修正了 1.0 中 Xbox 360 玩家遇到的“Soldier Not Found”错误,并且带来了以下新功能:

  • Rush 模式的成绩及胜率,并且分别包括 Attacker 及 Defender 时候的情况。
  • 武器和載具的星级。
  • 在 Kits 页面显示 Best Weapon。这样的话,比如你想知道某世界高手用来杀敌最多的武器的什么的话,用 BC2Stats 查他的 soldier tag 就可以了。
  • 自动更新时会显示进度了。

iTunes 下载链接:http://itunes.apple.com/app/bc2stats/id367328974

10:16, APR 22 • Permalink
关于 App Store 的审核周期

Icon FactoryCraig Hockenberry 刚刚在 Twitter 上说,在等了超过一周之后,iPad 版本的 Twitterrific 终于审核通过。

如果只是增加新功能的版本发布,那么等上 7 到 10 天也是可以接受的事情。但是如果是修复错误的发布,那么等上 7 到 10 天就会很要命。因为在这个过程中,1.0 版本中的错误可能就会带来 App Store 里的一堆 1 星评价。

为了避免出现这样的状况,有些问题真的要在提交之前想清楚。

  • 每个开发者都可以用 Ad Hoc 方式在最多 100 台设备上发布 beta 版应用。我觉得这个资源应该好好利用,并且争取能够有几十个热心用户在 submit 之前帮忙测试 1 到 2 天。这样的话,很多正式上线之后猛然发现的 show stopper 都可以用这样的方式测出来。
  • 不要在提交的 app 里包含自己不确定的东西。这样的东西可能会带来一堆愤怒的一星评价,而错误的修正从发现到到达最终用户可能会需要 7 到 10 天。
  • 和愤怒的用户沟通很重要。但是用何种方式沟通呢?Twitter 或许是一种很性感的方式,但是基本上很难覆盖到你的所有用户。著名的 Doodle Jump 游戏在全世界卖了超过 100 万份,可是他们的开发商 @LimaSky 的 Twitter 帐号上的 followers 却只有 4000 不到。而这种时候,一个简单的 CGI 表单可能会更有用。

8:19, APR 21 • Permalink
胖子与 iPad

首先声明,我不瘦。于是我发现:如果把 iPad 放在肚子上用,貌似凸起来的肚子就会影响敲键盘,最近几天只用 iPad 回过一封长邮件,感觉还得适应适应。Apple 的人貌似都很瘦,所以或许他们在设计和进行初步测试的时候不会遇到这样的问题吧,但是美国胖子那么多。

19:44, APR 20 • Permalink
iPad 入手第一天

一些感想:

  • 为什么 Apple 会要求所有的应用必须能够支持所有的 orientation,因为 iPad 实在是很重,如果用户拿在手上,已经习惯了一种 orientation 的话,这个时候如果一个新启动的应用要求用户变换 orientation,那么确实会有点累和不爽。
  • 目前的 App Store 里的 iPad 专区,可以用广阔天地,大有作为来形容。
  • iPad 屏幕的像素密度很高,因此不要假设一些很小的字体会在上面有很好的显示效果,同时也是因为像素密度的原因,图片的显示效果会特别好。而游戏类应用,得益于像素密度,物件的边缘感觉就像是已经有了抗锯齿效果一样。
  • 如果程序中设计有让用户滚动的主区域,那么一定要让这个区域可以很容易地被右手大拇指触碰到。
  • 和 iPhone 时代一样,Apple 自己的应用中有一些非常好看的组件,但是显然这些组件不是位于公开的 API 中的,比如 App Store 里用于放置截图的那个框。这个时候就需要各位的山寨功力和眼力了。
  • 大部分情况下,UISplitViewController 可以解决很多情况,但是自己构建更复杂的界面也不是不可以,比如内置的 iPod 应用就没有用标准的 UISplitViewController。

以上是玩了一个小时之后的感觉,以后有新的发现再发上来。

另外就是,关于前段时间 Twitter 收购 Tweetie,我觉得这是一件 100% 的好事:

  • Loren Britcher 向全世界的 iPhone App 开发者演示了一次现实版的美国梦。
  • iPhone OS 在全世界的活跃用户有几千万,而 Twitter 的也有几千万。但是 iPhone OS 用户为 Apple 及相关公司创造的 ARPU 是一个巨大的数字,而 Twitter 用户的 ARPU 呢?因此,这次收购若是能促成 iPhone OS 用户向 Twitter 用户的转化,那么必然也能提高整个 Twitter 生态系统的价值。
  • 最后,我觉得这件事情未必对于其他第三方开发者和用户而言是坏事。首先,免费版本的 Tweetie 会干掉很多垃圾应用。但是再往后,公司中各种意见妥协的结果真的会战胜 Loren 单打独斗时的高效和创意么?

11:01, APR 18 • Permalink

Fingers crossed.

19:26, APR 17 • Permalink

当你在调试一个 JSON API 的时候,Firefox 提示你下载这个文件一定是很烦的体验。但是,在安装了 JSONView 这个扩展之后,所有的 JSON 就可以在浏览器中格式化为非常清晰且包含代码着色的样式,就像 Firefox 对 XML 的处理那样。

5:16, APR 17 • Permalink

Battlefield: Bad Company 2 是在今年 O 的生日那天入手的,在随后的时间里,我们在这个游戏上投入了大量的时间——因为多人部分实在是太好玩了:

  • 这是我们有史以来玩过的对大陆的网络状况兼容得最好的多人 FPS,居然在 PSN 上对战时一点都不卡。
  • 多人部分有 4 个兵种可选——突击,工程,医疗,侦查。这 4 个兵种的可用武器和玩法差别都相当大。
  • 游戏中提供了非常深邃的升级系统,没有那么几十个钟头是不可能升满的。而等你到达高等级之后,和同样高级别的其他玩家对战的感觉又完全不同。
  • 游戏的大部分地图都是室外,非常开阔,让人不得不佩服 Frostbite 1.5 引擎的表现力。并且游戏中的所有建筑,只要被手雷砸到或是被火箭轰到,都会崩然倒塌,物理效果十分真实。整个游戏的环境都是可破坏的。比如看到敌人躲在墙后,那么一发火箭弹也可以让他毙命。

经过差不多一个月的厮杀,FPS 菜鸟如我们也终于到了 25 级。所有武器解锁。于是可以根据战况自由地选择任何武器。于是在 4 月 8 日这天,我们在想,既然这款游戏这么好玩,为什么我们不为它做一款 iPhone App 呢?

然后经过 4 天时间,BC2Stats.app 1.0 提交到了 App Store。这是一款用于在 iPhone 或 iPod Touch 上查看 BFBC2 多人游戏的状态,包括:军衔,杀敌数,爆头数,子弹发射数,命中率,狗牌(Dogtags),各种武器的详细状态,各种载具的详细状态,徽章(Insignias/Pins),奖杯等等。由于我住的地方 3G 覆盖不是很好,所以我们在代码中针对各种可能下载失败的情况做了充分处理,因此哪怕是使用巨慢的 GPRS 网络也可以在一分钟之内获得所有的状态信息。

M95

比如上图是我最喜欢的武器 M95 的具体信息,而更多的截图可以到 BC2Stats.app 的网站查看。

这是我第一次喜欢一个游戏喜欢到为它做一个 companion app 的程度。这个过程实在是太刺激了。如果你还没有开始玩 BFBC2,那么我强烈推荐你试试:

http://store.steampowered.com/app/24960/

从 App Store 下载 BC2Stats.app:

http://itunes.apple.com/app/bc2stats/id367328974

12:44, APR 16 • Permalink
GAE Datastore 的排序限制

如果一句 GQL 里既用到不等号又用到 ORDER BY,那么好玩的事情就发生了:

First ordering property must be the same as inequality filter property, if specified for this query; received hits, expected __key__

并且,对于比较操作,也有巨大限制:

BadFilterError: invalid filter: Only one property per query may have inequality filters (<=, >=, <, >)..

另外就是,当你部署了一个需要新的 index 类型的功能时,很可能 GAE 上一时半会还没法构建出新的 index,于是为了不使得服务中断,那么最好是在新功能的 GQL 处用上 try: except:,当然,前提是新功能不是一个必须功能。

5:15, APR 14 • Permalink
20100412

4 天时间,5000 行代码,最后生成的文件 6.1M,从开始到做完自己都觉得爱不释手的一个东西,使用了一个非常酷的 API,在今天晚上已经提交到了 Apple,好玩的是最后确定下来的内容分级居然是 17+。接下来就等通过之后,再向大家宣布吧。我现在只想去好好睡一觉,然后两天时间不喝咖啡只喝绿茶,然后再继续完成计划中的两个 1.0,一个 1.1 和一个 2.2。

或许我应该在 approved 之后,拍一段 HD 质量的视频然后传到 Vimeo,有些使用时候的感觉,只靠静态图片是远远不能充分传达的。

最近发现的一个有意思的站点 http://cssiphone.com/ ,里面收录了大量专为 iPhone 设计的精美网站,很有参考价值。

23:48, APR 12 • Permalink
API 掘金者

今天早上的 iPhone OS 4 发布会上 Steve Jobs 提出了一个观点:

“在移动设备上,当人们有了什么问题时,并不会去到搜索引擎搜索,而是打开解决特定问题的 App。比如想找吃饭的地方,就会去打开 Yelp。”

这个观点想要传达的信息是,任何一类特定问题,在 iPhone 上都有一个 App 来解决。而驱动每个 App 的,就是背后的 API。

我想,或许最终这个世界上每一个有用的 API,都会被用来驱动某个有用的 iPhone App。目前最成功的例子是 Twitter,全世界已经有了数百个靠谱的 Twitter API 应用 并且还在不停增长中。我觉得,在未来,个人开发者如果想要获得最大的成功,就应该去盯住那些潜在受众群最广泛的 API,并在移动设备上实现一个优雅的 UI。或者,自己去创造一个这样的 API 源。

国内的网站中豆瓣拥有最完整也最开放的 API 支持,但是我对豆瓣的 API 一直感到遗憾的是:对于需要读写用户信息的 API,他们要求必须使用 OAuth 验证,但是却不提供对 HTTP 验证的支持。我了解 OAuth 的一堆优点,但是:

  • OAuth 的签名算法在移动设备上没有成熟好用的库(如果现在已经有了的话,欢迎告诉我,至少在 2008 年我开始时是没有的),而且那个签名规则确实一开始不容易理解。
  • 豆瓣的 OAuth 认证过程不是 iPhone Friendly 的,而是一个面向桌面浏览器设计的页面。
  • OAuth 在 iPhone 上的开销会很大,因为要完成这个过程,无论如何需要启动一个浏览器。
  • OAuth 不能用一些简单工具进行调试或者 play,支持 HTTP 验证的 API 就可以用 curl 这样的简单工具进行调试。至少是降低了 API 的使用门槛。

或许也是因为这些无论技术或用户体验上的原因,目前 iPhone 上最靠谱的 Twitter 客户端无一使用的是 OAuth,全都是 HTTP 基础验证。

Twitter Clients for iPhone
Figure 1. Twitter clients on my iPod Touch 3rd Generation

HTTP 基础验证存在一些安全问题,比如用户名和密码其实是用 BASE64 加密之后传输,这样的话这些敏感信息很容易在中途被截获。但是如果使用的是 HTTP 基础验证的升级版 HTTP 摘要验证,并配合上 SSL 的话,安全性就会大大提高。如果觉得大部分摘要验证实现中的 MD5 算法不够安全,服务器端也可以指定要求客户端使用 SHA256 或者是其他更安全的摘要算法。

在我看来,我对一个 API 源的期望值包括:

  • 同时支持 HTTP 基础验证和 OAuth,并且 SSL 可选。
  • 对于读取操作,不要设每小时限制(这也是 Twitter API 中目前最讨厌的)。
  • 如果还能提供一组像 Google App Engine 那样的漂亮详尽的性能图表就更好了。

成为一个 API 猎人是一种很好玩的体验,就像是在核爆炸之后的世界,拿着一支捡来的外星武器在废墟里游荡的感觉。而作为探索的出发点,我会推荐 GitHubhg.io 还有 ProgrammableWeb

Fallout 3: Game of the Year Edition

17:57, APR 9 • Permalink
我的软件/网站项目中的 80/20

一个人做事的时候,其实时间更难规划,因为貌似 deadline 没有那么硬了。所以这是我在做一个 1.0 版本的项目时,规划时间和资源的 80/20 原则:

用一半的时间完成 80% 的用户会用到的功能。并且需要保证这个部分的完成足够稳定。这个部分进行再多的测试都是不够的。所以我会拉上周围的所有人来帮我测试。基本的 look-n-feel 和底层的数据访问方面的代码也在这 80% 的范畴中。而最后会直接面向用户的介绍网站和网站上所用的文案,自然也是在这 80% 中。

用另外一半的时间完成 20% 的用户会用到的功能。这些功能在实现难度上比上一部分高,但是最后只能满足可能还不到 20% 的用户。但是这部分用户的评价对软件的销售或是网站的访问量有重大影响,所以用一半的整体资源来做让他们高兴的东西,也是应该的。

而 1.0 阶段完成,站稳脚跟之后,自然会有下一阶段的做事方式。不过在下一个阶段中,诱惑变多,有的时候可能会花大量的时间去完成只有不到 1% 的用户会用到的功能,这在一方面来说是种乐趣,可是也意味着巨大的机会成本。

8:27, APR 6 • Permalink

我的小游戏 Gomoku 的最新版本 2.1.0 刚刚通过了苹果的审核,现在已经可以从 App Store 下载到。

这是 2.0 分支的第一次更新,除了例行的 AI 修正和增强之外,还增加了两块棋盘。其中一块是超级有爱的 Bangumi 主题。

Gomoku 2.1.0: Bangumi Board

或许你会觉得从实用性来说,Bangumi Tan 主题不太容易看清楚——可是,为什么不可以有一块专为萌倒小朋友而设计的棋盘呢?♥

这里是 Gomoku 的完整更新记录

5:36, APR 6 • Permalink
20100403

iPad 在美国已经开卖了,可是我目前在中国。所以我还需要等待。不知道 4 月 15 日之前我是否能够拿到这台设备。不过我希望那个时候我在开发的 iPad 应用已经完成。我还是希望能够在提交之前拿到真实设备上进行测试。

不过最近效率不高倒是真的。似乎人随着年龄增长,于是每天吃掉的话比说出来的话就越来越多了。曾经国内有很多喜欢做网站的年轻人,他们每天看着自己的秘密花园里的草木越长越茂盛是一件非常开心的事情。而现在,我觉得,对于他们而言,最好的路似乎,要么加入一家大公司继续做自己想做的事情。或者,彻底转变自己的兴趣?去和横在自己面前的那道墙纠结看起来很壮烈,但是无论如何都不是本来的意愿。总之,我觉得自己现在每天呼吸的空气都挺变态的。而自己的兴趣,其实也正在一个砍掉重练的阶段。这个阶段无论如何努力都无法让其变得更加舒适自然。

3:15, APR 4 • Permalink

Gomoku 是我在 2008 年中开始的项目,那是 iPhone 官方 SDK 刚刚宣布的时候。一开始在申请 iPhone Developer Program 时遇到颇多挫折,不过最后还是在 2008 年 10 月时拿到了 iDP,应该是当时中国的第一批。过程中得到了苹果公司的夏鹏先生和张碧仿先生的巨大帮助,在这里再次感谢他们。在拿到 iDP 后我就提交了 Gomoku V1 并很快得到了通过。根据我当时的搜索结果,Gomoku 应该是当时 App Store 里第三款五子棋游戏。

Gomoku V1 上线时我正在杭州,而自己那时候的工作并非是和 iPhone 有关的。在杭州的不到一年时间我想明白的事情是,我到底还是要做一件自己真正感兴趣的事情,才会在遇到挫折和不快时,能够持续保持斗志。于是我最终在 2009 年 8 月离开了杭州,然后让自己进入到了一种彻底自由的状态,去做自己想做的事情。

于是这半年来,我的几乎所有时间都在 iPhone OS 和 App Engine 上。而 Gomoku V2,我的第一个 iPhone App 作品 Gomoku 的 2.0 升级版本,在今年 3 月 29 日首先上线。

我在这个版本中重写了 AI 引擎,增加了 7 种不同的棋盘样式,增加了显示棋盘坐标(根据国际比赛标准)及上一步的功能,并且还增加了非常详尽的帮助页面及游戏胜负统计。

V2 于 2010 年 3 月 25 日提交到 Apple,在 4 天之后审核通过。App Store 现在的审核效率实在是提高了很多。我计划在下个月的 15 号,及 5 月初,再提交两个应用。而 Gomoku,也将会持续改进下去,并且它的后续版本的升级都将是免费的。如果你喜欢五子棋,那么欢迎来试试我的版本。

下载地址:http://itunes.apple.com/us/app/gomoku/id294454696?mt=8

10:58, MAR 29 • Permalink
20100327

本来各种天气预报都说昆明会在 3 月 26 日晚上下雨,可是我 27 日早上起来,发现被骗了。

昨天把自己一直以来会在工作时候听的音乐整理了一下,列表在这里。虾米的精选辑有 50 首的上限。我改天再做 Part II 了。

最近一直十分感叹的事情就是,Apple 的保密工作实在是太厉害了。3 月都快结束了,我们还是丝毫不知道 iPad 的内存究竟会有多大。而这个数字决定了 iPad 上究竟会不会出像 Aperture 或者 Lightroom 这样的软件。我希望这个数字是 512。毕竟 PS3 也只有 512,但是足够做很多事情了。

一点关于 iPhone App 开发的小体会:不要把一堆计算任务压到启动的时候做,哪怕是看起来再小的部分——比如计算 cell 的高度。尽可能提前把这些东西都算好,用空间换时间是绝对值得的——启动更快则用户也更高兴。而且很多莫名其妙的和 WebCore 或者 icu 有关的启动即崩溃的问题也就一并解决了。

8:23, MAR 27 • Permalink

今年的 3 月 27 日的晚上 8:30,记得关灯一个小时哦。

10:34, MAR 26 • Permalink

Adobe Creative Suite 5 将于今年 4 月 12 日发布。我对其中的两个部件特别感兴趣。

  • Flash Catalyst - 很早就宣布了的技术,记得好像最初的名字是 Thermo,让设计师可以直接在 Photoshop 中,通过一些层规则,就直接输出可用的 UI。
  • Flash Creative Suite 5 - 可以用来开发 iPhone 原生应用,并且所开发的应用可以提交至 App Store。目前 iPhone 开发平台上还没有任何强大的 content authoring 工具,如果 Flash CS5 能够实现承诺,那么冲击巨大。
22:10, MAR 24 • Permalink

自从进入 2010 年,我所在的这座城市就没有下过雨。而最近几天,这座城市所在的省份终于登上了各种新闻网站的头条。连国家总理都跑到离昆明只有几百公里却是重灾区的地方查看灾情。

似乎从小到大,这样的情况还是第一次遇到。而几天前看到新闻说,甚至连机场的跑道,都因为地下水干涸而下沉断裂,进而影响到飞机起降。虽然目前昆明城区内各种供水似乎还算正常,可是一切却像是正在朝越来越糟糕的方向发展。

如果这样的状况真的持续十年?那么这里的小河和池塘会慢慢的干涸,一切绿色的植物也将消亡。只是稍稍想像一下就觉得恐怖至极。

于是想到几个问题。

  1. 一些极其浪费水的行业或许应该消失了,比如桑拿和澡堂。
  2. 酒店或许应该为每个房间装上单独的水表,并且将房间内的所有用水算为额外的收费项目。
  3. 石油是可以通过管道进行长距离输送的,那么水呢?我好奇这个世界上是否有跨省输水管这样的玩意?
  4. 不知道政府是否有类似我们统计网站流量那样的精确系统,用于统计一个省份各个地区的水消耗,并且生成直观的图表甚至智能化的报警呢?(Google Analytics 就有这样的报警)精确的数据是做出正确决策的第一步。

在发生这次旱灾之前,昆明的民用水价和全国相比都不算便宜——4 元一吨。如果因为这次的旱灾将水价提到 8 元一吨,并且将额外征收到的水费用于人工降雨的尝试,那或许也不错。

0:46, MAR 22 • Permalink
关于刚部署完的 Picky

如果你是第一次在 App Engine 上部署 Project Picky,然后用浏览器打开时,很可能会看到一个出错提示。这是正常的,因为这个时候 Google 的服务器还没有为这个新应用建立索引。稍微等 15 分钟到一个小时再上去看就好了。

20:27, MAR 20 • Permalink
20100319

最近从推友 @beenhero 的淘宝店 MooBuy 购买了一台 Amazon Kindle 2,从美国直接 FedEx 到中国,到手之后,非常满意。这台精致的白色设备的做工实在是完美。而电子墨水屏幕的表现也确实适合长时间阅读。接下来我打算在上面读完我之前积攒的几本关于 Core Animation 的书,及最近很热的 REWORK

在过去的两个月,也就是自 iPad 发布后,我一直在为一款 iPad 上的软件昼夜工作。现在两个月过去了,这款软件已经基本上在 Simulator 中成型了。接下来期待的就是尽快到真实设备上进行测试并最终登陆 App Store。

随着 Mac 屏幕的像素密度逐年提高,我个人感觉 Apple 从 2000 开始发展的一套 GUI 设计风格已经越来越需要一次巨大的更新,很多 Apple 自己的软件在 iMac 27 及 MacBook Pro 17 上显示时,字体及很多控件的尺寸已经显得太小,进而影响到可用性。而 iPad 会成为下一个 10 年 Apple 新的 GUI 设计风格的试验田。

目前 Mac OS X 的 Aqua 风格有很多细节,但是问题是这些细节一旦需要进行缩放时就会遇到问题——Apple 自己的很多设计优秀的软件,及第三方的优秀作品如 Things,界面上的元素基本上都是 PNG 图片构成的。而完全使用矢量图形构成的 GUI 目前在大规模使用的恐怕只有 Java 的 Nimbus

iPad 这样的触屏设备天生就会需要尺寸较大的操作控件,于是很多 Mac OS X 现成的设计风格更是无法移植。于是在这样的上下文中,Windows Phone 7 的那种摒弃了很多细节强调 zoomable 的设计,就显得十分有趣而且 modern 了。

4:52, MAR 19 • Permalink

一篇关于全球各国高速公路路标所用字体设计的趣文,非常有意思。

21:25, MAR 18 • Permalink

由位于瑞典的 DICE 工作室基于自创的 Frostbite 引擎开发的 FPS,个人觉得是史上最好的多人枪战游戏——武器之间差异足够大,多种载具可选,画面极佳(PC 版更是华丽),而且居然 PSN 上大规模对战时一点都不卡。

我的美服 PSN ID:OLIVIDA,欢迎 BFBC2 玩家来加。通常下午 2:00 到 3:30 在线。

16:06, MAR 13 • Permalink

start.io 是一个可以让你自助设计自己的浏览器起始页的服务。这是我的起始页:

http://start.io/livid

有多种布局和配色可以选择,另外还支持 OPML 导入。我之前自己做过一个类似的小东西自用,运行在 GAE 上:http://start.olivida.com/,源代码在这里

18:11, MAR 11 • Permalink

Opera 10.50,对于 CSS3 的各种特性已经有了相当好的支持,并且 Opera 只支持 CSS3 的标准语法,如 border-radius 而不是 -webkit-border-radius 这样的“方言”。目前 Windows 平台的正式版本已经发布。非常值得各位设计师跟进。

7:07, MAR 10 • Permalink

全世界最大的数字游戏商店 Steam 将在今年 4 月提供 Mac OS X 版。这是 Valve 在今年的 GDC 上抛出的重量级消息。如果你已经在 Steam 上购买了某游戏的 Windows 版本,并且这个游戏是 Valve 开发的话,那么你将不需要花一分钱就获得这个游戏的 Mac 版。

我从 06 年开始使用 Steam 时就在期盼这一天。这是我的 Steam Community 主页:

http://steamcommunity.com/id/v2ex

相信 Mac 的市场占有率将因此获益。

7:11, MAR 9 • Permalink

一个帮助你发现新 iPhone 游戏的 free app,很好玩,也很实用。来自 Slide to Play

7:21, MAR 7 • Permalink

LazyTweet 可以把 Twitter 变成你大脑的一部分——如果你有任何问题想得到答案,那么就在 Twitter 写出你的问题,并在消息中加上 #lazytweet 这个标签。然后或许用不了多久,你就会收到来自别人的回答。考虑到 Twitter 在全世界已有超过 1 亿注册用户,得到一个靠谱回答的几率还是相当大的。

7:50, MAR 6 • Permalink

来自 LLVM Clang 项目的高科技——C/Objective-C 语言静态分析。可以帮助你进一步减少 Cocoa 应用中内存管理的低级错误。

8:42, MAR 4 • Permalink

Transparent House 做的一段很漂亮的视频,展示了从 Apple I 到 iPad,由 Apple 设计的几款最重要的产品。

2:22, MAR 4 • Permalink

来自苹果供货商 Foxconn 的消息,iPad 会在 3 月出货 70 万部,4 月 100 万部。很多。

2:08, MAR 4 • Permalink
8001050F

大约从北京时间今天早上 8:30 左右,全球最大的游戏网络之一 PSN,即 PlayStation 3 的在线对战网络无法登录。所有使用厚版机器(40G/80G)的玩家在尝试登入时,返回错误代码 8001050F,同时,之前所有从 PSN Store 购买的动态主题无法使用,被标识为 corrupt data。而更悲剧的是,大量支持奖杯的 PS3 游戏甚至无法启动,奖杯信息无法显示,包括最新的 Resident Evil 5: Alternative Edition 和热门大作 Heavy Rain。而部分从 PSN Store 购买的游戏也出现故障无法启动。

而现在已经过去 8 个小时,故障依然持续。全球数百万玩家受到影响。在早些时候,PSN 一词甚至成为了 Twitter 的 Trending Topic。SCEA 的官方 Twitter 帐户 @SonyPlayStation 在 7 个小时前对此的回应:

We're aware that many of you are having problems connecting to PSN, and yes, we're looking into it. Stay tuned for updates.

在我印象中,这是最近几年所有云概念服务中时间最长,影响用户最多的一次 down 机。于是,在这个本来属于 RE5:AE 的下午,我搬出了已经蒙了一层灰的 PS2,玩了一个小时的各种老游戏。

16:32, MAR 1 • Permalink

之前在这里向大家介绍过的 mousepath.jar,现在他们有一个新名字和 Mac OS X Native App 了——IOGraph。当然,Windows 和 Linux 版本也有。并且,现在还可以支持多显示器。

23:17, FEB 28 • Permalink
管理 Mercurial 中的默认路径

Mercurial 的每次 hg pull 和 hg push 其实是没有必要在后面输入完整的远程 repository 路径的。最简单的解决办法就是,打开你的用 hg 管理的项目,其中有一个名为 .hg 的隐藏目录,编辑其中的一个叫做 hgrc 的文件(如果还没有的话,就创建之),加入下面这三行(以我在 hg.ioolivida-start 项目为例):

[paths]
default = https://hg.io/livid/olivida-start/
default-push = https://hg.io/livid/olivida-start/

你需要把上面的 URL 换成你自己的项目的。之后你每次 hg pull/push 时,就不需要输入 URL 了。

start.olivida.com,我上面提到的那个小项目,是我目前自用的浏览器默认首页,运行于 GAE 上,收录了我最常访问的网站,及一些在安装新电脑时有用的网址。

23:45, FEB 27 • Permalink

Squeeze 是一个帮助你用 CPU 换取硬盘空间的软件。安装之后,会在 System Preferences 中多出一个 Squeeze 面板,然后你可以在其中添加文件夹,然后 Squeeze 就会默默地为你压缩文件夹中的内容,但是这样的压缩不会影响到 Mac OS X 系统平时的读取。如果你的 MacBook Pro 硬盘紧张,那么不妨一试。

不过,我得提醒你,这个软件目前的版本号是 1.0。

22:01, FEB 27 • Permalink
Desperate Escape

今天把 RE5:AE 的第二个 DLC 关卡 Desperate Escape 打穿了。这个关卡要在 6-3 过了之后才有。感觉这次 AE 是在向两个游戏致敬:初代的生化危机和 L4D,Desperate Escape 的整个设置实在是太像 L4D 了——杀出一条血路,然后坚持到直升飞机降落。

20:09, FEB 25 • Permalink
关于最近 Apple 从 App Store 删除色情应用

我 100% 支持!而在我看来,问题不在于那些内容是否真的低俗或者有害青少年,我相信现在的青少年也完全没有必要通过 App Store 去找刺激,更不至于扯到什么言论自由上。而在于:

  • 这次被 Apple 删除的几乎所有色情应用,本质上都是一些垃圾:开发者从互联网上下载一些性感照片,然后用找来的 sample code 将那些性感照片放进去,于是一个 app 就这么诞生了。可是这些开发者根本没有权利使用这些照片,更不用说用这些照片赚钱。
  • 有人质疑 Apple 为什么不删除 Playboy 的 app?在我看来,因为 Playboy 的每一张照片法律手续完备:Playboy 有照片的几乎所有权利,有模特的 model release agreement,而且 Playboy 本身是已然是一个十分有声誉的重量级娱乐媒体,当然不至于被 Apple 删除。
  • 于是简单说来,App Store 并非是完全不能有 NC17 级的应用,但是这个分类如果细究法律问题,那么其实进入门槛是非常高的,并且,还得有人或第三方的公司和 Apple 保持良好沟通。很黑很不容易。

最后就是,这次的“专项整治行动”在客观上确实提高了 App Store 应用的平均素质。在之前,中国区的 Top Free 和 Entertainment 类目简直没法看了。毕竟,Apple 一直引以为傲的“App Store 有超过 10 万个应用”,绝对不能被对手抓住漏洞打击为“就是 10 万个色情垃圾”。

14:12, FEB 24 • Permalink

YouTube,Facebook,Google 和 Twitter 是目前世界上最大的几个 web 应用程序,如果 YouTube 选择不支持 IE6,那么我的大胆预计是,在 2010 年末 HTML5 就会在欧美成为主流。届时其他的几个大应用也会跟进。

13:58, FEB 24 • Permalink
BIOHAZARD 5: Alternative Edition

淘宝上的卖家很好很强大,2 月 18 日在日本首发的 BIOHAZARD 5: Alternative Edition,我现在 2 月 23 日就已经在玩了。几件有意思的事情:

  • 我入的前代和本代都是港版,但是上一代的港版用的是 Resident Evil 5 这个美版名字,而本代是 BIOHAZARD 5 日版名字。但是玩的时候都是英文语音英文菜单英文字幕。
  • 第一次进入游戏的时候,提示创建 VERSION 2.0 SAVE DATA,然后发现,果然要再次通关才能玩到附加内容。而前代我至少已经通关六次了。
  • 本代 PS3 版貌似画面分辨率有提升,等待权威媒体确认。

UPDATE 1: 过了 3-1 就可以玩 Lost in Nightmare 了。一开始有个小游戏,很棒,如果是双人操作的话,操作 Jill 的玩家会面临一点小小的挑战,具体我就不剧透了。整个流程基本上没有新敌人,就是几个船锚怪,很好打,不过船锚怪出现时的音乐也比较惊悚,亮点。最后和 Wesker 对决时,只要别挂,撑到一定时间就可以过关了。

21:27, FEB 23 • Permalink
Dell Mini 10v

Mini 10v 是 Dell 上网本的主流型号,最初我购买这个本子的动机是打算用来炒股,因为很多时候如果在我的 iMac 或 MBP 上开个 Boot Camp 实在是太伤筋动骨了。Atom N270 的 CPU 主频 1.6G,内存 2G,硬盘 160G,10 寸屏幕,这个外观指标基本够用。而 2700 的价格作为一台电脑而言确实不算太贵。

没过多久,我就发现这个本子其实更适合用来做一些 nerdy 的事情,比如安装 Mac OS X 10.6.2。开源社区在这方面已经做得非常成熟,你可以从 Google Code 上找到一个叫做 Netbook Installer 的项目,里面提供的两个工具,一个可以帮助你完成安装,而另外一个则可以完成从 10.6.0 到 10.6.2 的升级。我采取的方式是,将 Mac OS X 的安装盘 DMG 用 Disk Utility 恢复到一台古董 iPod 上,然后用这台 iPod 启动后完成安装。

在我把系统升级到 10.6.2 之后,一切硬件都可以正常工作:包括有线和无线网卡,摄像头,音响,2D/3D 图形加速,蓝牙,华为的 WCDMA 3G USB Dongle 甚至触摸板的 multi-touch 都可以正常工作。

Mini 10v 的键盘不错,但是最大的问题就是那块狭小的触摸板,面积实在太小,而按键又实在太硬。还是外接一个鼠标比较现实。另外就是,如果使用环境过于颠簸(比如在车上),你可能会遇到 Mac OS X 的四国语言死机画面。

我还试过在这台机器上用 USB 启动 Chromium OS Flow Build,速度飞快,而且同样所有硬件都可以正常工作。

21:02, FEB 23 • Permalink
Maillist

我觉得邮件列表实在是非常好的沟通工具,在经历过曾经 V2EX 的繁华之后。我们在一种叫做论坛的 web 应用中增加了非常多的看似好玩的因素,可是对于信息的安全性,搜索及设备兼容度都没有办法做到和邮件列表一样的高度。使用邮件列表的话:

  • 信息的传输全程加密:如果你用的是 Gmail,MobileMe 或其他支持 SSL/TLS 的邮箱的话。而且,邮件信息在收下来之后就存在用户的本地硬盘,不用担心什么服务器被拔线之类的问题。
  • 方便搜索:你可以在 Gmail 里搜索,也可以用本地应用如 Mail.app 搜索。
  • 分享文件:可以在邮件中附加 20M 以内的任何文件。
  • 设备兼容度:几乎所有联网的设备都可以收发邮件。在 iPhone 上尤其方便。
  • 过滤:Gmail,Outlook 和 Mail.app 都有非常强大的邮件过滤功能。

所以,我在考虑的是,或许应该基于邮件列表做一些什么有用的东西。

23:04, FEB 22 • Permalink

由 Nokia 的 Maemo 和 Intel 的 Moblin 合并而来的 Linux 内核手机操作系统。只是这个网站目前的一切信息都显示出这个项目实在是还处于一个非常早期的阶段。

或许是因为开源,于是 MeeGo 会在这么早期的阶段就公布。我实在是想不明白,为什么不能够等到一切都发展得更成熟一些的时候再公布呢?现在 MeeGo 所公布的这些信息,对于大部分普通的开发者而言,实在是没有任何意义——没有 SDK 可以下载,没有具体的设备参数,入门教程只有一个简陋的 Qt Creator 的 Hello World 教程。

当然,我会时不时地去看看 MeeGo 的网站,看看这个项目能够以多快的速度进化。

而到了 iPhone OS 4.0 发布时,希望 MeeGo 1.0 不会是下面这样的状况:

  • 各种厂家基于 MeeGo 推出各种分辨率的设备,这些设备的通讯和运算能力也不尽相同。市场上同时存在几个不同厂家的 MeeGo App Store。
  • 除了 C++ 之外,还有各种用 Java,Python 和 Flash 开发的应用,这些应用都不用遵循任何的可用性指南。
  • 数十万开发者已经熟练掌握的 Objective-C / Cocoa Touch 在 MeeGo 上当然是没法用的。
  • 究竟是大力支持 Symbian.org 还是 MeeGo.org 成为 Nokia 头疼的问题。开发者也会同样感到头疼,而且没有安全感。
1:32, FEB 19 • Permalink

Street Fighter IV iPhone Screenshot

这是我最喜欢的格斗游戏,没有想到 Capcom 居然会出 iPhone 移植版。用屏幕模拟 D-Pad 必定手感不佳,但是能够在 iPhone 上玩 Street Fighter IV 还是兴奋度十足的事情。按照这样的进展,指不定哪天连 Resident Evil 5 都会移植 iPhone 吧,二者的引擎在跨平台方面都是做得十分优秀的。

从目前 IGN 公布的截图来看,除了人物和地板是多边形渲染之外,背景很可能是预渲染的视频。等到游戏发布后,估计有的人会把屏幕上的那层膜甚至屏幕本身都搓坏吧。

17:49, FEB 16 • Permalink

Meebo,一个非常受欢迎的多协议聊天工具,虽然之前已有 web app 版,但是现在已经可以从 App Store 下载 native app。而且,和目前 App Store 上已有的诸多收费软件相比,Meebo 最大的优点就是免费。

17:26, FEB 16 • Permalink

Plants v.s. Zombies 植物大战僵尸现在已经可以从 App Store 下载了。售价 2.99 美元。实际玩了之后,感觉虽然画面十分精致,但是帧率好像不太足。不过,作为旅途中打发时间的游戏,倒是十分轻松又好玩。

17:23, FEB 16 • Permalink
Splash Image: Eclipse v.s. NetBeans

Eclipse Splash Image

NetBeans Splash Image

Eclipse 的启动画面真丑。Xcode 没有启动画面。

10:14, FEB 15 • Permalink
Mouse Path

这个叫做 Mouse Path 的小程序可以记录下你的鼠标轨迹然后生成一张很有意思的图片。

下面这个是我在 iMac 上大约 2 个小时的使用轨迹。

这个软件或许在各种 Focus Group 上也会很有用。

9:21, FEB 15 • Permalink

最终幻想 1&2 的重制版即将登录 App Store。Oh yeah!

最近 coding 之余最大的娱乐就是 Final Fantasy XIII 了,目前已经进展到第十章,快要通关了。不过到目前为止,这一代和 XII 相比,我的失望实在是大于惊喜。XII 的排兵布阵系统设计得太精妙了,最大限度地避免了游戏中那些没有必要的按键,让玩家可以将脑力集中在如何设计出一组最好用的 AI 来。而 XIII 里的 Roles 系统,虽然也有 XII 的精髓,可是当遇到弱智敌人的时候,还是不得不连续按圆圈,真的很傻。另外就是,召唤兽只有 6 只,而且入手几乎毫无难度。而 XII 里能够积齐 13 只召唤兽实在是一种境界,不仅要看攻略,还要有足够多的时间,耐心和技术。至于剧情,XIII 已经线性化到连飞空艇都省略了,实在是让人觉得不满足啊。

8:03, FEB 15 • Permalink

一个评论 iPhone 游戏的 Blog。值得关注。他们的 Twitter 账号:

https://twitter.com/nodpad
7:56, FEB 15 • Permalink
RT v.s. Retweet

Twitter 官方 Retweet 的唯一的意义就是那些“可能有用”的数据。但是有谁会去盯着一条信息的 Retweet 路径看呢?而且目前还没有看到这方面的太有意思的应用。倒是传统的纯文本 RT,能够通过 Mentions 很容易地看到反馈。而且,事实上,通过 API 中的 in reply to status ID 也可以很容易地还原出传播路径。所以,如果让我选的话,我还是支持民间方式的 RT。

7:40, FEB 15 • Permalink

Chomp

Chomp 是一个帮助你发现 iPhone OS 上的好应用的社区,其本身也是一个可以从 App Store 上下载的软件。你可以把它理解成是一个面向 iPhone Apps 的豆瓣。

软件本身的体验设计得非常好,但是其作用目前却很有限。因为虽然 App Store 目前在数字上有超过 17 万个软件,但是其中真正优秀的作品,恐怕一百都不到(个人感觉)。而 Chomp 这样的社区的作用和意义在于帮助用户从极多的选择中找到真正好的,而事实上虽然 App Store 目前已经是最好的移动软件商店,但是其选择却依然有限。17 万个软件中,有大部分,只不过是用 Cocoa Touch 框架包装了某个 RSS,或是将一堆版权可疑的 HTML 或 JPEG 打包,然后放进 Books 或 Entertainment 分类。

22:56, FEB 12 • Permalink

今年的第一次 Google App Engine 新版发布。此次更新带来了 Datastore 的巨大改进:

  • Datastore 游标功能,以后实现分页就更简单也更环保了。
  • Datastore 结果集 1000 的限制取消。同样对于分页和性能来说,巨大的好消息。同时,取消这个限制,也意味着 Google App Engine 上的许多企业和大型应用成为了可能。
  • Datastore 遇错时自动重试。于是这些 retry 的代码现在由 Google 帮你写了。而程序的可用性也会进一步提升。

除此之外,Python 运行环境新增了一个查询应用程序性能的 API——AppStats。而 Java 里则新增了一个便于集成的单元测试框架,相信对于企业应用也同样意义重大。

15:23, FEB 11 • Permalink
Mail.app Rules

Mail.app 是 Mac OS X 自带的邮件客户端,也是我最喜欢的邮件客户端——因为其中的一个叫做 Rules 的功能。

Rules 类似 Gmail 里的过滤器。比如你可以像下面这样设计一条 rule:

- 如果 发件人地址 包括 twitter.com
- 如果 邮件标题 包括 following
- 如果 发信日期 早于 7 天前
- 如果邮件符合以上的 所有 条件
> 那么 删除邮件

这样我就可以让 Mail.app 自动帮我把大于 7 天的来自 twitter.com 的 new following 邮件删掉。而这只是 Mail.app 的 Rules 提供的几个过滤选项及一个最终操作而已。如果你点开 Preferences > Rules 还可以看到更多。比如我还可以配置另外一条 rule,将所有来自 twitter.com 的 DM 消息在列表中设置为浅绿色背景以突出重要性。

如果你有超过一台 Mac,你甚至可以通过 MobileMe 在你的所有 Mac 间同步你的 Mail Rules。

我相信下一代的 Twitter 客户端也会需要这样的强大功能。

20:52, FEB 10 • Permalink

Mac OS X 上最好的照片管理工具 Aperture 更新到 3.0 版本,移植了 iPhoto `09 中所有的创新——Faces & Places。并且号称有 200+ 的新功能。

9:39, FEB 10 • Permalink

距离 iPad 发布会过去不到两个星期,iPad SDK 更新到 Beta 2 (Build 10M2135)。

目前我正在痛苦地下载中。为什么 Apple 不能提供增量方式的更新呢?每次新的 SDK 发布时,都需要用各种奇技淫巧把那坨大于 2G 的 DMG 文件先弄到某台我能够控制的服务器上,然后再切割成小块,一块一块地下载下来。

而且 Apple 最万恶的是,从来不提供新 SDK 的 MD5 或 SHA1 校验值。于是只有到了 mount 的那几分钟,才知道辛苦下载回来的东西到底有没有下坏。

8:09, FEB 10 • Permalink

如果你使用 Mercurial 管理自己的项目,需要在几台机器之间同步,同时又不希望公开自己的源代码的话,那么 Google Code 所提供的 hg hosting 是肯定无法满足你的需求了。这个时候你可以去试试 hg.io(他们有一个更长的域名同时也是这项服务的正式名称 BitBucket.org),这是我目前发现的最好的 hg hosting 服务,免费方案支持 1 个 private repository,共 150MB 的空间。如果需要更多的话,可以看看他们并不昂贵的收费方案

19:03, FEB 9 • Permalink

今天注意到的一个细节:Mercurial 是不能跟踪空文件夹的。

Mercurial does not track directory information. Instead, it tracks the path to a file. Before creating a file, it first creates any missing directory components of the path. After it deletes a file, it then deletes any empty directories that were in the deleted file's path. This sounds like a trivial distinction, but it has one minor practical consequence: it is not possible to represent a completely empty directory in Mercurial.

于是,用空文件夹来构思项目 TODO 的习惯得改改了。Mercurial 所传递的这个理念很有意思──提醒开发者不要试图开空头支票?

20:32, FEB 8 • Permalink

在我刚刚入手的这台上,屏幕的下半部分确实是发黄的。而且,Apple 在今年 2 月 1 日发布的这个更新 27-inch iMac Display Firmware Update 1.0 看来对问题解决彻底没有帮助。根据我的实际使用体验,用的时间越长,屏幕貌似越黄。

我预计这件事情最好的结果是一次全球召回。记得很多年之前,我的一台 PowerBook G4 就因为屏幕白斑问题享受了一次召回。还有一次,是一台 iBook G4 因为电池问题召回。希望苹果这次召回能够不影响到用户硬盘中的数据。

UPDATE: 有一份貌似苹果内部的文件流出:

http://www.geek.com/articles/chips/a-major-hardware-recall-looms-as-apple-halts-production-of-all-27-inch-imacs-2010021/

而他们目前能够提供的解决办法是:

Do not attempt a repair or replacement at this time. Explain that slight color variability is normal for LCD displays and in general does not warranty replacement. Customers who are concerned that their iMac has a yellow tint issue, and who provide contact information, will be contacted by Apple in approximately 3 weeks to arrange a LCD panel replacement. Those who do not wish to provide contact information can contact Apple in the future for the latest information. Customers who require an immediate resolution should be offered a refund.
7:16, FEB 8 • Permalink

CodaPanic 做的一款全功能网站开发 IDE,而这个可爱的软件里其实还有一些非常特别的小甜点。你可以试试在 Applications 中右键单击 Coda,然后点 Show Package Contents,然后进入 Contents/Resources,你会发现里面有一款叫做 Panic Sans 的字体。这款字体就是 Coda 的 Editor 中所用的等宽字体,是一款饱满而又清晰的字体,尤其适合用在暗色背景的代码编辑器或者 Terminal 中。而 Coda 在安装时是不会把这款字体安装到系统路径下的,只能在 Coda 内部使用。但是你可以双击这个 dfont 文件把它安装到 Font Book 中这样所有的程序就都可以使用这款优质的等宽字体了。说真的,我觉得 Panic Sans 是我看到过的等宽字体中最好用的一个。

Panic Sans

5:39, FEB 8 • Permalink

Redis 数据库服务器的作者 @antirez 写了一个有趣的小程序,为了验证这篇论文中关于 non-ECC 内存故障率的研究结论。他说,在一台普通的 PC 上,如果论文中的故障率确凿,那么你大概会在运行这个程序几个小时,至多几天的时间内看到一次报错。编译:

gcc -O2 -Wall -W -o dramerr dramerr.c
7:42, FEB 6 • Permalink

非常好的关于 HTML5 的阅读材料,作者是 Google 的软件工程师 Mark Pilgrim。这本书目前正在写作中,因此你将会在未来看到新的章节。彻底完成后也会有纸质版本。作者之前曾写了 Dive into Python,同样也是非常好的关于 Python 编程的教程。

2:49, FEB 6 • Permalink

Facebook 正在进行一个代号 Titan 的项目,将把其站内短信系统升级为一个全功能的 webmail。这对于一个已经拥有超过 4 亿用户的平台来说,是非常合乎逻辑的一个进步。至于这个东西是否能够和 Gmail 竞争,我看未必,电子邮件系统需要考虑的技术细节实在是太多了。

而在国内,QQ 早已有了这样的产品──QQ 邮箱,而且做得非常不错──他们甚至专门发信告诉我,QQ 邮箱现在已经可以完美兼容 Safari,并且还专门为 Mac 用户设计了一套叫做 iSkin 的皮肤。

1:56, FEB 6 • Permalink

Symbian OS 正式 100% 开放源代码。不过我觉得,如果他们真的想和 Apple 竞争,他们应该首先提供一个比 Xcode + iPhone Simulator 更好用的开发工具,目前在 Symbian OS 上的开发体验实在是不怎么样。用户体验是重要的,可是谁考虑过开发人员的体验呢?

18:54, FEB 5 • Permalink

Big Nerd Ranch 的 Aaron Hillegass 的 Cocoa 对象持久化方案,也可以理解为是 Aaron 版本的 Core Data。后端存储用的不是 SQLite,而是 Tokyo Cabinet。性能非常强悍。有意思的项目。

源代码在 github 上。

7:37, FEB 4 • Permalink

Resident Evil 5: Lost in Nightmares

Resident Evil 5 的第一个剧情 DLC Lost in Nightmares 很快就要登录 PSN 了,售价 $5,以 DLC 的标准而言可谓是相当便宜。不过我还是准备等 Gold Edition。按照 Capcom 一贯的圈钱手法,这个游戏明年出一个 Platinum Edition 也不是完全不可能。

4:41, FEB 4 • Permalink
37signals has the magic to make WORK a sexy thing.
3:09, FEB 4 • Permalink

用 HTML5 标准实现的网页中的视频播放体验,你一定不会想错过,非常震撼。不过只能用 WebKit 系的浏览器看到(推荐用 WebKit Nightly),作者说针对 Gecko 系浏览器的支持将在未来实现。

未来毫无疑问是属于 HTML5 的,期待看到 Adobe 在 CS5 中添加更多的对 HTML5 内容创作的支持。

2:54, FEB 4 • Permalink

Facebook 的高级软件工程师 Haiping Zhao(没错,华人),发明了一种用于提高 PHP 性能的手段:将 PHP 翻译为 C++ 本地代码运行。这个项目的名字叫做 HipHop,将会开源,不过目前我还没有找到在哪可以下载到。

1:48, FEB 4 • Permalink

那些大人物们,在他们建立起自己的帝国之前,他们都曾经是“个人”。因此,任何为“个人”呐喊的声音都是伟大的。

17:14, FEB 3 • Permalink
OpenDNS 把支付宝 alipay.com 当作钓鱼网站

很显然,这是一个错误。作为用户,你可以通过下面的这个技术支持反馈表单告诉 OpenDNS 他们错了。

http://www.opendns.com/support/contact/

如何知道 OpenDNS 将支付宝标记为钓鱼网站,你可以通过 OpenDNS 的 CacheCheck 查询到 www.alipay.com 的状态是 PHISHING。

http://www.opendns.com/support/cache/

如果你在查询的时候看到不是 PHISHING,那么说明 OpenDNS 已经解决了问题。希望 OpenDNS 尽快解决问题。

9:58, FEB 2 • Permalink

我目前最爱的 iPhone 游戏,Iconfactory 出的精品。这个游戏向我演示了,成为一个 Photoshop 大师是巨酷的一件事情──每天做超级好玩有创意的事情,还可以赚大钱。以前曾和 Olivia 讨论过如果将我们在游乐场玩到的那些游戏移植 iPhone 会如何,可是现在就已经看到了别人的完美作品。

Ramp Champ

Ramp Champ 对于 Store Kit 的应用也非常精彩,值得学习。这个游戏的最新更新可以通过跟随 @RampChamp 获得。

8:36, FEB 2 • Permalink
Project Picky v0.1.9 Screenshots

To see is to believe.

这是 Project Picky v0.1.9,也就是本站所运行在的版本在 Firefox 3.6 下的截图(请一定使用 Firefox 3.6 查看本页,因为这里用了大量的 CSS3 特效)。同时也演示了将在 v0.2.0 中出现的新的图片展示功能。

   

图 1 - Project Picky 的默认主题。

图 2 - 后台,也就是 Writer 的主界面。右边的列表是网络上最新的 mentions,包括了来自 Twitter 搜索的结果。

图 3 - 内置的 Twitter 客户端。

目前 Project Picky 还没有实现图片的 hosting 功能,因此这些图片暂时还放在我的 MobileMe 空间中,这个 10G 的静态空间跑在 Apple 的 CDN 上,每个月可以有 200G 的传输流量,不用实在浪费,因此,如果通过 WebDAV 直接从 Google App Engine 写入也不失为一个充分利用资源的好方案。在未来的版本中会有图片相关的功能的。你将甚至可以用 Project Picky 作为 Tweetie 的 image host。

8:09, FEB 2 • Permalink
TwitBird 里的关于阴影的处理彻底错误

最近在研究 iPhone 的各种 Twitter 客户端,除了一直在用的 Tweetie 2 之外,还入了 Echofon,Twitterrific 及 TwitBird Pro。发现 TwitBird 里的用户头像的阴影犯了两个错误:

  • 所有 Apple iPhone Apps 里的打光方向都是正上方,因此产生的投影应该是 90 度投影(如果以 Photoshop 里的方式来描述的话)。而 TwitBird 里大约是 120 度,也就是说,头像的影子是斜的。
  • 貌似 TwitBird 的阴影是指定了一个不透明度为 100% 的灰色,于是当界面切换到黑色主题的时候,阴影就悲剧了,黑色背景上斜的一圈灰色。而官方的做法是指定黑色,但是将不透明度调到大约 40% 到 70% 间(看个人口味),这样的话,在所有颜色的背景上都能得到正确的结果。
6:07, FEB 2 • Permalink

Smashing Magazine 的 2010 年 2 月日历壁纸,其中有一些相当不错的设计。他们的 Twitter 帐号是 @smashingmag,时有一些非常不错的设计资源共享,目前已有超过 11 万 followers。

已经过去的 1 月很精彩,而 2 月呢?情人节和大年初一是同一天,距离 iPad 上市还有不到 60 天,很多开发者正在整夜整夜地鼓捣 iPad SDK,CNNIC 号称要在 2 月 1 日开始停止很多“违规”的 .cn 域名的解析,不过我的 livid.cn 貌似依然健在,下个月将会有一堆 PS3 大作上线,包括 Final Fantasy 13 国际版,Resident Evil 5: Gold Edition,R 星的荒野大镖客还有画面神作的 Battlefield: Bad Company 2。于是这个月对于我而言,就是注定极其忙碌和充满等待的一个月,一切为了下个月的精彩。

1:55, FEB 2 • Permalink

中国推友 @disinfeqt 的 PHP 开源 Twitter 客户端 Rabr,用户体验相当优秀。

Google Code 项目网站:

http://code.google.com/p/rabr

你甚至可以通过 Rabr 注册到 Twitter 账号:

https://rabr.in/signup/index.php
1:24, FEB 2 • Permalink
我如何整理 Mac OS X 的桌面

Mac OS X 的桌面是一个非常直观的比喻,就像现实中的桌面一样,如果一个人的桌面不够乱,那么他一定不够忙。但是如果实在太乱的话,那么也会影响效率。因此我每隔一段时间就整理桌面。整理的方式也很简单,就是在 User Home 的 Documents 下建一个新文件夹(如果还没有的话)叫 Drawer(抽屉),然后将 Desktop 上所有不太确定会在近期内用到的东西,全部移动到 Drawer。就像在现实中一样,将桌面上不会在近期内用到的东西全部收进抽屉。不过在 Mac OS X 上我们可以通过 Spotlight 快速找到抽屉中的内容,这点要比现实中方便多了。不知道现在有没有专门这样子帮助别人整理桌面,而概念就类似抽屉的 Mac OS X 软件呢?

23:56, FEB 1 • Permalink

iPhone OS 上强大的 2D 游戏引擎 cosos2d 更新到了 v0.99 RC 版,现在已经可以用于创建 iPad 项目。另外这个版本还号称在许多常规组件如 Node 和 Sprite 上有性能提升。

21:40, FEB 1 • Permalink
修改 Itsy.app 以用于中国的网络环境

Itsy.app 是一款非常可爱的 Twitter Mac 客户端。如果你打开这个软件包深入内部的话,你会发现这款可爱软件的核心是用 HTML + JS 写成的。你会在下面的这个目录里找到 index.html 和 script.js。

/Applications/Itsy.app/Contents/Resources/

在其中可以看到 script.js,打开之后可以看到一个混淆过的 JavaScript,不过不影响我们的修改。将其中的 10 处(目前版本中) https://api.twitter.com/1/ 修改为你能够找到的或者是自建的 Twitter API Proxy 地址即可。另外还有一个需要修改的就是其中的 1 处 https://search.twitter.com/ 以支持 Search API。

Itsy.app 的默认字体尺寸太小,可以打开 style.css 在 * {} 处将 font-size 修改到 12px 就好看多了。

从技术上来说,这是一款主要使用 Web 标准 + JSON API 完成的 Twitter 客户端,只要支持 WebKit 的平台理论上都可以用。不过目前作者只添加了 Cocoa 外壳。

19:34, JAN 31 • Permalink

许多 Mac 软件用来检查更新的框架,很好用。

19:03, JAN 31 • Permalink

非常 mini 的 Twitter Mac 客户端。

18:58, JAN 31 • Permalink
一个全是极简主义壁纸的网站:

Simple Desktops is a collection of minimal distraction desktop wallpapers curated by Tom Watson.

5:49, JAN 30 • Permalink
See it, measure it and feel it.
1:49, JAN 30 • Permalink

其中演示 iWork 时,Keynote 里的幻灯片 Seven Wonders of the Ancient World,看到一张巨大的长城照片。

11:06, JAN 28 • Permalink
Next Big Skills

在前几天,我在这里写了一篇题为 Next Big Things 的文章,在其中预测了接下来几年一些最新的消费电子和互联网应用的趋势,并且我认为这将是开发者尤其是个人开发者的巨大机会。

而几个钟头前,Apple 的最新产品 iPad 正式发布,并且将于 60 天内发货。这无益使得我对上一篇文章中所提出的观点更为乐观。因为 iPad 也是一台基于 iPhone OS 的设备,Apple 加大对于 iPhone OS 的投入,将会在未来几年内进一步地提升 iPhone OS 的市场占有率。而目前的垄断者 Microsoft 将会面临巨大挑战并有可能在未来被 iPhone OS 所边缘化。

为什么我会如此看好 iPhone OS 的未来呢?在此我想提出关于电脑使用目的的讨论。在我看来,电脑的使用主要有 3 个完全不同的目的,这三个完全不同的目的分割出三块完全不同的市场。

服务器及企业应用

这是 Linux,FreeBSD 和各种更为昂贵的系统的天下,并且这块市场将很难被具有创新精神的公司所撬动,即使如 VMware 这样的创新公司,也用了十多年时间耕耘。在这块市场,稳定压倒一切。而个人开发者在这块市场中的机会也不多。当这块市场向云概念推进时,在未来能够看到的是巨型公司之间的厮杀。作为个人,你或许可以进入到其中的一家并发挥自己的力量在一个局部进行贡献。而掌控全局的事情,属于 Larry Ellison 这样级别的人物。

专业创作

这块市场目前最好的应用程序都跑在 Mac OS X 上,而在 Windows 上也有大量的精品。个人开发者在这块市场中有一定的机会,但是竞争非常强大。比如目前已经很难为 Mac OS X 设计出更好的 Web 开发工具,TextMateCodaEspresso 已经牢牢占领了大部分用户。至于更难的视频和图像软件,则是 AppleAdobeAutodeskAvid 和其他重量级公司的天下。

个人开发者在这块市场的机会在于创意和产品设计能力。发现一块没有人挠到的痒痒,然后漂亮干净地给出一个解决方案,配上各种酷的元素。这是当年 TextMate 成功的方式。但是这类服务于专业创作的产品的代码量实在是不小,通常开发一个稳定产品的周期会超过半年。

这块市场的硬件就是我们平时在工作台上用的那些,巨大的屏幕,全尺寸的键盘,海量的内存和硬盘,及超过 2 个核心的 CPU。

休闲娱乐

各类游戏主机从 PS3 到 NDS 都可以划入这个范畴,但是为这些设备开发并获得成功不是大部分人都可以做到的,如果没有官方的 SDK 和文档,个人开发者会浪费太多时间并且很难从中赚到钱。而个人基本上不可能拿到 PS3 的官方 SDK。对于这种封闭性的合理解释是,厂商们因为担心过于开放所带来的各种安全问题,及最终的盗版问题。

而 Apple 的 iPhone,iPod touch 及 iPad 现在已经成为了休闲市场的第一选择,并且,更开放。当然,或许在中国还暂时不是。但是在全世界范围内,iPhone + iPod touch 的出货量已经超过 7500 万台,如果是计算移动设备所带来的收入的话,Apple 已经超过 Nokia 成为了世界上最赚钱的移动设备制造商。因此,我们还有什么理由去怀疑 Apple 是第一呢。

但是目前 Apple 所展现出来的增长,还没有完全覆盖到这块巨大市场。仅 2009 年的第三季度,全球智能手机的出货量就超过 4000 万部,而 2009 年全年,全世界的上网本出货量超过 2000 万部。如果再算上那些休闲用途的常规尺寸笔记本和台式机,我们就不难想像 iPad 的潜在用户群会有多大。

这是一个在全球拥有超过 1 亿潜在用户的市场,比之前我们所讨论的服务器及专业创作用户的市场要大得多,而这也是个人开发者机会最大的地方。因为无论如何,做一个好玩的小游戏,总比写一个 TextMate 要简单得多吧?再加上,iPhone OS 的官方 SDK,是免费提供的。

在这块市场里淘金需要的是创意及快速优质的实现。即使如 Canabalt 这样的简单的 iPhone 小游戏,也足够令开发者赚超过 10 万美金。

那么接下来我们谈论的是,个人开发者如果要进入这块市场将需要的技能。

  • Objective-C: 这是为 iPhone OS 开发所需要学习的编程语言。就语言语法及其运行环境而言,这是 C 语言的一个超集──除了拥有 C 的所有特性及标准库之外,还引入了一整套面向对象的开发理论及类库。大部分时候,你需要的功能都已经有了一个足够用甚至十分成熟的类库。因此不用花时间去从头解决底层问题,而可以把更多的时间放在产品设计上。
  • Photoshop: 大部分优秀的 iPhone OS 个人开发者,往往同时也是 Photoshop 高手。兼任 coder 和 designer 在传统的软件开发领域不可想象,但是在 iPhone OS 开发上,这种知识的串通可以让开发者为软件打造出最具 iPhone OS Native 体验的应用。比如 iPhone 上最好的 Twitter 客户端 Tweetie 的作者 Loren Britcher,在开发 Tweetie 之前,他曾是 Apple 的 Graphic Engineer,后来从 Apple 辞职开发 Tweetie 让他赚了上百万美元。因此,如果要为 iPhone OS 开发应用,最好是同时精通 Photoshop,这样的话,你想到什么效果,即可在 Photoshop 中自己马上做出来,然后用 Objective-C 快速实验想法。这样免去了和美工沟通及修改的成本,在大大提升软件质量的同时,也能缩短开发周期。
  • Python or Java: 想象一下,如果你做了一个好玩的游戏,其中有一个全球高分排行榜。那么这会需要一个服务器端的应用配合。而 Google 的云计算平台 App Engine 就非常适合做这个事情,并且还是免费的。而根据我的开发经验,App Engine 的免费方案,足够支持一个 10 万左右的玩家群每天提交高分数据。App Engine 目前使用 Python 或 Java 语言开发。如果这两门语言都不会,那么 Python 会更容易入门一些。
  • Web Standards: iPhone OS 上的浏览器 Safari 是目前技术上最先进的浏览器,和 Google Chrome 一样,都是基于 WebKit 开源项目。Safari 目前已经可以支持大部分 CSS3 和 HTML5 特性。所以,是时候彻底忘记 IE 的存在了。想想看,在未来的几年,你是愿意每天和 IE6 的各种垃圾 bug 打交道呢,还是在世界上最好的移动设备上做创新开发?

以上,是我为了 Next Big Things 所想到的一切。而这一切,无论如何都不会被国内目前无厘头的内容审查,混乱不堪的 .cn 域名及彻底靠不住的 hosting 所影响。

9:14, JAN 28 • Permalink
关于 Project Picky 的 index.xml 问题

由于之前在测试 Project Picky 新版本时的一个错误,导致 index.xml 中输出的所有 ID 值发生了不被预期的改变,于是导致现在很多文章重新出现在 Google Reader 的 unread 列表中。在此向各位道歉。

这个错误也就是 v0.1.9.1 HOTFIX 中所提到的那个 bug 引起的。目前这个 bug 已经解决。

你可以在 Google Reader 中点 Mark all as Read 就好了,没有新内容(除了这篇)。只能说,Google Reader 的索引速度实在是太快了。

1:22, JAN 28 • Permalink
Project Picky v0.1.9.1 HOTFIX

由于之前的测试不足,在 v0.1.9 中的一个 bug 没有发现──这个 bug 会导致每次新的 Blog 类型的文章发布时,SITE_NAME 值的设定丢失。现在这个 bug 已经在 v0.1.9.1 HOTFIX 中修复。如果你之前下载过 v0.1.9,那么请重新下载下面的这个包:

http://project-picky.googlecode.com/files/project-picky-v0.1.9.1.tar.bz2 HOTFIX

抱歉!

根据 Google Code 上的计数,v0.1.9 的缺陷版本应该只有 2 次下载。

1:11, JAN 28 • Permalink
Project Picky v0.1.9 Released

Download URL:

http://project-picky.googlecode.com/files/project-picky-v0.1.9.1.tar.bz2

UPDATE: 下载链接已经更新为 v0.1.9.1 HOTFIX 的链接。

Project Picky v0.1.9 中有许多巨大的改变。

取代 Google 帐号认证的 auth.py

并不是 Google 帐号认证不好。但是如果使用了第三方的 GHS 反向代理的话,这些代理和 Google Authentication 不是太兼容,于是就会导致 403 错误。有的时候,由于一些未知问题,Google Authentication 甚至会导致 redirect loop,我就遇到过几次。

在 v0.1.9 中,你可以将进入 Writer 的密码以 SHA1 形式写到 auth.py 中,之后就可以用这个密码登录 Writer 和使用内建的 Twitter 客户端。这是 v0.1.9 中的新的后台帐号认证方式。

当然,如果你还是喜欢使用 Google 自身的认证,那么也没有问题,只要修改一下 app.yaml 就可以了。而 v0.1.9 的另外一个改进,就是关于 app.yaml 的。

安装包和 Mercurial 的改进

无论你是第一次安装,或是升级,你一定会需要和 app.yaml 打交道。之前这个文件直接存在于安装包和 Mercurial 中,为大家的使用带来了一些不便。从 v0.1.9 开始,这个文件在安装包和 Mercurial 中的名字是 app.yaml.example,你只要复制成 app.yaml 然后就可以在里面自由更改了。之后的 hg pull & update 也会更方便。

我在之后的版本中,会注意处理那些最终用户需要修改的文件的名字,比如 auth.py 在 hg 中就是 auth.py.example。以方便那些使用 hg 跟踪 Project Picky 更新的用户。

Super Awesome Button

后台中所有的按钮样式做了一次大改动,现在非常有质感。具体可见:

http://img.ly/images/99081/full

bit.ly 改进

现在内置的 Twitter 客户端中的所有 bit.ly 链接都会被自动扩展为原链接。

以上是 v0.1.9 的主要改进。如果你在 localhost 上开发自己的主题时,你会感受到更多的一些细节改进。

为了 v0.1.9 及以后使用了 auth.py 的新版本,我专门写了一篇新的 Project Picky 安装文档

p.s. Olivia 的新博客,当然也是基于 Project Picky v0.1.9:

http://o.olivida.com/

感谢你对这个项目的支持。

0:49, JAN 28 • Permalink

我觉得 iPhone 是最好的写日记方式,因为只要我醒着的时候,这台设备就基本上都在我手边。在 07 年 iPhone 刚发布的时候,我用系统自带的 Notes 写,但同时也一直在构思,我想要的的写日记软件究竟应该是怎样的。

昨天我在 App Store 的 Featured 里发现了 Momento.app,来自英国的 d3i 设计工作室的作品。这款软件设计异常精美,而且满足了我想要的所有写日记方面的需求。

软件本身是以日期为中心的,几个主要的视图都是围绕“在一个什么样的特殊日子你做了什么”,并且提供了几种类型的 tag 用于过滤日记(如果里面存了上千篇日记的话)──人,地点,事件及定制标签。

另外就是,Momento.app 还可以将你在四个社会化网站的活动按照日期导入──Twitter,Facebook,Flickr 和 Last.fm。这样就可以看到,在特殊的那一天,你写了什么,推了什么,在 Facebook 上说了什么,在 Flickr 上传的照片以及在 Last.fm 里点了 Loved 的歌。对了,Momento.app 当然也可以在日记上附上照片,从摄像头拍摄或是从照片库中选取。

这是一款在我个人看来完美的 iPhone 上的写日记软件,我十分佩服 d3i 在产品功能和外观设计方面的功力和品味。

16:20, JAN 27 • Permalink
如何清除 Snow Leopard 的 DNS 缓存

打开 Terminal,敲入以下命令(不需要 sudo):

dscacheutil -flushcache

调试新网站的时候,这个命令会很有用。

16:05, JAN 27 • Permalink
Next Big Things

这只是一些个人的乐观估计。而我自己会依据这些估计去做接下来的事情。写在这里只是为了分享。

  1. 在未来的几年,Twitter 会成为世界上第一个拥有超过 10 亿(1 billion)注册用户的服务。而活跃用户的数量会超过世界上任何一个国家的手机用户。而发达国家的所有年轻手机用户届时也都会是 Twitter 的用户,日本,美国,欧洲。
  2. 在未来的几年,全世界各国的 3G 网络上将会有超过 1 亿台 iPhone 接入。在发达国家,这些用户的 ARPU 在 60 美元以上,而在中国,这些用户的 ARPU 会在 200 元人民币以上。
  3. 在未来几年,Google App Engine 会成为世界上最好的 Web 应用开发和技术托管解决方案。全世界将会有超过 100 万使用 Python 或 Java 语言的开发者。而最终用户的规模将会超过 Twitter 的用户规模。

这是我能够想到的在未来非常酷的三件事情,而这三件事情也将成就无数的个人和公司开发者。是的,或许个人无法完成像 Modern Warfare 2 或者 AVATAR 这样的巨作,但是个人完全可以做出完美的 Twitter 客户端,或是完美的运行在 Google App Engine 上的 Twitter 图片分享社区。而这些作品将会有至少 1 亿的潜在用户。

这是足够多的机会和挑战。因此,完全可以忽略目前国内的种种不快,将自己接下来几年的注意力,放到全世界范围内那些真正有意思有钱赚的事情上。

UPDATE: 这个系列文章的下一篇 Next Big Skills

4:05, JAN 26 • Permalink

一篇关于 Richard Stallman 用什么电脑和软件的采访。他居然在用一台 9 寸屏幕的龙芯电脑,而且是他的唯一一台:

I am using a Lemote Yeelong, a netbook with a Loongson chip and a 9-inch display. This is my only computer, and I use it all the time. I chose it because I can run it with 100% free software even at the BIOS level.
16:34, JAN 24 • Permalink

Redis 是一个用 ANSI C 写成,运行在 POSIX 环境中的键值数据库服务器,目前刚刚到达 1.2.0 版本。Redis 的特别之处在于,除了支持普通的字符串数据类型之外,还支持有序的 List 类型和无序的 Set 类型,因此 Redis 的作者 @antirez 也把他的作品称之为 data structure server,数据结构服务器。

Redis 的写入和读取性能相当不错,在一台主流配置的 1U Linux 服务器上,基本可以达到 11 万次每秒的写入和 8.1 万次的读取。能够取得这样的性能是因为 Redis 在运行时会把整个数据集都放在内存中进行操作,通过定时或不定时的方式将数据写到磁盘。所以,如果服务器硬件出现突发故障,比如内存或者内核的问题时,有一定的数据丢失的风险。

List 和 Set 这两个特殊的数据类型在某些场景下会非常有用,比如很多社区类型网站都会有的两个功能──当前谁在线可以用 List 实现,而好友列表则可以用 Set。把 Redis 的各种数据类型用好是一件很有想象力的事情。

作者 @antirez 不久前在 Twitter 上说,他为 Redis 想到的商业模式是出售商用工具,比如用于测试性能的 redis-load 和用于查看 Redis 各种内部数据的 redis-vmstat。至于为客户提供技术咨询,他觉得不可行,因为那会占用他太多宝贵的 coding 时间。

我在想,有一天我们能不能在 Google App Engine 的基础架构上看到类似 Redis 这样的简单数据库呢?很多时候,用 datastore 解决一些简单问题就像是杀鸡用牛刀,又慢又麻烦。

0:52, JAN 21 • Permalink

csCSSc 是一个很好用的 CSS 压缩和解压缩的在线界面,解压缩工具对于研究一些顶级 CSS 代码是非常有价值的。不过似乎原作者的网站已经连不上,下面是一个尚可访问的链接:

http://www.automotivecenter.nl/diversen/utility/csscompressor/
19:35, JAN 20 • Permalink

Kyoto Cabinet 是键值数据库 Tokyo Cabinet 的下一代,目前只有 C++ 接口。

当这类键值数据库和 MySQL 这样的关系数据库配合使用时,以 Blog 为例,你可以在 MySQL 中存储 Blog 的分类和文章的 ID 及他们之间的关联关系,而文章的正文可以存放到键值数据库中,这样的话,MySQL 所占用的资源将更少(比如每行的数据量就会大大减少),而整个系统的性能也会受益。

0:56, JAN 18 • Permalink

Smalltalk 很相似的编程语言,一切皆是对象,一切操作皆是发送消息。此外还有更多非常有趣的值得探索的细节。核心 VM 居然只有 10K。

如果你有在 Mac 或 iPhone 上的编程经验,那么这些概念估计你已经很熟悉了,Objective-C 的设计也是从 Smalltalk 获得灵感的。

作者 Steve Dekorte简历,原来他在 90 年代初的时候是一位 NEXTSTEP 开发者。

20:20, JAN 16 • Permalink

来自华尔街日报中文版全文翻译:

新的中国策略

就象其他许多知名组织一样,谷歌也会经常面临不同程度的网络袭击。在去年12月中旬,我们侦测到了一次来自中国、针对公司基础架构的高技术、有针对性的攻击,它导致我们的知识产权被窃。不过,事态很快变得明了,这个起初看似独立的安全事件(尽管很严重)其实背后大有不同。

首先,并不是只有谷歌受到了攻击。我们在调查中发现,至少20家、涵盖领域广阔的大型公司都成为相似的攻击目标,这些公司隶属于互联网、金融、技术、媒体和化学行业。我们现在正在向这些公司通报情况,并与美国相关政府部门展开合作。

第二,我们有证据显示,攻击者的首要目标是进入中国人权活动人士的Gmail账户。我们迄今为止的调查结果让我们相信,这些攻击没有达到预期目标。只有两个Gmail账户被进入,而且其活动仅限于帐户信息,比如帐户何时创建、以及邮件标题,具体邮件内容未被染指。

第三,在与谷歌受攻击无关的整体调查中,我们发现数十个在美国、中国及欧洲的中国人权活动人士Gmail 帐户经常被第三方侵入。入侵这些帐户并非经由谷歌的任何安全漏洞,而很可能是通过在用户电脑上放置网络钓鱼或恶意软件。

我们已经运用从这些袭击中获得的信息改进了基础设施和网络结构,加大对公司和客户的安全保障。对个人用户而言,我们建议大家使用可靠的杀毒和反间谍软件,安装操作系统的补丁并升级网络浏览器。在点击即时信息和邮件中显示的链接、或被要求在网上提供诸如密码等个人信息时永远要保持警惕。你可以点击这里阅读谷歌提供的网络安全建议。希望更多了解此类袭击的人士可以阅读美国政府提供的报告、纳特•维伦纽夫(Nart Villeneuve)的博客以及有关间谍网络幽灵网(GhostNet)的报导。

我们采取了非常规手段与大家共享这些网络攻击信息,其原因并不只是我们发现了其中的安全和人权问题,而是因为这些信息直指言论自由这一全球更重大议题的核心。在过去20年中,中国的经济改革和中国人的创业精神让上亿中国人摆脱了贫困。事实上,这个伟大的国家是当今世界许多经济成就和发展的核心。

我们在2006年1月在中国推出了 Google.cn,因为我们相信为中国人拓展信息获取、加大互联网开放的裨益超过了我们因在网络审查上做出让步而带来的不悦。当时我们明确表示,我们将在中国仔细监控搜索结果,并在服务中包括新的法律法规;如果我们认定自己无法实现上述目标,那么我们将不会犹豫重新考虑我们的中国策略。

这些攻击和攻击所揭示的监视行为,以及在过去一年试图进一步限制网络言论自由的行为使得谷歌得出这样一个结论,那就是我们应该评估中国业务运营的可行性。公司已经决定不愿再对Google.cn上的搜索结果进行内容审查,因此,未来几周,公司和中国政府将讨论在什么样的基础上我们能够在法律框架内运营未经过滤的搜索引擎,如果确有这种可能。我们认识到,这很可能意味着公司将不得不关闭Google.cn,以及我们在中国的办公室。

做出重新评估我们在华业务的决定是异常艰难的,而且我们知道这可能带来非常深远的影响。我们希望说明的一点是,该决定是由公司在美国的管理团队做出的,而为 Google.cn今日成功而付出了无比巨大努力的中国团队对此毫不知情,也未曾参与。我们决心以负责任的方式来解决任何可能随之产生的难题。

David Drummond, 谷歌高级副总裁、公司发展兼首席法律顾问

华尔街日报中文版的 Google 专题:http://cn.wsj.com/gb/google.asp

15:19, JAN 14 • Permalink

Google 退出中国是一个大事件,相信每一个上网的人都会关心这件事的进展。可是国内没有任何媒体敢于大篇幅报道——甚至连转载一份 Google 博客原文的勇气都没有。我今天特意去看了一下译言,上面一点关于这个事的报道都没有。不过,接下去的一系列连锁反应,都可以在下面这个地址看到,而且是中文的。就立场而言,华尔街日报的美国版本的一篇文章的标题是 Google Gets On the Right Side of History,Google 站到了历史上正确的一边。

http://cn.wsj.com/gb/google.asp

15:13, JAN 14 • Permalink

美国国务卿希拉里说:

We have been briefed by Google on these allegations, which raise very serious concerns and questions. We look to the Chinese government for an explanation. The ability to operate with confidence in cyberspace is critical in a modern society and economy. I will be giving an address next week on the centrality of internet freedom in the 21st century, and we will have further comment on this matter as the facts become clear.

信息战,贸易战,间谍案,人权,G2 争端。或许我们现在正在经历的,在未来会成为一部十分好看的电影。

23:00, JAN 13 • Permalink

一个开源项目,可以帮助你很容易地在 iPhone 应用中嵌入和系统内置版本一模一样的 Settings Panel,当 Settings.bundle 更新时,两个 Settings Panel 都会更新。一个方便之处在于,当用户想在 Settings Panel 中更改设置时,就没有必要退出应用启动 Settings 了。

9:34, JAN 13 • Permalink

因为他们不想继续提供阉割版的搜索结果。以下来自 Google 官方博客:

Like many other well-known organizations, we face cyber attacks of varying degrees on a regular basis. In mid-December, we detected a highly sophisticated and targeted attack on our corporate infrastructure originating from China that resulted in the theft of intellectual property from Google. However, it soon became clear that what at first appeared to be solely a security incident--albeit a significant one--was something quite different.

First, this attack was not just on Google. As part of our investigation we have discovered that at least twenty other large companies from a wide range of businesses--including the Internet, finance, technology, media and chemical sectors--have been similarly targeted. We are currently in the process of notifying those companies, and we are also working with the relevant U.S. authorities.

Second, we have evidence to suggest that a primary goal of the attackers was accessing the Gmail accounts of Chinese human rights activists. Based on our investigation to date we believe their attack did not achieve that objective. Only two Gmail accounts appear to have been accessed, and that activity was limited to account information (such as the date the account was created) and subject line, rather than the content of emails themselves.

Third, as part of this investigation but independent of the attack on Google, we have discovered that the accounts of dozens of U.S.-, China- and Europe-based Gmail users who are advocates of human rights in China appear to have been routinely accessed by third parties. These accounts have not been accessed through any security breach at Google, but most likely via phishing scams or malware placed on the users' computers.

We have already used information gained from this attack to make infrastructure and architectural improvements that enhance security for Google and for our users. In terms of individual users, we would advise people to deploy reputable anti-virus and anti-spyware programs on their computers, to install patches for their operating systems and to update their web browsers. Always be cautious when clicking on links appearing in instant messages and emails, or when asked to share personal information like passwords online. You can read more here about our cyber-security recommendations. People wanting to learn more about these kinds of attacks can read this U.S. government report (PDF), Nart Villeneuve's blog and this presentation on the GhostNet spying incident.

We have taken the unusual step of sharing information about these attacks with a broad audience not just because of the security and human rights implications of what we have unearthed, but also because this information goes to the heart of a much bigger global debate about freedom of speech. In the last two decades, China's economic reform programs and its citizens' entrepreneurial flair have lifted hundreds of millions of Chinese people out of poverty. Indeed, this great nation is at the heart of much economic progress and development in the world today.

We launched Google.cn in January 2006 in the belief that the benefits of increased access to information for people in China and a more open Internet outweighed our discomfort in agreeing to censor some results. At the time we made clear that "we will carefully monitor conditions in China, including new laws and other restrictions on our services. If we determine that we are unable to achieve the objectives outlined we will not hesitate to reconsider our approach to China."

These attacks and the surveillance they have uncovered--combined with the attempts over the past year to further limit free speech on the web--have led us to conclude that we should review the feasibility of our business operations in China. We have decided we are no longer willing to continue censoring our results on Google.cn, and so over the next few weeks we will be discussing with the Chinese government the basis on which we could operate an unfiltered search engine within the law, if at all. We recognize that this may well mean having to shut down Google.cn, and potentially our offices in China.

The decision to review our business operations in China has been incredibly hard, and we know that it will have potentially far-reaching consequences. We want to make clear that this move was driven by our executives in the United States, without the knowledge or involvement of our employees in China who have worked incredibly hard to make Google.cn the success it is today. We are committed to working responsibly to resolve the very difficult issues raised.

Posted by David Drummond, SVP, Corporate Development and Chief Legal Officer

我认为,如果是纯粹考虑商业,那么人权问题,真的那么重要?同样是美国公司的 Cisco 就提供了构建 GFW 所需的硬件。那么如果 Google 是真的在严肃考虑人权,甚至真的想帮助中国人的话,请伟大的 Google 动用你们最聪明的大脑,通过 Google 在全世界部署的服务器,让我们在使用 Google Chrome 浏览网站时彻底感觉不到 GFW 的存在吧。这样也必然会带来更多的广告点击。

结论——我相信一个既能改善中国人权状况,同时又能和商业目标对齐的最好办法就是 Google 让 Chrome 内置超级翻墙功能。

8:35, JAN 13 • Permalink
使用 Google App Engine 一个月有感

Project Picky 的第一个公开版本的发布是在 2009 年的 12 月 10 日,到目前已经有超过一个月了。虽然在 Google App Engine 发布时我就在第一时间获得了帐号,可是这次确实是我第一次用 Google App Engine SDK 编写严肃应用。

工具本身非常好,Launcher 和 Dashboard 都让人爱不释手,但是貌似性能是最大的问题。Project Picky 是一个相对简单的应用,但是后台的每一个页面,如果是彻底不使用缓存的话,那么平均生成时间都在 300ms 以上,极端情况下甚至会超过 1000ms。而同样复杂度的页面,如果是使用 LAMP 实现的话,我有把握在不使用缓存的情况下将生成时间控制在 50ms 内,如果使用缓存的话,控制在 20ms 内,而 20ms 这样级别的性能,在 Google App Engine 上估计只有纯静态内容才能够达到。

性能的瓶颈是在 datastore,这项火星技术在实际运用时没有想象中那么快。不知道是否是因为 Google 在提供民用级别应用时有所保留呢?

8:14, JAN 13 • Permalink

img.ly 背后的天才团队 9elements 的 HTML5 demo,相当有爱。

1:03, JAN 13 • Permalink

img.ly 是一个很好用的 Twitter 图片共享工具,从网站的各种细节可以感觉到这个团队的专业和用心。而他们在推广方面的手段同样高杆——如果你是一个 iPhone 应用开发者(碰巧我就是),那么你可以免费加入 img.ly Affiliate。具体的规则是,只要用 img.ly 发布过一张图片,然后就可以写信到 imgly@9elements.com 申请加入 img.ly Affiliate。审核通过后,你就可以在后台加入自己的 iPhone App 的信息和 iTunes Link,之后这条广告信息就会显示在你传的所有图片的页面上。

比如你可以留意一下我传的这张图片的页面上方的那个蓝条:

http://img.ly/mjw

这样的话,所有的 iPhone 应用开发就有了一个去试用 img.ly 的理由,而 img.ly 的服务又做得确实不错。这实在是一种双赢的推广方式。而如果 img.ly 又同时加入了 iTunes Affiliate 的话,那么或许还可以获得更多的收入。

这让我想起以前在杭州经常和 Olivia 光顾的一家叫做尘依食辅的餐馆,有一段时间,吃完饭买单之后,店员就会赠送一个非常可爱的公仔钥匙扣,Olivia 很喜欢。后来我们一共积攒了超过 20 个不同的可爱公仔的钥匙扣。

0:19, JAN 13 • Permalink
Project Picky v0.1.8 Released

Download URL:

http://project-picky.googlecode.com/files/project-picky-v0.1.8.tar.bz2

在这个新版本中,Project Picky 内置的 Twitter 客户端新增了对查看 Lists 的支持。不过,创建 Lists 和 List Membership 依然需要在 twitter.com 进行。

经过差不多一个月的拉力式开发,目前 Project Picky 已经基本接近我心目中的“个人发布中心”的雏形——可以写长文章,写完之后有足够好的 SEO 支持,不想写长文章的时候也可以通过内建的 Twitter 客户端发表短小精干的言论。

我决定对接下来的发布周期做一个更改——以后 Project Picky 会在每个月的第一个星期三发布新版本。版本号根据改动大小而定。而如果你实在想尝试最新的版本,那么依然可以通过 Mercurial 来获得最新的源代码。

当每次 Mercurial 中有新版本提交时,@projectpicky 这个 Twitter 帐户也会同步更新。

20:41, JAN 12 • Permalink

CouchDB 原作者 Damien Katz 离开了 IBM(CouchDB 的主要赞助公司),和他的两个朋友一起成立了一家叫做 Relaxed 的新公司,并获得来自 Redpoint Ventures 的 200 万美元投资。关于新公司究竟要做什么,Damien 说他还在想。看来他没有被要求准备一个事无巨细的商业计划。

CouchDB 是一个用 Erlang 语言打造的开源云数据库,目前已经成为了 Apache 组织的一个顶级项目,也有了一些实际运用的例子,比如 Ubuntu One

如果你想尝试一下 CouchDB,那么可以去 couch.io 注册一个 100MB 的免费帐户。

18:04, JAN 12 • Permalink

EA 的一款第三人称视角射击游戏,背景居然是上海,而且还原度极高。游戏进入之后的画面就是在燃烧的浦东,可以看到浦东的所有标志性建筑,比如东方明珠,金茂,及最新落成的环球金融中心。

以前这些科幻游戏多半喜欢以纽约和东京作为背景,所以我之前已经见到了无数次不同版本的纽约和东京的毁灭。这次是第一次看到一座自己熟悉的中国城市,于是更加了解为什么导演们喜欢用大城市的毁灭作为题材,确实看着很刺激。

不过人物的移动的转场比较让人头晕,相比同样是第三人称视角的生化危机 5,Army of Two 的画面显得太晃了,而这样让人觉得很难受。

15:13, JAN 12 • Permalink

如果有一天大中华局域网真的建成了。那么我想我也应该考虑转行了。不过到时候估计也就打不开链接的这个网页了。哈哈。

或许,开个杂货店卖土特产也不错。

1:42, JAN 12 • Permalink
关于传说中的超低价 iTunes Store / PSN Store 充值

很多的 iPhone / iPod touch / PSP / PS3 玩家都听说过这样的一种传奇,甚至还亲自使用过:在淘宝上可以买到超乎寻常便宜的 iTunes Store / PSN Store 充值卡,差不多 1 人民币相当于 10 美元的消费额度。通过购买这样的廉价充值服务,海量的数字内容(音乐,电影,游戏,软件)可以以一种极其廉价的方式获得,感觉就像是在路边摊上花 20 块钱买到了星球大战 DVD 全集。

可是这样的廉价充值服务的核心其实就是信用卡诈骗。淘宝卖家通过各种灰色手段获得一些美国的持卡人的信息,然后将其绑定到买家的 iTunes Store / PSN Store 帐户上,然后当买家在消费时,实际上就是从一个陌生的美国持卡人钱包里偷钱。而这显然是一种严重的犯罪行为。

当然,Apple 和 Sony 并非对此无动于衷。于是在各种玩家论坛上就会经常看到“我的帐号被封了”这样的帖子。而帐号被封,实际上对于玩家而言是极大的损失。

如果是 iTunes 帐号被封,那么这个帐号将不能再用于下载任何新内容(包括免费的),同时已经下载过的 iPhone 软件和游戏的更新也将无法收到。如果一款玩了很久的 iPhone 游戏是通过这样的灰色方式获得,同时这款游戏又不支持任何云存储的话,那么帐号被封时,也基本意味着这款游戏的进度将迟早会作废。而当新版本出来时,这个过期的老版本也将无法联网对战。

而如果是 PSN 帐号被封,那么这个帐号就再也不能登陆 PSN,也就意味着,无法继续用这个帐号上的 PSN ID 进行对战,同时这个 PSN ID 上所有的奖杯也将只能存储在本机上,而无法与 PSN 同步。如果是你新买了一台 PS3,那么这个被封的帐号也将无法用于新的 PS3,因为无法登录,于是自然老机器上的进度也就不可能转移过来,比如 CAPCOM 的所有大作的存档,都是和特定 PSN ID 绑定的。

因此,在我看来,使用灰色手段往 iTunes Store / PSN Store 上充值是一种实在损人不利己的方式:内容厂商无法真正获得收入,异国持卡人的钱被偷,而使用此服务的玩家的积累将随时被彻底砍掉——想象一下,假如是自己的 QQ 帐号或者 WOW 帐号被砍,你会作何感想。

最近部分淘宝上的卖家甚至推出了 MobileMe 的充值,只要不到 200 块人民币就可以获得一年的 MobileMe。稍微用脑子想一下,大部分 MobileMe 的用户都是用 @me.com 的邮箱作为自己的个人主邮箱,如果有一天这个邮箱失效?

不过,很多 PSN 玩家使用这样的服务,也是纯属无奈之举,因为 PSN 上基本无法使用国内的大部分信用卡。iTunes Store 倒是可以支持国内的大部分带有 VISA 或 MasterCard 标志的信用卡。但是,无论如何,还是珍爱生命,远离信用卡欺诈吧。

19:12, JAN 11 • Permalink

如果你的 web 应用的 UI 可能会在 Linux 下被使用时,请一定记得指定 DejaVu Sans 字体。而每个 UI 设计师的电脑上,也应该安装此字体,免费,自由的 DejaVu 字体。

18:59, JAN 9 • Permalink

所谓 Mobilizer,是指一类特殊的 Web 应用,可以将任何网站格式化为适合手机的格式。大部分人第一次接触 Mobilizer 就是在使用手机版的 Google Reader 时,所有外部链接的内容会被 Google 格式化为适合手机的。

Instapaper 为 Tweetie 2 for iPhone 的用户现在提供了一个优秀的 Mobilizer,只要在 Tweetie 2 里配置 Mobilizer 地址为以下这个即可使用:

http://instapaper.com/m?u=%@

对于其他的手机应用,Mobilizer 也是处理外部链接极好的工具。

在 Tweetie 2 中使用这个 Mobilizer 的一个额外好处就是,所有被屏蔽的链接如 bit.ly 也可以打开了。

1:01, JAN 9 • Permalink
Project Picky v0.1.7 Released

Download URL:

http://project-picky.googlecode.com/files/project-picky-v0.1.7.tar.bz2

这个版本中并未增加任何新功能,而是让已有功能更加稳定。现在后台可以自动检测网站的域名,并进行自动配置,这样在使用 Twitter 同步时就不会出现之前版本的输出 http:/// 这样的问题了。另外就是,修正了内置 Twitter 客户端的几个链接错误。推荐更新。

23:42, JAN 8 • Permalink

卸载 Mac 软件的光线枪,很好很强大——可以把软件本体,Application Support 及所有的 Preferences 都卸载得非常干净。同时也是一款非常强大的软件管理工具。

16:40, JAN 7 • Permalink
iPhone Apps Worth Buying

这个列表中的 iPhone 软件和游戏,是我觉得无论如何都非常值得购买的。当然,这只是一个非常主观的列表。

geoDefense, geoDefense Swarm and geoSpark

geo 系列的三款游戏,价格分别是 $1.99,$1.99 和 $0.99。画面非常华丽,游戏性极高的精品。其中 geoDefense 是我觉得在 iPhone 上最好玩的 Tower Defense 游戏。

Tweetie 2

售价 $2.99,iPhone 上最好的 Twitter 客户端,并且还支持 API Proxy。

Canabalt

售价 $2.99,一个超级简单但是却又乐趣十足的游戏,像素艺术风格的画面也让人印象十分深刻。在游戏的官方网站提供了 Flash 版本的试玩。

Memovator

售价 $0.99,非常可爱的按电梯的小游戏。不过进展到后面的关卡时,还是相当有挑战的。我觉得,多玩玩这个游戏对预防老年痴呆肯定有好处。

Quicksense

售价 $3.99,用于快速查看 Google AdSense 的收入。虽然我个人觉得时不时打开这个软件是一种 loser 行为,但是在等人等得实在无聊的时候,看看自己的帐户里今天多了几美元还是比较开心的。

16:57, JAN 5 • Permalink
Picky 新用户 FAQ

如果你是第一次接触 Project Picky 这样的运行在 Google App Engine 上的 Blog 软件,那么你可能会遇到一些从来没有遇到过的问题,希望本文可以为你解答一些疑惑。

如何安装?

首先,请订阅 Project Picky 的 Atom Feed,也就是本站的最新更新,Project Picky 的所有新版本都会发布在本站,并且正文中会包括一个下载链接。下载下来的格式是 .tar.bz,在 *nix 系统上用 tar jxvf 即可解压,Windows 下用 WinRAR 通常可以搞定。

为了将解压开的程序部署到 Google App Engine,你将会需要 Google 官方的部署工具 AppEngineLauncher,该工具是 GAE SDK 的一部分。运行这个工具需要 Python 语言解析器,在大部分 *nix 系统上已经自带 Python,而如果是在 Windows 下,推荐下载 ActivePython 发行包。

然后,将解开的 Project Picky 安装包中的 app.yaml 打开,将其中的 v2ex-picky 换为你在 Google App Engine 上创建的 App ID,然后将解开的文件夹加入到 AppEngineLauncher 中,点击 Deploy 就可以将程序部署上去了。

Picky 管理后台的地址是在域名后面附加 /writer,比如 http://v2ex-picky.appspot.com/writer,第一次访问时,将提示你用你的 GAE 管理帐号登录。

在浏览器打开时出现 no matching index found 错误是怎么回事?

为了高速地完成各种数据查询,Project Picky 将需要在 App Engine Datastore 分布式数据库中建立一些索引。而每次新版本刚刚发布完成时,这些索引都尚未建立。因此,只要稍等片刻,这个错误就会消失。

如何换主题?

Project Picky 目前只有简单的换主题功能,但是已经足够熟悉 Django template 的设计师发挥自己的创意。只要在 tpl/themes 下新建一个文件夹,然后跟随 default 主题的命名规则就可以创建自己的主题包。将新的主题包部署之后,在 Settings 的 theme 下拉框中就会看到新的主题。以后当你每次部署新版本的 Project Picky 代码时,你所做的主题选择亦不会改变。

关于 Twitter 同步

Project Picky 支持将每次发表的新文章自动发送到 Twitter,只要在 Settings 中填入你的 Twitter 帐号和密码,并将 Twitter Sync 置于 On 即可。

有的时候,你的 Picky 安装可能会有几个不同的域名,你亦可设置用哪个域名作为同步时对外展示的域名。在 Settings 中配置 Secondary Domain for Sync 即可。

关于 SEO

请一定将 Settings 中的 Primary Domain,Site Name,Author 和 Slogan 配置好,因为这将大大有助于你的站点的 SEO 效果。当你把这些配置都配好后,Picky 在每次发布新文章或修改时,会自动将文章地址发送到 Google Blog Search Ping 服务,同时也会更新站点的 sitemap.xml,而这一切都会帮助你的网站迅速提高在 Google 中的收录速度和排名。

以 Project Picky 主站为例,每次新文章发布后,10 分钟之内就可以在 Google 上搜索到了。

当 Primary Domain 未配置时,Twitter 同步就不会正常工作。

Alternative Feed

如果你使用类似 FeedBurner 这样的第三方服务来管理 feed,那么你可以将你的 FeedBurner 地址填入到 Alternative Feed 处,之后整站所输出的所有 feed 地址将跟随 Alternative Feed 处的配置。

我之前写过一篇文章,关于为什么要把博客搭在 Google App Engine 上,如果你还没有看过的话,点这里

11:26, JAN 4 • Permalink

枪车球是北美主机游戏市场的主力内容,而现在 iPhone 上也有了诸多枪车球主题的大作。Gameloft 的 N.O.V.A. 是一款十分类似 Halo 的外星主题 FPS。通过手指在屏幕上移动的相对位置来决定游戏中人物的移动和视点,感觉类似 PS3 上的双模拟摇杆,这也是各大 iPhone 游戏厂商经过两年时间探索出来的最舒服的操作模式。如果你也对打枪游戏有爱,那么就一定不要错过 N.O.V.A.。

14:40, JAN 3 • Permalink
Project Picky v0.1.6 Released

Download URL:

http://project-picky.googlecode.com/files/project-picky-v0.1.6.tar.bz2

基本上现在会把博客搭在 Google App Engine 上的,也基本上会是 Twitter 的用户。所以在 v0.1.6 中,在 Picky 的后台中集成了一个简单的 Twitter 客户端,可以用来查看 tweets,回复及别人发来的 DM。加上之前 Picky 已有的将新文章自动同步到 Twitter 的功能,现在通过 Picky,你就可以以两种最有效的方式——Blog 和 Microblogging 来发布自己的想法了。

另外一个小功能是,你现在在 Settings 中配置,用于 Twitter 同步的域名,因为往往用 Picky 搭建的博客都有至少两个域名,而如果其中一个(比如指向 GHS 的那个)无法访问的话……

我们为什么要书写?因为有想法要表达和发布。那么,如果能够只在一个安全的地方进行所有的事情,就太舒服不过了。个人发布中心,这是 Picky 在 v1.0.0 之前的目标。

17:06, JAN 2 • Permalink

《凤凰周刊》总第 351 期,我不知道这期杂志是否能够顺利面世。如果能,则一定会买来看。如果不能,那么以后也没有必要买这本杂志了。

《凤凰周刊》编辑部在香港,但是“被特许”在大陆出售,所以留意一下,应该大部分的报刊厅都可以买到。

22:18, JAN 1 • Permalink
Project Picky v0.1.5 Released

Download URL:

http://project-picky.googlecode.com/files/project-picky-v0.1.5.tar.bz2

One import new feature:

Quick Find in Picky Writer - Just like Google Suggest, you can find your article and edit it quickly, with its Title URL, usually in this-is-a-title-url format, which is good for SEO and easy for looking up. This is quite useful when you have many articles.

And several minor bug fixes in Picky Writer, making it more usable.

v0.1.5 版本中新增一个重要的新功能:Picky Writer 现在可以像 Google Suggest 那样帮助你快速用 Title URL 的几个首字母找到文章并编辑,当你已经有许多文章时,这个功能会十分有用。Title URL 通常是 this-is-a-title-url 这样的格式,对 SEO 有利,同时方便查找。

17:41, DEC 31 • Permalink
New Twitter Sync Format in Project Picky

在下一个版本中,所有通过 Picky 发送到 Twitter 的同步内容的格式会有调整,这样的调整是为了将这些自动内容与手工发送的内容有所区别。调整后的格式会是:

ArticleTitle http://example.pickysite.com/title-url (Sync via @projectpicky)

如果你认为有更好的格式,欢迎发邮件到 v2ex.livid@gmail.com 讨论。

另外,我为 Project Picky 专门开通了一个 Twitter 帐号:@projectpicky,欢迎大家来 follow 和讨论。

16:53, DEC 31 • Permalink
我对 iSlate 的期待

现在互联网上已经到处是关于 iSlate 的报道,看来目前我们有相当的把握可以在明年 2 月的时候买到 iSlate 了。

这个列表中的功能是我期待在 iSlate 上看到的:

  • 内置 WCDMA 支持。这样我就可以把我专门用于上网的联通 SIM 卡插进去了,否则在 Tablet 上插一个 USB Modem 确实既不好看也不方便。
  • 另一个 App Store。目前并不确定 iSlate 上究竟会搭载一个什么样的 Mac OS X,但是我希望是一个类似 iPhone 那样的经过精简的,并且最好能够看到一个专用于 iSlate 的 App Store。这将为全世界的开发者创造一个全新的竞技场。
  • 开机速度。我希望 iSlate 能够在 20 秒内完成启动。
  • 电池?因为 iSlate 的体积比 iPhone 要大很多,那么我只期待能够有和 iPhone 差不多的待机时间就足够好了。
16:37, DEC 31 • Permalink

试试在 Google 中搜索 opera 10.5,如果运气好的话,或许就可以在结果页面上看到一个实时滚动的框,里面是关于 Opera 10.5 的最新 tweets。

3:28, DEC 31 • Permalink

MOTODEV Studio 是 Motorola 为 Android 提供的开发工具,在 MOTODEV 网站上可以下载到 DMG 格式的 Mac OS X 版。其中一个很方便的功能就是可以在第一次启动时根据你的选择自动下载 SDK 并完成配置,而选项中除了 Android SDK 的各种版本外(最新 2.0.1),甚至还包括了中国移动的 OPhone SDK。

3:14, DEC 31 • Permalink
Quick Find in Picky Writer

Quick Find is a new feature in Picky Writer, it's useful when you have a lot of articles. This feature will be included in v0.1.5, but now you can get it from Mercurial.

0:59, DEC 31 • Permalink

iTunes U 是 iTunes Store 的一部分,在我看来,也是 Apple 最有效地铲平这个世界的创举——免费提供超过 20 万个大学课程音视频文件的下载,你可以在里面找到来自美国所有著名大学的课程,而且还在不断增长中。

只要安装了 iTunes 9,然后就可以在 iTunes Store 中找到 iTunes U,浏览,下载。除了可以在电脑上观看外,也可以同步到 iPhone 和 iPod touch。

以下是 Apple 对 iTunes U 的介绍。

iTunes U, part of the iTunes Store, is possibly the world’s greatest collection of free educational media available to students, teachers, and lifelong learners. With over 200,000 educational audio and video files available, iTunes U* has quickly become the engine for the mobile learning movement. It puts the power of the iTunes Store in the hands of qualifying universities so they can distribute their educational media to their students or to the world.

iTunes U Spotlight 里有 iTunes U 的每月精选。

16:19, DEC 30 • Permalink

如果 http://picky.olivida.com/ 打不开,那么可以试试 http://v2ex-picky.appspot.com/,反之亦然。

16:10, DEC 30 • Permalink

豆瓣的曾名为 DoubanDB 的分布式键值数据库 beansdb 现在发布了第一个公开版本 0.3。根据豆瓣的实际运营经验,像 Text 和 Blob 这样的字段不要放在 RDBMS 中比较好,这样的话,因为每行的数据量明显减少,于是对性能也有很大的好处。而在需要的时候,从 key-value 数据库中去取 Text 和 Blob 会更有效率。

LinkedIn 和 Twitter 也采用了类似的策略。

beansdb 目前只有官方的 Python 客户端,但是由于其采用的是 memcache 协议,所以很容易将其他语言的 memcache 客户端移植。

11:25, DEC 30 • Permalink
Project Picky 2010 Q1 Goal

Project Picky 开始于一个简单的想法——一个运行在 Google App Engine 上的,符合我的各种细节需求的发布工具。对于一个应用程序而言,这其中不会有太多高深的算法,性能方面也不至于需要追求极致,那么最值得关注的方面,就是如何打造一种完整的体验——为各种有意义的常见操作提供最简洁的方式。

那么,以下列表中的项目,是我打算在 2010 年第一季度实现的。

  • 树状评论,及有新评论时的邮件通知。既然最终还是决定要做评论功能,那么就应该将这个功能做得足够惊艳。
  • 读者提交内容。
  • 后台中的搜索。当文章越来越多时,搜索是必须要有的。不过目前 Google 本身没有为 datastore 实现全文搜索。
  • 主题切换及主题标准。Picky 用的是 Django Template,太好了,我不用重复发明轮子。

那么,接下来,就一项一项实现吧。不过,我可能会往上面的列表里加上我认为必要的,如果确实有足够多的时间和精力的话。在 2010 年第一季度,我希望 Picky 的各种版本的下载量加起来能够超过 10000 次。

22:07, DEC 29 • Permalink
YLMF OS

雨林木风曾是国内众多的 Windows XP 海盗版本中的一个,随着番茄花园(其中影响力较大的一个)的倒下,其余的纷纷转型,大部分都走上了改造 Linux 的道路。

雨林木风在 12 月 25 日这天在重金收购的 XP.com 域名上以 YLMF OS 的名字推出了一款操作系统,供网民免费下载。除了域名本身惊人之外,这个系统在外观和使用体验上也惊人地与 Windows XP 类似。但是其本质却是 Linux 的 Ubuntu 发行版的 9.10 版本。

我下载了这个系统的安装盘,并使用 VMware 进行体验。这是关于使用体验的一些体会:

  • 系统启动速度不错,桌面上的默认应用程序基本上照顾到了上网用户的所有基本需求——浏览器,QQ,MSN 和办公文档处理。
  • Firefox 浏览器中集成了很多方便的插件,尤其是搜狗的云输入法。鉴于目前 Linux 上的各种输入法的安装和调试都让新手晕厥,而且还经常发生各种失灵现象,集成搜狗的云输入法确实是一个保证“能用”的好选择。除此之外,系统也集成了 IBus 输入法,可用 Ctrl+Space 呼出,当 IBus 处于活跃状态时,搜狗云输入法就不会捕获用户的输入,也就避免了出现两个候选框。
  • YLMF OS 在桌面上使用了四个 Windows XP 中的图标,而这四个图标的版权是属于微软的。不过,这种小问题可能雨林木风是根本不在乎的,而且使用现成的图标还可以让熟悉 Windows XP 的用户更容易识别。

YLMF OS 是一款可用的中文 Linux 发行版,面向的就是主要用电脑上网的用户。所以在这个版本中,也延续了之前雨林木风 XP 的大部分商业模式:

  • 搜索引擎——YLMF OS 自带的 Firefox 浏览器的搜索框的默认选择是百度,你会发现搜索结果的 URL 中包含了 ?tn=ylmfdg 这样的参数。这是百度流量联盟的参数。中国的几乎所有客户端软件厂商每年都能够从百度拿到不少钱,就是通过这个联盟。如果一款客户端软件能够每天为百度带来千万级的搜索流量,那么每年能够从百度拿到的钱,也基本是千万级的。因此每一分 YLMF OS 的安装,就是一个微小的源源不断的造钱机器,而如果安装量到达百万级别,那么每年能够产生的收入就十分可观了。除了雨林木风,番茄花园这样的海盗 XP 公司外,基本上国内的所有大的网吧管理软件也依赖这样的商业模式。在使用了网吧管理软件后,客户端机器上的搜索流量就会都被附上 ?tn= 这样的流量代码,从而为管理软件的生产公司带来利益。
  • 网址导航站——YLMF OS 自带的 Firefox 浏览器的默认首页是 114la.com,一个雨林木风公司旗下的网址导航站。网址导航站除了能够从搜索引擎拿到钱之外,本身的各种广告和导航位的出售,也是一座金矿。为什么很多导航站都提供源代码下载呢?因为下载的源代码中所集成的搜索,也是附上了流量联盟代码的,源代码的安装量越大,能够带来的收入也就越多。

我对雨林木风的这些商业模式并无太大的反感,比起电梯里的电视广告,和飞机上正前方座椅上的印刷广告,起码这些流量联盟代码并不扰民,大部分时候你根本意识不到它们的存在。而我觉得真正的问题在于,与 Windows XP 的过度相似,除了可能的法律问题之外,可能会是对公司继续发展的一种伤害。

从雨林木风旗下的各种网站所透露的信息看来,这家公司目前确实是求贤若渴。我相信大部分的 Linux 圈内的高人在写得一手好代码的同时,都有某种道德洁癖,虽然这种洁癖可能在大部分商人们看来不值一提,可正是这种道德洁癖往往决定了一个技术高手究竟能够走多远。雨林木风现在有足够的资源去做一些更有创意的事情来赢取更加广阔和健康的市场,而如果就是狭隘地纠结于高仿 Windows XP,那么这样的公司文化很可能就会吓跑那些有好创意和动手能力的大脑,因为他们或许更愿意去道德标准更高,使命感更强,如创新工场这样的地方。

17:00, DEC 29 • Permalink

获取 Picky 下载包更新最简易的方法,就是订阅这个 RSS:

The easiest way to retrieve the latest downloads of Project Picky is to subscribe:

http://code.google.com/feeds/p/project-picky/downloads/basic

And you can click here to add it to Google.

15:18, DEC 29 • Permalink

一个值得 iPhone 开发者们关注的博客,里面有很多关于 App Store 的有趣故事和分析。软件本身的质量加上对于销售环境的充分理解,才能够在 App Store 取得最大的成功。

App Shopper 是一个追踪 iPhone 应用的功能升级和价格变化的网站,而现在更是有了如收藏和分享这样的社会化功能,成为了一个对 iPhone 用户越来越有用的信息源。

1:40, DEC 28 • Permalink
Project Picky v0.1.4 Released

Download URL:

http://project-picky.googlecode.com/files/project-picky-v0.1.4.tar.bz2

This minor release is about performance enhancements. In previous versions, a typical request to get important pages like index.xml takes hundreds milliseconds, now it's optimized and usually no more than 100 milliseconds. When you get tens of thousands of dynamic requests a day, this will save a lot of time and even money. Since Googlebot do take the time needed to load pages into consideration, so a faster site means it can be better indexed.

Writer is also enhanced, you can find a better pagination in Writer now.

This release is recommended to everyone.

For more info on Project Picky, the open source blog tool running on Google App Engine, please click here.

4:35, DEC 24 • Permalink

Mozilla 的 UI 设计师 Stephen Horlander 正在做一些地球上最有影响力的 UI 设计工作。十分漂亮。

3:53, DEC 24 • Permalink

或许在一年之内,我们就可以看到 iPhone 版的战争机器(Gears of War)了。

0:25, DEC 24 • Permalink
Get EtherPad Source Code

之前 Picky 曾经报道过类似 Google Wave 的协作工具 EtherPadGoogle 收购的消息,在收购消息传出几天后,团队表示 EtherPad 将会开源。

现在你已经可以在 Google Code 上找到 EtherPad 的源代码,及详细的如何安装设置的文档。

http://code.google.com/p/etherpad/

这是一个值得 web 开发者关注和学习的项目。对了,他们用的也是 Mercurial

0:14, DEC 23 • Permalink

这是 Opera 相当重要的一个版本。因为在这个版本中,很多开发者对 Opera 长久以来的期待得到解答。

  • 众多的 CSS3 特性得到支持,包括圆角(现在 Opera 支持 W3C 官方的 border-radius 语法),边框背景,过渡和渐变。
  • 一个全新的 JavaScript 引擎 Carakan,带来了巨大的 JavaScript 性能提升。我相信这样的改进是有意义的,而不仅仅只是在各种测评时的数字游戏。因为当你有一天真的开始用 Opera 来访问 Google Wave 时,几十毫秒的加速也意味着一种爽快感。
  • HTML5 离线数据库存储。迟早会被所有的主要网站使用的技术。

目前 Opera 只发布了 10.5 的 WindowsMac OS X 版本,Linux 版本将在不久后发布。这是一个名字里带有 pre-alpha 的版本,名副其实——因为就在我用 Opera 10.5 写这篇帖子时,我打开了 Gmail 然后程序就崩溃了。于是我只能在 Camino 2 里将这些文字重新输入。因此,如果你需要用浏览器做一些严肃工作时,你最好还是用一个已经正式发布了的版本。接下来,我们只能期待 Opera 尽快地让 10.5 正式发布,而这个版本或许会成为 Opera 接下来几年命运的转折点。因为 10.5 中的很多细节改进真的有可能会让这个浏览器成为很多人的主要选择——只要开发者们得到满足,用户们就自然会被开发者们的选择所影响。

p.s. 这次 Opera 10.5 的 Mac 版和 Windows 版具有完全不同的外观主题,Mac 主题看起来十分类似 Firefox 的 GrApple Crisp

23:56, DEC 22 • Permalink
Crackdown

最近政府部门针对互联网上的内容管理出了很多政策,可是之后的连锁反应却让我感觉像是:有一天家长在孩子的书柜里翻出了一本黄色漫画,然后就把家里所有的柜子都打破。

这些政策和所引发的连锁反应,表明管理层似乎并不真的在乎草根们的互联网,有多少的无辜网站在最近受到影响,这些个人站长的生活和尊严,都不在他们的考虑范围。他们就好像是极其自负的家长,只要认为自己的出发点是为了孩子好,于是所做的一切就都无比正确。

曾经有很多的年轻人把做网站并且获得成功当作是自己游上更高阶级的路径,而最近所发生的一切,基本上把这条路径给堵死了。而老权贵们手上已经获得的各种证照和“关系”则更加值钱了。

22:00, DEC 22 • Permalink
App Store 相关网站商业模式

在 App Store 正式建立之前,互联网上就已经有了许多关于 iPhone 软件的网站,而由于那时 native app 开发尚处在地下阶段,所以这些网站大部分也很低调,其中的很多也都夹带了一些灰色内容,比如提供解锁软件下载。那个时候,没有任何的大网站插足这个领域。而 App Store 正式建立之后,各类关于 iPhone 软件的合法网站就越来越多,其中有像 App Shopper 这样的优雅实现,也有像 GameSpotIGN 这样的传统大玩家。

像任何的传统商品(书,音乐)一样,有消费的地方就会有促进其销售效果的推荐和发现。目前 App Store 已经有超过 13 万款软件通过审核,下载次数也早已突破 20 亿。这是一个有巨大用户需求的领域。而这些围绕 iPhone 软件而生的网站,除了最原始的广告模式之外,其最重要的商业模式就是 Apple 的 iTunes Affiliates 联盟。加入此联盟,并成功通过 Apple 审核的网站,如果有用户通过这个网站购买 iTunes Store 中的任何内容(音乐,电影及 iPhone 软件),那么网站可以获得销售收入的 5% 作为佣金。

于是甚至很多精明的 iPhone app developer 也加入了这个计划,因为他们本来就需要自建网站推销自己的 iPhone 软件,而加入此计划后,除了本来他们可以获得的销售收入,他们甚至可以获得来自 Apple 的销售佣金。Developer 在这个过程中收了两道钱,但这是一件符合逻辑的事情,因为如果所有 developer 在开发完一款软件之后没有进行足够的宣传,那么 Apple 自身的收入也会受到影响,而 iTunes Affiliates 就是一个激励 developer 去进行更好的宣传的好理由。

不过根据我自己的注册经验,并不是所有的网站都能够在注册之后成功通过 Apple 的审核。Apple 目前只接受内容语言是英文的网站的申请,而其他语言(比如中文)基本上肯定会被拒绝。这也解释了为什么豆瓣,这个国内最好的关于音乐电影的推荐和发现的应用,没有加入 iTunes Affiliates。

不过,如果你确定想从 iTunes Affiliates 中分一杯粥,那么为此建立一个英文网站也不是什么难事。因为你很容易就可以从 Google 搜索获得所有关于 iTunes Store 的元信息,然后根据此元信息建立一个类似 GameSpot iPhone 那样的网站。之后?就取决于你究竟能够在此之上做出何种创新,及如何将流量引入到这个网站。而目前 Apple 也有自己的推荐与发现服务——被称之为 Genius,从海量的用户的购买和打分行为中做出推荐。

11:00, DEC 22 • Permalink

几个月前,看到父亲在看这本杂志,记得那一期所讲的主题是关于大陆的荣军政策的变迁。看完之后,后来每次经过书报亭的时候,我都会记得去买这本杂志,然后用睡前和马桶上的时光看完。Olivia 也同样喜欢。

说实在的,作为平民人家的 80 后,我们为能够在大陆看到这样的杂志,还是感到十分惊喜的。因为,如果我把杂志中的那些文章敲入国内的任何一个 BSP 的后台系统中,估计都会因为他们费力开发的弱智过滤系统而无法发出。因而我感到这是一本十分神奇的杂志。如果你知道其他的能够在大陆买到的更加神奇的杂志,欢迎通过邮件告诉我:v2ex.livid@gmail.com。先谢谢了。

2:04, DEC 22 • Permalink
Project Picky v0.1.3 Released

下载地址:

http://project-picky.googlecode.com/files/project-picky-v0.1.3.tar.bz2

这个版本引入了一个重要的新功能,即每篇文章的格式。系统默认是 HTML,即每篇文章你需要用 HTML 语言撰写内容,为了获得对样式的最大程度的控制,你甚至需要考虑换行问题。在未来的版本中,我会添加选项让你决定是否开启可视化的 HTML 编辑器。在这个过程中,我其实在等待 EtherPad 的开源发布,我实在是很喜欢他们的那个 HTML 编辑器。

除了 HTML 之外,现在 Picky 还支持 Markdown,一种由 John GruberAaron Swartz 发明的优雅的 text-to-HTML 语法。该语言解析器的实现,使用到了 python-markdown 项目组和 Google 的 DeWitt Clinton 的工作,在此一并感谢。

在此之外,Picky 还可以支持 text 格式,即 Picky 会为 text 格式自动生成 HTML 所需要的换行。

Google Analytics 的支持是这个版本的另外一个小增强,现在你可以在后台中填入你的 Analytics ID,然后 Picky 就会自动在所有页面上加上流量统计代码。

最后就是,如果你在本地环境中调试 Picky,你会发现所有和 Twitter 有关的功能现在更显健壮,具体的改进,可以查看 Picky 的源代码。

18:22, DEC 19 • Permalink

一个专为 PS3 优化的媒体服务器,支持几乎所有图片,音频,视频及字幕格式。而且,最赞的是,这是一款使用 Java 写成的开源软件,支持所有操作系统。

因为开源,所以我在想,如果能够将自动通过射手网寻找字幕的功能做进去,那么这个软件对于中文用户而言就完美了。

23:56, DEC 17 • Permalink
Picky + Google Analytics

现在 Mercurial 中的最新版本的 Picky 的 Settings 中多了一个选项,你可以填入你的 Google Analytics ID,比如 UA-11940834-1 这样的,Picky 就可以自动在每一个页面加上 Google Analytics 代码。

此功能将包括在 v0.1.3 中,如果你想尝鲜的话,可以用 Mercurial 来获得最新的源代码。

23:49, DEC 16 • Permalink

Rock Star Games 的下一款游戏,故事设定在 20 世纪早期的狂野西部。和 GTA 一样是一款丰富的开放式游戏。预定 2010 年 4 月上市。从首页的预告片来看,素质非常惊人,值得期待。

20:19, DEC 16 • Permalink

视频直播是一个很有技术含量的产品。

20:05, DEC 16 • Permalink
把博客架在 Google App Engine 上的好处

如果不是被 WordPress 的各种问题折磨,我是不会考虑开始这个项目的。在开始 Project Picky 之前,我思考过,究竟意义在哪?

  • 在共享主机上,WordPress 很容易被注入恶意代码。原因?可能你在上传 WordPress 的时候,把某个目录 chmod 777,只是为了修改某些文件方便,但是却成为安全漏洞。这样恶意人士只要运行一个程序扫描整个服务器上的 chmod 777 目录,于是 WordPress 的各种文件就这么被修改了。而每次修复,都要用 FTP 把全部文件删干净,然后上传新的。这个过程实在是太傻了(或许也是机会,现在有专门针对服务器上的 WordPress 的杀毒软件么?)。而如果恶意代码是注入到你自己写的主题里,那么你还要上传主题。如果之前你是直接在服务器上 hack 主题,那么就晕大了。
  • 传统服务器毕竟是脆弱的。很容易就遇到硬盘烧掉或者什么东西烧掉,虽然大部分时候主机商都可以从备份数据中恢复,可是中途无论如何都至少需要一两天。
  • 放在国外会被墙,放在国内服务器会被抱走。这些都是无法彻底避免的。而且很多时候可能你自己的博客上没有什么敏感内容,但是旁边的那台机器不干净,于是一整个机房也会被连坐。而放在 GAE 上虽然也可能会随时被墙,但是至少不用担心自己的服务器被抱走。
  • 免费。大部分的个人博客所能够产生的流量,用 GAE 的免费方案就完全足够支持了。Google 为什么会这么大方呢?因为从大的哲学上来说,只要互联网上的有价值的内容在持续增长,那么 Google 的收入也会增长。所以免费提供 GAE Hosting 对于 Google 来说实际上是一种内容投资。
  • 方便和其他 API 进行互操作。比如在 GAE 上和 Twitter API 进行互操作是十分方便的,不需要任何中间环节,而且速度极快。

所以我相信,运行在 Google App Engine 上具有优良用户体验的博客工具乃至其他内容发布方式,都是会越来越有价值的。

17:06, DEC 16 • Permalink
So What vs. What If

在我看来,这个世界上的一切纷争,皆源于两派人的互不认可。一派人觉得什么都无所谓,天大的事情发生了,他们会轻松地说一句 so what?而另外一派人整天忧心忡忡,担心会有任何他们不愿意的事情发生,他们说得最多的句子,都是以 what if 开头。

君臣,母子,敌我,莫不如此。

16:12, DEC 16 • Permalink

看起来豆瓣打算在 Google Code 发布其第一个开源数据库项目:DoubanDB。目前此项目站点上还没有太多信息,唯一有趣的是一句描述:Distributed Key Value Storage(分布式键值存储),而右侧的标签里引用了 memcached 和 TokyoCabinet,似乎也有可能 DoubanDB 会是这二者 remix。

0:51, DEC 16 • Permalink
iPhone 上最好的证券软件

目前 App Store 里支持中国股市的证券软件有 4 款:大智慧,证券之星,国信金太阳及同花顺。其中国信金太阳和同花顺提供了委托功能,但是金太阳只支持国信证券自己的客户进行委托,而同花顺几乎支持国内的所有券商,很强大。看行情的速度在 3G 网络上都可以接受,但是如果就图表的性能而言,在国信金太阳的图表上进行拖拽查看行情是最流畅的,国信金太阳的整体用户体验也最接近 iPhone native app 的感觉。

另外就是,同花顺本周三(12 月 16 日)将登录中国股市创业板,代码 300033,发行价 52.8 元。如果你喜欢他们的软件,不妨关注一下他们在股市的表现。

0:15, DEC 16 • Permalink
Project Picky v0.1.2 Released

小幅更新。增加了一个新功能和一个可用性修正。

  • 可以在 Settings 中配置一个 feed URL,这样页面上所输出的所有 feed 地址就是所配置的这个。方便 FeedBurner 用户。
  • 在后台编辑文章完成后,将返回之前所在的页码。而不是像 v0.1.1 那样总是返回第一页。Google App Engine 里没有包括对 Session 的官方支持,于是 Picky 里集成了一个来自 AppEngineLearn 的实现,可在 v2ex.picky.ext 包中看到源代码。

下载地址:

http://project-picky.googlecode.com/files/project-picky-v0.1.2.tar.bz2
22:07, DEC 15 • Permalink

新增加了一个名为 Blobstore 的 API,可以对用户上传的至多 50M 的二进制数据进行操作。在本地的开发环境里使用这个 API 是免费的,但是如果在线上环境,则需要帐户开通 billing。希望这不会是一个坏的开始,让以后 GAE 的很多新功能都需要开通 billing 才能在线上环境使用。

13:39, DEC 15 • Permalink
Special URLs in Picky

Picky 中几个普通用户不会直接看到的 URL,但是很有用。

  • /index.xml - Atom 格式的 feed 输出,可以在各种阅读器中订阅。
  • /sitemap.xml - Atom 格式的包含站内所有文章及链接的站点地图文件,可以帮助支持的搜索引擎更好地索引网站。
  • /robots.txt - 纯文本格式的搜索引擎指南,里面包括了 sitemap.xml 的地址,可以帮助搜索引擎定位 sitemap.xml。在 Picky 的后续版本中,将提供对这个文件的更多定制功能。
  • /favicon.ico - 在浏览器地址栏显示一个小图标,你可以在 static/shared 文件夹中替换这个文件。
  • /writer/overview - 后台入口。
1:21, DEC 15 • Permalink
Alternative Feed

Picky 的最新功能,你可以在 Writer 后台中加入一个特定的 feed 地址,这样 Picky 所输出的所有页面中的 link element 所指向的 feed 地址就会是你指定的这个。相信这个功能可以方便所有使用 FeedBurner 的 Picky 用户。此功能将随 v0.1.2 一起发布,目前已经可以通过 Mercurial 获得。

1:10, DEC 15 • Permalink

一个居住在 Boston 的中产家庭,决定用一种比“低碳”更加绿色方式生活,他们称之为“零影响力计划”,包括:不购买任何新的东西,不使用任何电器,出门用一辆脚踏三轮车……

“环保”可以让有创意的人充分发挥从而创造出一种全新的时尚,Colin Beavan 他们一家的做法足够极端,而人们都喜欢追随极端。

13:43, DEC 14 • Permalink

很早之前,第一次在 PSN 上看到这款游戏的预告片时,没有搞懂是怎么玩,只是第一感觉很像 PixelJunk Monsters,以为就是一款向其致敬的塔防游戏。

今天在 PSN 上下了这款游戏的 demo 玩了半个小时之后,入手了完整版。虽然游戏中的某些配乐及美术风格确实很像 PixelJunk Monsters,但其实是完全不同的另一款游戏,而且战役模式,即是只是 easy 也颇有难度。

游戏的概念有些类似 Company of Heroes,每张地图上有一定的控制点,控制点有三种类型——塔楼,村落或是熔炉。塔楼可以发射炮弹防守,但是不能生产士兵。村落可以生产士兵,但是没有任何主动攻击功能。如果你占领了熔炉的话,那么所有的士兵在攻击和防守时会有优势。三种控制点类型可以互相转换。游戏中没有钱的概念,唯一决定游戏进程的数值就是你手中的士兵数。你需要运用好这些士兵,去占领敌人的控制点。大部分情况下,如果地图上的控制点全部被一方占领,那么游戏就结束了。

而实际上进行游戏时,就像所有的 RTS 一样,战场是充满变化的。人数优势在这个游戏中被强调,这让我想起了孙子兵法中的“故用兵之法,十則圍之,五則攻之,倍則分之,敵則能戰之,少則能逃之,不若則能避之。故小敵之堅,大敵之擒也”,兵法之道能够在一款游戏中得到体现,实在是太有意思了。

Mushroom Wars 除了有战役模式之外,也支持用两支手柄对战,但是不知何故,本地对战模式中可选的地图实在是少得可怜,半个小时内基本上就把所有的地图都玩了一遍。希望在后续的版本中能够有更多选择吧。

结论:推荐给所有对 RTS 有爱的 PS3 玩家。

0:17, DEC 14 • Permalink
Project Picky v0.1.1 Released

这次发布通知原本应该是在 12 月 10 日的,但是那天我食物中毒卧床不起了,于是就变成了今天的 v0.1.1 发布。

这是 Project Picky,使用 Python 语言写成,运行在 Google App Engine 上的博客工具的第一个发布版本。这个版本的功能点包括:

  • 运行在 Google App Engine 云计算平台上,GAE 的免费方案足够 Picky 支持每月 100 万的 PV。
  • 默认外观设计尽可能保持简洁,以便你在此之上发挥自己的创意。
  • 写博客条目或者是独立页面,并且你可以配置是否让一个独立页面显示在侧栏。
  • 向 HTML5 标准靠近。
  • Atom feed 输出。
  • 自动将新文章向指定的 Twitter 帐号同步。
  • 查看谁在博客圈或是 Twitter 上提到你。
  • 运行在 Google App Engine,工业标准的云计算平台上,意味着 Project Picky 的底盘非常安全。不用担心普通共享主机的各种安全问题。

下载地址:

http://project-picky.googlecode.com/files/project-picky-v0.1.1.tar.bz2

安装文档及其他详细信息,可以看 Picky 的产品页面。

你也可以使用 Mercurial 获得 Picky 的最新源代码。

16:51, DEC 12 • Permalink

Molinker 难道在出口软件的同时,也打算把自己那套含混不清的道德观和法律观也一道出口到美国?可惜那在美国是行不通的。当确实犯了错的时候,问题不在于程度,而在于性质。

16:17, DEC 12 • Permalink
Project Picky 的 Title Link 设计

如果你在网上看到一篇很好的文章,你打算评论它,也希望让更多的人读到它,那么你会用什么样的方式在自己的博客上呈现它呢?

中文博客世界里常用的方式是全文转载,但是:

  • 全文转载会创造出大量的冗余信息,一旦很多人都那么做,结果会很灾难。一篇受欢迎的中文文章,如果搜索其标题,你就会看到大量的冗余结果。虽然 Google 做了很多工作来避免这种情况,可是由于每个站点的上下文的 markup 不同,冗余文章还是没有办法完全用机器方式消除。
  • 全文转载实际上是在盗窃原作者的原创内容,如果在转载的内容上还挂广告,那么简直和入室盗窃然后黑市销赃没什么区别。

因此,就有了 Picky 这样的设计,每一篇文章除了标题之外,还有两个重要属性:

  • Title Link - 选填项目。你可以在这里放入一个超链接,之后当文章显示在博客中时,页面上的标题将变可点,指向的就是你在 Title Link 处填入的连接。比如我看到了新出的 iTunes Holiday Sampler,觉得很不错,想分享给大家,就可以把指向 iTunes Holiday Sampler 的链接放到 Title Link 中。
  • Title URL - 必填项目。用于生成 permalink(永久链接)及 SEO 目的。建议只使用英文字母,数字和连字符(-)。

这其中一个明显的不同是,很多博客的页面中,如果在首页点击条目的标题,则往往进入到该条目的全文阅读页面。如果首页上已经输出了全文,那么这个点击基本上是多余的。而在 Picky 中,无论是在首页还是 permalink 页上,如果标题可以点击,那么肯定是指向一个博客主人想分享的外部链接。

我喜欢这个对于 Picky 的解释:exacting especially about details。于是在设计 Picky 时,我反复思考的就是,我所需要的每一个细节究竟应该是怎样的。

p.s. 另外的一个小细节就是,因为有 Title Link 这个设计,Picky 所输出的 Atom Feed 格式的 /index.xml 是不能用作 sitemap 的,因为其中的 link element 可能会指向外部链接。但是可以用专门生成的 /sitemap.xml 作为 sitemap 提交给支持的搜索引擎。是的,Picky 的第一个版本就考虑到了 sitemap 的支持。

1:47, DEC 12 • Permalink
关于最近大陆关闭 P2P 网站

目前大陆网民所正在经历的,美国和日本的网民早已经历过。在日本,哪怕只是用 BT 传输几个游戏的 ROM,都会惹很大麻烦。像国内这样大张旗鼓地提供盗版电影音乐游戏的下载,并且还靠广告盈利,必然不可能长久。有的事情在蛮荒时期做一下或许是正确的,因为那样或许可以让自己和家人幸福。而历史却往往是跳跃式发展的。

1:21, DEC 12 • Permalink

免费体验 iTunes 9 的新功能 iTunes LP 的机会。

另外,在那个页面上,Apple 的设计师显然注意到了一个细节:这个世界上的每一片雪花都是不同的

0:40, DEC 12 • Permalink

iTunes Connect 新增了 6 种语言的本地化支持,其中包括简体中文。以后可以为自己的 iPhone 应用专门添加简体中文信息了。每次为应用升级时,也必须为新支持的语言继续添加升级说明。

23:40, DEC 11 • Permalink

我最喜欢的 Mac 浏览器一直是 Camino,因为足够快,默认界面的配色足够 Mac,设置面板也十分 Mac。不过现在看来我终于可以有一个更快的新选择了。Camino 中所集成的 Gecko 核心一直都没有 Firefox 的新,很多的新的开发功能自然也就没有办法用上,比如关于 HTML5 的很多功能。而 Google Chrome 在集成新技术方面一直都十分激进。

我个人感觉 Camino 最大的问题就是他们把项目的纯洁度(或者说完美度)看得比什么都重要,于是一直以来,我都没有在 Camino 中找到任何他们在赚钱的痕迹,比如用 Camino 右上角的 Google 搜索,结果 URL 里是不带 client 标记的,也就是说,虽然他们也有不小的忠诚用户量,但是却没有从 Google 拿到钱。于是 Camino 成为了目前最纯洁的一个浏览器,但是缺乏足够的开发和设计人员的投入,Camino 的版本更新速度恐怕也是目前所有浏览器中最慢的。

19:49, DEC 9 • Permalink

作者在页面上留下了这么一段话:

Just an idea: next time you see something you like, write the person who made it a note telling them so. Even better, explain why.

是的,正向反馈对谁都很重要。

17:32, DEC 8 • Permalink
用 Mercurial 取得 Project Picky 的最新源代码

Project Picky 的源代码现在已经开始不定期 push 到 Google CodeMercurial repository

Google Code 支持两种源代码控制系统,Subversion 和 Mercurial,Project Picky 选择了 Mercurial。因为:

  • Mercurial 是一个分布式的版本控制系统,支持离线 commit,支持 clone,命令集较小,容易学习。
  • Mercurial 不会像 Subversion 那样在每个目录中都放元信息文件,Mercurial 只会在项目的根文件夹中放置一个 .hg 文件夹。
  • Mercurial 是用 Python 写成的开源软件,而 Project Picky 也是。

Project Picky 的第一个正式发布版本会在 2009 年 12 月 10 日提供 .zip 和 .tar.gz 格式的下载。目前如果你想先尝鲜的话,在安装了最新版本的 Mercurial 之后,可以用以下命令获得 Project Project 的最新源代码。

hg clone https://project-picky.googlecode.com/hg/ project-picky

关于如何安装,及详细介绍,可以看下面这份文档:

http://picky.olivida.com/picky

这份文档在 Project Picky 正式发布后会继续更新。

17:22, DEC 8 • Permalink

Discovery 旗下的关于绿色未来的网站,大多数时候会发布一些非常好玩的信息。比如最近这篇 The Unbelievable World of Snowflakes,根据 Wikipedia,这个世界上没有两片雪花是完全相同的。

15:55, DEC 8 • Permalink

Google Public DNS 和 OpenDNS 可能导致你访问国内某些网站的时候被错误地导向到他们的国外服务器,比如你可以试试用 Google Public DNS 解析时访问射手网

15:42, DEC 8 • Permalink
Picky + Twitter

Picky 的 Twitter 同步功能完成。使用了 DeWitt Clintonpython-twitter 0.6,但是需要做一些修改才能在 App Engine 上使用。这些修改将在 Picky 的源代码发布时一起分享。

话说,DeWitt Clinton 实在是精力异常充沛

0:55, DEC 7 • Permalink

EtherPad 是一款在线编辑工具,特色功能是可以让多人同时编辑并实时看到文档的更新。听起来和 Google Wave 很像。最近 Google 收购了这家公司。在收购之后,他们宣布关闭新用户注册。不过最近似乎大量的用户因为收购的消息而突然对这款服务感兴趣,于是他们重新开放了注册并且宣布了一个更加令人激动的消息:EtherPad 及其底层的开发框架 AppJet 将会开源。

输入并保存文本是所有人在使用电脑时的一个基本需求,国外有很多在这方面创新的小公司,比如曾经的 Blogger 和现在的 Twitter,Google 收购的一系列产品如 WritelyJotSpot,还有 Aaron SwartsJottit。在这个领域创新不需要海量的存储和运算,主要的关注点是用户体验,性能及数据安全。目前国内好像几乎没有在这个领域做创新并获得成功的公司?或许 Edit Grid 是里面最成功的一个。

23:23, DEC 6 • Permalink

如果采用 24 个月合约计划的方式购买联通 iPhone,根据档次不同,则每月的月费是从 126 到 886,这样的月费中包含了从 320 到 3000 分钟的通话时长及从 450MB 到 4G 的数据流量。其中的几个有趣的细节:

套餐内所包含“国内语音拨打分钟数”指您在本地和国内漫游地发起的任何 3G、2G 语音国内拨打时长。

也就意味着,联通的 24 个月合约是没有漫游费的。而且也没有长途费。

接听免费范围   全国

彻底的单向收费。结合之前的那个条款的话,也就是说,在全中国范围内用联通 iPhone 打电话,都像是在市内一样。对于消费者来说,对比以前中国移动的各种条款,联通的 iPhone Plan 实在是省略了太多复杂的细节,总之十分好用。及最后一个小小的方便:

套餐内赠送来电显显示功能。

我觉得联通的市场部应该用普通人更容易理解的语言来宣传他们的这些创新。比如可以在市级旗舰店的门口挂上巨大的横幅,写:

  • 真正的单向收费来啦
  • 中国联通带您进入真正的全国免费漫游的时代
  • 用中国联通 3G 打电话,打到全国都是一个价
23:59, DEC 5 • Permalink

无论是我之前的联通 WCDMA 实际使用体验,还是网上的各种反馈,大家目前一致的感受就是觉得联通的 WCDMA 实在是太快了。得民心者得天下。个人感觉目前联通的行货 iPhone 虽然没有 Wi-Fi,但是按照其 3G 覆盖的信号水平,和话费返还计划的靠谱程度,已经足够和水货硬拼了。今天在昆明联通旗舰店,那里的小伙子告诉我,他们已经在昆明卖出了超过两万台行货 iPhone。或许,是时候买点联通(上交所代号码:600050)的股票了?

3:42, DEC 5 • Permalink

我最喜欢的电子娱乐设备 PlayStation 的 15 岁生日。当家里有一台 PS3 时,我坐到 PS3 面前的时间,就是纯粹的娱乐。而坐到 MacBook Pro 面前时,就是纯粹的工作。我喜欢这样纯粹的感觉。

3:26, DEC 5 • Permalink

memcache 模块新增 offset_multi 方法,递增和递减操作也有增强。URLFetch 现在可以更好的处理 302 转向。Bulk Loader 的大量增强。及一个新增的环境变量 SERVER_SOFTWARE。

2:53, DEC 5 • Permalink

P2WordPress 的后台公司 Automattic 推出的具有未来气质的主题。介绍视频里所演示的使用方式将 WordPress 变成了一个以个人或者是主题为中心的迷你博客样式,同时还具备了良好的 iPhone 支持,总之十分 Twitter-like。

0:44, DEC 5 • Permalink

Twitter Mobile 可能是地球上最惨烈的 UI/UE 竞技场。

15:09, DEC 4 • Permalink

用 iPhone 访问 mobile.cmbchina.com 就可以进入到兼容 iPhone 的招行银行网上银行。目前已经可以查询帐户余额,转账,为手机缴费及查询网上交易记录,而投资管理点进去之后就是“正在建设中”。没有想到银行也开始用 release early release often 的方式来发布功能了。另外就是,关于安全传输,这个版本依靠的就只是 SSL,没有什么莫名其妙的插件。如果在浏览器中的那个版本,也能够把那个莫名其妙的插件去掉就更好了。

目前界面的设计中有一个让人疑惑的是,假如用户一开始进去点了“投资管理”,那么下方会显示“正在建设中”,之后又点了“转账”,虽然顶部的菜单有更新,但是下方还是显示“正在建设中”,就让人误以为功能不全。我一开始进去的时候就没弄明白,后来发现,是要点到最后一级的具体的功能点的时候,下方的界面才会更新。

14:20, DEC 4 • Permalink

Tutorial 9Tuts+ 这样的设计师网站上有大量的 125x125 的广告,或许你会好奇这一切后面的机制。比如为什么是 125x125 这个尺寸?广告主和发布网站之间是如何连接起来的?其实这一切后面都是依赖 BuySellAds.com,简称 BSA 在运作。而广告尺寸的标准,可以参见 IAB - Ad Unit Guidelines

当你在为自己的博客设计新主题,或者是打算面向国际市场设计商业的 WordPress 主题的时候,考虑 BSA 和广告单元尺寸的因素可以让作品更有商业友好度。

2:36, DEC 4 • Permalink

今年 DNSPod 的服务出问题的时候我就在想,或许 DNS 会成为继输入法之后各大互联网巨头争夺的下一个山头。不过那个时候还没有 Picky,所以我也就没有把我的想法写下来。在 2008 年 12 月的时候,有一次和车东在杭州的碰面,我还和他聊过关于在国内做一个 DNS 服务的构想。

DNS 是互联网的基础服务,就像水和电在现实生活中的作用一样。只是得益于互联网的开放性,即使是如此基础的服务,也不至于能够被政府完全控制。

Google 所提供的 DNS 服务的最明显的两个价值就是:

  • 提高访问所有需要域名解析的互联网服务的速度
  • 在 DNS 解析阶段就把恶意网站拦截

另外,通过挖掘每天全球数亿用户的 DNS 查询所产生的海量数据,里面会有非常多有价值的东西。比如可以做出一个比 Alexa Toolbar 和 Google Analytics 所产生的数据更加精确的网站或互联网服务的排行版。如果更加深入地挖掘的话,甚至做一个 DNS 的 Zeitgeist 2009 也会很有意义。

而每一次失败的 DNS 查询,都是一个把用户导向正确位置的机会。这样的事情,做得恶劣的话,叫 DNS 劫持,目前中国各省的宽带运营商都在和微软一起干。而做得好一点,就是方便了用户的同时附加了价值。

我很期待接下来哪一家国内的互联网巨头会跟进,以及 Google 会根据这样的海量数据做出什么样的有趣玩意来。Google Public DNS 服务器的地址:

  • 8.8.8.8
  • 8.8.4.4
2:08, DEC 4 • Permalink

Firefox 3.5 的 Mac OS X 默认主题是在是太重了,占用了太多屏幕像素。而 GrApple Delicious 可以让你的 Firefox 变得更加 Mac OS X。

22:06, DEC 3 • Permalink

一个有很多漂亮的经典设计的 blog,他们的自我介绍:

Grain edit is focused on classic design work from the 1950s-1970s and contemporary designers that draw inspiration from that time period.
20:40, DEC 3 • Permalink
命令行删除 GAE 项目文件夹中的所有 .pyc 和 .DS_Store

任何的编译产生的文件(比如 Python 的 .pyc)都不应该放进源代码管理系统中。下面这行 Unix 脚本可以删除所有子目录中的 .pyc 文件。

find . -name "*.pyc" -delete

另外就是,在 Mac OS X 上,有的时候系统会在目录下生成很烦人的 .DS_Store 文件,也可以通过这样的方式删除。

find . -name ".DS_Store" -delete
17:26, DEC 3 • Permalink

Google Code Project Hosting 所支持的分布式源代码控制系统,值得学习。我打算使用 Mercurial 来管理 Project Picky 及后续的其他 GAE 项目的源代码。

16:21, DEC 3 • Permalink

我觉得这是一个好方向。目前所有主流 Twitter 客户端只是简单地根据官方 API 做出一种展示方式而已,如果用户订阅的信息量很大的话,目前的主流客户端能够提供的过滤方式主要还是依靠官方的搜索 API。

我觉得并不一定真的要把某种编程语言,比如 Python,引入到 Twitter 客户端中。这是图形化编程更加适合发挥的地方。比如我一直都觉得,很多在操作 Excel 的人,就根本没有意识到自己其实是在编程。

在苹果的 Mail.app 的过滤功能里,其实你就可以大致体会到如果 Twitter 客户端支持某种程度的编程的话,会多么好用。

16:16, DEC 3 • Permalink

Use this format string to turn GAE DateTimeProperty into date time format in Atom Feed:

|date:"Y-m-d\TH:i:s\Z"
1:44, DEC 3 • Permalink

最近终于把 UNCHARTED 2 通关了。虽然 10 月 13 号首发的时候就入手了,但是中途因为实在是对其战斗方式和不停爬墙感到有点乏,于是就歇了一段时间。战斗在这个游戏中占了大部分,但是却让我感觉重复和无聊。因为 U2AT 的战斗并不像 Resident Evil 5 那样,需要去精确的掌握每一秒的具体动作,大部分时候,U2AT 的方式在我看来就是,打两枪,找块石头躲一下,然后再打两枪,直到清场。虽然也有高手和低手之分,但是爽快感依然无法和 Resident Evil 5 的佣兵模式相比。

这个游戏对我而言最大的意义,就是去看风景。第一次运行时,游戏的清晰度就让我震惊了。PS3 上有很多标称分辨率 720P 的游戏,但是实际上却根本达不到,比如 Call of Duty 的 4 代和 5 代,还有我最爱的 RE5。但是 U2AT 的 720P 的分辨率确实看起来每一个像素都是真实的,这不需要借助任何精密仪器,如果让两台同样的 HDTV 并排,一台显示 U2AT,一台显示 Call of Duty: World at War,那么你立马就会感觉到巨大的区别。

在游戏中获得的钱可以在游戏中购买 bonus features,比如 8 段幕后花絮电影,其中有一段就是关于 Naughty Dog 如何完全发挥 Cell 处理器的威力来实时处理画面的后期特效。

整个游戏的单人流程部分很有诚意,第一次玩的话,至少需要 10 个小时才能通关。而通关之后游戏还有多种模式的多人对战。值得一提的是,U2AT 的多人对战的性能很好,虽然 matchmaking 所需时间不短,但是一旦进入游戏,无论是动作还是语音,就十分流畅。

如果你也喜欢这个游戏,或许我们可以一起在 PSN 上来几局,我的 PSN 美服 ID 是 V2EX-Livid。

1:08, DEC 3 • Permalink
Which Player?

在目前我用过的所有 Windows 上的播放器中,射手播放器是我的首选。

射手播放器最特殊的功能就是,当你开始播放视频文件时,播放器会在后台为你自动地寻找一个最靠谱的字幕。这些字幕来自射手网,中国最好的字幕网站。这一切听起来很 cloud computing 的感觉,而这实际上也是射手播放器的绝对的竞争优势,其他公司是没有办法在短时期内积累起这么多的字幕的。除非用一些恶劣的手段。不过射手网的全站都是 XML 格式,这或许也意味着一种开放?

另外就是,我不明白在播放器界面插入广告的公司对产品为什么会那么自信,没有人会想在按下暂停之后看到网游广告。而射手播放器这样的开源软件就绝对够清爽。

至于 Mac OS X,安装好 Perian 就基本上什么格式都可以放了,不过字幕得自己去找。

21:13, DEC 2 • Permalink
在发布一款开源软件之前

在发布一款开源软件之前,除了代码之外,还有很多工作需要做。

  • 是否已经准备好最基本的文档?
  • 代码中是否还有任何 hard coded 的敏感信息,比如密码和处理验证所写的特例?
  • 思考清楚第一个出去的版本的可能的用户会是谁?并且他们对于各种 bug 会有何种容忍程度?
  • 软件的名字?使用何种方式发布代码?是否已经设计好一个 Logo?必要的一些截图?

虽然开源软件可以通过 release early release often 的方式来修正所有问题,不过我依然觉得,给用户的第一印象是非常重要的。

20:37, DEC 2 • Permalink
Use Mac Ports python25 for Google App Engine Launcher on Mac OS X

如果你发现 Google App Engine Launcher 在 Snow Leopard 上运行时 Universal Feed Parser 没法用(报关于 _ctypes 的错),那么最简单的方式就是在 Launcher 的 Preferences 里指定 Python path 到 /opt/local/bin/python2.5(当然需要先通过 Mac Ports 安装 python25),然后再用 Mac Ports 装上 py25-pil,世界就清净了。

如果你之前安装过 python25 port,但是升级的时候说无法 activate,那么可以试试强制激活,比如:

sudo port -f activate python25 @2.5.4_9+darwin+darwin_10+macosx

不过这样做的话,会在 /Application/MacPorts 下的 MacPython 2.5 的三个 Package Contents 里生成一堆垃圾。有的时候感觉追 Mac Ports 的更新就像是在一座无比巨大的森林里用手枪打兔子。

15:19, DEC 2 • Permalink

最新的 Google Chrome Build 中可以找到的面向前端开发者的工具,很好很强大。我尤其喜欢其中调试 Storage 的功能,在 Firefox 上的所有的 sqlite 管理器都很业余,而 Firefox 自身目前对 HTML5 Database Storage 的支持也很有限。

Firefox 很多年都没有对他们的 Preferences Panel 做大改动了,但是我并不觉得这表明目前的设计已经足够好用。比如,你可以自己数一下,在 Firefox 里更改 Proxy 设置究竟需要多少次鼠标点击。

13:44, DEC 2 • Permalink
联通 WCDMA 3G + 华为 E1750

最近搬了新家之后,宽带一时半会没法装好(电信的说法是资源不足),于是就入手了联通的 WCDMA 3G 的数据套餐。之前也去了电信的营业厅试用 CDMA2000,不过似乎他们的销售人员对自家产品都不够自信。而实际测试的数据是,在营业厅下载至多可以到 50 KB/s。后来去了联通的省旗舰店,无论店员的销售素质和实际的测试效果就都非常让人满意了,于是欣然入手。

目前联通的 WCDMA 3G 数据卡主要是华为和中兴造的,去之前在华为网站上稍微了解了一下,华为的几款主要产品都是可以兼容 Mac OS X 的。于是选了华为的 E1750。

插到 MBP 上之后,会识别出一个 USB 存储设备,里面有一个 Mac 应用,但是点击之后无法运行。于是查看 Package Contents,在 Resources 里面找到一个 Mobile Partner.mpkg,估计是驱动程序,于是运行了一下,果然。

之后 Network Preferences 面板里会多出来三个网络接口,名字都是 HUAWEI Mobile 开头的。直接点 Connect 会出错,于是点 Advanced 进行配置,在 Vendor 里选 Other 然后就会看到 HUAWEI Mobile Connect 的选项,选中后点 OK,然后在 Telephone Number 里填入 *99# 就可以 Connect 了。

实际使用时的顶速可以到 386 KB/s,非常让人惊喜,基本上快赶上电信的 4M ADSL 能够提供的下载速度了。不过因为是无线 3G 网络,访问延迟会比较高,尝试 ping www.google.com 的延迟在 200 到 400 ms 左右。估计用来打网络游戏就会郁闷了。不过好在我也没有这方面的需求。

值得一提的是,联通的 3G 数据套餐的 plan 很智能。起步是 80 块钱包 1G,如果用的时候超过 1G,而超过的数据量所产生的费用超过下一个级别的 plan 时,就会自动升级到下一个 plan。总之会按照最省钱的算法算出每个月实际需要的费用。只要不是每天用迅雷下高清的话,那种天价话单的悲剧的发生概率恐怕不大。目前联通在执行的具体的 plan 可以看这里:

http://3g.10010.com/3gindex/card_money.html

最后我想说的是,华为做出了很好的硬件产品,他们的 Windows 下的客户端也非常可靠。但是似乎他们的 Mac 部门并没有做足够的测试,盒子里的印刷版说明书里也彻底没有提到 Mac OS X 下的操作。我在 Snow Leopard 下的安装体验,似乎有一点太过于 nerdy 了,不过我倒是挺享受这个过程的。

p.s. 最后再 nerdy 一下,盒子里的驱动光盘是 8cm 的,基本上所有的吸入式光驱都没法用。

0:54, DEC 2 • Permalink
Technorati Claim

34U2GJF759PG

This post will be removed once Technorati approved my claim.

23:34, DEC 1 • Permalink

刚刚为 Project Picky 实现了更新文章时候的 ping 功能。向正式发布又迈一小步。

22:36, DEC 1 • Permalink
Music Taster

在今天吃饭的时候想到的一种职业。目前很多餐馆播放的音乐,从音乐本身到音量都不够好。我不知道现在是否能够有这样的专业人士或者公司,专门为餐馆提供关于音乐的咨询服务。

作为咨询服务的实体部分,可能餐馆需要购买某个软件或者网站的序列号,然后就可以通过餐馆的电脑播放适合餐馆的音乐,并且以一种有科技含量的方式对音量进行控制。

而作为服务的回报,除了支票外,music taster 也需要去实际品尝餐馆的出品,从而为食物和餐馆的定位选择精确的音乐。

其中也会涉及到音乐的使用权问题,那么这个咨询机构或许还可以同时代理使用权的购买。

而这种职业,我觉得可以被叫做 music taster。

2:03, NOV 29 • Permalink

一本学习 Python 的好书。推荐给所有对 Python 有爱的新手。作者 Steven F. Lott。以下是本书简介。

How do you learn Python? By doing a series of exercises, each of which adds a single new feature of the language. This 450+ page book has 42 chapters that will help you build Python programming skills through a series of exercises. This book includes six projects from straight-forward to sophisticated that will help solidify your Python skills.
0:14, NOV 28 • Permalink
HTML5 DOCTYPE

够简洁。

<!DOCTYPE html>
15:21, NOV 27 • Permalink

Plants vs. Zombies 是我最喜欢的塔防游戏之一,将会在今年 12 月登录 App Store。等以后我家小朋友长大了,我一定会去教他玩这款游戏。

15:14, NOV 27 • Permalink
Chrome OS 第一印象

在 Chrome OS 发布之后,我就在网上找到了一个 VMDK 镜像文件,然后用 VMWare Fusion 体验了这款 OS。

根据 Google 目前所透露的信息,我觉得 Chrome OS 就是另一款专用的上网本操作系统。是在一个有限的假设内,将一些简单的事情做得足够好用。

First, it's all about the web. All apps are web apps. The entire experience takes place within the browser and there are no conventional desktop applications.

如果要在上面完成专业工作,比如任何图形或者编程方面的事情,那么我恐怕不会选择 Chrome OS。而至于外出时候上网的需求,有 iPhone 就足够了。

Dell Mini 10V 用户可以试试这个 Dell 放出的官方 Chrome OS 镜像

14:51, NOV 27 • Permalink
关于网页上的广告

以前我喜欢访问那些几乎没有广告的网站,因为在视觉上更加清爽。很多设计师和程序高手的个人网站上没有任何广告,这是可以理解的,因为他们并不需要通过自己个人网站上的广告来养家糊口。

但是如果在一个商业网站上看不到任何广告,那么情况就很不正常了。比如 Newspond,一个第一眼看起来十分惊艳的科技新闻聚合网站(类似 Techmeme),但是上面没有任何广告。我实在不明白他们怎么靠目前的这个版本赚钱。在国内也有很多不放任何广告的创业网站。有的时候我宁愿相信这些不想放广告的网站是出于某种口味方面的考虑,但是如果他们希望一直存在下去的话,还是多花一些时间想想怎么样能够让页面上有足够养活他们的广告。说真的,我很喜欢 Engadget 那样的页面。

6:28, NOV 26 • Permalink

创说中的新的 Google Search 界面现在可以通过一行 JavaScript 代码进行激活了:

打开 Google.com,然后在浏览器的地址栏输入这行代码后回车,然后再次打开 Google.com 就可以看到新的搜索界面了。

新界面新增的左边栏和 Mac OS X 的 Finder 很像,可以根据时间对搜索结果进行快速过滤。而根据搜索的关键字的类型,新的搜索界面会在左边提示一些可能的垂直搜索选项,比如当搜索 iPod 时,会提示 Shopping,而搜索 Kate Moss 时,主要提示 Images 和 News,搜索 Java 时,目前则只提示 Books。我第一次见到这样的功能,还是在 Bing.com 上。Google 学得很快。

3:57, NOV 26 • Permalink

在每个 GAE 应用程序创建的时候,关于如何验证用户,如果决定使用 Google Accounts API 的话,除了使用标准的 Google 帐户外,有一个选项让你可以限制只接受来自某个 Google Apps 域的验证:

Our Users API allows you to authenticate users with Google Accounts, or against user accounts of your own Google Apps domain. These two forms of authentication can not be used with the same application.

如果你选择了使用 Google Apps 域验证,然后你很快就发现,你目前将没有办法更改域名。也无法简单地“关掉”这个功能。删除应用然后重建可能会是一个办法,但是你就没有办法重用之前的 App ID。如果你用的是自己的域名,那么可能问题不大。

而且目前 Google Accounts API 很烦人的一个问题就是,有的时候登录过期了,GAE 却并不会将用户自动的转到登录页面,而只是丢出一个 Error 500 页面了事。

我实在是不喜欢这些软件中的需要用户小心的“一次性操作”。希望 Google 能够尽快解决这个问题,提供一个选项更改 GAE App 的验证方式。看来目前已经有 59 位开发者有同感。

3:33, NOV 26 • Permalink
这里是关于什么的?

Project Picky 是 Livid 在 2009 年年末开始的一个新项目。这个项目的目标:

  • 产生一套运行在 Google App Engine 上的好用的开放源代码博客系统,这个系统应该足够稳定,而 GAE 保证了这一点(我再也不用担心主机商的 Linux 安全问题了),之前的几个月我被 WordPress 入侵搞得很心烦。
  • Project Picky 的网址位于 http://picky.olivida.com/,如同你们中一些人已经知道的那样,OLIVIDA 这个名字对我而言极有意义。这是在 2009 年开始并将永远持续下去的一个名字和理想。
  • Project Picky 本身将是一个关于 Mac,PS3 和 Web 的博客。同时也会包括这套 GAE Powered 程序的开发进展。这套博客系统在未来将会以 BSD 协议开放源代码。

目前我不会以任何方式向外界透露 Project Picky 的存在。一切就等着大家去慢慢发现吧。在进行这个项目的过程中,Google 所展露的一切科幻气质让我很激动。

3:08, NOV 26 • Permalink
Introducing Project Picky

这是我的新 blog 系统,开发代号 Project Picky,基于 Google App Engine 技术。在将来的一个恰当时刻,我会把这套系统的源代码以 BSD 协议发布。

至于为什么选择 GAE 而不是 LAMP,因为我实在不想再重复了。虽然目前 GAE 在中国访问不畅,但是所幸部署程序本身还是非常顺利的。

WordPress 是目前 LAMP 界的明星,但是由于服务商的问题,WordPress 目前已经成为了很多恶意程序的侵入目标。或许以后会看到专门针对服务器上的 WordPress 的杀毒软件。而 GAE 程序的安全性就主要取决于开发者自己所做的各种决定了。

17:14, NOV 25 • Permalink