在Python中调试代码

撰写程序时候,需要在调试上面花费不少时间,好的调试工具可以让这个过程如虎添翼, 靠打 log 调试会是一种很痛苦的过程,我总结一下 Pylons 开发的调试技巧。

吐槽:团队开发时候,每个成员需要学习、总结和分享各自的开发技巧, 这样才能自我提升并提高开发效率。这属于团队文化建设,开发是一种艺术创造过程, 绝对不是简单的复制和粘帖。

在 Python 中调试

pdb

在代码中加入下列语句即可启用交互式调试。

import pdb;pdb.set_trace()

在 pdb 中,可以使用 h / l / b / n / s / c / j / a / p / ! / q 这些命令所代表的含义可以通过 h(elp) 打印出来。

参考链接:

ipdb

比 pdb 更好用的是 ...

more ...

Chrome 独立代理设置

Chrome 在2011年4月份时候,加入了两个新的实验性扩展分支,分别是 Web Navigation Extension API 以及 Proxy Extension API, 通过他们,可以让 Chrome 使用自己独立的代理。

借助这个新功能,我们可以通过 SwitchySharp 使用某个 list 完成部分网址代理。

我的环境: Arch Linux / Chromiun(17.0.963.78) / Proxy SwitchySharp 1.9.38。

安装 Proxy SwitchySharp

由于 SwitchyPlus 停止维护, 因此这里我使用 Proxy SwitchySharp

Proxy SwitchySharp 介绍如下:

轻松快捷地管理和切换多个代理设置。基于 "Proxy ...

more ...

影响力读书笔记

  • 本书研究 - 社会心理学 - 顺从心理学。
  • 日常生活中有大量心理捷径。
  • 在某个环境下机械地回应某一信息的倾向叫做自动化反应或"按一下就播放"式反应; 对所有相关信息进行彻底分析后做出反应的倾向,则叫做可控式反应。

Influence豆瓣链接

1. 互惠

  • 互惠是人类社会群体的一个独有特征。
  • 利用小礼物,使目标答应原来会拒绝的请求。
  • 互惠原理适用于强加的恩惠。
  • 互惠原理可触发不对等交换。
  • 违背互惠原理,接受而不试图回报他人善举的人,是不受群体欢迎的。(进化适应器)
  • 互惠式让步:面对接受的善意,我们感到有义务要偿还。
  • 拒绝-后撤策略:先提出较大的要求,遭到拒绝之后再提出真正的较小要求。

    • 责任感
    • 满意感
    • 如何防范:

    • 拒绝最初的善意 / 分清楚请求者是否有善意或别有所图

    • 明辩敌友:善意自然应当得到善意回报,可对销售策略却没有这个必要。

2. 承诺和一致

  • 人人都有一种言行一致,同时也显得言行一致的愿望。
  • 人类普遍人为言行一致是基本的人格特征。信仰 ...
more ...

给MoinMoin写插件

1. 使用 MoinMoin

前些日子,我写了一篇使用MoinMoin作为个人KMS 大赞MoinMoin的各种好处。MoinMoin的其中一个好处是基于GPL的开源, 我们可以方便的给MoinMoin撰写自己的插件(当然也可以去官方的wiki上获取大量现成插件)。

我在使用MoinMoin过程中,有一个急迫需要的功能:

保存一篇网页时候,要将里面的图片保存到本地,而不是使用外链接方式保存, 因为由于各种不可预测的原因,原始图片数据很有可能丢失或者无法连接。

这个功能对于将Wiki产品转化为KMS应用非常需要,可惜MoinMoin官方并没有提供, 我也没在MoinMoin的开发者插件库中找到类似功能,就自己写了一个插件image2attach。

现在我分享一下如何写MoinMoin插件,技术大牛可以直接移步官方开发文档, 我这里只是写一些简单的内容,帮助像我一样的同学。

以下内容需要Python编程基础~

2. MoinMoin 系统结构

MoinMoin的UML图:

MoinMoin

3. MoinMoin 常用对象

3.1. request

这个request和普通jsp/asp中request很类似(实际上这个request就是继承 werkzeug的Request)。

除了正常的web request功能,Moin的request还带了Wiki自身的信息 ...

more ...

再读《重构》

Martin Fowler 的「重构-改善既有代码的设计」这本书,是我大学老师推荐给我的。 当时我在撰写代码过程中,发现当代码量到某个数量级时候(1000+行), 就会逐渐失去对代码的控制能力。 昆哥推荐了两本书「UML 和模式应用」和「重构」这本书。

Refactory

这本书是2年前购买的,可惜以我当时的代码感知和撰写能力,看起来颇为吃力。 半途就看得云里雾里而中断了。最近我又重新拾起这本书, 将书中所写的境况与我这两年多来遇到的问题相互印证,才感受到这本经典的力量。

Martin 其人:

ThoughtWorks 的首席科学家,当今世界软件开发领域最具影响力的五位大师之一。 他在 UML 推广普及、领域建模、企业应用开发和敏捷方法等方面建树卓著,被称为软件开发的教父。

大学时候有段时间我对 Martin 的敏捷非常痴迷。现在对技术的选择没以前那么冲动了, 但是毫不妨碍我对 Martin 的敬仰之情。

