[Java]基于socket server push技术的聊天室实现(上)

mikel阅读(923)

基于socket server push技术的聊天室实现(上)

基于推技术的聊天室在国内现在已经比较常见。这种聊天室最大的特点是不使用浏览器每格一段时间就刷新的方式,而让服务器不定时往客户端写聊天的内容。当有 人发言时,屏幕上才会出现新聊天内容,而且聊天内容是不断向上滚动的,如果浏览器状态栏在的话,可以看到进度条始终处于下载页面状态。即使这种聊天室容纳 上百人,性能不会明显的降低。而以往的CGI或活动服务器端脚本做的聊天室性能明显就不行了。
   推技术的聊天室聊天室基本原理是,不使用HTTPD服务器程序,由自己的Socket程序监听服务器的80端口,根据html规范,在接收到浏览器的请 求以后,模仿www服务器的响应,将聊天内容发回浏览器。在浏览器看来就象浏览一个巨大的页面一样始终处于页面接收状态。也就是说,我们不再使用CGI等 方式来处理聊天的内容,而采用我们自己的程序来处理所有的事务。实际上它就是一个专门的聊天服务器,即一个简化了的专门用于聊天的WWW服务器。
  在具体讨论程序的实现之前,我们先来解析一下相关的技术。
◆http请求和应答过程
  http协议是浏览器与WWW服务器之间通信的标准,Socket聊天服务器应当遵守这个协议。实际上,我们只需要使用其中的一小部分就可以了。
   http使用了C/S(客户/服务器)模式,其中浏览器是http客户,浏览某个页面实际上就是打开一个Socket连接,发送一个请求到WWW服务 器,服务器根据所请求的资源发送应答给浏览器,然后关闭连接。客户和服务器之间的请求和应答有一定的格式要求,只要按照这个格式接收请求发送应答,浏览器 就会正常的显示你所需要的的内容。
  请求和应答具有类似的结构,包括:
  · 一个初始行
  · 0个或多个header lines
  · 一个空行
  · 可选的信息
  我们看看一个浏览器发出的请求:
  当我们浏览网页http://www.somehost.com/path/file.html的时候,浏览器首先打开一个到主机www.somehost.com的80端口的socket,然后发送以下请求:
  GET /path/file.html HTTP/1.0
  From: someuser@somehost.com
  User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0; DigExt)
  [空行]
  第一行GET /path/file.html HTTP/1.0是我们需要处理的核心。由以空格分隔的三部分组成,方法(method):GET,请求资源:/path/file.html,http版本:HTTP/1.0。
  服务器将会通过同一个socket用以下信息回应:
  HTTP/1.0 200 OK
  Date: Fri, 31 Dec 1999 23:59:59 GMT
  Content-Type: text/html
  Content-Length: 1354
  <html>
  <body>
  <h1>Hello world!</h1>
(其他内容)…
  </body>
  </html>
  第一行同样也包括三部分:http版本,状态码,与状态码相关的描述。状态码200表示请求成功。
  发送完应答信息以后,服务器就会关闭socket。
◆服务器模型
  一般网络服务器主要分为两种:
   (1)循环服务器(iterative server):它是一个时刻只能处理一个请求的服务器,多个请求同时到来将会放在请求队列里。TCP套接字服务器一般很少采用循环方式,因为假如某个客 户和服务器的连接出了问题,会导致整个服务器挂掉。它常为UDP套接字服务器所采用。
  (2)并发服务器(concurrent server):在每个请求到来以后分别产生一个新进程来处理这个请求所产生的连接。TCP的Socket服务器大多采用并发方式提供服务。
  并发服务器有多种实现方法:
  i 服务器和每个接收到的客户机进行连接,创建一个新的子进程处理这个客户机请求。
  ii 服务器预先创建多个子进程,由这个子进程处理客户机请求。这种方式被称为“预创建(prefork)”服务器。
  iii 服务器用函数select实现对多个客户机连接的多路复用。
  iv 超级服务器(inet)激活的服务器。
   并发服务器由于其算法而具有与生俱来的快速响应优势,而且当某一个用户与服务器通信死锁不会影响其他进程,但由于多个进程之间需要通过进程间通信实现信 息交换,而且fork新进程所带来的开销随着用户数量的增加越来越大,因此原始的并发服务器并不一定是最好的选择。JAVA语言给我们带来的方便的线程机 制,使我们可以用多线程来代替多进程,实现并发服务器,为我们进行快速的商业版本的聊天室的开发提供了优势。
  值得注意的是,在linux下,JAVA并没有实现真正的多线程,本质上仍然是多进程。
  ◆POST与GET
   提交form表单信息一般常用的有两种:POST或者GET。POST由于长度不受限制,而作为大多数form提交时使用的方法。GET方法通过URL 来发送提交信息,由于URL被WWW服务器限制了长度,一般最长只能为1024字节,所以如果发送信息很长的话,就不能使用这种方法。
  由于我们对聊天内容有长度限制,不会太长,而且普通浏览页面使用GET方法,使用GET方法提交form表单可以简化处理过程,所以我们可以使用这种方法来提交聊天内容。
  我们感到美中不足的是GET方法将提交的内容简单的附在连接后边,我们如果能够将提交的内容进行HTML编码的话,就可以让客户舒服点了。
 ◆用JAVA实现并发SOCKET通信
  如果以前做过C的SOCKET编程,那么这一段对你来说将不是什么难事。利用JAVA的多线程机制我们可以非常方便的实现并发服务。
  每当我们知道服务器主程序创建一个新的套接字连接(即成功地调用了accept()方法)的时候,就启动一个新的线程来负责本服务器和该客户之间的连接,主程序将返回并等待下一个连接。为了实现这个方案,本服务器主循环应该采用如下形式:
  while(true)
  { Socket newjoin=s.accept();
  Tread t=new ThreadedChatHandle(newjoin);
  t.start();
  }
   ThreadedChatHandle类是从Thread类衍生出的处理聊天过程的子类,它的run()方法包括了服务器和客户的通信循环——判断客户 的请求(例如登录、发言、刷新在线列表),处理发言数据,发送聊天信息等等。下面是一个服务器程序的例子,可以帮助初学者尽快理解。
  import java.io.*;
  import java.net.*;
  public class ChatServer
  { public static void main(String[] args)
  { int I=1;
  try
  {ServerSocket s=new ServerSocket(8080);
  /*创建一个监视8080端口的服务器套接字,如果需要,你可以改成80端口*/
  for(;;)
  { Socket newjoin=s.accept();
  /*等待一个连接。如果这个连接没有被创建,本方法阻塞当前线程。返回值是一个
Socket对象,服务器程序利用这个对象可以与连接的客户通信。*/
   System.out.println(“新连接”+i);
   new ThreadedChatHandle(newjoin,i).start();
  /* ThreadedChatHandle(Socket theS,int c)是我们自己定义的聊天服务类,这个
类在后边我们有进一步描述*/
       i++;
  }
  }
  catch(Exception e)
  { System.out.println(e);
  }
  }
  ……
  }
   多进程(线程)并发服务的一个关键问题是,如何实现进程(线程)间通信。每个客户的发言(包括表情和动作等选项)都需要放在一个公共的地方,让所有的输 出线程都能够获得它。解决的方法有很多,比如说放在数据库里,放在大家都有权限的dat文件里,或直接用管道实现进程间通信。其中,对一个聊天室服务器来 说,第一种方法是最傻的,太消耗系统资源,而且使程序执行效率变慢,可能出错环节增多。而使用管道通信的方式,把所有发言数据都保存在内存里,不但可以获 得最高的执行效率,安全的执行过程,也不用考虑线程同步的问题。不要以为所有的发言数据会很多,其实服务器端只要保存最后100句就已经很了不起了,不是 吗?
  JAVA里关于管道的API有:
  ●Java.io.PipedInputStream
  PipldInputStream():
  创建新的管道输入流,且它没有关联一个管道输出流。
  PipldInputStream(PipldOutputStream out):
  创建新的管道输入流,且从管道输出流out中读取数据。
  connect(PipldOutputStream out):
  关联一个管道输出流,且这个流读取数据。
  ●Java.io.PipedOutputStream
  PipldOutputStream():
  创建新的管道输出流,且它没有关联一个管道输入流。
  PipldOutputStream(PipldInputStream in):
  创建新的管道输出流,并输出数据到in。
  connect(PipldInputStream in):
  关联一个管道输入流,并输入数据到in。
  ◆Daemon的实现
  实际上,我还没有找到直接在JAVA中实现后台守护进程的方法。实现一个后台进程需要完成一系列的工作,包括:关闭所有的文件描述字;改变当前工作目录;重设文件存取屏蔽码(umask) ;在后台执行;脱离进程组;忽略终端I/O信号;脱离控制终端。
   JAVA中有一个叫Daemon Thread的东西,我没有使用过。据介绍,这种叫服务线程的东东唯一的目的就是为其它线程提供服务。而一个程序里如果只剩下服务线程的话,这个程序就会 停止(和我们的初衷简直就是南辕北辙)。有兴趣的朋友可以看看相关的内容,在java.lang.Thread.setDaemon()。
  虽然我们不能用JAVA实现后台服务守护进程,不过我们还有JAVA的C接口,问题总有解决的办法。
  ◆异常处理
   在Socket通信过程中很容易出现一些意外情况,如果不加处理直接发送数据,就可能导致程序意外退出。例如,客户关闭了socket后,服务器继续发 送数据,这就会导致异常。为避免这一情况的发生,我们必须对它进行处理,一般情况下,只需要简单地忽略这个信号就可以了。幸好,JAVA的异常处理机制还 比较强壮。
  ◆用户断线判断和处理
  许多情况下,用户不是通过提交“离开”按钮离开聊天室,这时候就需要判断用户是 否断线了。一般用户断线可能包括以下几种情况:方法是:当用户关闭浏览器,或者点击了浏览器stop按钮,或者跳转到其他网页的时候(如果用 JavaScript弹出一个聊天窗口的话,那么这两种情况我们是能够避免的——大不了再禁止右键),相对应的socket将会变成可读状态,而此时读出 的数据却是空字符串。
  利用这个原理,只要在某个可读的socket读取数据时,读到的却是空数据,那么我们就可以断定,与这个socket相对应的用户断线了。
  ◆防止连接超时断线
  如果浏览器在一段时间内没有接到任何数据,那么就会出现超时错误。要避免这一错误,必须在一定间隔内发送一些数据,在我们这个应用系统里,可以发送一些html注释。发送注释的工作可以直接插入聊天内容之间来完成。

