2015年8月15日

摘要: 以下以及后续所有的源码都是基于scrapy1.0.2,并且会涉及到一些python基础和模块。scrapystartprojectspiderpoject生成一个工程,整个目录结构如下图。item.py用来定义数据模型,每个item是继承scrapy.Item,查看scrapy/item.py@si...阅读全文
posted @ 2015-08-15 13:54 twelfthing 阅读(639) 评论(0)  编辑

2015年7月5日

摘要: 接着上一篇继续聊scrapy。断断续续的使用scrapy已经很长时间,在各种问题也算是有所领悟(所需工具firefox,firebug,firefox的xpath插件)。1.非标准的html解析问题(上一篇提到过),这个问题蛋疼不是问题有多难解决,而是很难定位到错误的原因。在firefox中确保xp...阅读全文
posted @ 2015-07-05 22:11 twelfthing 阅读(3728) 评论(3)  编辑

2015年7月4日

摘要: 在编程语言的世界里,python似乎被贴上了做爬虫的一个标签,强而有力。而scrapy做为另一个老牌的开源项目,更是大规模抓取不可或缺的一个重要力量。纵使scrapy依旧有一些长期无法解决的诟病,但是他在抓取过程帮程序员解决的一系列的细节问题,还是有无以伦比的优势。缺点1. 重量级scrapy依赖于...阅读全文
posted @ 2015-07-04 15:35 twelfthing 阅读(1629) 评论(0)  编辑

2013年12月17日

摘要: pyqt是封装qt,开发夸平台的桌面应用程序的python模块,去年就接触过,不深。最近一段时间重新使用起来。以下的内容在互联网上都能搜索得到,都是经过我的实践过。1. 根据屏幕大小将窗口移动到合适的位置 desktop = QApplication.desktop().availableGeometry()#获取屏幕大小 mw = self.geometry() mw.moveTo(desktop.width()/2-mw.width()/2,desktop.height()/2-mw.height()/2) self.setGeome...阅读全文
posted @ 2013-12-17 17:24 twelfthing 阅读(1057) 评论(0)  编辑

2013年8月16日

