Picky
This page is also available in other languages: 产品介绍 如何安装
Project Picky is a blog tool designed for running on Google App Engine. It's written in Python, and open sourced under GPLv2.

This project uses Mercurial SCM. And here comes a tutorial on how to check out the latest source with Mercurial.
Screenshots

Project Goal
- Easy to share writer's thoughts, focus on writing.
- Employ sexy technologies like Google App Engine, HTML5, Python, JSON and Twitter.
- No unnecessary visual noises on default design.
- No compatibility with IE6.
- Optimize for Chrome, Camino and Firefox.
- Easy to integrate Google services like Analytics, Webmaster Tools, AdSense, Blog Search and Google Code.
- Open source under GPLv2.
Features
- Running on Google App Engine, free plan of GAE is enough for supporting 1M pageviews per month.
- Default look-n-feel design is keeping as minimal as possible. You can hack your own based on default theme.
- Write a blog or page, and you can configure whether show a page in sidebar.
- HTML5 compliance.
- Atom feed output.
- Integrated Twitter client.
- Synchronize new article to specified Twitter account automatically.
- Check who is mentioning your blog in blogosphere or Twitter.
- Alternative feed URL is configurable, easy to integrate FeedBurner.
- Ping Google Blog Search automatically every time you post.
- Write article in plaintext, HTML or Markdown.
- Running on Google App Engine, the industrial standard of cloud platform, means Project Picky is hosting with very secure servers. No need to worry various security exploits in common shared hosting.
Downloads
Installation
- Download the latest released version from Google Code or checkout the latest source with Mercurial.
- Copy auth.py.example to auth.py and configure your secret passphrase, it's the key to Writer backend. Instructions are inside auth.py file. Check it out.
- Change folder name and copy app.yaml.example to app.yaml. Modify the App ID to match yours, and add this folder to Google App Engine Launcher.
- Make some necessary change to local file like logo, templates and CSS. You may like to create your own theme. When you're feeling fine with everything, click the Deploy button.
- Project Picky Writer is where you manage all posts and settings, you can enter it by appending URL /writer to your app domain, e.g. http://picky.example.com/writer . Before you post, you'll need to configure several options like SITE_NAME, SITE_SLOGAN and SITE_AUTHOR in Writer settings.
Know Issues
Most of these issues are not real bugs, mostly are features will be implemented in future versions. but if you do have a different blogging preferences, you may need some time to get used to. Or you can change Picky to the way you like since this is an open source project.
- Project Picky is not tested with IE6 at all, since it's a waste of designer's life. Latest version of Firefox, Camino or Chrome is recommended.
- Content must be written in pure HTML, you need to care line breaks since Picky doesn't do any automatic converts for you. Other formats will be supported if I do receive requests from users.
- Picky cannot save drafts when you're typing, a feature that makes Gmail robust. This feature will be implemented in future version, with HTML5 Database Storage.
- Only Atom feed format is supported. Since all those programming libraries and feed readers can support both Atom and RSS, I think it's enough to support Atom.
- Theme switch will be a feature in v0.2.0.
- Currently only Google Accounts authentication is supported. Other authentication option will be supported if I receive a lot requests.
- Page markup is not valid HTML5, while I aim to make it 100% HTML5. As HTML5 is growing, Picky will be more HTML5.
- There is no direct link to Writer in frontend, you'll need to enter the Writer URL yourself.
- No fulltext search now, if Google App Engine provided the necessary API, I'll have it in Writer ASAP.
About
This is Livid's personal blog on Mac, PS3 and Web.
Livid is my Internet alias since 2000, I'm an independent programmer currently living in Kunming, China with my wife Olivia. Creating on Google App Engine and iPhone OS in name of OLIVIDA (Olivia + Livid).
This site is powered by Project Picky, a personal publishing tool I created for running on Google App Engine.
My: Google Profile | Twitter
Creator of V2EX
这是 Livid 的关于 Mac,PS3 和 Web 的博客。
Livid 是我从 2000 年开始在网上使用的 nickname,我目前居住在中国昆明,和 Olivia 一起以 OLIVIDA 为名创作有趣的事物,比如 iPhone 软件和 Google App Engine 网站应用。关于我们目前在进行中的项目请点下面的链接:
http://picky.olivida.com/projects
你可以通过 Twitter 获得我的一些更新:@livid
我把我关注的各种网站和事物的链接放在自己的网址导航站 OLIVIDA Start 中分享。另外,我最爱的游戏是 Battlefield: Bad Company 2,我为这款游戏开发了一个非常专业的 iPhone 应用:BC2Stats
本站使用我创作的开源软件 Project Picky 搭建,一款运行于 Google App Engine 上的个人发布工具。关于 Project Picky 开源项目的各类更新,可从 @projectpicky 获得。
通过下面这个链接,你可以一次性读完本站的所有文章(推荐在午夜进行):
http://picky.olivida.com/archive
如果你是豆瓣 9 点的用户,欢迎通过下面的链接订阅 Project Picky:
http://9.douban.com/subject/9339246/
Projects
以下是我目前正在进行中的项目。

