Archive for the ‘Coding’ Category

CSS 2.1的隐藏技能:多背景,多边框,等高容器

Tuesday, June 15th, 2010

相比CSS3的新特性,CSS 2.1标准下的pseudo(伪类选择器)已经通用于所有主要浏览器的稳定版本(FF 3.5,Safari 4,Chrome 4,Opera 10以及IE8),这样一来我们就可以三次装饰同一个容器而不用建div巢了。Nicolas Gallagher最近写了一篇文章,看完两个DEMO(1,2)之后我清楚认识到自己没掌握CSS 2.1的事实。

为什么IE的盒子模型是错的

Sunday, June 13th, 2010

ppk曾经说IE的传统盒子模型比W3C的定义好理解,但为什么IE的盒子还是比W3C的糟糕呢?因为IE盒子的定义连IE盒子的支持者自己都搞不清楚。与文中所述相反,IE盒子并不包括margin,而只是纯粹的计算padding与border的占位。为什么IE传统盒子这么烦?因为需要反向推导一个盒子的内容宽度,而浏览器渲染时期望尽快知道内容的宽度。再有,IE传统盒子硬是把微软自己的开发团队都搞晕了,有些bug还穿越出现在标准模式下,哦,你不知道IE6的标准模式使用W3C的盒子定义

支持IE传统盒子的同学,没有为IE5.x开发过的同学,请你考虑这个问题:如今CSS3支持图片border了,使用IE盒子模式,浏览器应该怎么计算内容宽度?CSS3是为设计者方便提供帮助,请不要以box-sizing为借口,为IE5.x的顽固不化辩护。

延伸阅读:

Google Storage for Developers Preview 初评

Wednesday, June 9th, 2010

Google I/O大会宣布Google Storage之后用萌番为借口申请了Preview,没想到上周末就收到邀请,获得100GB空间与300GB月流量;昨晚有空就花了点时间测试,以下是初步印象。

这里先特别强调——不要留言找邀请,没有好友邀请系统,你需要自行申请;以我的个人经验,最好有个人网站作为审核参考

Google Storage工具

Google Storage for Developers(以下简称GS)提供了三种空间管理方式,包括网页界面Google Storage manager,基于Python的命令行工具GSUtil以及它基于的云储存界面Boto(原来是AWS专用)。

Google Storage Manager

GS网页界面仍相当简陋,基本上只有新建Bucket(名称唯一的储存库),批量上传,批量删除与管理访问权限等基本功能。比较有趣的一个创意是保存经常访问的存储库与文件夹,类似于便捷书签一样的东西。

使用感想:网页界面清晰,但可用性一般,主要是对用户操作的提示不足。也许一眼看过去并没什么特别复杂的功能,但在按批量删除时不显示进度(GS更新文件列表的速度较慢),在按刷新时不显示读取提示,都是引起操作错误的陷阱。

GSUtil

应该说是这次Preview的重头戏,尤其是对没有boto使用经验的人来说。GSUtil在安装了Python的Linux与Mac OS上能直接运行,也可以通过Cygwin在微软的平台上正常运作。我测试使用的平台是Ubuntu,按照提示下载解压配置即可,然后就可以开始访问GS了。

GSUtil的官方版本提供了一个快捷但是有局限性的访问,例如cp与mv命令暂时还局限在本地与云之间,而无法在云端直接复制。GSUtil还附带一些超烦的bug,例如这位兄弟报告的Content-Type问题——使用GSUtil会让服务器默认保存文件为application/octet-stream,导致浏览器不愿打开图片链接,而是默认下载保存(使用Manager上传则不会有这个问题)。

Boto

我是Python新手,不好说Boto的使用方便程度怎么样,但从Google提供的例子看,撰写简单.py上传/管理程序还是相当轻松的——唯一的问题是,你需要学会如何配置boto使用GS,而Google官方在这方面还没有相应文档。

我使用的配置方式是(GSUtil已正常配置)——

通过SVN下载并按照boto默认方式配置,但同时把GSUtil文件夹内的GS专用boto配置加入export内容。

$ export PYTHONPATH=$PYTHONPATH:/home/yourpathto/boto

改成

$ export PYTHONPATH=$PYTHONPATH:/home/yourpathto/boto:/home/yourpathto/gsutil/boto

然后就能正常运行官方的.py例子了。

其他访问方式

总结而言,最平易近人和蔼可亲的还是GS的参考文档,基本上只要你懂一种服务器语言就可以通过API访问,自己动手丰衣足食。

Google Storage速度

云储存或CDN,说到底国人最在意的还是速度,这里我的测试结果是——

本地上传(网页界面),0.04MB/s,通过电信12Mb/s专线(注意单位)。

服务器上传(GSUtil),2.27MB/s,通过Linode VPS。

网页界面上传还会容易中断(好还会自动重新开始)。

至于下载速度,我觉得还是让各位自己体验比较好(可以使用我们之前推荐的测试服务)。GS同时支持HTTP与HTTPS的高速访问是一个亮点,Ping延迟也在120ms以下,估计GS的routing考虑到Google Public DNS的影响了吧?

Google Storage价格

GS的价格Amazon的S3价格相若,以免费测试的空间与流量上限计算,GS需要60多美元一个月,S3价格计算器得出的结果也非常接近60美元。

Google Storage Demo

没有测试,初评怎么能算完整?这里是我写的GS上传测试工具。本地切割图片,再上传至GS云,欢迎旅客试用(赶在服务器压力过大之前)。

小结

发布Google Storage是Google补充云服务的重要一步——它有潜力与App Engine无间配合。就目前的测试体验而言,GS的技术支持距离起步较早的S3还有一段距离,但我有理由期待它在开发者的调教下成长为优秀的商业应用。

Aves Engine

Monday, April 26th, 2010

我们距离“该网页游戏所需的CPU最低配置”不远了。我预测IE9的GPU加速或许能让微软风光一把(其他浏览器不会落后太久)。这个JS游戏引擎的作者Paul Bakaus是jQuery UI的开发者,他称引擎会支持IE较早版本,并且可以在iPhone与网本上流畅运行

youtube via hacker news

Aves Engine

Monday, April 26th, 2010

我们距离“该网页游戏所需的CPU最低配置”不远了。我预测IE9的GPU加速或许能让微软风光一把(其他浏览器不会落后太久)。这个JS游戏引擎的作者Paul Bakaus是jQuery UI的开发者,他称引擎会支持IE较早版本,并且可以在iPhone与网本上流畅运行

youtube via hacker news