用PHP写的5种设计模式。
Adapter Pattern 适配器模式
Iterator Pattern 迭代模式
Decorator Pattern 装饰模式
Delegate Pattern 委派模式
State Pattern 状态模式
» 阅读全文
By mpeg on 2008, August 13, 11:28 PM
用PHP写的5种设计模式。
Adapter Pattern 适配器模式
Iterator Pattern 迭代模式
Decorator Pattern 装饰模式
Delegate Pattern 委派模式
State Pattern 状态模式
» 阅读全文
By mpeg on 2008, August 11, 9:51 PM
记得帮公司开发 篱笆进度条 时遇到了很多困难。当时只对GD有了解,但GD不能生成动态的GIF。而且公司当初又放狠话,说要写出第一套全世界会动的进度条。没办法顶着头皮上,查阅了很多相关资料。研究了imagemagic,当初可能对这个也是一知半解,也算是碰运气使用了imagewand,但当时imagewand资料相当少,可以说是几乎没有吧。也只好一个方法一个方法看手册试验,二个星期后,LIBA进度条面世了,也算通过了上线考验。
之后应该对imagewand也算是有比较深入的了解。后来怪念头多了起来,想搞一个动态的验证码,原理就是:生成一个四帧的动态GIF,每一帧上都有不同颜色的数字,而且每帧间隔时长也不一样。验证的时候就是打印出色彩顺序,然后只要按色彩的顺序将各个数字组成验证码就可通过。
PS:目前研究方向从imagewand转向了imagick,imagewand基本未更新过.imagick还在不停的停供支持.大家可以看我前几篇BLOG.有imagick的用例.而且因为imagick不停的更新,现可在64位系统下编译,效率更高.建议大家使用.
演示地址:http://www.phpubb.com/backup_old/imagewand
nowColorArray:生成提示验证码的顺序颜色。
nowRandNumberArray:生成的验证码。
» 阅读全文
By mpeg on 2008, August 6, 8:47 PM
这两天我们的老朋友PDP在BlackHat 08上做了一个关于GIFAR的演讲。和往常一样,PDP的东西基本上都很猥琐,这个也是。主题是关于是如何把GIF或者 JPG文件和JAR文件捆绑在一起,然后欺骗服务器以为是GIF或JPG文件,结果却是在客户端的JVM中执行JAR的例子。
他还举了些欺骗的例子,比如在office2007中,doc文件实际上就是zip格式了,里面都是些xml,那么他把jar文件打包在zip文件里,再把后缀改成doc,来达到欺骗的目的。
在这里是客户端的问题,我想到的则是其他的问题,比如安全上传。
» 阅读全文
By mpeg on 2008, July 30, 10:37 AM
任何一款拥有socket操作能力的语言都有一个专门用于组包的函数,php也不例外!
用了很久php了却很少有机会用php进行一些二进制操作。 最近用php写一个socket客户端连接一个用C++语言开发的游戏服务端。 服务器端开发人员使用了二进制的形式来定义协议的格式。协议格式如下:
包头(2bytes)+加密(1byte)+命令码(2bytes)+帧内容
1.包头的内容是记录帧内容的长度;
2. 加密:0表示不加密,1表示加密;
3. 命令码为服务端命令识别符号;
一开始不了解php原来有pack可以来组装二进制包, 走了弯路,让服务端开发人员用C语言帮忙开发了的几个内存操作函数,按照协议规则返回二进制包,然后我将这几个方法编译成一组扩展函数供php使用。
话归正题,本文是介绍如何使用pack和unpack这两个方法的。php官方手册举例太少,不能很容易理解,特别是那些格式化参数的使用。
» 阅读全文
By mpeg on 2008, July 26, 3:09 PM
收集了一点正则
自己也写了一点
全角标点转为半角
所有的中文标点的第二个字节减去0X80(即128)所得的数字就是半角所得的数字了。而/e模式表达的是:如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。
» 阅读全文
By mpeg on 2008, July 26, 2:20 PM
最近发现产品图片都为很大一个X.查看图片文件后,图片是存在的.用ACDSEE看了一下图片属性发现图片格式为CMYK.网上查阅了资料.CMYK格式是不能在网上直接显示的.就写了一个CMYK2RGB的程序.上传带CMYK格式的图片转换为RGB. 程序采用magickwand中的函数.需要ImageMagick支持.思路比较简单.
» 阅读全文