摘要: 在网上上看到一篇文章,用到sphinx的分布式特性来提高搜索性能,就做了个简单的测试。1. sphinx配置.配置加粗部分是核心,让sphinx支持分布式。source multi1{ type = mysql sql_host = 127.0.0.1 sql_user = root sql_pass = passwd sql_db = cs sql_port = 3306 sql_query = select id,title,conte...阅读全文
posted @ 2013-08-16 17:58 twelfthing 阅读(885) 评论(0)  编辑

2013年6月13日

摘要: coreseek是基于sphinx的专攻中文的独立搜索引擎,官网地址http://www.coreseek.com/具体的安装部署,官网上已经很详细了,我只谈一下使用体验1. 做类似于like的查询,之前也在网上搜索很多,大致有2种办法,其中一种就是我现在正在使用的一种方式“一元切分”(http://www.coreseek.cn/products-install/ngram_len_cjk/)。 首先是索引大小,250w的新闻记录,索引大概是5.6G,比我预期的要好得多。 其次是性能,250w的数据,有排序,有过滤,有group,最变态的查询都在4s内完成。 再就是索引速度,250w的数据,阅读全文
posted @ 2013-06-13 18:12 twelfthing 阅读(301) 评论(1)  编辑

2013年4月12日

摘要: 报社利用自己的历史数据,印刷专题性质的纸质刊物,就需要利用indesign进行排版,而在手动排版之前,需要生成原始的模板,从而让后期的工作减少。环境搭建1. 从indesign的官网上下载indesign的sdk。下载地址在这里,我用的是Adobe InDesign CS5.5 Products SDK,解压。我的放在G:\indesign\Adobe InDesign CS5.5 SDK\2. 配置环境变量。G:\indesign\Adobe InDesign CS5.5 SDK\devtools\sdktools\idmltools配置到环境变量的path。具体G:\indesign\Ad阅读全文
posted @ 2013-04-12 18:37 twelfthing 阅读(714) 评论(1)  编辑

2013年2月19日

摘要: 这是一个程序员的年终总结和新一年的展望,中国人还是更喜欢把春节作为一年的开始。好吧,先感慨一下,一年过去的很快,去年的这个时候,刚从上海到武汉,还在办公室下面放了一个大大的鞭炮,到处找房子,这些场景都还历历在目,一切都好像发生在昨天,只能说人生大起大落是在太快。 先总结一下过去的一年,总体来是平淡中带着一些些波澜 1. 做了一个项目的leader,总体来说没有达到对自己的要求,整个项目进度稍慢,当然客观原因也有,主要的还是自己在管理方面缺少经验,关注度不够高。 2. 零度搜索,做了一次大的改进,提高精度,自动化部署,后期调试的工作减少。 3. 零标引,虽然现在还没有一个客户部署过,但是我相信.阅读全文
posted @ 2013-02-19 11:16 twelfthing 阅读(238) 评论(0) 编辑

2012年11月15日

摘要: 在使用py2exe将程序生成exe的时候,py2exe提供了一个bundle参数,默认是33: don't bundle2: bundle everything but the Python interpreter1: bundle everything, including the Python interpreter开始的时候,还以为bundle取值只是对最后的dist文件夹里的不同而已,而对于应用程序实际的没有任何区别,结果就是因为这个我花1天的时间调试。 1 setup(console=["mkiso.py"], 2 options={ 3 "py阅读全文
posted @ 2012-11-15 11:35 twelfthing 阅读(672) 评论(0)  编辑

2012年8月9日

摘要: 这个纯属发泄的一篇博客。不就是这么点破事吗,有必要像防着小偷一样吗。我不属于那种不自觉的,这样真的没有必要。每次出现这种情况,我都心中会有少许的不安,但是每次有不信任的声音出现,我的内疚彻底没有了,有的只是离开的冲动。就怪自己没什么魄力,选择性纠结。如果哪一天我决定离开了,任何人都拉不回我的。阅读全文
posted @ 2012-08-09 16:40 twelfthing 阅读(407) 评论(0) 编辑

2012年5月28日

摘要: 例如,我需要答应100行hello world,很简单的方法,就是 s = "hello world\n" print s*100当然有时候,不可能这么简单 s = "hello world\n" for i in xrange(100): #do something s += s如果你这么去做了,后果就只有一个,死机先看一个我测试的列子吧 import time a = 'a'*10 b = time.time() for i in range(26): a += a print time.time()-b #大约花掉35s时间花掉35阅读全文
posted @ 2012-05-28 13:30 twelfthing 阅读(609) 评论(3)  编辑

2012年5月4日

摘要: 听说过nodejs大约在半年前,那个时候,下载一些服务的python客户端的时候,总发现有nodejs的客户端,于是就看了一些关于nodejs的资料。都是一些初浅的总结,算是自己花了时间的在nodejs上的一个见证吧。nodejs,名称种带着一个js,让人浮想连篇,js主要的用于客户端的脚本语言,而nodejs实际上是用js做服务端,是不是很酷。而这个是怎么做的呢?实际上nodejs是使用了Google的V8虚拟机,来执行js的代码。1. 安装(环境是ubuntu10.04)sudo add-apt-repository ppa:chris-lea/node.jssudo apt-get up阅读全文
posted @ 2012-05-04 18:32 twelfthing 阅读(771) 评论(0)  编辑

2012年3月26日

摘要: 背景:公司有个项目,需要一个夸平台的cs系统配合,由于公司的主要产品是用C#开放的,所以就这个项目就有python来完成。简介:PyQt是Qt库的Python版本,Qt库是目前最强大的GUI库之一,用C++编写,因此简单的说PyQt就是python封装的C++的GUI库。安装:由于要夸平台,因此需要在linux和windows下安装,windows上安装倒是没遇到什么问题,直接安装sip和pyqt的exe文件就行,但是在linux下(我用的ubuntu10.04),如果直接apt-get install pyqt4 是没有任何问题的。因为这种安装方式安装的pyqt不是最新的版本,因此,我选择了阅读全文
posted @ 2012-03-26 19:11 twelfthing 阅读(443) 评论(0)  编辑

2012年1月9日

摘要: 2012,玛雅人预言的世界末日就要到了,现在看来是买不起上船票了,如果这一天真的来了,我基本上是跪定了,兴庆的是没有房贷,不欠银行的钱。1. 工作经历08年3月份就出来实现,掐指一算,现在就快4年。08年3月起在开始打酱油,这个酱油打了多长时间具体不知道,反正就是觉得打酱油打的恶心了,这段时间思考的最多的问题到底适不适合做java,思考问题的方式,解决问题的方法都存在很大的问题。09年开始虽然说不在是纯酱油,但是还是在酱油的边缘。于是我在业余时间里开始接触python,大概是09年4,5月开始的。对于我来说从python转到python,是个比较明治的决定,这个也是受到冯巩相声里一句话的音像,阅读全文
posted @ 2012-01-09 15:34 twelfthing 阅读(293) 评论(0)  编辑

2011年12月1日

摘要: 看看了一下自己的blog,写了一篇2010总结,感慨良多。这2011年也将近尾声了,需要做的也差不多了。老规矩还是总结一下,2011还没有彻底完,但是想想马上就2012,怕没有机会写啊。2010年总结中的计划让人揪心的是,计划永远赶不上变化。写下这句话的总让人感觉到了一些为自己的找一些借口,推托致词,连我自己都鄙视自己了。1. twisted的深入学习,深入的意思是看部分的源代码。gevent的学习----------有些研究,不过还是停留在这个水平上,完成情况10%2. mongodb使用----------完成10%3. bottle源码研究----------完成0%,现在不是太纠结4.阅读全文
posted @ 2011-12-01 11:13 twelfthing 阅读(125) 评论(0)  编辑

2011年11月3日

摘要: 今天巨二,不小心把/usr/的权限改成了777,我了个去阿,导致sudo执行报错sudo: must be setuid root,我是在安装ubuntu10.04后没有给root创建密码,也无法切换到root下去。网上找了一下,需要在recovery mode里去找到使用不要密码的root权限。1. 无法进入crud的菜单选项,也是巧合在/boot/grub/grub.cfg正好有写的权限,需要把里面的set timeout=0的地方改成set timeout=10,然后重启,就顺利进入到crud菜单。2. 进入修复模式,在进入root,就可以不需要root密码而有root的权限了3. c.阅读全文
posted @ 2011-11-03 17:56 twelfthing 阅读(334) 评论(0)  编辑

2011年10月14日

摘要: 1. reids Persistence持久化在默认情况下,Redis将数据集的快照通过一个名为dump.rdb的二进制文件保存在磁盘上,在redis.conf里设置dbfilename。可以手动条用save和bgsave来保存到dump.rdb里去,这两个命令的不同之处在与save是同步,直到保存完毕之后才有返回值,而bgsave是异步的,调用bgsave后就有返回值,保存的动作在后台运行。import redisimport timem = redis.Redis(host='127.0.0.1',port=6379,db=0)for i in range(30000): 阅读全文
posted @ 2011-10-14 18:05 twelfthing 阅读(1299) 评论(0)  编辑

2011年10月13日

摘要: 版本:Redis server version 2.2.14客户端:python-redis2.4.9redis安装路径/usr/local/redis/1.复制(http://redis.io/topics/replication)cd /home/cccp /usr/local/redis/redis.conf redis_m.confcp /usr/local/redis/redis.conf redis_s.conf 编辑redis_m.conf dbfilename dump_m.rdb port 6379 编辑redis_s.conf dbfilename dump_s.rdb p阅读全文
posted @ 2011-10-13 10:11 twelfthing 阅读(330) 评论(0)  编辑

2011年9月22日

摘要: 转载了一下,因为东西概念有点模糊,总是弄不清楚,以备查阅。基本语法location [=|~|~*|^~] /uri/ { … }= 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。~ 为区分大小写匹配~* 为不区分大小写匹配!~和!~*分别为区分大小写不匹配及不区分大小写不匹配^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。例:location = / { # 只匹配 / 查询。location / { # 匹配任何查询,因为所有请求都已 / 开头。但正则表达式规则和长的块规则将被优先和查询匹配。location ^~ /images阅读全文
posted @ 2011-09-22 15:50 twelfthing 阅读(187) 评论(0)  编辑

2011年9月6日

摘要: 这篇文章取这个名字的时候,就说明了我以前对urllib2理解太肤浅了。要这么一个需求,需要读取ftp上的内容,ftp有身份验证的。开始以为直接用open('ftp://127.0.0.1')就行了,后来又google了一下,有人说直接用urllib2读取就行。import urllib2req = urllib2.Request('ftp://127.0.0.1/workspace/app.wsgi')print urllib2.urlopen(req).read()很明显需要身份验证的上面的代码就不能用了。开始以为把username,password作为参数p阅读全文
posted @ 2011-09-06 14:54 twelfthing 阅读(239) 评论(0)  编辑

2011年8月21日

摘要: filecmp是python的一个内置模块,用来比较文件或者文件夹是否相同,http://docs.python.org/library/filecmp.html,还是看看filecmp有哪些属性和方法吧其中比较核心的就是cmp,cmpfiles,dircmp1. filecmp.cmp(f1, f2[, shallow])其实就是比较2个文件,f1,f2,后面还有一个参数就是shallow,是否考虑文件的属性,如创建时间,权限等等。默认是False2. filecmp.cmpfiles(dir1, dir2, common[, shallow])比较2个文件夹里指定的文件。3. filecm阅读全文
posted @ 2011-08-21 12:30 twelfthing 阅读(469) 评论(0)  编辑

2011年8月19日

摘要: functools 是python2.5被引人的,文档在http://docs.python.org/library/functools.htmlfunctools里有partial,reduce,update_wrapper,wraps我们一个一个的来理解1. functools.reduce和python内置的reduce是一样的,2. functools.partial一个带 n 个参数,partial 的函数固化第一个参数为固定参数,并返回另一个带 n-1 个参数函数对象.from operator import addimport functoolsprint add(1,2) #3阅读全文
posted @ 2011-08-19 14:07 twelfthing 阅读(1644) 评论(0)  编辑

2011年7月1日

摘要: 首先我们来看看threading包含那些属性和方法吧(官方文档在http://docs.python.org/library/threading.html)就我一直不太明白的几个点开始吧1. ConditionA factory function that returns a new condition variable object. A condition variable allows one or more threads to wait until they are notified by another thread.Condition涉及到的几个方法acquire, releas阅读全文
posted @ 2011-07-01 14:43 twelfthing 阅读(10829) 评论(3)  编辑

2011年5月31日

摘要: python里做webservice的库大体上有soappy,soaplib,xmlrpc等,详细参考http://wiki.python.org/moin/WebServices。这里具体说说soap方式soappy应该是在google以后第一个出现,但是这个包好像已经老长时间不跟新,所以推荐soaplib,跟新比较频繁。http://soaplib.github.com/soaplib/2_0/是它的官网地址。当然还有ZSI,这个用起来比较麻烦。贴一个helloword的例子吧。import soaplibfrom soaplib.core.service import rpc, Defi阅读全文
posted @ 2011-05-31 11:24 twelfthing 阅读(3015) 评论(2)  编辑

2011年4月25日

摘要: 确实,有一点时间没有跟新了,一是因为最近比较忙,二是因为最近所接触到的东西比较杂,都浮于表面,没有深沉的去研究。还是要稍微总结一下。1. pil安装,很多时候,就是直接sudo easy_install pil. 这样的就会出现pil decoder jpeg not available这样的错误。做一下的操作删除以前安装的pil$ sudo aptitude install libjpeg libjpeg-dev$ sudo aptitude install libfreetype6 libfreetype6-dev $ python setup.py build_ext -i $ sudo阅读全文
posted @ 2011-04-25 11:23 twelfthing 阅读(243) 评论(0)  编辑

2011年3月9日

摘要: 1.在文件夹里查找含有某些字符串 find / -type f -name "*.php" |xargs grep "mail"2.查看端口占用情况 netstat -an|grep 8080 nmap localhost|grep 80803.查看端口是否开启telnet ip port阅读全文
posted @ 2011-03-09 11:25 twelfthing 阅读(104) 评论(0)  编辑

2011年2月12日

摘要: twisted里是通过回调机制来实现类似于多线程,意思是防止程序的运行由于等待某项任务的完成而陷入阻塞停滞,提高整体运行的效率。from twisted.internet import reactor1. reactor.callFromThreadMethod callFromThread:Cause a function to be executed by the reactor thread. Use this method when you want to run a function in the reactor's thread from another thread.阅读全文
posted @ 2011-02-12 10:24 twelfthing 阅读(825) 评论(0)  编辑

2011年1月27日

摘要: 1. SOAP[代码]测试代码[代码]2. XMLRPC[代码]测试[代码]3.JSONRPC,twisted似乎还不支持,但是有很多开源的项目把这个做了。阅读全文
posted @ 2011-01-27 11:12 twelfthing 阅读(245) 评论(0)  编辑

2011年1月25日

摘要: .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压:tar zxvf FileName.tar.gz压缩:tar zcvf FileName.tar.gz DirName———————————————.bz2解压1:bzip2 -d FileName.bz2解压2:bunzip2 FileName.bz2压缩阅读全文
posted @ 2011-01-25 21:35 twelfthing 阅读(68) 评论(0)  编辑
 
摘要: 本来不打算写这种总结的,可是今天早上还睡在床上的时候突然闪出个念头,马上就快要工作3年了。这导致我立马睡不着了,大好的睡觉时间就被我在床上翻来覆去的。于是打算总结一下过去,规划一下未来。这里只谈工作方面的,至于其他的,心里有数就行。概要:1. 2010年6月7号正式到这家公司上班,至今也快7个月,这里工作让人愉快,也结实了一群不错的人。这里大半年是一个蓄势待发的时间,大部分的时间是研发的过程,没给公司带来实质性的效益,但是这样注定2011年是个收获的期。2. 6月份之前在苏州,也是我第一家公司,那里的人和物让人留念,让我成为一个菜鸟变成一个不是很菜的鸟。虽然这里的工作让我很不愉快,但是依然要感阅读全文
posted @ 2011-01-25 10:11 twelfthing 阅读(127) 评论(0)  编辑

2011年1月6日

摘要: B-treeB-treeB-tree(多路搜索树,并不是二叉的)是一种常见的数据结构。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。按照翻译,B 通常认为是Balance的简称.这个数据结构一般用于数据库的索引,综合效率较高。结点B-tree中,每个结点包含:  1、本结点所含关键字的个数;  2、指向父结点的指针;  3、关键字;  4、指向子结点的指针;  对于一棵m阶B-tree,每个结点至多可以拥有m个子结点。各结点的关键字和可以拥有的子结点数都有限制,规定m阶B-tree中,根结点至少有2个子结点,除非根结点为叶子节点,相应的,根结点中关键字的个数为1阅读全文
posted @ 2011-01-06 11:31 twelfthing 阅读(602) 评论(0)  编辑

2010年12月27日

摘要: 以下从别地方copy的,记录一下,免得忘记了。安装ftp客户端 1. 连接ftp服务器  格式:ftp [hostname| ip-address]  a)在linux命令行下输入:ftp 10.18.34.115  b)服务器询问你用户名和口令,分别输入yint和相应密码,待认证通过即可。  2. 下载文件  下载文件通常用get和mget这两条命令。  a) get  格式:get [remote-file] [local-file]  将文件从远端主机中传送至本地主机中.  如要获取服务器上E:\rose\1.bmp,则  ftp> get /rose/1.bmp 1.bmp (回车) 阅读全文
posted @ 2010-12-27 15:20 twelfthing 阅读(253) 评论(0)  编辑
 
摘要: 今天突然之间运行sudo apt-get update的时候,一堆链接连接不上去,一直以来我都是用的ubuntu的默认源,这次也不知道为什么,只有换了替换etc/apt/source.listdeb http://mirrors.163.com/ubuntu/ lucid main universe restricted multiversedeb-src http://mirrors.163.com/ubuntu/ lucid main universe restricted multiversedeb http://mirrors.163.com/ubuntu/ lucid-securit阅读全文
posted @ 2010-12-27 13:56 twelfthing 阅读(1116) 评论(0)  编辑

2010年12月24日

摘要: 接http://www.cnblogs.com/twelfthing/articles/1905365.html9. range查询,(http://xapian.org/docs/valueranges.html)StringValueRangeProcessor:[代码]另外还有numberrange,daterange等等,daterange的用法和stringrange差不多,numberrange有点小区别,就是在设置value值的时候,需要对数字处理一下,如下[代码]10. add termdocument.add_term对term长度有限制,最长不能大于245个字符。需要处理的阅读全文
posted @ 2010-12-24 16:25 twelfthing 阅读(581) 评论(0)  编辑
 
摘要: redis,一直在用,遇到不会的地方,也是先看文档,然后去google,没什么总结的。今天就来总结一下,仅仅是一些体会。1. redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)的数据,而且还能完成排序(SORT)等高级功能,在实现INCR,SETNX等功能的时候,保证了其操作的原子性,除此以外,还支持主从复制等功能。2. redis是全内存的非关系型数据库,意思是key,value全部存放在内存阅读全文
posted @ 2010-12-24 14:42 twelfthing 阅读(894) 评论(0)  编辑

