<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>后羿之弓</title>
	<atom:link href="http://www.51enter.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.51enter.net</link>
	<description>学习学习再学习</description>
	<pubDate>Mon, 19 Jul 2010 02:07:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Facebook背后的软件</title>
		<link>http://www.51enter.net/346/</link>
		<comments>http://www.51enter.net/346/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 02:07:31 +0000</pubDate>
		<dc:creator>zhouyu</dc:creator>
		
		<category><![CDATA[php]]></category>

		<category><![CDATA[小技巧]]></category>

		<category><![CDATA[服务器]]></category>

		<category><![CDATA[运营]]></category>

		<guid isPermaLink="false">http://www.51enter.net/?p=346</guid>
		<description><![CDATA[Facebook的数据规模使得很多传统的解决方案根本不适用，或者无法分解来处理。保持一个拥有5亿用户的系统一直稳定可靠的运行，并不是一件很容易的事情。这篇文章介绍了一下Facebook使用的软件。
 
Facebook的扩展性挑战
 
在我们讨论细节之前，这里有一些Facebook已经做的软件规模：
 
&#62; Facebook有570000000000每月页面浏览量 （据Google Ad Planner）。
 
&#62; Facebook的照片量比其他所有图片网站加起来还多（包括Flickr等网站）。
 
&#62; 每个月超过30亿张照片被上传。
 
&#62; Facebook的系统服务每秒处理120万张照片 。 这不包括CDN服务中处理的照片。
 
&#62; 每月超过25亿条的内容 （状态更新，评论等）被共享。
 
&#62; Facebook有超过30,000服务器 （这个数字是去年的！）
 
Facebook扩展所依赖的软件
 
Facebook是在某些程度上说仍然是LAMP的站点，但它比普通的LAMP大得多，以纳入其他元素和很多服务，并修改现行的做法。
 
例如：
 
&#62; Facebook也使用PHP，但它已经为它建立一个编译器，以便它可以分为本地代码打开了Web服务器，从而提高性能。
 
&#62; Facebook也使用Linux，但它特别为网络吞吐量做了优化。
 
&#62; Facebook也使用MySQL，但主要是作为一个Key-value的持久性存储，Jions和服务器逻辑操作在Web服务器上操作。因为在那里更容易执行。
 
&#62; 还有是自编写的系统，如Haystack，一个高度可扩展的对象存储，用来存储Facebook的照片。还有Scribe，一个日志系统，可以运行在Facebook的巨大规模上的日志系统。
 
OK。现在 我们介绍一下全球最大的社会网络网站的所使用的软件吧。
 
Memcached
 
memcached的
是现在互联网最有名的软件之一了。 这是一个分布式内存缓存系统，用来作为Web服务器和MySQL服务器之间的缓存层（因为数据库访问比较慢）。
多年以来，Facebook已经提出了一些优化Memcached和一些周边软件的办法。如压缩network stack。
 
Facebook的每时每刻都有数10TB的数据缓存在Memcached的数千台服务器上。 它可能是世界上最大的Memcached的集群了。
 
HipHop for PHP
 
PHP作为一种脚本语言，和本地程序相比是运行缓慢的。 HipHop可以将PHP转换成C++代码，然后再进行编译，可以获得更好的性能。 因为Facebook严重依赖PHP，这使得其可以让Web服务器运行的更有效率。
 
一个工程师小团队在Facebook（一开始只有三人）花了18个月时间开发HipHop，现在已经是可用状态。
 
Haystack
 
Haystack是Facebook的高性能照片存储/检索系统（严格来说，是一个对象存储，因此它并不一定要存储照片）。 它有许多工作要做;有超过20亿张上传的照片，并且每一个被保存在四个不同的分辨率，因此有超过800亿张照片。
 
它不仅是对能够处理的上亿的照片，运行表现也是至关重要的。 正如我们前面提到的，Facebook的服务约120万张照片每秒 ，这个数字不包括CDN上的。 这是一个惊人的数字。
 
BigPipe
 
BigPipe是Facebook开发的一个动态的网页服务系统。 Facebook使用它来按section(称为“pagelets”)处理每个网页，以获取最佳性能。
 
例如，在聊天窗口是分开的，新闻Feed也是分开的，等等。 这些pagelets可以在一个页面表现的时候同时使用，这是该页面表现的时候获取进来的。即使某些工程的一部分关闭或中端，用户也可以获得一部分网页。
 
Cassandra
 
Cassandra是一个不会单点失败的分布式存储系统。 这是为NoSQL运动的一个重要组成部分，并已公开的源代码（它甚至成为一个Apache项目）。Facebook在搜索功能中使用它。
 
除了Facebook，还有一些人也用它，例如Digg的。 不过最近Twitter放弃了cassandra。
 
Scribe
 
Scribe是一个灵活的日志系统，Facebook在他的内部大量使用。 它的能够处理在Facebook的大规模日志记录，并自动处理新的日志记录类别,Facebook有数百个日志类别(categories)。
 
Hadoop and Hive
 
Hadoop的是一个开源的map-reduce实现，使得它可以在进行大数据上进行运算。 Facebook的使用这个进行数据分析（而我们都知道，Facebook已经大量的数据）。 Hive就是发源于Facebook，使得对于Hadoop使用的SQL查询成为可能，从而是其更容易对非程序员使用。
 
Hadoop和Hive是开源的（Apache项目），有为数众多的追随者，例如雅虎和Twitter。
 
Thrift
 
Facebook使用的几种不同的语言和不同的services。 PHP是最终用于前端，Erlang是用于聊天，Java和C ++也使用于多种场所，也许还有其他语言。Thrift是一个内部开发的跨语言的框架，联系语言，使他们可以在一起合作，从而使他们之间可以交互。 这使得Facebook可以更容易为继续保持其跨语言的发展。
 
Facebook已经让Thrift开源。更多的语言支持已被添加到Thrift。
 
Varnish
 
Varnish是一个HTTP加速器，可以作为一个负载平衡器，并缓存的内容，然后可以以闪电般的速度送达。
 
Facebook使用的arnish来处理照片和个人资料图片，处理每天数十亿的要求。 和其他的东西一样，Varnish是开源的。
 
保持Facebook 顺畅运行的其他东西。
 
我们已经提到的软件，组成了Facebook的系统，并帮助运行在大规模上。 但是，处理这么大的系统是一个复杂的任务，因此我们将列出一些其他的东西，他们保持了Facebook的平稳运行。
 
渐进发布和暗启动
 
Facebook有一个他们所谓的守门人制度（Gatekeeper），允许他们可以给不同的用户运行两套不同的系统。 这让Facebook渐进的发布新的功能，A / B测试，只为Facebook雇员发布等的某些特性。
Gatekeeper
也可以让Facebook实现“暗启动”，这是在用户使用一些功能之前，就激活某些功能（因为用户没有察觉，所以称之为暗启动）。
这将作为一个现实世界的压力测试，在正式启动前，帮助揭露一些功能障碍和其他问题。 暗启动通常是在正式启动前两个星期。
 
Profiling的直播系统
 
Facebook的仔细监控其系统，有趣的是它也负责监察每一个PHP函数在生产环境的性能。 检测各个PHP的环境的配置运行情况。使用开源工具，XHProf 。
 
渐进的利用关闭功能来提升性能
 
如果Facebook运行时出现性能问题，有一个办法，就是逐步禁用不太重要的功能，以增强Facebook的大量核心功能表现。
 
我们没有提及的事情
 
我们没有提到硬件相关的事情，但这也是提高可伸缩性的重要一环。例如，就像其他大型站点，Facebook利用CDN来处理静态内容。Facebook还有一个the huge data center，可以帮助他扩展更多的服务。
 
Facebook的开源情节
 
不仅是Facebook使用（和帮助），如Linux，Memcached的，MySQL和Hadoop的开源软件，以及许多其他情况下，也贡献许多了其内部开发的软件。
 
Facebook亦开源了Tornado，一个高性能的网络服务器框架，由FriendFeed团队开发。
 
关于开放源码软件清单，可以在Facebook’s Open [...]]]></description>
			<content:encoded><![CDATA[<p>Facebook的数据规模使得很多传统的解决方案根本不适用，或者无法分解来处理。保持一个拥有5亿用户的系统一直稳定可靠的运行，并不是一件很容易的事情。这篇文章介绍了一下Facebook使用的软件。</p>
<p> </p>
<p><strong>Facebook的扩展性挑战</strong></p>
<p> </p>
<p>在我们讨论细节之前，这里有一些Facebook已经做的软件规模：</p>
<p> </p>
<p>&gt; Facebook有570000000000每月页面浏览量 （据Google Ad Planner）。</p>
<p> </p>
<p>&gt; Facebook的照片量比其他所有图片网站加起来还多（包括Flickr等网站）。</p>
<p> </p>
<p>&gt; 每个月超过30亿张照片被上传。</p>
<p> </p>
<p>&gt; Facebook的系统服务每秒处理120万张照片 。 这不包括CDN服务中处理的照片。</p>
<p> </p>
<p>&gt; 每月超过25亿条的内容 （状态更新，评论等）被共享。</p>
<p> </p>
<p>&gt; Facebook有超过30,000服务器 （这个数字是去年的！）</p>
<p> </p>
<p><strong>Facebook扩展所依赖的软件</strong></p>
<p> </p>
<p>Facebook是在某些程度上说仍然是LAMP的站点，但它比普通的LAMP大得多，以纳入其他元素和很多服务，并修改现行的做法。</p>
<p> </p>
<p>例如：</p>
<p> </p>
<p>&gt; Facebook也使用PHP，但它已经为它建立一个编译器，以便它可以分为本地代码打开了Web服务器，从而提高性能。</p>
<p> </p>
<p>&gt; Facebook也使用Linux，但它特别为网络吞吐量做了优化。</p>
<p> </p>
<p>&gt; Facebook也使用MySQL，但主要是作为一个Key-value的持久性存储，Jions和服务器逻辑操作在Web服务器上操作。因为在那里更容易执行。</p>
<p> </p>
<p>&gt; 还有是自编写的系统，如Haystack，一个高度可扩展的对象存储，用来存储Facebook的照片。还有Scribe，一个日志系统，可以运行在Facebook的巨大规模上的日志系统。</p>
<p> </p>
<p>OK。现在 我们介绍一下全球最大的社会网络网站的所使用的软件吧。</p>
<p> </p>
<p><strong>Memcached</strong></p>
<p> </p>
<p><a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;ie=UTF-8&amp;sl=en&amp;tl=zh-CN&amp;u=http://memcached.org/&amp;prev=_t&amp;rurl=translate.google.com&amp;twu=1&amp;usg=ALkJrhjoR4aiCM3vk8ZlmOZ-vLMVbFMYQA" target="_blank"><span style="color: #336d89;">memcached</span></a>的<br />
是现在互联网最有名的软件之一了。 这是一个分布式内存缓存系统，用来作为Web服务器和MySQL服务器之间的缓存层（因为数据库访问比较慢）。<br />
多年以来，Facebook已经提出了一些优化Memcached和一些周边软件的办法。如压缩network stack。</p>
<p> </p>
<p>Facebook的每时每刻都有数10TB的数据缓存在Memcached的数千台服务器上。 它可能是世界上最大的Memcached的集群了。</p>
<p> </p>
<p><strong>HipHop for PHP</strong></p>
<p> </p>
<p>PHP作为一种脚本语言，和本地程序相比是运行缓慢的。 <a href="http://wiki.github.com/facebook/hiphop-php/" target="_blank"><span style="color: #336d89;">HipHop</span></a>可以将PHP转换成C++代码，然后再进行编译，可以获得更好的性能。 因为Facebook严重依赖PHP，这使得其可以让Web服务器运行的更有效率。</p>
<p> </p>
<p>一个工程师小团队在Facebook（一开始只有三人）花了18个月时间开发HipHop，现在已经是可用状态。</p>
<p> </p>
<p><strong>Haystack</strong></p>
<p> </p>
<p><a href="http://www.facebook.com/note.php?note_id=76191543919" target="_blank"><span style="color: #336d89;">Haystack</span></a>是Facebook的高性能照片存储/检索系统（严格来说，是一个对象存储，因此它并不一定要存储照片）。 它有许多工作要做;有超过20亿张上传的照片，并且每一个被保存在四个不同的分辨率，因此有超过800亿张照片。</p>
<p> </p>
<p>它不仅是对能够处理的上亿的照片，运行表现也是至关重要的。 正如我们前面提到的，Facebook的服务约120万张照片每秒 ，这个数字不包括CDN上的。 这是一个惊人的数字。</p>
<p> </p>
<p><strong>BigPipe</strong></p>
<p> </p>
<p><a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;ie=UTF-8&amp;sl=en&amp;tl=zh-CN&amp;u=http://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919&amp;prev=_t&amp;rurl=translate.google.com&amp;twu=1&amp;usg=ALkJrhiLlmGC047zZTlQiS-Dv_dA3i55qA" target="_blank"><span style="color: #336d89;">BigPipe</span></a>是Facebook开发的一个动态的网页服务系统。 Facebook使用它来按section(称为“pagelets”)处理每个网页，以获取最佳性能。</p>
<p> </p>
<p>例如，在聊天窗口是分开的，新闻Feed也是分开的，等等。 这些pagelets可以在一个页面表现的时候同时使用，这是该页面表现的时候获取进来的。即使某些工程的一部分关闭或中端，用户也可以获得一部分网页。</p>
<p> </p>
<p><strong>Cassandra</strong></p>
<p> </p>
<p><a href="http://cassandra.apache.org/" target="_blank"><span style="color: #336d89;">Cassandra</span></a>是一个不会单点失败的分布式存储系统。 这是为NoSQL运动的一个重要组成部分，并已公开的源代码（它甚至成为一个Apache项目）。Facebook在搜索功能中使用它。</p>
<p> </p>
<p>除了Facebook，还有一些人也用它，例如Digg的。 不过<a href="http://news.csdn.net/a/20100712/219081.html" target="_blank"><span style="color: #336d89;">最近Twitter放弃了cassandra</span></a>。</p>
<p> </p>
<p><strong>Scribe</strong></p>
<p> </p>
<p><a href="http://github.com/facebook/scribe" target="_blank"><span style="color: #336d89;">Scribe</span></a>是一个灵活的日志系统，Facebook在他的内部大量使用。 它的能够处理在Facebook的大规模日志记录，并自动处理新的日志记录类别,Facebook有数百个日志类别(categories)。</p>
<p> </p>
<p><strong>Hadoop and Hive</strong></p>
<p> </p>
<p><a href="http://translate.googleusercontent.com/translate_c?hl=en&amp;ie=UTF-8&amp;sl=en&amp;tl=zh-CN&amp;u=http://hadoop.apache.org/&amp;prev=_t&amp;rurl=translate.google.com&amp;twu=1&amp;usg=ALkJrhg42LgK3luQAhxUO4LxcRZHCBSIoQ" target="_blank"><span style="color: #336d89;">Hadoop</span></a>的是一个开源的map-reduce实现，使得它可以在进行大数据上进行运算。 Facebook的使用这个进行数据分析（而我们都知道，Facebook已经大量的数据）。 <a href="http://hadoop.apache.org/hive/" target="_blank"><span style="color: #336d89;">Hive</span></a>就是发源于Facebook，使得对于Hadoop使用的SQL查询成为可能，从而是其更容易对非程序员使用。</p>
<p> </p>
<p>Hadoop和Hive是开源的（Apache项目），有为数众多的追随者，例如雅虎和Twitter。</p>
<p> </p>
<p><strong>Thrift</strong></p>
<p> </p>
<p>Facebook使用的几种不同的语言和不同的services。 PHP是最终用于前端，Erlang是用于聊天，Java和C ++也使用于多种场所，也许还有其他语言。<a href="http://incubator.apache.org/thrift/" target="_blank"><span style="color: #336d89;">Thrift</span></a>是一个内部开发的跨语言的框架，联系语言，使他们可以在一起合作，从而使他们之间可以交互。 这使得Facebook可以更容易为继续保持其跨语言的发展。</p>
<p> </p>
<p>Facebook已经让Thrift开源。更多的语言支持已被添加到Thrift。</p>
<p> </p>
<p><strong>Varnish</strong></p>
<p> </p>
<p><a href="http://varnish-cache.org/" target="_blank"><span style="color: #336d89;">Varnish</span></a>是一个HTTP加速器，可以作为一个负载平衡器，并缓存的内容，然后可以以闪电般的速度送达。</p>
<p> </p>
<p>Facebook使用的arnish来处理照片和个人资料图片，处理每天数十亿的要求。 和其他的东西一样，Varnish是开源的。</p>
<p> </p>
<p><strong>保持Facebook 顺畅运行的其他东西。</strong></p>
<p> </p>
<p>我们已经提到的软件，组成了Facebook的系统，并帮助运行在大规模上。 但是，处理这么大的系统是一个复杂的任务，因此我们将列出一些其他的东西，他们保持了Facebook的平稳运行。</p>
<p> </p>
<p><strong>渐进发布和暗启动</strong></p>
<p> </p>
<p>Facebook有一个他们所谓的守门人制度（Gatekeeper），允许他们可以给不同的用户运行两套不同的系统。 这让Facebook渐进的发布新的功能，A / B测试，只为Facebook雇员发布等的某些特性。<br />
Gatekeeper<br />
也可以让Facebook实现“暗启动”，这是在用户使用一些功能之前，就激活某些功能（因为用户没有察觉，所以称之为暗启动）。<br />
这将作为一个现实世界的压力测试，在正式启动前，帮助揭露一些功能障碍和其他问题。 暗启动通常是在正式启动前两个星期。</p>
<p> </p>
<p><strong>Profiling的直播系统</strong></p>
<p> </p>
<p>Facebook的仔细监控其系统，有趣的是它也负责监察每一个PHP函数在生产环境的性能。 检测各个PHP的环境的配置运行情况。使用开源工具，<a href="http://pecl.php.net/package/xhprof" target="_blank"><span style="color: #336d89;">XHProf </span></a>。</p>
<p> </p>
<p><strong>渐进的利用关闭功能来提升性能</strong></p>
<p> </p>
<p>如果Facebook运行时出现性能问题，有一个办法，就是逐步禁用不太重要的功能，以增强Facebook的大量核心功能表现。</p>
<p> </p>
<p><strong>我们没有提及的事情</strong></p>
<p> </p>
<p>我们没有提到硬件相关的事情，但这也是提高可伸缩性的重要一环。例如，就像其他大型站点，Facebook利用CDN来处理静态内容。Facebook还有一个<a href="http://www.facebook.com/prinevilledatacenter" target="_blank"><span style="color: #336d89;">the huge data center</span></a>，可以帮助他扩展更多的服务。</p>
<p> </p>
<p><strong>Facebook的开源情节</strong></p>
<p> </p>
<p>不仅是Facebook使用（和帮助），如Linux，Memcached的，MySQL和Hadoop的开源软件，以及许多其他情况下，也贡献许多了其内部开发的软件。</p>
<p> </p>
<p>Facebook亦开源了Tornado，一个高性能的网络服务器框架，由FriendFeed团队开发。</p>
<p> </p>
<p>关于开放源码软件清单，可以在<a href="http://facebook.com/opensource" target="_blank"><span style="color: #336d89;">Facebook’s Open Source page</span></a>找到。</p>
<p>译文链接：<a href="http://www.yankay.com/"><span style="color: #336d89;">http://www.yankay.com/</span></a></p>
<p>原文链接：<span class="Apple-style-span" style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px;"><span class="Apple-style-span" style="text-align: left; line-height: 21px; font-family: Georgia, 'Times New Roman', 宋体, Times, serif; color: #494949; font-size: 14px;"><strong style="margin: 0px; padding: 0px;"><em style="margin: 0px; padding: 0px;"><span style="font-style: normal; margin: 0px; font-weight: normal; padding: 0px;"><a style="margin: 0px; color: #506874; text-decoration: none; padding: 2px;" href="http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/">http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/</a></span></em></strong></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.51enter.net/346/feed/</wfw:commentRss>
		</item>
		<item>
		<title>开源Web流量分析工具</title>
		<link>http://www.51enter.net/338/</link>
		<comments>http://www.51enter.net/338/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 02:13:16 +0000</pubDate>
		<dc:creator>zhouyu</dc:creator>
		
		<category><![CDATA[工具]]></category>

		<category><![CDATA[开源]]></category>

		<category><![CDATA[流量分析]]></category>

		<guid isPermaLink="false">http://www.51enter.net/?p=338</guid>
		<description><![CDATA[　　Web 流量分析工具多不胜数，从 WebTrends 这样专业而昂贵的，到 Google Analytics 这样强大而免费的，从需要在服务器端单独部署的，到可以从前端集成的，不一而足。本文收集并介绍了10个功能强大的开源 Web 流量分析工具，因为是开源的，因此可以免费部署到你的网站。
　　TraceWatch

　　TraceWatch 是一个开源 Web 流量分析程序，支持实时分析，可以提供深度分析报告。
　　SlimStat

　　基于 PHP-MySQL，同时，可以像 Google Analytics 那样，通过 JavaScript 或 PHP 脚本集成到网站。
　　Piwik

　　可以生成站点的详细的实时访问报告，基于 PHP 和 MySQL，也可以像 Google Analytics 那样在前端集成。
　　Open Web Analytics

基于 PHP，内置对 WordPress，Gallery 以及 MediaWiki 的支持。
　　W3Perl

W3Perl 是一个 Web Log 分析工具。
　　CrawlTrack

　　CrawTrack 是一个很好的 Google Analytics 的开源替用品，提供非常独特的报告，比如，CrawTrack 可以帮你预防诸如 SQL 注射一类的攻击。
　　BBClone

BBClone 是一个 Web 计数器，可以提供很详细的访问报告。基于 PHP。
　　PhpMyVisites

　　基于 GNU/GPL 开源协议，可以提供很详细的，有关访问者信息的报告，它的 GUI 界面很有趣而且实用，安装也很简单。
　　AWStats

　　可以提供非常强大的，关于网站，FTP 站点，乃至 Email 服务器的访问分析报告，基于 [...]]]></description>
			<content:encoded><![CDATA[<p>　　Web 流量分析工具多不胜数，从 WebTrends 这样专业而昂贵的，到 Google Analytics 这样强大而免费的，从需要在服务器端单独部署的，到可以从前端集成的，不一而足。本文收集并介绍了10个功能强大的开源 Web 流量分析工具，因为是开源的，因此可以免费部署到你的网站。</p>
<p>　　<strong>TraceWatch</strong></p>
<p align="center"><img src="http://img1.gtimg.com/tech/pics/hv1/153/179/550/35809548.jpg" alt="10 个强大开源Web流量分析工具" /></p>
<p>　　TraceWatch 是一个开源 Web 流量分析程序，支持实时分析，可以提供深度分析报告。</p>
<p>　　<strong>SlimStat</strong></p>
<p align="center"><img src="http://img1.gtimg.com/tech/pics/hv1/156/179/550/35809551.jpg" alt="10 个强大开源Web流量分析工具" /></p>
<p>　　基于 PHP-MySQL，同时，可以像 Google Analytics 那样，通过 JavaScript 或 PHP 脚本集成到网站。</p>
<p>　　<strong>Piwik</strong></p>
<p align="center"><img src="http://img1.gtimg.com/tech/pics/hv1/154/179/550/35809549.jpg" alt="10 个强大开源Web流量分析工具" /></p>
<p>　　可以生成站点的详细的实时访问报告，基于 PHP 和 MySQL，也可以像 Google Analytics 那样在前端集成。</p>
<p>　　<strong>Open Web Analytics</strong></p>
<p align="center"><img src="http://img1.gtimg.com/tech/pics/hv1/152/179/550/35809547.jpg" alt="10 个强大开源Web流量分析工具" /></p>
<p class="pictext" align="center">基于 PHP，内置对 WordPress，Gallery 以及 MediaWiki 的支持。</p>
<p>　　<strong>W3Perl</strong></p>
<p align="center"><img src="http://img1.gtimg.com/tech/pics/hv1/151/179/550/35809546.jpg" alt="10 个强大开源Web流量分析工具" /></p>
<p class="pictext" align="center">W3Perl 是一个 Web Log 分析工具。</p>
<p>　　<strong>CrawlTrack</strong></p>
<p align="center"><img src="http://img1.gtimg.com/tech/pics/hv1/150/179/550/35809545.jpg" alt="10 个强大开源Web流量分析工具" /></p>
<p>　　CrawTrack 是一个很好的 Google Analytics 的开源替用品，提供非常独特的报告，比如，CrawTrack 可以帮你预防诸如 SQL 注射一类的攻击。</p>
<p>　　<strong>BBClone</strong></p>
<p align="center"><img src="http://img1.gtimg.com/tech/pics/hv1/149/179/550/35809544.jpg" alt="10 个强大开源Web流量分析工具" /></p>
<p class="pictext" align="center">BBClone 是一个 Web 计数器，可以提供很详细的访问报告。基于 PHP。</p>
<p>　　<strong>PhpMyVisites</strong></p>
<p align="center"><img src="http://img1.gtimg.com/tech/pics/hv1/146/179/550/35809541.jpg" alt="10 个强大开源Web流量分析工具" /></p>
<p>　　基于 GNU/GPL 开源协议，可以提供很详细的，有关访问者信息的报告，它的 GUI 界面很有趣而且实用，安装也很简单。</p>
<p>　　<strong>AWStats</strong></p>
<p align="center"><img src="http://img1.gtimg.com/tech/pics/hv1/148/179/550/35809543.jpg" alt="10 个强大开源Web流量分析工具" /></p>
<p>　　可以提供非常强大的，关于网站，FTP 站点，乃至 Email 服务器的访问分析报告，基于 CGI。</p>
<p>　　<strong>Grape</strong></p>
<p align="center"><img src="http://img1.gtimg.com/tech/pics/hv1/147/179/550/35809542.jpg" alt="10 个强大开源Web流量分析工具" /></p>
<p class="pictext" align="center">Grape 的界面比较简单，功能虽然不多，但很实用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.51enter.net/338/feed/</wfw:commentRss>
		</item>
		<item>
		<title>自动SVN</title>
		<link>http://www.51enter.net/333/</link>
		<comments>http://www.51enter.net/333/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 06:12:40 +0000</pubDate>
		<dc:creator>zhouyu</dc:creator>
		
		<category><![CDATA[小技巧]]></category>

		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.51enter.net/?p=333</guid>
		<description><![CDATA[@echo off 
for /l %%x in (1,1,50000000000) do ( 
timeout /T 3 /nobreak
&#34;C:\Program Files\CollabNet\Subversion Client\svn.exe&#34; update &#34;E:\c.51yx.com&#34;
echo %%x
) 
pause
]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">@echo off </li>
<li>for /l %%x in (1,1,50000000000) do ( </li>
<li>timeout /T 3 /nobreak</li>
<li>&quot;C:\Program Files\CollabNet\Subversion Client\svn.exe&quot; update &quot;E:\c.51yx.com&quot;</li>
<li>echo %%x</li>
<li>) </li>
<li>pause</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.51enter.net/333/feed/</wfw:commentRss>
		</item>
		<item>
		<title>9款免费的远程协助软件</title>
		<link>http://www.51enter.net/331/</link>
		<comments>http://www.51enter.net/331/#comments</comments>
		<pubDate>Fri, 28 May 2010 07:33:29 +0000</pubDate>
		<dc:creator>zhouyu</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.51enter.net/?p=331</guid>
		<description><![CDATA[当你在使用电脑时突然碰到了问题自己解决不了，那么我们可以通过远程协助来让网友解决。首先，如果网友和你在同一个局域网中你可以使用的就是Windows 的远程桌面功能。如果你不在局域网中，并且只有一个Internet 连接。你可以通过其他的远程协助软件从互联网中得到网友的帮助。这里我们列出九款免费的Windows远程协助软件。
 
1。 Team Viewer：TeamViewer是一个既简单又友好的远程协助工具。您可以通过它远程控制对方的桌面，在线帮助对方，也可以让对方看你的屏 幕，无需担心防火墙，IP地址和NAT。

2。 CrossLoop：CrossLoop 是另一个免费的远程协助工具，该软件需要两个人都安装它。有关CrossLoop的更多内容可以在 这里看到。

3.LogMeIn：LogMeIn是 一个免费的应用程序，一般在你想让自己的电脑被其他的电脑通过互联网远程控制时使用。通过互联网对方可以完全控制你整个电脑。之前我们曾在这个博客中提到 过LogMeIn。

4.Mikogo：这是另一种易 于使用的跨平台桌面共享工具，非常适合网络会议，在线会议或远程协助。而且它对商业和私人使用都免费。

5.ShowMyPC：ShowMyPC 提供即时协作工具，也是个免费软件。软件功能包括桌面共享，屏幕录制，远程PC访问。

 
6.YuuGuu：这是 另一个有用的远程桌面应用程序，支持Windows以及Mac OSX的平台。

7.UltraVNC：ultravnc 是一个功能强大，易于使用的免费软件，可以在你自己的屏幕上显示另一台电脑的屏幕（通过互联网或局域网）。该软件允许你使用鼠标和键盘来远程控制其他电 脑。

8.TightVNC：另一 个免费的远程控制软件。通过TightVNC，你可以像坐在自己的电脑前一样，看到并使用本地的鼠标和电脑控制远程电脑的桌面。它也是免费的。

9.EchoVNC：EchoVNC 是一种既安全，“又对防火墙友好的”远程桌面控制工具，支持VNC，Radmin服务器和查看对方桌面功能。有了它，Windows系统的PC和Mac OSX系统的苹果机都可以无视防火墙，路由器和网络代理配置互相进行远程控制。

]]></description>
			<content:encoded><![CDATA[<p>当你在使用电脑时突然碰到了问题自己解决不了，那么我们可以通过远程协助来让网友解决。首先，如果网友和你在同一个局域网中你可以使用的就是Windows 的远程桌面功能。如果你不在局域网中，并且只有一个Internet 连接。你可以通过其他的远程协助软件从互联网中得到网友的帮助。这里我们列出九款免费的Windows远程协助软件。</p>
<p> </p>
<p><strong>1。</strong> <a href="http://www.teamviewer.com/index.aspx">Team Viewer</a>：TeamViewer是一个既简单又友好的远程协助工具。您可以通过它远程控制对方的桌面，在线帮助对方，也可以让对方看你的屏 幕，无需担心防火墙，IP地址和NAT。</p>
<p><img title="en_filetransfer" src="http://x56pyq.bay.livefilestore.com/y1pQvP2R_3GadFFkYVALMExAZKDYnJC1Yjv51KkzH7HKjC6XV-bluEzJf3CxJucgVJciFwZvuE9qczPdzg4AUVqld2wgxlILpL0/en_filetransfer.gif" border="0" alt="en_filetransfer" width="575" height="427" /></p>
<p><strong>2。</strong> <a href="http://www.crossloop.com/mktg/screensharing_123">CrossLoop</a>：CrossLoop 是另一个免费的远程协助工具，该软件需要两个人都安装它。有关CrossLoop的更多内容可以<a href="http://www.nirmaltv.com/2008/03/29/share-and-connect-pcs-across-world-with-crossloop/">在 这里看到</a>。</p>
<p><img title="bob_share" src="http://img.cnbeta.com/newsimg/100528/06423911810701301.jpg" border="0" alt="bob_share" width="200" height="171" /></p>
<p><strong>3.</strong><a href="https://secure.logmein.com/US/products/free/">LogMeIn</a>：LogMeIn是 一个免费的应用程序，一般在你想让自己的电脑被其他的电脑通过互联网远程控制时使用。通过互联网对方可以完全控制你整个电脑。之前我们曾在这个博客中提到 过<a href="http://www.nirmaltv.com/2008/08/05/access-your-computer-remotely-from-anywhere-with-logmein/">LogMeIn</a>。</p>
<p><img title="LogMeIn的" src="http://img.cnbeta.com/newsimg/100528/06424021802216263.gif" border="0" alt="LogMeIn" width="288" height="68" /></p>
<p><strong>4.</strong><a href="http://www.mikogo.com/">Mikogo</a>：这是另一种易 于使用的跨平台桌面共享工具，非常适合网络会议，在线会议或远程协助。而且它对商业和私人使用都免费。</p>
<p><img title="的Mikogo应用的选择" src="http://img.cnbeta.com/newsimg/100528/0642413687547058.jpg" border="0" alt="mikogo-application-selection" width="428" height="436" /></p>
<p><strong>5.<a href="http://showmypc.com/index.html">ShowMyPC</a></strong>：ShowMyPC 提供即时协作工具，也是个免费软件。软件功能包括桌面共享，屏幕录制，远程PC访问。</p>
<p><img title="ShowMyPCSSH_image_2" src="http://img.cnbeta.com/newsimg/100528/0642424710250651.jpg" border="0" alt="ShowMyPCSSH_image_2" width="542" height="226" /></p>
<p> </p>
<p><strong>6.</strong><a href="http://www.yuuguu.com/home">YuuGuu</a>：这是 另一个有用的远程桌面应用程序，支持Windows以及Mac OSX的平台。</p>
<p><img title="徽标" src="http://img.cnbeta.com/newsimg/100528/06424351955459043.jpg" border="0" alt="logo" width="230" height="43" /></p>
<p><strong>7.</strong><a href="http://www.uvnc.com/">UltraVNC</a>：ultravnc 是一个功能强大，易于使用的免费软件，可以在你自己的屏幕上显示另一台电脑的屏幕（通过互联网或局域网）。该软件允许你使用鼠标和键盘来远程控制其他电 脑。</p>
<p><img title="adminprops" src="http://img.cnbeta.com/newsimg/100528/0642436935319973.png" border="0" alt="adminprops" width="575" height="445" /></p>
<p><strong>8.</strong><a href="http://www.tightvnc.com/">TightVNC</a>：另一 个免费的远程控制软件。通过TightVNC，你可以像坐在自己的电脑前一样，看到并使用本地的鼠标和电脑控制远程电脑的桌面。它也是免费的。</p>
<p><img title="存取控制" src="http://img.cnbeta.com/newsimg/100528/06424571568854349.png" border="0" alt="accesscontrol" width="495" height="436" /></p>
<p><strong>9</strong>.<a href="http://sourceforge.net/projects/echovnc/">EchoVNC</a>：EchoVNC 是一种既安全，“又对防火墙友好的”远程桌面控制工具，支持VNC，Radmin服务器和查看对方桌面功能。有了它，Windows系统的PC和Mac OSX系统的苹果机都可以无视防火墙，路由器和网络代理配置互相进行远程控制。</p>
<p><img title="截图" src="http://img.cnbeta.com/newsimg/100528/0642468712801561.jpg" border="0" alt="screenshot" width="359" height="438" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.51enter.net/331/feed/</wfw:commentRss>
		</item>
		<item>
		<title>读取文件前几个字节,判断文件类型</title>
		<link>http://www.51enter.net/329/</link>
		<comments>http://www.51enter.net/329/#comments</comments>
		<pubDate>Fri, 21 May 2010 04:45:45 +0000</pubDate>
		<dc:creator>zhouyu</dc:creator>
		
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.51enter.net/?p=329</guid>
		<description><![CDATA[/**
 * 读取文件前几个字节 判断文件类型
 *
 * @return String
 */
function&#160;checkTitle($filename) {
&#160; &#160; $file = fopen&#160;( $filename, rb );
&#160; &#160; $bin = fread&#160;( $file, 2 ); //只读2字节
&#160; &#160; fclose&#160;( $file );
&#160; &#160; $strInfo = @unpack&#160;( c2chars, $bin );
&#160; &#160; $typeCode = intval&#160;( $strInfo ['chars1'] . $strInfo ['chars2'] );
&#160; &#160; $fileType = '';
&#160; &#160; switch&#160;($typeCode) {
&#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;"> * 读取文件前几个字节 判断文件类型</span></li>
<li><span style="color: #ffa500;"> *</span></li>
<li><span style="color: #ffa500;"> *</span><span style="color: Blue;"> @return </span><span style="color: #ffa500;">String</span></li>
<li><span style="color: #ffa500;"> */</span></li>
<li><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">checkTitle</span><span style="color: Olive;">(</span><span style="color: #00008b;">$filename</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$file</span><span style="color: Gray;"> = </span><span style="color: Blue;">fopen</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: #00008b;">$filename</span><span style="color: Gray;">, </span><span style="color: Blue;">rb</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$bin</span><span style="color: Gray;"> = </span><span style="color: Blue;">fread</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: #00008b;">$file</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">; </span><span style="color: #ffa500;">//只读2字节</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">fclose</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: #00008b;">$file</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$strInfo</span><span style="color: Gray;"> = @</span><span style="color: Blue;">unpack</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: Blue;">c2chars</span><span style="color: Gray;">, </span><span style="color: #00008b;">$bin</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$typeCode</span><span style="color: Gray;"> = </span><span style="color: Blue;">intval</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: #00008b;">$strInfo</span><span style="color: Gray;"> </span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">chars1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> . </span><span style="color: #00008b;">$strInfo</span><span style="color: Gray;"> </span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">chars2</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> </span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$fileType</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">''</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">switch</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: #00008b;">$typeCode</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">7790</span><span style="color: Gray;"> :</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$fileType</span><span style="color: Gray;"> = </span><span style="color: Blue;">exe</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">7784</span><span style="color: Gray;"> :</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$fileType</span><span style="color: Gray;"> = </span><span style="color: Blue;">midi</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">8297</span><span style="color: Gray;"> :</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$fileType</span><span style="color: Gray;"> = </span><span style="color: Blue;">rar</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">255216</span><span style="color: Gray;"> :</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$fileType</span><span style="color: Gray;"> = </span><span style="color: Blue;">jpg</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">7173</span><span style="color: Gray;"> :</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$fileType</span><span style="color: Gray;"> = </span><span style="color: Blue;">gif</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">6677</span><span style="color: Gray;"> :</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$fileType</span><span style="color: Gray;"> = </span><span style="color: Blue;">bmp</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">case</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">13780</span><span style="color: Gray;"> :</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$fileType</span><span style="color: Gray;"> = </span><span style="color: Blue;">png</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">break</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">default</span><span style="color: Gray;"> :</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$fileType</span><span style="color: Gray;"> = </span><span style="color: Blue;">unknown</span><span style="color: Gray;"> . </span><span style="color: #00008b;">$typeCode</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//Fix</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: #00008b;">$strInfo</span><span style="color: Gray;"> </span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">chars1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> == - </span><span style="color: Maroon;">1</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: #00008b;">$strInfo</span><span style="color: Gray;"> </span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">chars2</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> == - </span><span style="color: Maroon;">40</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">jpg</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: #00008b;">$strInfo</span><span style="color: Gray;"> </span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">chars1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> == - </span><span style="color: Maroon;">119</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: #00008b;">$strInfo</span><span style="color: Gray;"> </span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">chars2</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> == </span><span style="color: Maroon;">80</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">png</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">$fileType</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
</ol></div>
]]></content:encoded>
			<wfw:commentRss>http://www.51enter.net/329/feed/</wfw:commentRss>
		</item>
		<item>
		<title>windows上的nginx+php+mysql套装wnpmserver</title>
		<link>http://www.51enter.net/327/</link>
		<comments>http://www.51enter.net/327/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 07:31:46 +0000</pubDate>
		<dc:creator>zhouyu</dc:creator>
		
		<category><![CDATA[mysql]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[服务器]]></category>

		<category><![CDATA[nginx]]></category>

		<category><![CDATA[wnpm]]></category>

		<guid isPermaLink="false">http://www.51enter.net/?p=327</guid>
		<description><![CDATA[windows上的nginx+php+mysql套装wnpmserver，当前版本



nginx
v0.8.35
(2010-4-14)


php
v5.3.2 (nts)
(2010-3-23)


mysql
5.5.3 m3
(2010-4-14)



下载地址：http://wnpmserver.googlecode.com/files/wnpm.7z
项目地址：http://code.google.com/p/wnpmserver/
注意：需要.net 支持
]]></description>
			<content:encoded><![CDATA[<p>windows上的nginx+php+mysql套装wnpmserver，当前版本</p>
<table border="0">
<tbody>
<tr>
<td style="border: #aaa 1px solid; padding: 5px;">nginx</td>
<td style="border: #aaa 1px solid; padding: 5px;">v0.8.35</td>
<td style="border: #aaa 1px solid; padding: 5px;">(2010-4-14)</td>
</tr>
<tr>
<td style="border: #aaa 1px solid; padding: 5px;">php</td>
<td style="border: #aaa 1px solid; padding: 5px;">v5.3.2 (nts)</td>
<td style="border: #aaa 1px solid; padding: 5px;">(2010-3-23)</td>
</tr>
<tr>
<td style="border: #aaa 1px solid; padding: 5px;">mysql</td>
<td style="border: #aaa 1px solid; padding: 5px;">5.5.3 m3</td>
<td style="border: #aaa 1px solid; padding: 5px;">(2010-4-14)</td>
</tr>
</tbody>
</table>
<p>下载地址：<a href="http://wnpmserver.googlecode.com/files/wnpm.7z">http://wnpmserver.googlecode.com/files/wnpm.7z</a></p>
<p>项目地址：<a href="http://code.google.com/p/wnpmserver/">http://code.google.com/p/wnpmserver/</a></p>
<p>注意：需要.net 支持</p>
]]></content:encoded>
			<wfw:commentRss>http://www.51enter.net/327/feed/</wfw:commentRss>
		</item>
		<item>
		<title>jQuery 表格工具集</title>
		<link>http://www.51enter.net/325/</link>
		<comments>http://www.51enter.net/325/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 12:23:06 +0000</pubDate>
		<dc:creator>zhouyu</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.51enter.net/?p=325</guid>
		<description><![CDATA[本文搜集了大量 jQuery 表格插件，帮助 Web 设计者更好地驾御 HTML 表格，你可以对表格进行横向和竖向排序，设置固定表头，对表格进行搜索，对大表格进行分页，对表格进行滚动，拖放操作等等。这些插件很多都包含详细的教程。
jQuery 表格插件
Flexigrid – Web 2.0 Javscript Grid for jQuery - 可变列宽，自动适应表头宽度，可通过 Ajax 连接 XML 数据源，类似 Ext Grid，但基于 jQuery 因此更轻量小巧。

Chromatable JQuery Plugin - 固定表头，可滚动内容区，内容区滚动的时候表头位置保持不变。

Ingrid, the jQuery Datagrid - 在 HTML 表格上加入列宽调整，分页，排序，行列式样等功能（演示）。

JQTreeTable - 在表格中加入树形结构

Scrollable HTML table - 将普通 HTML 表格变为可滚动状态。将表头部分放入 THEAD 区，内容部分放入 TBODY 区，脚注部分放入 TFOOT 区域，引用 webtoolkit.scrollabletable.js 文件，然后在每个表格后面创建 ScrollableTable() 对象即可（演示）。

KeyTable - [...]]]></description>
			<content:encoded><![CDATA[<p>本文搜集了大量 jQuery 表格插件，帮助 Web 设计者更好地驾御 HTML 表格，你可以对表格进行横向和竖向排序，设置固定表头，对表格进行搜索，对大表格进行分页，对表格进行滚动，拖放操作等等。这些插件很多都包含详细的教程。</p>
<p>jQuery 表格插件<br />
<a href="http://flexigrid.info/">Flexigrid – Web 2.0 Javscript Grid for jQuery</a> - 可变列宽，自动适应表头宽度，可通过 Ajax 连接 XML 数据源，类似 Ext Grid，但基于 jQuery 因此更轻量小巧。</p>
<p><a href="http://flexigrid.info/"><img class="article" src="http://media.smashingmagazine.com/cdn_noupe/wp-content/uploads/2010/04/jquerytables_01.jpg" alt="" /></a></p>
<p><a href="http://www.chromaloop.com/posts/chromatable-jquery-plugin">Chromatable JQuery Plugin</a> - 固定表头，可滚动内容区，内容区滚动的时候表头位置保持不变。</p>
<p><a href="http://www.chromaloop.com/posts/chromatable-jquery-plugin"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_02.jpg" alt="" /></a></p>
<p><a href="http://www.reconstrukt.com/ingrid/">Ingrid, the jQuery Datagrid</a> - 在 HTML 表格上加入列宽调整，分页，排序，行列式样等功能（<a href="http://www.reconstrukt.com/ingrid/src/example1.html">演示</a>）。</p>
<p><a href="http://www.reconstrukt.com/ingrid/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_03.jpg" alt="" /></a></p>
<p><a href="http://www.hanpau.com/index.php?page=jqtreetable">JQTreeTable</a> - 在表格中加入树形结构</p>
<p><a href="http://www.hanpau.com/index.php?page=jqtreetable"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_04.jpg" alt="" /></a></p>
<p><a href="http://www.webtoolkit.info/scrollable-html-table.html">Scrollable HTML table</a> - 将普通 HTML 表格变为可滚动状态。将表头部分放入 THEAD 区，内容部分放入 TBODY 区，脚注部分放入 TFOOT 区域，引用 webtoolkit.scrollabletable.js 文件，然后在每个表格后面创建 ScrollableTable() 对象即可（<a href="http://www.webtoolkit.info/demo/scrollable-html-table">演示</a>）。</p>
<p><a href="http://www.webtoolkit.info/scrollable-html-table.html"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_05.jpg" alt="" /></a></p>
<p><a href="http://www.sprymedia.co.uk/article/KeyTable">KeyTable</a> - 象 Excel 那样，在单元格之间巡游，可以现场编辑。</p>
<p><a href="http://www.sprymedia.co.uk/article/KeyTable"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_06.jpg" alt="" /></a></p>
<p><a href="http://blog.rebeccamurphey.com/2007/12/17/graph-table-data-jquery-flot/">graphTable</a> - 借助 <a href="http://code.google.com/p/flot/">flot</a> 将 HTML 表格中的内容变成图形（<a href="http://www.rebeccamurphey.com/jquery/graphTable/table.html">演示</a>）。</p>
<p><a href="http://blog.rebeccamurphey.com/2007/12/17/graph-table-data-jquery-flot/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_07.jpg" alt="" /></a></p>
<p><a href="http://www.datatables.net/">DataTables</a> - 非常强大的 jQuery 表格插件，可变宽页码浏览，现场过滤。多列排序，自动探测数据类型，智能列宽，可从几乎任何数据源获取数据。</p>
<p><a href="http://www.datatables.net/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_08.jpg" alt="" /></a></p>
<p><a href="http://www.trirand.com/blog/">jqGrid Plugin</a> - 基于 Ajax 的 jQuery 表格插件，可以 Ajax 方式从服务器端获取数据填充进来（<a href="http://trirand.com/blog/jqgrid/jqgrid.html">演示</a>）。</p>
<p><a href="http://www.trirand.com/blog/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_09.jpg" alt="" /></a></p>
<p><a href="http://www.filamentgroup.com/lab/jquery_visualize_plugin_accessible_charts_graphs_from_tables_html5_canvas/">Visualize: Accessible Charts &amp; Graphs from Table Elements</a> - 从 HTML 表格收集数据，并借助 HTML5 Canvas 对象转换为图表。</p>
<p><a href="http://www.filamentgroup.com/lab/jquery_visualize_plugin_accessible_charts_graphs_from_tables_html5_canvas/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_10.jpg" alt="" /></a></p>
<p><a href="http://boriscy.github.com/grider/">Grider</a> - 一个简单的 jQuery 插件，可以对 HTML 表格进行计算，平均，累加，最大值，最小值等。</p>
<p><a href="http://boriscy.github.com/grider/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_11.jpg" alt="" /></a><br />
表格功能增强<br />
<a href="http://www.isocra.com/2008/02/table-drag-and-drop-jquery-plugin/">Table Drag and Drop</a> - 通过拖放，对表格中的数据重新排列，可以设置禁止拖放的行。</p>
<p><a href="http://www.isocra.com/2008/02/table-drag-and-drop-jquery-plugin/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_12.jpg" alt="" /></a></p>
<p><a href="http://plugins.jquery.com/project/tablePagination">Table Pagination</a> - 在表格下方自动生成分页导航。</p>
<p><a href="http://plugins.jquery.com/project/tablePagination"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_13.jpg" alt="" /></a></p>
<p><a href="http://pure-essence.net/2008/02/26/jquery-plugin-tablerowcheckboxtoggle/">tableRowCheckboxToggle</a> - 可根据 class name 对表格的行自动 check on/off</p>
<p><a href="http://pure-essence.net/2008/02/26/jquery-plugin-tablerowcheckboxtoggle/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_14.jpg" alt="" /></a></p>
<p><a href="http://plugins.jquery.com/project/bstablecrosshair">BS Table Crosshair Plugin</a> - 鼠标在表格上移动时，所经过的单元格自动交叉加亮</p>
<p><a href="http://plugins.jquery.com/project/bstablecrosshair"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_15.jpg" alt="" /></a></p>
<p><a href="http://code.google.com/p/jqtable2csv/">jqtable2csv</a> - 将 HTML 表格转换为 SVG 字符串。</p>
<p><a href="http://franca.exofire.net/jq/colorize">Colorize</a> - 自动对表格间隔行使用不同背景颜色</p>
<p><a href="http://franca.exofire.net/jq/colorize"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_16.jpg" alt="" /></a></p>
<p><a href="http://www.jankoatwarpspeed.com/post/2009/07/20/Expand-table-rows-with-jQuery-jExpand-plugin.aspx">jExpand</a> - 一个非常轻量的 jQuery 插件，可以展开/关闭表格单元格，使表格可以容纳更多内容。</p>
<p><a href="http://www.jankoatwarpspeed.com/post/2009/07/20/Expand-table-rows-with-jQuery-jExpand-plugin.aspx"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_17.jpg" alt="" /></a></p>
<p><a href="http://p.sohei.org/jquery-plugins/columnhover/">columnHover</a> - 鼠标经过时，可以整列加亮，甚至支持 colspans 和 rowspans</p>
<p><a href="http://p.sohei.org/jquery-plugins/columnhover/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_18.jpg" alt="" /></a></p>
<p><a href="http://www.jnathanson.com/blog/client/jquery/heatcolor/index.cfm">HeatColor</a> - 根据规则，或自动对表格中的值进行分析，对不同范围的值按不同颜色区分。</p>
<p><a href="http://www.jnathanson.com/blog/client/jquery/heatcolor/index.cfm"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_19.jpg" alt="" /></a></p>
<p><a href="http://fixedheadertable.mmalek.com/">Fixed Header Table</a> - 固定表头可滚动表格</p>
<p><a href="http://fixedheadertable.mmalek.com/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_20.jpg" alt="" /></a><br />
表格搜索，筛选<br />
<a href="http://ideamill.synaptrixgroup.com/?page_id=16">tableFilter</a> - 给表格添加简单的筛选功能。</p>
<p><a href="http://ideamill.synaptrixgroup.com/?page_id=16"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_21.jpg" alt="" /></a></p>
<p><a href="http://gregweber.info/projects/uitablefilter">uiTableFilter</a> - 根据条件筛选（隐藏）表格行</p>
<p><a href="http://gregweber.info/projects/uitablefilter"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_22.jpg" alt="" /></a></p>
<p><a href="http://tablesorter.com/docs/">Tablesorter 2.0</a> - 将普通的，拥有 THEAD 和 TBODY 标签的表格转换为可排序表格，可以分析多种数据，支持多列排序。</p>
<p><a href="http://tablesorter.com/docs/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_23.jpg" alt="" /></a></p>
<p><a href="http://www.picnet.com.au/picnet_table_filter.html">PicNet Table Filter</a> - 实时的，Google 式筛选功能</p>
<p><a href="http://www.picnet.com.au/picnet_table_filter.html"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_24.jpg" alt="" /></a></p>
<p><a href="http://tinysort.sjeiti.com/">jQuery tinysort</a> - 排序</p>
<p><a href="http://tinysort.sjeiti.com/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_25.jpg" alt="" /></a></p>
<p><a href="http://www.digitalinferno.net/blog/jquery-plugin-livefilter-1-1/">LiveFilter 1.1</a> - 非常轻量的表格筛选插件，部署非常简单。</p>
<p><a href="http://www.digitalinferno.net/blog/jquery-plugin-livefilter-1-1/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_26.jpg" alt="" /></a></p>
<p><a href="http://code.google.com/p/jqtablesearch/">jQtablesearch</a> - 快速搜索，非常快</p>
<p><a href="http://code.google.com/p/jqtablesearch/"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_27.jpg" alt="" /></a></p>
<p><a href="http://github.com/riklomas/quicksearch">Quicksearch</a> - 简单的搜索功能<br />
jQuery 现场编辑<br />
<a href="http://dev.iceburg.net/jquery/tableEditor/demo.php">TableEditor – Flexible in place editing of TableSorter</a> - 现场编辑表格内容，用户可以插入 Ajax 机制回存数据</p>
<p><a href="http://dev.iceburg.net/jquery/tableEditor/demo.php"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_28.jpg" alt="" /></a></p>
<p><a href="http://sites.google.com/a/zoqui.com/www/jgrideditor">jGridEditor</a> - 现场编辑，可配置 Ajax 回存数据</p>
<p><a href="http://sites.google.com/a/zoqui.com/www/jgrideditor"><img class="article" src="http://218.16.124.218/i-host/jquery-table/jquerytables_29.jpg" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.51enter.net/325/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Web 地理定位（Geo-Location）知识大全</title>
		<link>http://www.51enter.net/314/</link>
		<comments>http://www.51enter.net/314/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 06:36:37 +0000</pubDate>
		<dc:creator>zhouyu</dc:creator>
		
		<category><![CDATA[javascript]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[ip]]></category>

		<guid isPermaLink="false">http://www.51enter.net/?p=314</guid>
		<description><![CDATA[在线地图已经是很平常的应用，Google Map 甚至可以用作驾驶导航仪，然而，这些应用的实现涉及到千丝万缕的艰辛工作，仅仅是定位你现在的位置，就有很多技术，有幸的是，如今在你的 Web 站点中，你可以通过短短的几行代码，获得一个用户的地理位置，本文介绍的是用在 Web 中的各种地理定位技术。
通过 IP 地址获得用户的地理位置信息
互联网不过是一个巨大的网络，上面的每一台电脑对应一个 IP 地址，通过这个 IP 地址，可以知道这个用户在什么位置，我们可以通过查询 Maxmind GeoIP 数据库 获得，Maxmind 还提供了一个 JavaScript 接口让你在网站上实现这一功能。

这个方法（演示）有一个问题，就是说，你获得的 IP 地理位置信息未必非常准确，因为这个 IP 是你的 ISP 分配给你的，你获得的事实上是 ISP 的地理位置，另外，如果你使用 VPN，你实际的得到可能是十万八千里之外的地方了。
通过 W3C Geo API 获得用户地理位置
通过 IP 地址获取用户地理位置还有一个棘手的问题，就是安全和隐私问题，毕竟，并不是每个用户都愿意自己的地理位置信息被别人知道，鉴于此，人们开发了很多技术，Google Gears 拥有一个 Geo-Location 服务，Plazes 帮助你保存你的位置，而 Yahoo Fire Eagle 算得上这类技术中最顺手的一个。然而这些技术共同的问题是，它们要求用户要么安装一个插件，要么需要访问特定的 Web 服务，这有些麻烦。
W3C 有一个 Geo-Location API 可以帮助浏览器制造商，在浏览器中集成地理信息功能。Firefox 3.5 以上的浏览器支持 W3C Geo-LocationAPI，同样支持该 API 的还有 iPhone 上的 Safari 浏览器（需要 [...]]]></description>
			<content:encoded><![CDATA[<p>在线地图已经是很平常的应用，Google Map 甚至可以用作驾驶导航仪，然而，这些应用的实现涉及到千丝万缕的艰辛工作，仅仅是定位你现在的位置，就有很多技术，有幸的是，如今在你的 Web 站点中，你可以通过短短的几行代码，获得一个用户的地理位置，本文介绍的是用在 Web 中的各种地理定位技术。</p>
<p>通过 IP 地址获得用户的地理位置信息<br />
互联网不过是一个巨大的网络，上面的每一台电脑对应一个 IP 地址，通过这个 IP 地址，可以知道这个用户在什么位置，我们可以通过查询 <a href="http://maxmind.com/">Maxmind GeoIP 数据库</a> 获得，Maxmind 还提供了一个 <a href="http://www.maxmind.com/app/javascript_city">JavaScript 接口</a>让你在网站上实现这一功能。</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic1.gif" alt="" /></p>
<p>这个方法（<a href="http://isithackday.com/hacks/geo/js-location.html">演示</a>）有一个问题，就是说，你获得的 IP 地理位置信息未必非常准确，因为这个 IP 是你的 ISP 分配给你的，你获得的事实上是 ISP 的地理位置，另外，如果你使用 VPN，你实际的得到可能是十万八千里之外的地方了。</p>
<p>通过 W3C Geo API 获得用户地理位置</p>
<p>通过 IP 地址获取用户地理位置还有一个棘手的问题，就是安全和隐私问题，毕竟，并不是每个用户都愿意自己的地理位置信息被别人知道，鉴于此，人们开发了很多技术，<a href="http://code.google.com/apis/gears/api_geolocation.html">Google Gears 拥有一个 Geo-Location 服务</a>，<a href="http://plazes.com/">Plazes 帮助你保存你的位置</a>，而 <a href="http://fireeagle.yahoo.net/">Yahoo Fire Eagle</a> 算得上这类技术中最顺手的一个。然而这些技术共同的问题是，它们要求用户要么安装一个插件，要么需要访问特定的 Web 服务，这有些麻烦。</p>
<p>W3C 有一个 <a href="http://www.w3.org/TR/geolocation-API/">Geo-Location API</a> 可以帮助浏览器制造商，在浏览器中集成地理信息功能。Firefox 3.5 以上的浏览器<a href="http://www.mozilla.com/firefox/geolocation/">支持 W3C Geo-LocationAPI</a>，同样支持该 API 的还有 <a href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/GettingGeographicalLocations/GettingGeographicalLocations.html">iPhone 上的 Safari 浏览器</a>（需要 OS3.0 以上）。需要通过浏览器查询自己地理位置的用户，在浏览器中，会显示一个对话条，请求你的授权。如下图所示：</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic2.gif" alt="" /></p>
<p>以下是请求使用该功能的代码：</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic3.gif" alt="" /></p>
<p><a href="http://isithackday.com/hacks/geo/distance.php">下面的演示</a>，可以很好地演示上面两种地理信息获取技术的不同，可以看到，他们在<a href="http://isithackday.com/hacks/geo/js-w3c-location.html">测量用户地理位置</a>方面有很多不同。</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic4.gif" alt="" /><br />
将经度/维度转换为地名<br />
将经度/维度信息转换为地位，称为 “<a href="http://en.wikipedia.org/wiki/Reverse_geocoding">反 Geo-Location</a>”，网络上有很多这类服务可以使用，其中最著名的是 <a href="http://www.geonames.org/export/reverse-geocoding.html">the geo-names Web service</a>, 但它仍有几个问题，比如，它的结果是以美国为中心的。另一个可免费使用，且支持全球信息，但知道的人并不多的服务来自一个让人有点意外的地方，<a href="http://www.flickr.com/">Flickr</a>。Flickr 的 <a href="http://www.flickr.com/services/api/flickr.places.findByLatLon.html">flickr.places.findByLatLon</a> 服务可以根据经纬度信息返回地名，你可以在 <a href="http://www.flickr.com/services/api/explore/?method=flickr.places.findByLatLon">app explorer</a> 做下体验，但目前最简单的方法是使用 <a href="http://developer.yahoo.com/yql">Yahoo Query Language</a> ( Yahoo 查询语言，简称 YQL). YQL 的样子如下：</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic5.gif" alt="" /></p>
<p>使用 YQL 查询语言，你可以得到 <a href="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20flickr.places%20where%20lat%3D%2237.416115%22%20and%20lon%3D-122.0245671&amp;amp;amp;format=xml">XML</a> 或 JSon 格式的数据，下图是在 JavaScript 中是使用该查询语言的例子：</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic6.gif" alt="" /></p>
<p>结合上面的例子，在反 Geo-Location 查询的帮助下，<a href="http://isithackday.com/hacks/geo/distance-info.php">我们得到了详细的地名信息</a>：</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic7.gif" alt="" /><br />
经纬度的问题</p>
<p>经纬度虽然可以定位地球上的一个位置，但经纬度有时候容易引起歧义，为了解决这个问题，Yahoo 和 Flickr （<a href="http://apiwiki.twitter.com/Twitter-REST-API-Method:-trends-location">Twitter</a> 很快也会支持）支持另一种定位方法，叫 <a href="http://developer.yahoo.com/geo/geoplanet/guide/concepts.html">Where On Earth Identifier</a> (简称 WOEID) 。使用该方法，我们可以很容易获取来自某个区域的 Flickr 图片。</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic8.gif" alt="" /></p>
<p>这样几句 JavaScript 代码就可以显示来自指定地理位置的图片：</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic9.gif" alt="" /></p>
<p>这些代码还可以打包成函数，下面的代码，将显示来自巴黎的10幅照片，你可以自己在 <a href="http://developer.yahoo.com/yql/console/?q=select%20*%20from%20flickr.photolist%20where%20location%3D%22paris%2Cfr%22%20and%20text%3D%22%22%20and%20amount%3D10&amp;amp;amp;env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys">YQL console</a> 中体验：</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic10.gif" alt="" /><br />
在文字内容中自动挖掘地理信息<br />
假如你想获得一段文字，或者一个网页内容所提到的地名的地理位置的信息，Yahoo 提供了一个很好的服务，叫 <a href="http://developer.yahoo.com/geo/placemaker/">Placemaker</a>。从 Yahoo 那里获取一个 <a href="http://developer.yahoo.com/wsregapp/">developer key</a> 就可以使用该服务了。只需创建一个发布表单发布到 http://wherein.yahooapis.com/v1/document，将 Developer Key 以 appid 发布，需要查询的文字以 documentContent 发布，将文字类型以 documentType 发布，同时用 outputType 定义返回数据类型，如下：</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic11.gif" alt="" /></p>
<p>你也可以在<a href="http://isithackday.com/hacks/geo/simple-placemaker.php">这里亲自体验一下</a>，使用 PHP 调用该 API ，甚至可以<a href="http://isithackday.com/hacks/geo/placemaker.php">对输出数据的格式进行设置</a>。这里还有一个使用 PlaceMaker 设计 <a href="http://icant.co.uk/geomaker">GeoMaker</a> 服务，简单输入文字或 URL，选择位置，就可以返回地图。</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic12.gif" alt="" /></p>
<p>因为还可以在 JavaScript 中通过 YQL 使用 PlaceMaker，我们可以通过几段客户端脚本使用同样的功能：</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic13.gif" alt="" /></p>
<p>你需要三样东西，一段位于某个 HTML 对象中的，包含地理位置的文字，一个 Google Maps API Key （<a href="http://code.google.com/apis/maps/signup.html">申请</a>） 以及以下代码：</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic14.gif" alt="" /><br />
在网页中插入地图<br />
在线地图有很多，Google Map 是其中的领先者，除了 Google，Yahoo, 微软都提供地图服务，还有一个叫做 <a href="http://www.openstreetmap.org/">Open Street Maps</a> 的开放地图服务，<a href="http://www.opengeodata.org/2010/01/24/osm-the-default-map-in-haiti/">在上次海地地震救援中被派上用场</a>。在网页中插入交互地图最简单的方法是使用 <a href="http://www.mapstraction.com/">Mapstraction</a>,它提供一个 JavaScript 库，<a href="http://24ways.org/2007/get-to-grips-with-slippy-maps">24ways 曾发表过一篇很好的介绍文章</a>。如果你只想在网页上放上你的地图，指示你的位置，而不想使用太多 JavaScript， <a href="http://code.google.com/apis/maps/documentation/staticmaps/">Google static maps API</a> 是最好的选择，它会生成静态地图，以下代码可以将这个静态地图插入你的网页（<a href="http://gmaps-samples.googlecode.com/svn/trunk/simplewizard/makestaticmap.html">Google 还提供了一个创建静态地图的工具</a> ）：</p>
<p><img src="http://www.comsharp.com/Writable/Resource/_Random_/2010-03-12/graphic15.gif" alt="" /></p>
<p>本文国际来源：<a href="http://www.smashingmagazine.com/2010/03/08/entering-the-wonderful-world-of-geo-location/">http://www.smashingmagazine.com/2010/03/08/entering-the-wonderful-world-of-geo-location/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.51enter.net/314/feed/</wfw:commentRss>
		</item>
		<item>
		<title>为网页开发者准备的13个Google Chrome浏览器扩展</title>
		<link>http://www.51enter.net/312/</link>
		<comments>http://www.51enter.net/312/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 15:27:11 +0000</pubDate>
		<dc:creator>zhouyu</dc:creator>
		
		<category><![CDATA[扩展]]></category>

		<category><![CDATA[未分类]]></category>

		<category><![CDATA[调试]]></category>

		<category><![CDATA[Chrome]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[浏览器]]></category>

		<guid isPermaLink="false">http://www.51enter.net/?p=312</guid>
		<description><![CDATA[Google Chrome浏览器跟火狐浏览器一 样，可以通过使用扩展来增强浏览器的功能。如果你是一位网页开发 者，Google Chrome内置的开发者工具会让你的工作轻松不少。但是除此之外，Chrome浏览器上也有众多扩展给你提供不少工具，供你使用。扩展有一个最大好处， 那就是它可以让你不用切换到其他应用程序就可以完成一些任务。这种不用切换就能完成某些任务的特性可以让你节省不少时间。
注意：如果你在下载Chrome扩展时遇到问题，请打开C:Windows\System32\drivers\etc下的host文件，在其中添加一行：74.125.47.139   clients2.google.com 即可。
下 面就是13个你会觉得有用的Chrome浏览器扩展。

拾色器

拾色器可以让你获取任何颜色的Hex和RGB值！你也可以调整 颜色的色调，饱和度和颜色平衡。
Firebug精简版

Firebug精简版是针对开发的一款工具，它可以让你编辑，调试和监视网页页面的CSS，HTML，以及JavaScript内容。
域名注册查看器

这款 扩展可以查看某个域名是否可以购买。如果你可以直接通过工具条查到信息，那你还有必要另外登录专门的页面去查看吗？
Aviary 截屏扩展

Aviary 截屏扩展可以让你对任何页面进行截图，并通过Aviary.com的网页应用直接在浏览器中对图片进行编辑。另外，它也提供便利方式帮助你访问 Aviary 的网站和上面的工具
Lorem Ipsum测试文本生成器

Lorem Ipsum测试文本生成器不费吹灰之力就可以生成设计模型所需要的测试文本内容。
IE标签页

它会使用IE浏览器在Chrome的标签页中显示对应的页面。一些网站只能使用IE浏览器来访 问，有了这款扩展，你可以在Chrome中直接查看这些网站。对于那些想测试IE渲软引擎或是登录的网站需要使用ActiveX插件，或是想使用浏览器查 看本地文件的人来说，这款扩展会非常适合。
MeasureIt!

MeasureIt! 可以让你画出一个尺子，然后测量网页页面中任一元素的高度和宽度。
PlainClothes

这款扩展会对页面进行样式渲软，设想一下：文本是黑色的，背景是白色的，未点击链接是蓝色的，访问过的链接 是紫色的，所有的链接都有下划线。或者你把这一切改成你想要的颜色。所有的文本都以你选择的默认字体来显示（这跟通过 “选项” &#62; “高级选项” &#62; “更改字体和语言设置”进行修改的效果是一样的）。修改后的效果会自动应用到所有页面。
滴管

滴管和颜色拾取扩展可以让你从页面或是从高级颜色拾取面板来选取颜色。
速度追踪器

速度追踪扩展可以帮助你识别并修正网页应用的性能问题。它会对从浏览器内部获得底层数据进行可以 可视化处理，并在你网页应用程序运行的过程中进行分析。速度追踪扩展是一款Chrome浏览器扩展，可以在扩展目前支持的所有平台上运行（window和 Linux）。
Pendule

它对Chrome内 置的开发者工具进行扩充。
分辨率测试

问辨率测试扩展可以改变浏览器的尺寸，方便开发者在不同的屏幕分辨率下预览网站的实际效果。它包含一个常用分辨率的列 表，另外你也可以输入你自己需要的分辨率。
Snippy

Snippy可以让你让你抓取页面中的部分内容，然后保存下来， 供将来只用，它可以抓取丰富的内容，并保留格式。所以你用它来抓取段落。图片，链接等诸多格式的内容。
]]></description>
			<content:encoded><![CDATA[<p>Google Chrome浏览器跟<a href="http://webdesignledger.com/tools/ten-most-popular-firefox-plugins-of-web-designers">火狐浏览器</a>一 样，可以通过使用扩展来增强浏览器的功能。如果你是一位网页开发 者，Google Chrome内置的开发者工具会让你的工作轻松不少。但是除此之外，Chrome浏览器上也有众多扩展给你提供不少工具，供你使用。扩展有一个最大好处， 那就是它可以让你不用切换到其他应用程序就可以完成一些任务。这种不用切换就能完成某些任务的特性可以让你节省不少时间。</p>
<p><strong>注意：</strong>如果你在下载Chrome扩展时遇到问题，请打开C:Windows\System32\drivers\etc下的host文件，在其中添加一行：74.125.47.139   clients2.google.com 即可。</p>
<p>下 面就是<strong>13个你会觉得有用的Chrome浏览器扩展</strong>。<strong><br />
</strong><br />
<a href="https://chrome.google.com/extensions/detail/egmjgagjcamhcilhinkipjdbfdmebmkd">拾色器</a><br />
<a href="https://chrome.google.com/extensions/detail/egmjgagjcamhcilhinkipjdbfdmebmkd"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_7.jpg" alt="google chrome extensions" /></a></p>
<p>拾色器可以让你获取任何颜色的Hex和RGB值！你也可以调整 颜色的色调，饱和度和颜色平衡。<br />
<a href="https://chrome.google.com/extensions/detail/bnbbfjbeaefgipfjpdabmpadaacmafkj">Firebug精简版</a><br />
<a href="https://chrome.google.com/extensions/detail/bnbbfjbeaefgipfjpdabmpadaacmafkj"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_1.jpg" alt="google chrome extensions" /></a></p>
<p>Firebug精简版是针对开发的一款工具，它可以让你编辑，调试和监视网页页面的CSS，HTML，以及JavaScript内容。<br />
<a href="https://chrome.google.com/extensions/detail/pokekecininnhejfkgcbnekjddnepope">域名注册查看器</a><br />
<a href="https://chrome.google.com/extensions/detail/pokekecininnhejfkgcbnekjddnepope"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_11.jpg" alt="google chrome extensions" /></a></p>
<p>这款 扩展可以查看某个域名是否可以购买。如果你可以直接通过工具条查到信息，那你还有必要另外登录专门的页面去查看吗？<br />
<a href="https://chrome.google.com/extensions/detail/ncgcgghbabbopfcpgcjpfffdgnbadegf">Aviary 截屏扩展</a><br />
<a href="https://chrome.google.com/extensions/detail/ncgcgghbabbopfcpgcjpfffdgnbadegf"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_2.jpg" alt="google chrome extensions" /></a></p>
<p>Aviary 截屏扩展可以让你对任何页面进行截图，并通过Aviary.com的网页应用直接在浏览器中对图片进行编辑。另外，它也提供便利方式帮助你访问 Aviary 的网站和上面的工具<br />
<a href="https://chrome.google.com/extensions/detail/dmpfoncmmihgkooacnplecaopcefceam">Lorem Ipsum测试文本生成器</a><br />
<a href="https://chrome.google.com/extensions/detail/dmpfoncmmihgkooacnplecaopcefceam"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_3.jpg" alt="google chrome extensions" /></a></p>
<p>Lorem Ipsum测试文本生成器不费吹灰之力就可以生成设计模型所需要的测试文本内容。<br />
<a href="https://chrome.google.com/extensions/detail/hehijbfgiekmjfkfjpbkbammjbdenadd">IE标签页</a><br />
<a href="https://chrome.google.com/extensions/detail/hehijbfgiekmjfkfjpbkbammjbdenadd"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_4.jpg" alt="google chrome extensions" /></a></p>
<p>它会使用IE浏览器在Chrome的标签页中显示对应的页面。一些网站只能使用IE浏览器来访 问，有了这款扩展，你可以在Chrome中直接查看这些网站。对于那些想测试IE渲软引擎或是登录的网站需要使用ActiveX插件，或是想使用浏览器查 看本地文件的人来说，这款扩展会非常适合。<br />
<a href="https://chrome.google.com/extensions/detail/aonjhmdcgbgikgjapjckfkefpphjpgma">MeasureIt!</a><br />
<a href="https://chrome.google.com/extensions/detail/aonjhmdcgbgikgjapjckfkefpphjpgma"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_5.jpg" alt="google chrome extensions" /></a></p>
<p>MeasureIt! 可以让你画出一个尺子，然后测量网页页面中任一元素的高度和宽度。<br />
<a href="https://chrome.google.com/extensions/detail/kleiknekfnnaaibjhlamidabhmckbddc">PlainClothes</a><br />
<a href="https://chrome.google.com/extensions/detail/kleiknekfnnaaibjhlamidabhmckbddc"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_6.jpg" alt="google chrome extensions" /></a></p>
<p>这款扩展会对页面进行样式渲软，设想一下：文本是黑色的，背景是白色的，未点击链接是蓝色的，访问过的链接 是紫色的，所有的链接都有下划线。或者你把这一切改成你想要的颜色。所有的文本都以你选择的默认字体来显示（这跟通过 “选项” &gt; “高级选项” &gt; “更改字体和语言设置”进行修改的效果是一样的）。修改后的效果会自动应用到所有页面。<br />
<a href="https://chrome.google.com/extensions/detail/hmdcmlfkchdmnmnmheododdhjedfccka">滴管</a><br />
<a href="https://chrome.google.com/extensions/detail/hmdcmlfkchdmnmnmheododdhjedfccka"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_8.jpg" alt="google chrome extensions" /></a></p>
<p>滴管和颜色拾取扩展可以让你从页面或是从高级颜色拾取面板来选取颜色。<br />
<a href="https://chrome.google.com/extensions/detail/ognampngfcbddbfemdapefohjiobgbdl">速度追踪器</a><br />
<a href="https://chrome.google.com/extensions/detail/ognampngfcbddbfemdapefohjiobgbdl"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_9.jpg" alt="google chrome extensions" /></a></p>
<p>速度追踪扩展可以帮助你识别并修正网页应用的性能问题。它会对从浏览器内部获得底层数据进行可以 可视化处理，并在你网页应用程序运行的过程中进行分析。速度追踪扩展是一款Chrome浏览器扩展，可以在扩展目前支持的所有平台上运行（window和 Linux）。<br />
<a href="https://chrome.google.com/extensions/detail/gbkffbkamcejhkcaocmkdeiiccpmjfdi">Pendule</a><br />
<a href="https://chrome.google.com/extensions/detail/gbkffbkamcejhkcaocmkdeiiccpmjfdi"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_10.jpg" alt="google chrome extensions" /></a></p>
<p>它对Chrome内 置的开发者工具进行扩充。<br />
<a href="https://chrome.google.com/extensions/detail/idhfcdbheobinplaamokffboaccidbal">分辨率测试</a><br />
<a href="https://chrome.google.com/extensions/detail/idhfcdbheobinplaamokffboaccidbal"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_12.jpg" alt="google chrome extensions" /></a></p>
<p>问辨率测试扩展可以改变浏览器的尺寸，方便开发者在不同的屏幕分辨率下预览网站的实际效果。它包含一个常用分辨率的列 表，另外你也可以输入你自己需要的分辨率。<br />
<a href="https://chrome.google.com/extensions/detail/maabelkjnhafpphacjecmcnkkmjndjgl">Snippy</a><br />
<a href="https://chrome.google.com/extensions/detail/maabelkjnhafpphacjecmcnkkmjndjgl"><img src="http://webdesignledger.com/wp-content/uploads/2010/02/chrome_extensions_13.jpg" alt="google chrome extensions" /></a></p>
<p>Snippy可以让你让你抓取页面中的部分内容，然后保存下来， 供将来只用，它可以抓取丰富的内容，并保留格式。所以你用它来抓取段落。图片，链接等诸多格式的内容。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.51enter.net/312/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Voice曲折激活</title>
		<link>http://www.51enter.net/308/</link>
		<comments>http://www.51enter.net/308/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 17:06:45 +0000</pubDate>
		<dc:creator>zhouyu</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.51enter.net/?p=308</guid>
		<description><![CDATA[网上某位仁兄的高见，IPKall+NoNoh，实用高效！
SIP Phone Number: 填写 Nonoh的用户名
SIP Proxy: 填写 sip.nonoh.net
Email Address: 填写你的Gmail
Password: 填写在Nonoh的密码
另：基于 Adobe Air 的 Google Voice 桌面程序 Adobe AIR Desktop Utility for Google Voice
]]></description>
			<content:encoded><![CDATA[<p>网上某位仁兄的高见，<strong><a onclick="javascript:pageTracker._trackPageview('/outbound/article/http://phone.ipkall.com/');" href="http://phone.ipkall.com/">IPKall</a>+<a onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.nonoh.net/en/websignup.php');" href="http://www.nonoh.net/en/websignup.php">NoNoh</a></strong>，实用高效！</p>
<blockquote><p><strong>SIP Phone Number: 填写 Nonoh的用户名</strong></p>
<p><strong>SIP Proxy: 填写 sip.nonoh.net</strong></p>
<p><strong>Email Address: 填写你的Gmail</strong></p>
<p><strong>Password: 填写在Nonoh的密码</strong></p></blockquote>
<p>另：基于 Adobe Air 的 Google Voice 桌面程序 <a onclick="javascript:pageTracker._trackPageview('/outbound/article/http://rstoeber.com/apps/Google_Voice_Utility.html');" href="http://rstoeber.com/apps/Google_Voice_Utility.html">Adobe AIR Desktop Utility for Google Voice</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.51enter.net/308/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
