program
文章平均质量分 82
siddontang
hello go, let's go!
展开
-
swig的学习以及国密的python封装
swig的学习以及国密的python封装起因最近在研究国密算法,而我们主要是使用python来进行开发,所以就需要构建一个国密的python模块。国密算法网上已经有很好的实现,笔者使用的是一个参考Xyssl实现的那个版本。因为这些版本都是c的,所以很容易将其扩展到python里面,但是为了跟python自身的crypto的行为一致,需要将国密生成相应的class。譬如,pyth原创 2013-05-20 21:53:18 · 5435 阅读 · 0 评论 -
web多语言url的设计
因为项目要支持国际化,最近跟一个同事在讨论多语言版本下面url如何设计,假如我们需要支持en和cn的版本。他倾向于支持如下的url格式,后续以格式1指代:/en/group/abc.html/cn/group/abc.html而我则倾向于只提供一套url,lang的信息在其它地方携带,后续以格式2指代,譬如:/group/abc.html?lang=en对于格原创 2014-03-17 09:15:42 · 2387 阅读 · 0 评论 -
libcoro:在c++中支持coroutine
起因在第一个版本的libtnet开发完成之后,我一直在思考如何让异步方式的网络编程更加简单。虽然libtnet通过c++ shared_ptr以及function等技术很大程度上面解决了异步代码编写的一些问题,但是仍然会出现代码逻辑被强制拆分的情况。而这个则是项目中童鞋无法很好的使用其进行开发的原因。所以我考虑让libtnet支持coroutine。Coroutine原创 2014-03-05 14:28:02 · 4307 阅读 · 0 评论 -
lua c函数注册器
lua与c的交互关于lua和c的交互,主要有两个方面,一是lua调用c的函数,而另一个则是c调用lua函数。而这些都是通过lua stack来进行的。c调用lua在c里面使用lua,主要是通过lua_call这类函数,下面来自lua manual的例子:lua_getglobal(L, "f"); /* function to be cal原创 2014-01-24 09:23:48 · 4760 阅读 · 0 评论 -
一个简易版本的lua debugger实现
introduction工欲善其事,必先利其器。lua作为一门动态语言,虽然我已经习惯了使用print来进行代码调试,但是还是有很多童鞋觉得一款好用的调试器能更好的进行lua代码编写。所以在以前接手游戏的lua结合层之后,自然就需要提供一个debuger工具了。我们只需要的是一个能快速进行lua代码调试的工具,所以不需要gdb那种额外复杂的功能,只需要提供几种简单的功能就行了,如下原创 2014-01-24 09:21:24 · 6205 阅读 · 1 评论 -
学习tornado:模板
第一次接触tornado的template,是在做oastub的时候,因为一位同学在handler里面硬编码了html代码,我决定引入template机制来降低逻辑与页面的耦合。简介tornado自带了一个简易的template引擎,使用它,我们可以很方便的构建自己的web页面。tornado的template使用起来很简单,如下:from tornado.template imp原创 2014-01-09 22:21:34 · 6759 阅读 · 1 评论 -
学习tornado:异步
why asynchronoustornado是一个异步web framework,说是异步,是因为tornado server与client的网络交互是异步的,底层基于io event loop。但是如果client请求server处理的handler里面有一个阻塞的耗时操作,那么整体的server性能就会下降。def MainHandler(tornado.web.RequestH原创 2014-01-09 22:23:13 · 9665 阅读 · 3 评论 -
学习tornado:安全
在web编程中,安全性是我们都必须面临的一个问题,包括cookie伪造,xsrf攻击等。tornado作为一个web framework,在安全性方面也提供了很多功能,这里简单介绍一下。cookie在web编程中,浏览器经常使用cookie来保存相关用户信息,用于与server交互,但是cookie有很多安全问题,譬如cookie伪造。cookie有很多方式被修改,javascript原创 2014-01-09 22:22:23 · 3904 阅读 · 0 评论 -
学习tornado:介绍
前言在python里面,有许多web framework。对于我来说,因为很长一段时间都在使用tornado,所以有了一些心得体会。虽然现在我的工作重点已经转向go了,但是我觉得还是有必要记录一下tornado的相关东西,毕竟我的高性能网络库 libtnet 就是参考tornado来设计的。在这里,要说明一下,tornado采用的是2.4版本。架构tornado是一个典原创 2013-12-30 22:44:48 · 2369 阅读 · 0 评论 -
证书,CSP与Openssl
证书,CSP与Openssl起因最近在研究更安全的交互体系,自然想到的就是提供证书的交互方式。给用户分配一对公私钥,然后将私钥交给用户保管,用户在登录或者一些关键操作的时候通过私钥签名,从而保证其安全性。鉴于团队的童鞋都没有开发usb key相关的经验,所以最开始的版本只考虑通过软证书实现。为了保证安全性,我们将用户的证书信息放置在windows系统的证书存储区里面,这样既减少原创 2013-06-20 20:28:11 · 2580 阅读 · 0 评论 -
nginx性能优化
nginx性能优化最近在测试服务器压力的时候,发现使用tornado的服务benchmark上不去,顶多1500左右,nginx即使开了8个进程,在响应请求的时候有一个work进程的cpu超高,达到100%的情况。对于cpu超高的情况,当初我们都认为是2.6.18网卡中断只能在一个cpu上处理,导致cpu高,这虽然是一个原因,但是短期内升级整个系统是一个不太可能的事情。鉴于原创 2013-05-26 20:47:42 · 2974 阅读 · 0 评论 -
celery最佳实践
作为一个Celery使用重度用户,看到Celery Best Practices这篇文章,不由得菊花一紧。干脆翻译出来,同时也会加入我们项目中celery的实战经验。通常在使用Django的时候,你可能需要执行一些长时间的后台任务,没准你可能需要使用一些能排序的任务队列,那么Celery将会是一个非常好的选择。当把Celery作为一个任务队列用于很多项目中后,作者积累了一些最佳实践方式,譬如如何用翻译 2014-06-25 16:40:35 · 9776 阅读 · 1 评论