用于查看
BATTLEFIELD: BAD COMPANY 2 多人游戏状态的 iPhone App。
Web site: http://www.olivida.com/bc2stats
iTunes Preview: http://itunes.apple.com/app/bc2stats/id367328974

用于 iPhone 或 iPod Touch 的五子棋游戏,人类玩家与移动设备的 AI 的对抗。
2.0.0 版本于 2010 年 3 月 29 日在 App Store 上线。关于这个版本的故事可点
这里。
Web site: http://www.olivida.com/gomoku
iTunes Preview: http://itunes.apple.com/app/gomoku/id294454696
V2EX - powered by Project Babel 2 and Google App Engine
Project Picky (v0.1.9)
运行在 Google App Engine 上的个人发布中心,写 Blog,写 Page,写 Twitter,一切为了方便写者共享其所想。使用 Python 和 HTML5 进行中。
Google Code Project Site: http://code.google.com/p/project-picky
Lists
Contact
你可以通过电子邮件联系我。Google App Engine 和 iPhone 是我目前最感兴趣的技术话题。
v2ex.livid at me.com
如果在一个星期内你没有收到我的回复,那么唯一的可能就是我不打算回复了。
你也可以通过 Twitter 和我联系:@livid
Picky 简体中文文档
本页的其他语言: English
Project Picky 是一款为 Google App Engine 云计算平台专门设计的博客程序。使用 Python 语言写成,以 GPLv2 协议开放源代码。

本项目使用 Mercurial 源代码控制系统。
屏幕截图

项目目标
功能列表
- 运行在 Google App Engine 云计算平台上,GAE 的免费方案足够 Picky 支持每月 100 万的 PV。
- 默认外观设计尽可能保持简洁,以便你在此之上发挥自己的创意。
- 写博客条目或者是独立页面,并且你可以配置是否让一个独立页面显示在侧栏。
- HTML5 标准。
- Atom feed 输出。
- 自动将新文章向指定的 Twitter 帐号同步。
- 查看谁在博客圈或是 Twitter 上提到你。
- 支持用纯文本,HTML 或 Markdown 格式撰写文章。
- 运行在 Google App Engine,工业标准的云计算平台上,意味着 Project Picky 的底盘非常安全。不用担心普通共享主机的各种安全问题。
下载
安装
- 从 Google Code 下载最新版本,或是用 Mercurial 获取最新的源代码。
- 修改文件夹名称及 app.yaml 以符合你所创建的 App ID,然后将其导入到 Google App Engine Launcher。
- 对一些本地文件,如 logo,模板和 CSS 做一些必要的修改,然后点击 Deploy 按钮。
- Project Picky Writer 是管理一切内容及设置的后台,你可以通过在域名后面附加 /writer/overview 进入。在你开始发帖之前,你需要在 Writer 中配置一些参数。
Quotes
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.
彭浩翔:
当我们相信自己对这个世界相对重要的时候,其实这个世界才刚准备原谅我们的幼稚。
史记:
顺,不妄喜;逆,不惶馁;安,不奢逸;危,不惊惧;胸有惊雷而面如平湖者,可拜上将军。
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 基础验证。

HTTP 基础验证存在一些安全问题,比如用户名和密码其实是用 BASE64 加密之后传输,这样的话这些敏感信息很容易在中途被截获。但是如果使用的是 HTTP 基础验证的升级版 HTTP 摘要验证,并配合上 SSL 的话,安全性就会大大提高。如果觉得大部分摘要验证实现中的 MD5 算法不够安全,服务器端也可以指定要求客户端使用 SHA256 或者是其他更安全的摘要算法。
在我看来,我对一个 API 源的期望值包括:
- 同时支持 HTTP 基础验证和 OAuth,并且 SSL 可选。
- 对于读取操作,不要设每小时限制(这也是 Twitter API 中目前最讨厌的)。
- 如果还能提供一组像 Google App Engine 那样的漂亮详尽的性能图表就更好了。

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

