2011年3月27日星期日

骑车去香山

昨天骑车去香山了,今年第一次骑车。

本来计划上午去的,但是早上看北京的空气质量是Very Unhealthy,就宅着了。中午在QQ上帆帆说他在香山,我就说我骑车去找你们吧。赶紧吃中午饭收拾收拾就去了。

该有一年多没有骑车了,所以就没打算骑太高,只是适应性恢复。上到半山腰从金山陵园那里下去了。2009年5月1日第一次上香山也走的这条道。好久不骑,平衡都不行了,下山的时候不敢快速下。北京山上的路修得太好了,我都没有骑过小路,都是防火道,下次一定要试试野路。

然后在植物园门口和帆帆他们会合,吃了顿农家饭,三个人才72块。好久没见,聊了很多。回来的时候从香泉环岛走五环,竟然没有辅路,直接进到封闭路了。路上车不多,所以开得都很快,我在应急车道上拼命骑,尽早得骑到杏石口桥出去了。

点击此处获得KMZ文件。可以直接复制KMZ文件的链接在Google Maps里面查看。不过中国把Google Maps里面的坐标进行了偏移,还是用Google Earth查看靠谱。

2011年3月13日星期日

亚马逊的账单

春节的一天,我邮箱里面收到Amazon Web Service的账单0.60美元。我这个是免费的,上面没什么内容,所以不会超标的,怎么会有收费呢?其中0.59是没有使用的Elastic IP费用,只需将这个IP和镜像挂钩(Attach)就可以了。还有0.01是:
$0.010 per GB - regional data transfer - in/out/between EC2 Avail Zones or when using public/elastic IP addresses or ELB
我不理解这个是什么意思, 在EC2的详细说明里面是这么解释的:
Public and Elastic IP and Elastic Load Balancing Data Transfer

$0.01 per GB in/out – If you choose to communicate using your Public or Elastic IP address or Elastic Load Balancer inside of the Amazon EC2 network, you’ll pay Regional Data Transfer rates even if the instances are in the same Availability Zone. For data transfer within the same Availability Zone, you can easily avoid this charge (and get better network performance) by using your private IP whenever possible.
我当时没看明白,也想不到我什么样的流量属于这一类型。刚才在检查自己一个域名,这个域名的一个A记录就是我在EC2上的因特网IP。我是SSH到EC2上,然后在里面w3m mydoma.in的,这样不就正好符合上面说在EC2网络里面用公用IP访问EC2吗?还有通过EC2上的VPN访问其它EC2上的内容,像Twitter这样使用AWS的网站上放在AWS上的那部分,也属于此类流量。终于明白这条收费的含义和来源了。

话说我看到二月的账单上只有这一类费用,只有0.01美元,在3月1日的收费时候免单了,上面写:
Total Charges due on March 1, 2011 $0.01
Amount forgiven March 6, 2011 -0.01
可能单子太小就免了。我搜索了到一个帖子,一个用户看到有免单,希望亚马逊能够把小额单子累计起来再收费,"以免用户感到内疚":
It's not like I really mind not being billed :), but still I feel a bit guilty about that.

I think a right solution for small transaction would be to round up an amount and charge in advance -- say, $1 or $5 or $10, whatever makese sense... This was Amazon can avoid doing these small transactions and users won't feel guilty :)
这人境界真是高啊。我想的是怎么少交钱,他想的是怎么多交钱。:)

2011年3月12日星期六

开源但不开放

也许不为很多人所知,以封闭的生态系统著称的苹果公司,其操作系统的一大部分是开源的。开源的部分叫Darwin,基本包含了Mac OS X和iOS图形用户界面之外的部分。

我碰到所谓开源软件,都喜欢找找官方是否提供源代码下载。一开始我以为内核叫Darwin,在苹果开源页面的项目里面怎么也找不到Darwin字眼的软件,还以为没有完全提供呢。后来才发现内核叫XNU,也是以这个名字提供源码的。opensource.apple.com是按发行版本的方式提供源码浏览的,opensource.apple.com/source是按软件包的方式提供源码浏览的。

找到苹果公司源码下载的地方,花了我不少时间,不像正常的自由/开源软件必然有下载链接,点开后必然有源代码的打包下载。苹果源码的提供方式就是文件浏览,没有对软件包进行任何的打包,这会让想下载源码的人非常麻烦,所以GNU-Darwin这样的项目才对苹果提供的源码进行了打包发放(aspl和other目录)。我特意把苹果提供的软件包列表和GNU-Darwin提供的源码列表用Vimdiff进行了严格的比较,基本是一致的。

Darwin虽然是开源的,但是源码提供的方式却很简单。对自由/开源软件,一般想当然的获得源代码的方式就是通过其版本控制系统check out出源码来,苹果的Darwin显然不提供这个手段。实际上,1年99美元的苹果开发者项目也不提供开发者对系统VCS的访问。GNU-Darwin这样的开放项目是提供CVS访问的。尽管如此,苹果做的这些并没有违背其开源许可。实际上Apple Public Source License是经过Open Source Initiative和Free Software Foundation认证的协议。

所以,苹果的软件是开源的,但是开发模式是不开放的。我这里不是作为一个Linux饭来黑苹果。Redhat这个Linux的界的元老公司,其开源和开发模式和苹果的非常相似。前几天下载Redhat Enterprise Linux 6.0,找它的源代码下载就找了半天,和苹果一样,主页上根本没有源码的下载链接。我是通过Google才找到它的源码下载地址。红帽至少还提供了SRPM打包。这也让CentOS这样的派生版本方便生存。

不过前几天刚刚有新闻,红帽改变了他们发布内核源代码的方式。以前是把内核和补丁分别提供下载,以后是把内核打了补丁后再提供下载。据说这样做是故意的,为了让Orcale的Unbreakable Linux山寨起来更麻烦:
One of the key points behind the RPM and Debian package formats is that source is shipped in its upstream form, with patches shipped separately and applied at build time. Red Hat has always followed this convention; the failure to do so with the RHEL 6 kernel is a new and discouraging change of behavior. Distribution in this form should satisfy the GPL, but it makes life hard for anybody else wanting to see what has been done with this kernel. Hopefully it is simply a mistake which will be corrected soon.
除了上面说的Mac OS X和GNU-Darwin、RHEL和CentOS这样成对的不开放和开放的模式,还有SUSE Linux Enterprise和OpenSUSE(找了一个大概是SUSE的源代码下载地址)、Solaris和OpenSolaris等。如果是像RMS那样的自由软件忠诚拥护者,自然会选择更加开放的开源开发模式。