[Lucene]Lucene.Net的语言处理包中Lucene.Net.Analysis.Cn的Bu

mikel阅读(623)

Lucene.Net的语言处理包中Lucene.Net.Analysis.Cn的Bug

    最近在对博客园的搜索程序进行改进。博客园的搜索功能用的是Lucene.net搜索引擎,当时博客园增加搜索功能时,Lucene.net还不支持中文分词, 后来得到http://www.cnblogs.com/yuhen/的帮助才解决这个问题。(最近博客园的搜索程序出了问题, 暂时改用google)。

    现在,Lucene.net中支持分词功能, 我下载了语言处理包(Lucene.Net NLS Pack),用其中的Lucene.Net.Analysis.Cn.ChineseAnalyzer建立索引,可是每次建立索引就出现死锁现象。看了sf.net上的这篇文章CJK Analysis maybe cause dead lock, 我想到可能是Lucene.Net.Analysis.Cn中代码有Bug,查看了Lucene.Net.Analysis.Cn中的代码,果然有问题, 在ChineseTokenizer的第148行,将dataLen == -1改为dataLen == 0, 死锁的问题就解决了。
    后来, 发现这篇文章http://ms.mblogger.cn/yysun/posts/6092.aspx中也讲到了Lucene.Net.Analysis.Cn中的Bug。
    我将两个bug改了一下,放在博客园上给需要者下载。虽然只改了两行代码,但我想改好了放在这,对一些初次使用者还是有点帮助的。
    Bin: http://files.cnblogs.com/dudu/Lucene.Net.Analysis.Cn.rar
    Src: http://files.cnblogs.com/dudu/Lucene.Net.NLS.rar

[Lucene]Lucene.net试用

mikel阅读(780)

【简介】
  lucene.net好多人都知道的吧,反正我是最近才好好的看了一下,别笑我拿历史当新闻哦,不太了解Lucence的朋友 先听我说两句哦。Lucene的知识主要分为索引、搜索、分析器、性能优化几个部分。索引和搜索没啥可说的,看几个例子就会了,来回那一套儿,按部就班做 几个实验就熟悉了。分析器是Lucence的精华,又分为分词和过滤两部分,而且中文分词更是难点,我的例子里是用从博客园程序中提取出来的 Lucene.Net.Analysis.Cn.dll来实现中文分词的,谁有中科院的那套中科院ICTCLAS分词工具的C#版麻烦提供一下哦。性能优 化也很重要,因为如果要索引的文件比较大的话,建立索引的性能就会很大的下降,你可以调整IndexWriter的几个参数来优化索引性能,还有可以用 IndexWriter.Optimize()方法(这个方法主要是优化查询速度,反而使索引性能有所下降),另外就是可以用多线程来分别对不同的内容进 行索引并保存到RAMDirectory里,然后再把所有的内存索引合并到FSDirectory里,甚至可以让多台服务器分别处理内容的各个部分,然后 把索引结果放到一个队列里,再有一台机器去读取索引结果队列并合并索引结果。
  做这个示例主要是为了演示一下Lucene.net的功能,它可 以对你指定的目录里的.txt,.htm,.html文件进行全文索引,然后对其进行查询。由于如果要索引的目录里文件特别多特别大的话,建立索引需要花 费很长的过程,所以我在示例程序里使用了异步编程,以便在建立索引的时候不阻塞界面线程。
