Archive for the ‘默认分类’ Category

ColaPHP 0.5beta发布

Sunday, January 24th, 2010

ColaPHP的第一个beta版本,代号:Practice,已经实践的优化,可以适量应用在实际项目中,相比较0.4alpha,比较大的修改如下: 增加字符串加密助手,支持XOR、mcrypt加密,支持混淆 增加分页类 重构了HTTP请求类,可定制性更强 重构了Validate类,增加批量校验 其他代码重构以及bug fix 下载ColaPHP 0.5beta,阅读ColaPHP文档,访问ColaPHP项目。 下一个版本0.6beta开发代号:Easy,将在易用性方面进一步优化。

MongoDb In Action

Saturday, January 23rd, 2010

This slide will tell you how to use MongoDb as MySQL in your application.

Python处理MP3的歌词和图片

Thursday, January 21st, 2010

一些MP3播放器(包括iphone、ipod、itouch、blackberry等)可以在播放mp3的时候显示专辑图片、歌词等信息而不需要额外的图片文件和歌词文件,仅仅一个mp3文件就搞定,比较有意思。除了用专门的软件(比如itunes)来制作这样的mp3,我们还可以用程序来批量生成。 查阅mp3头信息ID3V2的技术文档,发现可以往ID3信息里面加入歌词和图片信息(可以在页面上查找Lyrics、Attached picture就能发现相应的内容)。有了官方格式上的支持,我们要做的就是把歌词和图片加入到MP3文件中去。 测试一些开源的软件包,发现一个比较可靠的:eyeD3,由python语言编写,直接上代码: #coding=utf-8 import eyeD3 import re # mp3文件 mp3_file = '/path/to/foobar.mp3' # lrc歌词文件 lrc_file = '/path/to/foobar.lrc' # 专辑图片 pic_file = '/path/to/foobar.jpg' # 实例化eyeD3 tag = eyeD3.Tag() # 绑定到mp3文件 tag.link(mp3_file) # 去掉原文件中可能存在的图片 tag.removeImage() # 去掉原文件中可能存在的歌词 tag.removeLyrics() # 设定编码,非常重要,否则不支持中文 tag.encoding = '\x01' # 添加图片 tag.addImage(3, pic_file, u'') # 添加歌词,注意要utf-8编码,去掉lrc中时间信息 tag.addLyrics(re.sub('(\[.*?\][\n]*)+', '', unicode(open(lrc_file, 'r')).read(), 'utf8'))) # 更新到文件 tag.update() 代码非常简单,需要注意的是设定编码,不然歌词就乱码了。有了eyeD3之后,可以写个爬虫,从网上抓下歌词和图片直接灌进MP3文件里面,剩下的就是享受了。

还在路上

Thursday, December 31st, 2009

又是一年算账的时候,去年的今天写了2009年的一些计划:网络(socket)/桌面(gui)编程;一个精巧的PHP框架;数据挖掘;多一些好朋友。socket/gui编程算是稍稍入门吧;PHP框架(ColaPHP)已经发了4个alpha版本,目前从实际项目中看表现还可以,可能下一个版本就进入beta阶段,beta意味着ColaPHP逐步趋于稳定;数据挖掘前半年做的比较多,进展不算太大;好朋友多了一些,此事甚为欣慰。 2009年技术上主要是代码方面的成长,重构的事情做的比较多,已不太相信过于花哨的玩意。脾气方面,"骄躁"二字少了些。回过头来看2009,不觉太多收获,亦不觉浮度。 2010年想要做的一些事情:学一门新语言;ColaPHP发一个GA版本;数据挖掘,做一个开源的推荐系统;更多的好朋友。 希望春天能在2010年到来。

ColaPHP-0.2-alpha发布

Tuesday, July 28th, 2009

相比较0.1alpha,比较大的修改如下: 增加了Cache处理模块,支持APC、eAccelerator、Memeched、File、Xcache、Dba缓存 增加日志处理模块,支持Echo、File、Null三种类型 去掉了Cola.php中404处理,建议用户在url规则最后的位置加上'/.*/'来处理其他任何没有匹配的请求 demo做了一点小的修改,有一个演示不需要定义url规则、跳过Router.php的方法(参见demo/norouter.php) 一些bug的修订 同时欢迎Python.Han, darkredz加入到项目中来,有你们ColaPHP会更精彩。 下载0.2alpha,不过建议随时跟进我们的SVN://colaphp.googlecode.com/svn/trunk/,ColaPHP一直在活跃开发。 继续招募PHP极客加入Cola,联系fuchaoqun#gmail.com。

解决Pidgin掉线、自动退出、假死、无响应

Tuesday, April 14th, 2009

