Monthly Archives: June 2010

Python的logging模块

初次使用logging模块觉得有点诡异,涉及到Logger、Handler、Level等概念,看代码最实际了: import logging import sys logger = logging.getLogger(“endlesscode”) formatter = logging.Formatter(‘%(name)-12s %(asctime)s %(levelname)-8s %(message)s’, ‘%a, %d %b %Y %H:%M:%S’,) file_handler = logging.FileHandler(“test.log”) file_handler.setFormatter(formatter) stream_handler = logging.StreamHandler(sys.stderr) logger.addHandler(file_handler) logger.addHandler(stream_handler) #logger.setLevel(logging.ERROR) logger.error(“fuckgfw”) logger.removeHandler(stream_handler) logger.error(“fuckgov”) 文档上已经说明得很清楚了,有几个比较特别的地方:

Posted in Python | Leave a comment

静态链接

链接有哪些过程? 假如有2个源文件如下,这两个源文件生成的目标文件链接成可执行文件后,涉及到空间和地址的分配、符号解析和重地位等等过程。 /* a.c */ extern int shared; int main() { int a = 100; swap( &a, &shared); } /* b.c */ int shared = 1; void swap( int* a, int* b) { *a ^= *b ^= *a ^= *b; … Continue reading

Posted in Operating System | Leave a comment

JavaScript散记

跨浏览器通信 建立跨浏览器通信有两个前提条件 两个窗口都包含来自同一个域的页面; 其中一个窗口包含对另一个窗口的引用。 第一个条件是JavaScript同源策略的结果,保护用户的隐私,第二个条件是为了使一个窗口知道另一个窗口的存在。实现通信主要是涉及到window对象的name和opener属性,以及open()方法。 window.name属性的作用是为HTML链接的target属性作引导的,同时它也可以引导弹出窗口。它的默认值为空,但可以设置的。 window.name = “endlesscode”; 点击带有此target的链接,比如<a href=”somepage.html” target=”endlesscode”>,该链接就会在window.name为”endlesscode”的窗口打开。另外,也可以在window.open()方法中使用name,例如: window.open(“somepage.html”, “endlesscode”, [arguments]); 这样浏览器就会查找名字叫做”endlesscode”的窗口。如果它找到一个,somepage.html就会在这个窗口打开。如果没有找到,就找开一个新窗口,并将name命名为”endlesscode”。其实像wp的预览、优酷的视频观看页面以及卓越的书目录页面都是使用这种方式在同一个页面打开的。 window.opener属性是弹出窗口指回主窗口的引用,如果新页面被载入到弹出窗口中(如果用户点击了一个链接),opener属性仍旧可用。如果新页面是载入到主窗口中,则可以通过在弹出窗口中 opener.ST_newWindow = window; 来在主窗口中保存弹出窗口的引用。

Posted in JavaScript | Leave a comment

zz 说说CSS Hack 和向后兼容

人一旦习惯了某些东西就很难去改,以及各种各样的原因,新的浏览器越来越多,而老的总淘汰不了。增长总是快于消亡导致了浏览器兼容是成了谈不完的话题。说到浏览器兼容,CSS HACK自然而然地被我们想起。今天,我们通常都有一个团队或者将有一个团队的人在一个公司里面做相同的事,需要我们有统一的规范来进行Coding,以方便维护。而解决兼容的方法就是(必须是,因为这才最容易有问题的)其中一个最重要的、要解决的规范之一。 在解决兼容方法上,想定出一个统一的规范,个人认为应该以下面3点为基本原则: 权衡成本:在浏览器被淘汰后,如何快速清理掉无用代码 可维护:在资源成本和完美间平衡的向后兼容 可读:省力、易记 这里把成本放在了第一位,并不是说我们不愿意追求完美,而只是,太刻意追求完美有时候可能会阻碍我们前进;在成本后,应该是可维护和可读,这点对于团队的合作来说至关重要,而最终结果也是为了减少成本。 先把这三个原则存起来,来看看我们平时解决兼容的写法(后面会附详细的Hack方法列表):

Posted in Web | 2 Comments