<?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>易水小居</title>
	<atom:link href="http://blog.fj18.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.fj18.com</link>
	<description>做大事的人要学会忍耐</description>
	<lastBuildDate>Sat, 05 May 2012 16:49:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Linux下自行颁发SSL证书</title>
		<link>http://blog.fj18.com/post/282.html</link>
		<comments>http://blog.fj18.com/post/282.html#comments</comments>
		<pubDate>Tue, 26 Apr 2011 01:51:01 +0000</pubDate>
		<dc:creator>易水寒沙</dc:creator>
				<category><![CDATA[Web服务器]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://blog.fj18.com/?p=282</guid>
		<description><![CDATA[openssl genrsa -des3 -out test.com.key 1024 openssl req -new -key test.com.key -out test.com.csr openssl rsa -in test.com.key -out test.com_nopass.key openssl x509 -req -days 365 -in test.com.csr -signkey test.com.key -out test.com.crt Nginx的配置： server { &#160;&#160; server_name www.test.com; &#160;&#160; listen&#160; 443; &#160;&#160; index index.html index.htm index.php; &#160;&#160; root&#160; /data/wwwroot/www.test.com; &#160;&#160; ssl on; &#160;&#160; ssl_certificate test.com.crt; &#160;&#160; ssl_certificate_key [...]]]></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">openssl genrsa -des3 -out test.com.key 1024</li>
<li>openssl req -new -key test.com.key -out test.com.csr</li>
<li>openssl rsa -in test.com.key -out test.com_nopass.key</li>
<li>openssl x509 -req -days 365 -in test.com.csr -signkey test.com.key -out test.com.crt</li></ol></div>
<p>Nginx的配置：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">server {</li>
<li>&nbsp;&nbsp; server_name www.test.com;</li>
<li>&nbsp;&nbsp; listen&nbsp; 443;</li>
<li>&nbsp;&nbsp; index index.html index.htm index.php;</li>
<li>&nbsp;&nbsp; root&nbsp; /data/wwwroot/www.test.com;</li>
<li>&nbsp;&nbsp; ssl on;</li>
<li>&nbsp;&nbsp; ssl_certificate test.com.crt;</li>
<li>&nbsp;&nbsp; ssl_certificate_key test.com_nopass.key;</li>
<li>&nbsp;&nbsp; ......</li>
<li>}</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.fj18.com/post/282.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>php的strtotime在处理am/pm时的一个BUG</title>
		<link>http://blog.fj18.com/post/276.html</link>
		<comments>http://blog.fj18.com/post/276.html#comments</comments>
		<pubDate>Mon, 11 Apr 2011 05:02:43 +0000</pubDate>
		<dc:creator>易水寒沙</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[strtotime]]></category>

		<guid isPermaLink="false">http://blog.fj18.com/?p=276</guid>
		<description><![CDATA[今天在处理一个采集数据时发现采集到的时间是空的，到源网站看了一下，发现是有时间的。联想到之前一个am/pm的问题，然后就有了如下测试。 测试代码： $date = date('Y-m-d'); $array = array('00:00am','00:00pm','00:01am','00:01pm', '01:01am','01:01pm','12:00am','12:00pm','12:01am','12:01pm'); foreach&#160;($array as $time) { &#160; &#160; echo&#160;$date . ' ' . $time.'&#60;br /&#62;'; &#160; &#160; echo&#160;strtotime($date . ' ' . $time).'&#60;br /&#62;'; &#160; &#160; echo&#160;date('Y-m-d H:i:s', strtotime($date . ' ' . $time)).'&#60;br /&#62;&#60;hr /&#62;'; } 大家可以先自己想想预期的答案是什么，再往下看： 2011-04-11 00:00am 1970-01-01 07:00:00 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; 2011-04-11 00:00pm 1970-01-01 07:00:00 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>今天在处理一个采集数据时发现采集到的时间是空的，到源网站看了一下，发现是有时间的。联想到之前一个am/pm的问题，然后就有了如下测试。<br />
测试代码：</p>
<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: #00008b;">$date</span><span style="color: Gray;"> = </span><span style="color: Blue;">date</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">Y-m-d</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$array</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">00:00am</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">00:00pm</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">00:01am</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">00:01pm</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">01:01am</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">01:01pm</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">12:00am</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">12:00pm</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">12:01am</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">12:01pm</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">foreach</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: #00008b;">$array</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: #00008b;">$time</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: Green;">echo</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">$date</span><span style="color: Gray;"> . </span><span style="color: #8b0000;">'</span><span style="color: Red;"> </span><span style="color: #8b0000;">'</span><span style="color: Gray;"> . </span><span style="color: #00008b;">$time</span><span style="color: Gray;">.</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;br /&gt;</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">echo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">strtotime</span><span style="color: Olive;">(</span><span style="color: #00008b;">$date</span><span style="color: Gray;"> . </span><span style="color: #8b0000;">'</span><span style="color: Red;"> </span><span style="color: #8b0000;">'</span><span style="color: Gray;"> . </span><span style="color: #00008b;">$time</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;br /&gt;</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">echo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">date</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">Y-m-d H:i:s</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Blue;">strtotime</span><span style="color: Olive;">(</span><span style="color: #00008b;">$date</span><span style="color: Gray;"> . </span><span style="color: #8b0000;">'</span><span style="color: Red;"> </span><span style="color: #8b0000;">'</span><span style="color: Gray;"> . </span><span style="color: #00008b;">$time</span><span style="color: Olive;">))</span><span style="color: Gray;">.</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;br /&gt;&lt;hr /&gt;</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
</ol></div>
<p>大家可以先自己想想预期的答案是什么，再往下看：<br />
<span id="more-276"></span><br />
2011-04-11 00:00am</p>
<p>1970-01-01 07:00:00</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
2011-04-11 00:00pm</p>
<p>1970-01-01 07:00:00</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
2011-04-11 00:01am</p>
<p>1970-01-01 07:00:00</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
2011-04-11 00:01pm</p>
<p>1970-01-01 07:00:00</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
2011-04-11 01:01am<br />
1302454860<br />
2011-04-11 01:01:00</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
2011-04-11 01:01pm<br />
1302498060<br />
2011-04-11 13:01:00</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
2011-04-11 12:00am<br />
1302451200<br />
2011-04-11 00:00:00</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
2011-04-11 12:00pm<br />
1302494400<br />
2011-04-11 12:00:00</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
2011-04-11 12:01am<br />
1302451260<br />
2011-04-11 00:01:00</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
2011-04-11 12:01pm<br />
1302494460<br />
2011-04-11 12:01:00</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>怎么样，和你想像的有很大差别吧，为什么会这样呢？在PHP的帮助中有这样一段话：</p>
<p>More generally, the time of day may be given as ‘hour:minute:second’, where hour is a number between 0 and 23, minute is a number between 0 and 59, and second is a number between 0 and 59 possibly followed by ‘.’ or ‘,’ and a fraction containing one or more digits. Alternatively, ‘:second’ can be omitted, in which case it is taken to be zero. On the rare hosts that support leap seconds, second may be 60. </p>
<p>If the time is followed by ‘am’ or ‘pm’ (or ‘a.m.’ or ‘p.m.’), hour is restricted to run from 1 to 12, and ‘:minute’ may be omitted (taken to be zero). ‘am’ indicates the first half of the day, ‘pm’ indicates the second half of the day. In this notation, 12 is the predecessor of 1: midnight is ‘12am’ while noon is ‘12pm’. (This is the zero-oriented interpretation of ‘12am’ and ‘12pm’, as opposed to the old tradition derived from Latin which uses ‘12am’ for noon and ‘12pm’ for midnight.) </p>
<p>The time may alternatively be followed by a time zone correction, expressed as ‘shhmm’, where s is ‘+’ or ‘-’, hh is a number of zone hours and mm is a number of zone minutes. The zone minutes term, mm, may be omitted, in which case the one- or two-digit correction is interpreted as a number of hours. You can also separate hh from mm with a colon. When a time zone correction is given this way, it forces interpretation of the time relative to Coordinated Universal Time (utc), overriding any previous specification for the time zone or the local time zone. For example, ‘+0530’ and ‘+05:30’ both stand for the time zone 5.5 hours ahead of utc (e.g., India). This is the best way to specify a time zone correction by fractional parts of an hour. The maximum zone correction is 24 hours. </p>
<p>Either ‘am’/‘pm’ or a time zone correction may be specified, but not both. </p>
<p>这下我们清楚了，使用am/pm时，小时是限制为1－12的，使用0当小时数是错误的，但是如果你使用date来格式化输出时，却能得到00:01am这样的时间格式：</p>
<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: #00008b;">$time</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">2011-04-11 00:01:00</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$timestamp</span><span style="color: Gray;"> = </span><span style="color: Blue;">strtotime</span><span style="color: Olive;">(</span><span style="color: #00008b;">$time</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$time_format</span><span style="color: Gray;"> = </span><span style="color: Blue;">date</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">Y-m-d H:ia</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$timestamp</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">echo</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">$time_format</span><span style="color: Gray;">;</span></li>
</ol></div>
<p>得到的结果是：2011-04-11 00:01am。<br />
纠结吧！解决办法也很简单，判断小时如果是0或00，转为12即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fj18.com/post/276.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS下通过Webmin管理BIND实现DNS轮询</title>
		<link>http://blog.fj18.com/post/270.html</link>
		<comments>http://blog.fj18.com/post/270.html#comments</comments>
		<pubDate>Fri, 18 Mar 2011 05:51:41 +0000</pubDate>
		<dc:creator>易水寒沙</dc:creator>
				<category><![CDATA[操作系統]]></category>
		<category><![CDATA[BIND]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[DNS轮询]]></category>
		<category><![CDATA[Webmin]]></category>

		<guid isPermaLink="false">http://blog.fj18.com/?p=270</guid>
		<description><![CDATA[在写这篇文章之前，我在网上翻阅了大量相关的文章，但由于“天下文章一大抄”（特别是国内）的现象，并没有在某篇文章得到我想要的资料，经过半天的摸索，整理出这份文档，做个记录，也供后来的同学参考。 我比较常用的Linux系统为CentOS 5.x及ubuntu，其中CentOS作为服务器，ubuntu作为桌面，所以，我的Linux方面的文章会主要以这两者为主。 一、介绍 1、Webmin 以下Webmin的介绍来自百度百科。 Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。目前Webmin支持绝大多数的Unix系统，这些系统除了各种版本的linux以外还包括：AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。 　　 Webmin 让您能够在远程使用支持 HTTPS (SSL 上的 HTTP)协议的 Web 浏览器通过 Web 界面管理您的主机。这在保证了安全性的前提下提供了简单深入的远程管理。这使得 Webmin 对系统管理员非常理想，因为所有主流平台都有满足甚至超出上述需求的 Web 浏览器。而且，Webmin 有其自己的“Web 服务器”，因此不需要运行第三方软件(比如 Web服务器)。万事具备。Webmin 的模块化架构允许您在需要时编写您自己的配置模块。除了在此介绍的模块之外，Webmin 还包括许多模块。尽管目前我们将主要关注网络服务，但是您会看到，几乎您系统的每一部分都能够通过 Webmin 来配置和管理。 Webmin的官方网址为：http://www.webmin.com/，目前最新版本为1.530。 2、BIND BIND（Berkeley Internet Name Daemon）是现今互联网上最常使用的DNS服务器软件，使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会（Internet Systems Consortium）负责开发与维护。 BIND的官方网址为：http://www.isc.org/software/bind，目前最新版本为9.8.0。 二、安装 1、通过yum安装bind（也能下载源码包自行编译） yum install -y bind* caching-nameserver* 2、下载并安装Webmin wget http://prdownloads.sourceforge.net/webadmin/webmin-1.530.tar.gz &#160;&#160; &#160;tar zxf webmin-1.530.tar.gz &#160;&#160; &#160;mv webmin-1.530 [...]]]></description>
			<content:encoded><![CDATA[<p>在写这篇文章之前，我在网上翻阅了大量相关的文章，但由于“天下文章一大抄”（特别是国内）的现象，并没有在某篇文章得到我想要的资料，经过半天的摸索，整理出这份文档，做个记录，也供后来的同学参考。</p>
<p>我比较常用的Linux系统为CentOS 5.x及ubuntu，其中CentOS作为服务器，ubuntu作为桌面，所以，我的Linux方面的文章会主要以这两者为主。<br />
一、介绍<br />
    1、Webmin<br />
    以下Webmin的介绍来自<a href="http://baike.baidu.com/view/1217715.htm" target="_blank">百度百科</a>。<br />
    Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。目前Webmin支持绝大多数的Unix系统，这些系统除了各种版本的linux以外还包括：AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。 　　</p>
<p>    Webmin 让您能够在远程使用支持 HTTPS (SSL 上的 HTTP)协议的 Web 浏览器通过 Web 界面管理您的主机。这在保证了安全性的前提下提供了简单深入的远程管理。这使得 Webmin 对系统管理员非常理想，因为所有主流平台都有满足甚至超出上述需求的 Web 浏览器。而且，Webmin 有其自己的“Web 服务器”，因此不需要运行第三方软件(比如 Web服务器)。万事具备。Webmin 的模块化架构允许您在需要时编写您自己的配置模块。除了在此介绍的模块之外，Webmin 还包括许多模块。尽管目前我们将主要关注网络服务，但是您会看到，几乎您系统的每一部分都能够通过 Webmin 来配置和管理。 </p>
<p>    Webmin的官方网址为：<a href="http://www.webmin.com/" target="_blank">http://www.webmin.com/</a>，目前最新版本为1.530。<br />
<span id="more-270"></span><br />
    2、BIND<br />
    BIND（Berkeley Internet Name Daemon）是现今互联网上最常使用的DNS服务器软件，使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会（Internet Systems Consortium）负责开发与维护。</p>
<p>    BIND的官方网址为：<a href="http://www.isc.org/software/bind" target="_blank">http://www.isc.org/software/bind</a>，目前最新版本为9.8.0。</p>
<p>二、安装<br />
    1、通过yum安装bind（也能下载源码包自行编译）</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">yum install -y bind* caching-nameserver*</li></ol></div>
<p>    2、下载并安装Webmin</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">wget http://prdownloads.sourceforge.net/webadmin/webmin-1.530.tar.gz</li>
<li>&nbsp;&nbsp; &nbsp;tar zxf webmin-1.530.tar.gz</li>
<li>&nbsp;&nbsp; &nbsp;mv webmin-1.530 /usr/local/webmin</li>
<li>&nbsp;&nbsp; &nbsp;cd /usr/local/webmin</li>
<li>&nbsp;&nbsp; &nbsp;./setup.sh</li></ol></div>
<p>    一路默认配置即可，注意最后要输入管理的账号密码，默认端口为10000（和中国电信没半毛钱关系），安装后管理地址为http://ip:端口。</p>
<p>三、管理<br />
    打开http://ip:端口，看到一个登陆页，输入刚才设定的账号和密码，就看到一个左右框架的网页，左边是管理菜单，右边是服务器的一些信息。</p>
<p>    如果不习惯英文的同学可以在Webmin->Change Language and Theme中切换为简体中文，不过我还是比较建议大家用英文版，毕竟我们还是和字母和数字打交道比较多。</p>
<p>    点击Servers可以看到目前服务器已经安装的一些服务，其中就有我们刚才安装的”BIND DNS Server”，我们今天要管理的就是它了，其它的大家再自行研究。</p>
<p>    第一次进入BIND DNS Server时会让你设定DNS类型，第一个内网用，后2个是公网用的，我们先选择内网来测试。</p>
<p>    1、建立一个主控域(master zone)<br />
    <img class="alignnone size-full wp-image-271" title="bind1" src="http://blog.fj18.com/wp-content/uploads/2011/03/bind1.jpg" alt="" width="674" height="337" /> <br />
    第一个是要解析的域名，第二个是本机的主机名，第三个是邮箱。</p>
<p>    2、增加A记录<br />
    在Address中增加几个A记录，如：<br />
    <img src="http://blog.fj18.com/wp-content/uploads/2011/03/bind2.jpg" alt="" title="bind2" width="677" height="289" class="alignnone size-full wp-image-272" /> <br />
    通过添加几个相同的A记录来实现DNS轮询。</p>
<p>    3、测试<br />
    把本机的DNS改为我们用来测试的机器，如192.168.1.2<br />
    打开终端（WINDOWS下从开始->运行输入cmd），运行nslookup www.test.com，如果看到如下输出，表示设置成功。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">Name:&nbsp; &nbsp;www.test.com</li>
<li>&nbsp;&nbsp; &nbsp;Address: 192.168.1.100</li>
<li>&nbsp;&nbsp; &nbsp;Name:&nbsp; &nbsp;www.test.com</li>
<li>&nbsp;&nbsp; &nbsp;Address: 192.168.1.101</li>
<li>&nbsp;&nbsp; &nbsp;Name:&nbsp; &nbsp;www.test.com</li>
<li>&nbsp;&nbsp; &nbsp;Address: 192.168.1.102</li></ol></div>
<p>    或是直接用ping www.test.com来看效果，注意WINDOWS会缓存DNS结果，需要每次PING后用”ipconfig /flushdns”来清空DNS缓存。 </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fj18.com/post/270.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UTF-8编码内简繁互转的PHP实现</title>
		<link>http://blog.fj18.com/post/266.html</link>
		<comments>http://blog.fj18.com/post/266.html#comments</comments>
		<pubDate>Tue, 08 Mar 2011 06:29:57 +0000</pubDate>
		<dc:creator>易水寒沙</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[utf-8]]></category>
		<category><![CDATA[简繁互转]]></category>

		<guid isPermaLink="false">http://blog.fj18.com/?p=266</guid>
		<description><![CDATA[昨天，因为项目需要对文字进行简繁互转，网上基本上是内码互转，即GB2312编码和BIG5编码之间的互转，我始终是UTF-8编码。关于UTF-8内的简繁互转，只有1篇，但被可耻的转了N次，占据了几页搜索页。我随便试了下，发现可以，等正式放到项目中才发现，只有一部分是正常的，只好自己想办法了。突然想到PHP的iconv函数，这是一个内码转换的函数，表面上看好像和我的需求不符，其实不然，我们可以通过曲线救国的方式来实现。先将UTF-8（简体字）转为GB2312编码，再将GB2312编码转为BIG5编码，然后再将BIG5转为UTF-8，这样比正常直接转多了2步，应该会有不少性能损失，具体损失多少，还没测试。到目前为止，还没有发现有不能转的字。下面放出代码： class&#160;ChineseTransfer { &#160; &#160; &#160; &#160; public&#160;static function big5_gb2312($in) { &#160; &#160; &#160; &#160; $in = iconv('UTF-8', 'BIG5', $in); &#160; &#160; &#160; &#160; $in = iconv('BIG5', 'GB2312', $in); &#160; &#160; &#160; &#160; $out = iconv('GB2312', 'UTF-8', $in); &#160; &#160; &#160; &#160; return&#160;$out; &#160; &#160; } &#160; &#160; &#160; &#160; public&#160;static function gb2312_big5($in) { &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>昨天，因为项目需要对文字进行简繁互转，网上基本上是内码互转，即GB2312编码和BIG5编码之间的互转，我始终是UTF-8编码。关于UTF-8内的简繁互转，只有1篇，但被可耻的转了N次，占据了几页搜索页。我随便试了下，发现可以，等正式放到项目中才发现，只有一部分是正常的，只好自己想办法了。突然想到PHP的iconv函数，这是一个内码转换的函数，表面上看好像和我的需求不符，其实不然，我们可以通过曲线救国的方式来实现。先将UTF-8（简体字）转为GB2312编码，再将GB2312编码转为BIG5编码，然后再将BIG5转为UTF-8，这样比正常直接转多了2步，应该会有不少性能损失，具体损失多少，还没测试。到目前为止，还没有发现有不能转的字。下面放出代码：</p>
<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: Green;">class</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">ChineseTransfer</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">static</span><span style="color: Gray;"> </span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">big5_gb2312</span><span style="color: Olive;">(</span><span style="color: #00008b;">$in</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: #00008b;">$in</span><span style="color: Gray;"> = </span><span style="color: Blue;">iconv</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">UTF-8</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">BIG5</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$in</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$in</span><span style="color: Gray;"> = </span><span style="color: Blue;">iconv</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">BIG5</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">GB2312</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$in</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$out</span><span style="color: Gray;"> = </span><span style="color: Blue;">iconv</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">GB2312</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">UTF-8</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$in</span><span style="color: Olive;">)</span><span style="color: Gray;">;</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: #00008b;">$out</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></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">static</span><span style="color: Gray;"> </span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">gb2312_big5</span><span style="color: Olive;">(</span><span style="color: #00008b;">$in</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: #00008b;">$in</span><span style="color: Gray;"> = </span><span style="color: Blue;">iconv</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">UTF-8</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">GB2312</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$in</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$in</span><span style="color: Gray;"> = </span><span style="color: Blue;">iconv</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">GB2312</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">BIG5</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$in</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$out</span><span style="color: Gray;"> = </span><span style="color: Blue;">iconv</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">BIG5</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">UTF-8</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$in</span><span style="color: Olive;">)</span><span style="color: Gray;">;</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: #00008b;">$out</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">}</span></li>
</ol></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.fj18.com/post/266.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux命令行下时区、日期和时间的一些设置方法</title>
		<link>http://blog.fj18.com/post/263.html</link>
		<comments>http://blog.fj18.com/post/263.html#comments</comments>
		<pubDate>Wed, 23 Feb 2011 03:40:21 +0000</pubDate>
		<dc:creator>易水寒沙</dc:creator>
				<category><![CDATA[操作系統]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[timezone]]></category>

		<guid isPermaLink="false">http://blog.fj18.com/?p=263</guid>
		<description><![CDATA[1. 查看日期时间，输入命令：date即可，要修改日期或时间可以用以下命令： date -s 2011-02-23 # 设置日期 date -s 11:22;33 # 设置时间 date -s &#34;2011-02-23 11:22:33&#34; # 设置日期和时间 2. 自动从世界标准时间中心同步时间，输入命令：/usr/sbin/ntpdate 0.pool.ntp.org，可以结合crond实现定时同步时间，如： 0 * * * * /usr/sbin/ntpdate 0.pool.ntp.org # 每小时同步一次 注意，要先关闭ntpd服务。否则会报“the NTP socket is in use, exiting”。 3. 修改时区，即时生效。命令如下： cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime hwclock 另外一种需要重启后才生效的，修改/etc/sysconfig/clock文件，把ZONE的值改为Asia/Shanghai，UTC值改为false，改完后的文件如下： ZONE=&#34;Asia/Shanghai&#34; UTC=false ARC=false]]></description>
			<content:encoded><![CDATA[<p>1. 查看日期时间，输入命令：date即可，要修改日期或时间可以用以下命令：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">date -s 2011-02-23 # 设置日期</li>
<li>date -s 11:22;33 # 设置时间</li>
<li>date -s &quot;2011-02-23 11:22:33&quot; # 设置日期和时间</li></ol></div>
<p>2. 自动从世界标准时间中心同步时间，输入命令：/usr/sbin/ntpdate 0.pool.ntp.org，可以结合crond实现定时同步时间，如：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">0 * * * * /usr/sbin/ntpdate 0.pool.ntp.org # 每小时同步一次</li></ol></div>
<p>注意，要先关闭ntpd服务。否则会报“the NTP socket is in use, exiting”。</p>
<p>3. 修改时区，即时生效。命令如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime</li>
<li>hwclock</li></ol></div>
<p>另外一种需要重启后才生效的，修改/etc/sysconfig/clock文件，把ZONE的值改为Asia/Shanghai，UTC值改为false，改完后的文件如下：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">ZONE=&quot;Asia/Shanghai&quot;</li>
<li>UTC=false</li>
<li>ARC=false</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.fj18.com/post/263.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS下安装cron</title>
		<link>http://blog.fj18.com/post/258.html</link>
		<comments>http://blog.fj18.com/post/258.html#comments</comments>
		<pubDate>Mon, 24 Jan 2011 03:20:07 +0000</pubDate>
		<dc:creator>易水寒沙</dc:creator>
				<category><![CDATA[操作系統]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[cron]]></category>

		<guid isPermaLink="false">http://blog.fj18.com/?p=258</guid>
		<description><![CDATA[今天到服务器上去添加cron任务时发现服务器竟然没有安装crond服务，在这里做一下安装和使用的记录。 1、安装 yum install vixie-cron crontabs 2、开启 /sbin/chkconfig --level 35 crond on&#160; # 开机自启动 /sbin/service crond start 3、添加任务 crontab -e 4、crontab 格式 * *　 *　 *　 *　command 第1列表示分钟 1～59 每分钟用 * 或者 */1 表示 第2列表示小时 1～23（0表示0点） 第3列表示日期 1～31 第4列表示月份 1～12 第5列标识星期 0～6 （0表示星期天） 第6列要运行的命令]]></description>
			<content:encoded><![CDATA[<p>今天到服务器上去添加cron任务时发现服务器竟然没有安装crond服务，在这里做一下安装和使用的记录。<br />
1、安装</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">yum install vixie-cron crontabs</li></ol></div>
<p>2、开启</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">/sbin/chkconfig --level 35 crond on&nbsp; # 开机自启动</li>
<li>/sbin/service crond start</li></ol></div>
<p>3、添加任务</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">crontab -e</li></ol></div>
<p>4、crontab 格式<br />
*   *　 *　 *　 *　command</p>
<p>第1列表示分钟 1～59 每分钟用 * 或者 */1 表示<br />
第2列表示小时 1～23（0表示0点）<br />
第3列表示日期 1～31<br />
第4列表示月份 1～12<br />
第5列标识星期 0～6 （0表示星期天）<br />
第6列要运行的命令</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fj18.com/post/258.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转载]从3个科技公司里学到的57条经验</title>
		<link>http://blog.fj18.com/post/249.html</link>
		<comments>http://blog.fj18.com/post/249.html#comments</comments>
		<pubDate>Mon, 22 Nov 2010 03:10:15 +0000</pubDate>
		<dc:creator>易水寒沙</dc:creator>
				<category><![CDATA[生活点滴]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[经验]]></category>

		<guid isPermaLink="false">http://blog.fj18.com/?p=249</guid>
		<description><![CDATA[来源：外刊IT评论 自1999年起我就开始发掘一些科技公司，并帮助它们运营。我最近的一个公司是fabulis.com。下面是从干这行中得到的57条经验。我可以列出更多，但恐怕会令你厌烦。 1.做你个人有热情的事情。你是你自己最好的民意代表。 2.用户体验很重要。大多数产品做不到这些是因为用户弄不清怎样才能从这些产品中获得好处。很多产品做不到这些是因为过于复杂。 3.要懂技术。你不必去写代码，但你必须能理解它是如何被开发出来的，如何工作的。 4.创业公司的CEO必须，必须，必须担任产品经理。他/她必须对产品拥有功能性的用户体验。 5.对功能进行主次分级。不会有两个等同的功能。你不可能把它们一次全实现。要进行兵力优化。 6.使用缺陷跟踪系统，虔诚的用它来管理你的开发活动。 7.及时发布。除非真正的用户接触到你的产品并给予反馈，你永远都不会知道你的产品是好是坏。 8.尽快发布，经常发布。不要惦记着再增加一些其它功能。只要能达到可以用来收集用户反馈的最小功能集合，那就发布它。收集反馈信息，反复这个过程，发布下一个版本、下一个版本，越快越好。如果你3个月才发布出第一版面向用户的产品，你拖延的太久了。如果3个星期才发布一次更新包，你拖延的太久了。如果不能一周几次，那每周发布一次更新。每3周发布一次重大更新。 9.唯一有意义的事是你的产品的好坏。其它的都是鸡毛蒜皮。 10.对你的产品好坏的唯一判定来自于有多少用户使用它。 11.因此(补充第9、10条):产品初期决定你将来是否能成功的关键因素是你的产品的吸附力。把你主要的时间花在如何在你早期的受众中培养吸附力。如果你能启动这个过程，雪球会越滚越大。 12.如果你最初设想的50%后来证明可行有效，那你已经相当成功了。尽可能的听取你的用户。 13.不要依赖于你的用户代表去告诉你如何发展。用户代表可以告诉你如何定位，帮助你明确潜在的需要打磨的核心内容，但你仍然需要有能力汇总消化这些信息，知道哪里去找到你的用户。 14.大多数人真正主要使用的也就是5～7种服务。如果你想做一个重要的产品，成为一个大公司，你需要能清楚如何成为这5～7种服务中的一种，这样去让用户为你着迷，俘获他们的热情和信任。你需要给你的用户一个好的能够让他们在你的服务上花时间的理由。 15.尝试追逐正在进行的潮流，开创你自己的市场。如果可以的话，捕捉刚刚出现的趋势苗头，驾驭它。 16.找个“引路人”。有些人以前做过这些 — 融资，贸易，给创业公司工作。给这个人你公司的1%～2%作为报酬换取他的时间。借助他们打开未来市场的大门。把他当作企业发展的宣传媒介。不要让委员会去做这种事情。顾问部从来就没有提供过有用的东西。找到这样的人，把他们当作你的引路人，依靠他们。 17.在你的项目上尽量找最棒的人一起工作，不管他在什么地方。 18.有可能的话最好设立分部，但这需要你穿梭在几个地区之间使他们正常运作。在线合作最少3～4周一次，这意味着你需要几乎每月都要在这几个地方旅行一次。 19.跟你喜欢相处的人一起工作。这不是说你可以跟你不喜欢的人不合。 20.要像信赖你的家人一样信赖跟你一起工作的人。 22.摆放你的办公桌，使你能看到你的同伴，他能看到你。如果你们每天都没有兴趣看到对方，那你们选错了一起工作的人。 23.使用一个类似Yammer的内部分享工具，分享你们正在开发的东西。对很多人(特别是开发人员)来说，更新状态信息要比发送邮件更容易。 24.在团队中使用一个文件共享服务系统，例如basecamp。这对所有人都很重要，它可以记录所有的文件动态并发送到你的邮箱里。basecamp使你有了历史存档，有了一个集中式数据文档库。 25.认清楚自己真正擅长的是什么，把自己的精力主要放在这些事情上。让其他的人做其他的事情。 26.让你的周围围绕着能够弥补你的缺陷的人。让他们做他们擅长的事。你不要去做他们的事。 27.跟在某些方面比你更聪明的人一起工作。 28.跟那些会和你争论，反对你的人一起工作。 29.白天地狱式的奋斗工作，晚上回到家和家人相亲相爱。 30.跟那些热衷于解决你正要解决的某些特定问题的人一起工作。光热情于发展公司业务还不够；还要热情于你的客户，热情于解决他们的问题。 31.促使你周围的人像你一样用心。 32.忠诚。培养和引导人们，而不是鼓噪他们。 33.你永远不会像你想象的那么正确。 34.每周至少去健身房或跑步4次，要想保持你的思维的体型，先保持你身体的体型。 35.不要在飞机上喝饮料，除非你的航程超过8小时。那会害了你，而且浪费你的时间。 36.你选择的投资者应该是你喜欢和他一起工作的，可以做朋友的，能够得到忠告的人。 37.不要按价值来选择投资者。淡化一些这方面的色彩，从长远看，不会有坏处，只要选对人。 38.创业初期募集资金越少越好。强迫自己进行严格的预算，认真使用每一块钱，就好象是最后一块钱。 39.一旦有了一些发展动力，募集一些多于你的需要量的资金，但你要清楚它们都将做什么。这有些技巧。不要在募捐活动上吝啬。 40.每分钱都要花的小心谨慎，就像那是你最后一分钱。 41.清楚你要做什么样的公司。像Google和Facebook这样的公司没几个。对于你的公司，也许1千万的回报额已经很好，也许2千万，也许一亿，也许什么都没有。计划好你要做什么样的工作。不要去做做不到的事情。看清楚你口袋里有多少钱，能做什么事情，两年赚取2千万期望值的20%要比5年赚取1亿期望值的3%要好。 42.跟41条有关，明白你的业务是否适合接受风险投资。风险投资一般会期望10倍的回报率。也就是说，你接受5百万，那就要提供5千万的回报。1千万的投资 = 1亿的目标。在签署接受风险资金时一定要想清楚他们在你身上期望的是什么。 43.把你的个人公司发展目标和你的投资者的目标保持一致。有目标公司才能成功。投资者没有魔力让事业成功。同样他们也没魔力让CEO用心。 44.会议一般来说都是在浪费时间。 45.微笑。大笑。穿有趣的袜子。我穿有趣的袜子，用来提醒我不要满足于平淡，要有创新。 46.做事情时，做任何事情时，都不要让你看起来像个机器人。让人们知道真实的你。 47.正视你的问题，化劣势为优势。 48.任何地方都穿着你公司的T恤衫。 49.成立自己的客户服务。 50.要会讲故事。 [...]]]></description>
			<content:encoded><![CDATA[<p>来源：<a href="http://www.aqee.net/2010/11/22/57-things-ive-learned-founding-3-tech-companies/">外刊IT评论</a></p>
<p>自1999年起我就开始发掘一些科技公司，并帮助它们运营。我最近的一个公司是fabulis.com。下面是从干这行中得到的57条经验。我可以列出更多，但恐怕会令你厌烦。</p>
<p>1.做你个人有热情的事情。你是你自己最好的民意代表。</p>
<p>2.用户体验很重要。大多数产品做不到这些是因为用户弄不清怎样才能从这些产品中获得好处。很多产品做不到这些是因为过于复杂。</p>
<p>3.要懂技术。你不必去写代码，但你必须能理解它是如何被开发出来的，如何工作的。</p>
<p>4.创业公司的CEO必须，必须，必须担任产品经理。他/她必须对产品拥有功能性的用户体验。</p>
<p>5.对功能进行主次分级。不会有两个等同的功能。你不可能把它们一次全实现。要进行兵力优化。</p>
<p>6.使用缺陷跟踪系统，虔诚的用它来管理你的开发活动。</p>
<p>7.及时发布。除非真正的用户接触到你的产品并给予反馈，你永远都不会知道你的产品是好是坏。</p>
<p>8.尽快发布，经常发布。不要惦记着再增加一些其它功能。只要能达到可以用来收集用户反馈的最小功能集合，那就发布它。收集反馈信息，反复这个过程，发布下一个版本、下一个版本，越快越好。如果你3个月才发布出第一版面向用户的产品，你拖延的太久了。如果3个星期才发布一次更新包，你拖延的太久了。如果不能一周几次，那每周发布一次更新。每3周发布一次重大更新。<br />
<span id="more-249"></span><br />
9.唯一有意义的事是你的产品的好坏。其它的都是鸡毛蒜皮。</p>
<p>10.对你的产品好坏的唯一判定来自于有多少用户使用它。</p>
<p>11.因此(补充第9、10条):产品初期决定你将来是否能成功的关键因素是你的产品的吸附力。把你主要的时间花在如何在你早期的受众中培养吸附力。如果你能启动这个过程，雪球会越滚越大。</p>
<p>12.如果你最初设想的50%后来证明可行有效，那你已经相当成功了。尽可能的听取你的用户。</p>
<p>13.不要依赖于你的用户代表去告诉你如何发展。用户代表可以告诉你如何定位，帮助你明确潜在的需要打磨的核心内容，但你仍然需要有能力汇总消化这些信息，知道哪里去找到你的用户。</p>
<p>14.大多数人真正主要使用的也就是5～7种服务。如果你想做一个重要的产品，成为一个大公司，你需要能清楚如何成为这5～7种服务中的一种，这样去让用户为你着迷，俘获他们的热情和信任。你需要给你的用户一个好的能够让他们在你的服务上花时间的理由。</p>
<p>15.尝试追逐正在进行的潮流，开创你自己的市场。如果可以的话，捕捉刚刚出现的趋势苗头，驾驭它。</p>
<p>16.找个“引路人”。有些人以前做过这些 — 融资，贸易，给创业公司工作。给这个人你公司的1%～2%作为报酬换取他的时间。借助他们打开未来市场的大门。把他当作企业发展的宣传媒介。不要让委员会去做这种事情。顾问部从来就没有提供过有用的东西。找到这样的人，把他们当作你的引路人，依靠他们。</p>
<p>17.在你的项目上尽量找最棒的人一起工作，不管他在什么地方。</p>
<p>18.有可能的话最好设立分部，但这需要你穿梭在几个地区之间使他们正常运作。在线合作最少3～4周一次，这意味着你需要几乎每月都要在这几个地方旅行一次。</p>
<p>19.跟你喜欢相处的人一起工作。这不是说你可以跟你不喜欢的人不合。</p>
<p>20.要像信赖你的家人一样信赖跟你一起工作的人。</p>
<p>22.摆放你的办公桌，使你能看到你的同伴，他能看到你。如果你们每天都没有兴趣看到对方，那你们选错了一起工作的人。</p>
<p>23.使用一个类似Yammer的内部分享工具，分享你们正在开发的东西。对很多人(特别是开发人员)来说，更新状态信息要比发送邮件更容易。</p>
<p>24.在团队中使用一个文件共享服务系统，例如basecamp。这对所有人都很重要，它可以记录所有的文件动态并发送到你的邮箱里。basecamp使你有了历史存档，有了一个集中式数据文档库。</p>
<p>25.认清楚自己真正擅长的是什么，把自己的精力主要放在这些事情上。让其他的人做其他的事情。</p>
<p>26.让你的周围围绕着能够弥补你的缺陷的人。让他们做他们擅长的事。你不要去做他们的事。</p>
<p>27.跟在某些方面比你更聪明的人一起工作。</p>
<p>28.跟那些会和你争论，反对你的人一起工作。</p>
<p>29.白天地狱式的奋斗工作，晚上回到家和家人相亲相爱。</p>
<p>30.跟那些热衷于解决你正要解决的某些特定问题的人一起工作。光热情于发展公司业务还不够；还要热情于你的客户，热情于解决他们的问题。</p>
<p>31.促使你周围的人像你一样用心。</p>
<p>32.忠诚。培养和引导人们，而不是鼓噪他们。</p>
<p>33.你永远不会像你想象的那么正确。</p>
<p>34.每周至少去健身房或跑步4次，要想保持你的思维的体型，先保持你身体的体型。</p>
<p>35.不要在飞机上喝饮料，除非你的航程超过8小时。那会害了你，而且浪费你的时间。</p>
<p>36.你选择的投资者应该是你喜欢和他一起工作的，可以做朋友的，能够得到忠告的人。</p>
<p>37.不要按价值来选择投资者。淡化一些这方面的色彩，从长远看，不会有坏处，只要选对人。</p>
<p>38.创业初期募集资金越少越好。强迫自己进行严格的预算，认真使用每一块钱，就好象是最后一块钱。</p>
<p>39.一旦有了一些发展动力，募集一些多于你的需要量的资金，但你要清楚它们都将做什么。这有些技巧。不要在募捐活动上吝啬。</p>
<p>40.每分钱都要花的小心谨慎，就像那是你最后一分钱。</p>
<p>41.清楚你要做什么样的公司。像Google和Facebook这样的公司没几个。对于你的公司，也许1千万的回报额已经很好，也许2千万，也许一亿，也许什么都没有。计划好你要做什么样的工作。不要去做做不到的事情。看清楚你口袋里有多少钱，能做什么事情，两年赚取2千万期望值的20%要比5年赚取1亿期望值的3%要好。</p>
<p>42.跟41条有关，明白你的业务是否适合接受风险投资。风险投资一般会期望10倍的回报率。也就是说，你接受5百万，那就要提供5千万的回报。1千万的投资 = 1亿的目标。在签署接受风险资金时一定要想清楚他们在你身上期望的是什么。</p>
<p>43.把你的个人公司发展目标和你的投资者的目标保持一致。有目标公司才能成功。投资者没有魔力让事业成功。同样他们也没魔力让CEO用心。</p>
<p>44.会议一般来说都是在浪费时间。</p>
<p>45.微笑。大笑。穿有趣的袜子。我穿有趣的袜子，用来提醒我不要满足于平淡，要有创新。</p>
<p>46.做事情时，做任何事情时，都不要让你看起来像个机器人。让人们知道真实的你。</p>
<p>47.正视你的问题，化劣势为优势。</p>
<p>48.任何地方都穿着你公司的T恤衫。</p>
<p>49.成立自己的客户服务。</p>
<p>50.要会讲故事。</p>
<p>51.别说谎。永远不要。</p>
<p>52.在你周围的人身上寻找灵感。</p>
<p>53.每天都保持快乐。如果不高兴，那就别做。没人要你做。</p>
<p>54.销售中的那句话说的很对，你的成绩只跟最近的一次销售有关系。</p>
<p>55.犯错误，但要吸取教训。我犯了无数错误。</p>
<p>56.成熟，但不要长大。</p>
<p>57.永不放弃。</p>
<p>[英文出处]：<a href="http://betashop.com/post/1417413108/57-things-ive-learned-founding-3-tech-companies">57-things-ive-learned-founding-3-tech-companies</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fj18.com/post/249.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS5.3下安装pptpd提供VPN服务</title>
		<link>http://blog.fj18.com/post/245.html</link>
		<comments>http://blog.fj18.com/post/245.html#comments</comments>
		<pubDate>Sun, 21 Nov 2010 13:34:45 +0000</pubDate>
		<dc:creator>易水寒沙</dc:creator>
				<category><![CDATA[操作系統]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[pptpd]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://blog.fj18.com/?p=245</guid>
		<description><![CDATA[今天，一个朋友跟我说，你有个LINUX服务器在国外，搞个VPN来玩玩呗。之前是有的，后来重灌系统（台湾用语，重装系统），就没装了，正好装回来。中间还出了问题，google和百度后发现，内容都大致相同，可奇怪的是，这么多人转来转去，注明转载的却不多，真是世风日下。暂且不去管别人怎么做，在我博客出现的，只要是转载来的，就一定会注明。以下是正文： 1.安装ppp iptables服务 yum install -y ppp iptables 2.下载pptpd的rpm包： 32位 http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm 64位 http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.x86_64.rpm 安装命令： 32位 rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm 64位 rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm 3.修改配置 3.1. options.pptpd （/etc/ppp/options.pptpd ） 前面的都不用改，就改一下最后的ms-dns就可以，我这里用的是google的 name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 proxyarp lock nobsdcomp novj novjccomp nologfd ms-dns 8.8.8.8 ms-dns 8.8.4.4 3.2 pptpd.conf （/etc/pptpd.conf） 配置本机IP，及分配的IP范围 option /etc/ppp/options.pptpd logwtmp localip 192.168.88.1 remoteip [...]]]></description>
			<content:encoded><![CDATA[<p>今天，一个朋友跟我说，你有个LINUX服务器在国外，搞个VPN来玩玩呗。之前是有的，后来重灌系统（台湾用语，重装系统），就没装了，正好装回来。中间还出了问题，google和百度后发现，内容都大致相同，可奇怪的是，这么多人转来转去，注明转载的却不多，真是世风日下。暂且不去管别人怎么做，在我博客出现的，只要是转载来的，就一定会注明。以下是正文：</p>
<p>1.安装ppp iptables服务</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">yum install -y ppp iptables</li></ol></div>
<p>2.下载pptpd的rpm包：<br />
32位 http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm<br />
64位 http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.x86_64.rpm<br />
安装命令：<br />
32位</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm</li></ol></div>
<p>64位</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm</li></ol></div>
<p><span id="more-245"></span><br />
3.修改配置<br />
3.1. options.pptpd （/etc/ppp/options.pptpd ）<br />
前面的都不用改，就改一下最后的ms-dns就可以，我这里用的是google的</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">name pptpd</li>
<li>refuse-pap</li>
<li>refuse-chap</li>
<li>refuse-mschap</li>
<li>require-mschap-v2</li>
<li>require-mppe-128</li>
<li>proxyarp</li>
<li>lock</li>
<li>nobsdcomp</li>
<li>novj</li>
<li>novjccomp</li>
<li>nologfd</li>
<li>ms-dns 8.8.8.8</li>
<li>ms-dns 8.8.4.4</li></ol></div>
<p>3.2 pptpd.conf （/etc/pptpd.conf）<br />
配置本机IP，及分配的IP范围</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">option /etc/ppp/options.pptpd</li>
<li>logwtmp</li>
<li>localip 192.168.88.1</li>
<li>remoteip 192.168.88.100-110</li></ol></div>
<p>3.3 chap-secrets （/etc/ppp/chap-secrets）<br />
添加用户名和密码，格式为：<br />
用户名 服务名 密码 IP<br />
如</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">test pptpd test *</li></ol></div>
<p>* 表示不限IP</p>
<p>3.4 sysctl.conf （/etc/sysctl.conf）<br />
修改net.ipv4.ip_forward = 0的值为1，改后为net.ipv4.ip_forward = 1<br />
改完记得重新加载一下配置，我就是忘了这一步，浪费了十多分钟</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">/sbin/sysctl -p</li></ol></div>
<p>3.5 配置iptables<br />
eth0为你的外网IP那块网卡</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">/sbin/iptables -A INPUT -p tcp --dport 1723 -j ACCEPT</li>
<li>/sbin/iptables -A INPUT -p tcp --dport 47 -j ACCEPT</li>
<li>/sbin/iptables -A INPUT -p gre -j ACCEPT</li>
<li>/sbin/iptables -A POSTROUTING -t nat -s 192.168.88.0/24 -o eth0 -j MASQUERADE</li>
<li>/etc/init.d/iptables save</li>
<li>/sbin/service iptables restart</li></ol></div>
<p>4. 设置iptables和pptpd开机自启动：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">chkconfig pptpd on</li>
<li>chkconfig iptables on</li></ol></div>
<p>附：如果完成上述步骤还不能连接，可能需要以root权限执行以下操作<br />
mknod /dev/ppp c 108 0<br />
如果出现部分网站不能访问的情况，试试下面的代码<br />
/sbin/iptables -A FORWARD -p tcp –syn -s 192.168.88.0/24 -j TCPMSS –set-mss 1356<br />
/etc/init.d/iptable save</p>
<p>在Windows中建立VPN连接，开始享受没有高墙的互连网吧！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fj18.com/post/245.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erlang学习&#8211;输出MD5值</title>
		<link>http://blog.fj18.com/post/243.html</link>
		<comments>http://blog.fj18.com/post/243.html#comments</comments>
		<pubDate>Sun, 21 Nov 2010 09:32:46 +0000</pubDate>
		<dc:creator>易水寒沙</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[md5]]></category>

		<guid isPermaLink="false">http://blog.fj18.com/?p=243</guid>
		<description><![CDATA[来源：http://www.ha24.cn/?p=197 Erlang输出的md5值是16位二进制的，就算转成list也和我们经常用的32位字符串不一样，这是转换代码： -module(md5). -compile(export_all). &#160; md5(S) -&#62; &#160;&#160; &#160;Md5_bin = erlang:md5(S), &#160;&#160; &#160;Md5_list = binary_to_list(Md5_bin), &#160;&#160; &#160;lists:flatten(list_to_hex(Md5_list)). &#160;&#160; &#160; list_to_hex(L) -&#62; &#160;&#160; &#160;lists:map(fun(X) -&#62; ini_to_hex(X) end, L). &#160;&#160; &#160; ini_to_hex(N) when N &#60; 256 -&#62; &#160;&#160; &#160;[hex(N div 16), hex(N rem 16)]. &#160;&#160; &#160; hex(N) when N &#60; 10 -&#62; &#160;&#160; &#160;$0 + N; hex(N) [...]]]></description>
			<content:encoded><![CDATA[<p>来源：<a href="http://www.ha24.cn/?p=197">http://www.ha24.cn/?p=197</a><br />
Erlang输出的md5值是16位二进制的，就算转成list也和我们经常用的32位字符串不一样，这是转换代码：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">-module(md5).</li>
<li>-compile(export_all).</li>
<li>&nbsp;</li>
<li>md5(S) -&gt;</li>
<li>&nbsp;&nbsp; &nbsp;Md5_bin = erlang:md5(S),</li>
<li>&nbsp;&nbsp; &nbsp;Md5_list = binary_to_list(Md5_bin),</li>
<li>&nbsp;&nbsp; &nbsp;lists:flatten(list_to_hex(Md5_list)).</li>
<li>&nbsp;&nbsp; &nbsp;</li>
<li>list_to_hex(L) -&gt;</li>
<li>&nbsp;&nbsp; &nbsp;lists:map(fun(X) -&gt; ini_to_hex(X) end, L).</li>
<li>&nbsp;&nbsp; &nbsp;</li>
<li>ini_to_hex(N) when N &lt; 256 -&gt;</li>
<li>&nbsp;&nbsp; &nbsp;[hex(N div 16), hex(N rem 16)].</li>
<li>&nbsp;&nbsp; &nbsp;</li>
<li>hex(N) when N &lt; 10 -&gt;</li>
<li>&nbsp;&nbsp; &nbsp;$0 + N;</li>
<li>hex(N) when N &gt;= 10, N &lt; 16 -&gt;</li>
<li>&nbsp;&nbsp; &nbsp;$a + (N - 10).</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.fj18.com/post/243.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>erlang学习&#8211;日期转为时间戳</title>
		<link>http://blog.fj18.com/post/239.html</link>
		<comments>http://blog.fj18.com/post/239.html#comments</comments>
		<pubDate>Sun, 21 Nov 2010 07:27:00 +0000</pubDate>
		<dc:creator>易水寒沙</dc:creator>
				<category><![CDATA[编程技术]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[timestamp]]></category>

		<guid isPermaLink="false">http://blog.fj18.com/?p=239</guid>
		<description><![CDATA[看《Erlang程序设计》也有1周多了，也该开始动手了，最近几天会慢慢贴一些小模块上来。 先一个日期转为时间戳（1970-01-01 00:00:00到指定日期的秒数） -module(timestamp). -export([datetime_to_timestamp/1,timestamp_to_datetime/1]). &#160; datetime_to_timestamp({Date, Time}) -&#62; &#160;&#160; &#160;Seconds1 = calendar:datetime_to_gregorian_seconds({Date, Time}), &#160;&#160; &#160;Seconds2 = calendar:datetime_to_gregorian_seconds({{1970,1,1}, {0,0,0}}), &#160;&#160; &#160;Seconds1 - Seconds2. &#160;&#160; &#160; timestamp_to_datetime(Timestamp) -&#62; &#160;&#160; &#160;Seconds1 = calendar:datetime_to_gregorian_seconds({{1970,1,1}, {0,0,0}}), &#160;&#160; &#160;Seconds2 = Timestamp + Seconds1, &#160;&#160; &#160;calendar:gregorian_seconds_to_datetime(Seconds2).]]></description>
			<content:encoded><![CDATA[<p>看《Erlang程序设计》也有1周多了，也该开始动手了，最近几天会慢慢贴一些小模块上来。<br />
先一个日期转为时间戳（1970-01-01 00:00:00到指定日期的秒数）</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">-module(timestamp).</li>
<li>-export([datetime_to_timestamp/1,timestamp_to_datetime/1]).</li>
<li>&nbsp;</li>
<li>datetime_to_timestamp({Date, Time}) -&gt;</li>
<li>&nbsp;&nbsp; &nbsp;Seconds1 = calendar:datetime_to_gregorian_seconds({Date, Time}),</li>
<li>&nbsp;&nbsp; &nbsp;Seconds2 = calendar:datetime_to_gregorian_seconds({{1970,1,1}, {0,0,0}}),</li>
<li>&nbsp;&nbsp; &nbsp;Seconds1 - Seconds2.</li>
<li>&nbsp;&nbsp; &nbsp;</li>
<li>timestamp_to_datetime(Timestamp) -&gt;</li>
<li>&nbsp;&nbsp; &nbsp;Seconds1 = calendar:datetime_to_gregorian_seconds({{1970,1,1}, {0,0,0}}),</li>
<li>&nbsp;&nbsp; &nbsp;Seconds2 = Timestamp + Seconds1,</li>
<li>&nbsp;&nbsp; &nbsp;calendar:gregorian_seconds_to_datetime(Seconds2).</li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.fj18.com/post/239.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

