Pelican 的 Google Map 插件
青蛙最近整理照片和blog的时候,一直想想在blog post里添加一个地图。 但是pelican似乎没有靠谱的google map plugin。 虽然有一个google_embed,但是似乎现在不能用了,按照它的README写好map之后,post里面完全不会转义。 于是青蛙一怒之下自己照猫画虎写了个liquid_tag版本的google map,竟然也能用了。
more ...青蛙最近整理照片和blog的时候,一直想想在blog post里添加一个地图。 但是pelican似乎没有靠谱的google map plugin。 虽然有一个google_embed,但是似乎现在不能用了,按照它的README写好map之后,post里面完全不会转义。 于是青蛙一怒之下自己照猫画虎写了个liquid_tag版本的google map,竟然也能用了。
more ...话说今天青蛙遇到了一个bug,在某个Exception里抛出了TypeError Exception, 青蛙仔细查了半天,才想到Exception有一个内置属性args,刚好跟这个Exception 定义中的args重名。
首先看下这个Exception的定义:
In [4]: class E(Exception):
def __init__(self, a, b, c):
Exception.__init__(self)
self.a = a
self.args = b
self.c = c
def __str__(self):
return "a = %r, b = %r, c = %r" % (self.a, self.args, self.c)
....:
当这个Exception被触发时,又引发了一个TypeError:
In …
其实青蛙不是很想在blog里面说编程方面的东西,毕竟青蛙自己只 是个半调子,怕言多有失。不过这次遇到了一个很常见又很有趣的 问题,记下一笔,权当取乐。
话说上周一个同事在patch里面使用了一种比较hacker的方法[1]:
使用定义list成员的方式把函数的局部变量传递给sub-function并 在sub-function修改其内容。
这种做法被其他同事猛烈的抨击,实际上在python2.x中,因为语言 实现的问题,嵌套的子函数是没法直接写它的上层函数的变量的。
这个问题之前在Team内部没有引起足够的重视,大家习以为常的在 子函数里直接给一个父函数的变量赋值,结果都是错的,这个赋值 操作会直接引发异常。
有人总结了一下python嵌套子函数访问变量的行为[2]:
In Python 2.x, it is not possible to modify a non-local variable;
you have either read-only access to a global or …
青蛙拿到一份扫描版的pdf文档,每个pdf页包含了两页实际书籍页面, 这种文档放在6寸Kindle上基本就是杯具了。于是青蛙试图找工具把他们切割掉。 根据铄日博客的推荐试验了 paper4kindle 和 k2pdfopt, 但是papaer4kindle切割出来的文档页面错乱了,而且也没有修正pdf歪斜的功能, 剪裁输出的文档很难看。 k2pdfopt就更没法看了,从image识别文档的技术先进, 但是对于每页pdf包含2页实际页面的文档,k2pdfopt基本无能为力。
青蛙本想探索一下paper4kindle输出之后页面错乱的问题, 结果这玩意竟然不开源,又看到作者说花了几小时就搞出来了, 那青蛙也看看pypdf包,试试能不能直接写代码自己搞定。
花了半下午时间看了下pypdf( http://pybrary.net/pyPdf/ )的API, 然后直接把例子代码复制下来改吧改吧, 咱也基本实现了paper4kindle的核心功能了,成功把那份文档处理掉了。 至于那些花哨的界面啥的,有空再玩吧。 代码先贴在这里,没有整理,暂时先不贴到github了, 准备下一步尝试添加旋转页面的功能。
编码的时候发现了两个问题,
最后小小鄙视一下用python、用开源库写代码竟然不继续开源的某些软件作者。
#!/usr/bin/env python …