自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (61)
  • 收藏
  • 关注

Python模板性能评测

本篇主要是对django, jinja, jinja2, mako和cheetah五大python模板引擎性能的评测。对于这几个引擎,分别测试它们渲染字符串,变量替换,以及循环处理的速度,所有结果输出均为unicode,变量替换均需html转义,所有模板中,只有django默认开启了html转义,其它模板需要显式地打开。所有测试均不计算模板加载、编译时间,只计算渲染时间,因为模板通常只会加载一次,...

2011-11-28 18:00:58 232

Mongodb内嵌文档插入性能评测

Mongodb作为典型的文档数据库,支持内嵌文档和复杂的查询,这给数据库建模带来了更多的灵活性。在一个博客应用中,有博客(Blog)和评论(Comment),每篇博客可以有多条评论。在关系数据库建模中,通常博客和评论分别对应一张表,评论表有到博客表的外键。在MongoDB中,也可以像关系型数据库那样,将博客和评论分别放到不同的集合中,另外也可以选择将评论嵌入到博客文档中。对于后者,一个博客的数据结...

2011-11-20 18:03:43 790

startup java fast

据我所知,有不少人[url=http://www.joelonsoftware.com/items/2009/01/12.html]鄙视java[/url],认为它笨重而缓慢,笨重倒是事实,但慢其实是站不脚的,据专业网站的[url=http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php]测...

2011-05-07 18:21:58 119

Mac OS将大写转换键变成ESC键

我之前写一篇如何在[url=http://marlonyao.iteye.com/admin/blogs/672940]Ubuntu下如何做类似事情的博客[/url]。为什么要将CapsLock键转成Esc键?经常用vim的人应当深有体会,还没有转过来的同学,我建议你试一下,刚开始可能会不适应,但以后会越来越顺手。在MacOS下做转换要比Ubuntu下要困难一些,必须借助专门的软件,但从另...

2011-05-05 22:44:19 893

支持通配符的DNS代理

hosts文件可以手动配置一些域名的IP地址,它的优先级最高,有些网站的IP地址不能被正确的解析,这么情形在我国比较常见,可以直接在hosts文件直接指定网站的IP地址来解决。hosts文件的一个缺点是不支持通配符,要为所有的blogspot网站指定IP地址几乎不可能。解决办法就是在本地建个DNS代理服务器,它负责解析hosts文件中的通配符域名,有一些开源的dns服务器,比如bind和dnsma...

2011-05-05 22:23:05 1026

《SED 单行脚本快速参考》的 perl 实现

《SED 单行脚本快速参考》的 perl 实现需要处理文本时,通常我会使用sed或者awk,但我从来没有掌握它们,每次用时都得临时去查怎么使用。最近又碰到一个问题,想把一个html里面所有的css及javascript链接取出来,用sed或awk折腾了半天没有整出来,最后终于放弃了。我决定转向perl,perl是门非常强大的通用语言,但它最初诞生是用于文本处理,因此它处理文本的能力非常强大...

2011-04-23 10:06:02 356

原创 java nio网络编程的一点心得

前几日用java nio写了一个[url=http://code.google.com/p/marlon-tools/source/browse/tools/tcpmon/TCPMonitorSelect.java]tcp端口转发小工具[/url],还颇费周折,其中一个原因在于网上资料很混乱,不少还是错误的。这篇文章中我会以一个EchoServer作为例子。先看[url=http://book.d...

2011-04-17 17:52:30 99

原创 在vim中运行Bash aliases

我比较喜欢用bash的alias,如果一些命令老是重复出现或者容易输错,我就会将它们写成alias,或者稍微复杂一点,写一个函数。慢慢地也还累积了不少alias,用得也很习惯,以至于我用别人的电脑,总不太适应,alias另外也会导致某些命令的自动补全失效。我这里要说的另外一个问题,我们知道在vim及其它一些工具中可以执行外部命令,但是它并不能执行alias和函数,这就比较令人困惑,我不得不输入展开...

2011-04-17 09:33:04 301

python变量覆盖陷阱

我已经好几次碰到这样的错误了,每次碰到都花费我大量的时间,下面总结下我所犯的错误,希望对大家也有帮助。[b][size=medium]闭包[/size][/b]我想抓取一系列的网页,抓取网页很慢,然后对网页内容进行处理,为了提高速度,我启动了多个线程去抓。以下是其代码:[code="python"]import sysimport threadingimport t...

2011-04-03 21:35:46 900

原创 读《深入理解计算机系统》

最近花了十天的时间(加上春节前看的一点)终于将这部大部头的书看完了,整个过程很兴奋,感觉原本模糊的世界一下子变得清晰了,很久没有这样的感觉了。这里记下自己的收获。[b][size=medium]汇编[/size][/b]第三章讲的是汇编语言,我对汇编一直感到十分畏惧,曾经也捡过一部大部头的书来看,名字已经忘记了,貌似还是一部很经典的书,当时那个痛苦,完全感受不到编程的乐趣。好在...

2011-04-03 18:38:25 85

原创 gnu screen脚本相关

这里不会介绍如何使用[url=http://www.gnu.org/software/screen/]Screen[/url],只是记录我从脚本创建并操纵Screen会话(session)的一些尝试。 如果想看Screen的一些入门介绍,可以看[url=http://aperiodic.net/screen/start#tutorials]这里[/url],还有一个[url=http://aper...

2011-03-26 23:37:00 85

在App Engine下运行Django 1.2

我不知道[url=https://appengine.google.com/]App Engine[/url]是从什么时候开始默认支持Django 1.2的,好像支持的时间不长,我懒得去求证了,反正你去下载最新的SDK准支持,保准支持。要在App Engine下运行Django通常有两种方法:一种是使用[url=https://bitbucket.org/wkornewald/django-non...

2011-03-20 22:12:28 165

原创 Mlac下的vim编辑器:vim-cocoa

说起Mac下的GUI版本的vim,排名第一的当然非MacVim莫属了,我想这很大部分得益于它的名字。作为一个mac新用户,如果要找一个gvim,通常第一反应就是在Google上搜索[url=http://www.google.com/search?q=mac+vim&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firef...

2011-03-20 18:44:10 121

原创 模式对话框为什么不会让界面失去响应?

我很早就有这个疑问了,但一直懒得去弄清楚,直到最近又要开始写桌面程序才下决定要弄清楚。我们都知道在swing(或者wxpython)中使用事件处理使用单线程模型,即所有的事件处理、界面更新操作都是在必须在同一个线程中执行,这个线程又称为事件分发线程(Event Dispatcher Thread)。这样做的好处就是避免大量线程同步的开销,缺点是不能在事件线程中处理耗时操作,这会阻塞用户鼠标键盘操作...

2011-03-07 23:14:57 171

原创 增加vimperator的hints字体大小

之前有同事看我用vimperator时说hints字体太小,看不太清楚,我当时不以为然。后来在使用的过程中发现这确实是个问题,尤其是当两个字符挨得太紧时,很容易输错。一天12个小时都盯着电脑,已经深感视力不如从前,所以为了革命,要保护视力,就从修改vimperator的hints字体开始。在网上搜了一下,发现[url=http://userstyles.org/styles/4874]这里...

2011-03-02 23:46:44 108

原创 推荐vimperator插件char-hints

vimperator最为著名的一个特性就是hints功能,它可以使得你不用鼠标就可以浏览网页,打开其中链接。默认的hints符号用的是数字,输入数字可以直接打开相应链接,当输入字符时会从链接文字过滤链接。在平时使用过程中,我发现使用文字过滤比较少,因为这要输入较多字符,并且对中文链接无法使用,而数字过滤就要高效得多,但是数字恰恰很难打,因为它离手指太远。[url=http://coderepos....

2011-02-25 23:49:09 84

原创 扩充mongodb shell

因为项目对mongodb数据库的结构做了一点修改,仅仅是是因为添加/删除一列就导致我使用python写了两个小程序来实现这一功能,而这样的功能在MySQL等关系数据库实际就是一条alter table命令的事。事后我就思考有没有简单的方法去实现这一点,一种方法就是用python实现类似MySQL修改数据模式的一套,这涉及到语法解析,并不简单。第二种方法就是扩展mongo shell,既然mongo...

2011-02-25 23:18:14 66

原创 实现简单的Future

异步调用的困难之处我们不知道它什么时候会返回,通常的解决方法是使用回调来通知异步调用的结束。在大部分情况下,回调这种方式工作得很好,但是当异步调用太多时,太多的回调会将代码弄得很乱,同时很难跟踪代码执行过程。另外,它也使得在同步调用和异步调用之间切换变得困难。Java中有Future的概念,它封装了一个Callable对象,调用Future的get方法,不管Callable是异步调用还是同步调用,...

2011-02-19 19:38:24 80

原创 创建简单声明式python对象模型

创建简单python声明式对象模型要创建一个简单的Author对象,不考虑数据库操作,通常我都会这么写:[code="python"]class Author(object): """simple model represents Author""" def __init__(self, id=None, name=None, address=None, sum...

2011-02-19 12:27:36 121

原创 用RestrictedPython创建Python Sandbox

众所周知在Python下可以用eval和exec来执行任意的python表达式及脚本,但是,当运行的脚本来自于网络时这样做就会有安全风险,你总不想运行包含"import os; os.system('rm -rf /')"的脚本吧?对这类问题,通常的解决方法是为来自网络的脚本创建一个沙箱(Sandbox),浏览器在执行来自网络的Java Applet时会创建一个权限较低的Sandbox,在其中运行...

2011-02-13 17:35:17 1482

原创 用graphviz dot来画UML类图

其实我是看了[url=http://www.ffnn.nl/pages/articles/media/uml-diagrams-using-graphviz-dot.php]这篇文章[/url],我跟着做了,发现他最终做的效果还没有我的好。把我的代码贴出来,其实基本上就是用rank=same:[code]digraph G { nodesep=0.8; node [ fontn...

2011-01-24 20:50:28 313

原创 xargs运行例子

将当前目录下所有dot文件转换成png:ls *.dot | xargs -I % dot -Tpng % -o %.png

2011-01-21 22:30:53 68

原创 wxpython中工作线程与主线程交互

在wxpython中,像其它GUI框架一样,如果要进行耗时很长的任务,需要将该任务放在工作线程中运行,以保证程序的响应性。工作线程可能会需要与主线程进行交互。这可以分为两种情况:一是工作线程只是向主线程单向通知工作进行的状态,比如任务完成进度,并不要求主线程回应。第二种情况是工作线程要调用主线程的方法,并且要求其返回,例如工作线程运行中需要弹出对话框让用户输入必要的信息(在wxpython中,显示...

2011-01-15 23:56:32 1063

Java线程安全兼谈DCL

我之前写过一篇谈[url=http://www.iteye.com/topic/260515]DCL的文章[/url],最近又收到一个问题,本想直接回复,但我又不想再看原来写的文章,那些顺序分析其实很绕。这次我不会直接分析顺序,而是从基础概念讲起,希望大家能看得轻松一些。如果你搜索网上分析dcl为什么在java中失效的原因,都会谈到编译器会做优化云云,我相信大家看到这个一定会觉得很沮丧、很...

2011-01-15 20:15:40 137

原创 SMSBatchEditor: 基于规则的Android短信编辑器

我经常收到公司的短信,主要接收人并不在我,但又不得不接收,手机里充斥着此类未读短信,这就极大降低我看短信的欲望,某些重要的短信就这样被错过了。为了解决这一问题,我就想要写一个能自动过滤短信的Android程序,类似gmail中的邮件过滤器,或者lookmail中自定义邮件规则。但由于在android下收到短信时并不是立即存在inbox中,导致并不能直接对短信进行操作。我就退而未其次:仍然必须先建立...

2010-12-04 15:55:31 199

原创 Python下Base64编码

在Python下有Base64编码的库,可直接用,我自己写了个,主要是想调整编码字符的顺序。注意:如果只是想调整最后两个字符(默认为"+/"),用不着自己写,b64encode有个altchars参数,用来指定最后两个字符。先将代码放在这里,有需要的可以直接拿来用。[code="python"]_keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi...

2010-12-04 12:53:53 99

原创 PasswordMaker的Android客户端

我已经不止一次提到过[url=http://passwordmaker.org/]Password Maker[/url]了,我网上使用的密码基本都是用它生成的,浏览器中我用自己写的一个[url=http://marlonyao.iteye.com/blog/679113]vimperator插件[/url]生成,桌面客户端我有控制台程序。但在手机上就比较麻烦了,Password Maker实际上...

2010-11-25 23:46:56 88

原创 通配符匹配

在网上看到通配符匹配的[url=http://www.nsftools.com/tips/CTips.htm]C语言实现[/url],代码很漂亮。如果使用递归,代码可以更清晰一些,以下是我修改之后的代码:[code="c"]int wildcard_matches(const char *wildcard, const char *str) { if (*wildcard == '\0...

2010-11-20 13:18:20 97

原创 vim插件conqueterm: 打造REPL环境

[url=http://en.wikipedia.org/wiki/Read-eval-print_loop]REPL[/url],即read-eval-print loop,最早出现在Lisp中,Emacs的[url=http://en.wikipedia.org/wiki/SLIME]Slime[/url]模式编写lisp非常方便。在Slime中流程是这样:[list=1][*] 编写...

2010-10-03 00:28:47 367

原创 vim插件pathogen: 管理插件的插件

[url=http://www.vim.org/scripts/script.php?script_id=2332]pathogen[/url]很强大,要理解它的强大,需要先回顾下通常的插件安装方式。我们通常会将vim的所有插件一股脑地全部放在.vim下,插件A和插件B的plugin,doc等目录都混在一起,.vim/plugin既包含plugin-A.vim也包含plugin-B.vim,.vi...

2010-10-02 23:56:20 148

原创 Javascript代码格式化器

[url=http://jsbeautifier.org/]JsBeautifier[/url]是一个用Javascript写的在线Javascript代码格式化工具。用javascript写的好处是只要一个浏览器就可以运行,很方便,坏处在于若是想通过命令行(例如需要脚本化)去运行时就会比较困难。之所以说比较困难,是因为JsBeautifier是可以通过Rhino来运行的,Rhino是一个用jav...

2010-10-02 23:07:20 108

原创 控制台文件管理器vifm

vifm是Linux下的一个控制台文件管理器,我很少使用文件管理器,要用一下,就拿出vifm来。图形界面的文件管理器我不喜欢用,控制台下有人叫做[url=http://www.midnight-commander.org/]mc[/url]的,功能很强大,但快捷键实在用不习惯,还经常和Terminal下的快捷键冲突,找来找去也只找到vifm这个还勉强可用,快捷键模拟vi,符合我的习惯。vi...

2010-10-02 19:12:13 257

原创 Python中用MetaClass实现委托、不可变集合

委托(delegate)是许多设计模式(如Decorator, Proxy)的基础,实现委托的一般方法是在委托类为每个需要委托的方法定义一个方法,它的仅有的实现就是对被委托对象调用同样的方法。例如,要实现ImmutableList,可以这样做:[code="python"]class ImmutableList(object): def __init__(self, delega...

2010-09-13 16:01:42 81

原创 用编程语言作数据库测试的配置

在[url=http://marlonyao.iteye.com/admin/blogs/760763]上一篇博客:django, mongodb与测试[/url]中,我推荐使用json作为数据库测试的配置格式,因为json格式简单,语言中立,容易解析, 又不似xml那样繁琐。json有它的缺点,主要有:[list][*] 没有注释[*] json不能表达复杂的类型[*] json...

2010-09-11 11:25:44 75

原创 django, mongodb与测试

在django下很容易写测试,只需要继承DjangoTestCase,它会自动创建一个测试数据库,每次运行时加载必要的fixture数据,以保证每个测试的初始状态是一致、可预测的。其前提是必须使用它的dbmodel,如果使用MySQL, Oracle等关系型数据库,这自然不是个问题。如果使用其它数据库,例如当前相当流行的NoSQL,这时DjangoTestCase就不能直接拿来用了。如果我们hac...

2010-09-11 10:05:39 195

原创 Capture和Bubble事件阶段

做过Web开发应该都知道addEventListener,它接受三个参数,前两个都很好懂,分别表示事件类型和事件处理器,而最后一个参数是useCapture,就有点让费解了,它是boolean参数,为true时表示Capture阶段触发事件,为false表示在Bubble阶段触发事件。之前一直没有怎么关注这个参数,对它只是一知半解,主要原因在于IE使用AttachEvent来注册事件处理器,但它不...

2010-07-23 09:54:59 193

原创 用Apple Script备份Evernote

我十分喜欢Evernote,保存了大量的信息在Evernote上,包括一些技术笔记、网页摘录、日记等。这也给我带来了一些麻烦,最近Evernote又一次升级,不知怎么搞的,本地存的笔记全部丢失了,只得重新同步,同步速度非常慢,其实何止慢,简直同步不了,非得用代理,至于具体原因,想必大家都知道。这次同步之后我就想在本地备份一下Evernote,但Evernote备份起来很困难,自带的界面只能...

2010-07-22 22:37:23 86

原创 一个expect例子

expect能够模拟用户的交互输入,这相当有用,因为这使得很多原本需要交互输入的命令可以自动完成,而不需要人工干预。以下是一个简单例子,用来模拟登陆远程ssh:[code="bash"]#!/usr/bin/env expectset password [lindex $argv 0]set timeout 60spawn ssh [email protected]...

2010-06-26 22:52:45 82

原创 自定义Bash自动完成

Bash的自动完成功能很爽,它不知道免掉我多少记忆的负担,节约了多少键盘操作。 但是对于我们自己写的脚本也能够利用它的自动完成功能吗?回答是肯定的。下面以几个例子来说明。程序员需要记忆很多东西,bash, vi, screen, svn都有很多命令和快捷键,偏偏我的记忆力不行,不时查看cheatsheet,每次都cd到某个目录,从一大堆文件中找到那个文件,然后再打开,这个过程显然很烦琐。所...

2010-06-20 21:43:59 144

原创 几个Vimperator小插件

虽说标题是插件,但实际上我都写在.vimperatorrc配置文件中。第一个是用来在http和https之间切换的插件。很多网页同时有http和https版本,在两个之间切换比较麻烦,所以就写了这个,下面所有的代码都放在.vimperatorrc中,如果在windows下则放在_vimperatorrc下。[code="js"]:js ...

2010-06-20 20:41:51 91

无懈可击的WEB设计(英文版).chm

无懈可击的WEB设计(英文版).chm 描述不少使用CSS的最佳设计,如圆角,导航条

2008-11-06

Refactoring_Databases$Evolutionary_Database_Design.chm

Refactoring_Databases$Evolutionary_Database_Design.chm

2008-11-06

Linux.O'Reilly.SED and AWK.chm

Linux.O'Reilly.SED and AWK.chm________________

2008-11-06

Core.Java.Data.Objects.chm

Core.Java.Data.Objects.chm_____ 讲的是JDO1

2008-11-06

SQL Puzzles and Answers 2nd Edition(2006).pdf

SQL Puzzles and Answers 2nd Edition(2006).pdf

2008-11-06

o'reilly - sql tuning - 2003.chm

o'reilly - sql tuning - 2003.chm

2008-11-06

The Art of SQL.chm

The Art of SQL.chm______________

2008-11-06

Concurrent Programming in Java - Design Principles and Patterns, Second Edition.chm

Concurrent Programming in Java - Design Principles and Patterns, Second Edition.chm 关于多线程编程的经典书籍,java5

2008-11-06

Manning - Hibernate In Action (2007).pdf

Manning - Hibernate In Action (2007).pdf hibernate3

2008-11-06

Beyond java

Beyond java_________________

2007-11-24

Ant - The Definitive Guide

Ant - The Definitive Guide

2007-11-24

Pragmatic Programmers - Pragmatic Project Automation(2004).pdf

Pragmatic Programmers - Pragmatic Project Automation(2004).pdf

2007-11-23

Better Builds with Maven.pdf

Better Builds with Maven.pdf

2007-11-23

Mastering Regular Expression

Mastering Regular Expression

2007-11-21

_my splitter

_my splitter

2007-11-05

软件工程-实践者的研究方法

软件工程-实践者的研究方法

2007-11-05

程序设计实践

程序设计实践-------------

2007-11-03

具体数学.

具体数学_______________________

2007-11-03

编译原理及实践(6-9)

编译原理及实践(6-9)

2007-11-03

编译原理及实践(1-5)

编译原理及实践(1-5)

2007-11-03

PC技术内幕(第二版).pdf

PC技术内幕(第二版).pdf 英文名称《The undocumented pc》

2011-06-07

The Indispensable PC Hardware Book

The Indispensable PC Hardware Book (third version)

2011-06-07

Apress.The.Definitive.Guide.to.MySQL.5.3rd.Edition.Sep.2005.pdf

Apress.The.Definitive.Guide.to.MySQL.5.3rd.Edition.Sep.2005.pdf

2009-10-06

怎样解题.pdf__________

怎样解题.pdf__________ =====================================

2009-05-18

11利用VBA提高工作效率.doc

11利用VBA提高工作效率.doc ==========================================

2009-05-18

The Productive Programmer.pdf

The Productive Programmer.pdf ========================

2009-05-12

尽管去做——无压工作的艺术(中英文对照版).pdf

尽管去做——无压工作的艺术(中英文对照版).pdf ===============

2009-05-10

尽管去做——无压工作的艺术(英文版).pdf

尽管去做——无压工作的艺术(英文版).pdf get-things-donee.pdf

2009-05-10

手把手教你把 Vim 改装成一个 IDE 编程环境 Ver.0.7.pdf

手把手教你把 Vim 改装成一个 IDE 编程环境 Ver.0.7.pdf ____________

2009-05-09

Vim用户手册_72.pdf

Vim用户手册_72.pdf __________________________________________________________

2009-05-09

把时间当作朋友-运用心智获得解放

把时间当作朋友 - 运用心智获得解放,李笑来的书

2009-05-09

尽管去做──无压工作

尽管去做──无压工作────────────────────────

2009-05-04

TCP/IP详解卷一,英文版

TCP/IP详解卷一,英文版 虽然有中文版,英文版有时也是需要对照着看下的。

2009-03-18

Eclipse in Action A Guide for the Java Developer.pdf

Eclipse_in_Action_A_Guide_for_the_Java_Developer.pdf

2009-03-03

RCP程序设计.pdf

原书籍在这里:http://www.eclipseworld.org/bbs/read.php?tid=4457

2009-03-03

Web Designer's Guide to Adobe Photoshop.chm

Web Designer's Guide to Adobe Photoshop.chm

2008-12-03

JavaEE5_Performance_Management_and_Optimization.pdf

JavaEE5_Performance_Management_and_Optimization.pdf

2008-12-02

non-designers_design.pdf_part2

non-designers_design,专门为像我这样的non-designer写的关于各种设计原则的书。 文件太大,分割成了两部分,在linux下可以用命令: cat non-designers_design.pdf_part* > non-designers_design.pdf来得到整个文件 在windows下可以用copy命令,提示需要用"+"号,自己去网上找吧(或者自己写个小程序来合并)

2008-11-30

non-designers_design.pdf_part1

non-designers_design,专门为像我这样的non-designer写的关于各种设计原则的书。 文件太大,分割成了两部分,在linux下可以用命令: cat non-designers_design.pdf_part* > non-designers_design.pdf来得到整个文件 在windows下可以用copy命令,提示需要用"+"号,自己去网上找吧(或者自己写个小程序来合并)

2008-11-30

POJOs in Action.pdf

POJOs in Action.pdf 非常经典的书籍,强烈推荐!详细描述了如何使用POJO进行设计,轻量级框架,测试优先,Hibernate,IBatis,JDO等都有介绍。

2008-11-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除