做你所爱的
做你所爱的,则每一天都可以让自己在充满幸福的疲惫感中睡去,然后在醒来时,充满能量巴不得立刻能够投入到昨天未完成的事项中。然后,自己会持续地优化这个过程,去除一切不负责任的幻想,去除一切繁琐而不必要的细节,去除所有让人头疼的各种方向的敷衍,一切在这个过程中提纯,而自己也将收获越来越多的快乐和满足。
更加安全稳定地部署 Google App Engine 应用
如果你在国内的普通网络上部署 Google App Engine 时遇到了各种奇怪问题,那么你可以试试为 appcfg.py 套上一层 SOCKS 代理。具体做法如下(以 Mac OS X 上的 Google App Engine Launcher 的安装位置为例):
- 下载 SocksiPy,提取出其中的 socks.py,放入 /usr/local/google_appengine。
- 在 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。详细的我就不在这里展开了,你可以在网上搜索到很多这类文章。
iPhone Game Engines
什么是云计算?
云计算不是一个小概念,你可以从很多个角度去理解它。如果你是从企业使用的角度,那么云计算作为一种全新的 IT 架构,它可以带来:
- 无限的计算能力
- 无限的存储能力
- 无限的传输能力
- 接近 100% 的 uptime
- 按照实际使用量进行收费
从以上的每一点,你可以用自己以前的 IT 架构与之对比,就可以感觉到不同。
而对于最终用户而言,云计算意味着:
- 无限的存储能力:比如,如果照片都存在云里,那么就不用担心手机上存储空间不够。你可以通过手机访问你个人云存储中的几千甚至几万张照片。
- 可靠的,易于访问的数据存储:因为所有的数据都存储在一个可靠的云计算数据中心,因此,比如不小心丢失了手机,那么也不用感觉困扰,因为手机中的所有的联系人,依然可以从云中同步下来存储到新的手机上。并且,甚至可以通过云,将原来手机中的数据锁定并清除。
- 更低廉的使用费用:因为数据都存储在云中,因此用于访问的设备并不需要特别巨大的存储和计算能力,会更省钱。
目前针对企业应用,已经有了一些很成熟的云方案,尤其是存储类方案,如 Amazon S3,Rackspace CloudFiles 和 Google Storage for Developers。不过存储类方案各家都做得大同小异,主要的比拼点是品牌,规模和价格。而更有趣的,是计算类的解决方案。
IaaS and PaaS
计算类的解决方案目前主要有种:
- IaaS - Infrastructure as a Service:这种方案的核心是服务器虚拟化及高度自动化的管理,通过部署大规模的虚拟化宿主,配合集群式的高性能存储,可以非常方便地在瞬间根据用户需要提供无限量的 virtual server(虚拟服务器),用户拥有这些服务器的全部权限(比如 *nix 的 root 权限),可以在上面运行任何自己的应用。但是 IaaS 依然需要用户去自己解决架构上的一些问题,比如安全,比如数据库服务器的数据复制,及应用服务器的容错处理等等。因为可以瞬间提供新的 virtual server,所以理论上来说,如果应用架构本身有成熟的 scale out 设计,那么 IaaS 也就提供了无限的计算能力。
这类方案的典型例子就是 Rackspace Cloud,Joyent SmartMachines 和 Amazon EC2。
- PaaS - Platform as a Service:这是最创新的方案,技术上比 IaaS 更加先进。你可以把 PaaS 方案理解成一台具有无限计算,存储和传输能力的 application server,你会需要使用新的编程技术来实现应用,但是这样将使得你的代码可以同时运行在平台的数千甚至数万台服务器上。你的应用从上线第一天起,就为每天上亿的访问量做好了准备。当流量不断增长时,不需要担心架构升级带来的可能的 downtime,至于更基础的如安全和存储冗余等问题,就更是无需担心。目前这类平台里最成熟的实现就是 Google App Engine,而 Joyent SmartPlatform 现在也进入了 beta 期,同时由 NASA 和 Rackspace 在合作进行中的 OpenStack 项目也非常有潜力。
关于未来
我相信 PaaS 会是未来的主流,因为它可以为用户节约很多的时间和麻烦。当 PaaS 在未来更加成熟的时候,那时用户可以将更多时间用于思考如何快速实现业务逻辑,而不是纠结于技术细节。
而作为云平台上的开发者,我看到的机会就是,目前各种 PaaS 平台上都非常缺乏真正可用的应用。
大公司对于 PaaS 的投入,就好像在搭建一个大型的购物商城,但是最终决定这个商城业绩的,不是这个商城的基础设施完善程度(当然这很重要),而在于其中的商家。而商家中最有价值的,就是那类连锁的大品牌。
Next Big Things
这只是一些个人的乐观估计。而我自己会依据这些估计去做接下来的事情。写在这里只是为了分享。
- 在未来的几年,Twitter 会成为世界上第一个拥有超过 10 亿(1 billion)注册用户的服务。而活跃用户的数量会超过世界上任何一个国家的手机用户。而发达国家的所有年轻手机用户届时也都会是 Twitter 的用户,日本,美国,欧洲。
- 在未来的几年,全世界各国的 3G 网络上将会有超过 1 亿台 iPhone 接入。在发达国家,这些用户的 ARPU 在 60 美元以上,而在中国,这些用户的 ARPU 会在 200 元人民币以上。
- 在未来几年,Google App Engine 会成为世界上最好的 Web 应用开发和技术托管解决方案。全世界将会有超过 100 万使用 Python 或 Java 语言的开发者。而最终用户的规模将会超过 Twitter 的用户规模。
这是我能够想到的在未来非常酷的三件事情,而这三件事情也将成就无数的个人和公司开发者。是的,或许个人无法完成像 Modern Warfare 2 或者 AVATAR 这样的巨作,但是个人完全可以做出完美的 Twitter 客户端,或是完美的运行在 Google App Engine 上的 Twitter 图片分享社区。而这些作品将会有至少 1 亿的潜在用户。
这是足够多的机会和挑战。因此,完全可以忽略目前国内的种种不快,将自己接下来几年的注意力,放到全世界范围内那些真正有意思有钱赚的事情上。
UPDATE: 这个系列文章的下一篇 Next Big Skills
如何安装 Project Picky
本文章根据目前最新的开发进度,向你介绍如何在 Google App Engine 上安装 Project Picky 个人发布中心。步骤如下:
- 如果你还没有开通 Google App Engine,请先开通帐号。
- 在 Google App Engine 后台创建 App 并记下 ID。
- 在 Project Picky 产品页面下载最新版本。Unix 下可用 tar jxvf 解开压缩包,Windows 下可用 WinRAR。
- 在解开的文件夹中,将 app.yaml.example 复制为 app.yaml,修改其中的 App ID,改成你自己的。将 auth.py.example 复制为 auth.py,修改其中的 SECRET 的值。这是 v0.1.9 开始的新版本中的简单认证系统的密码。该值是密码的 SHA1 值。在 auth.py 内有简单的如何通过 Python 获取密码 SHA1 值的说明。
- 将这个文件夹改名以匹配你的 App ID,然后将此文件夹加入 Google App Engine Launcher 中,点击 Deploy 即可部署完毕。
- 用 http://yourappid.appspot.com/ 即可你的新站点,后台地址在 http://yourappid.appspot.com/writer,密码就是你在 auth.py 中配置的那个。
运行 Google App Engine Launcher 需要 Python,Windows 用户可以从 ActiveState 下载 ActivePython 运行环境。
如果遇到问题,可以通过 Twitter 找我 @livid 问。
20101112
最近完成了两件事情。
从 2007 年初见到 OpenDNS 那刻起,我就一直对这个东西非常着迷。互联网上有很多的协议,最普遍的协议是 HTTP,于是针对这个协议的各种开发框架和应用也就非常多。但是 HTTP 不是唯一的协议,还有其他很多好玩的协议,比如 IMAP,比如 DNS。所以我一直在想,能不能在 DNS 协议上做一些什么。
于是就有了 V2EX DNS,在 2010 年 11 月 10 日早上上线。这是一个面向公众的 DNS 解析服务,除了高速解决最普遍的解析问题之外,V2EX DNS 还提供了:
- 对一些顶级域名常见的拼写错误进行纠错,比如输入 google.cmo 会自动跳到 google.com。
- 有的网站由于各种原因,没有配置 @ 解析,那么当用户使用裸域访问时,就会出错。典型的例子如 gov.cn 和 weibo.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 发布,大家可以从下面这个地址下载:

PB2 是一个开源社区软件,运行在 Google App Engine 上。V2EX 社区即是使用此程序搭建。
以上,是两件我坚信有价值的事情。坚持下去,一定会发生更有趣的事。
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 上,如果你还没有看过的话,点这里。
关于钱
这是来自 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."
我觉得 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 在产品功能和外观设计方面的功力和品味。
关于最近 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 万个色情垃圾”。
关于刚部署完的 Picky
如果你是第一次在 App Engine 上部署 Project Picky,然后用浏览器打开时,很可能会看到一个出错提示。这是正常的,因为这个时候 Google 的服务器还没有为这个新应用建立索引。稍微等 15 分钟到一个小时再上去看就好了。