• 博客迁移公告

    2011-12-30

    由于博客大巴令人发指的宕机事故及蜗牛速度,无法忍受,必须迁移出去

    祝博客大巴早日倒闭不再害人

    新博客地址

    www.cnblogs.com/shenguanpu

    欢迎亲朋好友常来看看

  • 博客地址:  http://pythontime.sinaapp.com,源代码请参考 tornado-2.0\demos\blog

    在豆瓣求了几天邀请码终于到手

    tornado都更新到2.x了,好久没关注

    demo里东西也更全了,就用blog程序作为我的python博客原型吧

    1. 按照sae的python说明和mysql说明,建了表,并插入一条日志数据
    2. 直接把源码拷贝进去,改成sae方式的server运行 ,未果,错误信息也看不懂
    3. 一步步慢慢来吧,从tornado hello world开始,发现sae好像不支持 tornado.web.Application ,更改Application类型为tornado.wsgi.WSGIApplication 才可以,把home handler的 hello先打出来
    4. 把HomeHandler 改为原始渲染模版,entity设置为空,ok,首页出来了
    5. 然后是更改数据库连接,
      mysql_host="w.rdc.sae.sina.com.cn:3307"
      mysql_database="app_%s" %your_appname
      mysql_user="access key"
      mysql_password="secret key"
    6. 为方便调试 在handler中增加了try catch 打印错误信息,先是密钥没填对,连不上,改正确后,发现出现了mysql gone away 错误。。。刷新几遍,正常
    7. 手动在mysql里先插入篇文章,刷新后,在我的页面显示出来了
    8. 明天再接着鼓捣其他功能

     

  •  

    2003年9月20日 北科大,开学,活动中心还在拆,目送爸妈远走。

    2011年9月19日 某莎生日,又回到学校,据说西侧足球场要拆了,校庆什么的。玩游戏输了,对着曾经的宿舍楼喊“九斋的同学们,我是大傻逼”  ,这好像是我在北科说过的最值得纪念的话。

    今天,就八年了。

    大学四年的二逼生涯

    研究生两年半的苦逼日子

    工作一年半的前充实后迷茫时代

     

    最近身边比较大的变动就是房东的媳妇儿从河南某庵还俗回来了,让我再也不相信和尚喇嘛之类的东西。

    自己也开始给自己倒计时200天 XXXXXX。

    工作一年多,经历绿软两三个月之久不小心就宕机的苦逼夜晚。经历做thrift调研,在情人节的夜晚在公司加班找出问题,骑着车在大街上疯跑的兴奋时刻。 见证了公司315的危机关头,上市的奇迹时刻。经历百科不声不响就下线的落寞一瞥,经历sc动不动就cpu700%+的报警邮件 。 有收获有进步也有种种的不满和不如意。自己的投入还是太少,要加油要拼了。

     

  • 看cookbook 看到很神奇的string.translate 函数

    可以剔除字符串中你不需要的串,并可做 maketrans映射 将一些字符,映射成另外的字符,目前还没想到应用场景。

    cookbook封装了 translate代码 新建一个facade 函数:

    import string def translator(frm='', to='', delete='', keep=None): if len(to) == 1: to = to * len(frm) trans = string.maketrans(frm, to) if keep is not None: allchars = string.maketrans('', '') delete = allchars.translate(allchars, keep.translate(allchars, delete)) def translate(s): return s.translate(trans, delete) return translate
    >>> digits_only = translator(keep=string.digits)
    >>> digits_only('Chris Perkins : 224-7992')
    '2247992'


       真正神奇的是  自己打印了   string.maketrans(frm, to) 的值, 结果竟然都是空白。搞了半天没弄懂是怎么完成映射的?

     

    走进 lib/string.py 看源代码,才明白 ,maketrans结果是返回一个256bytes长度的字符串,而不是from to都为空时的空串,windows下竟然什么都打印不出来,害我跟踪了大半天。linux下可以看到 字符串的完整值,英文字符 数字和一些符号。

       trans = string.maketrans(frm, to)  获得原始的256字节字符串,  然后找到keep和delete的差集作为保留值,最后得出需要保留的串,将原始字符串解释为需要值。

     

  • 原生loggging类+  TimedRotatingFileHandler类 实现按day hour second 切分

    import logging
    from logging.handlers import TimedRotatingFileHandler

    log = logging.getLogger(loggerName)

    formatter = logging.Formatter('%(name)-12s %(asctime)s level-%(levelname)-8s thread-%(thread)-8d %(message)s')   # 每行日志的前缀设置
    fileTimeHandler = TimedRotatingFileHandler(BASIC_LOG_PATH + filename, "S", 1, 10)

    fileTimeHandler.suffix = "%Y%m%d.log"  #设置 切分后日志文件名的时间格式 默认 filename+"." + suffix 如果需要更改需要改logging 源码
    fileTimeHandler.setFormatter(formatter)
    logging.basicConfig(level = logging.INFO)
    fileTimeHandler.setFormatter(formatter)
    log.addHandler(fileTimeHandler)
    try:
         log.error(msg)
    except Exception, e:
        print "writeLog error"
    finally:
       log.removeHandler(fileTimeHandler)

     

    值 interval的类型
    S 秒
    M 分钟
    H 小时
    D 天
    W 周
    midnight 在午夜