最近项目涉及到比较大的表单验证,自己在网上找了些表单验证JQ插件没有特别简单易用的插件,所以自己写了个自认为还是比较简单的JQ插件与大家分享。 本插件对于了解正则表达式的同学是比较简单 使用方法三步完成 第一步:页面中head中加载jquery-yeasyform1.1.js文件 <script type=”text/javascript” src=”js/jquery-yeasyform1.1.js”></script> 第二步:表单标签中添加两个新属性 yreg 正则表达式,ytip 提示内容 <input type=”text” name=”textfield” id=”textfield” yreg=”/^.+$/” ytip=”*提示:必须填写”> 第三步:页面最后在html标记后面添加代码 <script type=”text/javascript”>$(“#form1″).YEasyForm(‘submit’);</script> 完成! 演示:http://blog.dachun.net/YEasyForm/dome.html $(表单FORM对象).YEasyForm(‘验证事件方式’,function(未通过验证对象){代码}); 表单FORM对象:<Form id=”form1″>….</Form> 对象名称为 $(“#form1″) 验证事件方式:目前支持两种“submit”提交验证方式,“blur”失去焦点验证方式 未通过验证对象:自义定提示方式如下 $(“#form1″).YEasyForm(‘blur’,function(ErrorObj){ ErrorObj.focus();//对错误表单对象设置焦点 ErrorObj.css(‘border’,’1px solid #FF0000′);//表单问题对象添加红边 }); 自义定提示可以不填写默认在问题对象加红边并且后面添加 *提示:必须填写 自己对class添加样式 下载:http://code.google.com/p/yeasyform/downloads/list
龙爪手单篇采集是用PHP来实现,采集成功率95%,支持新浪,雅虎,搜狐,腾讯,人民网等等大部分网站新闻采集。下面介绍一下如何使用 1.打开http://dachun.net/web_editor/lzs.html 龙爪手工具页面,如果是IE或IE内核浏览器直接点击“添加收藏”按钮,FF浏览器手动添加。 2.确认添加 3.打开一篇文章http://mil.news.sina.com.cn/2011-11-25/0920675016.html 4.如果收藏夹未在浏览器窗口中显示,请作如下操作 5.点击之后需要等待(本服务器是演示服务器资源有限)N毫秒之后成功采集
2011年12月2日
php, 其它
409 views
今天在勤快一些在写一篇。单篇采集作资讯新闻类网站的人都比较熟悉,市场上比较成熟的产品比如海纳但都是收费的。我们WEB程序员能不能作单篇采集呢?今天就跟大家分享一下我们雅虎YPEN单篇采集的设计思路。 文章正文采集思路 我们先从分析新闻页面代码开始。打开一篇新闻http://news.sina.com.cn/green/news/roll/2011-12-01/230923560080.shtml查看源代码我们会看到正文大都是在<p>标签内,我们对比每个<p>标签长度最长的一定是正文中的一段内容,采集这段<p>标签的上一级标签就可能获得文章正文,正文获得了其它信息的采集就简单得多了我就不多说了。关于PHP采集我在多说一些我们采集很多人用正则表达式来作,PHP在处理几KB以上的字符串用正则处理速度比较慢,我们对于一些固定的内容可以使用strpos来处理速度可以比正则提高N倍,大家有情趣可以试试。 如何实现一键采集 说说采集方式其实我们浏览器收藏夹是支持JS的。提供一段JS代码给大家 “<pre>javascript:window.location=’http://dachun.net/web_editor/cj_news.php?url=’+window.location.href;</pre>”这样写就可以把当前页面作为一个参数提交给你想要打开的页面。我们单篇采集也可以作到一键采集。 单篇采集演示:http://dachun.net/web_editor/lzs.html 大家可以参考一下
一年多没更新微薄了今天勤快一次。今天跟分享一下sqlite在WEB集群中的应用。我们提到sqlite应用想的最多的他在一些单个终端设备上大显身手。我们在WEB开发中sqlite同样可以发挥他的威力。 首先我们分析一下sqlite特点 1.存储单一文件中完整的数据库 2.关系型数据库 3.支持事务 4.支持数据库大小至2TB 3.足够小, 大致3万行C代码, 250K 5.独立: 没有额外依赖 我们了解了sqlite后我们在想想我们在WEB集群中会遇到的问题,对数据集 统计 排序 条件筛选 都会用到关系型数据库(MYSQL,oracle),大家都知道高访问量网站要尽量避免对数据库的连接,处理办法大都是缓存结果集到本地。所以我们想想sqlite能不能帮我们处理一些简单小数据量的数据集。每台前段机部署一个这么轻量级sqlite,数据发布的工具机来处理sqlite文件同步的问题,对于一些增量的数据也可以同步SQL语句的方式来处理。 此种方式已应用在雅虎新闻列表中效果不错。只是给大家提供一个思路没写那么具体。
今天我们说一说Xapian,Xapian是一个用C++编写的全文检索程序,他的作用类似于Java的lucene。Xapian除了提供原生的C++编程接口之外,还提供了Perl,PHP,Python和Ruby编程接口和相应的类库,所以你可以直接从自己喜欢的脚本编程语言当中使用Xapian进行全文检索了。 安装Xapian wget http://oligarchy.co.uk/xapian/1.2.2/xapian-core-1.2.2.tar.gz tar zxvf xapian-core-1.2.2.tar.gz cd xapian-core-1.2.2 ./configure –prefix=/usr/local/xapian make make install wget http://oligarchy.co.uk/xapian/1.2.2/xapian-bindings-1.2.2.tar.gz tar zxvf xapian-bindings-1.2.2.tar.gz cd xapian-bindings-1.2.2 ./configure XAPIAN_CONFIG=/usr/local/xapian/bin/xapian-config –with-php PHP_CONFIG=/usr/local/webserver/php/bin/php-config make make install 修改php.ini文件把编译好的extension = “xapian.so”文件加上 安装完成。
xapian, 安装教程
dhtmlxScheduler是一个JavaScript日程安排控件,类似于Google日历。日历事件通过Ajax动态加载,支持通过拖放功能调整事件日期和时间。事件可以按天,周,月三个种视图显示。 下载: http://download.csdn.net/source/1671389
JS, 日历
最近在弄大文件上传在网上搜了搜发现两个不错的方法。 1.SWFUpload SWFUpload 是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统< input type="file" />标签的文件上传模式。 SWFUpload的主要特点 * 可以同时上传多个文件; * 类似AJAX的无刷新上传; * 可以显示上传进度; * 良好的浏览器兼容性; * 兼容其他JavaScript库 (例如:jQuery, Prototype等); * 支持Flash 8和Flash 9; SWFUpload不同于其他基于Flash构建的上传工具,它有着优雅的代码设计,开发者可以利用XHTML、CSS和JavaScript来随心所欲的定制它在浏览器下的外观;它还提供了一组简明的JavaScript事件,借助它们开发者可以方便的在文件上传过程中更新页面内容来营造各种动态效果。 在使用SWFUpload之前,请确认你具备一定的JavaScript和DOM知识。在实际开发中,大部分的错误都是由于错误的设置和低劣的Event Handlers处理程序所造成的。 下载地址:http://swfupload.org 2.UGiA PHP UPLOADER 利用php上传比较大的文件时,往往需要很长的等待时间,而且受网络和软件等的影响,经常会出现超时及上传失败的现象。如何在上传文件时实时的得到文件上传进度,以及如何避开php和其他因素的限制上传任意大小的文件呢? php同asp等其他语言对上传文件的处理方式不同,asp中可以用Request.BinaryRead流式的读取客户端提交的数据。php是把文件存放在临时文件夹中,在文件上传完成后才能够获取其信息以及对其进行操作。如果在上传过程中我们能够得到其临时文件的文件名,我们就可以通过判断临时文件的大小来来得到上传进度,不过好像没有办法得到。所以我们只能通过其他方式,就是利用php的socket扩展建立一个简单的服务器,把数据post 到这个服务器上,然后再用我们自己的机制来处理。 先说说流程,首先用php的socket函数库建立一个临时的http服务器,在某一端口监听,然后把ip地址和端口号通知客户端,客户端把上传表单提交到http://srvIpAddress:port(临时服务器), 临时服务器接受客户端请求,并读取post数据,分析并获取客户端上传的文件信息,把文件保存在服务器上,然后关闭临时服务器,释放资源,上传完成。有点绕,不过思路还是简单的。 下载地址:http://www.ugia.cn
php, 大文件上传
SQLITE介绍安装方法之前已经写过了(http://dachun.net/20100806/linux%E4%B8%8Bsqlite3%E5%AE%89%E8%A3%85.html).唯一不同是在第四行 wget http://www.sqlite.org/sqlite-amalgamation-3.7.0.1.tar.gz tar zxvf sqlite-amalgamation-3.7.0.1.tar.gz cd sqlite-amalgamation-3.7.0.1 CFLAGS="-DSQLITE_ENABLE_FTS3=1" ./configure make make install 在默认情况下,SQLite 提供了两个基本的分词器,Simple 和 Porter。它们可以控制字的分开方式。Simple 根据空格和标点符号将文本分解成不同的记号。Porter是专为英文使用而设计,它可以将大量的文字扩展化解为基础形式。我们用Simple就可以。 如何创建自己的第一个全文索引 首先用FTS3扩展建立一个虚拟表 CREATE VIRTUAL TABLE example USING FTS3(title TEXT, TOKENIZE SIMPLE) 我们用SCWS(开源的中文分词系统http://www.ftphp.com/scws/)将分好词的文本内容插入到example表中。 查询方法 SELECT rowid, title FROM example WHERE title MATCH ‘中国’ 完成。
sqlite, 全文检索
Codeany的介绍: 要使用这个服务,第一步,必须先注册帐户: 接下来用刚注册的帐号登陆: 登陆后来到控制台,或是直接点击下图中的”立即开始’链接 点击后会来到所有API的列表页: 点击图中”创建使用这个API的库,填写如下表单: 注意,数据库名字应为字母打头,只能由字母和数字组成(我正在考虑放开这个限制),并且不得重名.创建后,来到控制台,查看您刚才创建的库的密钥: 这串字符串您需要保存好了,在实际应用中就是靠这个串来确认您的身份的. 现在开始编写程序,实地使用一下了: 注意这个API地址: http://www.cloudapi.info/api/proxy.php?code=8Gk1N0QjoUUEgPI6Hzj8tNVdcJ8quDWf 后面的code就是您前面创建数据库里生成的密钥.另外,这个程序是在phprpc的基础上跑的,phprpc从这里下载: http://www.phprpc.net/zh_CN/download/ 有了PHPRPC,我就不用开发asp,jsp,perl,python等各种客户端了,全都已经有了. 运行一下,看看效果: 再试试正文抽取的接口:代码: 再看看执行效果: 好了,现在去Cloudapi 上搞个帐号试试吧,有问题欢迎反馈,gtalk:xurenlu@gmail.com
信息采集, 接口
今天我们测试一下SQLITE和MYSQL的性能对比。 测试的方法 用PHP写了两个简单的程序作,一张表3个字段(varchar,int, date) 循环插入100和1000条记录, 插入前先SELECT查询是否存在 测试结果 循环插入100条记录, PDO+SQLite3, 耗时0.08秒左右 循环插入100条记录, MySQL5, 耗时0.09秒左右 循环插入1000条记录, PDO+SQLite3, 耗时0.55秒左右 循环插入1000条记录, MySQL5, 耗时0.95秒左右
mysql, sqlite