4Jun/100
URL映射
url映射是目前流行的框架都提供的基本功能,参考了django的url映射的源码,用python实现url映射的主要逻辑还是比较简单的。主要是由两个部分组成:
- 将处理函数的命名空间解析成模块,使用__import__,导入模块,获取处理函数的引用(见get_callable());
- 匹配访问路径,提取参数,使用正则表达式进行匹配。
# add url_base as namespace to handlers in url_patterns
def include(url_base, url_patterns):
for index, src_pattern in enumerate(url_patterns):
pattern = list(src_pattern)
pattern[1] = "%s.%s" % (url_base, pattern[1])
url_patterns[index] = tuple(pattern)
return url_patterns
# get module name and func name
def get_mod_func(handler):
try:
dot = handler.rindex(".")
except ValueError:
return handler, ''
return handler[:dot], handler[dot+1:]
3Jun/100
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")
文档上已经说明得很清楚了,有几个比较特别的地方:
6Feb/100
zz 毕业5年决定你的命运
正如"打工皇帝"唐骏说:"我觉得有两种人不要跟别人争利益和价值回报。第一种人就是刚刚进入企业的人,头5年千万不要说你能不能多给我一点儿工资,最重要的是能在企业里学到什么,对发展是不是有利……"
人总是从平坦中获得的教益少,从磨难中获得的教益多;从平坦中获得的教益浅,从磨难中获得的教益深。一个人在年轻时经历磨难,如能正确视之,冲出黑暗,那就是一个值得敬慕的人。最要紧的是先练好内功,毕业后这5年就是练内功的最佳时期,练好内功,才有可能在未来攀得更高。