<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>楚国之门</title>
 
 <link href="http://www.zhuyinghao.com" />
 <updated>2012-02-20T18:20:56-08:00</updated>
 <id>http://www.zhuyinghao.com</id>
 <author>
   <name>tony</name>
 </author>

 
 <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/loxeyer" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="loxeyer" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
   <title type="html">2012年的目标式生活</title>
   <link href="http://www.zhuyinghao.com/2012/02/15/timeline-moneyline-of-2012" />
   <updated>2012-02-15T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2012/02/15/timeline-moneyline-of-2012</id>
   <content type="html">&lt;h3&gt;什么是目标式生活&lt;/h3&gt;

&lt;p&gt;与生活有关的事情，都有个规划和目标，这是我个人理解的目标式生活，它的反义应该是随性生活，比如吉普赛民族的流浪与奔放，他们是快乐随性的。&lt;/p&gt;

&lt;p&gt;目标式生活让我充实，也让我快乐。&lt;/p&gt;

&lt;p&gt;在爱情里应该恰恰相反，爱情应该跟着心走，爱就去努力的爱，散就要散的彻底。因为爱情是无法控制的，并不是付出了就会有回报，无法定制目标。这一点约翰纳什在《美丽心灵》已经证明过。&lt;/p&gt;

&lt;p&gt;一直对自己的工资没有概念，挣多少花多少，典型的北漂月光族，很随性。或许在我的内心里觉得理财是女人做的事，因为聪明的男人会把钱交给女人，然而在可以为我理财的女人到来之前，自己还是要去做一些理财的事情。&lt;/p&gt;

&lt;h3&gt;工资分配&lt;/h3&gt;

&lt;p&gt;把每个月工资分成5份，30%,10%,10%,15%,35%。&lt;/p&gt;

&lt;h3&gt;30%-衣食住行&lt;/h3&gt;

&lt;p&gt;房租，交通费，水电气网费300。&lt;/p&gt;

&lt;p&gt;一日三餐(养成晚上做饭的习惯，通过网络多学些菜的做法)&lt;/p&gt;

&lt;p&gt;衣服，(近30岁的男人不再适合买jackjones,esprit,zara之类休闲装，个人喜欢tonywear)&lt;/p&gt;

&lt;h3&gt;10%交友&lt;/h3&gt;

&lt;p&gt;电话费，每个月去juicy club两次，多认识一下国外的朋友。每个月可以请客两次。请有思想的人，更有钱的人，需要感激的人。&lt;/p&gt;

&lt;p&gt;每个月，坚持请客，一年下来，朋友圈应该已经建立，声望、影响力、附加价值的也会得到提升，为今后创业做准备。&lt;/p&gt;

&lt;h3&gt;10%学习&lt;/h3&gt;

&lt;p&gt;2011年买的书还没有读完，书就基本不用买了，但读完每本书后，把书的内容变成自己的语言分享给朋友们，提高亲和力和信誉度。&lt;/p&gt;

&lt;p&gt;参加英语培训班和8月份之前的托福考试，其余的用来参加经济/金融培训班，葡萄牙语培训班等。&lt;/p&gt;

&lt;p&gt;等收入高了，参加管理培训，即可以结交志同道合的朋友，还可以学到平常自学难学到的知识。&lt;/p&gt;

&lt;h3&gt;15%旅游&lt;/h3&gt;

&lt;p&gt;一年奖励自己旅游至少一次。生命的成长来自不断地历练。参加那种自由行的旅游，不跟团。&lt;/p&gt;

&lt;p&gt;十一纽约一周游需要不少的money，需要积累十个月，如果资金充足再看场NBA的比赛，还可以去尼亚加拉瀑布，哈佛，耶鲁，新泽西，费城等。&lt;/p&gt;

&lt;p&gt;纽约行之前需要拿到托福的分数，来提升自信心，升级驾照，在美国租辆车来自驾，感受美国的道路，否则会失去一些旅游的意义。&lt;/p&gt;

&lt;p&gt;护照，驾照，签证，全球通电话卡等要提前准备。&lt;/p&gt;

&lt;p&gt;寻2-3位去旅游的伙伴。&lt;/p&gt;

&lt;h3&gt;35%&lt;/h3&gt;

&lt;p&gt;余下的钱是给父母或者用来投资的，记得几年前给的老妈，前一段还放着现金，一分未动，现在已经贬值太多了。等他们张口时再给他们吧，35%的钱会全部用来投资，投资什么，除了股票，大家可以给我推荐一下。&lt;/p&gt;

&lt;p&gt;这些还可用来买车，结婚生子等。&lt;/p&gt;

&lt;h3&gt;引用两段网络用语&lt;/h3&gt;

&lt;p&gt;人生是可以设计的，生涯是可以规划的，幸福是可以准备的。现在就可以开始。在你穷的时候，要少在家里，多在外面。在你富有的时候，要多在家里，少在外面。这就是生活的艺术。穷得时候，钱要花给别人，富的时候，钱要花给自己。很多人，都做颠倒了。&lt;/p&gt;

&lt;p&gt;少在外面吃饭，要吃就请客，要请，就请比自己更有梦想的、更有思想、更努力的人。&lt;/p&gt;
</content>
   
   <category term="life" />
   
 </entry>
 
 <entry>
   <title type="html">今天你节能减排了吗？</title>
   <link href="http://www.zhuyinghao.com/2012/02/03/energy-saving" />
   <updated>2012-02-03T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2012/02/03/energy-saving</id>
   <content type="html">&lt;h3&gt;引言：&lt;/h3&gt;

&lt;p&gt;2011年12月4日晚，美国驻华使馆发布的北京PM2.5监测数据再次爆表，超过了最高污染指数500，此时的PM2.5浓度522，也因为“超出了该污染物的值域”，在美国环保局网站上无法转换为空气质量指数。2010年11月21日，美驻华使馆的PM2.5监测数据曾爆表一次，当时使馆在推特上描述其为 “Crazybad”。&lt;/p&gt;

&lt;h3&gt;爆表&lt;/h3&gt;

&lt;p&gt;空气污染严重，测试PM仪器达到最高值，已经无法测出空气质量的实际值。&lt;/p&gt;

&lt;h3&gt;PM2.5 VS PM10&lt;/h3&gt;

&lt;p&gt;PM为Particulate matter的英文缩写，即颗粒物。&lt;/p&gt;

&lt;p&gt;PM2.5是指大气中直径小于或等于2.5微米的颗粒物，也称为可入肺颗粒物。它的直径还不到人的头发丝粗细的1/20。&lt;/p&gt;

&lt;p&gt;PM10  通常把粒径在10微米以下的颗粒物称为PM10，又称为可吸入颗粒物或飘尘。&lt;/p&gt;

&lt;p&gt;可入肺颗粒物与可吸入颗粒物是明显区别的。&lt;/p&gt;

&lt;p&gt;在北京的同学们，小心你的肺哦。&lt;/p&gt;

&lt;h3&gt;技术落后&lt;/h3&gt;

&lt;p&gt;政府号称设备技术无法监测PM2.5，环保部门像地震局一样碌碌无为。&lt;/p&gt;

&lt;h3&gt;我们能做到的&lt;/h3&gt;

&lt;p&gt;节约照明,使用节能灯代替白炽灯。&lt;/p&gt;

&lt;p&gt;节约电能,不用电器时，关闭电源，夏天尽量使用风扇，除非非常炎热，用空调时也不要温度调到最低。&lt;/p&gt;

&lt;p&gt;节约水资源和约资源二者都可以循环再利用。&lt;/p&gt;

&lt;p&gt;尽量乘坐公共汽车或者地铁上下班。&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/saving.jpg" alt="环保节能" /&gt;&lt;/p&gt;
</content>
   
   <category term="life" />
   
 </entry>
 
 <entry>
   <title type="html">我眼中的新疆</title>
   <link href="http://www.zhuyinghao.com/2012/01/09/about-xinjiang" />
   <updated>2012-01-09T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2012/01/09/about-xinjiang</id>
   <content type="html">&lt;p&gt;国外新闻媒体充斥着大量的藏独和新疆动乱的信息，而国内的部分人对新疆和西藏有种莫名的抵抗和心理的隔阂，最根本的是占领了别人的家园的原因。这也是大家聊天时不愿讨论的一个话题。&lt;/p&gt;

&lt;p&gt;每次跟朋友聊起这些，只有倾听，最基本的常识都不具备，实在汗颜。&lt;/p&gt;

&lt;p&gt;西藏，任何一位中国青年都应该去的地方，吸引着无数的年轻的向往。&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="go"&gt;住在布达拉宫，&lt;/span&gt;

&lt;span class="go"&gt;我是雪域最大的王。&lt;/span&gt;

&lt;span class="go"&gt;流浪在拉萨街头，&lt;/span&gt;

&lt;span class="go"&gt;我是世间最美的情郎。&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;从加措的诗中，可以读出达赖六世的的情与西藏的美，他的生平和南唐李煜颇有几分相似，西藏从清朝就是一个附属国。相比西藏，新疆的文化略显羞涩。&lt;/p&gt;

