<?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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>程序员 in the house</title>
	<atom:link href="http://blog.thinklet.net/franky/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thinklet.net/franky</link>
	<description>跳街舞比我劲的，写程序没我历害；写程序比我历害的，跳街舞比不上我。</description>
	<lastBuildDate>Sun, 18 Apr 2010 16:20:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>jQuery1.4最成功之道</title>
		<link>http://blog.thinklet.net/franky/2010/04/17/jquery1-4zuichenggongzhidao/</link>
		<comments>http://blog.thinklet.net/franky/2010/04/17/jquery1-4zuichenggongzhidao/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 17:52:30 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=196</guid>
		<description><![CDATA[原文：jQuery 1.4.x’s Greatest Hits: Earle’s Picks

By Earle Castledine
翻译by: franky  jQuery 1.3发布的时候，奥巴马还没当选美国总统，猪流感还没得到控制，MJ也仍然活着&#8230;这些事情感觉是已经发生了很久了。所以，jQuery研发团队在1.4版本上加入大量的新特性和增强，这一点都不让人觉得惊喜。  现在，jQuery 1.4已经的发布已经好几个月了，我们已经看到有1.4.1和1.4.2，我想让我最感到兴奋的一些特性更清淅一些。这里不会把所有特性目录都一一列举（有兴趣可以查看release notes）；实际上是我最喜欢的特性：我使用比较多的和我认为是最有前途的。
Quick Fun Ones
在我们深入研究之前，让我们迅速看看几个新的（有些应该属于迟来的）API方法。首先，看看delay这个方法。在jQuery论坛上有几百个问题问“我怎么把delay的动作放到jQuery chains里呢？”以前的答案非常扯蛋 &#8211; 你可以在chains中的某一下动作中伪造一个，或者使用JavaScript的timer，或者&#8230;一些更扯蛋的话。现在！delay这个新方法可以解决以上问题。delay方法接收jQuery规范的持续时间参数（数字代表的毫秒数，或者&#8217;fast&#8217;与&#8217;slow&#8217;），等待相应的一段时间再执行下一个方法。好用！ $(&#8217;p')   .slideUp()   .delay(2000) .slideDown();  下一个，所人有都喜欢的类回挠工具，toggleClass，已经得到一个整结的升级：你可以一次toggled多个类（用空格分隔）。如果类名已经存在就把它去除，如果不存在就加上。这个特性定会让你的导航或者手风王琴菜单代码更整洁。 最后，以下其它两个有用的捷径定会帮助提高jQuery chains代码的可读性，那就是first和last。以下是一段贯穿分类的是jQuery方法，
$('p')
  .first()
  .addClass('first-paragraph')
  .end()
  .last()
  .addClass('last-paragraph');
irst方法可以理解为eq(0)的别名，而last就是eq(-1)的别名了。咦，这是什么？减1？是的。这种方便的加法与可以开始计算，还能够传一个负数给eq(),指明其距离末尾的位置。
Changing Some Fundamentals
如果你把jQuery1.4.2-min.js放到你的老项目中，很大可能发现所有地方都能正常工作，这样可能让你觉得没有任何地方值得关心的。但是有很多出色的技巧已经添加到你的jQuery中。
我们都知道jQuery最好的地方就是把几个事件串起来。所以在1.4加入的最cool的方法之一，element快速构建器，却是为是减从scratch构重DOM element时的串连数量而设计的。


$('&#60;div/&#62;', {
  id: 'myDiv',
  css: {
   [...]]]></description>
			<content:encoded><![CDATA[<h1>原文：jQuery 1.4.x’s Greatest Hits: Earle’s Picks</h1>
<div>
<h4>By <a title="Find out more about this author" href="http://www.sitepoint.com/articlelist/579">Earle Castledine</a></h4>
<p>翻译by: franky  jQuery 1.3发布的时候，奥巴马还没当选美国总统，猪流感还没得到控制，MJ也仍然活着&#8230;这些事情感觉是已经发生了很久了。所以，jQuery研发团队在1.4版本上加入大量的新特性和增强，这一点都不让人觉得惊喜。  现在，jQuery 1.4已经的发布已经好几个月了，我们已经看到有1.4.1和1.4.2，我想让我最感到兴奋的一些特性更清淅一些。这里不会把所有特性目录都一一列举（有兴趣可以查看release notes）；实际上是我最喜欢的特性：我使用比较多的和我认为是最有前途的。</p>
<h2>Quick Fun Ones</h2>
<p>在我们深入研究之前，让我们迅速看看几个新的（有些应该属于迟来的）API方法。首先，看看delay这个方法。在jQuery论坛上有几百个问题问“我怎么把delay的动作放到jQuery chains里呢？”以前的答案非常扯蛋 &#8211; 你可以在chains中的某一下动作中伪造一个，或者使用JavaScript的timer，或者&#8230;一些更扯蛋的话。现在！delay这个新方法可以解决以上问题。delay方法接收jQuery规范的持续时间参数（数字代表的毫秒数，或者&#8217;fast&#8217;与&#8217;slow&#8217;），等待相应的一段时间再执行下一个方法。好用！ $(&#8217;p')   .slideUp()   <span><em>.delay(2000)</em></span> .slideDown();  下一个，所人有都喜欢的类回挠工具，toggleClass，已经得到一个整结的升级：你可以一次toggled多个类（用空格分隔）。如果类名已经存在就把它去除，如果不存在就加上。这个特性定会让你的导航或者手风王琴菜单代码更整洁。 最后，以下其它两个有用的捷径定会帮助提高jQuery chains代码的可读性，那就是first和last。以下是一段贯穿分类的是jQuery方法，</p>
<pre>$('p')
  .first()
  .addClass('first-paragraph')
  .end()
  .last()
  .addClass('last-paragraph');</pre>
<p>irst方法可以理解为eq(0)的别名，而last就是eq(-1)的别名了。咦，这是什么？减1？是的。这种方便的加法与可以开始计算，还能够传一个负数给eq(),指明其距离末尾的位置。</p>
<h2>Changing Some Fundamentals</h2>
<div>如果你把jQuery1.4.2-min.js放到你的老项目中，很大可能发现所有地方都能正常工作，这样可能让你觉得没有任何地方值得关心的。但是有很多出色的技巧已经添加到你的jQuery中。</div>
<div>我们都知道jQuery最好的地方就是把几个事件串起来。所以在1.4加入的最cool的方法之一，element快速构建器，却是为是减从scratch构重DOM element时的串连数量而设计的。</div>
<div></div>
<div>
<pre>$('&lt;div/&gt;', {
  id: 'myDiv',
  css: {
    backgroundColor : 'blue',
    padding : '5px'
  },
  html: '&lt;strong&gt;My Div&lt;/strong&gt;',
  click: function() {
    alert('clicked me!')
  }
}).appendTo('body');</pre>
<pre></pre>
<pre>紧跟构造选择器后的新参数，是一个包括element内容的对像。</pre>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2010/04/17/jquery1-4zuichenggongzhidao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux 命今行版本Fetion</title>
		<link>http://blog.thinklet.net/franky/2010/03/07/linuxmingjinxingbanbenfetion/</link>
		<comments>http://blog.thinklet.net/franky/2010/03/07/linuxmingjinxingbanbenfetion/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 15:56:45 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=188</guid>
		<description><![CDATA[官方地址：http://www.it-adv.net
Wiki： http://wiki.blueidea.com/index.php?title=飞信机器人
最新版本下载 ： http://www.it-adv.net/fetion/downng/fetion20091117-linux.tar.gz
&#62;&#62; 文件列表&#60;&#60;
fetion　　　　linux下主运行程序
fetion.exe　　win32下主运行程序
sample.conf　　演示配置文件
readme.txt  本说明文件
plugins 机器人框架程序
fxdemo.sql 机器人框架数据库（请导入到数据库)
cron.sh       机器人监控程序（LINUX)
robots.dat    机器人账号密码（配合cron.sh)
请到这里下载最新版本：http://bbs.it-adv.net/viewthread.php?tid=916&#38;extra=page%3D1
请把依赖的库文件和执行程序放到相同的目录
本程序的 linux 版本 基于 UBUNTU 7.10(gutsy) 开发，libc6。
一些老的发行版，如 RH9, RHES4等可能无法正常运行，
请参照  http://bbs.it-adv.net/viewthread.php?tid=154 如何在不同版本Linux上运行Binary-Only应用包 解决。
&#62;&#62; 使用说明 &#60;&#60;
以下参数提供登录用的账号密码（三种方式，手机号-密码 飞信号-密码 文件&#8211;索引）
&#8211;mobile=[手机号]       登录手机号
&#8211;sid=[飞信号]        登录飞信号
&#8211;pwd=[密码]         登录密码
&#8211;config=[文件名]       存储手机号、密码的文件。
&#8211;index=[索引号]       索引
以下参数提供接收者
&#8211;to=[手机号/飞信号/URI]   接收消息的手机号/飞信号/URI.如果知道对方URI，则只需自己在对方好友列表，无需对方在自己好友列表就能发送。
20090203003版本后，支持多个号码，中间用,逗号分隔
&#8211;msg-utf8=[信息]
发送的消息，UTF8编码
&#8211;msg-gb=[信息]
发送的消息，GB编码
&#8211;file-utf8=[文件utf8格式]
发送文件内容
&#8211;file-gb=[文件gb格式]
发送文件内容
&#8211;msg-type=[0/1/2]
发送消息类型：普通消息 长消息 智能短信
小工具
&#8211;query-cmcc-no  查询移动公司手机段
以下为可选项
&#8211;debug
显示调试信息
&#8211;hide
隐身登录
&#8211;proxy-ip=http代理ip
&#8211;proxy-port=http代理端口
&#62;&#62; 举例 &#60;&#60;
以下为 windows 下举例:
fetion &#8211;mobile=13711123456 &#8211;pwd=mypwd &#8211;to=137xxxxxxxx &#8211;msg-gb=测试
fetion &#8211;sid=6630321 &#8211;pwd=mypwd &#8211;to=137xxxxxxxx &#8211;msg-gb=测试
fetion &#8211;config=sample.conf &#8211;index=1 [...]]]></description>
			<content:encoded><![CDATA[<p>官方地址：http://www.it-adv.net</p>
<p>Wiki： <a href="http://wiki.blueidea.com/index.php?title=%E9%A3%9E%E4%BF%A1%E6%9C%BA%E5%99%A8%E4%BA%BA">http://wiki.blueidea.com/index.php?title=飞信机器人</a></p>
<p>最新版本下载 ： http://www.it-adv.net/fetion/downng/fetion20091117-linux.tar.gz</p>
<p>&gt;&gt; 文件列表&lt;&lt;<br />
fetion　　　　linux下主运行程序<br />
fetion.exe　　win32下主运行程序<br />
sample.conf　　演示配置文件<br />
readme.txt  本说明文件<br />
<span style="line-height: normal;cursor: pointer;border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #ff0000">plugin</span>s 机器人框架程序<br />
fxdemo.sql 机器人框架数据库（请导入到数据库)<br />
cron.sh       机器人监控程序（LINUX)<br />
robots.dat    机器人账号密码（配合cron.sh)</p>
<p>请到这里下载最新版本：<a href="http://bbs.it-adv.net/viewthread.php?tid=916&amp;extra=page%3D1" target="_blank">http://bbs.it-adv.net/viewthread.php?tid=916&amp;extra=page%3D1</a></p>
<p><span style="line-height: normal;color: red"><strong>请把依赖的库文件和执行程序放到相同的目录</strong></span></p>
<p>本程序的 linux 版本 基于 UBUNTU 7.10(gutsy) 开发，libc6。<br />
一些老的发行版，如 RH9, RHES4等可能无法正常运行，<br />
请参照  <a href="http://bbs.it-adv.net/viewthread.php?tid=154" target="_blank">http://bbs.it-adv.net/viewthread.php?tid=154</a> 如何在不同版本Linux上运行Binary-Only应用包 解决。</p>
<p>&gt;&gt; 使用说明 &lt;&lt;</p>
<p>以下参数提供登录用的账号密码（三种方式，手机号-密码 飞信号-密码 文件&#8211;索引）</p>
<p>&#8211;mobile=[手机号]       登录手机号<br />
&#8211;sid=[飞信号]        登录飞信号<br />
&#8211;pwd=[密码]         登录密码<br />
&#8211;config=[文件名]       存储手机号、密码的文件。<br />
&#8211;index=[索引号]       索引</p>
<p>以下参数提供接收者<br />
&#8211;to=[手机号/飞信号/URI]   接收消息的手机号/飞信号/URI.如果知道对方URI，则只需自己在对方好友列表，无需对方在自己好友列表就能发送。<br />
<strong>20090203003版本后，支持多个号码，中间用,逗号分隔</strong><br />
&#8211;msg-utf8=[信息]<br />
发送的消息，UTF8编码<br />
&#8211;msg-gb=[信息]<br />
发送的消息，GB编码<br />
&#8211;file-utf8=[文件utf8格式]<br />
发送文件内容<br />
&#8211;file-gb=[文件gb格式]<br />
发送文件内容<br />
&#8211;msg-type=[0/1/2]<br />
发送消息类型：普通消息 长消息 智能短信</p>
<p>小工具<br />
&#8211;query-cmcc-no  查询移动公司手机段</p>
<p>以下为可选项<br />
&#8211;debug<br />
显示<span style="line-height: normal;cursor: pointer;border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #ff0000">调试</span>信息<br />
&#8211;hide<br />
隐身登录</p>
<p>&#8211;proxy-ip=http<span style="line-height: normal;cursor: pointer;border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #ff0000">代理</span>ip<br />
&#8211;proxy-port=http代理端口</p>
<p>&gt;&gt; 举例 &lt;&lt;</p>
<p><strong><span style="line-height: normal;color: red">以下为 windows 下举例:</span></strong><br />
fetion &#8211;mobile=13711123456 &#8211;pwd=mypwd &#8211;to=137xxxxxxxx &#8211;msg-gb=测试<br />
fetion &#8211;sid=6630321 &#8211;pwd=mypwd &#8211;to=137xxxxxxxx &#8211;msg-gb=测试<br />
fetion &#8211;config=sample.conf &#8211;index=1 &#8211;to=137xxxxxxxx &#8211;msg-gb=测试</p>
<p><strong><span style="line-height: normal;color: red">linux下，请使用如下命令：</span></strong><br />
<span style="line-height: normal;color: #ff0000"><span style="line-height: normal;color: #000000"> LD_LIBRARY_PATH=. ./fetion &#8211;mobile=13711123456 &#8211;pwd=mypwd &#8211;to=137xxxxxxxx &#8211;msg-utf8=测试<br />
LD_LIBRARY_PATH=. ./fetion &#8211;sid=6630321 &#8211;pwd=mypwd &#8211;to=137xxxxxxxx &#8211;msg-utf8=测试<br />
LD_LIBRARY_PATH=. ./fetion &#8211;config=sample.conf &#8211;index=1 &#8211;to=137xxxxxxxx &#8211;msg-utf8=测试</span><br />
</span></p>
<p>发送消息中如果需要换行，请用 \n</p>
<p>// 以下为 sample.conf 内容，文件内容中， #号为注释行</p>
<p><em> # This config file is for fetion robot tool.<br />
# Usage demo: ./fetion &#8211;config=/etc/fetion.conf &#8211;index=1<br />
# ID Mobile  Password<br />
1  137xxxx  1234234<br />
</em></p>
<p><span>linux</span>下需要的四个文件（下载文件已经带了，放它们放到/usr/lib下）：</p>
<p>libACE.so.5.6.8<br />
libACE_SSL.so.5.6.8<br />
libcrypto.so.0.9.8<br />
libssl.so.0.9.8</p>
<p><span>linux</span>下，请使用如下命令：<br />
LD_LIBRARY_PATH=. ./<span>fetion</span> &#8211;mobile=13711123456 &#8211;pwd=mypwd &#8211;to=137xxxxxxxx  &#8211;msg-utf8=测试<br />
LD_LIBRARY_PATH=. ./<span>fetion</span> &#8211;sid=6630321 &#8211;pwd=mypwd &#8211;to=137xxxxxxxx &#8211;msg-utf8=测试<br />
LD_LIBRARY_PATH=. ./<span>fetion</span> &#8211;config=sample.conf  &#8211;index=1 &#8211;to=137xxxxxxxx &#8211;msg-utf8=测试</p>
<p>发送消息中如果需要换行，请用 \n</p>
<p>// 以下为 sample.conf 内容，文件内容中， #号为注释行<br />
# This config file is  for <span>fetion</span> robot tool.<br />
# Usage demo: ./<span>fetion</span> &#8211;config=/etc/<span>fetion</span>.conf  &#8211;index=1<br />
# ID Mobile  Password<br />
1  13XXXXXX  8888</p>
<p>机器人支持两种运行模式，一种是命令行模式，一种是服务模式。上面介绍的是命令行模式的操作。如果想使机器人长期在线，可以使用服务模式。只提供账号和密码登录飞信，即进入服务模式。想在服务模式下控制机器人，请参照  http://bbs.it-adv.net/viewthread.php?tid=170&amp;extra=page%3D1  2009指令集</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2010/03/07/linuxmingjinxingbanbenfetion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git &#8211; the fast version control system</title>
		<link>http://blog.thinklet.net/franky/2010/02/25/git-thefastversioncontrolsystem/</link>
		<comments>http://blog.thinklet.net/franky/2010/02/25/git-thefastversioncontrolsystem/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 14:15:20 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技术运营]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=184</guid>
		<description><![CDATA[Git 一个轻量，易用的版本管理工具。
http://git-scm.com/
如何安装？（CentOS 5）
1.安装相关的包。
yum install zlib-devel
yum install openssl-devel 
yum install perl
yum install cpio
yum install expat-devel
yum install gettext-devel
2.安装Git.
./configure
make
make install
如何使用？
http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html


]]></description>
			<content:encoded><![CDATA[<p>Git 一个轻量，易用的版本管理工具。</p>
<p>http://git-scm.com/</p>
<p><strong>如何安装？（CentOS 5）</strong></p>
<p>1.安装相关的包。</p>
<p><code style="color: #779900;font-family: monospace;line-height: 18px">yum install zlib-devel</code></p>
<p><code style="color: #779900;font-family: monospace;line-height: 18px">yum install openssl-devel </code></p>
<p><code style="color: #779900;font-family: monospace;line-height: 18px">yum install perl</code></p>
<p><code style="color: #779900;font-family: monospace;line-height: 18px">yum install cpio</code></p>
<p><code style="color: #779900;font-family: monospace;line-height: 18px">yum install expat-devel</code></p>
<p><code style="color: #779900;font-family: monospace;line-height: 18px">yum install gettext-devel</code></p>
<p>2.安装Git.</p>
<p><code style="color: #779900;font-family: monospace;line-height: 18px">./configure</code></p>
<p><code style="color: #779900;font-family: monospace;line-height: 18px">make</code></p>
<p><code style="color: #779900;font-family: monospace;line-height: 18px">make install</code></p>
<p><strong>如何使用？</strong></p>
<p><strong><a href="http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html">http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html</a></strong></p>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2010/02/25/git-thefastversioncontrolsystem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Xdebug深入调试PHP</title>
		<link>http://blog.thinklet.net/franky/2010/02/23/shiyongxdebugshenrudiaoshiphp/</link>
		<comments>http://blog.thinklet.net/franky/2010/02/23/shiyongxdebugshenrudiaoshiphp/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 15:24:56 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=174</guid>
		<description><![CDATA[Xdebug功能简介
Xdebug是PHP的一个插件(zend_extension)。主页：http://www.xdebug.org/。它提供大供php的调试信息。主要包含以下内容：

在错误信息中提供 层级跟踪 并且 功能跟踪。

为用户定义的函数展现全部参数
展现函数名，文件名，代码行数
支持成员函数


内存分配
防止死循环
PHP脚本的概况分析
代码覆盖范围分析
能够通过客户端软件调试PHP脚本

其中1,2,3是Xdebug默认提供的功能。只要启用了Xdebug就可以使用了。
如何使用PHP脚本的概况分析功能？
xdebug.profiler_enable 设为On，默认为Off


]]></description>
			<content:encoded><![CDATA[<p><strong>Xdebug功能简介</strong></p>
<p>Xdebug是PHP的一个插件(zend_extension)。主页：<a href="http://www.xdebug.org/">http://www.xdebug.org/</a>。它提供大供php的调试信息。主要包含以下内容：</p>
<ol>
<li>在错误信息中提供 层级跟踪 并且 功能跟踪。
<ul>
<li>为用户定义的函数展现全部参数</li>
<li>展现函数名，文件名，代码行数</li>
<li>支持成员函数</li>
</ul>
</li>
<li>内存分配</li>
<li>防止死循环</li>
<li>PHP脚本的概况分析</li>
<li>代码覆盖范围分析</li>
<li>能够通过客户端软件调试PHP脚本</li>
</ol>
<p>其中1,2,3是Xdebug默认提供的功能。只要启用了Xdebug就可以使用了。</p>
<p><strong><span style="font-weight: normal">如何使用PHP脚本的概况分析功能？</span></strong></p>
<p><strong><span style="font-weight: normal"><a href="http://www.xdebug.org/docs/all_settings#profiler_enable">xdebug.profiler_enable</a> 设为On，默认为Off</span></strong></p>
<p><strong><span style="font-weight: normal"><br />
</span></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2010/02/23/shiyongxdebugshenrudiaoshiphp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>十个不可或缺的ruby gems</title>
		<link>http://blog.thinklet.net/franky/2010/02/09/shigebukehuoquederubygems/</link>
		<comments>http://blog.thinklet.net/franky/2010/02/09/shigebukehuoquederubygems/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 14:48:23 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[Ruby&Rails]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=171</guid>
		<description><![CDATA[在我编程的时候有些东西是必须的。 于是我总结了这个 10 个最重要的 ruby gems 列表， 它们将使你的生活变得更轻松， 即使你只是花少量的时间用 ruby 编程。
　　Gems 有很多， 不过这些都是精华!
　　capistrano
　　Capistrano 是 Rails 应用程序开发更加从容。 它还是一个用来和远程服务器交互的聪明的 framework 。 事实上我已经备份了用 Capistrano 写的代码， 作为 Rake/Net::SSH 或者 shell 代码之外的另一个选择。
　　chronic
　　rubyforge.org/&#8221;&#62;Chronic 是一个自然语言分析器， 它的名字是个俏皮的双关。
　　&#62;&#62; Chronic.parse(&#8217;3rd wednesday in november&#8217;)=&#62; Wed Nov 19 12:00:00 0000 2008ferret
　　Ferret 会让你的老板、客户爱死你。 它提供了快速文本查询的工具， 你甚至可以可以给 PDF 文件和 Office 文档加索引。 我已经在很多网站上使用 Ferret 了， 我的客户们都说：“ 哇， 这看起来像 Google!”
　　hpricot
　　hpricot 是一个快速、容易上手的 HTML [...]]]></description>
			<content:encoded><![CDATA[<p>在我编程的时候有些东西是必须的。 于是我总结了这个 10 个最重要的 ruby gems 列表， 它们将使你的生活变得更轻松， 即使你只是花少量的时间用 ruby 编程。</p>
<p>　　Gems 有很多， 不过这些都是精华!</p>
<p>　　capistrano</p>
<p>　　Capistrano 是 Rails 应用程序开发更加从容。 它还是一个用来和远程服务器交互的聪明的 framework 。 事实上我已经备份了用 Capistrano 写的代码， 作为 Rake/Net::SSH 或者 shell 代码之外的另一个选择。</p>
<p>　　chronic</p>
<p>　　rubyforge.org/&#8221;&gt;Chronic 是一个自然语言分析器， 它的名字是个俏皮的双关。</p>
<p>　　&gt;&gt; Chronic.parse(&#8217;3rd wednesday in november&#8217;)=&gt; Wed Nov 19 12:00:00 0000 2008ferret</p>
<p>　　Ferret 会让你的老板、客户爱死你。 它提供了快速文本查询的工具， 你甚至可以可以给 PDF 文件和 Office 文档加索引。 我已经在很多网站上使用 Ferret 了， 我的客户们都说：“ 哇， 这看起来像 Google!”</p>
<p>　　hpricot</p>
<p>　　hpricot 是一个快速、容易上手的 HTML 分析器。 如果你发现自己需要解析 HTML 抑或 XML 的内容， hpricot 是最简捷的方法之一。 事实上我在 Helipad 中的很多地方使用了这个工具。</p>
<p>　　rcov</p>
<p>　　rcov 是使你的程序不经常崩溃的理由之一。 它分析你的代码， 高亮显示你的测试代码遗漏的部分。 它速度快， 不占资源， 并且能减轻头痛 ：)</p>
<p>　　scruffy</p>
<p>　　我一直用 Gruff 来画图， 不过当 scruffy 很完善的时候， 我更喜欢 rubyforge.org/&#8221;&gt;scruffy API 的设计。 它工作的方式非常精妙： 产生简单的 XML 来驱动 SVG 图。 因为 SVG 提供了一直直观地处理原始图片的方式， 你可以丢掉那些大量杂乱难懂的代码了。</p>
<p>　　我经常继承和重写 scruffy 来做成各种精巧的图片， 如果你觉得你现在用类库不太灵， 何不试试 scruffy 呢。</p>
<p>　　simple-rss</p>
<p>　　rubyforge.org/&#8221;&gt;simple-rss 分析 RSS 和 atom feed， 干的又快又好。 它的分析器也容易扩展， 这样你就可以应付那些无效的或专有的 feeds。</p>
<p>　　thin</p>
<p>　　Thin 使用 EventMachine， Rack 和 Mongrel 来创建一个快速的 web server。 我用它来做 Rails 的本地开发， 它比 mongrel 稍快。 要在我的 Rails 程序中使用它， 只需要在我的程序目录下输入 thin start 就行了。 当时我的 thin 和 IE cookies 之间有点儿冲突， 要记得如果你也遇到同样的问题， 你的程序可能有麻烦。 (说明: 这个问题在 thin 0.6.1 和 Rails 2 环境下好像修正了。)</p>
<p>　　要安装 thin， 使用 gem install thin 命令。</p>
<p>　　turn</p>
<p>　　Turn 使你的 Test::Unit 输出更易读。 Turn 也行看起来不那么招人喜欢， 但它确实对阅读测试结果有很大帮助。 在维护 Helicoid 的时候我对测试严重依赖， 所以任何能使这项工作变得更简洁的东西我都乐于尝试。</p>
<p>　　要安装 turn， 使用 gem install turn 命令。</p>
<p>　　wirble</p>
<p>　　wirble 使 irb 用起来更简单。 你有更好的对 history 的支持(在 session 间)以及颜色， 所以在繁重的工作中，你的眼睛和手指能得到休息。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2010/02/09/shigebukehuoquederubygems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下的time 命令</title>
		<link>http://blog.thinklet.net/franky/2010/01/10/linuxxiadetimemingling/</link>
		<comments>http://blog.thinklet.net/franky/2010/01/10/linuxxiadetimemingling/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 07:00:27 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=169</guid>
		<description><![CDATA[time命令在测试程序效率的时候很有用，也很方便。
它以秒为单位将一条命令执行期间所用的时间、系统时间和 time 命令的执行时间打印在标准错误中。
例如：
说明
执行命令行”command [arguments...]“，命令行执行结束时在标准输出中打印执行该命令行的时间统计结果，其统计结果包含以下数据：
1)实际时间(real time): 从command命令行开始执行到运行终止的消逝时间；
2)用户CPU时间(user CPU time): 命令执行完成花费的用户CPU时间，即命令在用户态中执行时间总和；
3)系统CPU时间(system CPU time): 命令执行完成花费的系统CPU时间，即命令在核心态中执行时间总和。
其中，用户CPU时间和系统CPU时间之和为CPU时间，即命令占用CPU执行的时间总和。实际时间要大于CPU时间，因为Linux是多任务操作系统，往往在执行一条命令时，系统还要处理其它任务。
另一个需要注意的问题是即使每次执行相同命令，但所花费的时间也是不一样，其花费时间是与系统运行相关的。
例1：
1. # time date
2. Sun Mar 26 22:45:34 GMT-8 2006
3.
4. real    0m0.136s
5. user    0m0.010s
6. sys     0m0.070s
7. #
在例1中，执行命令”time date”(见第1行)。系统先执行命令”date”，第2行为命令”date”的执行结果。第3-6行为执行命令”date”的时间统计结果，其中第4 行”real”为实际时间，第5行”user”为用户CPU时间，第6行”sys”为系统CPU时间。以上三种时间的显示格式均为 MMmNN[.FFF]s。
在例1中，CPU时间 = 用户CPU时间 + 系统CPU时间 = 0m0.010s + 0m0.070s = 0m0.080s，实际时间大于CPU时间，说明在date命令运行的同时，还有其它任务在运行.
time命令还可以拿测试php等脚本效率。
例如：time php test.php
]]></description>
			<content:encoded><![CDATA[<p>time命令在测试程序效率的时候很有用，也很方便。</p>
<p>它以秒为单位将一条命令执行期间所用的时间、系统时间和 time 命令的执行时间打印在标准错误中。<br />
例如：<br />
说明<br />
执行命令行”command [arguments...]“，命令行执行结束时在标准输出中打印执行该命令行的时间统计结果，其统计结果包含以下数据：<br />
1)实际时间(real time): 从command命令行开始执行到运行终止的消逝时间；<br />
2)用户CPU时间(user CPU time): 命令执行完成花费的用户CPU时间，即命令在用户态中执行时间总和；<br />
3)系统CPU时间(system CPU time): 命令执行完成花费的系统CPU时间，即命令在核心态中执行时间总和。<br />
其中，用户CPU时间和系统CPU时间之和为CPU时间，即命令占用CPU执行的时间总和。实际时间要大于CPU时间，因为Linux是多任务操作系统，往往在执行一条命令时，系统还要处理其它任务。<br />
另一个需要注意的问题是即使每次执行相同命令，但所花费的时间也是不一样，其花费时间是与系统运行相关的。<br />
例1：<br />
1. # time date<br />
2. Sun Mar 26 22:45:34 GMT-8 2006<br />
3.<br />
4. real    0m0.136s<br />
5. user    0m0.010s<br />
6. sys     0m0.070s<br />
7. #<br />
在例1中，执行命令”time date”(见第1行)。系统先执行命令”date”，第2行为命令”date”的执行结果。第3-6行为执行命令”date”的时间统计结果，其中第4 行”real”为实际时间，第5行”user”为用户CPU时间，第6行”sys”为系统CPU时间。以上三种时间的显示格式均为 MMmNN[.FFF]s。<br />
在例1中，CPU时间 = 用户CPU时间 + 系统CPU时间 = 0m0.010s + 0m0.070s = 0m0.080s，实际时间大于CPU时间，说明在date命令运行的同时，还有其它任务在运行.</p>
<p>time命令还可以拿测试php等脚本效率。<br />
例如：time php test.php</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2010/01/10/linuxxiadetimemingling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>section 508</title>
		<link>http://blog.thinklet.net/franky/2009/12/29/section508/</link>
		<comments>http://blog.thinklet.net/franky/2009/12/29/section508/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 12:59:51 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[UE]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=167</guid>
		<description><![CDATA[     如果你经常浏览一些国外的网站,你会发现他们的网站是非常简洁、清爽、干净的，版面内容也非常简短，跟中文网站的版面截然不同的，而且他们的版面改变很少，一般几年才会改动一次，版面也没有蹦蹦跳跳的广告。一方面可能跟西方人文化思维习惯有关，另一方面，在国外（像美国、澳大利亚等），国家有颁布相应的法律来约束大众信息传播网站，这就是 section 508法案，大体上来描述就相当于：如果某个大众信息传播网站，如果某些用户群体（如残疾人）浏览该网站获取信息时，如果他们无法正常获得所期望的信息（如无法正常浏览），那可以依据相关法规，可以对该网站依法起诉，这在中文网站里是一件不可思议的事，单单从这方面来说，中文网站落后他们起码有8年，不知何时我们也会有类似的法规。
下面是section 508的16条法规，你参照一下，你的网站做到了几条：
1. 对每一个非文本元素都应该提供一个等同的文本。
2. 任何多媒体演示的等同替代内容都应该与该演示同步。
3. Web 页应该经过设计，以便所有通过颜色传达的信息无需颜色也可获得，比如通过上下文或者标记获得。
4. 文档应该经过组织，这样它们无需关联的样式表也可阅读。
5. 应该为服务器端图像映射的每个活动区域都提供冗余的文本链接。
6. 应该提供客户端图像映射而非服务器端图像映射，除非区域不能使用可用的几何图形来定义。
7. 应该为数据表标识行和列标题。
8. 对于具有两个或多个逻辑层次的行或列标题的数据表，应该使用标记为这些数据标关联数据单元格和标题单格。
9. 应该使用有助于框架标识和导航的文本来为框架加上标题。
10. 页面应该经过设计，以避免在频率大于 2 Hz 并小于 55 Hz 的情况下导致屏幕闪烁。
11. 当以任何其他方法都无法达到符合性时，应该提供一个有等同信息或功能的纯文本页以使 Web 站点符合这部分的规定。只要主页面更改，纯文本页的内容就应该更新。
12. 当页面使用脚本语言来显示内容或创建界面元素时，由脚本提供的信息应与辅助技术可以阅读的功能文本一致。
13. 当 Web 页要求客户端系统上有小程序、插件或其他应用程序来解释页面内容时，该页必须提供一个到插件或小程序的链接。
14. 当电子表单设计为在线完成时，该表单应该允许用户使用辅助技术来访问完成并提交表单所需的信息、字段元素和功能，包括所有的说明和提示。
15. 应该提供一个方法允许用户跳过重复的导航链接。
16. 当需要一个定时响应时，应该警告用户并给予其充分的时间以表示需要更多的时间。
一个符合WAI标准的网站首要条件是标签标准化，由于历史原因和浏览器的容错性强，标签标准化的实施工作，我们还有很长的一段路要走，这也是我们前端部门的工作重点。
注：
WAI 可用性，可访问性；
关于标签标准化，网站性能评估，可以访问W3C官方网站和YSlow官方网站进一步了解详细情况。
]]></description>
			<content:encoded><![CDATA[<p>     如果你经常浏览一些国外的网站,你会发现他们的网站是非常简洁、清爽、干净的，版面内容也非常简短，跟中文网站的版面截然不同的，而且他们的版面改变很少，一般几年才会改动一次，版面也没有蹦蹦跳跳的广告。一方面可能跟西方人文化思维习惯有关，另一方面，在国外（像美国、澳大利亚等），国家有颁布相应的法律来约束大众信息传播网站，这就是 section 508法案，大体上来描述就相当于：如果某个大众信息传播网站，如果某些用户群体（如残疾人）浏览该网站获取信息时，如果他们无法正常获得所期望的信息（如无法正常浏览），那可以依据相关法规，可以对该网站依法起诉，这在中文网站里是一件不可思议的事，单单从这方面来说，中文网站落后他们起码有8年，不知何时我们也会有类似的法规。</p>
<p>下面是section 508的16条法规，你参照一下，你的网站做到了几条：<br />
1. 对每一个非文本元素都应该提供一个等同的文本。<br />
2. 任何多媒体演示的等同替代内容都应该与该演示同步。<br />
3. Web 页应该经过设计，以便所有通过颜色传达的信息无需颜色也可获得，比如通过上下文或者标记获得。<br />
4. 文档应该经过组织，这样它们无需关联的样式表也可阅读。<br />
5. 应该为服务器端图像映射的每个活动区域都提供冗余的文本链接。<br />
6. 应该提供客户端图像映射而非服务器端图像映射，除非区域不能使用可用的几何图形来定义。<br />
7. 应该为数据表标识行和列标题。<br />
8. 对于具有两个或多个逻辑层次的行或列标题的数据表，应该使用标记为这些数据标关联数据单元格和标题单格。<br />
9. 应该使用有助于框架标识和导航的文本来为框架加上标题。<br />
10. 页面应该经过设计，以避免在频率大于 2 Hz 并小于 55 Hz 的情况下导致屏幕闪烁。<br />
11. 当以任何其他方法都无法达到符合性时，应该提供一个有等同信息或功能的纯文本页以使 Web 站点符合这部分的规定。只要主页面更改，纯文本页的内容就应该更新。<br />
12. 当页面使用脚本语言来显示内容或创建界面元素时，由脚本提供的信息应与辅助技术可以阅读的功能文本一致。<br />
13. 当 Web 页要求客户端系统上有小程序、插件或其他应用程序来解释页面内容时，该页必须提供一个到插件或小程序的链接。<br />
14. 当电子表单设计为在线完成时，该表单应该允许用户使用辅助技术来访问完成并提交表单所需的信息、字段元素和功能，包括所有的说明和提示。<br />
15. 应该提供一个方法允许用户跳过重复的导航链接。<br />
16. 当需要一个定时响应时，应该警告用户并给予其充分的时间以表示需要更多的时间。</p>
<p>一个符合WAI标准的网站首要条件是标签标准化，由于历史原因和浏览器的容错性强，标签标准化的实施工作，我们还有很长的一段路要走，这也是我们前端部门的工作重点。</p>
<p>注：<br />
WAI 可用性，可访问性；<br />
关于标签标准化，网站性能评估，可以访问W3C官方网站和YSlow官方网站进一步了解详细情况。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2009/12/29/section508/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何更加愉快的工作</title>
		<link>http://blog.thinklet.net/franky/2009/12/29/ruhegengjiayukuaidegongzuo/</link>
		<comments>http://blog.thinklet.net/franky/2009/12/29/ruhegengjiayukuaidegongzuo/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 16:07:45 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[人生感悟]]></category>
		<category><![CDATA[团队合作]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=165</guid>
		<description><![CDATA[转自：http://www.ued163.com/?p=155
相信大家在工作中会遇到下面2种情况，当你为一项工作忙碌了一整天的时候，负责编辑称赞了你设计的很不错，你会感觉忙碌了一天的疲劳好象消失了一样，就算当时编辑再叫你修改你也会爽快的答应他，而且心情也是愉快的。
相反如果你为一项工作忙碌了一整天的时候，负责编辑一过来就说这里不好要修改那里不好又要修改。相信就算你答应他修改但心里一定会极不愿意的，这时候的你的心情也是相当难受的。
造成这两种不同结果原因是在第一种情况中编辑尊重你的劳动成果，给予了你真诚的赞美。所以想更加愉快的工作方法就是真诚的赏识和赞美他人。
例如同一个设计作品，有的人觉得很漂亮和让人感到舒服，而有的人却觉得不漂亮让人感到不舒服，为什么同样一件事物，会产生两种截然不同的结果呢？原因是设计是一个很主观的事物，不同教育、不同的性格、不同的性别、不同的爱好都会影响到他对设计作品的看法。如果我们想每个人都对你的作品100%满意都认同你的想法那是不可能的，但我们可以通过其他方法使互相尊重对方的劳动成果，营造愉快的气氛，这样问题就好解决多了。那这个方法就是真诚的赏识和赞美他人。
一名记者曾做过一次调查：经常赏识他人，夸奖、赞美他人的人往往处事积极乐观，受人欢迎，受人尊敬，不常生病，并且比一般人长寿；而常指责、抱怨的人没有朋友，孤单落寞，身体、心理脆弱，比一般人寿命短。
赞美他人，是我们在日常沟通中常常碰到的情况。要建立良好的人际关系，恰当地赞美别人是必不可少的。事实上，我们每个人都希望自己的工作受到别人的赞美。我们花了很大的精力，希望从他人那里得到赏识，但是，我们自己却不去赞美他人不去挖掘他人的闪光点。万事万物都是互相作用的，当你赞美他人的时候对方心情愉快了，对你会更加友善和更加容易沟通，那你的心情也会受到感染愉快起来。赞赏是非常容易的，不需要任何代价，而我们在赞美别人后自己得到的会的更多。
之前我和一位编辑初次合作一个项目，传闻说他是比较难沟通很挑剔，看完他传过来的策划资料后我发觉他之前准备的策划资料很详细，我就称赞了他策划做的很不错，看得出来是花了不少工夫，就这样一句赞美的话使得我们合作在一个非常愉快的气氛下完成了。也发觉他并不是传闻中说的那样难沟通那样挑剔。可能你会说是他哪天心情好吧，或者项目要求不是太高，但我相信是那句真诚的赞美起了作用。
赞美他人，是因为他确实有赞美的地方，而赞美本身也是对你对他由衷的钦佩和羡慕。如果为了讨好别人而去赞美，就违背了赞美的初衷和本意，那只能是献媚。赞美要讲分寸，要恰如其分，过犹不及，大而不当的赞美，反而显得虚假。
赞赏和献媚的区别在……那很容易识别出来，赞赏是出于真诚，而献媚是虚伪的。一个出于由衷，一个出于嘴裹。一个是不自私的，一个是自私的。一个是为人们所钦佩的，一个是令人不耻而扬弃的。
很多同事确实是认真的付出过，但不一定是很大的项目，不一定会有功劳， 为什么你不能大大方方给他一个赞赏了？你的一个赞赏对你来说可能是不需要任何成本的，微不足道的，但对别人来说那可能是一个希望一个更加努力的动力。
所以从现在开始尝试下去挖掘他人的闪光，尝试下真诚的赏识和赞美他人，这样你的工作就会变的愉快多了。
]]></description>
			<content:encoded><![CDATA[<p>转自：http://www.ued163.com/?p=155</p>
<p>相信大家在工作中会遇到下面2种情况，当你为一项工作忙碌了一整天的时候，负责编辑称赞了你设计的很不错，你会感觉忙碌了一天的疲劳好象消失了一样，就算当时编辑再叫你修改你也会爽快的答应他，而且心情也是愉快的。</p>
<p>相反如果你为一项工作忙碌了一整天的时候，负责编辑一过来就说这里不好要修改那里不好又要修改。相信就算你答应他修改但心里一定会极不愿意的，这时候的你的心情也是相当难受的。</p>
<p>造成这两种不同结果原因是在第一种情况中编辑尊重你的劳动成果，给予了你真诚的赞美。所以想更加愉快的工作方法就是真诚的赏识和赞美他人。</p>
<p>例如同一个设计作品，有的人觉得很漂亮和让人感到舒服，而有的人却觉得不漂亮让人感到不舒服，为什么同样一件事物，会产生两种截然不同的结果呢？原因是设计是一个很主观的事物，不同教育、不同的性格、不同的性别、不同的爱好都会影响到他对设计作品的看法。如果我们想每个人都对你的作品100%满意都认同你的想法那是不可能的，但我们可以通过其他方法使互相尊重对方的劳动成果，营造愉快的气氛，这样问题就好解决多了。那这个方法就是真诚的赏识和赞美他人。</p>
<p>一名记者曾做过一次调查：经常赏识他人，夸奖、赞美他人的人往往处事积极乐观，受人欢迎，受人尊敬，不常生病，并且比一般人长寿；而常指责、抱怨的人没有朋友，孤单落寞，身体、心理脆弱，比一般人寿命短。</p>
<p>赞美他人，是我们在日常沟通中常常碰到的情况。要建立良好的人际关系，恰当地赞美别人是必不可少的。事实上，我们每个人都希望自己的工作受到别人的赞美。我们花了很大的精力，希望从他人那里得到赏识，但是，我们自己却不去赞美他人不去挖掘他人的闪光点。万事万物都是互相作用的，当你赞美他人的时候对方心情愉快了，对你会更加友善和更加容易沟通，那你的心情也会受到感染愉快起来。赞赏是非常容易的，不需要任何代价，而我们在赞美别人后自己得到的会的更多。</p>
<p>之前我和一位编辑初次合作一个项目，传闻说他是比较难沟通很挑剔，看完他传过来的策划资料后我发觉他之前准备的策划资料很详细，我就称赞了他策划做的很不错，看得出来是花了不少工夫，就这样一句赞美的话使得我们合作在一个非常愉快的气氛下完成了。也发觉他并不是传闻中说的那样难沟通那样挑剔。可能你会说是他哪天心情好吧，或者项目要求不是太高，但我相信是那句真诚的赞美起了作用。</p>
<p>赞美他人，是因为他确实有赞美的地方，而赞美本身也是对你对他由衷的钦佩和羡慕。如果为了讨好别人而去赞美，就违背了赞美的初衷和本意，那只能是献媚。赞美要讲分寸，要恰如其分，过犹不及，大而不当的赞美，反而显得虚假。</p>
<p>赞赏和献媚的区别在……那很容易识别出来，赞赏是出于真诚，而献媚是虚伪的。一个出于由衷，一个出于嘴裹。一个是不自私的，一个是自私的。一个是为人们所钦佩的，一个是令人不耻而扬弃的。</p>
<p>很多同事确实是认真的付出过，但不一定是很大的项目，不一定会有功劳， 为什么你不能大大方方给他一个赞赏了？你的一个赞赏对你来说可能是不需要任何成本的，微不足道的，但对别人来说那可能是一个希望一个更加努力的动力。</p>
<p>所以从<strong>现在开始尝试下去挖掘他人的闪光，尝试下真诚的赏识和赞美他人，这样你的工作就会变的愉快多了。</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2009/12/29/ruhegengjiayukuaidegongzuo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>编写PHP扩展之环境准备:GNU autoconf, automake,libtoolm4</title>
		<link>http://blog.thinklet.net/franky/2009/12/27/bianxiephpkuozhanzhihuanjingzhunbeignuautoconfautomakelibtoolm4/</link>
		<comments>http://blog.thinklet.net/franky/2009/12/27/bianxiephpkuozhanzhihuanjingzhunbeignuautoconfautomakelibtoolm4/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 14:16:05 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[LAMP]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=163</guid>
		<description><![CDATA[PREPARING YOUR SYSTEM
  While the result will run on any system, a developer&#8217;s setup needs these
  tools:
    GNU autoconf
    GNU automake
    GNU libtool
    GNU m4
  All of these are available from 
    ftp://ftp.gnu.org/pub/gnu/
PHP源代码目录下README.SELF-CONTAINED-EXTENSIONS文件如是说。
马上google了一下。
GNU autoconf
Autoconf是一个用于生成可以自动地配置软件源代码包以适应多种Unix类系统的 shell脚本的工具。由Autoconf生成的配置脚本在运行的时候与Autoconf是无关的，就是说配置脚本的用户并不需要拥有Autoconf。 
由Autoconf生成的配置脚本在运行的时候不需要用户的手工干预；通常它们甚至不需要通过给出参数以确定系统的类型。相反，它们对软件包可能需要的各种特征进行独立的测试。（在每个测试之前，它们打印一个单行的消息以说明它们正在进行的检测，以使得用户不会因为等待脚本执行完毕而焦躁。）因此，它们在混合系统或者从各种常见Unix变种定制而成的系统中工作的很好。没有必要维护文件以储存由各个Unix变种、各个发行版本所支持的特征的列表。 
对于每个使用了Autoconf的软件包，Autoconf从一个列举了该软件包需要的，或者可以使用的系统特征的列表的模板文件中生成配置脚本。在shell代码识别并响应了一个被列出的系统特征之后，Autoconf允许多个可能使用（或者需要）该特征的软件包共享该特征。如果后来因为某些原因需要调整shell代码，就只要在一个地方进行修改；所有的配置脚本都将被自动地重新生成以使用更新了的代码。 [...]]]></description>
			<content:encoded><![CDATA[<p>PREPARING YOUR SYSTEM</p>
<p>  While the result will run on any system, a developer&#8217;s setup needs these<br />
  tools:</p>
<p>    GNU autoconf<br />
    GNU automake<br />
    GNU libtool<br />
    GNU m4</p>
<p>  All of these are available from </p>
<p>    ftp://ftp.gnu.org/pub/gnu/</p>
<p>PHP源代码目录下README.SELF-CONTAINED-EXTENSIONS文件如是说。<br />
马上google了一下。</p>
<p><strong>GNU autoconf</strong></p>
<p>Autoconf是一个用于生成可以自动地配置软件源代码包以适应多种Unix类系统的 shell脚本的工具。由Autoconf生成的配置脚本在运行的时候与Autoconf是无关的，就是说配置脚本的用户并不需要拥有Autoconf。 </p>
<p>由Autoconf生成的配置脚本在运行的时候不需要用户的手工干预；通常它们甚至不需要通过给出参数以确定系统的类型。相反，它们对软件包可能需要的各种特征进行独立的测试。（在每个测试之前，它们打印一个单行的消息以说明它们正在进行的检测，以使得用户不会因为等待脚本执行完毕而焦躁。）因此，它们在混合系统或者从各种常见Unix变种定制而成的系统中工作的很好。没有必要维护文件以储存由各个Unix变种、各个发行版本所支持的特征的列表。 </p>
<p>对于每个使用了Autoconf的软件包，Autoconf从一个列举了该软件包需要的，或者可以使用的系统特征的列表的模板文件中生成配置脚本。在shell代码识别并响应了一个被列出的系统特征之后，Autoconf允许多个可能使用（或者需要）该特征的软件包共享该特征。如果后来因为某些原因需要调整shell代码，就只要在一个地方进行修改；所有的配置脚本都将被自动地重新生成以使用更新了的代码。 </p>
<p>Metaconfig包在目的上与Autoconf很相似，但它生成的脚本需要用户的手工干预，在配置一个大的源代码树的时候这是十分不方便的。不象Metaconfig脚本，如果在编写脚本时小心谨慎， Autoconf可以支持交叉编译（cross-compiling）。 </p>
<p>Autoconf目前还不能完成几项使软件包可移植的工作。其中包括为所有标准的目标自动创建`Makefile&#8217;文件，包括在缺少标准库函数和头文件的系统上提供替代品。目前正在为在将来添加这些特征而工作。<br />
<a href="http://www.linuxforum.net/books/autoconf.html">详细请看</a></p>
<p><strong>GNU automake</strong><br />
Automake是一个从文件`Makefile.am&#8217;自动生成`Makefile.in&#8217; 的工具。每个`Makefile.am&#8217;基本上是一系列make的宏定义（make规则也会偶尔出现）。生成的`Makefile.in&#8217;s服从GNU Makefile标准。 </p>
<p>GNU Makefile标准文档（参见GNU编码标准中的‘Makefile惯例’节）长、复杂，而且会发生改变。Automake的目的就是解除个人GNU维护者维护Makefile的负担（并且让Automake的维护者来承担这个负担）。 </p>
<p>典型的Automake输入文件是一系列简单的宏定义。处理所有这样的文件以创建 `Makefile.in&#8217;。在一个项目（project）的每个目录中通常包含一个 `Makefile.am&#8217;。 </p>
<p>Automake在几个方面对一个项目做了限制；例如它假定项目使用Autoconf （参见Autoconf手册），并且对`configure.in&#8217;的内容施加了某些限制。 </p>
<p>为生成`Makefile.in&#8217;，Automake需要perl。但是由Automake创建的发布完全服从GNU标准，并且在创建中不需要perl。 </p>
<p><a href="http://www.linuxforum.net/books/automake.html">详细请看</a></p>
<p><strong>GNU Libtool</strong><br />
GNU Libtool是一种属于GNU建构系统的GNU程序设计工具，用来产生可携式的库。这里引用libtool手册的说明：</p>
<p>在过去，如果源码包的开发人员要充分利用共享库的能力，就要为软件运行的每个平台写客制化的支持码，也要设计一个配置界面，使程序包安装程序可以选择以什么样的库建构。</p>
<p>GNU libtool藉著将平台特定的相依性，和用户界面，都封装在一个脚本中，来简化开发人员的工作。GNU libtool的目的是使每一个主机类型的完整功能都可以通过一个泛用接口来产生，又可以免去一堆讨厌的错误消息。</p>
<p>GNU libtool的接口目标是一致的。开发人员在建立源码包建构共享库时，应该不用去读低级的文件，他们只需要运行软件包的配置脚本（或同性质的文件），而让libtool去照顾细节。</p>
<p>通常libtool是与GNU建构系统中的autoconf和automake这两个工具一起使用。</p>
<p><a href="http://zh.wikipedia.org/zh-cn/Libtool">详细请看</a></p>
<p><strong>GNU m4</strong><br />
GNU m4为m4宏前处理器的GNU版本。其目的是为了避免传统m4前处理器中的多种限制，诸如对行长度的最大值限制，宏大小的最大值限制，宏数量的限制等。拿掉这些霸道的限制是GNU计划的既定目标之一。</p>
<p>GNU Autoconf包使GNU m4的功能得以广为使用。</p>
<p>GNU m4目前是由Eric Blake来维护</p>
<p><a href="http://zh.wikipedia.org/wiki/GNU_m4">详细请看</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2009/12/27/bianxiephpkuozhanzhihuanjingzhunbeignuautoconfautomakelibtoolm4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows下如何更换帐号登陆Samba</title>
		<link>http://blog.thinklet.net/franky/2009/11/29/windowsxiaruhegenghuanzhanghaodenglusamba/</link>
		<comments>http://blog.thinklet.net/franky/2009/11/29/windowsxiaruhegenghuanzhanghaodenglusamba/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 08:16:31 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=161</guid>
		<description><![CDATA[windows登陆Samba后会自动记下帐号信息。
如何要更换其它帐号登陆Samba？
解決方法：在Windows 的命令列下, 執行 net use，可看到目前有哪些連線，
然後執行類似 &#8220;C:\net use \\192.168.1.10\TestFolder /delete&#8221; 這樣的指令，即可清除不要的連線。
]]></description>
			<content:encoded><![CDATA[<p>windows登陆Samba后会自动记下帐号信息。</p>
<p>如何要更换其它帐号登陆Samba？</p>
<p>解決方法：在Windows 的命令列下, 執行 net use，可看到目前有哪些連線，<br />
然後執行類似 &#8220;C:\net use \\192.168.1.10\TestFolder /delete&#8221; 這樣的指令，即可清除不要的連線。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2009/11/29/windowsxiaruhegenghuanzhanghaodenglusamba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<a style="display: none;" href="http://mcinside.com/">MC Inside</a>