`
qepwqnp
  • 浏览: 106094 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
文章列表
这几天有这样一个需求,要将用户登陆系统的信息统计出来,做成一个报表。当用户登陆成功的时候,服务器会往日志文件里写一条像下面这种格式的记录:”日期时间@用户名@IP“,这样的日志文件第天生成一个。所以,我们只要编历这些日志文件,将所有的登陆信息提取出来,并重新组织数据格式就可以了。用python写一个分析工具非常简单,你会说,用glob获取所有的日志文件,然后对每个日志文件都open(logfile),再一行一行的读取;或者用os.walk,也很简单。其实,标准库提供了另一个辅助模块,我们可以非常方便的完成这个工作,那就是fileinput。下面我们就通过fileinput来编历所有的D盘下的文 ...
好久没写这系列的文章了,我越来越喜欢用python了,它在我的工作中占据的比例越来越大。废话少说,直接进入主题。 anydbm允许我们将一个磁盘上的文件与一个“dict-like”对象关联起来,操作这个“dict-like”对象,就像操作dict对象一样,最后可以将“dict-like”的数据持久化到文件。对这个"dict-like"对象进行操作的时候,key和value的类型必须是字符串。下面是使用anydbm的例子: #coding=utf-8 import anydbm def CreateData(): try: ...
用Python写的一个守护者,核心的代码不到10行。这个方法是由同事想到的,我把核心的代码提出来,真是太cool了: import os, subprocess def Run(): while True: taskList = os.popen('tasklist').read() for path, exe in [os.path.split(line.strip()) for line in open('config') if line.strip()]: if exe not in taskLis ...
这两天在写GM工具,使用wxPython开发,GM工具需要与Web服务器进行简单的交互,Web服务器是用.NET写成。一些关键的数据在传输的过程中进行了加密。.NET有非常完整的加密库,使用也很方便,翻箱倒柜从以前的代码中整了一些对称加密算法出来。而Python标准模块只提供一些hash加密算法,没有提供私钥加密与共钥加密算法,但是借助于开源社区强大的威力,可以很方便的找到加密库。从网上找了一pyDes模块,它实现了DES与TripleDES算法,经过简单的测试,用.NET加密,用Python解密或者用Python加密,用.NET解密没有任何问题。写这篇文件,做个标记,以后再用到类似的应 ...
原文出版:http://www.darkbull.net/ 在最近的项目中,使用了大量的boost::shared_ptr。在游戏服务器中,有时候同一数据块要发送给不同的连接(例如A玩家的一个行走消息包要发给所有附近的玩家),如果为每个连接都拷贝一份数据,显的代价比较大且难以维护,想想发送完数据之后还要释放这些数据块,极易出错,而且性能也不佳。使用智能指针,只需要一份数据块的拷贝,并且不需要去管理内存的释放。但这几天,我又在想,boost::shared_ptr号称是线程安全的,那么在低层维护对象的引用计数时,必定有加琐/解琐。如果频繁的对智能指针进行复制,性能开销也不能忽略。我现在对 ...
(www.darkbull.net) 今天打算将Python集成到项目中作为脚本语言,主要用于处理字符串与网络交互(如发送邮件,提交http请求等)。Boost.Python组件提供了非常方便的接口,使Python集成到C/C++项目中变得十分容易。今天在运行以前写的例子时,发现无法运行,不管是在Python中调用C++扩展库还是在C++中调用Python。在Python中调用C++扩展模块,提示的错误是:Dll load failed: 找不到指定的模块。而在C++中调用Python,则提示找不到python25.dll。哦,这个错误提醒了我,原来,我的boost是比较早前编译的,那时电 ...
为了实现varchar型的字段序号递增,我每次插入数据要先找出数据库中序号最大的那个再加1,可是对   varchar进行order   by   时,得不到正确结果,如   varchar里,‘100’<'99'   怎么实现转化   另外,我只比较varchar的后几位,那个怎么截取后几位再进行int转化再排序呢?   回答1: select   *   from   yourtable   order   by   cast(youcol   as   int) 回答2: order   by   convert(int,   字段) 回答3: 但是你的列里面只能是数字组 ...
原文地址:http://dev.mysql.com/tech-resources/articles/mysql-connector-cpp.html#trx 翻译: DarkBull(www.darkbull.net) 示例代码:MySqlDemo.7z 译者注:该教程是一篇介绍如何使用C++操作MySQL的入门教程,内容简单易用。我对原文中的一些例子进行了修改,并新添加了部分例子,主要目标是更简单明了的向读者介绍如何操作MySQL数据库。本人也是MySQL的初学者,错误也在所难免,欢迎拍砖! 这篇教程将一步一步引导您如何去构建和安装MySql ...
可以使用宏定义没有返回值的“函数”。例如: #define PrintMax(a, b) \ do \ { \ int x = a, y = b; \ printf("Max: %d\n", x > y ? x : y);\ } while (0) // ... PrintMax(3, 4); 这样的“函数”与真正意义上的函数有本质的区别,因为宏是一个编译前行为,仅仅是编译前对文本进行替换。在Python源码中,经常可以看到下面类似的宏定义: #define foo(x) \ ...
原文链接:http://blog.gulu77.com/?p=59 严格来说不单是CSS就能令IE浏览器崩溃(crash),而要配合相应的XHTML架构。到现时为止发现有两种正常写法及一种错误结构分别导致会IE6、IE7崩溃(crash),至于原因我尝试寻找过答案但至今还没找到…如你有这方面的认识或更详细的资料很希望你能分享! 1 crash IE6 code Demo:http://blog.gulu77.com/demo/200808/crash_ie6.html 此BUG只存在IE6中,当伪类为 a:active 时同样会遇到此问题 <mce:style ...
《C专家编程》第三章介绍了如何分析复杂的声明,讲的非常不错。对于作者介绍的分析复杂声明的方法,我没有完全掌握,不过,我有我自己的一套方法来解析复杂的声明,正所谓条条大道通罗马,只要结果一样,必须在乎过程呢。今天在网上找了几个复杂的声明,练练手(声明的例子全部来自网络,原谅出处未详)。记下此文,作个标记,待日后回味。 int (*func)(int *p) 这个就不解释了,每本C语言参考书上都会有的。作为一个C/C++程序员还不会的话,说明你已经out了~~_~~ int (*func)(int *p, int (*f)(int*)) func是一个指针 ...
atexit模块很简单,只定义了一个register函数用于注册程序退出时的回调函数,我们可以在这个回调函数中做一些资源清理的操作。 注:如果程序是非正常crash,或者通过os._exit()退出,注册的回调函数将不会被调用。 我们也可以通过sys.exitfunc来注册回调,但通过它只能注册一个回调,而且还不支持参数。所以建议大家使用atexit来注册回调函数。但千万不要在程序中同时使用这两种方式,否则通过atexit注册的回调可能不会被正常调用。其实通过查阅atexit的源码,你会发现原来它内部是通过sys.exitfunc来实现的,它先把注册的回调函数放到一个 ...
urllib模块提供的上层接口,使我们可以像读取本地文件一样读取www和ftp上的数据。每当使用这个模块的时候,老是会想起公司产品的客户端,同事用C++下载Web上的图片,那种“痛苦”的表情。我以前翻译过libcurl教程,这是在C/C++环境下比较方便实用的网络操作库,相比起libcurl,Python的urllib模块的使用门槛则低多了。可能有些人又会用效率来批评Python,其实在操作网络,或者在集群交互的时候, 语言的执行效率绝不是瓶颈。这种情况下,一个比较好的方法是,将python嵌入到C/C++中,让Python来完成一些不是核心的逻辑处理。又扯远了,废话少说,开始urlli ...
写了个图片蜘蛛人玩玩,抓了几个网页试试,感觉不不错。核心的代码可能20行也不到,简洁明了,嘻嘻。废话少说,翠花,上代码~~ #coding=utf-8 import os import sys import re import urllib URL_REG = re.compile(r'(http://[^/\\]+)', re.I) IMG_REG = re.compile(r'<img[^>]*?src=([\'"])([^\1]*?)\1', re.I) def download(dir, url): '''下载网页中的图片 ...
filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单。python标准库还提供了difflib模块用于比较文件的内容。关于difflib模块,且听下回分解。 filecmp定义了两个函数,用于方便地比较文件与文件夹: filecmp.cmp(f1, f2[, shallow]): 比较两个文件的内容是否匹配。参数f1, f2指定要比较的文件的路径。可选参数shallow指定比较文件时是否需要考虑文件本身的属性(通过os.stat函数可以获得文件属性)。如果文件内容匹配,函数返回True,否则返回False。 filecmp. ...
Global site tag (gtag.js) - Google Analytics