&lt;p&gt;俗话说：南疆人文，北疆山水。&lt;/p&gt;

&lt;p&gt;不仅让人怀疑，导致南疆多了一些人文是因为地理原因，南疆离西藏更近一些？&lt;/p&gt;

&lt;p&gt;南北疆的分界因天山而得名，天山天池的景观感觉上可以和美国黄石公园的火山口一样具有吸引力。如果夏天去天山，能够在一天内感受到春夏秋冬的温度，也极容易看到六月飘雪。&lt;/p&gt;

&lt;p&gt;南疆有一个中国最西边的城市，喀什。往西就是吉尔吉斯坦和巴基斯坦，阿富汗，唯一在喀什的朋友德臣经常说中国与巴基斯坦的关系特别要好，我对此也坚定的相信。德臣从毕业后，参加了支援新疆的大军，从农三师做志愿，后来转到了当地做档案管理的工作，远离亲人和朋友的孤独是需要强大的信仰来支撑，他的所做所为，绝对称得上优秀党员的称号。&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/xinjiang.jpg" alt="新疆地图" /&gt;&lt;/p&gt;

&lt;p&gt;新疆有一个特殊的组织，兵团。&lt;/p&gt;

&lt;p&gt;兵团是当时解放新疆的部队就地转业，屯垦戍边，相当于一个省，兵团下面有14个师，师相当于地级市，师下面有团场，团场相当于县，团场下面有连队。&lt;/p&gt;

&lt;p&gt;兵团的称呼按部队的讲，有师长政委，司令员，团长，连长什么的，兵团是党政军企合一，兵团是省级，师长是厅级。&lt;/p&gt;

&lt;p&gt;每个师都有自己的公检法系统，有自己的武装部和武器库，&lt;/p&gt;

&lt;p&gt;兵团和地方行政会在一个地区，看起来，管理会很混乱的。等级越多，越容易导致腐败。个人倾向扁平管理。&lt;/p&gt;

&lt;p&gt;据说有些师和当地的党委政府有矛盾的，不过都是内部矛盾。&lt;/p&gt;

&lt;p&gt;国务院给各省下文的时候是各省市自治区生产建设兵团，其它几个自治区都有自己的兵团。&lt;/p&gt;

&lt;p&gt;有位来自新疆的小姑娘说：&lt;/p&gt;

&lt;p&gt;我们团是按部队的称谓走，我们最大的是司令部，其次是十二个师农业师和两个工业师，一个师有十个团，一个团有十个连。我们最大的领导是我们兵团司令部第一司令张春贤，有兵权的是我们的华士飞将军。&lt;/p&gt;

&lt;p&gt;崇拜和敬仰之情已经流露在字里行间。&lt;/p&gt;

&lt;p&gt;以上仅代表个人观点，若有不实请通知作者以修正。&lt;/p&gt;
</content>
   
   <category term="life" />
   
 </entry>
 
 <entry>
   <title type="html">晒一下vi的插件</title>
   <link href="http://www.zhuyinghao.com/2012/01/04/vi-plugin" />
   <updated>2012-01-04T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2012/01/04/vi-plugin</id>
   <content type="html">&lt;h3&gt;我的vi插件：&lt;/h3&gt;

&lt;p&gt;注释，项目管理，函数断点，自动完成，日历等等&lt;/p&gt;

&lt;p&gt;/plugin&lt;/p&gt;

&lt;p&gt;  acp.vim  calendar.vim  comments.vim  exec_menuitem.vim  fs_menu.vim  neocomplcache.vim  NERD_tree.vim  taglist.vim  zencoding.vim&lt;/p&gt;

&lt;p&gt;/autoload&lt;/p&gt;

&lt;p&gt;  acp.vim  zencoding.vim&lt;/p&gt;

&lt;p&gt;.vimrc的设置如下&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="go"&gt;nnoremap &amp;lt;silent&amp;gt; &amp;lt;F7&amp;gt; :NERDTreeToggle&amp;lt;CR&amp;gt;&lt;/span&gt;
&lt;span class="go"&gt;nnoremap &amp;lt;silent&amp;gt; &amp;lt;F8&amp;gt; :TlistToggle&amp;lt;CR&amp;gt;&lt;/span&gt;
&lt;span class="go"&gt;let Tlist_Show_One_File = 1&lt;/span&gt;
&lt;span class="go"&gt;let Tlist_Exit_OnlyWindow = 1&lt;/span&gt;
&lt;span class="go"&gt;let Tlist_Use_Right_Window = 1&lt;/span&gt;

&lt;span class="go"&gt;nnoremap &amp;lt;silent&amp;gt; &amp;lt;F9&amp;gt; :Calendar&amp;lt;CR&amp;gt;&lt;/span&gt;
&lt;span class="go"&gt;let g:calendar_diary=&amp;quot;/data/diary/&amp;quot;&lt;/span&gt;
&lt;span class="go"&gt;syntax on&lt;/span&gt;
&lt;span class="go"&gt;set nu&lt;/span&gt;
&lt;span class="go"&gt;set tabstop=4&lt;/span&gt;
&lt;span class="go"&gt;set softtabstop=4&lt;/span&gt;
&lt;span class="go"&gt;set shiftwidth=4&lt;/span&gt;
&lt;span class="go"&gt;set cindent&lt;/span&gt;

&lt;span class="go"&gt;autocmd FileType python set omnifunc=pythoncomplete#Complete&lt;/span&gt;
&lt;span class="go"&gt;autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS&lt;/span&gt;
&lt;span class="go"&gt;autocmd FileType html set omnifunc=htmlcomplete#CompleteTags&lt;/span&gt;
&lt;span class="go"&gt;autocmd FileType css set omnifunc=csscomplete#CompleteCSS&lt;/span&gt;
&lt;span class="go"&gt;autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags&lt;/span&gt;
&lt;span class="go"&gt;autocmd FileType php set omnifunc=phpcomplete#CompletePHP&lt;/span&gt;
&lt;span class="go"&gt;autocmd FileType c set omnifunc=ccomplete#Complete&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;



</content>
   
   <category term="tech" />
   
 </entry>
 
 <entry>
   <title type="html">php几点注意事项</title>
   <link href="http://www.zhuyinghao.com/2012/01/04/about-php" />
   <updated>2012-01-04T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2012/01/04/about-php</id>
   <content type="html">&lt;h3&gt;为什么要谨慎使用PHP中的常量&lt;/h3&gt;

&lt;p&gt;Zend Framework文档中写道:&lt;/p&gt;

&lt;p&gt;常量包含数字字母字符和下划线，数字允许作为常量名。 常量名的所有字母必须大写。&lt;/p&gt;

&lt;p&gt;'''类常量必须通过 "const" 定义为类的成员，强烈不鼓励使用 "define" 定义的全局常量。'''&lt;/p&gt;

&lt;p&gt;作为PHP的官方框架，为什么会有这样的要求？&lt;/p&gt;

&lt;p&gt;让我们一起分析一下吧&lt;/p&gt;

&lt;h4&gt;1，define容易产生意想不到的错误&lt;/h4&gt;