【内容】
1、先看一个简单例子
public void Test1()
{
 //建立一个内存目录
 Lucene.Net.Store.RAMDirectory ramDir = new Lucene.Net.Store.RAMDirectory();

 //建立一个索引书写器
 IndexWriter ramWriter = new IndexWriter(ramDir,new ChineseAnalyzer(), true);

 //要索引的词,这就相当于一个个的要索引的文件
 string[] words = {"中华人民共和国", "人民共和国", "人民","共和国"}; 

 //循环数组,创建文档,给文档添加字段,并把文档添加到索引书写器里
 Document doc = null; 
 for (int i = 0; i < words.Length; i++)
 {
  doc = new Document();
  doc.Add(Field.Text("contents", words[i]));
  ramWriter.AddDocument(doc);
 }

 //索引优化
 ramWriter.Optimize();

 //关闭索引读写器,一定要关哦,按理说应该把上面的代码用try括主,在finally里关闭索引书写器
 ramWriter.Close();

 //构建一个索引搜索器
 IndexSearcher searcher = new IndexSearcher(ramDir);

 //用QueryParser.Parse方法实例化一个查询
 Query query = QueryParser.Parse("中华人民","contents",new ChineseAnalyzer());

 //获取搜索结果
 Hits hits = searcher.Search(query);

 //判断是否有搜索到的结果,当然你也可以遍历结果集并输出
 if (hits.Length() != 0)
  MessageBox.Show("有");
 else
  MessageBox.Show("没有");
}
2、其它的具体看下载代码吧。
   下载的文件里有个doc的文件夹,里面有4个文本文件,大家可以试着给那个目录建立索引,然后搜索一下“人民”,“中华”等几个关键字,看看能出来搜索 结果吗?简单说一下示例程序,就是遍历一个目录,找出所有文本和网页的文件,建立Lucene的Document文件,并索引了文件的目录和内容,然后添 加到索引器里,最后在程序执行目录的Index子目录里建立索引,这一部分的调用使用了异步委托。搜索的时候就是在Index目录里检索符合某个关键字的 条目。
【注意】
1、建立完索引后一定要调用IndexWriter的Close方法,否则如果你要索引的目录里的文件少于minMergeDocs的话,是不能建立索引的。
2、 Field.Text的静态方法有两个重载版本,如果第二个参数是string的话那么这个字段既索引也存储,如果是TextReader的话只索引不存 储,这点要搞清楚,另外在构建TextReader的时候要注意使用合适的编码格式,否则有的文件读出来是乱码,建立的索引肯定也是按乱码建立的咯。
【小节】
  其实lucene大家谁也是学学就会,关键要是整一个像google,baidu这样的搜索引擎就难了,好歹这搜索引擎也是一个行业呢,所以谁有兴趣,好好钻研一下搜索行业的相关技术,没准靠这个还能创业呢,是吧。
  再问一下,《lucence实战》有中文版吗?或者其它关于Lucence的中午图书,给推荐一本。
  最后借贵地和大家讨论一个问题:从长远考虑,程序员学那项技术比较有前途?做程序也好几年了,想找一个领域好好深入一下,以后做一个行业的领域专家。那样才不会太累,要不什么都鼓捣,太累了,而且还不容易出成绩。我列举了几个方向,大家帮忙分析分析,谢谢。
1、linux+oracle(走数据库管理的路线)
2、汇编、c底层驱动开发(据说很简单,就那么几个指令,学一年就精通了,不像.NET,得老跟着走)
3、ec++,kjava嵌入式开发(包括手机游戏,路由固件等开发)
4、即时通讯行业(网络编程,包括网络游戏的服务端编程这些)
5、搜索行业(不太了解)
6、OA、工作流(自己做一套不用编程,拖拖拽拽画画就能实现企业业务流程的电子化,infopath,OSS,formserver,WF的那一套)
7、.net网站开发(范围很大,要掌握的东西太多,会的人很多,深入的很少)
8、流媒体开发(3G时代这玩意儿不知道能不能派上用场)
【参考】
idior的《Lucene.net系列》
李刚、宋伟、邱哲的《ajax+lucene构建搜索引擎》

下载地址:
http://files.cnblogs.com/onlytiancai/WawaSearch.rar

[Flex]在线Photoshop

mikel阅读(735)

又一款在线Flex应用——在线“PhotoShop”的SumoPaint.com。这种应用目前也有一些例子了,例如很早前介绍的Pixlr.com。本文介绍的这款应用也很不错,基本的功能都有了,当然,要跟PhotoShop比还差得远。现在这种应用感觉不是很热,真的是搞设计的都宁愿用桌面版PS、FW那些。希望在以后这种应用会火起来。(PS:期待Google的gos推出) 网址:http://www.sumopaint.com/app/

