Recently in Development Category
我这次不铁口直断了,估计明年见了,如果这周能够RC2的话,最终RELEASE估计要到明年的1月5日左右。
这次FreeBSD 7.1在软件工程角度是相当失败的案例,我想我们应该从里面总结一些教训出来。
首先,我们的目标是什么?
我想,用户对于一个发行版本的期待是:一个经过了大量测试的、阶段性的稳定版本。而开发人员对于发行版本的期待则是尽可能地将可用的功能交付给用户。作为OS,我认为这应该包括自动化的回归测试、性能改进、更新的驱动程序、文档的修订,以及更新的第三方软件等等。
FreeBSD目前的开发模式,是将分别开发的三大模块,即内核与基本系统(src/)、文档(doc/)、第三方软件(ports/)的人在一定的时候聚集在一起,通过代码冻结的方法来使他们从增加新功能转移到集中去修bug,最后发布一个版本。这个模式在过去运转的相当好,以至于我们没有发现其中存在的问题。
这次FreeBSD 7.1暴露出来了这个模式存在的很多问题。例如,由于安全小组发现了很多安全漏洞,而另一方面,安全小组的人手不够,限制了修正这些问题的速度。我本人撰写的一个安全公告等了一个月才在今天最终公之于众,而另一方面,安全小组对于发行版本拥有一票否决的绝对权力,导致6.4和7.1的发布都一再推迟。
而作为非常快节奏的开发的 ports/ 维护者,则对不断的推迟感到相当不满。FreeBSD目前只维护 ports/ 的 -HEAD,也就是说,在正式发行 -RELEASE 之前,ports/ 不能进行大量的、破坏性的修改。例如,我本人维护的 OpenLDAP 现在就必须等待 -RELEASE 之后才可以进行升级。不断地推迟新的发行版本,会导致 ports/ 的开发继续延迟。
MeetBSD 2008聚会将于11月15-16日在Mountain View的Google Campus举行。本次活动同时是为了庆祝FreeBSD成立15周年,活动报名费为$50。
访问听下包发现:
两个(组)前端:fronta和frontb,跑 Linux + Squid。图片(img)、动态页面采用同一组cache,后端使用apache 2.2.6,php 5.2.4。所有图片、静态js均假定用户不刷(i.e. 设置一个较长的过期时间)来减轻负载。
后端有多少台机器在跑Apache?个人猜测是2台,但session信息似乎是存在本机,并可以在内网相互传递。个人猜测他们今后将放弃这个结构。
每隔一段时间便刷新newmsg.php来获得存在多少更新数据。当存在更新数据时,客户端并不了解新增的是什么数据,而是简单地向用户告知这些数据的存在。为了减少查询次数,我认为这会是一个不上锁的结构,而点击对应的页面时,页面干的第一件事便是对其对应的字段做清零操作。
所以我猜测目前他们的服务器数量在3-6台之间,比较有可能是3-4台,不知道是不是正确。总体上说还是不错的,不过一些小细节上仍然可以挖掘一下。
因为要查一款主板的规格,访问了湾区一家市值132.72B(今日收盘)的网站。
搜索,点进去,哗的一声,窗口变了形状和尺寸。
最大化。
规格说明是一组文件,点下载,哗的一声,窗口再次变成了刚才的尺寸形状。
最大化。
再点进去,哗......
我立刻有了冲到那家公司门口递抗议书的冲动。喂,你并不知道我是否用的标签页浏览,窗口是否最大化,分辨率尺寸,而且你也不是只显示一张图片,犯得着改我的浏览器窗口尺寸吗?
好久没做编码方面的东西了,今天在 火星 上看到一个挑战,一时兴起就做了一下。原题请看 这里。
既然是挑战,我目前的算法对于每个数来说都是常数时间,欢迎大家继续拍砖,我的代码2天后公布(我用的是C语言,大家自便)。
今天 康神 发现一个浮点数的问题,一个 class 里面有两个浮点(double) 成员 x、y,然后用 return (self.x, self.y).__str__() 返回时,发现输出是 (39.210279999999997, 116.34528) 而不是希望的 (116.345280, 39.210280)。
查了一下,改成 return "(%f, %f)" % (self.x, self.y) 解决。C里面printf的 %f 默认显示小数点后面6位,但是 __str__ 似乎自己对于浮点数精度有些想法?没看 Python 具体的实现。
今天才知道在 FreeBSD 邮件列表里面的那个 Oliver Fromme 就是 HD-COPY 的那个家伙,预计他将会 takeover FreeBSD 的 loader 部分。HD-COPY是DOS时代我非常喜欢的工具之一。
有人说,中国大陆网站的流量有 80% 是不带来价值的垃圾流量,我个人的感觉是,也许没有多到这么离谱,但是,我认为至少在一半以上。你会看到很多人如此地关注 Alexa 排名,会想出各种各样的方法来骗取 eCPM,但是很少有人关注一些其他的东西----和投资一样,有战略眼光的投资者,恐怕都被饿死了吧。
由于流量和PV是如此的重要,以至于我们看到了一个非常有意思的现象----人们开始使用一些复杂而且昂贵的方法去防止"盗链"----一方面,网站们自己在想方设法地提供一些也许很黄,很暴力的图片,因为这是网络暴民们的兴趣所在,而另一方面,提供这些图片的成本又很高,服务器带宽、IDC带宽、后端存储等等。
事实上,由于 Web 最初的设计,信息,当然也包括图片,原本就是拿来给别人看的。你提供了服务,别人把东西放到了你这里,然后当他们贴到其他网站上的时候,其他人看到的却是"本图片仅供 XX 网站网友交流"的一个默认图片----并没有太多的人敢于冒天下之大不韪去提供那样的服务,除非他们有肥的流油的带宽,因为归根结蒂这些东西最终还是要折算成成本的。
然而,我想,所有这些追求短期回报的做法,最终还是会被一些有能力(注意,有能力的含义是,首先这家公司需要能活到赚钱的那一天)的、新的互联网企业以某种更聪明的做法取代。降低成本有很多种方法,无疑,许多互联网企业采用的反盗链软件,绝对不是,也不可能是其中最便宜、最有效的办法。寻找更好的技术去面对明天的挑战,而不是简单地满足于应付今天的差使,一定会成为面对信一轮经济衰退的过程中被那些希望活下去的公司所追求的目标。
An elegant tool for analysis of your website regarding its appearance slowness. Why is it slow?
What you need are:
- Firefox browser;
- The "Firebug" plugin'
- "YSlow" plugin from Yahoo.
前几天有人问 FreeBSD 的 top(1) 如何能够显示不同 CPU 的占用情况。这是 patch 过之后的输出:
last pid: 1773; load averages: 0.43, 0.19, 0.16 up 0+00:34:35 16:17:04 97 processes: 1 running, 96 sleeping CPU 0: 20.8% user, 0.0% nice, 0.0% system, 0.0% interrupt, 79.2% idle CPU 1: 3.1% user, 0.0% nice, 0.0% system, 0.0% interrupt, 96.9% idle Mem: 517M Active, 21M Inact, 577M Wired, 11M Cache, 48K Buf, 810M Free Swap: 2048M Total, 2048M FreePID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
1236 delphij 1 104 0 232M 143M select 1 4:37 37.06% Xorg
1768 delphij 1 8 0 164M 52704K nanslp 1 0:07 36.28% kicker
1771 delphij 1 8 0 6212K 1664K wait 0 0:00 3.17% sh
1772 delphij 1 45 0 8020K 1656K select 1 0:00 2.39% ksysguardd
1756 delphij 1 20 0 10648K 3596K pause 1 0:00 1.17% csh
1754 delphij 1 4 0 11764K 1588K sbwait 1 0:00 0.78% gnome-pty-helper
1751 delphij 2 -8 0 136M 25756K piperd 0 0:00 0.68% gnome-terminal
FreeBSD 8 中已经包含了这个功能。
Kai Wang has announced today the BSD ar(1) is available for wider testing. This is amazing work, the creation and list speed are 5-20 times faster than GNU ar(1), and extraction speed is also slightly better than GNU ar(1).
It is also important to note that this version is completely BSD-licensed (yes, that means that you are free from the lair's license), and is a piece of the vital parts of the FreeBSD DTrace work.
