PHP中有个Snoopy,是模拟浏览器获取网页内容的代码包。 2005年在南京出差,买了一本书,关于PHP中各种函数的高级使用的,就有这个Snoopy。曾经有段时间大家热衷于网络爬虫,于是有些博客就提到这个包。今天找资料发现有博客提到了,就做个标记。 下载:[url=http://sourceforge.net/projects/snoopy/]Snoopy官方网站[/url] 参考阅读 [url=http://blog.passport86.com/?p=161]代码收藏-Snoopy类及简单的使用方法[/url] 内容简单了一点 [quote]下面是它的一些特征: 1、方便抓取网页的内容 2、方便抓取网页的文字(去掉HTML代码) 3、方便抓取网页的链接 4、支持代理主机 5、支持基本的用户/密码认证模式 6、支持自定义用户agent,referer,cookies和header内容 7、支持浏览器转向,并能控制转向深度 8、能把网页中的链接扩展成高质量的url(默认) 9、方便提交数据并且获取返回值 10、支持跟踪HTML框架(v0.92增加) 11、支持再转向的时候传递cookies[/quote]
PHP中处理图像
2009年7月22日 00:38
有个处理图像的包叫MagickWand,本身是C写的,它有个PHP的实现 [url=http://www.magickwand.org/]MagickWand For PHP[/url] MagickWand For PHP需要安装,我们暂且不提安装的事,说说怎么用。它一共有四种类型: MagickWand图像类, DrawingWand相当于画布, PixelWand相当于画刷, PixelIterator这个没用过。 然后的一大堆函数都是围绕这四种类型使用的。至于这些函数做什么用,其实我也只用了一小部分,大家可以参考这里的部分函数用途的中文说明 [url=http://blog.passport86.com/?p=141]magickwand 中文函数翻译[/url] 或者到这里下载手册, [url=http://blog.me94me.com/81]MagickWand For PHP Manual中文版[/url] 首页的部分函数用途做了中文说明。 参考资料: 1. 如果你只是想简单地做个缩略图,加个文字注释或水印,请阅读 [url=http://hi.baidu.com/kedumin/blog/item/fd791562fa2e45d9e7113ab8.html]缩略图程序 for ImageMagick for php(MagickWand)[/url] 这里的也是转载,不过没有写明出处。 [quote]这个类的功能: 得到图片缩略图(费话一句) 写文字水印,可选文字颜色、大小、宽度、字体、透明度、位置 图片水印,可以把另一张图片当水印写入,这个只是简单写入到图片的右下角。透明度等找不到函数,也想不到什么方法可以解决。会有朋友可以留言告诉我一下。 写文件注释,就是在用看图软件查看信息时可以看到 指定文件名保存 可以在浏览器显示(调试用的) 差不多就这些功能了。[/quote] 2. [url=http://blog.passport86.com/?p=141]MagickWand example:操作GIF图片的例子[/url]
网上学外语
2009年7月22日 00:38
在网上搜索资料时,找到这样一个网站 [url=http://www.language-lab.org/index_en.html]the web language lab[/url] 是个国外的学习外语的网站,看了一下它的听力课,选择一篇短文,播放录音,然后你可以选择“全文对照”,“部分对照”(挖去关键词汇),或者你自持外语听力过人,可以切换到空白页。文章后面标有难度等级。对我来说,这些文章都是很难的,得反复练习才行。
写程序,简单真的很重要
2009年7月22日 00:38
我想大家当初做程序员时,都和我一样有个愿望:如果我能钻到一个复杂的问题里面,用巧妙的技术手法,一步一步揭开谜底,那一定是很漂亮、很痛快的事情。就是我们都有把问题往复杂方向推进的倾向,或许动力只是来源于我们渴望的成就感。 常听Feb老大评论,"Memcached好,这玩意儿你把它关了,你的程序照样能跑,毋需作一点改变"。"越是简单的东西越稳定,越能对整个系统做出大的贡献"。"系统就应该是一些简单的东西粘合在一起"。和我以前的愿望很不一样啊。 今天看了Phillip J.Eby(Python团队的大佬们当中,我只知道Guido Van Rossum和他)的一篇文章,他也说明这个道理——简单的东西才可能稳定和成熟。 请阅读 [url=http://blog.csdn.net/pjeby/archive/2008/02/18/2101381.aspx]《获得让事情变简单的勇气》[/url] [quote]直至过去很长时间我才认识到Roger的方法其实更简单,但这种简单也并不那么容易判断。我的方法所产生的长远影响就是我们不能在基于PC的运行时数据库上定制新产品了,而如果我按照他的要求去做,那其实是应该可以的。我至今没能学会如何看待我选择的设计方案所产生的效益和附带的影响。[/quote]
HTML代码格式化工具
2009年7月22日 00:38
今天要找一款能够格式化HTML代码的工具,以前曾用过两三款,但不是要收费就是功能不足。抱着“侥幸”心理在到Google搜索一下,这次用的关键词是"html"、 "tidy",用“格式化”、“代码”之类搜索不理想。 很快找到一款叫 [url=http://tidy.sourceforge.net/]Tidy[/url] 的开源项目,下载了windows版,就是一个文件tidy.exe。将tidy.exe放系统path能找到的目录下,比如C:/Windows/下。 开始使用,你可以用tidy -h 查看所有可用命令。常见的一个任务,把本目录下的index.html文件代码格式化。 tidy -i -utf8 index.html > index-ok.html -i 是缩进代码 -utf8是指定输出文件的编码 另外,有人以Tidy为基础做了一个图形界面的 [url=http://users.rcn.com/creitzel/tidy.html]Tidy UI[/url] ,我用了一下,打开Utf-8的中文网页文件乱码,作罢!
Bzr的版本控制
2009年7月22日 00:38
打算使用Bazaar(简写作Bzr)这个版本控制工具,是两个星期以前的事情。到今天,才完全弄明白了它怎么用。 我使用的Bzr是1.3版本,最初看得是这个文档 [url=http://bazaar-vcs.org/zh/Bzr介绍]Bazaar-NG指南[/url],可它并没有说清所有问题。 假设我们在本机Windows上开发,IP是192.168.0.1,我们把程序发布到另一台装有Linux的机器192.168.2.34。 先要 [url=http://bazaar-vcs.org/Download]下载Bzr [/url],Windows安装程序和Linux源码包各下载一个。 [color=#4169E1]下载Bzr的Windows版本请到 [url=http://bazaar-vcs.org/WindowsInstall]Bzr的Win版本下载[/url][/color] 日常使用也就这么几个命令,都是在命令行下。 注册账户,这个在Bzr安装好后,只要运行一次 bzr whoami who 在Linux服务器/root目录下,新建一个项目文件夹proj,切换到proj目录,初始化 bzr init 往proj新建或放入几个文件,让Bzr监视proj下所有文件的版本 bzr add .(最后面是个英文的点) 程序改好了,生成一个版本 bzr commit -m"some words",这是版本1。 把proj项目通过SFTP下载到本机 bzr clone sftp://root@192.168.2.34:22/root/proj proj 在本机上修改好,用commit命令提交为版本2,然后增量上传到Linux服务器下。 bzr push sftp://root@192.168.2.34:22/root/proj(注意,你要在本机proj目录下运行这个命令) 注意:这时你到Linux服务器上去看,文件都没有变,还是版本1。我当初以为自己没用对命令,文件都没变。不记得谁的博客说Bzr有这个Bug,但在它的版本控制文件.bzr里面已做了更新,在外面看不见。 [color=#FF4500]今天我才发现,文件在版本控制里面的确已作更新,这也不是Bug。我们少运行了一个命令,让它显示最新的版本。[/color] bzr update可是没找到有文档告诉我们应该这么做。 其它几个常用命令,大家去看它的文档吧: 查看最近两个版本之间有差别的文件 bzr status 或 bzr log foo.php最近两个版本间具体修改的内容 bzr diff foo.php 退回上一个版本 bzr revert 取消监视 foo.php文件 bzr remove --keep foo.php 从服务器增量方式拉回更新的文件 bzr pull ...
PHP模板引擎Blitz
2009年7月22日 00:38
今天试用了一个PHP的模板引擎Blitz,据说它的速度比Smarty之流快30%以上。网址在这里 [url=http://sourceforge.net/projects/blitz-templates/]Blitz[/url] Blitz是PHP的C扩展,从这个意义上说,更接近底层,有望比其他模板引擎更快。当然,模板的速度还取决于它生成中间结果、缓存数据的实现方式。如我们熟知的Smarty,它把你写的模板转成纯PHP文件保存起来。 不过这个Blitz用起来还是有些别扭的,可能是刚学的原因,我一时没明白它的循环怎么写。想想当初学Smarty,也不习惯它的循环。还是象ZendFromework这种完全就是PHP的模板好,不用再学一样语法,也不用再把模板记号再转回PHP代码;也许它没有限制你在模板里写垃圾代码,不够直观(话说回来,Smarty的循环也称不上直观!),对没写过程序的美工来说难度大了一些。 试用了一下,感觉Blitz还是很优秀的。我最感兴趣的地方:模板引擎本身是个类,你可以继承它,往里面添加自定义的属性和方法,然后用在你的模板文件里,一切都是那么自然。 我们还是举个例子吧: {{ include('header.tpl') }} {{ greeting(); }} {{ BEGIN weekday }} {{short}}: 周{{name}} {{ END }} {{ include('footer.tpl') }}
Google笔记,我一直想要的网络服务
2009年7月22日 00:38
今天使用Google的过程,找到了Google一个名叫“Notebook”的实验版的服务,类似于书签。这项服务简直太棒了,一直以来我就想要一个这样顺手的工具。 虽说是类似于书签的功能,当然比书签强得多,其实浏览器就有书签功能,我为什么还对这个Notebook如此钟情。总结亮点有两个:一曰存着顺手,如果你安装Google Notebook的一个小插件,你只要点击地址栏最右边的“笔记本”的图标,就会将当前网页保存你的Google账号,存有标题和网址,方便日后再进行整理。二曰取用方便,由于是保存在网络上,而不是这台电脑里,你就不用把你的书签从公司、家里的电脑间倒来倒去,另外个人隐私也更安全了。 没有找到这个服务之前,我看到有用的网页,都是打开自己的Email,把当前网页的标题和网址贴在草稿箱中,很烦的事情。这下好了,我再不用翻箱倒柜地找东西了。
Web2Py的Model文件生成工具
2009年7月22日 00:38
Web2Py也要写Model文件,把表结构描述写到py文件,我最不喜欢了。 咱是顶天立地的懒人,得要想个法子。昨晚写了个生成Model的python程序,凑合着用吧。 兄弟献丑了: 2008-04-11 Ver0.1 web2py_model_gen.tar.gz 其实前两天在Google Code里找来一个auto.py的文件,据说是根据创建表的SQL语句生成Web2Py的Model,试了一下没弄明白怎么用,惭愧! 使用方法:先在MySQL客户端里用命令显示表结构,如表 account desc account; 将得到的数据复制到文件中,作为输入文件。修改程序中的表名、输入文件和输出文件。 运行程序,查看输出文件。 程序还有待改进,如输入文件全部放在指定目录,然后批量生成,以后再说吧。这个0.1版已经满足我现在的需要了。
Nginx、Flup和Fastcgi的关系
2009年7月22日 00:38
装了几天的Nginx、Dajngo,还没彻底弄清它们之间是具体怎么通讯的。(偶不是做运维的) 这里有一篇文章,大家参考一下。 [quote]虽然flup可以作为一个独立的web server使用,但是对于浏览器请求处理一般都交给 apache/lighttpd处理,然后由apache/lighttpd转发给flup处理,这样就需要一个东西来把apache/lighttpd跟flup联系起来,这个东西就是fastcgi,它通过环境变量以及socket将客户端请求的信息传送给flup并接收flup返回的结果[/quote] 摘自 [url=http://www.7tt.com.cn/perol/2007/10/25/fastcgi_flup_wsgi/]《WSGI、flup、fastcgi、web.py的关系》[/url]