[C#]应用程序架构指导袖珍版

mikel阅读(755)

微软模式与实践小组最近发布了应用程序架构指导袖珍版本,总共有6本,分别介绍了不同类型应用程序的架构指导,包括敏捷架构方法、Mobile应用程序、RIA应用程序、富客户端应用程序、Web应用程序以及Service架构等,非常值得一看。

1. 敏捷架构方法

App_Guide_Agile

下载指导

2. Web引用架构

App_Guide_Web

下载指导

3. 移动应用架构

App_Guide_Mobile

下载指导

4. RIA架构

App_Guide_RIA

下载指导

5. 富客户端架构

App_Guide_RCA

下载指导

6. 服务架构

App_Guide_Service

下载指导

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

[网站]最古怪的网站列表

mikel阅读(691)

10大最佳古怪网站
  【网站名称】:眼睛的幻觉
  【网站链接】:http://www.michaelbach.de/ot/index.html
  【网站简介】:在这里你可以体验各种“空间频率扭曲”,实际上那只是“你的眼睛背叛了你的心”而已
  【网站名称】:路边收集衣
  【网站链接】:http://www.pavementgear.com/
  【网站简介】:该网站专门收集路边被人丢弃的衣物,但他绝对不是捡LJ的,我们怀疑该网站的创始人是个有怪癖的家伙。
  【网站名称】:粗口合集
  【网站链接】:http://www.rosskemp.co.uk/
  【网站简介】:为了表达对粗口和暴力精神的崇敬,以及对著名艺人RossKemp的欣赏和遗憾,他的Fans整了这么一个只有他的头像和他“名言”的网站。
  【网站名称】:打进富人榜
  【网站链接】:http://www.globalrichlist.com/
  【网站简介】:输入收入水平,看看你在地球的财富排行中数老几。很有可能你会惊奇地发现,自己居然属于高收入人群。
  【网站名称】:厕所博物馆
  【网站链接】:http://www.toiletmuseum.com/
  【网站简介】:从厕所涂鸦到马桶设计,从两性如厕研究到厕所的社会功能,我们大便的地方其实并不那么单纯……当然,一定不能错过裘·德洛等一干名人蹲马桶时的情景
  【网站名称】:伤疤比赛
  【网站链接】:http://www.scarmageddon.com/
  【网站简介】:男人就喜欢显摆自己的伤疤,因此应该找个地方让他们比比。在这里,你可以找到来自世界各地的对手。不过老实说,你“六岁时从炕上掉下来”留下的伤疤和这里的前十名相比可能只是一个小针眼而已。
  【网站名称】:妈妈说就算你注册的域名再长baidu都能搜索出来,对应网址看看
  【网站链接】:http://www.mamashuojiusuannizhuc…engsousuochulai.cn/
  【网站简介】:据说这个域名是百度的员工注册的,点开一看,果然是百度。
  【网站名称】:博客分析机
  【网站链接】:http://www.bigfools.com/quiz/blog.php
  【网站简介】:编辑小马用自己的博客试了试,分析结果说他的博客有38%以上自恋成分,没错,小马承认了,你也来试试吧!
  
  【网站名称】:国际爱好洗碗池边进餐者协会
  【网站链接】:http://www.sinkie.com/
  【网站简介】:据说在洗碗池旁吃饭是一种新的健康饮食方式,鬼晓得是不是真的。不过,可以肯定的是这个网站不仅有众多会员,而且还为此设立了自己的节日。
  【网站名称】:可笑可乐
  【网站链接】:http://www.shakeskin.com/
  【网站简介】:用吃奶的力气做个鬼脸,然后拍成照片传到网上。结果你得到一个印着你的头像的杯子,而你的脸比杯子把儿弯曲得还厉害。
  10大最佳实用网站
  【网站名称】:经典桌面
  【网站链接】:http://www.mydeskcity.com/
  【网站简介】:这个名叫东子的偏执狂不知花了多少工夫搜集这些图片,有将近40G的容量,而且很多图片都是站长本人在国外搜集后,自己进行加工的作品,值得一看。
  【网站名称】:查询在线
  【网站链接】:http://www.answers.com/
  【网站简介】:别老想着谷歌和百度,也可以试试这个在线词典,小到词语大到事件,都能找到详细的解释和相关的网站链接,而且有不同的语言版本。
  【网站名称】:MD主机
  【网站链接】:http://www.host.md/
  【网站简介】:MD??哪个国家的域名?其实是一个空间提供商,有免费空间,还可以注册xxx.host.md二级域名【网站名称】:网络精选
  【网站链接】:http://www.kontraband.com/
  【网站简介】:住在伦敦的网络老油条理查德创建了这个网站,上面包含网络上最好的视频剪辑、游戏、姑娘和图片。这里泡上整整一个下午,也不一定能真正看完这儿全部宝贝的九牛一毛。
  【网站名称】:想说就说
  【网站链接】:http://www.skype.com/
  【网站简介】:这个软件结合了视频电话和MSN的所有功能,还可以拨打国际长途。在国外火得一塌糊涂,国内知道的人就不多了,据说是因为费用太便宜,引来某些本土通讯大哥们的联合抵制。
  【网站名称】:抓瞎
  【网站链接】:http://www.zhuaxia.com/
  【网站简介】:不是抓虾!一个为你精选挑选各种网络资讯的网站,确实省不少时间。
  【网站名称】:个人空间
  【网站链接】:http://www.myspace.com/
  【网站简介】:有个美国佬最近把50多亿美金都扔在一个网站上,由此我们可以预见到互联网的未来。赶紧找个空间创建你自己的天地吧,把你的照片、音乐传上去,再搞点小买卖。
  【网站名称】:让聊天随时随地
  【网站链接】:http://www.gabbly.com/
  【网站简介】:在任何网站上都可以聊天,只要在前面加“gabbly.com”。【网站名称】:中奖发财
  【网站链接】:http://www.zhuaj.com/
  【网站简介】:钱不够花,只能说明你野路子不够多。不妨来这个抓奖网站碰碰运气,几乎所有中奖的活动都收纳其中,接下来就看你有没有那个运气了.
  【网站名称】:图片共享现在连
  【网站链接】:http://www.flickr.com/
  【网站简介】:照片的上传和分享都有软件可以帮你打理完成了.下载这个免费的软件,然后往里面填好你的链接地址,就可以和全世界的朋友们分享了。如果你乐意,你甚至可以把它们变成海报、画册、甚至是邮票,当然也可以自由浏览他人的作品。
  10个最佳创意网站
  【网站名称】:永远在变的video
  【网站链接】:http://www.theunseenvideo.com/
  【网站简介】:它会读取你的IP地址,以及当地的天气和温度,不同的气候条件下你看到的MV是不一样的……
  【网站名称】:文字游戏
  【网站链接】:http://www.bemboszoo.com/
  【网站简介】:只用二十六个英文字母就创造出了一个趣味盎然的动物世界,所有动物都极其巧妙的由其英文名字的字母构成,而且所有的字母只采用了BemboRoman这一种字体,变化无穷,令人眼花缭乱。
  【网站名称】:要你命2007
  【网站链接】:http://www.meebo.com/
  【网站简介】:一个小暴发户网站,它把Yahoo、Jabber、Gtalk、AIM、ICQ和MSN几款流行的即时通讯软件整合在一起,支持多款软件之间的信息互通,是名副其实的“聊天要你命2007”。
  【网站名称】:网不易
  【网站链接】:http://www.netnoease.com/
  【网站简介】:这可不是网易的姊妹站也不是死对头,据说是由两个刚毕业的大学生创作的个人网站。这个网站的特点既不是新闻即时也不是游戏火爆,而是回复量惊人,口水也不少。
  【网站名称】:外国家谱
  【网站链接】:http://www.geni.com/tree/start
  【网站简介】:不要以为只有中国人有家族谱的概念,国外也有这一套。不过国内是以家族为基础,国外就不管这一套了。在这个家族谱网站理,不分国界,全球参与。
  【网站名称】:年龄猜想
  【网站链接】:http://www.ageguess.com/
  【网站简介】:如果你很在意真实的你在别人眼中的形象,那就提交相片到这里吧,浏览网页的陌生人会告诉你真正看起来有多大……陌生的评价最客观。
  【网站名称】:百GOOGLE度
  【网站链接】:http://www.baigoogledu.com/
  【网站简介】:百度和谷歌野合的产物,据说他们之间平均85%的链接都不一样。
  【网站名称】:卖衣服
  【网站链接】:http://www.uniqlo.com/
  【网站简介】:你一定想不到这家网站是做什么的,有点儿像搞视觉艺术,但你会发现原来你可以在这买到衣服。没错,它就是卖衣服的。
  【网站名称】:工业设计前线
  【网站链接】:http://www.yankodesign.com/
  【网站简介】:不蒙你,这里能找到全球最新的工业产品设计,看了你就知道原来自己的生活质量有多差。
  【网站名称】:百万美元
  【网站链接】:http://www.milliondollarhomepage.com/
  【网站简介】:电脑画面上大约有100万个像素,如果每个象素以1美元卖给不同的客户,就可以赚到100万美元。梦话?一位叫AlexTew的英国男孩做到了。
  10个最佳视听网站
  【网站名称】:有些电影不过是烂片
  【网站链接】:http://www.rottentomatoes.com/
  【网站简介】:这里评选出的是最烂的片子,并用“一般烂、很烂、超级烂”这样的级别给它们分类。参评作品中甚至还包括了一些电视游戏,显然评委们有些激动了。
  【网站名称】:金色视频
  【网站链接】:http://www.wfuv.org/
  【网站简介】:就如同在你的电脑上开通了六万个电视频道一样,你只要点点鼠标就可以观看到各种电视节目,从体育到戏剧,共有100万小时的剪辑供你免费观看。
  【网站名称】:逆音
  【网站链接】:http://www.indieray.com
  【网站简介】:闲人一律免进,只献给那些热爱摇滚的孩子们。说不定……你就是其中之一
  【网站名称】:好莱坞电影手册
  【网站链接】:http//myvideo.blogbus.com
  【网站简介】:不管好莱坞的电影再怎么傻X,你就是愿意让他们从你口袋里掏钱。既然如此,我们决定帮你把二百五的热情进行到底。没错,绝招就在这个好莱坞电影手册。
  【网站名称】:中式英语
  【网站链接】:http://www.chinglish.de/
  【网站简介】:干货翻译成“FUCKGOODS”,难怪老外一头雾水,而这样的例子可远远不在少数。拜托,明年就要奥运了,别这么丢脸了行不行啊!
  【网站名称】:跳舞
  【网站链接】:http://b.muglets.com/
  【网站简介】:我们猜测,叫每个打开此网页的人都哈哈大笑是站长的目的。上传或者选择一个头像,然后选择一个身体,再然后就让这个小兄弟在你的屏幕上不停地跳舞吧!
  【网站名称】:冷笑话
  【网站链接】:http://www.douban.com/group/Giaclub
  【网站简介】:笑话居然也有冷热之分,而且冷笑话照样让你笑个不停。当然你可以不信这个邪,因为在他们看来你压根就是一个不懂幽默的人。
  【网站名称】:每日笑报
  【网站链接】:http://www.dailyfunnypics.com
  【网站简介】:全世界各地的搞笑达人集体奉献,各种搞怪的漫画、涂鸦、视频应有尽有,日日更新。
  【网站名称】:洋葱
  【网站链接】:http://www.theonion.com/content/index
  【网站简介】:如果有人说这是美国最好的新闻网站,你可千万别信。因为……网站上所有的新闻都是假的,没错,他们是故意的。还不懂吗,生活的最大的笑话就是你认为可信的新闻居然都是假的。
  【网站名称】:搞笑游戏
  【网站链接】:http://www.funny-games.ws
  【网站简介】:上千个搞笑游戏,每日更新,你要做的就是玩了之后哈哈大笑。就是不好笑,也假装意思一下嘛。
  【网站名称】:最搞笑的时光
  【网站链接】:http://www.killsometime.com/
  【网站简介】:各种无厘头的搞笑视频,以及搞笑游戏,不能算是最好的,但很有意思,有空过来看看,当然,前提是你实在闲得没事。
  【网站名称】:我很烦
  【网站链接】:http://www.i-am-bored.com/
  【网站简介】:你很烦,别理你?那哪成,万一你想不开跳楼呢!看看这个网站吧,世界上可不是只有你一个人烦,看看别人是怎么消解无聊的。
  【网站名称】:快乐至死
  【网站链接】:http://www.htportal.org/websites.html
  【网站简介】:搞笑视频、离奇经历、傻x电影,难道让你笑一下真的很难吗?我们不信这个邪!
  【网站名称】:很无聊
  【网站链接】:http://www.whangdoodle.us/links.htm
  【网站简介】:很多滑稽的图片和视频,并且链接了为数不少的其他搞笑网站。
  10大最佳恋物网站
  【网站名称】:罗博报告
  【网站链接】:http://www.robbreport.com/
  【网站简介】:顶级奢侈品的圣经,世界富豪们的每月必读之物。你想拥有吗?恭喜你,今年10月份这本杂志就要登陆中国了,前提是你拥有至少5000万的身价,否则你根本就买不到,因为不会在市场上发行。
  【网站名称】:在线购物
  【网站链接】:http://www.galleria.com.cn/
  【网站简介】:舍得花钱,懒得出门?这里是个好去处。只要保证你的卡里有足够的闲钱,第二天就会有人送货上门。
  【网站名称】:我爱奢侈品
  【网站链接】:http://www.ishechi.com/
  【网站简介】:一个不错的奢侈品综合网站,一干为数众多的奢侈品拥孬,成为他们的会员吧,比你一个人待家里看毛片来得有趣!
  【网站名称】:男人玩具
  【网站链接】:http://www.topgear.com/
  【网站简介】:是谁说汽车就是男人的生殖器来着,这人一定是个天才。准备点冰块把,以防肾上腺控制不住节奏。
  【网站名称】:奢华生活
  【网站链接】:http://www.luxurylifestyle.com/
  【网站简介】:等咱有钱了,直升飞机买两架,一架挂着另一架……打住吧,兄弟,这是暴发户,不是真正的奢华生活。
  【网站名称】:时间区
  【网站链接】:http://www.timezone.com/
  【网站简介】:老实说,造一只顶级的世界好表,可一点儿都不比生个孩子容易,甚至时间更长。所以,抽点时间好好补补课吧
  【网站名称】:万宝龙
  【网站链接】:http://www.montblanc.com/
  【网站简介】:不管你信不信,现在连笔都成奢侈品了,据说最贵的笔都能上千万。当然,品质同样重要,别中看不中
  【网站名称】:抽根雪茄
  【网站链接】:http://www.cubancrafters.com/top10.php
  【网站简介】:你别不服气,世界上最好的雪茄只能产自古巴。这个网站每年会评出年度10种顶级的古巴雪茄,光是看着就叫人心里痒痒。
  【网站名称】:电子集中营
  【网站链接】:http://www.engadget.com/
  【网站简介】:一小撮电子产品狂热分子建起了这个网站准备自娱自乐,没想到居然人气越来越旺。老实说,里面的东西还确实不错。
  【网站名称】:杯酒人生
  【网站链接】:http://www.winefond.com/
  【网站简介】:一个专业的葡萄酒试酒网站,不管是哪个年份,哪个国家,哪种酒,你都能得到详细的资料。当然,我们想让你干得可远远不止这个……

[C#]获得youku视频截图和地址

mikel阅读(1010)

实现方式如下

youku的站外引用提供了如下地址

image

http://player.youku.com/player.php/sid/XNTg0NDExMzI=/v.swf

其中XNTg0NDExMzI=这个部分可以看做是视频的ID

而每次视频播放时v.swf通过以下网址获取视频信息

http://v.youku.com/player/getPlayList/VideoIDS/视频的ID/version/5/source/out?onData=%5Btype%20Function%5D&n=3

这个个网址返回的是一段json,类似

{"data":[{"tt":"0","ct":"a","cs":"2143","logo":"http:\/\/vimg12.youku.com\/1100641F46493E8D0B3EFF0048E76B57CA9FBD-CEC7-7777-3402-EC9732C9950B","seed":5484,"tags":["\u7f8e\u56fd","\u98df\u54c1"],"categories":"91","streamsizes":{"flv":"3111068"},"streamfileids":{"flv":"19*67*19*19*2*42*19*16*19*19*42*61*47*44*32*46*19*5*42*42*46*61*19*19*42*32*44*50*2*5*42*37*61*30*16*16*37*23*26*37*61*30*37*26*23*44*16*16*26*5*16*47*46*26*30*50*19*16*44*44*12*37*46*47*12*46*"},"videoid":"14610283","segs":{"flv":[{"no":0,"size":"3111068","seconds":"90.00"}]},"fileid":"19*67*19*19*2*42*19*16*19*19*42*61*47*44*32*46*19*5*42*42*46*61*19*19*42*32*44*50*2*5*42*37*61*30*16*16*37*23*26*37*61*30*37*26*23*44*16*16*26*5*16*47*46*26*30*50*19*16*44*44*12*37*46*47*12*46*","username":"dongdong19850912","userid":"4777835","title":"\u591a\u79cd\u7f8e\u56fd\u8f93\u534e\u98df\u54c1\u88ab\u68c0\u51fa\u8d28\u91cf\u95ee\u9898","key1":"bd7ed04d","key2":"3fd76e2fd48efb01","seconds":"90.00","streamtypes":["flv"]}],"user":{"id":0}}

其中的Title自然就是标题,logo就是视频的截图

 

这里可以用json.net来反序列化获取,但我这里是使用的正则来提取的

		static public string[] GetMediaPic(string url) {
if (url.ToLower().StartsWith("http://player.youku.com/player.php/sid/")) {//判断是否为youku视频
return getPicYouKu(url);
} else {
return new string[0];
}
}
static string[] getPicYouKu(string url) {
string id = url.Replace(@"http://player.youku.com/player.php/sid/","").Replace(@"/v.swf","");
string newurl = string.Format(
@"http://v.youku.com/player/getPlayList/VideoIDS/{0}/version/5/source/out?onData=%5Btype%20Function%5D&n=3"
, id);
var hp = new HttpProc(newurl);//这个类见下方网址
var html = hp.Proc().Replace(@"\/", "/");//通过get方式获取信息
var re = new Regex("(http://[^\"]+)[\\w\\W]+\"title\":\"([^\"]+)\"");//与此同时提取截图和标题
var m = re.Match(html);
if (m.Success) {
var ret = new string[2];
ret[0] = m.Groups[1].Value;//0是url
ret[1] = UnicodeToChinese(m.Groups[2].Value);//1是title,要从unicode转为汉字
return ret;
} else
return new string[0];//如果没有就返回空数组     
}
                /// <summary>
/// unicode转汉字
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
static public string UnicodeToChinese(string str) {
return ConvertTo(str, "unicode");
}
static string ConvertTo(string str, string encode) {
StringBuilder tmpStr = new StringBuilder();
for (int i = 0; i < str.Length; i++) {
if (str[i] == '\\' && str[i + 1] == 'u') {
string s1 = str.Substring(i + 2, 2);
string s2 = str.Substring(i + 4, 2);
int t1 = Convert.ToInt32(s1, 16);
int t2 = Convert.ToInt32(s2, 16);
byte[] array = new byte[2];
array[0] = (byte)t2;
array[1] = (byte)t1;
string s = System.Text.Encoding.GetEncoding(encode).GetString(array);
tmpStr.Append(s);
i = i + 5;
} else { tmpStr.Append(str[i]); }
}
return tmpStr.ToString();
}

HttpProc可参见:http://www.51aspx.com/CV/CHSNS122,UserWebService,ChAlumna,Reqres.cs.html

 

如无外最后返回数组即为[0]存标题,[1]存截图地址

 

var x=GetMediaPic("http://player.youku.com/player.php/sid/XNTg0NDExMzI=/v.swf");
if(x.Length==0){
        //不是youku或无法获取
}else{
Title=x[0];
Url=x[1];
}

[C#]Asp.net图表控件

mikel阅读(1049)

是的,我们现在可以使用<asp:chart runat="server"/>了,相关文章及下载: 

  • 下载免费的微软图表控件
  • 下载VS 2008对图表控件的工具支持
  • 下载微软图表控件例程
  • 下载微软图表控件文档
  • 访问微软图表控件论坛
  • 新的ASP.NET图表控件发布了译文

     

    首先,必须是vs2008,.net3.5sp1,以下引用译文:

    <asp:chart /> 支持各种丰富的图表选项,包括pie(饼图), area(区域), range(范围), point(点), circular(圆形), accumulation(累积), data distribution(数据分布), ajax interactive(AJAX交互), doughnut(甜圈图)等等。你可以在控件的声明中静态地声明图表数据,或者也可以使用数据绑定动态地填充。在运行时,该服务器控件会生成一个图片 (譬如一个.PNG文件),是使用<asp:chart/>控件输出的<img/>元素在页面的客户端HTML中引用的。该服务 器控件支持缓存图表图片的功能,还支持保存到硬盘上以在持久性场景中使用的功能。它不要求安装其他的服务器软件,可以用于任何标准的ASP.NET网页 上。

    想体会一下如何使用 <asp:chart />控件的话,我建议下载微软图表控件样程项目。该项目包括了200多个可以在本地运行的ASP.NET样例网页。只要在VS 2008中打开web项目,点击“运行”就可以看到它们的实际显示,然后你可以打开每个例子的.aspx源码看是怎么实现的。

    此控件安装以后就像正常的asp.net服务端控件一样调试使用,如果在服务器上发布不成功,请把本机中

    System.Web.DataVisualization.xml
    System.Web.DataVisualization.Design.dll
    System.Web.DataVisualization.dll

    复制到服务器的网站根目录的BIN目录下,如果是第一次运行请在网站根目录下新建一个tempImages来生成临时图片并给予足够的权限。

    由于没有找到像ajaxtoolkit那样的官方在线文档和例子,没有时间下载文档样例的朋友可以访问我刚上传的在线文档:

    http://dotnetchart.omgsoft.com.cn/

    依次点开左边的树形目录就可以欣赏它所能实现的效果了,并配有C#和VB代码,和HTML代码(如果需要的话)。

     

     简单看了一下效果和代码,如果你用过ZenGraph控件,就会对代码实现部分感到熟悉,但是这款控件更是超越了ZenGraph,比如强大的 3D效果,让我们不必再羡慕某收费的商业软件,还有tooltip效果(还可以在tooltip中显示子图表!),甚至点击图片的数据时也可以自定义实现 (是通过img的<map><area ../>来实现的),在这之前,复杂的图表我用开源的ZenGraph,简单的我用google chart,但是像flash图表那样的效果在web中一直无法企及。然而这一切都过去了,更多的功能等待发现,更优秀的网站等待创建,你还在等什么呢?

     对了,当然是免费的。

    希望本文能对您有所帮助

    祝编程愉快

    ———————————————————–

     

     

    虽然博客园已有人介绍过了,还是忍不住介绍一下微软这套免费又功能强大的图表控件「Microsoft Chart Controls for Microsoft .NET Framework 3.5」。本帖并提供相关软件、文件、官方示例的下载点。
    微软在收购了 Dundas 这家优秀的图表组件公司后,日前释出了功能相当强大,而且完全免费的图表组件,名为「Microsoft Chart Controls for Microsoft .NET Framework 3.5」。
    过去要在 ASP.NET 或 Windows Form 中绘制图表,可能要花钱买其它公司的组件,或用微软的绘图函式库自己撰码处理。但现在透过组件,以及微软提供免费下载的上百个现成范例 (包装成单一个 project)、免费的技术文件,可让您的项目及报表,轻松套用各种功能强大的 2D、3D、实时变化的动态图表;且透过 AJAX,可让图表及里面的数据,每秒钟都持续更新使用者透过浏览器,可和图表做各种互动设定。
    此图表组件,可套用于 ASP.NET 和 Windows Forms 程序,并可让程序开发人员完全依项目需求做客制化。但这套组件只能在新一代的 .NET 3.5 SP1 / VS 2008 SP1 中使用您只要下载本帖下方第五个连结的官方示例后,直接用 VS 2008 开启网站,即可看到现成的炫丽图表示例。
    此新一代的图表组件,已整合进 SQL Server 2008 新一代的 Reporting Services 报表软件中 [1]。
    (1) Microsoft Chart Controls for Microsoft .NET Framework 3.5 :
    http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c
    包含 ASP.NET 和 Windows Forms 图表控件的核心安装程序
    (2) Microsoft Chart Controls for Microsoft .NET Framework 3.5 语言套件 :
    http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=581ff4e3-749f-4454-a5e3-de4c463143bd
    (3) Microsoft Chart Controls Add-on for Microsoft Visual Studio 2008 :
    http://www.microsoft.com/downloads/details.aspx?FamilyId=1D69CE13-E1E5-4315-825C-F14D33A303E9&displaylang=en
    安装后可与 VS 2008 有效地整合,并可在 VS 2008 工具箱中,支持 ASP.NET、Windows Forms 的 IntelliSense 功能
    (4) Microsoft Chart Controls for .NET Framework Documentation :
    http://www.microsoft.com/downloads/details.aspx?FamilyId=EE8F6F35-B087-4324-9DBA-6DD5E844FD9F&displaylang=en
    Chart controls 的 documentationAPI 英文文件 (chm 格式)
    (5) Samples Environment for Microsoft Chart Controls :
    http://code.msdn.microsoft.com/mschart
    提供超过 200 个示例,可用 VS 2008 直接开启网站后执行,务必下载玩看看
    (6) Windows Forms-ASP.NET Chart Control .NET Development MSDN Forums :
    http://social.msdn.microsoft.com/Forums/en-US/MSWinWebChart/threads/

    图 1 支持 3D 效果,并可和使用者做互动

    图 2 支持 AJAX 及 callbacks 编程及特效,图表及里面的数据可自动持续更新

    Chart controls 的其它特色:

    • 浏览器或报表中的图片,使用者可直接按鼠标右键存成图档
    • 使用者可在浏览器中,直接用鼠标做设定,要以何种格式 (3D 或 2D) 显示图表
    • 透过 AJAX 技术,使用者在图表中做各种点选或鼠标操作时,会动态出现相关提示、额外的数据或信息
    • 透过 AJAX 技术,可让图表及里面的数据,每秒钟都持续一直更新
    • 亦内建金融类及特定领域的图表,有现成的样板可直接套用在项目中

    ———————————-
    参考文件
    [1] MICROSOFT ACQUIRES DUNDAS TECHNOLOGY FOR SQL SERVER 2008 :
    http://www.dundas.com/Company/Media/PressSQL2008.aspx
    [2] 绘图的新利器 – Microsoft Chart Controls for .NET Framework 3.5 :
    http://www.dotblogs.com.tw/chhuang/archive/2008/10/26/5776.aspx
    [3] 介绍好用组件:Microsoft Chart Controls for .NET 3.5 :
    http://blog.miniasp.com/post/2008/10/Useful-aspnet-and-winform-charting-control-from-Microsoft.aspx

     

     

    转自:

    1.http://www.cnblogs.com/WizardWu/archive/2008/11/01/1324097.html

    2.http://www.cnblogs.com/fhmsha/archive/2008/11/26/new_asp_dot_net_chart_is_released.html

  • [MVC]oxite开源的blog项目基于MVC架构

    mikel阅读(782)

    什么是Oxite?

     

    你可能没有听过OXite,但你是否听过 Channel 9 、 Channel 8Channel 10TechNet EdgeMix Online,显然OXite就是这些网站的后台发动机。Mix Online,你就能在Mix首页看到对Oxite的导航。确切的说,Oxite是微软的开源博客内容管理系统,基于ASP .NET MVC架构,正如其团队在Codeplex上的阐述一样,Oxite是为了以下目标而生的:

    • 提供一个Blog范例,除了Blog的基本功能,你还可以了解到Trackback,rss,comment这些基本模块的实现,当然这些东西可以在其他开源项目中了解,但是Oxite至少提供了可以对比借鉴的可能:-)
    • 提供一个现实世界的MVC架构范例。

    如果你对MVC和Blog开源项目有十足的兴趣,不妨下载Oxite来了解一下Mix发动机的秘密,下面是如何开始的一点导航:

    还等什么,去下载Oxite来建立自己的博客内容管理系统,顺便学习学习基于MVC架构下的软件设计实现,这是多好的事儿啊。

    1
    0
    (请您对文章做出评价)

    [SEO]20个免费SEO工具

    mikel阅读(1257)

    在开发和维护网站的过程中,网站分析将对网站的前途起到非常重大的作用。今天暴风彬彬为大家收集了20个用来对自己的网站进行分析的资源或工具,而且它们几乎不用注册甚至下载就可以使用哦。有些可以说是SEO必不可少的工具!还等什么,快往下看…

      下面要介绍的这20个工具,有些能对你提交的网站进行详尽的分析并作出详细的分析报告,甚至提示如何解决网站存在的一些问题,以达到优化效果; 有些工具只是提供一个大体的分析。我相信其中大部分都会对你的SEO工作有所帮助,而且会是你的网站维护起来更有意思 😀 

    您还可以参考以下网站优化相关文章:
    通过27个网站分析工具了解网站的9个有趣真相》 
    浅谈网站用户体验UX与SEO的关系
    推荐两个SEO辅助搜索工具
    Google 评价 blog 的指标》 
    Google 网页排名背后的技术》 

    1.Website Grader

    SEO-工具-Website-Grader

      Website Grader是我平常比较喜欢使用SEO分析工具,因为它分析得很全面,可用性也很高。通 过Website Grader你将得到一个关于你提交的网站的非常详尽的分析报告,报告涉及到了网站的各个部分,比如页面结构、域名信息、标题摘要信息(h1,h2,h3 这些)、Google索引数量和bot最后爬行日期、RSS是否正确、Google/Yahoo/Alexa/MSN上的反向链接数、 Technorati排名、del.icio.us的收藏数、Alexa的排名情况和Google PageRank值。并且还会对提交的网站进行打分及网站出现的问题的修改建议。通常Website Grader所提出来的修改建议是很有价值的,而且能详细的致命问题出在哪,如何才能解决这样的问题。

    SEO-分析-工具-Website-Grader

     

    2.Trifecta

    SEO-分析工具-Trifecta

      Trifecta是这20个SEO工具中比较独特的一个,它以不同的标准分析一个网页、一个博客甚至一个顶级域名下的整个网站,他最终会为你提交的网站总结大致的分数及报告。如果不是会员的话每天可以申请一份分析报告。

    网站分析-工具-trifecta

    3.Spider Simulator

      这个分析工具会对你提交的网站进行相对于搜索引擎友好度的分析,并对提交的网站进行评分。主要的评分标准是Meta标签的使用、网页的标题、图片和Alt属性、网站响应时间和链接。

    SEO-分析工具-Spider Simulator


    4.Web Page Analyzer(来自WebsiteOptimization.com)

      这个SEO免费工具会对你的SEO工 作提供足够的分析信息。它将对提分析网站载入时间、包含的对象(Objects)、对象的大小等等,其中最有帮助的地方是“Analysis and Recommendations” (分析和建议)部分,它将为网站列出11个方面的评测及打分,其中红色为警告、黄色为提醒、绿色为很好。

    SEO-免费工具-WebPageAnalyzer


    5.SEO Analysis Tool

      SEO Analysis Tool这个SEO工具也能提供一个非常详尽的分析报告,它主要对网页的Meta标签、关键词和链接文本进行分析。这个工具对于网站的SEO工作可以说是非常好的资源。

    seo-工具


    6.The Escape’s Web Page Analyzer

      这个工具帮助你了解提交的网站的标题结构(h1~h6)、链接、关键词的使用和内容的问题。它并不像其它的工具那样为你提交的网站提供详细的分析报告,但是它提供的信息的帮助性和针对性要比其他SEO分析工具更好。

    SEO-工具-escapes


    7.Seed Keywords

      Seed keywords 提供一个 “plain English SEO review”来分析页面某些方面并给予建议,并提供关于这些元素为什么会影响页面SEO的基本说明。

    SEO-免费-工具-seedkey



    8.Web Page Analyzer(来自FreeWebSubmission.com)

      这个SEO工具可以全面的分析您提交的网站,如同其它工具一样,可以提供详细的分析报告。比如分析Meta标签并给予一定的指导性建议。这个工具在分析的时候也很看重网页的大小、读取时间以及在页面内容中关键词相关的链接、含关键词的Alt属性和关键词密度。

    SEO-工具-freewebsub


    9.Spider Test (来自We Build Pages)

      Spider Test 分析工具会快速简单的告诉你提交的网页是如何展现给搜索引擎的,它会显示出网页的描述、关键词、网页大小和网页中的文本等等…

    SEO-工具-spidertest


    10.Web Page Analyzer (来自 Webmaster Toolkit)

      Web Page AnalyzerSEO分析工具可以让你为搜索引擎提供一个URL和指定的短语,然后它会反馈给你一些关于如何为这个短语而优化网页的建议。

    SEO-工具-analyzertoolkit


    11.Link Appeal (来自 Webmaster Toolkit)

      你想知道一个网页(你的网站的或其它网站)是否有被其他网站链接的价值吗?输入URL,然后Link Appeal会基于一些评判因素给你提交的网页一个类似PageRank的分数和相关的外链数量。

    SEO-工具-linkappeal


    12.Full Page Test (来自Pingdom Tools)

      这个来自Pingdom网站的SEO免费工具可以分析网页的很多方面,包括读取时间,对象,CSS,RSS,转向链接等等…

    SEO-工具


    13.SearchEngine-Analysis.com

      输入一个URL和一个针对性的关键词或搜索短语,然后你会得到关于如何优化这个短语以在其它竞争者中领先。

    SEO-工具-seanalysis


    14.Web Page Speed Test (来自Self SEO)

      这个分析工具可以对你提交的网站列表进行对比,一次可以最多提交10个URL。

    SEO-工具


    15.Similar Page Checker

      帮助你检测输入的两个网址的内容的相似度,以避免由于内容重复而被搜索引擎处罚。如果它们非常相似,你可以进行适当的修改。转载文章的话,这个工具还是比较实用的。

    SEO-工具


    16.Dead-Links.com

      这个工具可以爬行你提交的整个网站,以寻找返回404错误页面的链接。检测的时间比较长。

    SEO-工具


    17.Firebug

      Firebug是Firefox的插件,它可以让你在浏览器中分析和调试自己网页中的HTML、CSS和JavaScript

    SEO-工具


    18.YSlow for Firebug

      另一个Firefox插件,它可以分析并为你提供提高网页加载速度的建议。这个工具集成了上面说的FireBug工具。

    SEO-工具


    19.Google Webmaster Tools

      这个工具太有名了,我就不做太多介绍了。

    SEO-工具


    20.Web CEO

      Web CEO是一套非常优质的SEO优化和分析工具,分为收费版和免费版。免费版可以帮助你根据它的建议去优化你的网站,比如关键词建议,网页优化建议,和检查网站的评分等…

    SEO-工具

    英文原文:20 Free Page Analysis Tools
    翻译原文:20个免费的SEO网站分析工具(暴风彬彬)