12 marlonyao

尚未进行身份认证

暂无相关描述

等级
TA的排名 296w+

Python模板性能评测

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

2011-11-28 18:00:58

Mongodb内嵌文档插入性能评测

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

2011-11-20 18:03:43

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

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

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

2011-05-05 22:44:19

支持通配符的DNS代理

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

2011-05-05 22:23:05

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

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

2011-04-23 10:06:02

java nio网络编程的一点心得

前几日用javanio写了一个[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

在vim中运行Bash aliases

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

2011-04-17 09:33:04

python变量覆盖陷阱

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

2011-04-03 21:35:46

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

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

2011-04-03 18:38:25

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

在App Engine下运行Django 1.2

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

2011-03-20 22:12:28

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

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

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

2011-03-07 23:14:57

增加vimperator的hints字体大小

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

2011-03-02 23:46:44

推荐vimperator插件char-hints

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

2011-02-25 23:49:09

扩充mongodb shell

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

2011-02-25 23:18:14

实现简单的Future

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

2011-02-19 19:38:24

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

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

2011-02-19 12:27:36

用RestrictedPython创建Python Sandbox

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

2011-02-13 17:35:17

查看更多

勋章 我的勋章
    暂无奖章