XAMPP集成环境中安装PHPUnit

Posted by & filed under Programming.

PHPUnit是一个轻量级的PHP测试框架。它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计)。单元测试是几个现代敏捷开发方法的基础,使得PHPUnit成为许多大型PHP项目的关键工具。这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 ,并且可以与phing集成来自动测试,最后它还可以和Selenium整合来完成大型的自动化集成测试。 Windows平台LAMP环境XAMPP 1.7.3下如何安装PHPUnit呢? 首先,以管理员身份运行cmd,使用pear添加phpunit频道: D:\xampp\php>pear channel-discover pear.phpunit.de Channel “pear.phpunit.de” is already initialized 频道添加好,尝试安装PHPUnit: D:\xampp\php>pear install phpunit/PHPUnit Unknown remote channel: pear.symfony-project.com Unknown remote channel: pear.symfony-project.com Unknown remote channel: components.ez.no Unknown remote channel: components.ez.no phpunit/PHPUnit requires PEAR Installer (version >= 1.9.1), installed version is 1.9.0 phpunit/PHPUnit requires package “channel://pear.symfony-project.com/YAML” (version >= 1.0.2) phpunit/PHPUnit can optionally… Read more »

Python PIL 生成带阴影的缩略图

Posted by & filed under Programming.

iimport sys from PIL import Image, ImageFilter   def dropShadow( image, offset=(5,5), background=0xffffff, shadow=0×444444, border=8, iterations=3): """ 把图像放在一个作了高斯模糊的背景上   image – 要放在背景上的原始图像 offset – 阴影相对图像的偏移,用(x,y)表示,可以为正数或者负数 background – 背景色 shadow – 阴影色 border – 图像边框,必须足够用来制作阴影模糊 iterations – 过滤器处理次数,次数越多越模糊,当然处理过程也越慢 """   # 创建背景块 totalWidth = image.size[0] + abs(offset[0]) + 2*border totalHeight = image.size[1] + abs(offset[1]) + 2*border… Read more »

Python 批量生成缩略图

Posted by & filed under Programming.

首先上代码 # coding=utf-8   import os import Image   # 字义缩放百分比 rate = 40   # 缩略图命名,在后面加上 resizedAddone = ‘_resized’   # 支持格式 suportFormat = [’bmp’, ‘gif’, ‘jpg’, ‘png’]   def process(arg, dirs, files): for file in files: fileExt = os.path.splitext(file)[1].lower()[1:] if fileExt in suportFormat: img = Image.open(file) img.thumbnail((img.size[0] * rate / 100, img.size[1] *… Read more »

Linode VPS 主机评分

Posted by & filed under Operating System.

配置是最低入门的512plan 4 CPUs in system; running 1 parallel copy of tests Dhrystone 2 using register variables 12912633.7 lps (10.0 s, 7 samples) Double-Precision Whetstone 2151.7 MWIPS (10.0 s, 7 samples) Execl Throughput 892.6 lps (29.9 s, 2 samples) File Copy 1024 bufsize 2000 maxblocks 174974.5 KBps (30.0 s, 2 samples) File Copy 256 bufsize 500… Read more »

Burstnet VPS 主机评分

Posted by & filed under Operating System.

前些日子搞特惠,买了一个最低配置的,512M内存 VPS PACKAGE #1 VPS Software: vePortal™ / OpenVZ™ CPU: 1000MHZ GUARANTEED Memory: 512MB GUARANTEED Disk Space: 20GB (RAID BASED CONFIG) Bandwidth: 1000GB/MONTH IP Addresses: 2 (IPv4) + IPv6 Management: BASIC MANAGED DDOS Protection: CISCO™ GUARD FREE SETUP $5.95/MONTH ================================================================ BYTE UNIX Benchmarks (Version 5.1.3) System: 200689.www.foxapp.com: GNU/Linux OS: GNU/Linux — 2.6.18-194.26.1.el5.028stab070.14 — #1 SMP… Read more »

Httpsqs Python Client

Posted by & filed under Programming.

