2010年6月22日星期二

Things I learned from python-list recently

1. 有了list comprehension还要map函数干什么?需要么?不需要么?

map函数只在一种情况下比list comprehension有优势,那就是它可以被当做一个参数被传递给其他函数。当然,一般来说大家也很少这么干……


2. ord() 只能产生无符号整数(unsigned char, 0-255),如果你在一个字节一个字节的读取流,那么把这每个自己转换成有符号整数的方法有很多:

(a) 用标准库里的 array 模块
(b) 用标准库里的 struct 模块
(c) 用 bytearray 数据类型
(d) signed = unsigned if unsigned <= 127 else unsigned - 256
     signed = (unsigned & 127) - (unsigned & 128)
     signed = (unsigned & 127) * 2 - unsigned
     signed - unsigned - 2 * (unsigned & 128)


3. evaluate 1^2+2^2+3^2-4^2-5^2+6^2+7^2+8^2-9^2-10^2+...-2010^2, where each three consecutive + must be followed by two - (^ meaning ** in this context)

>>> sum((1, 1, 1, -1, -1)[(x-1) % 5] * x**2 for x in xrange(1, 2011))


4. 应该小心的将反斜杠(\)作为行延续符(line continuation)使用。虽然我在pep8中和其他关于pythonic的文档中都看到了这一点,但我在维护现有代码的时候并没法更多的实践这一点,因为这些代码的作者甚至不知道pep8的存在,更不用说什么将每行长度限制在80个字符以内的狗屁龟腚了。

5. 函数也是可以被pickle的,但是不能被marshal

2010年6月5日星期六

让url适应浏览器

今天看到一篇有趣的文章:http://benlast.livejournal.com/29164.html

起因是Firefox缓存哈希算法的一个bug,会使资源不能够充分的缓存。Google意识到了这一点,并且对自己的url做了一些相应的变化,以避开Firefox的这个bug,使更多的网站图片的到缓存,改善用户体验。

一般来说我们优化网站的思路都是从网站本身去找原因,缓存、js、静态页面等等,这是我第一次意识到不仅浏览器应该适应网站,网站也可以主动去适应浏览器。

当然,也只有像Firefox这样开源的项目才可以让你去适应,IE的bug你可能知道么?

当然,也只能敬佩Google中的强人能想到这个主意,哪个公司的工程师能在维护这样一个网站的同时还熟悉浏览器的各种缺陷?