2008年8月14日星期四

心中的奥运

奥运就像是一场中国人的集体恋爱.在多年的等待和魂牵梦萦后,终于迎来了17个难以忘怀的日夜.

使用PHP程序开发高效的WEB网络系统

这里的大型项目,简单的指分布式项目,就是说,你的程序需要被部署在N台服务器上了。在这个层级上,PHP比起j2ee的确缺乏很多支持。我曾和 shadow在735上详细讨论过PHP要在大型系统上应用需要解决的一些问题,当然这些问题不光是PHP这个语言的问题,也包括了周边开发的问题:

1 PHP的页面代码共享,PHP的源代码被载入内存一次以后,就在其中保留 - 这个用APC和Zend的优化器可以搞定。

2 PHP页面之间的数据对象共享,a.php和b.php之间可以共享一个数据对象,比如数组,这个现在可以用序列化来作,但是会有文件io,这块可以用共享内存或者memcached来处理。

3 PHP的数据库连接池,因为在多前端的情况下,PHP控制不住对数据库的连接,所以需要在数据库前边去作一个连接池,类似于sqlrelay的东西。另外数据缓存也是很重要的,大压力开发有一个tip,就是能不动数据库就不要动数据库。

4 PHP的前端cache系统。一个透明的可控制的cache机制,确保网站的页面以最少次数查询数据库。这个有很多实现,但是没有找到特别好的。

5 一个PHP应用,成功的解决调这几个问题以后,应付稍微大一点的压力是没有什么问题的。

在这个级别上,重要的是,把PHP java C++ python之类融合起来,使其成为一个高效系统。我们可以用memcached来做分布式内存管理,可以用Lucene 来作全文检索,用ejb 容器来放一些业务逻辑组件,PHP则作为前端和系统的胶水,快速而灵活的把这些粘合起来。

2008年8月12日星期二

李小鹏,痛苦的坚守.大鹏加油!

哼哼国足

上联:试问中国男足有多愁
下联:恰似一群太监上青楼
横批:无人会射?

国足欢迎你
《国足欢迎你》
我家球门常打开;要进几个随你
交锋过后就有了底;你会爱上这里
不管远近都是客人;请不用客气
进的少了别在意;下次补给你
我家住着谢亚龙;书写每段传奇
不懂足球也不要紧;仕途才是第一
陌生熟悉都是客人;请不用拘礼
谢主席他很热情;场场都陪你
国足欢迎你;为你敞开球门
再不济的实力;也能找信心
国足欢迎你;在主场上分享平局
哪怕你(世界)排名垫底
我家球门常打开;开怀容纳天地
一个两个不算稀奇;再多也输得起
天大地大都是朋友;请不用客气
场上梦游是惯例;场下才牛B
国足欢迎你;用红牌感动你
你们捞足积分;我们来出局
国足欢迎你;遇上了您就随便赢
有我们就会有奇迹

小偷程序