Httpsqs 是张宴基于Tokyo Cabinet做的一个队列服务 前些日子项目中需要一个队列服务,因为配合Gearman做分发服务,因为之前的一些经历和教训,没有采用PHP作为脚本语言,当然并不是说PHP不行,只是懒得去折腾一些莫名其妙的问题,转而采用在更稳定更省心的Python做开发,之前其他的项目组中有使用Httpsqs的经历,我的leader强烈建议我使用这个,其实我更倾向memcacheQ 或者redis,Httpsqs没有Python版本的client,顺手写了一个,地址如下: http://code.google.com/p/httpsqs/source/browse/#svn%2Ftrunk%2Fclient%2Fpython 这个玩意是能正常的跑在我的项目中,不能保证能完全满足你的需求,如果你有任何建议或者意见,也欢迎联系我,特别附加一句:本人对此代码所带来的一切悲剧或者喜剧不承担任何责任,请慎重使用! 贴一段关于httpsqs的介绍,怕有些人不知道,知道的请忽略。 TTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。   项目网址:http://code.google.com/p/httpsqs/   使用文档:http://blog.s135.com/httpsqs/   使用环境:Linux(同时支持32位、64位操作系统,推荐使用64位操作系统)   软件作者:张宴   队列(Queue)又称先进先出表(First In First Out),即先进入队列的元素,先从队列中取出。加入元素的一头叫“队头”,取出元素的一头叫“队尾”。利用消息队列可以很好地异步处理数据传送和存储,当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取消息队列来异步插入。另外,还可以将较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,例如FLV视频转换、发送手机短信、发送电子邮件等。   HTTPSQS 具有以下特征:   ● 非常简单,基于 HTTP GET/POST 协议。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP协议的编程语言均可调用。   ● 非常快速,入队列、出队列速度超过10000次/秒。   ● 高并发,支持上万的并发连接,C10K不成问题。   ● 支持多队列。   ● 单个队列支持的最大队列数量高达10亿条。   ● 低内存消耗,海量数据存储,存储几十GB的数据只需不到100MB的物理内存缓冲区。   ● 可以在不停止服务的情况下便捷地修改单个队列的最大队列数量。   ● 可以实时查看队列状态(入队列位置、出队列位置、未读队列数量、最大队列数量)。   ● 可以查看指定队列ID(队列点)的内容,包括未出、已出的队列内容。   ● 查看队列内容时,支持多字符集编码。   ●… Read more »

Python Queue 的多线程(multi thread)死锁问题

Posted by & filed under Programming.

废话不多说,先上代码: #encoding=utf-8 import threading import random import time from Queue import Queue import mutex   class Producer(threading.Thread):   def __init__(self, threadname, queue, lock): threading.Thread.__init__(self, name = threadname) self.sharedata = queue self.lock = lock   def run(self): for i in range(20): #—————- self.lock.acquire() print self.getName(),’<< ‘,i self.lock.release() #—————- self.sharedata.put(i) time.sleep(random.randrange(10)/50.0) #time.sleep(1) print self.getName(),’Finished’     #… Read more »

又过去了一年

Posted by & filed under Life Diary.