2010年12月23日

摘要: 中文的文本相似度的计算是基于分词来的余弦定理: 提取两段文本中所有词(事先需用空格分割好) 计算每个词在两段文本中分别出现的次数(用BSD tree.h里的RBTREE保存) 用词频做为A、B的分量 使用余弦公式计算AB夹角的余弦值jaccard: 大体差不多代码如下,分词用的是mmseg[代码]阅读全文
posted @ 2010-12-23 15:01 twelfthing 阅读(792) 评论(0)  编辑

2010年12月15日

摘要: 在ubuntu下安装cx_Oracle需要安装oralce的client,安装oralce的client的方法网上都有:http://hi.baidu.com/%C2%CC%B0%D3%D0%C4%C9%F1%B2%BB%C4%FE/blog/item/de5ebf08557ac3c43bc763d1.html上copy的Oracle 为 Ubuntu 用户设立了专门的 apt 源服务器,只需要在 /etc/apt/source.list 中添加一行:deb http://oss.oracle.com/debian unstable main non-free 即可。在运行 apt-get u阅读全文
posted @ 2010-12-15 16:30 twelfthing 阅读(1230) 评论(0)  编辑

2010年12月14日

摘要: 接http://www.cnblogs.com/twelfthing/articles/1905310.html4. 性能 官网上说到xapian的性能,用到了very well 。The short answer is “very well” – a previous version of the software powered BrightStation’s Webtop search engine, which offered a search over around 500 million web pages (around 1.5 terabytes of database fil阅读全文
posted @ 2010-12-14 11:42 twelfthing 阅读(1673) 评论(0)  编辑
 