最近几天,被pidgin折腾疯了,一会上线,一会自动退出,一会假死,看到好友发过来消息,可阅读不了具体内容,折腾的身心疲惫,升级到最新版本也无济于事。 由于在pidgin上登录了msn和gtalk帐号,初步怀疑是MSN插件的问题,貌似MSN之前升级了版本。禁用MSN帐号后,pidgin恢复稳定。 郁闷的不行了,找到一个第三方的MSN插件:http://code.google.com/p/msn-pecan/ wget http://msn-pecan.googlecode.com/files/msn-pecan-0.0.18.tar.bz2 tar xjf msn-pecan-0.0.18.tar.bz2 -C /usr/local/src cd /usr/local/src/msn-pecan-0.0.18/ make make install 安装之前记得安装libpurple-devel yum install libpurple-devel 安装好了之后,pidgin中会出现WLM协议,用这个做MSN登录,世界总算清静下来了。 我这边是CentOS 5.3,Pidgin 2.5.5-1.el5,其他版本安装说明,阅读http://code.google.com/p/msn-pecan/wiki/HowToInstall

一生所爱

Wednesday, March 4th, 2009

用自建的推荐系统给自己推荐歌曲,排在前面的居然有一首《一生所爱》,看大话西游的时候就特别喜欢这首歌,一直不知道叫什么名字,人生要是如算法那样简单该是多么的好。 一生所爱 曲:卢冠廷 词:唐书琛 编:卢冠廷 唱:卢冠廷 从前现在过去了再不来 红红落叶长埋尘土内 开始终结总是没变改 天边的你飘泊白云外 苦海翻起爱浪 在世间难逃避命运 相亲竟不可接近 或我应该相信是缘份 情人别后永远再不来(消散的情缘) 无言独坐放眼尘世外(愿来日再续) 鲜花虽会凋谢(只愿)但会再开(为你) 一生所爱隐约(守候)在白云外(期待) 苦海翻起爱浪 在世间难逃避命运 相亲竟不可接近 或我应该相信是缘份 苦海翻起爱浪 在世间难逃避命运 相亲竟不可接近 或我应该相信是缘份 自觉好像一条狗。

Key-Value型数据存储

Tuesday, January 20th, 2009

本博客所有原创文章采用知识共享署名-非商业性使用-相同方式共享,转载请保留链接http://chaoqun.17348.com/2009/01/key-value-stores/ 早上看到博客Anti-RDBMS: A list of distributed key-value stores(抵制关系型数据库:分布式key-value存储列表),最近的项目中也有用到类似Key-Value的存储。 memcached是最典型的key-value型存储,估计也是使用最广泛,但是由于memcached数据存放在内存中,服务重启或者系统down机之后就会丢失,只能用来缓存非关键数据(丟了没关系,重建就可以),或者考虑memcached的持久化方案:memcachedb,不过还是建议缓存次关键数据,比如文章点击数,写入失败或者丢了数据也不是太要命。 有时候我们的数据本身就是key-value型的,比如字典数据,就两列:单词->释义,这样的数据存mysql之类的关系型数据库就有点太"重"了,大可采用key-value型的存储方案,Berkeley DB就足够用了。 一直在关注CouchDB,已经是Apache的顶极项目了,系统稳定和版本更新自然有保障一些,居于Erlang语言开发,高并发也不是问题,relication也集成在里面,分布式也很容易做到,提供HTTP Restful接口,方便调用。个人觉得最适合股票类的网站,需要实时更新股票价格,用这个简直就是就像是定制的,不知道新浪财经的同事有没有关注。 Anti-RDBMS: A list of distributed key-value stores还提到HyperTable,百度居然赞助了这个项目,实在难得,说明项目确实不错,希望百度也分配一些工程师进去,完善开发HyperTable,到那个时候平民百姓也能用到BigTable了。 今年的也准备写个key-value的项目,计划中,关键字:Python,stackless,UDP,BDB ,memcached protocol,Low mem use.

正走在路上

Wednesday, December 31st, 2008