感觉2009年总结才刚刚写,怎么又写2010年总结了呢,如果不是在Google Reader中看到那么多牛人都发布了自己的总结,差点忘记了已经又过了一年。 回首过去的一年,对于国家只有一个字:“涨”,房价涨,菜价涨,食用油涨价,电费涨价,连厕纸都涨了20%以上,楼下的包子以前一块钱两个小的,现在一块钱只能买一个喽,公司食堂最贵的菜从8块跳到了10块,还好,工资没涨! 对于自己,也只能用一个字形容:“忙”,非常忙,特别忙,忙得昏天暗地,不停的加班、加班、加班、加班……去年元旦前后进入状态后,一直就是不停的做着各种各样项目。 关于生活: 过去的一年不欢不喜,老人说这就是生活,我租了一套在资产泡沫的朦胧的光辉下价值两百万人民币的公寓。在杭州这样的高空置率的城市里,最大的好处就是房租相对还算可以接受,虽然房价虚高。给房子里填齐了各种各样的锅碗瓢盆,明年老娘来的时候就不用被说空着那么大的厨房,没地方做饭了,想想日子倒是也过得衣食无忧,连感冒都没有过,不过没存下来什么钱。又长一岁,开始更关注,房子、车子、票子、妻子、老子…… 关于工作: 前面说过这一年主旋律是就一个“忙”字,不过也算是看了不少的书,甚至不少好书,也实践了不少想法,甚至又重新尝试搞起了垃圾站,实践证明现在的搜索引擎已经不是四年前的搜索引擎,实在没那么好欺骗,自然我的小九九就落空了。在我的2009年总结中,我提到2010年要好好学习两门语言,一个英语一个 Python,英语没怎么学,除了多认识了几个单词之外,无所长进,Python倒是学习并应用了一段时间,写了一个google app engine 应用,写了一个简单的CMS系统,写一个爬虫,写了个静态文件的压缩与简单分词,爬虫每天可以抓取和处理四千万左右个页面,压缩与去重处理大概能处理几十G数据,看了好些关于这方面的论文,也算是一种收获吧,虽然都是实践性项目。关于我所每天从事的工作,一个考虑公司可能不让说,另外一个考虑也没啥好说的,社区电子商务这个模式跟我曾经对某位在搞互联网电视的朋友说的一样:没人踏足的领域不一定就是块风水宝地,做成功了,我们就是英雄,做不成功就是英烈,当然成为英烈的可能性更大一些。年末进入的移动互联网倒是有奔头,但目前这个领域也仅仅是看好,并没有成熟的用户群,一群公司蜂拥而上就跟当年美国和苏联抢着登月球一样。我咋这么悲观呢…… 关于机遇: 2010年是中国经济全面从复苏走向泡沫的一年,各种资本变着法进入各种领域深藏起来,从年初的民工荒,到后来的技术荒,团购网站铺天盖地,优酷、当当等乘着机会到海外圈钱,创业版的开市又为中国无辜的P民提供了一个合法的赌场,过去一年中国股市新发股票价值超过万亿,而市值却没有任何提升,蒸发了万亿。好友离开公司去了北京,本也想换个环境,最后为了几斗米而折腰,人家说会有期权和股权,我觉得那些都是骗人的,结果就在这个月(2011年1月)这丫居然真的在纳斯达克上市了,悲哉!2010年过得是这辈子到目前为止最忙的一年,也是最有想法的一年,或许慢慢的进入了这个圈子,或者是迫于压力,总是试着去做一些尝试,虽无所收获,也算是一种锻炼和对自己的历练。 关于2011年: 不管明年是不是2012,努力还是要努力的。去年没有完成的今年肯定要完成,比如英语,阅读已经不是什么问题,问题出在口语上,实在不行,出点血吧,去新东方搞一下,这玩意没环境确实不好学。Python暂时搁置一下,准备搞一下C和搜索算法这一块的东西,或许能为移动终端贡献一点东西

python满足你需要的50个模块

Posted by & filed under Excellence Article, Programming.

Python具有强大的扩展能力,网上有人列出了50个很棒的Python模块,包含几乎所有的需要:比如Databases,GUIs,Images, Sound, OS interaction, Web,以及其他。推荐收藏。 Graphical interface wxPython http://wxpython.org Graphical interface pyGtk http://www.pygtk.org Graphical interface pyQT http://www.riverbankcomputing.co.uk/pyqt/ Graphical interface Pmw http://pmw.sourceforge.net/ Graphical interface Tkinter 3000 http://effbot.org/zone/wck.htm Graphical interface Tix http://tix.sourceforge.net/ Database MySQLdb http://sourceforge.net/projects/mysql-python Database PyGreSQL http://www.pygresql.org/ Database Gadfly http://gadfly.sourceforge.net/ Database SQLAlchemy http://www.sqlalchemy.org/ Database psycopg http://www.initd.org/pub/software/psycopg/ Database kinterbasdb http://kinterbasdb.sourceforge.net/ Database cx_Oracle http://www.cxtools.net/default.aspx?nav=downloads Database pySQLite http://initd.org/tracker/pysqlite MSN Messenger msnlib http://auriga.wearlab.de/~alb/msnlib/ MSN Messenger pymsn http://telepathy.freedesktop.org/wiki/Pymsn MSN Messenger msnp http://msnp.sourceforge.net/ Network Twisted http://twistedmatrix.com/ Images PIL http://www.pythonware.com/products/pil/ Images gdmodule http://newcenturycomputers.net/projects/gdmodule.html… Read more »

软件开发中的几个经典问答

Posted by & filed under Life Diary.

Q:如何保证产品可用性? A:先做出来吧,能用就行,不能用再改嘛,不行就加机器 Q:如何保证产品的性能? A:狗屁性能,现在人都没有还要啥性能,先照简单的做,把功能实现了先,以后的事情以后再说 Q:如何保证产品的可维护性? A:维护啥啊,还有一堆功能要实现呢!刚开完会,前面做的那些东西又要整,再说这个项目已经做成这样了,现在没时间回头整理东西,需求要得急啊,这个东西应该一开始就做啊,现在代价太大了,下个项目再说吧 Q:如何进行产品测试? A:这个真没想过,让测试去做计划吧,尽量做好自测吧,用户急着要这个功能,先赶工吧 以上是我经常听到的回答,至于对与错,屁股决定脑袋