摘要: 给这篇文章去了一个很潮的名字。充分的说明了这个过程是一个痛并快乐这的过程,xapian是老外的东西,中文资料少的可怜,很多东西都是自己慢慢摸索的。于是就想这写点动总结一下使用的心得。废话少说,言规正传。(一下涉及到代码部分全是用python)1.xapian表《《利用xapian构建自己的搜索引擎》》里已经讲的很明白,下面是copy下来的。lposting list table保存了被每一个term索引的document,实际上保存的应该是document在database中的Id,此Id是唯一的。lrecord table保存了每一个document所关联的data,data不能通过quer阅读全文
posted @ 2010-12-14 10:59 twelfthing 阅读(2313) 评论(0)  编辑

2010年12月9日

摘要: 背景:公司另外的一个.net项目需要webserver来比较文本的相识度,我用python写好,为了方便部署,就用py2exe打包。[代码]代码简单的一塌糊涂,但是遇到另外的一些问题,比如说在这个webserver里需要用到一个文件存放数据,这个文件夹类似于一个数据库的功能,而如果直接指定这个文件夹,打包之后的exe移到另外的地方,一切都不是按照想象的去走了,于是就要下面的一段代码,官网上有的[代码]阅读全文
posted @ 2010-12-09 15:52 twelfthing 阅读(173) 评论(0)  编辑