BLOG
Enjoy when you can, and endure when you must.
JUL 15, 2016/Python
苹果推送 APNs Provider API 在 Python 中的使用

当参与后端开发,并且所涉及的项目是为 APP 提供服务的时候,就不可避免的会遇到推送这个需求。就 iOS 的推送而言,要规规矩矩的来做,当属直接与 APNS 进行对接来实现推送。APNS 的接口有两种,一种为 Binary Provider API,还有一种为最新的 APNs Provider API。现在就来针对在 Python 中使用 APNs Provider API 做一个简单初步的探索。

JUL 07, 2016/Python
DReverse:让我欢快地访问内网!

好久没用 Python 写些有趣的东西了,有点手痒痒。最近总是有从公网访问内网的需求。VPN 是一种解决方案,不过无论如何这个的和谐几率还是很高,在国内的话通常不那么好用。那就手动打隧道吧,顺便还可以玩玩 Python 的 socket,当然总体说来这其实也很简单,因为是 Python,并不需要考虑底层的东西。于是就诞生了 DReverse。

MAY 09, 2016/Python
Python 应用剖析工具介绍

编码之初,我们的首要目标是实现既定的任务。而到了进阶阶段,找出性能瓶颈,再尽可能地提高其运行效率,这样的工作变得日益重要。此时,利用 cProfile、PyCallGraph 这样的工具可以帮助我们确定最佳的程序优化方案。这里就让我们一起来探索。

MAR 29, 2016/Python
提防黑盒子:关注 Python 使用中的细节(一)

Python 是一门非常有趣的语言,他为我们准备了大量的组件,让我们的开发工作更加轻松。但这些组件有时候也因为这样的“黑盒子”特性而成为一种风险,必须时刻提防。本文整理在开发、学习过程中遭遇、瞥见或收集到的一些“危险”场景。这一次关注的是在列表查询字符串拼接中可能存在的陷阱。

JUN 01, 2015/Python
别被全局变量坑了:lambda 在列表解析中使用的陷阱一例

Python 是一门灵活的语言,但灵活的同时也可能会在不经意间给我们带来麻烦。今天要和大家分享的是关于作用域和全局变量引发的“血案”。我认为很有意思并值得我们去深思。

OCT 15, 2014/Python
Python实现按任意键继续
上班时间,好基友向我提了个问题:在 Python 中如何做到按任意键退出?第一反应就是这曾经实现过!不过第二反应...忘了,赶紧补补。要实现该功能,需要的就是暂停程序、等待并捕捉用户的一个键盘输入,然后继续执行。Python 有内建的库能帮我们实现该功能,不过要区别对待 Windows 和 Linux。msvcrt 中的 getch() 方法 能够帮助在 Windows 下实现,其作用是获取一个按键响应并返回对应的字符。它并不在命令行中回显。有如下程序段:import msvcrt print ord(msvcrt.getch())这里利用 ord 将获得的字符转换...
JUL 31, 2014/Python
Segmentation Fault: 11
今天同事在Mac上使用Python遇到一个问题,在Terminal中运行Python,执行第二条语句时就会提示Segmentation Fault: 11,然后直接崩溃。发生问题的Python版本是2.7.5,这在之前确实没有遇到过,于是Google一下,发现这是一个bug引起的。以下是该问题的描述(来自http://bugs.python.org/issue18458):Modules/readline.c contains a workaround for a bug in the readline emulation of libedit: that emulation uses ...
JUN 26, 2014/Python
Ubuntu安装lxml的小插曲
今天需要用BeautifulSoup来解析xml,于是很自然地想到了在实例化时加入features='xml'参数。不过收到了如下错误:FeatureNotFound: Couldn't find a tree builder with the features you requested: xml. Do you need to install a parser librar...
APR 22, 2014/Python
Python字符串的拆分
字符串的拆分是一个很常见的需求。Python中的字符串也为我们提供了一个split()方法用于方便地按指定格式对字符串进行拆分并返回一个列表。假如有如下字符串:23-16-70-KF-BF-8D这是一个网卡MAC地址,现在我们需要以“-”为分界点将字符串拆分成6组,split()可以方便地做到:>>> mac = '23-16-70-KF-BF-8D' >>> mac.split('-') ['23', '16', '...
APR 19, 2014/Python
Datetime中offset-naive与offset-aware时间的计算
在使用Django时,默认是开启对多时区的支持的,在获取时间的时候会是如下形式:datetime.datetime(2014, 4, 18, 15, 37, 7, tzinfo=<UTC>)我们可以利用django.utils.timezone中提供的localtime方法来将该时间转换为本地时间:>>> dt datetime.datetime(2014, 4, 18, 15, 37, 7, tzinfo=<UTC>) >>> localtim...
1 2 3 > >>