技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

2012年7月3日 #

Ubuntu上PHPUnit安装

摘要: 什么是PHPUnit?PHPUnit是一个轻量级的PHP测试框架。它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋KentBeck的设计)Ubuntu上安装sudoapt-getinstallphpunit验证PHPUnit安装成功,命令行输入phpunit$ phpunit安装成功打印:PHPUnit 3.6.11 by Sebastian Bergmann.Usage: phpunit [switches] UnitTest [UnitTest.php] phpunit [switches] <directory>如果出现如 阅读全文

posted @ 2012-07-03 22:45 codestyle 阅读(616) 评论(0) 推荐(0)

2012年7月2日 #

python:内存泄漏测试

摘要: #测试内存泄露#import gc#gc.enable()#gc.set_debug(gc.DEBUG_LEAK)#gc.collect()#start = len(gc.garbage)#print aDict[CMD]self._funcmap[ aDict[CMD] ]( aCur, self, aDict )#gc.collect()#end = len(gc.garbage)#if start != end:# print "************************* %d - %d" % (start, end) 阅读全文

posted @ 2012-07-02 11:45 codestyle 阅读(637) 评论(0) 推荐(0)

2012年6月28日 #

O_APPEND:原子操作

摘要: 当多个进程打开同一个文件写入日志的时候,OPEN时指定了O_APPEND参数,UNIX能保证这个操作是原子的,程序不需要自己加锁/*log1.c*/#include<stdio.h>#include<string.h>#include<fcntl.h>#include<unistd.h>int Max = 300;int main(){ int i; int fd; fd = open("1.log",O_WRONLY | O_APPEND); for(i=0;i<Max;i++) { char msg[100]; sp 阅读全文

posted @ 2012-06-28 00:44 codestyle 阅读(891) 评论(0) 推荐(0)

2012年6月18日 #

EVERNOTE基于Thrift打造开放API接口

摘要: http://www.openapis.net/Help.EVERNOTEbaseThriftdzopenAPI.ashx在2007年当我们开始计划Evernote服务的时候,我们就知道在发布服务的那一天就需要同时支持瘦客户端(象浏览器)和胖客户端。这一点促使我们在设计web用户界面之前就开始思考远程协议和客户端访问API接口,而不是拖到几个月之后将API接口架在已经存在网站服务上。我们的应用对API访问接口提出了下面的需求:1、跨平台。当我们08年2月份发布的时候,我们产品代码有服务器端JAVA、客户端是Win32(包括WinMobile) C++、客户端Obj-C Cocoa。2、二进制数 阅读全文

posted @ 2012-06-18 13:49 codestyle 阅读(686) 评论(0) 推荐(0)

2012年6月14日 #

转:C语言中time_t数据类型详细介绍

摘要: 原文:http://www.eefocus.com/xuefu2009/blog/10-03/187348_f456a.html包含文件:#ifndef__TIME_T#define__TIME_T /*避免重复定义time_t*/typedef long time_t; /*时间值time_t 为长整型的别名*/#endif既然time_t实际上是长整型,到未来的某一天,从一个时间点(一般是1970年1月1日0时0分0秒)到那时的秒数(即日历时间)超出了长整形所能表示的数的范围怎么办?对time_t数据类型的值来说,它所表示的时间不能晚于2038年1月18日19时14分07秒。为了能够表示更 阅读全文

posted @ 2012-06-14 13:37 codestyle 阅读(914) 评论(0) 推荐(0)

2012年6月11日 #

apue源码编译

摘要: http://www.apuebook.com/可以下载源码src.tar.gz修改配置文件编辑源码解压生成的apue.2e文件夹下的Make.defines.linux修改WKDIR=/home/var/apue.2e为你的apue.2e目录,比如我的apue源码解压在/usr/local,那我就改为:WKDIR=/usr/local/apue.2e然后进入apue.2e/std 目录,编辑linux.mk。修改里面所有的nawk为awk。最后返回apue.2e目录,执行make命令。解决编译错误getenv1.c:4: error: ‘ARG_MAX’ undeclared here (n 阅读全文

posted @ 2012-06-11 15:14 codestyle 阅读(588) 评论(0) 推荐(0)

【转】如何安装rabbitmq-c-aafba2c665b5这个版本的rabbitmq-c

摘要: http://hi.baidu.com/snowhilloldman/blog/item/a26830dd76b768205882dd30.html照理安装一个库这么简单的东东不应该写一篇垃圾文章,只是,我的真的很痛苦,希望看官们理解!先下载这个库吧:(点了以后文件名会自动变成rabbitmq-c-aafba2c665b5.tar.gz)http://hg.rabbitmq.com/rabbitmq-c/archive/tip.tar.gz这个库的最后更新时间是2010-04-20,姑且命名其版本为:rabbitmq-c-20100420再下载另一个库:(点了以后文件名会自动变成rabbitm 阅读全文

posted @ 2012-06-11 14:35 codestyle 阅读(286) 评论(0) 推荐(0)

python读写命名管道

摘要: apue里说匿名管道只能在父子进程里使用。如果两个没有关系的进程要通信,就只能使用命名管道,最简单的代码这里:pwrite.pyimport osfd = os.open('pipetest',os.O_NONBLOCK | os.O_CREAT | os.O_RDWR)os.write(fd,"hello")pread.pyimport osfd = os.open('pipetest',os.O_RDONLY)s = os.read(fd,5)print s 阅读全文

posted @ 2012-06-11 14:30 codestyle 阅读(4841) 评论(0) 推荐(0)

python使用amqp的例子

摘要: web程序需要给IPHONE手机推送消息,移动端同事写好了一个LIB,但是这个LIB使用的是阻塞IO,在APPLE服务器返回前程序是阻塞的,他们用了多线程来解决这个问题,但是webpy运行在apache里,无法进行线程管理,所以就迫切需要一个异步的机制来解决这个问题,希望做到需要发送消息时。调用一个函数,把数据扔进管道或者消息队列后就立即返回,也不管数据是否真的出去了,它相当于生产者,再有一个程序从管道或者队列中读取,进行实际的发送,相当于消费者但是python似乎只封装了IPC(UNIX/LINUX平台进程通信规范)的匿名管道,命名管道的API,并无消息队列,而且管道似乎不易操作,因此想使用 阅读全文

posted @ 2012-06-11 12:37 codestyle 阅读(3462) 评论(1) 推荐(1)

消息队列:amqp 以及ubuntu安装命令(apt-get)

摘要: (一)基本概念RabbitMQ是流行的开源消息队列系统,用erlang语言开发。我曾经对这门语言挺有兴趣,学过一段时间,后来没坚持。RabbitMQ是AMQP(高级消息队列协议)的标准实现。如果不熟悉AMQP,直接看RabbitMQ的文档会比较困难。不过它也只有几个关键概念,这里简单介绍。RabbitMQ的结构图如下:几个概念说明:Broker:简单来说就是消息队列服务器实体。Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。Queue:消息队列载体,每个消息都会被投入到一个或多个队列。Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。Ro 阅读全文

posted @ 2012-06-11 12:19 codestyle 阅读(971) 评论(0) 推荐(0)