<?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>Mon, 08 Mar 2010 15:58:46 +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>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>
		<item>
		<title>MySQL配置文件例子翻译</title>
		<link>http://blog.thinklet.net/franky/2009/11/22/mysqlpeizhiwenjianlizifanyi/</link>
		<comments>http://blog.thinklet.net/franky/2009/11/22/mysqlpeizhiwenjianlizifanyi/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 05:59:19 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=159</guid>
		<description><![CDATA[#BEGIN CONFIG INFO
#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大
#TYPE: SYSTEM
#END CONFIG INFO
#
# 此mysql配置文件例子针对4G内存
# 主要使用INNODB
#处理复杂队列并且连接数量较少的mysql服务器
#
# 将此文件复制到/etc/my.cnf 作为全局设置,
# mysql-data-dir/my.cnf 作为服务器指定设置
# (@localstatedir@ for this installation) 或者放入
# ~/.my.cnf 作为用户设置.
#
# 在此配置文件中, 你可以使用所有程序支持的长选项.
# 如果想获悉程序支持的所有选项
# 请在程序后加上&#8221;&#8211;help&#8221;参数运行程序.
#
# 关于独立选项更多的细节信息可以在手册内找到
#
#
# 以下选项会被MySQL客户端应用读取.
# 注意只有MySQL附带的客户端应用程序保证可以读取这段内容.
# 如果你想你自己的MySQL应用程序获取这些值
# 需要在MySQL客户端库初始化的时候指定这些选项
#
[client]
#password	= [your_password]
port	 = @MYSQL_TCP_PORT@
socket	 = @MYSQL_UNIX_ADDR@
# *** 应用定制选项 ***
#
#  MySQL 服务端
#
[mysqld]
# 一般配置选项
port	 = @MYSQL_TCP_PORT@
socket	 = @MYSQL_UNIX_ADDR@
# back_log 是操作系统在监听队列中所能保持的连接数,
# 队列保存了在MySQL连接管理器线程处理之前的连接.
# 如果你有非常高的连接率并且出现&#8221;connection refused&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>#BEGIN CONFIG INFO<br />
#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大<br />
#TYPE: SYSTEM<br />
#END CONFIG INFO</p>
<p>#<br />
# 此mysql配置文件例子针对4G内存<br />
# 主要使用INNODB<br />
#处理复杂队列并且连接数量较少的mysql服务器<br />
#<br />
# 将此文件复制到/etc/my.cnf 作为全局设置,<br />
# mysql-data-dir/my.cnf 作为服务器指定设置<br />
# (@localstatedir@ for this installation) 或者放入<br />
# ~/.my.cnf 作为用户设置.<br />
#<br />
# 在此配置文件中, 你可以使用所有程序支持的长选项.<br />
# 如果想获悉程序支持的所有选项<br />
# 请在程序后加上&#8221;&#8211;help&#8221;参数运行程序.<br />
#<br />
# 关于独立选项更多的细节信息可以在手册内找到<br />
#</p>
<p>#<br />
# 以下选项会被MySQL客户端应用读取.<br />
# 注意只有MySQL附带的客户端应用程序保证可以读取这段内容.<br />
# 如果你想你自己的MySQL应用程序获取这些值<br />
# 需要在MySQL客户端库初始化的时候指定这些选项</p>
<p>#<br />
[client]<br />
#password	= [your_password]<br />
port	 = @MYSQL_TCP_PORT@<br />
socket	 = @MYSQL_UNIX_ADDR@</p>
<p># *** 应用定制选项 ***</p>
<p>#<br />
#  MySQL 服务端<br />
#<br />
[mysqld]</p>
<p># 一般配置选项<br />
port	 = @MYSQL_TCP_PORT@<br />
socket	 = @MYSQL_UNIX_ADDR@</p>
<p># back_log 是操作系统在监听队列中所能保持的连接数,<br />
# 队列保存了在MySQL连接管理器线程处理之前的连接.<br />
# 如果你有非常高的连接率并且出现&#8221;connection refused&#8221; 报错,<br />
# 你就应该增加此处的值.<br />
# 检查你的操作系统文档来获取这个变量的最大值.<br />
# 如果将back_log设定到比你操作系统限制更高的值,将会没有效果<br />
back_log = 50</p>
<p># 不在TCP/IP端口上进行监听.<br />
# 如果所有的进程都是在同一台服务器连接到本地的mysqld,<br />
# 这样设置将是增强安全的方法<br />
# 所有mysqld的连接都是通过Unix sockets 或者命名管道进行的.<br />
# 注意在windows下如果没有打开命名管道选项而只是用此项<br />
# (通过 &#8220;enable-named-pipe&#8221; 选项) 将会导致mysql服务没有任何作用!<br />
#skip-networking</p>
<p># MySQL 服务所允许的同时会话数的上限<br />
# 其中一个连接将被SUPER权限保留作为管理员登录.<br />
# 即便已经达到了连接数的上限.<br />
max_connections = 100</p>
<p># 每个客户端连接最大的错误允许数量,如果达到了此限制.<br />
# 这个客户端将会被MySQL服务阻止直到执行了&#8221;FLUSH HOSTS&#8221; 或者服务重启<br />
# 非法的密码以及其他在链接时的错误会增加此值.<br />
# 查看 &#8220;Aborted_connects&#8221; 状态来获取全局计数器.<br />
max_connect_errors = 10</p>
<p># 所有线程所打开表的数量.<br />
# 增加此值就增加了mysqld所需要的文件描述符的数量<br />
# 这样你需要确认在[mysqld_safe]中 &#8220;open-files-limit&#8221; 变量设置打开文件数量允许至少4096<br />
table_cache = 2048</p>
<p># 允许外部文件级别的锁. 打开文件锁会对性能造成负面影响<br />
# 所以只有在你在同样的文件上运行多个数据库实例时才使用此选项(注意仍会有其他约束!)<br />
# 或者你在文件层面上使用了其他一些软件依赖来锁定MyISAM表<br />
#external-locking</p>
<p># 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要)<br />
# 每个连接独立的大小.大小动态增加<br />
max_allowed_packet = 16M</p>
<p># 在一个事务中binlog为了记录SQL状态所持有的cache大小<br />
# 如果你经常使用大的,多声明的事务,你可以增加此值来获取更大的性能.<br />
# 所有从事务来的状态都将被缓冲在binlog缓冲中然后在提交后一次性写入到binlog中<br />
# 如果事务比此值大, 会使用磁盘上的临时文件来替代.<br />
# 此缓冲在每个连接的事务第一次更新状态时被创建<br />
binlog_cache_size = 1M</p>
<p># 独立的内存表所允许的最大容量.<br />
# 此选项为了防止意外创建一个超大的内存表导致永尽所有的内存资源.<br />
max_heap_table_size = 64M</p>
<p># 排序缓冲被用来处理类似ORDER BY以及GROUP BY队列所引起的排序<br />
# 如果排序后的数据无法放入排序缓冲,<br />
# 一个用来替代的基于磁盘的合并分类会被使用<br />
# 查看 &#8220;Sort_merge_passes&#8221; 状态变量.<br />
# 在排序发生时由每个线程分配<br />
sort_buffer_size = 8M</p>
<p># 此缓冲被使用来优化全联合(full JOINs 不带索引的联合).<br />
# 类似的联合在极大多数情况下有非常糟糕的性能表现,<br />
# 但是将此值设大能够减轻性能影响.<br />
# 通过 &#8220;Select_full_join&#8221; 状态变量查看全联合的数量<br />
# 当全联合发生时,在每个线程中分配<br />
join_buffer_size = 8M</p>
<p># 我们在cache中保留多少线程用于重用<br />
# 当一个客户端断开连接后,如果cache中的线程还少于thread_cache_size,<br />
# 则客户端线程被放入cache中.<br />
# 这可以在你需要大量新连接的时候极大的减少线程创建的开销<br />
# (一般来说如果你有好的线程模型的话,这不会有明显的性能提升.)<br />
thread_cache_size = 8</p>
<p># 此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量.<br />
# 此值只对于支持 thread_concurrency() 函数的系统有意义( 例如Sun Solaris).<br />
# 你可可以尝试使用 [CPU数量]*(2..4) 来作为thread_concurrency的值<br />
thread_concurrency = 8</p>
<p># 查询缓冲常被用来缓冲 SELECT 的结果并且在下一次同样查询的时候不再执行直接返回结果.<br />
# 打开查询缓冲可以极大的提高服务器速度, 如果你有大量的相同的查询并且很少修改表.<br />
# 查看 &#8220;Qcache_lowmem_prunes&#8221; 状态变量来检查是否当前值对于你的负载来说是否足够高.<br />
# 注意: 在你表经常变化的情况下或者如果你的查询原文每次都不同,<br />
# 查询缓冲也许引起性能下降而不是性能提升.<br />
query_cache_size = 64M</p>
<p># 只有小于此设定值的结果才会被缓冲<br />
# 此设置用来保护查询缓冲,防止一个极大的结果集将其他所有的查询结果都覆盖.<br />
query_cache_limit = 2M</p>
<p># 被全文检索索引的最小的字长.<br />
# 你也许希望减少它,如果你需要搜索更短字的时候.<br />
# 注意在你修改此值之后,<br />
# 你需要重建你的 FULLTEXT 索引<br />
ft_min_word_len = 4</p>
<p># 如果你的系统支持 memlock() 函数,你也许希望打开此选项用以让运行中的mysql在在内存高度紧张的时候,数据在内存中保持锁定并且防止可能被swapping out<br />
# 此选项对于性能有益<br />
#memlock</p>
<p># 当创建新表时作为默认使用的表类型,<br />
# 如果在创建表示没有特别执行表类型,将会使用此值<br />
default_table_type = MYISAM</p>
<p># 线程使用的堆大小. 此容量的内存在每次连接时被预留.<br />
# MySQL 本身常不会需要超过64K的内存<br />
# 如果你使用你自己的需要大量堆的UDF函数<br />
# 或者你的操作系统对于某些操作需要更多的堆,<br />
# 你也许需要将其设置的更高一点.<br />
thread_stack = 192K</p>
<p># 设定默认的事务隔离级别.可用的级别如下:<br />
# READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE<br />
transaction_isolation = REPEATABLE-READ</p>
<p># 内部(内存中)临时表的最大大小<br />
# 如果一个表增长到比此值更大,将会自动转换为基于磁盘的表.<br />
# 此限制是针对单个表的,而不是总和.<br />
tmp_table_size = 64M</p>
<p># 打开二进制日志功能.<br />
# 在复制(replication)配置中,作为MASTER主服务器必须打开此项<br />
# 如果你需要从你最后的备份中做基于时间点的恢复,你也同样需要二进制日志.<br />
log-bin=mysql-bin</p>
<p># 如果你在使用链式从服务器结构的复制模式 (A-&gt;B-&gt;C),<br />
# 你需要在服务器B上打开此项.<br />
# 此选项打开在从线程上重做过的更新的日志,<br />
# 并将其写入从服务器的二进制日志.<br />
#log_slave_updates</p>
<p># 打开全查询日志. 所有的由服务器接收到的查询 (甚至对于一个错误语法的查询)<br />
# 都会被记录下来. 这对于调试非常有用, 在生产环境中常常关闭此项.<br />
#log</p>
<p># 将警告打印输出到错误log文件.  如果你对于MySQL有任何问题<br />
# 你应该打开警告log并且仔细审查错误日志,查出可能的原因.<br />
#log_warnings</p>
<p># 记录慢速查询. 慢速查询是指消耗了比 &#8220;long_query_time&#8221; 定义的更多时间的查询.<br />
# 如果 log_long_format 被打开,那些没有使用索引的查询也会被记录.<br />
# 如果你经常增加新查询到已有的系统内的话. 一般来说这是一个好主意,<br />
log_slow_queries</p>
<p># 所有的使用了比这个时间(以秒为单位)更多的查询会被认为是慢速查询.<br />
# 不要在这里使用&#8221;1&#8243;, 否则会导致所有的查询,甚至非常快的查询页被记录下来(由于MySQL 目前时间的精确度只能达到秒的级别).<br />
long_query_time = 2</p>
<p># 在慢速日志中记录更多的信息.<br />
# 一般此项最好打开.<br />
# 打开此项会记录使得那些没有使用索引的查询也被作为到慢速查询附加到慢速日志里<br />
log_long_format</p>
<p># 此目录被MySQL用来保存临时文件.例如,<br />
# 它被用来处理基于磁盘的大型排序,和内部排序一样.<br />
# 以及简单的临时表.<br />
# 如果你不创建非常大的临时文件,将其放置到 swapfs/tmpfs 文件系统上也许比较好<br />
# 另一种选择是你也可以将其放置在独立的磁盘上.<br />
# 你可以使用&#8221;;&#8221;来放置多个路径<br />
# 他们会按照roud-robin方法被轮询使用.<br />
#tmpdir = /tmp</p>
<p># ***  复制有关的设置</p>
<p># 唯一的服务辨识号,数值位于 1 到 2^32-1之间.<br />
# 此值在master和slave上都需要设置.<br />
# 如果 &#8220;master-host&#8221; 没有被设置,则默认为1, 但是如果忽略此选项,MySQL不会作为master生效.<br />
server-id = 1</p>
<p># 复制的Slave (去掉master段的注释来使其生效)<br />
#<br />
# 为了配置此主机作为复制的slave服务器,你可以选择两种方法:<br />
#<br />
# 1) 使用 CHANGE MASTER TO 命令 (在我们的手册中有完整描述) -<br />
#    语法如下:<br />
#<br />
#    CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,<br />
#    MASTER_USER=, MASTER_PASSWORD= ;<br />
#<br />
#    你需要替换掉 , ,  等被尖括号包围的字段以及使用master的端口号替换 (默认3306).<br />
#<br />
#    例子:<br />
#<br />
#    CHANGE MASTER TO MASTER_HOST=&#8217;125.564.12.1&#8242;, MASTER_PORT=3306,<br />
#    MASTER_USER=&#8217;joe&#8217;, MASTER_PASSWORD=&#8217;secret&#8217;;<br />
#<br />
# 或者<br />
#<br />
# 2) 设置以下的变量. 不论如何, 在你选择这种方法的情况下, 然后第一次启动复制(甚至不成功的情况下,<br />
#     例如如果你输入错密码在master-password字段并且slave无法连接),<br />
#    slave会创建一个 master.info 文件,并且之后任何对于包含在此文件内的参数的变化都会被忽略<br />
#    并且由 master.info 文件内的内容覆盖, 除非你关闭slave服务, 删除 master.info 并且重启slave 服务.<br />
#    由于这个原因,你也许不想碰一下的配置(注释掉的) 并且使用 CHANGE MASTER TO (查看上面) 来代替<br />
#<br />
# 所需要的唯一id号位于 2 和 2^32 &#8211; 1之间<br />
# (并且和master不同)<br />
# 如果master-host被设置了.则默认值是2<br />
# 但是如果省略,则不会生效<br />
#server-id = 2<br />
#<br />
# 复制结构中的master &#8211; 必须<br />
#master-host =<br />
#<br />
# 当连接到master上时slave所用来认证的用户名 &#8211; 必须<br />
#master-user =<br />
#<br />
# 当连接到master上时slave所用来认证的密码 &#8211; 必须<br />
#master-password =<br />
#<br />
# master监听的端口.<br />
# 可选 &#8211; 默认是3306<br />
#master-port = </p>
<p># 使得slave只读.只有用户拥有SUPER权限和在上面的slave线程能够修改数据.<br />
# 你可以使用此项去保证没有应用程序会意外的修改slave而不是master上的数据<br />
#read_only</p>
<p>#*** MyISAM 相关选项</p>
<p># 关键词缓冲的大小, 一般用来缓冲MyISAM表的索引块.<br />
# 不要将其设置大于你可用内存的30%,<br />
# 因为一部分内存同样被OS用来缓冲行数据<br />
# 甚至在你并不使用MyISAM 表的情况下, 你也需要仍旧设置起 8-64M 内存由于它同样会被内部临时磁盘表使用.<br />
key_buffer_size = 32M</p>
<p># 用来做MyISAM表全表扫描的缓冲大小.<br />
# 当全表扫描需要时,在对应线程中分配.<br />
read_buffer_size = 2M</p>
<p># 当在排序之后,从一个已经排序好的序列中读取行时,行数据将从这个缓冲中读取来防止磁盘寻道.<br />
# 如果你增高此值,可以提高很多ORDER BY的性能.<br />
# 当需要时由每个线程分配<br />
read_rnd_buffer_size = 16M</p>
<p># MyISAM 使用特殊的类似树的cache来使得突发插入<br />
# (这些插入是,INSERT &#8230; SELECT, INSERT &#8230; VALUES (&#8230;), (&#8230;), &#8230;, 以及 LOAD DATA<br />
# INFILE) 更快. 此变量限制每个进程中缓冲树的字节数.<br />
# 设置为 0 会关闭此优化.<br />
# 为了最优化不要将此值设置大于 &#8220;key_buffer_size&#8221;.<br />
# 当突发插入被检测到时此缓冲将被分配.<br />
bulk_insert_buffer_size = 64M</p>
<p># 此缓冲当MySQL需要在 REPAIR, OPTIMIZE, ALTER 以及 LOAD DATA INFILE 到一个空表中引起重建索引时被分配.<br />
# 这在每个线程中被分配.所以在设置大值时需要小心.<br />
myisam_sort_buffer_size = 128M</p>
<p># MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).<br />
# 如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)<br />
myisam_max_sort_file_size = 10G</p>
<p># 如果被用来更快的索引创建索引所使用临时文件大于制定的值,那就使用键值缓冲方法.<br />
# 这主要用来强制在大表中长字串键去使用慢速的键值缓冲方法来创建索引.<br />
myisam_max_extra_sort_file_size = 10G</p>
<p># 如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们.<br />
# 这对于拥有多个CPU以及大量内存情况的用户,是一个很好的选择.<br />
myisam_repair_threads = 1</p>
<p># 自动检查和修复没有适当关闭的 MyISAM 表.<br />
myisam_recover</p>
<p># 默认关闭 Federated<br />
skip-federated</p>
<p># *** BDB 相关选项 ***</p>
<p># 如果你运行的MySQL服务有BDB支持但是你不准备使用的时候使用此选项. 这会节省内存并且可能加速一些事.<br />
skip-bdb</p>
<p># *** INNODB 相关选项 ***</p>
<p># 如果你的MySQL服务包含InnoDB支持但是并不打算使用的话,<br />
# 使用此选项会节省内存以及磁盘空间,并且加速某些部分<br />
#skip-innodb</p>
<p># 附加的内存池被InnoDB用来保存 metadata 信息<br />
# 如果InnoDB为此目的需要更多的内存,它会开始从OS这里申请内存.<br />
# 由于这个操作在大多数现代操作系统上已经足够快, 你一般不需要修改此值.<br />
# SHOW INNODB STATUS 命令会显示当先使用的数量.<br />
innodb_additional_mem_pool_size = 16M</p>
<p># InnoDB使用一个缓冲池来保存索引和原始数据, 不像 MyISAM.<br />
# 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少.<br />
# 在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80%<br />
# 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.<br />
# 注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制,<br />
# 所以不要设置的太高.<br />
innodb_buffer_pool_size = 2G</p>
<p># InnoDB 将数据保存在一个或者多个数据文件中成为表空间.<br />
# 如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好了.<br />
# 其他情况下.每个设备一个文件一般都是个好的选择.<br />
# 你也可以配置InnoDB来使用裸盘分区 &#8211; 请参考手册来获取更多相关内容<br />
innodb_data_file_path = ibdata1:10M:autoextend</p>
<p># 设置此选项如果你希望InnoDB表空间文件被保存在其他分区.<br />
# 默认保存在MySQL的datadir中.<br />
#innodb_data_home_dir = </p>
<p># 用来同步IO操作的IO线程的数量. This value is<br />
# 此值在Unix下被硬编码为4,但是在Windows磁盘I/O可能在一个大数值下表现的更好.<br />
innodb_file_io_threads = 4</p>
<p># 如果你发现InnoDB表空间损坏, 设置此值为一个非零值可能帮助你导出你的表.<br />
# 从1开始并且增加此值知道你能够成功的导出表.<br />
#innodb_force_recovery=1</p>
<p># 在InnoDb核心内的允许线程数量.<br />
# 最优值依赖于应用程序,硬件以及操作系统的调度方式.<br />
# 过高的值可能导致线程的互斥颠簸.<br />
innodb_thread_concurrency = 16</p>
<p># 如果设置为1 ,InnoDB会在每次提交后刷新(fsync)事务日志到磁盘上,<br />
# 这提供了完整的ACID行为.<br />
# 如果你愿意对事务安全折衷, 并且你正在运行一个小的食物, 你可以设置此值到0或者2来减少由事务日志引起的磁盘I/O<br />
# 0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘.<br />
# 2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上.<br />
innodb_flush_log_at_trx_commit = 1</p>
<p># 加速InnoDB的关闭. 这会阻止InnoDB在关闭时做全清除以及插入缓冲合并.<br />
# 这可能极大增加关机时间, 但是取而代之的是InnoDB可能在下次启动时做这些操作.<br />
#innodb_fast_shutdown</p>
<p># 用来缓冲日志数据的缓冲区的大小.<br />
# 当此值快满时, InnoDB将必须刷新数据到磁盘上.<br />
# 由于基本上每秒都会刷新一次,所以没有必要将此值设置的太大(甚至对于长事务而言)</p>
<p>innodb_log_buffer_size = 8M</p>
<p># 在日志组中每个日志文件的大小.<br />
# 你应该设置日志文件总合大小到你缓冲池大小的25%~100%<br />
# 来避免在日志文件覆写上不必要的缓冲池刷新行为.<br />
# 不论如何, 请注意一个大的日志文件大小会增加恢复进程所需要的时间.<br />
innodb_log_file_size = 256M</p>
<p># 在日志组中的文件总数.<br />
# 通常来说2~3是比较好的.<br />
innodb_log_files_in_group = 3</p>
<p># InnoDB的日志文件所在位置. 默认是MySQL的datadir.<br />
# 你可以将其指定到一个独立的硬盘上或者一个RAID1卷上来提高其性能<br />
#innodb_log_group_home_dir</p>
<p># 在InnoDB缓冲池中最大允许的脏页面的比例.<br />
# 如果达到限额, InnoDB会开始刷新他们防止他们妨碍到干净数据页面.<br />
# 这是一个软限制,不被保证绝对执行.<br />
innodb_max_dirty_pages_pct = 90</p>
<p># InnoDB用来刷新日志的方法.<br />
# 表空间总是使用双重写入刷新方法<br />
# 默认值是 &#8220;fdatasync&#8221;, 另一个是 &#8220;O_DSYNC&#8221;.<br />
#innodb_flush_method=O_DSYNC</p>
<p># 在被回滚前,一个InnoDB的事务应该等待一个锁被批准多久.<br />
# InnoDB在其拥有的锁表中自动检测事务死锁并且回滚事务.<br />
# 如果你使用 LOCK TABLES 指令, 或者在同样事务中使用除了InnoDB以外的其他事务安全的存储引擎<br />
# 那么一个死锁可能发生而InnoDB无法注意到.<br />
# 这种情况下这个timeout值对于解决这种问题就非常有帮助.<br />
innodb_lock_wait_timeout = 120</p>
<p>[mysqldump]<br />
# 不要在将内存中的整个结果写入磁盘之前缓存. 在导出非常巨大的表时需要此项<br />
quick</p>
<p>max_allowed_packet = 16M</p>
<p>[mysql]<br />
no-auto-rehash</p>
<p># 仅仅允许使用键值的 UPDATEs 和 DELETEs .<br />
#safe-updates</p>
<p>[isamchk]<br />
key_buffer = 512M<br />
sort_buffer_size = 512M<br />
read_buffer = 8M<br />
write_buffer = 8M</p>
<p>[myisamchk]<br />
key_buffer = 512M<br />
sort_buffer_size = 512M<br />
read_buffer = 8M<br />
write_buffer = 8M</p>
<p>[mysqlhotcopy]<br />
interactive-timeout</p>
<p>[mysqld_safe]<br />
# 增加每个进程的可打开文件数量.<br />
# 警告: 确认你已经将全系统限制设定的足够高!<br />
# 打开大量表需要将此值设高<br />
open-files-limit = 8192</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2009/11/22/mysqlpeizhiwenjianlizifanyi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<a style="display: none;" href="http://mcinside.com/">MC Inside</a>