1. 重构原则

1.1. 重构的定义

对软件内部结构的一种调整,目的是在不改变"软件之可察行为 ...

more ...

暗时间读书笔记

pongba的大作《暗时间》,讲述效率、习惯、思维,还有一些数学史话和算法,推荐一看。

an-shi-jian

ps:我的读书笔记比较水,也许成为摘抄更合适。我习惯这种大纲式的笔记,方便我回想。这里有一篇很赞的评论,介绍了三头牛,其中有笑来老师和刘未鹏。

1. 效率、记忆和学习

人生的原动力,对卓越的追求。 在每个时间的沙粒留过的时候,抓住沙子,让自己生命更有质量。

效率 X 时间 = 质量。

  • 暗时间
    • 那些瓶颈较细的能够抓住每一粒时间之沙,虽然啥子总量一样,但相对却拥有更长的生命。
  • 投入时间和效率
    • 投入时间这个说法本身就是荒唐的,实际投入的是时间和效率的乘积。
    • 避免工作内容切换带来的上下文时间损耗
    • 通过锻炼缩短进入状态的能力
    • 能够迅速进入专注状态,以及能够长期保持专注状态,是高效学习的两个最重要习惯 ...
more ...

baidu ting下载音乐脚本

度娘终于干了一件好事,Baidu Ting上线了, 正版音乐免费下载,类似于谷歌音乐。 关于音乐版权和免费的问题, 有很多问题需要取讨论, 比如说这种商业模式是否对传统唱片业产生冲击又或是有积极影响? 作为普通消费者,暂时不用考虑这些问题,先享受这些服务好了。

Baidu Ting的音乐质量是128KBps,音质算好,里面的idv3信息也勉强可以,有:

  • 歌名
  • 歌手
  • 部分专辑名(偶尔也出现"201-8月新歌快递"这种比较山寨的字)
  • 部分唱片封面图片

虽然比不上谷歌音乐连歌曲风格都准备好了,但是比杂乱无章的那些音乐mp3要好太多了。

自动下载脚本tingdownload

早上下了几首音乐,就顺手写了一个脚本,用来批量从Badu Ting下载音乐。

代码在github-tingdownload

需要

  • Python 2 (仅在Python2.7下测试)
  • BeautifulSoup(已包含在目录下)
  • simplejson(已包含在目录下)
  • 一点点Python基础
  • Linux/Windows(我在Linux没问题,Windows应该也可以)

使用方法

在Shell ...

more ...

My 2011

这个时间点,办公室里都是同事,想必晚上回家之后,那个零点肯定寂寞空虚冷, 手里夹根烟了。所以趁现在心情还不落寞,把年终小结写了。

每当目光从走过的脚步上扫过,总感觉之前的成绩不够漂亮,可以做的更好。 回顾过去是为了收获更卓越的明天。

2011,从不喜爱的ERP行业抽身,奔赴互联网,作出自己的选择。

我成为了一名Python程序员,并完全转换到Linux环境。

花了两个多月时间独自一个人装修,算是在这个城市扎根下来了。

依然是一个光棍,执着于自己的执念。

要么身体在路上,要么精神在路上,我来细数一下2011年精神的转折点。

  • 走出软件作坊 # 反思DW的工作
  • 人月神话 # 寻找DW的问题,并尝试解决方案
  • 黑客与画家
  • 暗时间
  • 构建高性能Web站点
  • 重构

新年的愿望有两个:

  • 离梦想更近一步
  • 找一个靠谱的姑娘,我感觉她需要我,我也需要她了
more ...

使用MoinMoin作为个人KMS

去年9月份时候,我写过一篇《我所使用的知识管理系统》 来介绍我使用的KMS系统。当时经过我层层筛选之后,我选用了Wiz作为我的KMS。

一年多过去了,Wiz在Windows下面工作的非常不错,Wiz团队里陆续推出了iOS / Android / Web版本。我的Wiz收藏的内容也增加到近1000篇。

此时我遇到了KMS再选型的问题,原因很简单:我全线转换到Linux平台, Wiz不符合我的要求了。

我重新整理一下我要求KMS的特性:

  • 跨平台:Linux / Web / iOS / Android / Windows
  • 数据保存格式:移植方便,将图片保存到本地
  • 数据采集方式:支持网络直接拷贝复制
  • 数据索引:支持分类 + tag
  • 协同工作:方便的分享机制
  • 免费

经过我历时N月的搜寻筛选,MoinMoin Wiki中标了!

1. 关于MoinMoin

MoinMoin是使用Python编写的Wiki实现,MoinMoin当前版本1.9。

MoinMoin的优点是:

  • 安装简单;
  • 支持中文全文检索;
  • 汉化较好;
  • 不依赖外界的数据库, 使用纯文本保存, 备份非常容易 ...
more ...

MoinMoin plugin: image2attach

MoinMoin

What's this

Image2Attach is a extension for MoinMoin. It can create a page action to save images from web to page's attachments.

Requirment

  • MoinMoin 1.9 (I only test in this version.)

Install

  • copy action/Image2Attach.py to data/plugin/action/
  • restart python server

Usage

Go into a ...

more ...