去年的这个时候我琢磨是不是要离职,事业单位,福利待遇都很好,离开了什么都要重新再来,思前想后,还是决定出来看看,毕竟在学校呆了18年了(小学5年+初中3年+高中3年+大学4年+学校出版社3年),在这个不大不小的年纪做这个决定是必要的,估计再过几年就不会动了,也动不了了。2008年2月27日,给出版社的同事写了一封致年轻人的信,然后3月份就到FH网去报到了,刚从学校出来的时候,可能那个经济环境还不错,拿到了些个offer,选择FH网是觉得是门户,公司大一些可能会正规一些,实际怎么样就不说了,一个项目下来,三个技术辞职,剩下的一个是测试,后来陆续在sina看到原来的同事来面试,想想出走还是明智的。6月份到sina报到,直至现在。 2008年成长最快的还是技术方面,PHP还算熟悉了,Javascript也凑合了,抽空做了做Python,已经离不开了,数据挖掘主要方向是推荐系统,也有些收获,过几天把netflix prize的分数晒晒。 与人交往方面还是没什么进步,基本上关系好的是我尊重的人和尊重我的人,所以你要成为我的好朋友,你需要有值得我尊重的东西,尤其是品质,或者尊重我,这样会友好很多。如果你不在二者之列,太对不起了,过去的一年我估计没少得罪你。 我出来之后有人问我出来感觉怎么样或者出来好不好,正好昨天看到一则小故事,人问佛:我不知道我现在的爱是真的还是假的,我该怎么办?佛说:有机会就去爱吧,不要管是劫还是缘,劫也是缘。所以有机会就试试吧,反正我的感觉很好。 2009年主要要做的事情:网络(socket)/桌面(gui)编程;一个精巧的PHP框架(雏形差不多了,和原生的PHP相比性能损耗大概在1.5ms左右);数据挖掘(推荐系统差不多了,试试其他的领域,有可能在XX预测的方向);多一些好朋友。 春天快要来了,因为人们都后知后觉,2009,大家都会是好样的。

Sphinx在windows下安装使用[支持中文全文检索]

Wednesday, November 26th, 2008

本博客所有原创文章采用知识共享署名-非商业性使用-相同方式共享,转载请保留链接http://chaoqun.17348.com/2008/11/sphinx-on-windows-xp/ 前一阵子尝试使用了一下Sphinx,一个能够被各种语言(PHP/Python/Ruby/etc)方便调用的全文检索系统。网上的资料大多是在linux环境下的安装使用,当然,作为生产环境很有必要部署在*nix环境下,作为学习测试,还是windows环境比较方便些。 本文旨在提供一种便捷的方式让Sphinx在windows下安装配置以支持中文全文检索,配置部分在linux下通用。 一、关于Sphinx Sphinx 是一个在GPLv2 下发布的一个全文检索引擎,商业授权(例如, 嵌入到其他程序中)需要联系作者(Sphinxsearch.com)以获得商业授权。 一般而言,Sphinx是一个独立的搜索引擎,意图为其他应用提供高速、低空间占用、高结果相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。 当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS的原生支持)。 搜索API支持PHP、Python、Perl、Rudy和Java,并且也可以用作MySQL存储引擎。搜索API非常简单,可以在若干个小时之内移植到新的语言上。 Sphinx特性: 高速的建立索引(在当代CPU上,峰值性能可达到10MB/秒); 高性能的搜索(在2–4GB的文本数据上,平均每次检索响应时间小于0.1秒); 可处理海量数据(目前已知可以处理超过100GB的文本数据,在单一CPU的系统上可处理100M文档); 提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法; 支持分布式搜索; 提供文件的摘录生成; 可作为MySQL的存储引擎提供搜索服务; 支持布尔、短语、词语相似度等多种检索模式; 文档支持多个全文检索字段(最大不超过32个); 文档支持多个额外的属性信息(例如:分组信息,时间戳等); 停止词查询; 支持单一字节编码和UTF-8编码; 原生的MySQL支持(同时支持MyISAM和InnoDB); 原生的PostgreSQL支持. 中文手册可以在这里获得,感谢译者的辛勤工作。 二、Sphinx在windows上的安装 1.直接在http://www.sphinxsearch.com/downloads.html找到最新的windows版本,我这里下的是Win32 release binaries with MySQL support,下载后解压在D:\sphinx目录下; 2.在D:\sphinx\下新建一个data目录用来存放索引文件,一个log目录方日志文件,复制D:\sphinx\sphinx.conf.in到D:\sphinx\bin\sphinx.conf(注意修改文件名); 3.修改D:\sphinx\bin\sphinx.conf,我这里列出需要修改的几个: type        = mysql # 数据源,我这里是mysql sql_host    = localhost # 数据库服务器 sql_user    = root # 数据库用户名 sql_pass    = '' # 数据库密码 sql_db      = test # 数据库 sql_port    = 3306 # 数据库端口 sql_query_pre   = SET NAMES utf8 # 去掉此行前面的注释,如果你的数据库是uft8编码的 index test1 { # 放索引的目录  path   = D:/sphinx/data/ # 编码  charset_type  = utf-8  #  指定utf-8的编码表  charset_table  = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F  # 简单分词,只支持0和1,如果要搜索中文,请指定为1  ngram_len    = 1 # ...