&lt;p&gt;PHP常量是定义后就不能修改和再次赋值。但是如果再次赋值会怎么样？&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="go"&gt;  &amp;lt;?php&lt;/span&gt;
&lt;span class="go"&gt;  define(&amp;#39;C&amp;#39;, 12345);&lt;/span&gt;
&lt;span class="go"&gt;  define(&amp;#39;C&amp;#39;, 123);&lt;/span&gt;
&lt;span class="go"&gt;  ?&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;这段代码会报个notice错误。带来的后果是：在你定义之前，其它人要是定义了同名的常量，你可能真的不知道里面究竟是什么值。&lt;/p&gt;

&lt;h4&gt;2、如何判断PHP常量是否被定义？判断方法易写错&lt;/h4&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="go"&gt;  &amp;lt;?php&lt;/span&gt;
&lt;span class="go"&gt;  define(&amp;#39;C&amp;#39;, 12345);&lt;/span&gt;
&lt;span class="go"&gt;  // 错误方法1，经常犯&lt;/span&gt;
&lt;span class="go"&gt;  if (isset(C)){……}&lt;/span&gt;
&lt;span class="go"&gt;  // 错误方法2，经常犯&lt;/span&gt;
&lt;span class="go"&gt; if (defined(C)){……}&lt;/span&gt;
&lt;span class="go"&gt;  // 正确方法&lt;/span&gt;
&lt;span class="go"&gt;  if (defined(&amp;#39;C&amp;#39;)){……}&lt;/span&gt;
&lt;span class="go"&gt;  ?&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h4&gt;3、执行效率低&lt;/h4&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="go"&gt;  &amp;lt;?php&lt;/span&gt;
&lt;span class="go"&gt;    define(&amp;#39;FORUM_THEME&amp;#39;,$forum[&amp;#39;theme&amp;#39;]); &lt;/span&gt;
&lt;span class="go"&gt;    $this-&amp;gt;display(&amp;#39;/&amp;#39;.FORUM_THEME.&amp;#39;@Public:login&amp;#39;);  &lt;/span&gt;
&lt;span class="go"&gt;    //  系统会从整个执行流程中查找FORUM_THEME&lt;/span&gt;
&lt;span class="go"&gt;  ?&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;因为php处理常量的时候要进行多次查找，所以效率低。&lt;/p&gt;

&lt;p&gt;总结：PHP常量的问题，在于PHP处理常量的方法过于宽松导致的，如果能够严格一些，就会避免很多的问题。在实际过程，能用变量就不要用常量，因为变量的效率高使用更加方便。&lt;/p&gt;

&lt;p&gt;因此&lt;/p&gt;

&lt;p&gt;但若非要使用常量或者类变量，可使用以下方法：&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="go"&gt;  &amp;lt;?php&lt;/span&gt;
&lt;span class="go"&gt;  class foo {&lt;/span&gt;
&lt;span class="go"&gt;    const WEBSITE = &amp;quot;www.zhuyinghao.com&amp;quot;;&lt;/span&gt;
&lt;span class="go"&gt;    protected $_forum_theme;&lt;/span&gt;
&lt;span class="go"&gt;    function name()&lt;/span&gt;
&lt;span class="go"&gt;    {&lt;/span&gt;
&lt;span class="go"&gt;        echo WEBSITE;&lt;/span&gt;
&lt;span class="go"&gt;        $this-&amp;gt;_forum_theme = $forum[&amp;#39;theme&amp;#39;];&lt;/span&gt;
&lt;span class="go"&gt;    }&lt;/span&gt;
&lt;span class="go"&gt;    function displace() &lt;/span&gt;
&lt;span class="go"&gt;    {&lt;/span&gt;
&lt;span class="go"&gt;       echo $this-&amp;gt;_forum_theme;&lt;/span&gt;
&lt;span class="go"&gt;    }&lt;/span&gt;
&lt;span class="go"&gt;  }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;类名和函数名相同时的作用&lt;/h3&gt;

&lt;p&gt;在PHP4中，类的构造函数需要和类名相同。&lt;/p&gt;

&lt;p&gt;子类的构造函数名与子类名相同&lt;/p&gt;

&lt;p&gt;在子类里父类的构造函数不会自动执行。&lt;/p&gt;

&lt;p&gt;要在子类里执行父类的构造函数，必须执行类似以下语句：&lt;/p&gt;

&lt;p&gt;$this-&gt;[父类的构造函数名()]&lt;/p&gt;

&lt;p&gt;在 PHP5.0 以上版本里，统一使用construct()作为构造函数，但仍兼容了 4.0 版本的构造函数的定义规则。如果同时定义了4.0的构造函数和 construct()函数，则construct() 函数优先。&lt;/p&gt;

&lt;h3&gt;用PHP EOL来替换/r/n进行换行&lt;/h3&gt;

&lt;p&gt;写程序时会经常用到换行，用PHP内置常量PHP_EOL来进行换行。&lt;/p&gt;

&lt;p&gt;一个小小的换行，在不同的平台有着不同的实现。&lt;/p&gt;

&lt;p&gt;在unix世界换行就用\n来代替，但是windows为了体现他的不同，就用\r\n，更有意思的是在mac中用\r&lt;/p&gt;

&lt;p&gt;因此unix系列用 \n&lt;/p&gt;

&lt;p&gt;windows系列用 \r\n&lt;/p&gt;

&lt;p&gt;mac用 \r&lt;/p&gt;

&lt;p&gt;因此系统会根据平台系统的不同，转换成不同的换行。&lt;/p&gt;

&lt;p&gt;如果要在浏览器中换行，就要使用&lt;nowiki&gt;&lt;br&gt;&lt;/nowiki&gt;进行换行&lt;/p&gt;
</content>
   
   <category term="tech" />
   
 </entry>
 
 <entry>
   <title type="html">数据底层架构（一）</title>
   <link href="http://www.zhuyinghao.com/2011/12/30/db-cache" />
   <updated>2011-12-30T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/30/db-cache</id>
   <content type="html">&lt;p&gt;随着数据的快速增长，分表，分库，memcache,redis,mongodb,hadoop,bigtable等，各种解决方案呼之欲出。&lt;/p&gt;

&lt;p&gt;经过测试，在mysql中，无论如何加索引，数据超过百w时，查询起来耗时很明显。&lt;/p&gt;

&lt;p&gt;因此mysql分表分库+memcache+redis也不失是一个完美解决方案。&lt;/p&gt;

&lt;p&gt;由于redis不支持复杂查询，redis的读取性能还是赶不上mem这些劣势，因此才需要一些搭挡。&lt;/p&gt;

&lt;h3&gt;流程&lt;/h3&gt;

&lt;p&gt;从CRUD看底层架构。&lt;/p&gt;

&lt;h4&gt;插入数据&lt;/h4&gt;

&lt;p&gt;一般情况下，对用户是没有必要分表的，用户的文章或者微博才分表，毕竟用户表和微博表是无法比拟，不一个等级的。&lt;/p&gt;

&lt;p&gt;插入时，任何表，mysql只存储索引字段，其它数据存储在redis上。&lt;/p&gt;

&lt;p&gt;文章表可按一定规则进行静态分表，比如按用户id分100张表，每个用户发的文章都会路由到同一张表中。&lt;/p&gt;

&lt;p&gt;数据总数需要一个单独的字段存储在redis中，每个用户都有一个key进行存储文章总数。&lt;/p&gt;

&lt;p&gt;有时总数数据会与实际总条数有所不同，因此需要定期执行mysql count进行更新redis中的总数。&lt;/p&gt;

&lt;p&gt;下面是分表路由，把uid对100取余:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="go"&gt;protected function getTableName($name, $id=null) {&lt;/span&gt;
&lt;span class="go"&gt;   $tableName = self::SYS_DB_PREFIX . $name;&lt;/span&gt;
&lt;span class="go"&gt;   if (is_numeric($id) &amp;amp;&amp;amp; $id &amp;gt; 0)&lt;/span&gt;
&lt;span class="go"&gt;       return $tableName . &amp;#39;_&amp;#39; . ($id % $this-&amp;gt;tableNum);&lt;/span&gt;
&lt;span class="go"&gt;} &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h4&gt;查询数据&lt;/h4&gt;

&lt;p&gt;每第一次数据查询时，根据mysql中的索引从redis查询，需要将查询结果存储在memcache中，下次查询直接从memcache获取。&lt;/p&gt;

&lt;p&gt;查询某人文章时，直接从一张表中进行limit查询。&lt;/p&gt;

&lt;p&gt;关于动态页面查询，比如登录后的豆瓣首页，会有一些动态好友的更新信息。这些信息是存储在一张临时表中的，只保存10天的更新。&lt;/p&gt;

&lt;h4&gt;删除数据&lt;/h4&gt;

&lt;p&gt;整个系统无任何实际操作，只进行字段状态修改。&lt;/p&gt;

&lt;h4&gt;修改数据&lt;/h4&gt;

&lt;p&gt;修改数据时，需要更新对应的memcache。&lt;/p&gt;

&lt;h3&gt;分库&lt;/h3&gt;

&lt;p&gt;当系统应用更加复杂时，一台数据库服务器的压力是很大的，可根据系统的业务流进行分库，比如文章一个独立库，评论一个独立库等。&lt;/p&gt;

&lt;h3&gt;更复杂的搜索&lt;/h3&gt;

&lt;p&gt;比如招聘网站中的，按地点，按行业，按规模等更多条件查询时，就需要一定的搜索系统来完成，这里不做更多搜索细节讨论。&lt;/p&gt;
</content>
   
   <category term="tech" />
   
 </entry>
 
 <entry>
   <title type="html">圣诞节的神学</title>
   <link href="http://www.zhuyinghao.com/2011/12/24/xmas-to-theology" />
   <updated>2011-12-24T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/24/xmas-to-theology</id>
   <content type="html">&lt;p&gt;新东方老师王强认为，神学可以让人们理解超越人性的东西，获得一种上帝般的眼界，达到一种超尘脱俗的境界，也会更多了解宇宙的神秘。&lt;/p&gt;

&lt;p&gt;明天是2011年12月25日，在NBA停摆半年即将打响的同时，聊聊耶稣及相关的话题：&lt;/p&gt;

&lt;h3&gt;圣诞节是耶稣出生的日子&lt;/h3&gt;

&lt;p&gt;耶稣是名，基督是职称和头衔。&lt;/p&gt;

&lt;p&gt;耶稣是以色列犹太人（二战时的屠杀应该与此是有些关系的)，根据百科记载：耶稣在各个教派中的地位和认识是大相径庭的。&lt;/p&gt;

&lt;h4&gt;圣经中的耶稣生平&lt;/h4&gt;

&lt;p&gt;基督教认为耶稣就是神，要尊重他，要听他的指示。（也难怪早期的欧洲利用这点进行统治）&lt;/p&gt;

&lt;p&gt;教课书是，《圣经》即bible，里面有很多搞笑的段子，比如：神说要有光，就有了光。&lt;/p&gt;

&lt;h4&gt;古兰经中的耶稣&lt;/h4&gt;

&lt;p&gt;作为伊斯兰教中的教课书《古兰经》，还是承认耶稣存在和具有一定能力的，它认为耶稣是伊斯兰教六大先知之一，仅次于至圣先知、封印使者穆罕默德。承认他无父出生，肉身升天，但不承认他是真主的独生子，也不认为他曾经死而复活。（把耶稣当老二，也难怪十字军东征打了那么年）。&lt;/p&gt;

&lt;h4&gt;塔木德中的耶稣&lt;/h4&gt;

&lt;p&gt;塔木德是犹太人至死研读的书，是犹太教的必修课，它对耶稣教这样描述的：&lt;/p&gt;

&lt;p&gt;耶稣在埃及学会了魔法。他成为了欺骗并使以色列迷失的魔法师。他取笑智者们的话，污染上了异端，并因此被逐出教会。他称他自己即是神也是人子，并说他会升天堂。他说天国近了，还吸引了5名门徒。他在罗多成为骗子和叛教教师。&lt;/p&gt;

&lt;p&gt;犹太人把耶稣当作叛徒，（二战时的屠杀的原因也不言而喻了，希特勒是基督教徒)，说起叛徒二字，突然想起国际共产主义和我党的关系。&lt;/p&gt;

&lt;h3&gt;耶稣的贡献&lt;/h3&gt;

&lt;p&gt;耶稣斥责犹太教的民族偏见，他称赞一个因扶贫济困而被犹太教徒歧视的撒马利亚人。他认为人的生命比全世界的财富更宝贵，主张信徒之间要彼此相爱。说白了，主要是教人学会爱。&lt;/p&gt;

&lt;p&gt;尤其对尊严和人权，民主和政治，教育和慈善，科技和经济，家庭和道德方面都是有巨大贡献的。从人类历史来看，基督教对于道德的提升，远超过其他一切力量。如果耶稣没有来，十诫的影响只停留在犹太人中；北欧人仍然是海盗；亚洲、非洲、美洲的野蛮民族，没有人敢去接触。&lt;/p&gt;

&lt;h3&gt;撒旦教&lt;/h3&gt;

&lt;p&gt;撒旦誓与耶稣为敌，因此撒旦教也被基础教称为邪教。撒旦教也有多种教派，哲学教派还是具有一定研究价值的。&lt;/p&gt;

&lt;p&gt;据说马克思是信撒旦教的。&lt;/p&gt;

&lt;h4&gt;十一诫&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;除非你被询问,否则不要发表意见或给予建议. (自觉)&lt;/li&gt;
&lt;li&gt;除非你确定别人想听,否则不要对别人诉苦. (尊重)&lt;/li&gt;
&lt;li&gt;在别人的地盘中,要显示对他的尊敬,否则别去那里.(尊重)&lt;/li&gt;
&lt;li&gt;如果一个客人在你的地盘惹恼了你,不要仁慈,要残忍地对待他.(原则)&lt;/li&gt;
&lt;li&gt;不要与别人发生性行为,除非你得到了发生关系的信号. (自律)&lt;/li&gt;
&lt;li&gt;不要拿不属于你的东西,除非这对其他人是种负担,且他们哭求着解脱.(计谋)&lt;/li&gt;
&lt;li&gt;答谢能让你成功的达成你的欲望的神奇能力.如果你在获得他赐与的成功后,否定这神奇的能力,你会损失所有你获得的东西. (感恩)&lt;/li&gt;
&lt;li&gt;不要抱怨不关你事的事.(自觉)&lt;/li&gt;
&lt;li&gt;不要伤害小孩. (仁慈)&lt;/li&gt;
&lt;li&gt;不要杀害不是人类的动物,除非你被它们攻击,或你是为了得到食物. (仁慈)&lt;/li&gt;
&lt;li&gt;当走在公共的地方,不要打扰别人. 如果某人打扰了你, 要求他停止. 如果他不停止,就揍扁他.(原则)&lt;/li&gt;
&lt;/ol&gt;


&lt;h4&gt;信念&lt;/h4&gt;

&lt;p&gt;1.没有神，人就是神
2.神不过是世界上的一般能源，人可以取为己用
3.神就是我自己&lt;/p&gt;

&lt;h3&gt;总结&lt;/h3&gt;

&lt;p&gt;不信教，但一定要去了解各种教派的教义和主张，这样才能领悟到像王强老师说的超凡脱俗。&lt;/p&gt;

&lt;p&gt;参考：&lt;/p&gt;

&lt;p&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E5%9C%A3%E8%AF%9E%E8%8A%82"&gt;http://zh.wikipedia.org/wiki/%E5%9C%A3%E8%AF%9E%E8%8A%82&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E8%80%B6%E9%85%A5"&gt;http://zh.wikipedia.org/wiki/%E8%80%B6%E9%85%A5&lt;/a&gt;&lt;/p&gt;
</content>
   
   <category term="thinking" />
   
 </entry>
 
 <entry>
   <title type="html">英语词源</title>
   <link href="http://www.zhuyinghao.com/2011/12/23/etymonline" />
   <updated>2011-12-23T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/23/etymonline</id>
   <content type="html">&lt;p&gt;英语中的husband是household引申出来的，意思是提供住房子的人，现在的女人要结婚就要房子估计也来源于此。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.etymonline.com"&gt;http://www.etymonline.com&lt;/a&gt;&lt;/p&gt;
</content>
   
   <category term="english" />
   
 </entry>
 
 <entry>
   <title type="html">别对我撒谎</title>
   <link href="http://www.zhuyinghao.com/2011/12/22/lie-to-me" />
   <updated>2011-12-22T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/22/lie-to-me</id>
   <content type="html">&lt;p&gt;无须测谎仪，无须确凿证据，甚至无须声音，多数情况下只凭细微的表情变化便可判断的一个人说谎与否，这便是lightman 博士的高超本领。&lt;/p&gt;

&lt;p&gt;lightman博士供职于一家私人机构，该机构专事微表情的研究，对谎言的判定具有绝对的权威性。当FBI、警察或者民间机构遇到悬而未决的问题之时，便是莱特曼博士及其团队大展身手的好时候。他们凭借丰富的经验和谨慎的作风戳穿一个又一个谎言，将事实真相还原。在他们面前，任何说谎者都无处遁形。&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Truth or happiness, never both&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;故事是根据&lt;a href="http://en.wikipedia.org/wiki/Paul_Ekman"&gt;Paul Ekman&lt;/a&gt;博士的真人真事改编而成，与之相关著作有&lt;a href="http://product.dangdang.com/product.aspx?product_id=20124883&amp;amp;ref=customer-0-B"&gt;《情绪的解析》&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;据Ekman统计,人在10分钟内，会平均说三次谎言,前提是问对问题。&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/lie2me/p541284540.jpg" alt="主角" /&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;重要的不是撒谎，而是为什么要撒谎&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;几种基本表情&lt;/h3&gt;

&lt;p&gt;&lt;img src="/images/lie2me/p541293508.jpg" alt="face" /&gt;
&lt;img src="/images/lie2me/p541293134.jpg" alt="face" /&gt;
&lt;img src="/images/lie2me/p541290633.jpg" alt="face" /&gt;
&lt;img src="/images/lie2me/p541293757.jpg" alt="face" /&gt;
&lt;img src="/images/lie2me/p541293883.jpg" alt="face" /&gt;
&lt;img src="/images/lie2me/p541294241.jpg" alt="face" /&gt;
&lt;img src="/images/lie2me/p541294345.jpg" alt="face" /&gt;&lt;/p&gt;

&lt;h3&gt;如何看出是否撒谎&lt;/h3&gt;

&lt;p&gt;1.越受欢迎的孩子，越会说谎。源于一个受欢迎女孩被替考参加SAT的故事。&lt;/p&gt;

&lt;p&gt;2.对问题的生硬重复是典型的撒谎。多处情节都有所提及。&lt;/p&gt;

&lt;p&gt;3.男人想要隐瞒事情的时候，鼻子会痒。男性鼻子下方有海绵体，摸鼻子代表想要掩饰某些内容。(作为一个男人，我表示怀疑)&lt;/p&gt;

&lt;p&gt;4.说谎者很容易编出在一天内干的什么，但很难倒序的给讲出来。（同事表示非常赞同）&lt;/p&gt;

&lt;p&gt;5.撒谎时会摸脖子。（skeptical）&lt;/p&gt;
</content>
   
   <category term="movie" />
   
 </entry>
 
 <entry>
   <title type="html">高情商者的十大习惯(译)</title>
   <link href="http://www.zhuyinghao.com/2011/12/16/ten-habits-of-high-eq" />
   <updated>2011-12-16T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/16/ten-habits-of-high-eq</id>
   <content type="html">&lt;h4&gt;1. Label their feelings, rather than labelling people or situations.&lt;/h4&gt;

&lt;p&gt;"I feel impatient." vs. "This is ridiculous"&lt;/p&gt;

&lt;p&gt;"I feel hurt and bitter". vs. "You are an insensitive jerk."&lt;/p&gt;

&lt;p&gt;"I feel afraid." vs. "You are driving like a idiot."&lt;/p&gt;

&lt;p&gt;说出对他人的感受要比指责别人的身份地位要好&lt;/p&gt;

&lt;p&gt;我等不及了 vs 这太搞笑了&lt;/p&gt;

&lt;p&gt;我感觉很受伤和痛苦 vs 你是一个超级大笨蛋&lt;/p&gt;

&lt;p&gt;我有点害怕 vs 你就是一个大傻瓜&lt;/p&gt;

&lt;h4&gt;2. Distinguish between thoughts and feelings.&lt;/h4&gt;

&lt;p&gt;Thoughts: I feel like…&amp;amp; I feel as if…. &amp;amp; I feel that&lt;/p&gt;

&lt;p&gt;Feelings: I feel: (feeling word)&lt;/p&gt;

&lt;p&gt;能够区分想法和感受&lt;/p&gt;

&lt;p&gt;想法：我觉得好像...，我感觉好像...，我感觉像...&lt;/p&gt;

&lt;p&gt;感受：我感到...&lt;/p&gt;

&lt;h4&gt;3. Take responsibility for their feelings.&lt;/h4&gt;

&lt;p&gt;"I feel jealous." vs. "You are making me jealous"'&lt;/p&gt;

&lt;p&gt;对别人的感受要有责任感，不要太直接&lt;/p&gt;

&lt;p&gt;我有点吃醋 vs 你让我吃醋了&lt;/p&gt;

&lt;h4&gt;4. Use their feelings to help them make decisions.&lt;/h4&gt;

&lt;p&gt;"How will I feel if I do this?" "How will I feel if I don't"&lt;/p&gt;

&lt;p&gt;用别人的感受帮他们做决定&lt;/p&gt;

&lt;p&gt;如果我做了，能怎么样呢 vs 如果我不做，结论又如何呢？&lt;/p&gt;

&lt;h4&gt;5. Show respect for other people's feeling.&lt;/h4&gt;

&lt;p&gt;They ask "How will you feel if I do this?" "How Will you feel if I don't."&lt;/p&gt;

&lt;p&gt;尊重他人的感受&lt;/p&gt;

&lt;p&gt;他们问：“如果我做了，你感觉会怎么样？” vs “如果我不做，你又能怎么样？”&lt;/p&gt;

&lt;h4&gt;6. Feel energized, not angry.&lt;/h4&gt;

&lt;p&gt;They use what others call "anger" to help them feel energized to take productive action.&lt;/p&gt;

&lt;p&gt;保持青春活力，不要经常生气&lt;/p&gt;

&lt;p&gt;他们用愤怒的方式帮助别人感受活力，以此带动生产。&lt;/p&gt;

&lt;h4&gt;7. Validate other people's feelings.&lt;/h4&gt;

&lt;p&gt;They show empathy, understanding, and acceptance of other people's feelings.&lt;/p&gt;

&lt;p&gt;会验证别人的感受&lt;/p&gt;

&lt;p&gt;要会换位思考，理解和接受他人的感受&lt;/p&gt;

&lt;h4&gt;8. Practice getting a positive value from their negative emotions.&lt;/h4&gt;

&lt;p&gt;They ask themselves: "How do I feel?" and "What would help me feel better?"&lt;/p&gt;

&lt;p&gt;They ask others "How do you feel?" and "What would help you feel better?"&lt;/p&gt;

&lt;p&gt;能从别人消极的情感中获取积极的价值&lt;/p&gt;

&lt;p&gt;他们问自己 “我感觉如何？” vs “什么帮助我感觉更好”&lt;/p&gt;

&lt;p&gt;他们问别人“你感觉如何” vs “什么让能帮你感受更好”&lt;/p&gt;

&lt;h4&gt;9. Don't advise, command, control, criticize, judge or lecture to other.&lt;/h4&gt;

&lt;p&gt;They realize it doesn't feel good to be on the receiving end of such behavior, so they avoid it.&lt;/p&gt;

&lt;p&gt;不要建议，命令，控制，批评，决定和教导别人&lt;/p&gt;

&lt;p&gt;他们意识到让别人接受这些行为感觉不太好，因此避免使用&lt;/p&gt;

&lt;h4&gt;10. Avoid people who invalidate them, or don't respect their feelings.&lt;/h4&gt;

&lt;p&gt;As much as possible, they choose to associate only with bother people with high EQ.&lt;/p&gt;

&lt;p&gt;避免与低智商的人相处，但要尊重他们的感受&lt;/p&gt;

&lt;p&gt;尽一切可能，他们选择与高智商的人相处&lt;/p&gt;

&lt;p&gt;参考：&lt;a href="http://peterfox.com.au/mind_emotional_intelligence.htm"&gt;http://peterfox.com.au/mind_emotional_intelligence.htm&lt;/a&gt;&lt;/p&gt;
</content>
   
   <category term="english" />
   
 </entry>
 
 <entry>
   <title type="html">悖论大扫盲</title>
   <link href="http://www.zhuyinghao.com/2011/12/15/collect-paradox" />
   <updated>2011-12-15T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/15/collect-paradox</id>
   <content type="html">&lt;p&gt;悖论指在逻辑上可以推导出互相矛盾之结论，但表面上又能自圆其说的命题或理论体系。悖论的出现往往是因为人们对某些概念的理解认识不够深刻正确所致。 悖论的成因极为复杂且深刻， 对它们的深入研究有助于数学、逻辑学、语义学等等理论学科的发展，因此具有重要意义。&lt;/p&gt;

&lt;h3&gt;罗素悖论&lt;/h3&gt;

&lt;p&gt;通俗点讲也叫理发师悖论，在某个城市中有一位理发师，他的广告词是这样写的：“本人的理发技艺十分高超，誉满全城。我将为本城所有不给自己刮脸的人刮脸，我也只给这些人刮脸。我对各位表示热诚欢迎！”来找他刮脸的人络绎不绝，自然都是那些不给自己刮脸的人。可是，有一天，这位理发师从镜子里看见自己的胡子长了，他本能地抓起了剃刀，你们看他能不能给他自己刮脸呢？如果他不给自己刮脸，他就属于“不给自己刮脸的人”，他就要给自己刮脸，而如果他给自己刮脸呢？他又属于“给自己刮脸的人”，他就不该给自己刮脸。&lt;/p&gt;

&lt;h3&gt;芝诺悖论&lt;/h3&gt;

&lt;p&gt;也称时间悖论。&lt;/p&gt;

&lt;p&gt;阿基里斯追一只海龟，若海龟在阿基里斯前面，则阿基里斯永远赶不上海龟。因为阿基里斯必须首先跑到海龟的出发点，而当他到达海龟的出发点时，海龟又向前了一段到达某一点A，阿基里斯跑到A点时，海龟又向前了一段到某一点B……如此一直追赶下去，所以阿基里斯永远不可能追上海龟。&lt;/p&gt;

&lt;p&gt;芝诺：“一个人从A点走到B点，要先走完路程的1/2，再走完剩下总路程的1/2，再走完剩下的1/2……”如此循环下去，永远不能到终点。&lt;/p&gt;

&lt;h3&gt;三元悖论&lt;/h3&gt;

&lt;p&gt;三元悖论(The Impossible Trinity)，也称三难选择，它是由美国经济学家保罗·克鲁格曼就开放经济下的政策选择问题所提出的，其含义是：本国货币政策的独立性，汇率的稳定性，资本的完全流动性不能同时实现，最多只能同时满足两个目标，而放弃另外一个目标。&lt;/p&gt;

&lt;h3&gt;外祖母悖论&lt;/h3&gt;

&lt;p&gt;如果一个人真的“返回过去”，并且在其外祖母怀他母亲之前就杀死了自己的外祖母，那么这个跨时间旅行者本人还会不会存在呢？这个问题很明显，如果没有你的外祖母就没有你的母亲，如果没有你的母亲也就没有你，如果没有你，你怎么“返回过去”，并且在其外祖母怀他母亲之前就杀死了自己的外祖母。&lt;/p&gt;

&lt;p&gt;与此相关的电影也很多，大多是穿越题材，包括蝴蝶效应，源代码，土拨鼠日等。
&lt;img src="/images/butterfly.jpg" alt="'butterfly'" /&gt;&lt;/p&gt;

&lt;p&gt;解释：一个人可以回到过去杀死自己的外祖母，但这将导致世界进入两个不同的轨道，一条中有那个人（原先的轨道），而另一条中没有那个人。两个不同的轨道就是物理界中的平等宇宙。&lt;/p&gt;

&lt;p&gt;虫洞：由阿尔伯特·爱因斯坦提出该理论。简单地说，“虫洞”就是连接宇宙遥远区域间的时空细管。暗物质维持着虫洞出口的敞开。虫洞可以把平行宇宙和婴儿宇宙连接起来，并提供时间旅行的可能性。虫洞也可能是连接黑洞和白洞的时空隧道，所以也叫"灰道"。也许有一天，时间机器的发明，会让人们实现时空旅行的梦想。&lt;/p&gt;

&lt;h3&gt;专制悖论&lt;/h3&gt;

&lt;p&gt;反对专制这本身是否是种专制？&lt;/p&gt;
</content>
   
   <category term="thinking" />
   
 </entry>
 
 <entry>
   <title type="html">积极自由versus消极自由</title>
   <link href="http://www.zhuyinghao.com/2011/12/14/about-freedom" />
   <updated>2011-12-14T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/14/about-freedom</id>
   <content type="html">&lt;p&gt;To have real freedom, and individual must:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Not be prevented from acting on his/her will(i.e. he/she must have traditional negative freedom).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Possess the resources or capacities actually to carry out his/her will.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;以赛亚·伯林&lt;/h3&gt;

&lt;p&gt;哲学家以赛亚·伯林提出了积极自由和消极自由两个概念，他反对积极自由，提倡消极自由，为什么呢？&lt;/p&gt;

&lt;p&gt;积极自由是指个人有干什么的自由（比如我有追求MM的自由）；消极自由是指个人不受外部力量干涉的自由（比如老板每个周末让加班，还没加班费）。&lt;/p&gt;

&lt;p&gt;伯林认为积极自由会干涉别人的自由，上个例子中，当我想追求MM时，一定会找MM聊天，看电影，假如遭到MM拒绝，我会在积极自由的理由下强迫带MM去看电影，这样就构成干涉MM的自由，这种危害是相当大的。再看上面的消极自由的例子，老板让我加班，我在消极自由的理由下不去加班，大不了我被炒鱿鱼，并不会对老板造成主动性危害。&lt;/p&gt;

&lt;p&gt;为什么说追求积极自由可能导致不自由。比如说，我们要求有受教育的权利（这就是积极自由），这就要求政府的介入，这样政府的权力就会加大，可能导致对个人自由的侵犯。而消极自由呢，比如说我们要求有自由流动的自由，也就是说，有不受外部力量侵犯的自由，这个危险性就比较小。&lt;/p&gt;

&lt;p&gt;&lt;img src="/images/freedom.jpg" alt="自由女神" /&gt;&lt;/p&gt;

&lt;h3&gt;我眼中的自由&lt;/h3&gt;

&lt;p&gt;托克维尔说“个人是本身利益的最好的和唯一的裁判者”，不错，只有个人才是其本身利益的最佳裁判者。我个人认为在不同场合积极自由和消极自由的作用是不同的，要辩证的看哪个是有利的，哪个是有害的。更何况，在今天，整个社会分化已经如此厉害，仅仅有消极自由是不够的。&lt;/p&gt;

&lt;p&gt;积极自由是一种完全的自由，消极自由是没有任何干涉和控制之下的自由，实际上是一种相对的自由。教育提倡积极自由，发挥学习者的主动性，自主学习、自主探究、自主分析和解决问题。法律和制度需要消极自由，每个法律的细节是否对他人造成干涉和控制，是法律制定者要谨慎考虑的问题。&lt;/p&gt;

&lt;p&gt;无论是社会主义还是资本主义，我无法判断哪种制度更有优越性，目前能确定的是，爱国主义和民族文化是我坚守的基本准则，人不坚守点什么，最终只能走向虚无，不要说爱国主义是把爱国给异化了，更不要说坚持爱国主义是走一个极端。&lt;/p&gt;

&lt;p&gt;国家有一天会消亡吗？你相信大同世界吗？我不相信，我能相信的是只会无限靠近，就像乌托邦。&lt;/p&gt;

&lt;h3&gt;积极自由的偏激&lt;/h3&gt;

&lt;p&gt;伯林的书大多是在谈积极自由的危害，这可能导致学生被误导，从而对积极自由产生偏见。所以，我们要敢于谈积极自由。但是我们在谈积极自由的同时要有一颗冷静的头脑。&lt;/p&gt;

&lt;p&gt;有人说：如果你不去解放受奴役而不自由的人，独守自己的消极自由，迟早有一天奴役的命运会降临到你的身上。没有积极自由，连消极自由都无法保证。所以，从自由的本意上讲，应该也只有积极自由。&lt;/p&gt;

&lt;h3&gt;从自由看教育和医疗&lt;/h3&gt;

&lt;p&gt;现在的教育、医疗等之所以搞到今天的这个样子，恰恰没有将这些资源市场化的结果。现在的教育和医疗基本上还是计划教育和计划医疗。没有把教育市场和医疗市场按照自由市场的原则放开，只把收费放开了（基本上），才出现了许多的人上不起学、看不起病的问题。如果将教育市场和医疗市场向国内外开放，教育费用和医疗费用就会按照市场原则保持在一个相对合理的水平上。垄断导致了教育和医疗高收费和低水平的服务。&lt;/p&gt;

&lt;p&gt;教育自由，医疗自由，把垄断市场化，是解决当前矛盾的必经之路。&lt;/p&gt;

&lt;h3&gt;他人说自由&lt;/h3&gt;

&lt;p&gt;走在北京的大街上不用担心因为没有暂住证而被绑架到昌平挖砂子，这就是消极自由。&lt;/p&gt;

&lt;p&gt;你去商店买一支猎枪，走到市政府里把那些狗官一个一个都打死，这就是积极自由。&lt;/p&gt;

&lt;p&gt;消极自由就是和你同居的你女朋友怀孕后走在大街上不用担心会被‘计生委’的匪徒绑架去强行流产。&lt;/p&gt;

&lt;p&gt;积极自由就是你们可以自己决定把孩子生出来或是其他。&lt;/p&gt;

&lt;h3&gt;总结&lt;/h3&gt;

&lt;p&gt;在生活中我们不但要维护自己的自由（不做奴隶），还要尊重他人的自由（不做奴隶主），更要反对他人之间的强制（坚持废奴主义）&lt;/p&gt;

&lt;p&gt;参考:
&lt;a href="http://www.tianya.cn/publicforum/Content/no01/1/161745.shtml"&gt;http://www.tianya.cn/publicforum/Content/no01/1/161745.shtml&lt;/a&gt;&lt;/p&gt;
</content>
   
   <category term="thinking" />
   
 </entry>
 
 <entry>
   <title type="html">ssh2 class on php</title>
   <link href="http://www.zhuyinghao.com/2011/12/12/ssh2-code" />
   <updated>2011-12-12T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/12/ssh2-code</id>
   <content type="html">&lt;p&gt;曾经写过的一个ssh2类&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="go"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="go"&gt;/**&lt;/span&gt;
&lt;span class="go"&gt; * Ssh2 Class&lt;/span&gt;
&lt;span class="go"&gt; *&lt;/span&gt;
&lt;span class="go"&gt; * @author tony &amp;lt;zhuyh@ifeng.com&amp;gt;&lt;/span&gt;
&lt;span class="go"&gt; * @package noah.module.ssh2&lt;/span&gt;
&lt;span class="go"&gt; * @version 0.1&lt;/span&gt;
&lt;span class="go"&gt; * $Id: ssh2.php 1914 2011-04-06 17:52:24Z zhuyinghao $&lt;/span&gt;
&lt;span class="go"&gt; */&lt;/span&gt;
&lt;span class="go"&gt;class Ssh2 extends Noah_base {&lt;/span&gt;

&lt;span class="go"&gt;   protected $_connect = null;&lt;/span&gt;
&lt;span class="go"&gt;   protected $_shell = null;&lt;/span&gt;
&lt;span class="go"&gt;   &lt;/span&gt;
&lt;span class="go"&gt;   protected function  _afterConstruct($id)&lt;/span&gt;
&lt;span class="go"&gt;   {&lt;/span&gt;
&lt;span class="go"&gt;       $this-&amp;gt;_connect = ssh2_connect($this-&amp;gt;_config[&amp;#39;host&amp;#39;], $this-&amp;gt;_config[&amp;#39;port&amp;#39;]);&lt;/span&gt;
&lt;span class="go"&gt;       ssh2_auth_password($this-&amp;gt;_connect, $this-&amp;gt;_config[&amp;#39;user&amp;#39;], $this-&amp;gt;_config[&amp;#39;password&amp;#39;]);&lt;/span&gt;
&lt;span class="go"&gt;       if(!$this-&amp;gt;_connect)&lt;/span&gt;
&lt;span class="go"&gt;       {&lt;/span&gt;
&lt;span class="go"&gt;           throw new Ssh2_Exception(&amp;#39;connect ssh failures&amp;#39;);&lt;/span&gt;
&lt;span class="go"&gt;       }&lt;/span&gt;
&lt;span class="go"&gt;   }&lt;/span&gt;

&lt;span class="go"&gt;   /**&lt;/span&gt;
&lt;span class="go"&gt;    * Execute shell&lt;/span&gt;
&lt;span class="go"&gt;    * @param $cmd&lt;/span&gt;
&lt;span class="go"&gt;    */&lt;/span&gt;
&lt;span class="go"&gt;   public function exec($cmd)&lt;/span&gt;
&lt;span class="go"&gt;   { &lt;/span&gt;
&lt;span class="go"&gt;       $stream = ssh2_exec($this-&amp;gt;_connect, $cmd, $this-&amp;gt;_config[&amp;#39;shellType&amp;#39;]);&lt;/span&gt;
&lt;span class="go"&gt;       $stderr_stream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);&lt;/span&gt;
&lt;span class="go"&gt;       $data = &amp;#39;&amp;#39;;&lt;/span&gt;
&lt;span class="go"&gt;       while($line = fgets($stderr_stream))&lt;/span&gt;
&lt;span class="go"&gt;       {&lt;/span&gt;
&lt;span class="go"&gt;           $data .=  $line.PHP_EOL; &lt;/span&gt;
&lt;span class="go"&gt;       }&lt;/span&gt;
&lt;span class="go"&gt;       &lt;/span&gt;
&lt;span class="go"&gt;       if($data)&lt;/span&gt;
&lt;span class="go"&gt;       {&lt;/span&gt;
&lt;span class="go"&gt;           return $data;&lt;/span&gt;
&lt;span class="go"&gt;       }&lt;/span&gt;
&lt;span class="go"&gt;       else&lt;/span&gt;
&lt;span class="go"&gt;       {&lt;/span&gt;
&lt;span class="go"&gt;           stream_set_blocking($stream, true);&lt;/span&gt;
&lt;span class="go"&gt;           return stream_get_contents($stream);&lt;/span&gt;
&lt;span class="go"&gt;       }&lt;/span&gt;
&lt;span class="go"&gt;   }&lt;/span&gt;
&lt;span class="go"&gt;   &lt;/span&gt;
&lt;span class="go"&gt;   /**&lt;/span&gt;
&lt;span class="go"&gt;    * Upload file&lt;/span&gt;
&lt;span class="go"&gt;    * @param $localfile&lt;/span&gt;
&lt;span class="go"&gt;    * @param $remotefile&lt;/span&gt;
&lt;span class="go"&gt;    * @param $mode&lt;/span&gt;
&lt;span class="go"&gt;    */&lt;/span&gt;
&lt;span class="go"&gt;   public function sendFile($localfile, $remotefile, $mode)&lt;/span&gt;
&lt;span class="go"&gt;   {&lt;/span&gt;
&lt;span class="go"&gt;       if(ssh2_scp_send($this-&amp;gt;_connect, $localfile, $remotefile, $mode))&lt;/span&gt;
&lt;span class="go"&gt;       {&lt;/span&gt;
&lt;span class="go"&gt;           return true;&lt;/span&gt;
&lt;span class="go"&gt;       }&lt;/span&gt;
&lt;span class="go"&gt;   }&lt;/span&gt;
&lt;span class="go"&gt;   &lt;/span&gt;
&lt;span class="go"&gt;   /**&lt;/span&gt;
&lt;span class="go"&gt;    * Upload file&lt;/span&gt;
&lt;span class="go"&gt;    * @param $localfile&lt;/span&gt;
&lt;span class="go"&gt;    * @param $remotefile&lt;/span&gt;
&lt;span class="go"&gt;    * @param $mode&lt;/span&gt;
&lt;span class="go"&gt;    */&lt;/span&gt;
&lt;span class="go"&gt;   public function recvFile($remotefile, $localfile)&lt;/span&gt;
&lt;span class="go"&gt;   {&lt;/span&gt;
&lt;span class="go"&gt;       if(ssh2_scp_recv($this-&amp;gt;_connect, $remotefile, $localfile))&lt;/span&gt;
&lt;span class="go"&gt;       {&lt;/span&gt;
&lt;span class="go"&gt;           return true;&lt;/span&gt;
&lt;span class="go"&gt;       }&lt;/span&gt;
&lt;span class="go"&gt;   }&lt;/span&gt;
&lt;span class="go"&gt;   &lt;/span&gt;
&lt;span class="go"&gt;   /**&lt;/span&gt;
&lt;span class="go"&gt;    * Openshell&lt;/span&gt;
&lt;span class="go"&gt;    */&lt;/span&gt;
&lt;span class="go"&gt;   public function openShell()&lt;/span&gt;
&lt;span class="go"&gt;   { &lt;/span&gt;
&lt;span class="go"&gt;       $this-&amp;gt;_shell = ssh2_shell($this-&amp;gt;_connect,  $this-&amp;gt;_config[&amp;#39;shellType&amp;#39;]);&lt;/span&gt;
&lt;span class="go"&gt;       if($this-&amp;gt;_shell)&lt;/span&gt;
&lt;span class="go"&gt;       {&lt;/span&gt;
&lt;span class="go"&gt;           return true;&lt;/span&gt;
&lt;span class="go"&gt;       }&lt;/span&gt;
&lt;span class="go"&gt;       else&lt;/span&gt;
&lt;span class="go"&gt;       {&lt;/span&gt;
&lt;span class="go"&gt;           return false;&lt;/span&gt;
&lt;span class="go"&gt;       }&lt;/span&gt;
&lt;span class="go"&gt;   }&lt;/span&gt;

&lt;span class="go"&gt;   public function writeShell($cmd)&lt;/span&gt;
&lt;span class="go"&gt;   {&lt;/span&gt;
&lt;span class="go"&gt;       if(fwrite($this-&amp;gt;_shell , $cmd.PHP_EOL))&lt;/span&gt;
&lt;span class="go"&gt;       {&lt;/span&gt;
&lt;span class="go"&gt;           return true;&lt;/span&gt;
&lt;span class="go"&gt;       }&lt;/span&gt;
&lt;span class="go"&gt;   }&lt;/span&gt;
&lt;span class="go"&gt;   &lt;/span&gt;
&lt;span class="go"&gt;   /**&lt;/span&gt;
&lt;span class="go"&gt;    * readshell commod&lt;/span&gt;
&lt;span class="go"&gt;    * &lt;/span&gt;
&lt;span class="go"&gt;    * @param int $size&lt;/span&gt;
&lt;span class="go"&gt;    */&lt;/span&gt;
&lt;span class="go"&gt;   public function readShell($size = 4096)&lt;/span&gt;
&lt;span class="go"&gt;   {&lt;/span&gt;
&lt;span class="go"&gt;       $data = &amp;quot;&amp;quot;;&lt;/span&gt;
&lt;span class="go"&gt;       while ($buf = fread($this-&amp;gt;_shell, $size))&lt;/span&gt;
&lt;span class="go"&gt;       {&lt;/span&gt;
&lt;span class="go"&gt;           $data .= $buf;&lt;/span&gt;
&lt;span class="go"&gt;       }&lt;/span&gt;
&lt;span class="go"&gt;       return $data;&lt;/span&gt;
&lt;span class="go"&gt;   }&lt;/span&gt;
&lt;span class="go"&gt;   &lt;/span&gt;
&lt;span class="go"&gt;   public function closeShell()&lt;/span&gt;
&lt;span class="go"&gt;   {&lt;/span&gt;
&lt;span class="go"&gt;       fclose($this-&amp;gt;_shell);&lt;/span&gt;
&lt;span class="go"&gt;   }&lt;/span&gt;
&lt;span class="go"&gt;   &lt;/span&gt;
&lt;span class="go"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;



</content>
   
   <category term="tech" />
   
 </entry>
 
 <entry>
   <title type="html">说说招聘</title>
   <link href="http://www.zhuyinghao.com/2011/12/12/about-application" />
   <updated>2011-12-12T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/12/about-application</id>
   <content type="html">&lt;p&gt;有一些人喜欢在大公司或者国企呆着，他们说福利好，待遇高，工作轻松，他们的价值取向和一个真正热爱工作的人显然不同。一个热爱技术的大牛，会把工作环境和工作内容放在第一位，还有一些毕业生，只要能找到工作足矣。&lt;/p&gt;

&lt;p&gt;每个人都有一个理想中的公司，而我还是喜欢少而精的团队，每个人都在为同一个目标付出汗水，用敏捷开发代替文档，缩短迭代周期，用15分钟的站立会替换工作日报，用有限的沟通把成本降低到最小。&lt;/p&gt;

&lt;p&gt;曾经用了近一年的时间才招了一个人，目的就是防止低效，在招聘的过程中如何招到理想中的计算机人才呢？&lt;/p&gt;

&lt;p&gt;首先，不要把面试当作考试，写答案就需要2个小时，这是对一个精英的不尊重，也是对自己看人能力的怀疑，点名批评一下新浪，他们是在目前员工不够优秀，且完不成任务的情况下，在大量的招聘，也形成了一个无限的恶循环，国内的企业，不要只模仿一个微博和人人，更要模仿一个以人为本少而精的github团队。用那一沓面试题挡住了多少精英，只有那些HR心里有数。&lt;/p&gt;

&lt;p&gt;其次，在面试题少的情况下，如何招到理想中的人才呢？无论是JAVA，PHP还是架构师，最基础的两个能力是英语和LINUX，英语的水平不是一个四六级证就能表现的，如果用英语写twitter有1000条，阅读和写作是不用怀疑的，当一个技术人员做到一定程度，英语会成为瓶颈，这是我从事计算机编程工作的深刻体会 。一个程序员对VI的使用娴熟能力也是考核开发效率的标志之一，只用键盘不用鼠标的在LINUX下开发的速度是WINDOWS用户不敢想像的。&lt;/p&gt;

&lt;p&gt;再次，对算法和设计模式的了解也是必要的。&lt;/p&gt;

&lt;p&gt;再次，工作经验不是必要的，但一定要有开发经验，不要招那些在培训机构学了三个月能把很多题目对答如流的。&lt;/p&gt;

&lt;p&gt;最后，用过nosql，单元测试的，如果还使用过stackoverflow和github，那么，你已经被录取了。&lt;/p&gt;

&lt;p&gt;开发语言不重要，重要的是态度，学习能力和价值观。&lt;/p&gt;
</content>
   
   <category term="life" />
   
 </entry>
 
 <entry>
   <title type="html">open your mind open your heart</title>
   <link href="http://www.zhuyinghao.com/2011/12/09/open-your-mind" />
   <updated>2011-12-09T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/09/open-your-mind</id>
   <content type="html">&lt;p&gt;As a computer programmar,he should understand how share knowledge,and warn himself open share mind now and forever.&lt;/p&gt;

&lt;p&gt;A GRE issue question:&lt;/p&gt;

&lt;p&gt;Students should bring a certain skepticism to whatever they study. They should question what they are taught instead of accepting it passively.&lt;/p&gt;

&lt;p&gt;yeap, i am a students until my life over.do you agree my point?&lt;/p&gt;

&lt;p&gt;programmars should bring a certain skepticism to whatever they work. they should question what arranged instead of accepting it passively.&lt;/p&gt;

&lt;p&gt;leaders should give enough space to subordinate,such as svn authority,i think everyone should have a same in a team from that company attach importance to technologe.&lt;/p&gt;

&lt;p&gt;i have a dream of day,no leader,no unfair,everyone only is a equal role of the works.&lt;/p&gt;
</content>
   
   <category term="english" />
   
 </entry>
 
 <entry>
   <title type="html">在nginx下设置二级域名</title>
   <link href="http://www.zhuyinghao.com/2011/12/07/set-subdomain-on-nginx" />
   <updated>2011-12-07T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/07/set-subdomain-on-nginx</id>
   <content type="html">&lt;h3&gt;概念&lt;/h3&gt;

&lt;p&gt;这两个概念很容易混淆，看个例子区分一下二者的定义：&lt;/p&gt;

&lt;p&gt;test.zhuyinghao.com和demo.zhuyinghao.com是二级域名
zhuyinghao.com/test和zhuyinghao.com/demo是个性域名&lt;/p&gt;

&lt;h3&gt;二级域名的实现&lt;/h3&gt;

&lt;p&gt;'''思路'''：通过nginx的rewrite模块，把xxx.zhuyinghao.com指向到zhuyinghao.com/xxx，xxx是可变的，每次增加二级域名时修改hosts文件即可。在hosts中增加一行:&lt;/p&gt;

&lt;p&gt;127.0.0.1 test.zhuyinghao.com&lt;/p&gt;

&lt;p&gt;要有对hosts的修改权限。&lt;/p&gt;

&lt;p&gt;可参考https://wangyan.org/blog/nginx-subdomain.html&lt;/p&gt;

&lt;p&gt;支持pathinfo重写的nginx的配置如下：&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="go"&gt;server {&lt;/span&gt;
&lt;span class="go"&gt;    listen 80; &lt;/span&gt;
&lt;span class="go"&gt;    server_name #.auth.com;&lt;/span&gt;

&lt;span class="go"&gt;    if ( $host ~# (\b(?!www\b)\w+)\.\w+\.\w+ ) { &lt;/span&gt;
&lt;span class="go"&gt;        set $test $1; &lt;/span&gt;
&lt;span class="go"&gt;    }   &lt;/span&gt;

&lt;span class="go"&gt;    root /data/web/rbac/app/$test;&lt;/span&gt;

&lt;span class="go"&gt;    index index.php index.html index.htm;&lt;/span&gt;

&lt;span class="go"&gt;    if (!-e $request_filename)&lt;/span&gt;
&lt;span class="go"&gt;    {   &lt;/span&gt;
&lt;span class="go"&gt;        rewrite ^/(.#)$ /index.php/$1 last;&lt;/span&gt;
&lt;span class="go"&gt;        break;&lt;/span&gt;
&lt;span class="go"&gt;    }   &lt;/span&gt;

&lt;span class="go"&gt;    location ~ .#\.php(.#)$ {&lt;/span&gt;
&lt;span class="go"&gt;        fastcgi_pass 127.0.0.1:9000;&lt;/span&gt;
&lt;span class="go"&gt;        fastcgi_index index.php;&lt;/span&gt;
&lt;span class="go"&gt;        fastcgi_split_path_info ^(.+\.php)(.#)$;&lt;/span&gt;
&lt;span class="go"&gt;        include fastcgi_params;&lt;/span&gt;
&lt;span class="go"&gt;        fastcgi_param PATH_INFO $fastcgi_path_info;&lt;/span&gt;
&lt;span class="go"&gt;    }   &lt;/span&gt;
&lt;span class="go"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;两步实现个性域名&lt;/p&gt;

&lt;p&gt;在php的各个框架中，基本上都是采用单入口模式，如当访问zhuyinghao.com/user/login时，实际访问的是zhuyinghao.com/index.php?controller=user&amp;amp;action=login，即所有访问都会通过index.php进行url分发。如果要实现个性域名zhuyinghao.com/tony时，实际上会访问zhuyinghao.com/index.php?controller=user&amp;amp;action=view&amp;amp;name=tony&lt;/p&gt;

&lt;p&gt;1，把zhuyinghao.com/index.php?controller=user&amp;amp;action=view&amp;amp;name=tony转化成zhuyinghao.com/user/view/tony&lt;/p&gt;

&lt;p&gt;这一步是通过框架内部的url和route模块实现的&lt;/p&gt;

&lt;p&gt;2,把zhuyinghao.com/user/view/tony转化成zhuyinghao.com/tony&lt;/p&gt;

&lt;p&gt;通过nginx是可以实现的，如果php端要个性/user/view中的某一路径时，必须把nginx配置文件相匹配，否则无法正确指向，这也导致个性域名不灵活。&lt;/p&gt;

&lt;p&gt;因此可采用框架内部的路由机制来实现，要访问zhuyinghao.com/tony时，首先会检测系统根目录是否有这样一个文件夹，并有索引文件，其次会检测是否有tony这样一个控制器，最后会用正则把tony匹配到/user/view/tony，实现:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="gp"&gt;$&lt;/span&gt;route-&amp;gt;set&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;profile&amp;#39;&lt;/span&gt;, &lt;span class="s1"&gt;&amp;#39;&amp;lt;domain&amp;gt;&amp;#39;&lt;/span&gt;, array&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;domain&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&amp;gt; &lt;span class="s1"&gt;&amp;#39;[0-9a-zA-Z]+&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="go"&gt;   -&amp;gt;defaults(array(&lt;/span&gt;
&lt;span class="go"&gt;       &amp;#39;controller&amp;#39; =&amp;gt; &amp;#39;user&amp;#39;,&lt;/span&gt;
&lt;span class="go"&gt;       &amp;#39;action&amp;#39; =&amp;gt; &amp;#39;view&amp;#39;,&lt;/span&gt;
&lt;span class="go"&gt;   ));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;



</content>
   
   <category term="tech" />
   
 </entry>
 
 <entry>
   <title type="html">如何导出一个git项目</title>
   <link href="http://www.zhuyinghao.com/2011/12/07/how-to-export-agit-project" />
   <updated>2011-12-07T00:00:00-08:00</updated>
   <id>http://www.zhuyinghao.com/2011/12/07/how-to-export-agit-project</id>
   <content type="html">&lt;p&gt;如何像svn export一样导出一个项目呢？&lt;/p&gt;

&lt;p&gt;没有git export命令，导出项目可用git archive命令，默认情况下，它是导出一个tar压缩包。&lt;/p&gt;

&lt;h3&gt;看个例子&lt;/h3&gt;

&lt;p&gt;进入到git项目的根目录，运行下面的命令，并在当前项目中创建latest.tgz压缩包&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="console"&gt;&lt;span class="go"&gt;git archive master | gzip &amp;gt; latest.tgz&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;h3&gt;git导出帮助&lt;/h3&gt;

&lt;p&gt;查看git命令 git help&lt;/p&gt;

&lt;p&gt;查看git archive命令用git help archive&lt;/p&gt;

&lt;p&gt;运行上面命令会出现以下介绍（展现部分），还有一些更详细的examples&lt;/p&gt;
</content>
   
   <category term="tech" />
   
 </entry>
 

</feed>