什么是小偷程序?顾名思义,小偷就是偷东西的,而程序就是计算机用的。合起来也很好理解:偷别人资料的程序。多半指网站的数据。
  偷数据的,几乎什么语言都可以。没有什么语言是肯定不能的。不过,某些语言显得比较容易,某些就显得比较繁琐。PERL就是一种用来偷数据的方便语言,得益于其简洁的语法。
  偷了数据,其实里面多半是HTML语句,包含了各种数据。我们也知道:HTML没XML那么好分析。针对某个页面的分析,程序还可以作出来。只是字符串处理相关的各种函数应用。但若被偷的东西结构变了,就要改变我们的程序,以适应新的结构。这个是要注意的。
  下面我们对各种语言的小偷程序进行说明:
  一.获得网站数据的各种语言代码
  1.Perl
  #!/usr/bin/perl
  # 通过IE浏览器中的[查看]->[源文件]可看HTML文件内容。
  # perl中可以不通过浏览器直接取得HTML文件内容,用的
  # 就是perl模块libWWW
  use strict;
  use LWP::UserAgent;
  use threads::shared;
  my $URL = \"http://osdev.beguest.com\";
  my $ua = new LWP::UserAgent;
  $ua->agent(\'Mozilla/3.0\');
  my ($address,$params) = split(/\\?/,$URL);
  my $req = new HTTP::Request (\'GET\',$address);
  $req->content_type(\'applicationn/x-www-form-urlencoded\');
  $req->content();
  my $res = $ua->request($req);
  my $content = $res->as_string();
  # 此时$content里面是网页内容
  print $content;
  $URL里就是要偷数据的地址。例子中的是本人的小站。偷自己的东西,没犯法吧?
  当然,这个会把网页内容打印到控制台。所以很多数据或者需要保存的时候,应该用重定向符号输出到文件。如:
  perl yourfile.pl >a.html
  这样,输出的结果就保存在文件a.html中了。至于分析的语句,PERL可以使用方便而简洁的正则,限制于不同程序的不同分析,这里就不写分析语句了。
  2.Active Server Pages - VBScript
  ASP版本的小偷程序,也不见得有什么太大的难度。不过应用了XMLHTTP组件的功能而已,事实上,我也很惊讶ASP写这个程序的简短之处:
  <%
  URL = \"http://osdev.beguest.com/osdev3.htm\"
  Set objXMLHTTP = CreateObject(\"Microsoft.XMLHTTP\")
  objXMLHTTP.Open \"GET\",URL,False
  objXMLHTTP.Send
  Response.Write Server.HTMLEncode(objXMLHTTP.responseText)
  Set objXMLHTTP = Nothing
  %>
  简单不?呵呵....
  3.Active Server Pages - JScript
  从原理来说,这个和VBScript差不多。从语句来说,这个跟VBScript也差不多-毕竟,它们都用同一个组件:
  
  4.Java
  Java用来干这个,实在有点大才小用的感觉:
  import java.io.*;
  import java.net.*;
  public class getURLContent
  {
  public static void main(String args[]) throws MalformedURLException,IOException
  {
   URL url = new URL(\"http://osdev.beguest.com/osdev3.htm\");
   BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
   while(reader.ready()){
   System.out.println(reader.readLine());
   }
  }
  }

2008年8月10日星期日

PHP视频教程搜集

PHP视频教程搜集


PHP视频教程(一)

第一章 了解PHP

第二章 Windows下的PHP环境设置

第三章 PHP语法结构

PHP函数库

第四章 了解MySQL

第五章 MySQL语言结构

第六章 MySQL数据类型

第七章 MySQL函数

第八章 MySQL数据操纵语言DML

第九章 MySQL数据定义语言DDL

第十章 MySQL用户实用命令

第十一章 MySQL 事务与锁定

第十二章 MySQL 全文检索

第十三章 MySQL 查询缓存

第十四章 MySQL数据库管理

第十五章 计数器

第十六章 PHP实现文件上载

第十七章 时钟

第十八章 日历

第十九章 地址簿(上)

地址簿(下)

第二十章 图像处理

第二十一章 表单处理

第二十二章 发邮件

第二十三章 数据库操作

第二十四章 Oracle数据库连接(1)

Oracle数据库连接(2)

Oracle数据库连接(3)

Oracle数据库连接(4)

第二十五章 聊天室a

第二十六章 搜索引擎Google技术核心揭密(上)
搜索引擎Google技术核心揭密(下)

第二十七章 留言本 (1)

留言本 (2)

留言本 (3)

第二十八章 留言本Oracle版 (1)

留言本Oracle版 (2)

第二十九章 在线投票系统 (1)

在线投票系统 (2)

第三十章 论坛 (1)

论坛 (2)

第三十一章 网上购物系统 (1)

网上购物系统 (2)

网上购物系统 (3)

第三十二章 新闻系统 (1)

新闻系统 (2)

第二十四章 PHP与面向对象程序设计OOP (1)

PHP与面向对象程序设计OOP (2)


PHP视频教程(二)


PHP视频教程(中原大学) 1

PHP视频教程(中原大学) 2

PHP视频教程(中原大学) 3

PHP视频教程(中原大学) 4

PHP视频教程(中原大学) 5

2008年8月7日星期四

jQuery-1.2.6新特性及主要改变

性能提升我就不说了, 这可以查看

1、整合了Dimensions Plugin插件

2、消除.attr()方法的15个明显错误并优化了该方法

3、.toggle()方法中现在可以地增加了不止两个方法如:

$(\"div\").toggle(function(){
$(this).removeClass(\"three\").addClass(\"one\");
}, function(){
$(this).removeClass(\"one\").addClass(\"two\");
}, function(){
$(this).removeClass(\"two\").addClass(\"three\");
});
4、可以对toggle()和one()方法进行解除绑定
function test(){ $(this).addClass(\"test\"); }
$(\"div\").one(\"click\", test);
$(\"div\").unbind(\"click\", test);

$(\"div\").toggle(test, test);
$(\"div\").unbind(\"click\", test);

5、index()现在可用于检索一个jQuery对像在集合中的索引
var test = $(\"div.test\");
$(\"div\").index( test ) == 3

6、makeArray()可以把任何对像转换为数组
jQuery.makeArray( document.getElementsByTagName(\"div\") )
// => [ div, div, div ]

jQuery.makeArray( true )
// => [ true ]

jQuery.makeArray()
// => []
7、beforeSend 的使用可以在ajax调用之前处理一些代码来决定是否进行ajax调用
$.ajax({
beforeSend: function(){
return $(\"#input\").val() == \"\";
},
url: \"test.php\"
});


8、公开速度对像,可以通过更改jQuery.fx.speeds对像来对覆盖默认值,也可以新添自已的速度常数。

jQuery.fx.speeds.slow = 1000;
$(\"#test\").slideDown(\"slow\");