<?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>开源小站 &#187; 站长的blog</title>
	<atom:link href="http://www.litrin.net/category/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.litrin.net</link>
	<description>It is Cool to OpenSource</description>
	<lastBuildDate>Fri, 03 Feb 2012 04:33:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>微博</title>
		<link>http://www.litrin.net/2012/01/31/%e5%be%ae%e5%8d%9a/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%25be%25ae%25e5%258d%259a</link>
		<comments>http://www.litrin.net/2012/01/31/%e5%be%ae%e5%8d%9a/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 02:05:30 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[站长的blog]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1661</guid>
		<description><![CDATA[最近看了一下自己之前写的帖子——甚至直接回溯到了2005年。本想学习韩寒那样删掉一部分内容，这部分的内容无非几种情况：内容明显脱节的，诸如早期版本的安装配置等；有一些错误或者言语上容易让读者产生误解的；还有就是早期为了填充内容直接黏贴的。后来觉得既然已经在小站上出现的东西，不论什么情况，这已经成为网站的一部分，何况还有RSS以及其他方式订阅的读者，“说出的话，泼出的水”没有回收删除的必要了。 从小站一开始就在思索如何与用户互动，评论自然是一个好的方式。但访问本站的朋友大多数是在处理问题时通过搜索引擎进来的，看一眼就走人，可谓是“来也匆匆，去也匆匆”自然不会有评论。即便是文章中的错误，除了背后骂娘之外也不会有其他的动作。当然也有很多的评论，几乎占了90%以上，无非还停留在某某论坛的抢积分逻辑上。“顶”，“路过”等等没什么营养的回复我会直接归结为垃圾评论。 作为ITer，我本身非常热衷于新事物，微博这类的新媒体我也用了一段时间。当然09年前以Twitter为主，众所周知的原因，不能成为主流。后来用了Google buzz，最大的优点在于可以直接与Google Reader中的feed订阅同步。可惜google自己终止了它。最终只能回归到GFW内的本地克隆。抵制腾讯的我选择了新浪微博。 @开源微站 敬请关注！]]></description>
			<content:encoded><![CDATA[<p>最近看了一下自己之前写的帖子——甚至直接回溯到了2005年。本想学习韩寒那样删掉一部分内容，这部分的内容无非几种情况：内容明显脱节的，诸如早期版本的安装配置等；有一些错误或者言语上容易让读者产生误解的；还有就是早期为了填充内容直接黏贴的。后来觉得既然已经在小站上出现的东西，不论什么情况，这已经成为网站的一部分，何况还有RSS以及其他方式订阅的读者，“说出的话，泼出的水”没有回收删除的必要了。</p>
<p>从小站一开始就在思索如何与用户互动，评论自然是一个好的方式。但访问本站的朋友大多数是在处理问题时通过搜索引擎进来的，看一眼就走人，可谓是“来也匆匆，去也匆匆”自然不会有评论。即便是文章中的错误，除了背后骂娘之外也不会有其他的动作。当然也有很多的评论，几乎占了90%以上，无非还停留在某某论坛的抢积分逻辑上。“顶”，“路过”等等没什么营养的回复我会直接归结为垃圾评论。</p>
<p>作为ITer，我本身非常热衷于新事物，微博这类的新媒体我也用了一段时间。当然09年前以Twitter为主，众所周知的原因，不能成为主流。后来用了Google buzz，最大的优点在于可以直接与Google Reader中的feed订阅同步。可惜google自己终止了它。最终只能回归到GFW内的本地克隆。抵制腾讯的我选择了新浪微博。</p>
<h2 style="text-align: center;"><a rel="nofollow" target="_blank" title="开源微站" href="http://weibo.com/1429950522/profile?leftnav=1&amp;wvr=4">@开源微站</a> 敬请关注！</h2>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2012/01/31/%e5%be%ae%e5%8d%9a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP的普青、文青和2B青</title>
		<link>http://www.litrin.net/2011/11/05/php%e7%9a%84%e6%99%ae%e9%9d%92%e3%80%81%e6%96%87%e9%9d%92%e5%92%8c2b%e9%9d%92/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=php%25e7%259a%2584%25e6%2599%25ae%25e9%259d%2592%25e3%2580%2581%25e6%2596%2587%25e9%259d%2592%25e5%2592%258c2b%25e9%259d%2592</link>
		<comments>http://www.litrin.net/2011/11/05/php%e7%9a%84%e6%99%ae%e9%9d%92%e3%80%81%e6%96%87%e9%9d%92%e5%92%8c2b%e9%9d%92/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 14:17:21 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[业界话题]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1587</guid>
		<description><![CDATA[之前看过一篇东西，大致上说：之所以PHP这么流行，主要是因为PHP太“下贱”。门槛太低，什么样的写法都有。这些年接触下来，也颇有共鸣。正巧赶上最近网上很流行“普青、文青、2B青”的恶搞，抱着“回字到底有几种写法”的态度，对同样的问题进行各种风格的编码，为了更多的体现算法，我剔除了注释。只为搏大家一笑，希望大家也不要拓展开来了。 题目：1只羊第二年后开始繁殖，每年一胎，每胎一只，直到第5年死亡，列出前十年的羊的数量。 首先照例是普青： &#60;?php function foo($n, $echo = true) { $i = 1; $a = 1; while($i &#60; = $n) { $c = $b; $b += $a; $a = $c; if ($i &#62; 5) { $b -= (foo($i -5, false) -1) } if ($echo) echo "The " . $ i ."th year: " . $b [...]]]></description>
			<content:encoded><![CDATA[<p>之前看过一篇东西，大致上说：之所以PHP这么流行，主要是因为PHP太“下贱”。门槛太低，什么样的写法都有。这些年接触下来，也颇有共鸣。正巧赶上最近网上很流行“普青、文青、2B青”的恶搞，抱着“回字到底有几种写法”的态度，对同样的问题进行各种风格的编码，为了更多的体现算法，我剔除了注释。只为搏大家一笑，希望大家也不要拓展开来了。</p>
<p><strong>题目：1只羊第二年后开始繁殖，每年一胎，每胎一只，直到第5年死亡，列出前十年的羊的数量。</strong></p>
<p><span id="more-1587"></span></p>
<p>首先照例是普青：</p>
<pre name=code class=php>&lt;?php
function foo($n, $echo = true)
{
    $i = 1;
    $a = 1;

    while($i &lt; = $n)
    {
        $c = $b;
        $b += $a;
        $a = $c;

        if ($i &gt; 5)
        {
            $b -= (foo($i -5, false) -1)
        }
        if ($echo)
            echo "The " . $ i ."th year: " . $b ."\n";
        i ++;
    }
}
foo(10);
?&gt;</pre>
<p>资质一般，仅仅是做出了题目而已，没有考虑之后代码的维护，以及层层递归造成的性能浪费</p>
<p>接下来是文青：<span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;"> </span></p>
<pre name=code class=php>&lt;?php

function getSheepNumber($finalYear)
{
    if ($finalYear &lt; 1 ) return 0;
    $thisYear = 1;
    $histoyRecord = array ('1' = 1);

    while($thisYear &lt; = $finalYear)
    {
        $lastYear = $thisYear - 1;
        $theYearBeforLastYear = $lastYear - 1;
        if ($theYearBeforLastYear &lt; 0 )
            $historyRecord[$thisYear] = $historyRecord[$lastYear];
        else
            $historyRecord[$thisYear] =
                $historyRecord[$lastYear] + $historyRecord[$theYearBeforLastYea];

        if ($thisYear &gt; 5)
        {
            $theYearBefor5Years = $lastYear - 5;
            $historyRecord[$thisYear] -= $historyRecord[$theYearBefor5Years];
        }
        $thisYear ++;
    }
    return $historyRecord[$thisYear]
}

for ($year = 1; $year&lt;=10; $year++)
{
    switch ($year)
    {
        case 1:
            echo "The 1st year: ";
            break;
        case 2:
            echo "The 2nd year: ";
            break;
        case 3:
            echo "The 3rd year: ";
            break;
        default:
            echo "The " . $year ."th year: ";
            break;
    }

    $sheepCount = getSheepNumber($year);
    echo $sheepCount . "\n";
}
?&gt;</pre>
<p>足够优雅，也有了不错的优化。可惜为了这优雅，循环调用，导致尽管优化了性能但依旧有潜力可挖，而且代码也罗嗦的可以了。谁让文青都不食人间烟火呢？</p>
<p>接下来2B青闪亮登场：</p>
<pre name=code class=php>&lt;?php
function foo($n)
{
    $year_2 = $year_1 = 1;
    $loop = 2;

    while( $n &gt; 0 )
    {
        $last_year = "year_" . $loop;
        $last_2_year = "year_" . ($loop - 1);
        $loop ++;

        $this_year = "year_" . $loop;

        $$this_year = $$last_2_year + $$last_year;

        if ($loop &gt; 5)
            $$this_year -= ${substr($this_year, 0 , -2) . ($loop - 5)};
?&gt;
            The &lt;?php =$loop ?&gt;th year &lt;?php =$$this_year ?&gt;
&lt;?php
    }
}
foo(10);
?&gt;</pre>
<p><span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">好吧，我不得不承认PHP的特性真的很方便。为了特性而特性这就是2B。</span></p>
<p>NB青的,颇有爱尔兰(Erlang)风格：</p>
<pre name=code class=php>&lt;?php

function sheepBorn($n, &#038;$list)
{
    if ($list[$n]) return $list[$n];

    if $n < 1   return 0;
    if $n <= 2  return 1;

    $list[$n] = sheepBorn( $n - 1, $list ) + sheepBorn( $n - 2,  $list ) - sheepBorn( $n - 5,  $list );
    return $list[$n];
}

$list = array();
for ($year = 1; $year&lt;=10; $year++)
    echo "The " . $year ."th year: " . sheepBorn($year, $list) . "\n" ;
?&gt;</pre>
<p>够强！可这样的代码，除了表达一下自己的超强算法之外，给别人带来的困惑也会增加，要在注释上多下功夫了。</p>
<p>最终，真相帝降临：
</pre>
<pre name=code class=php>&lt;?php
for($i = 0; $i &lt;= 10; $i ++)
{
    if ($i &lt; 5)
        echo "The " . $i . "year is: 1 ";
    else
        echo "The " . $i . "year is: 0 ";
}</pre>
<p>只有一只羊的情况下确实不能繁殖。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/11/05/php%e7%9a%84%e6%99%ae%e9%9d%92%e3%80%81%e6%96%87%e9%9d%92%e5%92%8c2b%e9%9d%92/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>*nix全家福</title>
		<link>http://www.litrin.net/2011/09/10/nix%e5%85%a8%e5%ae%b6%e7%a6%8f/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nix%25e5%2585%25a8%25e5%25ae%25b6%25e7%25a6%258f</link>
		<comments>http://www.litrin.net/2011/09/10/nix%e5%85%a8%e5%ae%b6%e7%a6%8f/#comments</comments>
		<pubDate>Sat, 10 Sep 2011 05:20:16 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[站长的blog]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1551</guid>
		<description><![CDATA[赶上中秋节小长假，本身就有团圆的一重含义在，于是在收拾房间的时候，将所有的操作系统安装介质找了出来，拍张全家福吧。 *nix成员名单： Solaris 10 授权包，for sparc and x86 Solaris 9 安装包，for sparc Ubuntu 606， for x86, x86_64, power mac Ubuntu 804，for x86, x86_64 Ubuntu 904，for x86 Suse Linux 10.2 Fedora 5 for x86_64 此外，趁着中秋假期前来串门的还有： Windows XP Home Windows XP Pro Juniper OS 直接看图！]]></description>
			<content:encoded><![CDATA[<p>赶上中秋节小长假，本身就有团圆的一重含义在，于是在收拾房间的时候，将所有的操作系统安装介质找了出来，拍张全家福吧。</p>
<p>*nix成员名单：</p>
<ul>
<li>Solaris 10 授权包，for sparc and x86</li>
<li>Solaris 9 安装包，for sparc</li>
<li>Ubuntu 606， for x86, x86_64, power mac</li>
<li>Ubuntu 804，for x86, x86_64</li>
<li>Ubuntu 904，for x86</li>
<li>Suse Linux 10.2</li>
<li>Fedora 5 for x86_64</li>
</ul>
<div>此外，趁着中秋假期前来串门的还有：</div>
<div>
<ul>
<li>Windows XP Home</li>
<li>Windows XP Pro</li>
<li>Juniper OS</li>
</ul>
<div><a title="操作系统全家福" href="http://www.litrin.net/wp-content/uploads/2011/09/DSCN0016.jpg" target="_blank">直接看图！</a></div>
</div>
<p><span id="more-1551"></span></p>
<p><img class="aligncenter size-full wp-image-1554" style="vertical-align: middle;" title="操作系统全家福" src="http://www.litrin.net/wp-content/uploads/2011/09/DSCN0016.jpg" alt="操作系统全家福" width="800" height="600" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/09/10/nix%e5%85%a8%e5%ae%b6%e7%a6%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>开源小站的基础结构</title>
		<link>http://www.litrin.net/2011/08/12/%e5%bc%80%e6%ba%90%e5%b0%8f%e7%ab%99%e7%9a%84%e5%9f%ba%e7%a1%80%e7%bb%93%e6%9e%84/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%25bc%2580%25e6%25ba%2590%25e5%25b0%258f%25e7%25ab%2599%25e7%259a%2584%25e5%259f%25ba%25e7%25a1%2580%25e7%25bb%2593%25e6%259e%2584</link>
		<comments>http://www.litrin.net/2011/08/12/%e5%bc%80%e6%ba%90%e5%b0%8f%e7%ab%99%e7%9a%84%e5%9f%ba%e7%a1%80%e7%bb%93%e6%9e%84/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 05:06:03 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[网络和安全]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1516</guid>
		<description><![CDATA[之前有朋友问过开源小站的架构是怎样的，我回答道：“标准的wordpress，稍微做了一些调整。”时隔一段时期，几经搬迁，这次重新整理了一下开源小站的结构，就当分享罢了。 “开源小站”最初是基于drupal构建，基础数据库是postgresql。后来由于drupal的性能问题以及框死了的postgresql，只能整体迁移到了wordpress+mysql。当然迁移好之后，考虑到drupal和wordpress的链接地址的不同，修改了wordpress的部分代码，让之前的外链不至于失效。后来索性就通过apache的mod_rewrite模块添加了301跳转，wordpress的版本也可以随着“持续演进”了。 由于wordpress或者这一类的CMS系统本身不是一个性能优化的产品，后来一段时间搬迁过一次，平台是vps的虚拟机。性能问题很突出，首页打开竟然需要2.7秒以上，加上传输耗时，超出了3秒的范围，严重影响用户体验。于是不得不在wordpress的代码上进行修改。页面全部缓存到了memcache。响应时间减少到1.5秒以下，基本可以满足大部分需求。但这样就无法跟随wordpress持续演进了。wp的版本只能定死在了某个版本号上。考虑到安全因素，我只能说，这是3.1之前的“某个版本”。 关于硬件环境，最初的drupal版本是一台相对很“牛”的机器，双核志强*2 + 4G RAM+ RAID5。所以当初提供了很多开源系统镜像下载。系统的瓶颈出现在网络带宽上，可谓“衣食无忧”。 之后的变故，加上域名备案的因素，使得网站一度只能跑在一台win2003的virtual server上，内存只有64M，从一个极端到了另一个极端。之后很长一段时间，开源小站始终运行在虚拟机或者vps之上。当然，由此带来的流量下滑不是一点点，但访客停留时间大大增加。也算抹平了。 后来，设法弄到了一点资源，与别人合用了一台主机，4核Xeon+4GRAM + RAID1，磁盘总是不够用，甚至为此都不保存访问日志。 后来，曾经狂热的支持了一把atom，于是自己用atom的平台搭建了一台服务器，1u高度标准机箱，atom-230,1.6G +2GRAM+160G的笔记本硬盘，操作系统选择了Ubuntu的804 Server，竟然跑得很流畅，这就是现在开源小站的主机。当然，也感谢某位朋友，免费提供了他们所代理的某款网络安全产品，用以作为我们小站的前端防火墙。在前端防火墙之后，通过端口映射的方式完成了网站80端口的指向。负担一部分iptable的任务，同时也作为SSH和远程重起主机的跳板。 之后，加入了xml-rpc服务，同时将文章推送到几个免费博客和litrinjiang.appspot.com，尽管格式全乱，但至少也算是备份吧。 &#160;]]></description>
			<content:encoded><![CDATA[<p>之前有朋友问过开源小站的架构是怎样的，我回答道：“标准的wordpress，稍微做了一些调整。”时隔一段时期，几经搬迁，这次重新整理了一下开源小站的结构，就当分享罢了。</p>
<p>“开源小站”最初是基于drupal构建，基础数据库是postgresql。后来由于drupal的性能问题以及框死了的postgresql，只能<a title="WordPress的家" href="http://www.litrin.net/2009/03/17/wordpress%e7%9a%84%e5%ae%b6/">整体迁移到了wordpress+mysql</a>。当然迁移好之后，考虑到drupal和wordpress的链接地址的不同，修改了wordpress的部分代码，让之前的外链不至于失效。后来索性就通过apache的mod_rewrite模块添加了301跳转，wordpress的版本也可以随着“持续演进”了。</p>
<p><span id="more-1516"></span>由于wordpress或者这一类的CMS系统本身不是一个性能优化的产品，后来一段时间搬迁过一次，平台是vps的虚拟机。性能问题很突出，首页打开竟然需要2.7秒以上，加上传输耗时，超出了3秒的范围，严重影响用户体验。于是不得不在wordpress的代码上进行修改。页面全部缓存到了memcache。响应时间减少到1.5秒以下，基本可以满足大部分需求。但这样就无法跟随wordpress持续演进了。wp的版本只能定死在了某个版本号上。考虑到安全因素，我只能说，这是3.1之前的“某个版本”。</p>
<p>关于硬件环境，最初的drupal版本是一台相对很“牛”的机器，双核志强*2 + 4G RAM+ RAID5。所以当初提供了很多开源系统镜像下载。系统的瓶颈出现在网络带宽上，可谓“衣食无忧”。</p>
<p>之后的变故，加上域名备案的因素，使得网站一度只能跑在一台win2003的virtual server上，内存只有64M，从一个极端到了另一个极端。之后很长一段时间，开源小站始终运行在虚拟机或者vps之上。当然，由此带来的流量下滑不是一点点，但访客停留时间大大增加。也算抹平了。</p>
<p>后来，设法弄到了一点资源，与别人合用了一台主机，4核Xeon+4GRAM + RAID1，磁盘总是不够用，甚至为此都不保存访问日志。</p>
<p><img class="aligncenter size-medium wp-image-1519" title="" src="http://www.litrin.net/wp-content/uploads/2011/08/20110301125-225x300.jpg" alt="" width="225" height="300" /></p>
<p>后来，曾经<a title="完工的ATOM" href="http://www.litrin.net/2009/07/16/%e5%ae%8c%e5%b7%a5%e7%9a%84atom/">狂热的支持了一把atom</a>，于是自己用atom的平台搭建了一台服务器，1u高度标准机箱，atom-230,1.6G +2GRAM+160G的笔记本硬盘，操作系统选择了Ubuntu的804 Server，竟然跑得很流畅，这就是现在开源小站的主机。当然，也感谢某位朋友，免费提供了他们所代理的某款网络安全产品，用以作为我们小站的前端防火墙。在前端防火墙之后，通过端口映射的方式完成了网站80端口的指向。负担一部分iptable的任务，同时也作为SSH和远程重起主机的跳板。</p>
<p><img class="aligncenter size-medium wp-image-1518" title="20110226121" src="http://www.litrin.net/wp-content/uploads/2011/08/20110226121-300x225.jpg" alt="" width="300" height="225" /></p>
<p>之后，加入了xml-rpc服务，同时将文章推送到几个免费博客和litrinjiang.appspot.com，尽管格式全乱，但至少也算是备份吧。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/08/12/%e5%bc%80%e6%ba%90%e5%b0%8f%e7%ab%99%e7%9a%84%e5%9f%ba%e7%a1%80%e7%bb%93%e6%9e%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>永远的文明·变革</title>
		<link>http://www.litrin.net/2011/07/30/%e6%b0%b8%e8%bf%9c%e7%9a%84%e6%96%87%e6%98%8e%c2%b7%e5%8f%98%e9%9d%a9/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e6%25b0%25b8%25e8%25bf%259c%25e7%259a%2584%25e6%2596%2587%25e6%2598%258e%25c2%25b7%25e5%258f%2598%25e9%259d%25a9</link>
		<comments>http://www.litrin.net/2011/07/30/%e6%b0%b8%e8%bf%9c%e7%9a%84%e6%96%87%e6%98%8e%c2%b7%e5%8f%98%e9%9d%a9/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 13:43:04 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[站长的blog]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1513</guid>
		<description><![CDATA[在App Store上淘软件，发现了文明也出了iPad版本，相比之下，$1.99的价格真的很公道，几乎不假思索的买了下来，成为我的又一张正版的《文明》系列。尽管这次已经没有了任何介质上的纪念。 几乎已经忘了这是第几次写文明这个系列的游戏了（文明4 文明5）。这次的文明只有一个副标题——变革，似乎英文版叫revolution。不知不觉这几年，一个当初的整天玩游戏的愣头青已经身为人父。只能说真的有太多变革了——微博取代了博客，渠道更畅通了，尽管废话更多了；SNS取代了论坛，社群更庞大了，尽管连垃圾时间都没了，做梦也想不到会从iPad上这么容易的获得了《文明》，尽管已经几乎无法像以前那么投入了…… 170多兆，几乎是我iPad上最大的一个应用了。一运行，典型国产游戏的一番说教。还是惯例，又见“唐公”领导的“九鼎国”，不知英文原版如何。很后悔App Store账户注册地为中国。 就整个系统来说，个人觉得更接近于《文明3》甚至更早的系统，但画面上有很大的强化。由于iPad／iPhone的控制界面的原因，大幅优化了操作界面，还是很顺手，很人性化的。大概考虑到了iPad的机能限制，相对于一贯的PC版本，这次的变革真的不少。 首先，是取消了工人的设置。话说回来，工人一贯是最耗系统资源的单位，数量很多，技能也很多，而且往往会伴随有自动的机制。取消了工人的设置大大降低了系统的资源占用。“变革”里的工人到更像是土地的一个附加属性。工人的取消导致的结果之一是道路系统也有很大的 变革，道路是“买的”，不是“修的”，不需要时间，而且两座城市之间只会存在一条路。导致的结果之二是土地的使用可塑性更小，没有了卫星城和各种耕地、矿山的设置（矿山成了一个城市设施）同样的也没有了传统单位“工作船”。当然，也不存在可以破坏的设施。 行动单位的改变，大概是受了《文明4·刀锋时刻》的启发，这次有了军团的概念。3个单位组合成一个军团，攻守都乘3，但系统仅当作一个单位就可以判断。只能组建，不能拆散，而且只能是3个单位。这次的军事单位设计的也很巧妙，任何一个单位都存在缺陷，而且缺陷被有意夸大。例如：弓箭手擅长守，武士擅长攻。这也就意味着攻守单位被彻底割裂，一个时代的兵种不存在“攻守兼备”的单位。用石头剪刀布的方式维系着军事平衡。军事单位的升级也只能通过建造达芬奇工作室来完成，只有这一次机会。 伟人系统可以说是脱胎于文明5的伟人系统，分为科学家（获取科研成果）、艺术家／商业家（直接卖钱）、政治家／思想家（直接获取某个城市）、工程师（完成城市设施）、医学家（所有城市人口＋1），有可以提升战斗力的军事家，但军事家不算是伟人。有趣的是，凑齐16个伟人才可以建联合国。 胜利条件这次的设置更像是功勋的条件，增加了经济胜利（凑满一定钱数）。外交胜利也变成了直接建联合国就可以，不需要投票表决了。军事胜利的条件只需要占领别人的首都就可以了，不像以往那样要斩尽杀绝。科技胜利也还是那样飞向半人马阿尔法星。 玩了一段时间，觉得这个版本还是有很多不完美的地方。 bug问题，经常挂起后再次进入就莫名其妙的崩溃，害得我不得不重新开机。而且在寻路的情况下经常会出错。这里不再一一描述了。 卡的问题，文明系列的通病了，几乎是没有办法的。 个人觉得这个版本仅仅只是施德·梅尔的授权作品，他本人应该没有直接参与开发。但瑕不掩瑜，对于唯一一个可以随时进行的文明游戏，单是这个变革已经足够让我激动的了。]]></description>
			<content:encoded><![CDATA[<p>在App Store上淘软件，发现了文明也出了iPad版本，相比之下，$1.99的价格真的很公道，几乎不假思索的买了下来，成为我的又一张正版的《文明》系列。尽管这次已经没有了任何介质上的纪念。</p>
<p>几乎已经忘了这是第几次写文明这个系列的游戏了（<a title="永远的文明" href="http://www.litrin.net/2005/11/14/%e6%b0%b8%e8%bf%9c%e7%9a%84%e6%96%87%e6%98%8e/" target="_blank">文明</a>4 <a title="永远的《文明5》" href="http://www.litrin.net/2010/09/29/%e6%b0%b8%e8%bf%9c%e7%9a%84%e3%80%8a%e6%96%87%e6%98%8e5%e3%80%8b/" target="_blank">文明</a>5）。这次的文明只有一个副标题——变革，似乎英文版叫revolution。不知不觉这几年，一个当初的整天玩游戏的愣头青已经身为人父。只能说真的有太多变革了——微博取代了博客，渠道更畅通了，尽管废话更多了；SNS取代了论坛，社群更庞大了，尽管连垃圾时间都没了，做梦也想不到会从iPad上这么容易的获得了《文明》，尽管已经几乎无法像以前那么投入了……</p>
<p><span id="more-1513"></span></p>
<p>170多兆，几乎是我iPad上最大的一个应用了。一运行，典型国产游戏的一番说教。还是惯例，又见“唐公”领导的“九鼎国”，不知英文原版如何。很后悔App Store账户注册地为中国。</p>
<p>就整个系统来说，个人觉得更接近于《文明3》甚至更早的系统，但画面上有很大的强化。由于iPad／iPhone的控制界面的原因，大幅优化了操作界面，还是很顺手，很人性化的。大概考虑到了iPad的机能限制，相对于一贯的PC版本，这次的变革真的不少。</p>
<p>首先，是取消了工人的设置。话说回来，工人一贯是最耗系统资源的单位，数量很多，技能也很多，而且往往会伴随有自动的机制。取消了工人的设置大大降低了系统的资源占用。“变革”里的工人到更像是土地的一个附加属性。工人的取消导致的结果之一是道路系统也有很大的 变革，道路是“买的”，不是“修的”，不需要时间，而且两座城市之间只会存在一条路。导致的结果之二是土地的使用可塑性更小，没有了卫星城和各种耕地、矿山的设置（矿山成了一个城市设施）同样的也没有了传统单位“工作船”。当然，也不存在可以破坏的设施。</p>
<p>行动单位的改变，大概是受了《文明4·刀锋时刻》的启发，这次有了军团的概念。3个单位组合成一个军团，攻守都乘3，但系统仅当作一个单位就可以判断。只能组建，不能拆散，而且只能是3个单位。这次的军事单位设计的也很巧妙，任何一个单位都存在缺陷，而且缺陷被有意夸大。例如：弓箭手擅长守，武士擅长攻。这也就意味着攻守单位被彻底割裂，一个时代的兵种不存在“攻守兼备”的单位。用石头剪刀布的方式维系着军事平衡。军事单位的升级也只能通过建造达芬奇工作室来完成，只有这一次机会。</p>
<p>伟人系统可以说是脱胎于文明5的伟人系统，分为科学家（获取科研成果）、艺术家／商业家（直接卖钱）、政治家／思想家（直接获取某个城市）、工程师（完成城市设施）、医学家（所有城市人口＋1），有可以提升战斗力的军事家，但军事家不算是伟人。有趣的是，凑齐16个伟人才可以建联合国。</p>
<p>胜利条件这次的设置更像是功勋的条件，增加了经济胜利（凑满一定钱数）。外交胜利也变成了直接建联合国就可以，不需要投票表决了。军事胜利的条件只需要占领别人的首都就可以了，不像以往那样要斩尽杀绝。科技胜利也还是那样飞向半人马阿尔法星。</p>
<p>玩了一段时间，觉得这个版本还是有很多不完美的地方。</p>
<p>bug问题，经常挂起后再次进入就莫名其妙的崩溃，害得我不得不重新开机。而且在寻路的情况下经常会出错。这里不再一一描述了。</p>
<p>卡的问题，文明系列的通病了，几乎是没有办法的。</p>
<p>个人觉得这个版本仅仅只是施德·梅尔的授权作品，他本人应该没有直接参与开发。但瑕不掩瑜，对于唯一一个可以随时进行的文明游戏，单是这个变革已经足够让我激动的了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/07/30/%e6%b0%b8%e8%bf%9c%e7%9a%84%e6%96%87%e6%98%8e%c2%b7%e5%8f%98%e9%9d%a9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>遭遇攻击</title>
		<link>http://www.litrin.net/2011/07/13/%e9%81%ad%e9%81%87%e6%94%bb%e5%87%bb/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e9%2581%25ad%25e9%2581%2587%25e6%2594%25bb%25e5%2587%25bb</link>
		<comments>http://www.litrin.net/2011/07/13/%e9%81%ad%e9%81%87%e6%94%bb%e5%87%bb/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 11:42:19 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[站长的blog]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1507</guid>
		<description><![CDATA[这些天比较忙，一直没有关注我的网站。忽然手机上收到了来自Gtalk机器人的报警，说是某IP连接异常，已经触发了防火墙机制。既然已经触发防火墙的响应，暂时不再理会，各自忙各自吧。 考虑到近期黑客猖獗，一连串的搞定了N多知名网站，还是不放心，于是晚饭的时候登录控制台查看下状况——一个来自扬州的IP，想到是国内的同行，顿时有了想要沟通交流的愿望。 同时，向这位兄弟发出邀请，您可以直接联系我，接受QQ之外的任何方式，我很乐意向您透露我的网站结构以及致命缺陷，而且我保证不会以任何方式向第三方透露…… 这位兄弟从凌晨0:54分开始孜孜不倦的暴力破解，似乎更像是要DOS，直到现在仍然不间断的进行中。开源小站——技术博客而已，素昧平生的，至于这么执着吗？好吧，佩服中！ 可惜有一点，所有的URL都是.asp的，我一个Linux环境的主机，何来asp？于是乎根据访问记录touch了一堆asp，算作见面礼吧。正打算放开这个ip的防火墙策略，想想算了，还是适当限制一下速度吧，省得拖垮我这个已经很很烂的带宽了。在这个带宽值钱的年代…… 怎么说呢？很多人误解了黑客（Hacker）的定义，似乎觉得拿几个网上不知道谁写的几个脚本做作刺探，找个漏洞什么的就是黑客了。其实，即便成功了，这也只能说明运气好到爆棚而已。充其量只是一个脚本男孩（script boy）的工作。黑客的任务是找出漏洞，而不是利用漏洞。找漏洞绝对是技术活，不是一蹴而就的。 所谓盗亦有道，在这个小偷偷钱被骂反而会出刀砍人的年代，无所谓了！]]></description>
			<content:encoded><![CDATA[<p>这些天比较忙，一直没有关注我的网站。忽然手机上收到了来自<a title="Gtalk通知机器人脚本" href="http://www.litrin.net/2010/12/02/gtalk%e9%80%9a%e7%9f%a5%e6%9c%ba%e5%99%a8%e4%ba%ba%e8%84%9a%e6%9c%ac/">Gtalk机器人</a>的报警，说是某IP连接异常，已经触发了防火墙机制。既然已经触发防火墙的响应，暂时不再理会，各自忙各自吧。</p>
<p>考虑到近期黑客猖獗，一连串的搞定了N多知名网站，还是不放心，于是晚饭的时候登录控制台查看下状况——一个来自扬州的IP，想到是国内的同行，顿时有了想要沟通交流的愿望。</p>
<p>同时，向这位兄弟发出邀请，您可以直接联系我，<a href="http://www.litrin.net/2008/08/17/qq-for-linux/">接受QQ之外的任何方式</a>，我很乐意向您透露我的网站结构以及致命缺陷，而且我保证不会以任何方式向第三方透露……</p>
<p><span id="more-1507"></span>这位兄弟从凌晨0:54分开始孜孜不倦的暴力破解，似乎更像是要DOS，直到现在仍然不间断的进行中。开源小站——技术博客而已，素昧平生的，至于这么执着吗？好吧，佩服中！</p>
<p>可惜有一点，所有的URL都是.asp的，我一个Linux环境的主机，何来asp？于是乎根据访问记录touch了一堆asp，算作见面礼吧。正打算放开这个ip的防火墙策略，想想算了，还是适当限制一下速度吧，省得拖垮我这个已经很很烂的带宽了。在这个带宽值钱的年代……</p>
<p>怎么说呢？很多人误解了黑客（Hacker）的定义，似乎觉得拿几个网上不知道谁写的几个脚本做作刺探，找个漏洞什么的就是黑客了。其实，即便成功了，这也只能说明运气好到爆棚而已。充其量只是一个脚本男孩（script boy）的工作。黑客的任务是找出漏洞，而不是利用漏洞。找漏洞绝对是技术活，不是一蹴而就的。</p>
<p>所谓盗亦有道，在这个小偷偷钱被骂反而会出刀砍人的年代，无所谓了！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/07/13/%e9%81%ad%e9%81%87%e6%94%bb%e5%87%bb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>运维的CAP原则</title>
		<link>http://www.litrin.net/2011/05/28/%e8%bf%90%e7%bb%b4%e7%9a%84cap%e5%8e%9f%e5%88%99/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e8%25bf%2590%25e7%25bb%25b4%25e7%259a%2584cap%25e5%258e%259f%25e5%2588%2599</link>
		<comments>http://www.litrin.net/2011/05/28/%e8%bf%90%e7%bb%b4%e7%9a%84cap%e5%8e%9f%e5%88%99/#comments</comments>
		<pubDate>Sat, 28 May 2011 07:23:42 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1480</guid>
		<description><![CDATA[小站上的 文章大多以实际操作为主，这次就介绍点理论吧。 曾经跟几个同行聊起了数据库这边的容错方案，有朋友发过类似的牢骚：“网站（或者数据库）做了负载均衡，可用性提高了，单点故障也不怕了，但数据的同步总是慢半拍，无法适用某些应用。如果要求完全解决一一致性的麻烦，就只能到回去。” 程序开发上始终念念不忘的有个“摩尔定律”，归根结底的就是说不要放太多精力去隄防运算速度达不到的问题。在运维以及底层架构涉及上有着同样重要的定律“CAP”，最早由加州大学伯克利分校（又是他）的Eric A. Brewer教授提出的。所有的分布式系统的好坏主要有3个重要的指标来衡量： 一致性（Consistency） 可用性（Availibility） 容错性、鲁棒性原文翻译是“分区容错”（Partition tolerance） 任何一个分布式系统只能同时满足3个条件中的两个，无法同时达到3者兼备。 就拿磁盘RAID来说： RAID0的情况是数据分散在多块硬盘之上，只存一份。由于只有一份数据，不存在数据不同步的情况，一致性得到保障。多磁盘分散IO，性能提升，可用性提升。多块磁盘拼凑一份数据，磁盘损坏的概率正比上升，同时增加磁盘的难度提升，容错性下降。即为了C和A，放弃了P。 RAID1的情况是数据在每个磁盘上做一个备份。由于有多个备份，可能出现多个磁盘上数据不统一的情况，一致性下降。多磁盘分散IO，性能提升，可用性上升。很容易增加备份磁盘，多个备份，磁盘损坏概率反比下降，鲁棒性上升。即为了A和P，放弃了C。 RAID5的情况是一份数据分散在多块硬盘上，另外保存一份校验数据以方便恢复。数据只有一份，不存在一致性的问题。数据读写的同时可能会需要生成校验数据，影响速度，可用性下降。任何一块磁盘的损坏都可以通过剩余的磁盘中的数据和校验数据恢复，鲁棒性上升。即为了C和P，放弃了A。 对于传统的关系数据库的要求又不得不提ACID： 原子性 （Atomicity）数据和操作不可再次分隔 一致性（Consistency）操作结束后，仍可进行同样的操作 隔离性／无关性（Isolation）操作和操作不得影响 不可撤销（Durability） “不可撤销”，“隔离性”，“原子性”都是限制鲁棒性和容错性的P，一致性本身就是C。剩余的A只能作为牺牲的指标。说得明显点就是目前尚没有什么有效的方法让一条SQL同时在多台主机上同时执行正常。跨表SQL很正常，跨数据库操作已经够变态的了，跨系统进行SQL操作而且保证数据的实时和一致几乎是不可能的。 对于传统的关系型数据库来说难度就是CAP三个之中在你需要任何一个的情况下，即便你愿意花钱去升级硬件，也必须以其他的下降作为代价。要么高可用（负载均衡），要么高安全（热备份），要么高容错（事务回滚），想要正比的升级来获取A是不可能的。 这些年大负载架构的出现带动了nosql型数据库。类似memcache，bigtable和Hbase这类的key-value也是一大亮点。相比关系型的数据库而言，新的数据模型仍然无法摆脱这个魔咒，唯一的优势在于这些架构相对灵活，可以根据需要进行CAP取舍，找出真正适合的C 、A、 P比例。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.litrin.net">小站</a>上的 文章大多以实际操作为主，这次就介绍点理论吧。</p>
<p>曾经跟几个同行聊起了数据库这边的容错方案，有朋友发过类似的牢骚：“网站（或者数据库）做了负载均衡，可用性提高了，单点故障也不怕了，但数据的同步总是慢半拍，无法适用某些应用。如果要求完全解决一一致性的麻烦，就只能到回去。”</p>
<p><span id="more-1480"></span></p>
<p>程序开发上始终念念不忘的有个“摩尔定律”，归根结底的就是说不要放太多精力去隄防运算速度达不到的问题。在运维以及底层架构涉及上有着同样重要的定律“CAP”，最早由加州大学伯克利分校（又是他）的Eric A. Brewer教授提出的。所有的分布式系统的好坏主要有3个重要的指标来衡量：</p>
<ul>
<li>一致性（Consistency）</li>
<li>可用性（Availibility）</li>
<li>容错性、鲁棒性原文翻译是“分区容错”（Partition tolerance）</li>
</ul>
<p>任何一个分布式系统只能同时满足3个条件中的两个，无法同时达到3者兼备。</p>
<p>就拿磁盘RAID来说：</p>
<p>RAID0的情况是数据分散在多块硬盘之上，只存一份。由于只有一份数据，不存在数据不同步的情况，一致性得到保障。多磁盘分散IO，性能提升，可用性提升。多块磁盘拼凑一份数据，磁盘损坏的概率正比上升，同时增加磁盘的难度提升，容错性下降。即为了C和A，放弃了P。</p>
<p>RAID1的情况是数据在每个磁盘上做一个备份。由于有多个备份，可能出现多个磁盘上数据不统一的情况，一致性下降。多磁盘分散IO，性能提升，可用性上升。很容易增加备份磁盘，多个备份，磁盘损坏概率反比下降，鲁棒性上升。即为了A和P，放弃了C。</p>
<p>RAID5的情况是一份数据分散在多块硬盘上，另外保存一份校验数据以方便恢复。数据只有一份，不存在一致性的问题。数据读写的同时可能会需要生成校验数据，影响速度，可用性下降。任何一块磁盘的损坏都可以通过剩余的磁盘中的数据和校验数据恢复，鲁棒性上升。即为了C和P，放弃了A。</p>
<p>对于传统的关系数据库的要求又不得不提ACID：</p>
<ul>
<li>原子性 （Atomicity）数据和操作不可再次分隔</li>
<li>一致性（Consistency）操作结束后，仍可进行同样的操作</li>
<li>隔离性／无关性（Isolation）操作和操作不得影响</li>
<li>不可撤销（Durability）</li>
</ul>
<p>“不可撤销”，“隔离性”，“原子性”都是限制鲁棒性和容错性的P，一致性本身就是C。剩余的A只能作为牺牲的指标。说得明显点就是目前尚没有什么有效的方法让一条SQL同时在多台主机上同时执行正常。跨表SQL很正常，跨数据库操作已经够变态的了，跨系统进行SQL操作而且保证数据的实时和一致几乎是不可能的。</p>
<p>对于传统的关系型数据库来说难度就是CAP三个之中在你需要任何一个的情况下，即便你愿意花钱去升级硬件，也必须以其他的下降作为代价。要么高可用（负载均衡），要么高安全（热备份），要么高容错（事务回滚），想要正比的升级来获取A是不可能的。</p>
<p>这些年大负载架构的出现带动了nosql型数据库。类似memcache，bigtable和Hbase这类的key-value也是一大亮点。相比关系型的数据库而言，新的数据模型仍然无法摆脱这个魔咒，唯一的优势在于这些架构相对灵活，可以根据需要进行CAP取舍，找出真正适合的C 、A、 P比例。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/05/28/%e8%bf%90%e7%bb%b4%e7%9a%84cap%e5%8e%9f%e5%88%99/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>从4sq宕机到本·拉登宕机</title>
		<link>http://www.litrin.net/2011/05/03/%e4%bb%8e4sq%e5%ae%95%e6%9c%ba%e5%88%b0%e6%9c%ac%c2%b7%e6%8b%89%e7%99%bb%e5%ae%95%e6%9c%ba/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bb%258e4sq%25e5%25ae%2595%25e6%259c%25ba%25e5%2588%25b0%25e6%259c%25ac%25c2%25b7%25e6%258b%2589%25e7%2599%25bb%25e5%25ae%2595%25e6%259c%25ba</link>
		<comments>http://www.litrin.net/2011/05/03/%e4%bb%8e4sq%e5%ae%95%e6%9c%ba%e5%88%b0%e6%9c%ac%c2%b7%e6%8b%89%e7%99%bb%e5%ae%95%e6%9c%ba/#comments</comments>
		<pubDate>Tue, 03 May 2011 02:29:07 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[业界话题]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1461</guid>
		<description><![CDATA[一直在玩Android版本的FourSquar，前些日子忽然无法登录。作为一个身处中国的ITer，首先很自然的想到是由于“非技术因素”导致。没想到这次却是完完全全的技术故障。而且并非是4sq自己的故障，故障来自亚马逊的云托管服务。 同样的，前些天最让奥巴马同志欣慰的莫过于总算搞掉了本·拉登这块心病。美国人一窝蜂的愣是挤爆了CNN的手机网站。据说全美所有新闻网站的平均响应时间瞬间提升了6倍以上——可以说，都是处在了宕机的边缘。拉登果然是“恐怖之王”连他的死讯都能媲美一次完美的DDOS攻击。 两个新闻都与宕机有关，而且都与移动互联和宕机有关。 不管愿不愿意接受，整个互联网已经逐步向移动互联网过渡。不管是4SQ、微博这样的应用型访问还是CNN这样的资讯型访问，与手机的结合无疑于绑定了所有人的垃圾时间，带来可观的流量和利润——随时，随地，随性访问互联网真的很方便。然而在此乐观的背后是恐怖的瞬间爆发式访问。正如之前twitter不止一次的宕机事故，每一次都少不了热门事件的推手。 相信这些知名网站的架构设计绝对不是我能想象的完善，硬件投入也绝非“抠门”。唯一的可能就是瞬间提升的访问量导致服务器处理速度和集群带宽容量的饱和。于是加上现在无处不在的“云计算”，像4SQ这样的“成长型企业”很自然的选择了亚马逊以及其他的云服务。选择的背后无疑是将自己的全副家当交给了云，云也会有处理速度和带宽的限制，同样也有可能出现爆发式访问，而且很自然的会出现波及效应，导致云中所有的用户离线。当然，亚马逊对此次事故的评价为“前所未见的”，可以预见的是，一切才刚刚开始！ 在此之前我曾经认为移动互联短期内出现的瓶颈是在手机和基站之间的通讯，例如在人多拥挤的地方（事实上是“机多拥挤”）手机信号往往不好。以前年三十大家挤在一起发短信拜年，往往隔几个小时才能收到，对于数据的访问也应如此。后来我看到一篇华为的成功案例，觉得随着时间的推移，迟早这个瓶颈会消失。流量的压力迟早一股脑的扔给了服务端。 对于移动互联的架构师所要考虑的问题就是如何快速的处理“瞬间爆发”，没有任何侥幸心理。这似乎也只有更大的访问冗余可以解决。可以预见的是，现在加上了移动互联的概念后web2.0已经接近成熟，但目前的技术瓶颈已经出现。1.0时代的瓶颈来自带宽，2.0的瓶颈将会是在冗余和弹性上。而对于很多心存幻想的朋友，4SQ的宕机恰恰说明了另一点“云靠不住！”]]></description>
			<content:encoded><![CDATA[<p>一直在玩Android版本的FourSquar，前些日子忽然无法登录。作为一个身处中国的ITer，首先很自然的想到是由于“非技术因素”导致。没想到这次却是完完全全的技术故障。而且并非是4sq自己的故障，故障来自亚马逊的云托管服务。</p>
<p>同样的，前些天最让奥巴马同志欣慰的莫过于总算搞掉了本·拉登这块心病。美国人一窝蜂的愣是挤爆了CNN的手机网站。据说全美所有新闻网站的平均响应时间瞬间提升了6倍以上——可以说，都是处在了宕机的边缘。拉登果然是“恐怖之王”连他的死讯都能媲美一次完美的DDOS攻击。</p>
<p><span id="more-1461"></span></p>
<p><img class="aligncenter" src="http://www.it.com.cn/news/images/2011/05/03/09/news110503mxqtx1.jpg" alt="" width="475" height="437" /></p>
<p>两个新闻都与宕机有关，而且都与移动互联和宕机有关。</p>
<p>不管愿不愿意接受，整个互联网已经逐步向移动互联网过渡。不管是4SQ、微博这样的应用型访问还是CNN这样的资讯型访问，与手机的结合无疑于绑定了所有人的垃圾时间，带来可观的流量和利润——随时，随地，随性访问互联网真的很方便。然而在此乐观的背后是恐怖的瞬间爆发式访问。正如之前twitter不止一次的宕机事故，每一次都少不了热门事件的推手。</p>
<p>相信这些知名网站的架构设计绝对不是我能想象的完善，硬件投入也绝非“抠门”。唯一的可能就是瞬间提升的访问量导致服务器处理速度和集群带宽容量的饱和。于是加上现在无处不在的“云计算”，像4SQ这样的“成长型企业”很自然的选择了亚马逊以及其他的云服务。选择的背后无疑是将自己的全副家当交给了云，云也会有处理速度和带宽的限制，同样也有可能出现爆发式访问，而且很自然的会出现波及效应，导致云中所有的用户离线。当然，亚马逊对此次事故的评价为“前所未见的”，可以预见的是，一切才刚刚开始！</p>
<p>在此之前我曾经认为移动互联短期内出现的瓶颈是在手机和基站之间的通讯，例如在人多拥挤的地方（事实上是“机多拥挤”）手机信号往往不好。以前年三十大家挤在一起发短信拜年，往往隔几个小时才能收到，对于数据的访问也应如此。后来我看到一篇<a rel="nofollow" target="_blank" href="http://www.chinairn.com/doc/70290/100714.html" target="_blank">华为的成功案例</a>，觉得随着时间的推移，迟早这个瓶颈会消失。流量的压力迟早一股脑的扔给了服务端。</p>
<p>对于移动互联的架构师所要考虑的问题就是如何快速的处理“瞬间爆发”，没有任何侥幸心理。这似乎也只有更大的访问冗余可以解决。可以预见的是，现在加上了移动互联的概念后web2.0已经接近成熟，但目前的技术瓶颈已经出现。1.0时代的瓶颈来自带宽，2.0的瓶颈将会是在冗余和弹性上。而对于很多心存幻想的朋友，4SQ的宕机恰恰说明了另一点“云靠不住！”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/05/03/%e4%bb%8e4sq%e5%ae%95%e6%9c%ba%e5%88%b0%e6%9c%ac%c2%b7%e6%8b%89%e7%99%bb%e5%ae%95%e6%9c%ba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>你我何尝不是百度</title>
		<link>http://www.litrin.net/2011/03/30/%e4%bd%a0%e6%88%91%e4%bd%95%e5%b0%9d%e4%b8%8d%e6%98%af%e7%99%be%e5%ba%a6/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bd%25a0%25e6%2588%2591%25e4%25bd%2595%25e5%25b0%259d%25e4%25b8%258d%25e6%2598%25af%25e7%2599%25be%25e5%25ba%25a6</link>
		<comments>http://www.litrin.net/2011/03/30/%e4%bd%a0%e6%88%91%e4%bd%95%e5%b0%9d%e4%b8%8d%e6%98%af%e7%99%be%e5%ba%a6/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 02:17:17 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[业界话题]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1421</guid>
		<description><![CDATA[最近，很多作家很烦，因为百度文库侵犯了他们的著作权，抢走了他们的饭碗。最近百度更烦，因为作家们要捍卫他们吃饭的权利，闹上了法庭。要么赔钱，要么停站，归根结底都是要赔钱。 对百度存在一丝反感，到不是因为什么无聊的竞价排名之类的。反感的只是他太会利用国人的劣根去赚钱了，当然，为了赚更多的钱，百度似乎在有意无意的去培养国人的劣根性，直至此次事件的爆发。 纵然此次事件中百度确实存在过错，但仔细想想，你我何尝又不是百度呢？ 我自认为是版权意识比较好的：所有的书都是正版。从上一台HP520 到目前使用的Mac本上，所有在用的软件、包括操作系统都是正版（免费的、开源的也算是正版）。即便如果没有正版的系统，我也完全可以无障碍的使用免费的Linux。尽管如此，仍然无法回避的盗版问题是一部分的游戏、电影和音乐。无法正版化的问题是，很多作品即使我想要去买一套正版来收藏，市面上也根本买不到，更何况我曾经买过40几块钱一套的cd，拆开封套才发现竟然是“伪正版”。花了正版的钱，买来盗版，我还不如直接去网上download。电影在线观看不属于盗版范畴，可是至少目前的网络状况，我还无法享受“清晰流畅的观影体验”。 OK，扯回来。 记得N多年前，小霸王红遍大江南北的时候，那时的“黄卡”一盘盘的价格都不菲。基本上稍微像样点的游戏卡，价格都要比游戏机本身都贵。可照样有人几十盘几十盘的保存至今。我一开始以为那就是正版的，后来我才明白，其实那也是盗版。按照汇率来讲，当时一盘卡的平均价格在$20左右，当时的平均月薪无论如何也很难超过$50。这相当于现在至少一部手机的支出比例。尽管那个时代的人大多数的磁带都是盗版，个人觉得那时候正版的磁带相比空白磁带或者盗版磁带的价格差距小到几毛钱，属于“伪正版”的范畴。我觉得如果能够将这个传统保留下来，正版化是水到渠成的事。 很快就来到了宽带网络时代，一切变了。记的曾经在地摊上买了一套什么游戏似乎是极品飞车的某个版本，2CD，花了10块钱。公司同事嘲笑我为什么不直接从网上bt。我弱弱的说，家里的宽带不是包月的。两者之间有80块每个月的差价。他强烈建议我改成包月，只为下载可以从地摊上花10块钱就能玩好几个月的游戏。恐怕单是挂bt的电费每个月都不止这10块钱了吧。 想到现在3G时代的来临，前些日子iphone4的热销。很多人宁可花1000块给黄牛买高价手机，拿在手上把玩的同时还会说“不贵！值！”却不忍心花$0.99折合不到7块钱买个最便宜的应用，商家直接提供“越狱”服务赚钱。这世道！ 正如韩寒在博客中所说的，兴许这些抗议的作家真的很可怜，每年只能拿到不到2万块的稿费。百度的做法是砸饭碗的生意。我相信，现在即便是只拿2万块稿费的作家也都是直接在计算机上写稿吧。他敢保证他计算机里的软件、音乐、电影都是正版的吗？他敢保证自己不在百度文库之类的网站上参考或者摘抄吗？用盗版方便吗？为什么你用，就不许别人用呢？！ 之前google想要索引图书，愿意每个作家给点钱把图书的目录上网——其实做的工作和当当、卓越、京东的在线售书没什么区别。何况有钱拿？作家一个个严辞拒绝，痛骂google在作恶。这次百度呢？养虎为患了吧。 可你我又何尝不是百度呢？]]></description>
			<content:encoded><![CDATA[<p>最近，很多作家很烦，因为百度文库侵犯了他们的著作权，抢走了他们的饭碗。最近百度更烦，因为作家们要捍卫他们吃饭的权利，闹上了法庭。要么赔钱，要么停站，归根结底都是要赔钱。</p>
<p>对百度存在一丝反感，到不是因为什么无聊的竞价排名之类的。反感的只是他太会利用国人的劣根去赚钱了，当然，为了赚更多的钱，百度似乎在有意无意的去培养国人的劣根性，直至此次事件的爆发。</p>
<p>纵然此次事件中百度确实存在过错，但仔细想想，你我何尝又不是百度呢？</p>
<p><span id="more-1421"></span>我自认为是版权意识比较好的：所有的书都是正版。从上一台HP520 到目前使用的Mac本上，所有在用的软件、包括操作系统都是正版（免费的、开源的也算是正版）。即便如果没有正版的系统，我也完全可以无障碍的使用免费的Linux。尽管如此，仍然无法回避的盗版问题是一部分的游戏、电影和音乐。无法正版化的问题是，很多作品即使我想要去买一套正版来收藏，市面上也根本买不到，更何况我曾经买过40几块钱一套的cd，拆开封套才发现竟然是“伪正版”。花了正版的钱，买来盗版，我还不如直接去网上download。电影在线观看不属于盗版范畴，可是至少目前的网络状况，我还无法享受“清晰流畅的观影体验”。</p>
<p>OK，扯回来。</p>
<p>记得N多年前，小霸王红遍大江南北的时候，那时的“黄卡”一盘盘的价格都不菲。基本上稍微像样点的游戏卡，价格都要比游戏机本身都贵。可照样有人几十盘几十盘的保存至今。我一开始以为那就是正版的，后来我才明白，其实那也是盗版。按照汇率来讲，当时一盘卡的平均价格在$20左右，当时的平均月薪无论如何也很难超过$50。这相当于现在至少一部手机的支出比例。尽管那个时代的人大多数的磁带都是盗版，个人觉得那时候正版的磁带相比空白磁带或者盗版磁带的价格差距小到几毛钱，属于“伪正版”的范畴。我觉得如果能够将这个传统保留下来，正版化是水到渠成的事。</p>
<p>很快就来到了宽带网络时代，一切变了。记的曾经在地摊上买了一套什么游戏似乎是极品飞车的某个版本，2CD，花了10块钱。公司同事嘲笑我为什么不直接从网上bt。我弱弱的说，家里的宽带不是包月的。两者之间有80块每个月的差价。他强烈建议我改成包月，只为下载可以从地摊上花10块钱就能玩好几个月的游戏。恐怕单是挂bt的电费每个月都不止这10块钱了吧。</p>
<p>想到现在3G时代的来临，前些日子iphone4的热销。很多人宁可花1000块给黄牛买高价手机，拿在手上把玩的同时还会说“不贵！值！”却不忍心花$0.99折合不到7块钱买个最便宜的应用，商家直接提供“越狱”服务赚钱。这世道！</p>
<p>正如韩寒在博客中所说的，兴许这些抗议的作家真的很可怜，每年只能拿到不到2万块的稿费。百度的做法是砸饭碗的生意。我相信，现在即便是只拿2万块稿费的作家也都是直接在计算机上写稿吧。他敢保证他计算机里的软件、音乐、电影都是正版的吗？他敢保证自己不在百度文库之类的网站上参考或者摘抄吗？用盗版方便吗？为什么你用，就不许别人用呢？！</p>
<p>之前google想要索引图书，愿意每个作家给点钱把图书的目录上网——其实做的工作和当当、卓越、京东的在线售书没什么区别。何况有钱拿？作家一个个严辞拒绝，痛骂google在作恶。这次百度呢？养虎为患了吧。</p>
<p>可你我又何尝不是百度呢？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/03/30/%e4%bd%a0%e6%88%91%e4%bd%95%e5%b0%9d%e4%b8%8d%e6%98%af%e7%99%be%e5%ba%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>写在zipsite1.0发布之后</title>
		<link>http://www.litrin.net/2011/03/27/%e5%86%99%e5%9c%a8zipsite1-0%e5%8f%91%e5%b8%83%e4%b9%8b%e5%90%8e/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%2586%2599%25e5%259c%25a8zipsite1-0%25e5%258f%2591%25e5%25b8%2583%25e4%25b9%258b%25e5%2590%258e</link>
		<comments>http://www.litrin.net/2011/03/27/%e5%86%99%e5%9c%a8zipsite1-0%e5%8f%91%e5%b8%83%e4%b9%8b%e5%90%8e/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 13:51:45 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1418</guid>
		<description><![CDATA[首先，大肆宣扬一番：今天zipsite正式发布了第一个里程碑式版本 Ver1.0 Release！ 话说去年11月份，刚接到一个项目，要在Android平台上开发一个基于手机通讯录的应用。众所周知的原因，Android开发者网站http://developer.android.com/ 在国内无法访问。一开始，我直接下载了本地版本的html全站镜像文件。作为一开始了解这个平台，读读SDK搭建方法一点问题也没有。后来对照几个example进行开发联系，发觉很多类型不知道何去何从，用了本地搜索发觉也是摸不着头脑。于是有了一个想法：为何不把手册放在网上，借助google来索引整个网站。 于是我马上切换到Geeker模式，浏览手册的目录，发觉所有的html都是很规范的相对路径，完全可以直接放在网上。而且主目录下已经有了部分GAE的文件，似乎可以很方便的上传到GAE。尝试了几次，大失所望，原来单是文件数目就有接近3000，超出了GAE 1000个文件的限制很多。 切换回程序员模式。想到之前曾经写过一个系统底层的Python脚本，为了方便翻阅归档的文件，通过python对于zip良好的支持和多线程操作，一次性diff多个版本的区别。用这种方式可以解决GAE的一系列限制，上传网站。 很快，最基本的代码完成了，网站也上传成功，大部分情况工作的也不错。于是有了想要把这个项目分享的想法。 既然要开源，只是基本的功能实现是不够的，而且代码也不够清晰。就算原理再简单，也应该给人清新的感觉，于是先重写了原型代码。想了很久有什么功能需要再添加，后来想到了GAE的CPU Time其实也是有限制的，zip解压又是CPU耗费型的。又通过GAE的Data Store和Memcache做了双重缓冲。大致上有点意思了，于是申请了google code的空间，通过SVN放出了第一个版本ver0.1作为测试。最后，为了显得有点可扩展性，写了一个接口，可以支持插件，其实主要是纯文本和HTML，最初的想法只是看到Android手册中的HTML有太多的空格和换行，很浪费带宽而已。 话说当时正巧我的广告帐户里面攒到了$80多之后，很久没有动静。始终无法达到最低的汇款金额$100。要知道，$80比$0还要折磨人。切换到商人模式，复杂化了插件，让他可以自动的制定位置插入广告。又复杂了一步。 本来这个项目只是为了想要借助google的本地索引来完成一些事情，谁知道上线很久以后，Google仍不能完成全站的收录。SEO吧。又写了sitemap的支持功能到项目中，发布了Ver0.2版本。 剩下的任务就是不断的修正bug而已。春节前几天，我觉得整个项目该有的功能都差不多了，于是这才开始整理feature——生命周期完全颠倒了。也正是这个原因，回头看看之前的代码，已经乱的差不多了。特别是插件的接口我觉得真的很垃圾，况且即便是程序员，也没有几个人愿意通过大量的正则表达式来实现功能，于是索性取消了。 为了给这个项目制作一个像样点的文档，我特地在Mac app store里面买了一套iwork，花了差不多$90大洋。呵呵，也算是开发费用的一部分吧。 然后就是Ver1.0 RC 版本，虽然这个项目没有什么人关注，但很庆幸，有几个人特地找到我，愿意参加测试，在此感谢下！ 今天终于咬牙发布了最终的Release版本。希望不要马上推出个什么紧急补丁之类的东西。 说到下一个版本，我觉得应该遵守GAE的习惯，采用整数版本号来表示Release版本，小数表示tag或者snap版本。2版本应该增加一个管理员界面，在后台上多做些文章；重新启用插件部分，当然表达方式越简单越好。Zipsite项目的最终目标是成为一个运行在GAE沙盒内部的一个快速、傻瓜化的网站搭建系统。]]></description>
			<content:encoded><![CDATA[<p>首先，大肆宣扬一番：今天<a rel="nofollow" target="_blank" title="ZipSite project" href="http://code.google.com/p/zipsite" target="_blank">zipsite</a>正式发布了第一个里程碑式版本 Ver1.0 Release！</p>
<p>话说去年11月份，刚接到一个项目，要在Android平台上开发一个基于手机通讯录的应用。众所周知的原因，Android开发者网站<a rel="nofollow" target="_blank" href="http://developer.android.com/">http://developer.android.com/</a> 在国内无法访问。一开始，我直接下载了本地版本的html全站镜像文件。作为一开始了解这个平台，读读SDK搭建方法一点问题也没有。后来对照几个example进行开发联系，发觉很多类型不知道何去何从，用了本地搜索发觉也是摸不着头脑。于是有了一个想法：为何不把手册放在网上，借助google来索引整个网站。</p>
<p><span id="more-1418"></span></p>
<p>于是我马上切换到Geeker模式，浏览手册的目录，发觉所有的html都是很规范的相对路径，完全可以直接放在网上。而且主目录下已经有了部分GAE的文件，似乎可以很方便的上传到GAE。尝试了几次，大失所望，原来单是文件数目就有接近3000，超出了GAE 1000个文件的限制很多。</p>
<p>切换回程序员模式。想到之前曾经写过一个系统底层的Python脚本，为了方便翻阅归档的文件，通过python对于zip良好的支持和多线程操作，一次性diff多个版本的区别。用这种方式可以解决GAE的一系列限制，上传网站。<br />
很快，最<a rel="nofollow" target="_blank" title="突破GAE文件数量的限制" href="http://www.litrin.net/2010/11/26/%e7%aa%81%e7%a0%b4gae%e6%96%87%e4%bb%b6%e6%95%b0%e9%87%8f%e7%9a%84%e9%99%90%e5%88%b6/" target="_blank">基本的代码</a>完成了，<a title="Android开发者手册" href="http://android-sdk.appspot.com/" target="_blank">网站也上传成功</a>，大部分情况工作的也不错。于是有了想要把这个项目分享的想法。<br />
既然要开源，只是基本的功能实现是不够的，而且代码也不够清晰。就算原理再简单，也应该给人清新的感觉，于是先重写了原型代码。想了很久有什么功能需要再添加，后来想到了GAE的CPU Time其实也是有限制的，zip解压又是CPU耗费型的。又通过GAE的Data Store和Memcache做了双重缓冲。大致上有点意思了，于是申请了google code的空间，通过SVN放出了第一个版本ver0.1作为测试。最后，为了显得有点可扩展性，写了一个接口，可以支持插件，其实主要是纯文本和HTML，最初的想法只是看到Android手册中的HTML有太多的空格和换行，很浪费带宽而已。</p>
<p>话说当时正巧我的广告帐户里面攒到了$80多之后，很久没有动静。始终无法达到最低的汇款金额$100。要知道，$80比$0还要折磨人。切换到商人模式，复杂化了插件，让他可以自动的制定位置插入广告。又复杂了一步。</p>
<p>本来这个项目只是为了想要借助google的本地索引来完成一些事情，谁知道上线很久以后，Google仍不能完成全站的收录。SEO吧。又写了sitemap的支持功能到项目中，发布了Ver0.2版本。</p>
<p>剩下的任务就是不断的修正bug而已。春节前几天，我觉得整个项目该有的功能都差不多了，于是这才开始整理feature——生命周期完全颠倒了。也正是这个原因，回头看看之前的代码，已经乱的差不多了。特别是插件的接口我觉得真的很垃圾，况且即便是程序员，也没有几个人愿意通过大量的正则表达式来实现功能，于是索性取消了。</p>
<p>为了给这个项目制作一个像样点的文档，我特地在Mac app store里面买了一套iwork，花了差不多$90大洋。呵呵，也算是开发费用的一部分吧。</p>
<p>然后就是Ver1.0 RC 版本，虽然这个项目没有什么人关注，但很庆幸，有几个人特地找到我，愿意参加测试，在此感谢下！</p>
<p>今天终于咬牙发布了最终的Release版本。希望不要马上推出个什么紧急补丁之类的东西。</p>
<p>说到下一个版本，我觉得应该遵守GAE的习惯，采用整数版本号来表示Release版本，小数表示tag或者snap版本。2版本应该增加一个管理员界面，在后台上多做些文章；重新启用插件部分，当然表达方式越简单越好。Zipsite项目的最终目标是成为一个运行在GAE沙盒内部的一个快速、傻瓜化的网站搭建系统。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/03/27/%e5%86%99%e5%9c%a8zipsite1-0%e5%8f%91%e5%b8%83%e4%b9%8b%e5%90%8e/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>说点哲学话题</title>
		<link>http://www.litrin.net/2011/03/24/%e8%af%b4%e7%82%b9%e5%93%b2%e5%ad%a6%e8%af%9d%e9%a2%98/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e8%25af%25b4%25e7%2582%25b9%25e5%2593%25b2%25e5%25ad%25a6%25e8%25af%259d%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2011/03/24/%e8%af%b4%e7%82%b9%e5%93%b2%e5%ad%a6%e8%af%9d%e9%a2%98/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 04:58:02 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[站长的blog]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1414</guid>
		<description><![CDATA[又一次见到了弱肉强食，见识到了尔虞我诈，尽管我远离事件中心，看客而已。曾经对现实充满幻想，以为所有的一切都是有条不紊的。结果发现其实所有的一起连“条”都没有。人心隔肚皮。 看过黑泽明大师那部不朽的名作《罗生门》，兴许每个人或多或少的都在为自己的利益编造自己的谎言，谎言说的久了，连自己都被欺骗了。对于谎言，所谓对错，根本上只是要看是否存在由于此谎言的受害者。如果说允许自己和别人谎言的存在，是一种虚伪的表现，那如何才能称得上是“真实”？ 不管从历史上看，还是现在来说，中国人——或者说华人永远盛产的一类人就是伪君子。这不是生存环境的问题，不管中华帝国最强盛或是最衰弱的时候都一样。只能说是文化根基的问题。难道说孔孟之道里，没有一句话是针对伪君子的？ “夫子之道，忠恕而已。” ——《论语·里仁》 何为圣人，忠和恕两个字就可以概括。 历来对于忠恕二字的解释，始终停留在忠君，恕民的层面。“君让臣死，臣不得不死。”即是忠。“大人不计小人过”，即恕。显然，随着封建制的毁灭，这两种情况已经没有了生存土壤，更何况又出现了“愚忠”这一说。那何来忠恕？ 我是无神论者，我不会向虔诚的基督徒那样活一生只为一句“主会宽恕你的”，或者像佛教徒那样只为销“业”。同样我也不会相信做了坏事一定会遭天谴，或者说我这种级别的人能做的恶根本不值得麻烦百忙之中的雷公他老人家出手。何为忠恕？ 我坚信的一点是：没有什么救世主，那么“本我”就是自己的神仙救世主。 忠，即要忠于自己的内心，忠于自己的良心，忠于自己最敏感的神经！ 恕，就是要自己能被自己的良心所宽恕。 文言之精妙在于字字参悟，这兴许不是曾子参评价师傅孔子丘的本意。但我深信的是，这比后世有意扭曲忠恕二字的解释更加接近本意。 还原回来，我认为这句俗语最贴切“不做亏心事 ，不怕鬼敲门！”“罗生门”，本指生死穿越之门，作为电影里的寓意还有一重就是指生不如死。对于人来说最痛苦的地狱并不是在你死后的世界里，而是存在于你自己的内心，存在于每个翻来覆去睡不着的夜晚，如被摄魂一般挥之不去。同样有一部电影描写这种存在，那就是刘伟强的《无间道》！“受身无间永远不死，寿长乃无间地狱中之大劫。”阿鼻地狱可是十八层地狱中最后一层。 “我宁愿做一个问心无愧的死鬼，也不愿做一个半夜怕鬼来敲门的活人！”——佟香玉《武林外传（电影版）》]]></description>
			<content:encoded><![CDATA[<p>又一次见到了弱肉强食，见识到了尔虞我诈，尽管我远离事件中心，看客而已。曾经对现实充满幻想，以为所有的一切都是有条不紊的。结果发现其实所有的一起连“条”都没有。人心隔肚皮。</p>
<p>看过黑泽明大师那部不朽的名作《罗生门》，兴许每个人或多或少的都在为自己的利益编造自己的谎言，谎言说的久了，连自己都被欺骗了。对于谎言，所谓对错，根本上只是要看是否存在由于此谎言的受害者。如果说允许自己和别人谎言的存在，是一种虚伪的表现，那如何才能称得上是“真实”？</p>
<p><span id="more-1414"></span></p>
<p>不管从历史上看，还是现在来说，中国人——或者说华人永远盛产的一类人就是伪君子。这不是生存环境的问题，不管中华帝国最强盛或是最衰弱的时候都一样。只能说是文化根基的问题。难道说孔孟之道里，没有一句话是针对伪君子的？</p>
<p>“夫子之道，忠恕而已。” ——《论语·里仁》</p>
<p>何为圣人，忠和恕两个字就可以概括。</p>
<p>历来对于忠恕二字的解释，始终停留在忠君，恕民的层面。“君让臣死，臣不得不死。”即是忠。“大人不计小人过”，即恕。显然，随着封建制的毁灭，这两种情况已经没有了生存土壤，更何况又出现了“愚忠”这一说。那何来忠恕？</p>
<p>我是无神论者，我不会向虔诚的基督徒那样活一生只为一句“主会宽恕你的”，或者像佛教徒那样只为销“业”。同样我也不会相信做了坏事一定会遭天谴，或者说我这种级别的人能做的恶根本不值得麻烦百忙之中的雷公他老人家出手。何为忠恕？</p>
<p>我坚信的一点是：没有什么救世主，那么“本我”就是自己的神仙救世主。</p>
<p><em>忠，即要忠于自己的内心，忠于自己的良心，忠于自己最敏感的神经！</em><br />
<em> 恕，就是要自己能被自己的良心所宽恕。</em></p>
<p>文言之精妙在于字字参悟，这兴许不是曾子参评价师傅孔子丘的本意。但我深信的是，这比后世有意扭曲忠恕二字的解释更加接近本意。</p>
<p>还原回来，我认为这句俗语最贴切“不做亏心事 ，不怕鬼敲门！”“罗生门”，本指生死穿越之门，作为电影里的寓意还有一重就是指生不如死。对于人来说最痛苦的地狱并不是在你死后的世界里，而是存在于你自己的内心，存在于每个翻来覆去睡不着的夜晚，如被摄魂一般挥之不去。同样有一部电影描写这种存在，那就是刘伟强的《无间道》！“受身无间永远不死，寿长乃无间地狱中之大劫。”阿鼻地狱可是十八层地狱中最后一层。</p>
<p>“我宁愿做一个问心无愧的死鬼，也不愿做一个半夜怕鬼来敲门的活人！”——佟香玉《武林外传（电影版）》</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/03/24/%e8%af%b4%e7%82%b9%e5%93%b2%e5%ad%a6%e8%af%9d%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>在Sun关站之前</title>
		<link>http://www.litrin.net/2011/03/18/%e5%9c%a8sun%e5%85%b3%e7%ab%99%e4%b9%8b%e5%89%8d/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%259c%25a8sun%25e5%2585%25b3%25e7%25ab%2599%25e4%25b9%258b%25e5%2589%258d</link>
		<comments>http://www.litrin.net/2011/03/18/%e5%9c%a8sun%e5%85%b3%e7%ab%99%e4%b9%8b%e5%89%8d/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 02:48:01 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[solaris]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1410</guid>
		<description><![CDATA[就在前不久，Oracle宣布：原来的Sun官网将在6月1日彻底关闭。很好，很好！Oracle又一次成功的进行了一次文化灭绝。 据说www.sun.com是全球第5个域名。可见Sun在整个互联网生态中的奠基地位。虽然日后的Sun日渐衰微，逐步逐步的沦落到要被关站的悲惨地步。尽管目前所有的流量已经被www.oracle.com照单全收了。 Sun是一家标准的技术公司，技术总会有瓶颈。 oracle是典型的商业公司，有利可图是第一位。 于是Sun被收购，sparc项目被停了，半死不活的Solaris，半死不活的sun服务器，留下赚钱的Java而已。 这可能就是纯做技术的宿命吧！]]></description>
			<content:encoded><![CDATA[<p>就在前不久，Oracle宣布：原来的Sun官网将在6月1日彻底关闭。很好，很好！Oracle又一次成功的进行了一次文化灭绝。</p>
<p>据说www.sun.com是全球第5个域名。可见Sun在整个互联网生态中的奠基地位。虽然日后的Sun日渐衰微，逐步逐步的沦落到要被关站的悲惨地步。尽管目前所有的流量已经被www.oracle.com照单全收了。</p>
<p><span id="more-1410"></span>Sun是一家标准的技术公司，技术总会有瓶颈。</p>
<p>oracle是典型的商业公司，有利可图是第一位。</p>
<p>于是Sun被收购，sparc项目被停了，半死不活的Solaris，半死不活的sun服务器，留下赚钱的Java而已。</p>
<p>这可能就是纯做技术的宿命吧！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/03/18/%e5%9c%a8sun%e5%85%b3%e7%ab%99%e4%b9%8b%e5%89%8d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redhat的壁垒</title>
		<link>http://www.litrin.net/2011/03/12/redhat%e7%9a%84%e5%a3%81%e5%9e%92/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=redhat%25e7%259a%2584%25e5%25a3%2581%25e5%259e%2592</link>
		<comments>http://www.litrin.net/2011/03/12/redhat%e7%9a%84%e5%a3%81%e5%9e%92/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 06:19:12 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[开源7788]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[业界话题]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1406</guid>
		<description><![CDATA[前些日子，Redhat宣布将要改变现有的发行版本和补丁包的命名方式，并且直言不讳的说这样是为了“有效的防止竞争对手介入”。一点也不突然，自从Fedora从Redhat中分离的那一天起，这一天就迟早会到来，我反而觉得Redhat动手太迟了。 相比正统到迂腐的“HAT”，“FEDORA”休闲了很多，也正如单词本身的定位，现在的Redhat事实上是Redhat Enterprise Linux( 红帽企业Linux,RHEL)的意思，fedora成为了社区维护的Linux。事实证明，这种战略确实在尽可能的减少开支的情况下给Redhat带来了可观的收益。 说起盈利，目前正统的linux厂商甚至于开源软件厂商的盈利模式无外乎卖服务而已。显然的是，Redhat不但从技术上还是市场上，这些年一直是 作为商业Linux的标杆而“神一样的存在”。大量的应用甚至到专门为Redhat而开发。但说实话，Redhat的价格高的有些离谱，授权费用甚至超过商业Windows或者Unix。作为商业行为我们无可厚非，但对于这些专属应用的下场确实一个艰难的决定：要么放弃，要么使用非授权版本的RHEL。显然Centos的存在就是弥补了这样一个空缺——除了商标之外就是一个RHEL。当然，一贯在商业上滑头的Oracle也是搞了一套RHEL like的Oracle Linux；类似的还有Novell提出可以为客户维护RHEL的服务，这里也不再累述。 所有这一切建立的基础是什么？正式基于RHEL虽然是商业软件，但不得不开源。不可否认，目前Linux的体系里大多数的更新都出自 redhat，没有人敢于否认这一点。甚至可以这么说：“目前最有影响力的企业级Linux都是基于RPM的，RPM本身就是Redhat的！”但看着自己的成果却被别人拿去赚钱，没有人会受这样的窝囊气。此次Redhat做出的改变只能说是在GPL框架内做出的最后反抗。但这样后果如何？ 可能一：Redhat破坏了目前的生态，Centos可以转为独立分支；Oracle 甚至可以直接转向Solaris，RPM体系逐渐衰落。直至最后影响到自己，进而影响到整个Linux的社区。或者说RPM旁落，Debian系里将会出现下一个Redhat。 可能二：Redhat借此击垮了Centos和Oracle Linux，让自己独大，赚取更多利益。到头来可能会是更高的授权费用。但相对这确实是有利于Linux生态的。 可能三：这个可能是最有可能的结果，也是最无聊的。大家依旧我行我素，依然现状不改。 OK，说起服务，不得不提Apple。最近Apple最新的IDE－Xcode4也放在了App store里出售，标价$4.99。要知道Mac上TextMate这个简单的文本编辑器都要卖到$56。区区5刀只能说是象征性收费。这是一个很有意思的问题，也许不久以后的将来IT业的收费模式将会逐步改变为“微收费”模式。像Redhat这样的情况完全可以完全精确到每次升级收取一定数量的服务费，而不是像现在这样按照年这样大的粒度。相信不少企业也会认同这样的收费模式，量上去了，平摊成本自然会降低。这同时也是提醒了很多特定模式下的客户：“收费意味着更高的服务质量和体验！”]]></description>
			<content:encoded><![CDATA[<p>前些日子，Redhat宣布将要改变现有的发行版本和补丁包的命名方式，并且直言不讳的说这样是为了“有效的防止竞争对手介入”。一点也不突然，自从Fedora从Redhat中分离的那一天起，这一天就迟早会到来，我反而觉得Redhat动手太迟了。</p>
<p>相比正统到迂腐的“HAT”，“FEDORA”休闲了很多，也正如单词本身的定位，现在的Redhat事实上是Redhat Enterprise Linux( 红帽企业Linux,RHEL)的意思，fedora成为了社区维护的Linux。事实证明，这种战略确实在尽可能的减少开支的情况下给Redhat带来了可观的收益。</p>
<p>说起盈利，目前正统的linux厂商甚至于开源软件厂商的盈利模式无外乎卖服务而已。显然的是，Redhat不但从技术上还是市场上，这些年一直是 作为商业Linux的标杆而“神一样的存在”。大量的应用甚至到专门为Redhat而开发。但说实话，Redhat的价格高的有些离谱，授权费用甚至超过商业Windows或者Unix。作为商业行为我们无可厚非，但对于这些专属应用的下场确实一个艰难的决定：要么放弃，要么使用非授权版本的RHEL。显然Centos的存在就是弥补了这样一个空缺——除了商标之外就是一个RHEL。当然，一贯在商业上滑头的Oracle也是搞了一套RHEL like的Oracle Linux；类似的还有Novell提出可以为客户维护RHEL的服务，这里也不再累述。</p>
<p><span id="more-1406"></span><br />
所有这一切建立的基础是什么？正式基于RHEL虽然是商业软件，但不得不开源。不可否认，目前Linux的体系里大多数的更新都出自 redhat，没有人敢于否认这一点。甚至可以这么说：“目前最有影响力的企业级Linux都是基于RPM的，RPM本身就是Redhat的！”但看着自己的成果却被别人拿去赚钱，没有人会受这样的窝囊气。此次Redhat做出的改变只能说是在GPL框架内做出的最后反抗。但这样后果如何？</p>
<p style="padding-left: 30px;">可能一：Redhat破坏了目前的生态，Centos可以转为独立分支；Oracle 甚至可以直接转向Solaris，RPM体系逐渐衰落。直至最后影响到自己，进而影响到整个Linux的社区。或者说RPM旁落，Debian系里将会出现下一个Redhat。<br />
可能二：Redhat借此击垮了Centos和Oracle Linux，让自己独大，赚取更多利益。到头来可能会是更高的授权费用。但相对这确实是有利于Linux生态的。<br />
可能三：这个可能是最有可能的结果，也是最无聊的。大家依旧我行我素，依然现状不改。</p>
<p>OK，说起服务，不得不提Apple。最近Apple最新的IDE－Xcode4也放在了App store里出售，标价$4.99。要知道Mac上TextMate这个简单的文本编辑器都要卖到$56。区区5刀只能说是象征性收费。这是一个很有意思的问题，也许不久以后的将来IT业的收费模式将会逐步改变为“微收费”模式。像Redhat这样的情况完全可以完全精确到每次升级收取一定数量的服务费，而不是像现在这样按照年这样大的粒度。相信不少企业也会认同这样的收费模式，量上去了，平摊成本自然会降低。这同时也是提醒了很多特定模式下的客户：“收费意味着更高的服务质量和体验！”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/03/12/redhat%e7%9a%84%e5%a3%81%e5%9e%92/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新·MacBook Pro</title>
		<link>http://www.litrin.net/2011/03/04/%e6%96%b0%c2%b7macbook-pro/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e6%2596%25b0%25c2%25b7macbook-pro</link>
		<comments>http://www.litrin.net/2011/03/04/%e6%96%b0%c2%b7macbook-pro/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 05:11:48 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1399</guid>
		<description><![CDATA[我之前两次笔记本的更换： http://www.litrin.net/2006/01/13/新·小黑/ http://www.litrin.net/2007/12/09/新·hp520/ 借着Apple最新推出的Mac Book pro的东风，我也第一时间入手了一台700款，最低配置的。 配置如下： CPU: Intel i5 2.3G Ram: 4G HDD: 320G 13寸屏 先不说别的，上图片！ 一番设置后，从app store里买了一套iwork page，再次花费$30。不过很超值！ 装上xcode, Eclipse, MSN，设置邮箱，机器基本设置完成。 比教郁闷的是没有一个免费的，功能上类似notepad++的软件存在，只能暂时使用textwrangler替代部分功能。 &#160;]]></description>
			<content:encoded><![CDATA[<p>我之前两次笔记本的更换：</p>
<p><a title="新·小黑" href="http://www.litrin.net/2006/01/13/新·小黑/">http://www.litrin.net/2006/01/13/新·小黑/</a></p>
<p><a title="新·hp520" href="http://www.litrin.net/2007/12/09/新·hp520/" target="_blank">http://www.litrin.net/2007/12/09/新·hp520/</a></p>
<p>借着Apple最新推出的Mac Book pro的东风，我也第一时间入手了一台700款，最低配置的。</p>
<p>配置如下：</p>
<ul>
<li>CPU: Intel i5 2.3G</li>
<li>Ram: 4G</li>
<li>HDD: 320G</li>
<li>13寸屏</li>
</ul>
<p>先不说别的，上图片！</p>
<p><span id="more-1399"></span><a href="http://www.litrin.net/wp-content/uploads/2011/03/20110303131.jpg"><img class="aligncenter size-medium wp-image-1400" title="mac book pro" src="http://www.litrin.net/wp-content/uploads/2011/03/20110303131-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p><a href="http://www.litrin.net/wp-content/uploads/2011/03/20110303132.jpg"><img class="aligncenter size-medium wp-image-1401" title="20110303132" src="http://www.litrin.net/wp-content/uploads/2011/03/20110303132-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p><a href="http://www.litrin.net/wp-content/uploads/2011/03/20110303133.jpg"><img class="aligncenter size-medium wp-image-1402" title="20110303133" src="http://www.litrin.net/wp-content/uploads/2011/03/20110303133-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p><a href="http://www.litrin.net/wp-content/uploads/2011/03/20110303135.jpg"><img class="aligncenter size-medium wp-image-1403" title="20110303135" src="http://www.litrin.net/wp-content/uploads/2011/03/20110303135-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>一番设置后，从app store里买了一套iwork page，再次花费$30。不过很超值！</p>
<p>装上xcode, Eclipse, MSN，设置邮箱，机器基本设置完成。</p>
<p>比教郁闷的是没有一个免费的，功能上类似notepad++的软件存在，只能暂时使用textwrangler替代部分功能。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/03/04/%e6%96%b0%c2%b7macbook-pro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOS tech talk</title>
		<link>http://www.litrin.net/2011/02/15/ios-tech-talk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ios-tech-talk</link>
		<comments>http://www.litrin.net/2011/02/15/ios-tech-talk/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 10:02:00 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[业界话题]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1395</guid>
		<description><![CDATA[经过春节前Lerry 和Jestin的双重推荐，我成功的报名参加了今天在浦东香格里拉举行的iOS tech talk会议。再此感谢两位老大！  根据推友的消息，不同于以往在全球各国开展的iOS tech talk会议，今年只在中国举行，其他国家则采用1对1的方式举行，估计成本不小。同时消息认为这是由于中国的iOS开发者队伍庞大但相对水平不高的缘故。暂且不去理会，这里就把我在会议中的笔记整理一下，给感兴趣的人。当然，由于针对重点不同，而且本人的英语听力有限，里面肯定有遗漏，这里只作为一个参考吧。如果需要更多内容，欢迎您直接联系我。  首先是welcome，演讲人是Mr. Michael Jurewitz 大致上介绍了一下ios的市场占有率，开发者构成，以及“辉煌的业绩报表”等等。N多商业术语，大致上作为开发者可以忽略了，感兴趣的朋友直接google或者关注apple的官方新闻即可。 Make it great! 演讲人同样还是Michael Jurewitz 这个题目似乎是每次apple必讲的题目。这次主要就是说这个平台怎么怎么优秀之类的话题，其间一个翻译软件的演示很精彩：用摄像头直接取词翻译，注意不是简单的OCR，而是直接将翻译后的文本像PS那样转换回去，名副其实的“有色眼镜”。 然后就是介绍了几位主讲。  转入正题了  关于UI设计，演讲人从姓氏上看是日本裔。很抱歉，当时正在调试wifi，没有记下题目和演讲者全名。 主要内容如下： 当所有的用户都是傻子，他们什么都不懂。不要给他们产生太多操作上的歧义。 他们只会用触摸操作，要善用触摸的优势，抛开劣势。同时只有44&#215;44以上的按钮他们才不会点错。 他们有耳朵，要用合适的声音反馈。 要让他们的操作跟着你走。 让人误解的动画不如没有。 字体要合适，虽然可能没人注意 图形要合适，有参与性，且要鲜明，要一看就懂。 要有漂亮的图标，至少不会让你在app store里失分。  Optimizing app performance with instruments （用instruments优化app性能）演讲人又是重量级的Michael Jurewitz 主要内容： 对于一个程序来说性能永远是第一位的，没有人愿意为你的程序等待太多时间。 apple提供了很多对于具体性能的测试工具，不要凭感觉行事。 着眼于真实环境下的测试数据和运行情况而不是仅仅停留在模拟机的测试结果。 快速启动一个应用是重中之重，解决这个问题最行之有效的方法是将所有的非UI操作都放到后台进程去执行。 一系列instruments的Demo，我想要拍照，被工作人员及时制止了 尽量合适尺寸的Png，但要尽量减少PNG的透明效果以减少运算量，节省资源。 尽量减少内存占用（废话），推荐了Auto realease pool的解决方案和原理。 不要把内存泄漏信息直接透露给用户，这个似乎是低级错误了。 要及时清理后台进程和程序。  iOS application architecture （iOS应用的程序架构）还是Michael Jurewitz 主要内容： [...]]]></description>
			<content:encoded><![CDATA[<p>经过春节前<span style="font-family: Times New Roman, serif;">Lerry </span>和<span style="font-family: Times New Roman, serif;">Jestin</span>的双重推荐，我成功的报名参加了今天在浦东香格里拉举行的<span style="font-family: Times New Roman, serif;">iOS tech talk</span>会议。再此感谢两位老大！</p>
<p lang="zh-CN"> 根据推友的消息，不同于以往在全球各国开展的<span style="font-family: Times New Roman, serif;">iOS tech talk</span>会议，今年只在中国举行，其他国家则采用<span style="font-family: Times New Roman, serif;">1</span>对<span style="font-family: Times New Roman, serif;">1</span>的方式举行，估计成本不小。同时消息认为这是由于中国的<span style="font-family: Times New Roman, serif;">iOS</span>开发者队伍庞大但相对水平不高的缘故。暂且不去理会，这里就把我在会议中的笔记整理一下，给感兴趣的人。当然，由于针对重点不同，而且本人的英语听力有限，里面肯定有遗漏，这里只作为一个参考吧。如果需要更多内容，欢迎您直接联系我。</p>
<p lang="zh-CN"><strong> 首先是<span style="font-family: Times New Roman, serif;">welcome</span>，演讲人是</strong><span style="font-family: Times New Roman, serif;"><strong>Mr. Michael Jurewitz</strong> </span></p>
<p>大致上介绍了一下<span style="font-family: Times New Roman, serif;">ios</span>的市场占有率，开发者构成，以及“辉煌的业绩报表”等等。<span style="font-family: Times New Roman, serif;">N</span>多商业术语，大致上作为开发者可以忽略了，感兴趣的朋友直接<span style="font-family: Times New Roman, serif;">google</span>或者关注<span style="font-family: Times New Roman, serif;">apple</span>的官方新闻即可。</p>
<p lang="zh-CN"><span id="more-1395"></span><br />
<strong><span style="font-family: Times New Roman, serif;">Make it great! </span>演讲人同样还是</strong><span style="font-family: Times New Roman, serif;"><strong>Michael Jurewitz</strong> </span></p>
<p lang="zh-CN">这个题目似乎是每次<span style="font-family: Times New Roman, serif;">apple</span>必讲的题目。这次主要就是说这个平台怎么怎么优秀之类的话题，其间一个翻译软件的演示很精彩：用摄像头直接取词翻译，注意不是简单的<span style="font-family: Times New Roman, serif;">OCR</span>，而是直接将翻译后的文本像<span style="font-family: Times New Roman, serif;">PS</span>那样转换回去，名副其实的“有色眼镜”。</p>
<p lang="zh-CN">然后就是介绍了几位主讲。</p>
<p lang="zh-CN"> 转入正题了</p>
<p lang="zh-CN"> <strong>关于<span style="font-family: Times New Roman, serif;">UI</span>设计，演讲人从姓氏上看是日本裔。</strong>很抱歉，当时正在调试<span style="font-family: Times New Roman, serif;">wifi</span>，没有记下题目和演讲者全名。</p>
<p lang="zh-CN">主要内容如下：</p>
<ol>
<li>当所有的用户都是傻子，他们什么都不懂。不要给他们产生太多操作上的歧义。</li>
<li>他们只会用触摸操作，要善用触摸的优势，抛开劣势。同时只有<span style="font-family: Times New Roman, serif;">44&#215;44</span>以上的按钮他们才不会点错。</li>
<li>他们有耳朵，要用合适的声音反馈。</li>
<li>要让他们的操作跟着你走。</li>
<li>让人误解的动画不如没有。</li>
<li>字体要合适，虽然可能没人注意</li>
<li>图形要合适，有参与性，且要鲜明，要一看就懂。</li>
<li>要有漂亮的图标，至少不会让你在<span style="font-family: Times New Roman, serif;">app store</span>里失分。</li>
</ol>
<p lang="zh-CN"> <strong><span style="font-family: Times New Roman, serif;">Optimizing app performance with instruments </span>（用<span style="font-family: Times New Roman, serif;">instruments</span>优化<span style="font-family: Times New Roman, serif;">app</span>性能）演讲人又是重量级的<span style="font-family: Times New Roman, serif;">Michael Jurewitz</span></strong></p>
<p lang="zh-CN">主要内容：</p>
<ol>
<li>对于一个程序来说性能永远是第一位的，没有人愿意为你的程序等待太多时间。</li>
<li><span style="font-family: Times New Roman, serif;">apple</span>提供了很多对于具体性能的测试工具，不要凭感觉行事。</li>
<li>着眼于真实环境下的测试数据和运行情况而不是仅仅停留在模拟机的测试结果。</li>
<li>
<p lang="zh-CN">快速启动一个应用是重中之重，解决这个问题最行之有效的方法是将所有的非<span style="font-family: Times New Roman, serif;">UI</span>操作都放到后台进程去执行。</p>
</li>
<li>一系列<span style="font-family: Times New Roman, serif;">instruments</span>的<span style="font-family: Times New Roman, serif;">Demo</span>，我想要拍照，被工作人员及时制止了<span style="font-family: Times New Roman, serif;"> <img src='http://www.litrin.net/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </span></li>
<li>尽量合适尺寸的<span style="font-family: Times New Roman, serif;">Png</span>，但要尽量减少<span style="font-family: Times New Roman, serif;">PNG</span>的透明效果以减少运算量，节省资源。</li>
<li>尽量减少内存占用（废话），推荐了<span style="font-family: Times New Roman, serif;">Auto realease pool</span>的解决方案和原理。</li>
<li>不要把内存泄漏信息直接透露给用户，这个似乎是低级错误了。</li>
<li>要及时清理后台进程和程序。 </li>
</ol>
<p><strong><span style="font-family: Times New Roman, serif;">iOS application architecture </span>（<span style="font-family: Times New Roman, serif;">iOS</span>应用的程序架构）还是<span style="font-family: Times New Roman, serif;">Michael Jurewitz</span></strong></p>
<p lang="zh-CN">主要内容：</p>
<ol>
<li>要在底层做好维护，简单有效的程序才叫优雅 。</li>
<li><span style="font-family: Times New Roman, serif;">Mvc is helpful &#8211; <img src='http://www.litrin.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  just as i know</span></li>
<li>通知信息不要高度耦合，要防止因为子循环影响了主循环的进度。</li>
<li><span style="font-family: Times New Roman, serif;">will/did/should/</span>方式的命名优势。</li>
<li>不要滥用视图<span style="font-family: Times New Roman, serif;">(View</span>层<span style="font-family: Times New Roman, serif;">)</span>，视图没有数据！！最糟糕的设计是在视图中操作数据。</li>
<li><span style="font-family: Times New Roman, serif;">goal is flex</span>（最终目标是弹性化）</li>
<li>减少模型之间过的多管理，同时不要跨层操作数据（说白了还是在强调<span style="font-family: Times New Roman, serif;">MVC</span>）。</li>
</ol>
<p> 中饭时间，不同上次我参加<span style="font-family: Times New Roman, serif;">SAP</span>的发布会，这次是中餐，第一次跟一帮不认识的人在一张桌子上吃饭，感觉气氛很尴尬。据说去年会议是中国人主讲，吃的是自助；今年是老外，搞得是中餐。深刻体现了<span style="font-family: Times New Roman, serif;">apple“</span>改变传统”的信条<span style="font-family: Times New Roman, serif;">^_^</span>！</p>
<p>下午分开两场，<span style="font-family: Times New Roman, serif;">A</span>会场偏向于<span style="font-family: Times New Roman, serif;">Game和</span>图形图像的开发，<span style="font-family: Times New Roman, serif;">B</span>则是偏向于<span style="font-family: Times New Roman, serif;">web</span>应用。考虑到我的实际需求，我选择了<span style="font-family: Times New Roman, serif;">B</span>场。</p>
<p> <strong><span style="font-family: Times New Roman, serif;">Building and optimizing website for ios </span>（为<span style="font-family: Times New Roman, serif;">iOS</span>架设和优化一个网站），主讲人<span style="font-family: Times New Roman, serif;">Ms. Vicki Murley </span></strong></p>
<p lang="zh-CN">主要内容：</p>
<ol>
<li>
<p lang="zh-CN">主要讲的内容其实是<span style="font-family: Times New Roman, serif;">HTML5</span>的规范。</p>
</li>
<li>
<p lang="zh-CN"><span style="font-family: Times New Roman, serif;">Css3</span>中<span style="font-family: Times New Roman, serif;">-webkit</span>标签的介绍。</p>
</li>
<li>
<p lang="zh-CN">一堆演示，同样不许拍照。</p>
</li>
<li>
<p lang="zh-CN"><span style="font-family: Times New Roman, serif;">IOS</span>和<span style="font-family: Times New Roman, serif;">html5</span>的组合的优势以及与桌面浏览器的不同之处</p>
<ol>
<li>
<p lang="zh-CN"><span style="font-family: Times New Roman, serif;">Html5</span>是<span style="font-family: Times New Roman, serif;">ios</span>上体现内容的最好载体。</p>
</li>
<li>
<p lang="zh-CN">要善用<span style="font-family: Times New Roman, serif;">HTML5</span>的离线存储，<span style="font-family: Times New Roman, serif;">ios4.2 </span>最大<span style="font-family: Times New Roman, serif;">50m </span></p>
</li>
<li>
<p lang="zh-CN"><span style="font-family: Times New Roman, serif;">ios</span>只能用基本的媒体格式，很少扩展，必须设定宽高，不支持音量调节种种限制。</p>
</li>
<li>
<p lang="zh-CN"><span style="font-family: Times New Roman, serif;">ios </span>的上浏览器的优势：<span style="font-family: Times New Roman, serif;">air print</span>设备、<span style="font-family: Times New Roman, serif;">air play</span>设备、加速计，陀螺仪，定位系统的使用</p>
</li>
</ol>
</li>
</ol>
<p> </p>
<p><strong><span style="font-family: Times New Roman, serif;">Working with video in iOS </span>（在<span style="font-family: Times New Roman, serif;">iOS</span>上播放视频），演讲人是<span style="font-family: Times New Roman, serif;">Mr. Eryk Vershen </span>（姓氏让我想到了福尔摩斯的助手，呵呵）</strong></p>
<p lang="zh-CN">这里的内容主要是展示了一堆代码，用于生成一个媒体播放器。主讲内容以<span style="font-family: Times New Roman, serif;">Demo</span>为主，停留在战术级别。个人觉得在这种场合下很难给人留下什么印象。让我感兴趣的就是最后他使用了一堆很生僻的<span style="font-family: Times New Roman, serif;">listener</span>实现了耳机线控，<span style="font-family: Times New Roman, serif;">ariplay</span>和向其他媒体输出的控制。</p>
<p lang="zh-CN"> <strong>总结：</strong></p>
<p lang="zh-CN">不谈别的，单从内容上讲，这次会议主要还是停留在比较低的层次。感觉适合初学者，对于有一定开发经验的朋友来说相对意义不大。当然主办方在会议的同时还开设了<span style="font-family: Times New Roman, serif;">Apple Lab</span>，开放与各位主讲人之间一对一的咨询，但需要预约，而且可能价格不菲。你带着问题来而且不发愁银子的话还是会有收获的。 </p>
<p lang="zh-CN"><span style="font-family: Times New Roman, serif;">PS</span>：与会者大多是用<span style="font-family: Times New Roman, serif;">Apple</span>的笔记本，我回头时发现无数个发光的<span style="font-family: Times New Roman, serif;">Apple logo</span>在照射着我，场面非常壮观，再此真的佩服<span style="font-family: Times New Roman, serif;">apple</span>的产品设计。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/02/15/ios-tech-talk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>从GAE看网站架构趋势</title>
		<link>http://www.litrin.net/2010/12/21/%e4%bb%8egae%e7%9c%8b%e7%bd%91%e7%ab%99%e6%9e%b6%e6%9e%84%e8%b6%8b%e5%8a%bf/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bb%258egae%25e7%259c%258b%25e7%25bd%2591%25e7%25ab%2599%25e6%259e%25b6%25e6%259e%2584%25e8%25b6%258b%25e5%258a%25bf</link>
		<comments>http://www.litrin.net/2010/12/21/%e4%bb%8egae%e7%9c%8b%e7%bd%91%e7%ab%99%e6%9e%b6%e6%9e%84%e8%b6%8b%e5%8a%bf/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 01:59:53 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[业界话题]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1372</guid>
		<description><![CDATA[在Google App Engine做了几个东西。从当初觉得这个平台的迥然不同，直到现在逐步了解了这个平台的逻辑架构。作为Google的一款成功的作品，相信GAE的很多东西将会陆陆续续被模仿和抄袭，直到真正影响到我们。本文就以我个人的理解，谈谈GAE将会给今后的网站架构带来哪些革命性的东西。 首当其冲的应该算是云技术，但这个技术总体上属于物理层的技术，况且云已经成为公认的技术趋势。这里主要是谈下网站的架构，云技术相对关系较为偏离，我也就不再探讨了。 BigTable数据库 一开始接触下来的GAE，最感觉不适应的就非它的“数据存储”技术。通常用惯了SQL，用了GAE觉得数据设计上很要有很大的转变。 GAE的“数据库”感觉就是一个巨大的List，每一条记录都是key-value的对应关系。当然起初是无法满足很多传统上的数据结构。不过如果你能够在数据结构设计上打破SQL的限制，通过极端灵活的Key-value, key-value, key-value，你就能发觉这样的框架事实上比传统的SQL更适合网站。 说mysql比oracle在网站实现上的优势并非是因为它功能的强大，而是它速度快，结构简单。尽管有人戏称mysql“裸奔”，但无可否认的就是这种“裸奔”的效果带来的mysql的成功。GAE的数据库比mysql还要“裸奔”，但更快的响应将会是SQL永远无法企及的。FaceBook之前也抛弃了SQL亦证明了这一点。 此外整站之间的数据复制也算是革新之一。 多通道的融合 GAE整合了mail，xmpp，跨域验证等一系列的通道也算是特色之一，想必很多人会认为google这是在捆绑自己的产品。作为之前的门户网站的特色，每家人都会有一个自己的邮箱，一个自己的聊天工具，以及一系列自己的产品捆绑在内。GAE的创新在于用户只需要一个自己的google帐户就可以实现捆绑所有的gae服务。这是一个真正意义上的以用户为本。 Xmpp的捆绑还意味着EDM之后，将来IM营销或者类似的IM推送将会逐步成为一个产业。或者更进一步，IM机器人或者类似的技术将会一定程度上取代现有人人对话模式。当然，这需要一段时间，但至少个人认为目前大量的taobao网店需要这种技术^_^。 精巧的运维界面 相信GAE的后他大家也会印象深刻，能对每一个模块进行精确的监控，已经让运维的工作从翻阅日志的文本化提升到了图形化。粒度也更为精准，如果能配合Analytics之类的数据，完全可以实现智能化的运维。 RSS XML SOAP 网址抓取&#8230; 其实这也不算是什么革新，Web2.0时代的开始就是以此为标志的。但事实上单单从开发库中各个库的名称都叫API来看，就可以明白，其实整个GAE就是构建在这些基础之上的。SOAP成为了各个模块之间的粘合剂。 这个带来的优势就是，无需关心这个库那个库——好像本站技术性文档的大部分都是解决的“库问题”。各自统一接口，加速了开发的进程。]]></description>
			<content:encoded><![CDATA[<p>在Google App Engine做了几个东西。从当初觉得这个平台的迥然不同，直到现在逐步了解了这个平台的逻辑架构。作为Google的一款成功的作品，相信GAE的很多东西将会陆陆续续被模仿和抄袭，直到真正影响到我们。本文就以我个人的理解，谈谈GAE将会给今后的网站架构带来哪些革命性的东西。</p>
<p>首当其冲的应该算是云技术，但这个技术总体上属于物理层的技术，况且云已经成为公认的技术趋势。这里主要是谈下网站的架构，云技术相对关系较为偏离，我也就不再探讨了。</p>
<p><span id="more-1372"></span></p>
<p><strong>BigTable数据库</strong></p>
<p>一开始接触下来的GAE，最感觉不适应的就非它的“数据存储”技术。通常用惯了SQL，用了GAE觉得数据设计上很要有很大的转变。<br />
GAE的“数据库”感觉就是一个巨大的List，每一条记录都是key-value的对应关系。当然起初是无法满足很多传统上的数据结构。不过如果你能够在数据结构设计上打破SQL的限制，通过极端灵活的Key-value, key-value, key-value，你就能发觉这样的框架事实上比传统的SQL更适合网站。<br />
说mysql比oracle在网站实现上的优势并非是因为它功能的强大，而是它速度快，结构简单。尽管有人戏称mysql“裸奔”，但无可否认的就是这种“裸奔”的效果带来的mysql的成功。GAE的数据库比mysql还要“裸奔”，但更快的响应将会是SQL永远无法企及的。FaceBook之前也抛弃了SQL亦证明了这一点。</p>
<p>此外整站之间的数据复制也算是革新之一。</p>
<p><strong>多通道的融合</strong></p>
<p>GAE整合了mail，xmpp，跨域验证等一系列的通道也算是特色之一，想必很多人会认为google这是在捆绑自己的产品。作为之前的门户网站的特色，每家人都会有一个自己的邮箱，一个自己的聊天工具，以及一系列自己的产品捆绑在内。GAE的创新在于用户只需要一个自己的google帐户就可以实现捆绑所有的gae服务。这是一个真正意义上的以用户为本。<br />
Xmpp的捆绑还意味着EDM之后，将来IM营销或者类似的IM推送将会逐步成为一个产业。或者更进一步，IM机器人或者类似的技术将会一定程度上取代现有人人对话模式。当然，这需要一段时间，但至少个人认为目前大量的taobao网店需要这种技术^_^。</p>
<p><strong>精巧的运维界面</strong></p>
<p>相信GAE的后他大家也会印象深刻，能对每一个模块进行精确的监控，已经让运维的工作从翻阅日志的文本化提升到了图形化。粒度也更为精准，如果能配合Analytics之类的数据，完全可以实现智能化的运维。</p>
<p><strong>RSS XML </strong><strong>SOAP </strong>网址抓取&#8230;</p>
<p>其实这也不算是什么革新，Web2.0时代的开始就是以此为标志的。但事实上单单从开发库中各个库的名称都叫API来看，就可以明白，其实整个GAE就是构建在这些基础之上的。SOAP成为了各个模块之间的粘合剂。<br />
这个带来的优势就是，无需关心这个库那个库——好像<a href="http://www.litrin.net/" target="_blank">本站</a>技术性文档的大部分都是解决的“库问题”。各自统一接口，加速了开发的进程。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/12/21/%e4%bb%8egae%e7%9c%8b%e7%bd%91%e7%ab%99%e6%9e%b6%e6%9e%84%e8%b6%8b%e5%8a%bf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>发发Android的牢骚</title>
		<link>http://www.litrin.net/2010/12/15/%e5%8f%91%e5%8f%91android%e7%9a%84%e7%89%a2%e9%aa%9a/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%258f%2591%25e5%258f%2591android%25e7%259a%2584%25e7%2589%25a2%25e9%25aa%259a</link>
		<comments>http://www.litrin.net/2010/12/15/%e5%8f%91%e5%8f%91android%e7%9a%84%e7%89%a2%e9%aa%9a/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 03:06:17 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1368</guid>
		<description><![CDATA[这些日子正在做一个手机终端的项目。作为项目的原型设计，总要自己做点东西出来看看。于是乎，考虑到现在Android的大热，而且不像iphone那样必须上专用的开发机（xcode必须要Mac系统），于是决定用Android。 进度进行的很快，有人说开发起来像Java，我觉得其实比Java来的轻松的多，所有的事件已经提前绑定在了系统里，整个过程更像是在开发一个脚本或者插件，几下子一个界面就出来了。如果你像我一样仅仅是做个原型，不在UI多做考虑的话真的是很方便。 本以为做CS结构的系统，不像做BS结构那样要调什么浏览器兼容性之类的问题。只要考虑UI和具体实现就OK了。几天开发过去，我严重鄙视了这个想法。 OK，说UI，问题来了。一开始用Google自家的Nexus One (G5)作为测试平台，所有的UI都是按照那个分辨率进行的。后来G5给了另一个兄弟测试用，自己用了HTC WildFire(G8)。那叫一个晕，所有的定位全部乱套。想要调整吧，Eclipse插件实现的“所见即所得”的功能实在是不敢恭维，生成出来的界面XML文件基本上已经封杀了肉眼能够读通的水平。最简单的方法反而是重新做一套。后来得知Android SDK 2.1以上本身就有实现此功能的解决方法，但一下子都封装到一个安装包里是不是有点怪异？不考虑到怪异版本的分辨率，480&#215;320, 640&#215;360, 800&#215;480算是主流的几种分辨率，还要考虑横向纵向什么的已经有了6种可能。远不如Iphone甚至于Nokia sybiam那样的统一。 再说兼容性的问题。1.5的Moto me600差不多我用到的系统调用有一半跟2.2是不一样的。用2.2开发出来的程序可以强制安装到2.0上，而且没有任何兼容性故障（可能是我代码没有体现出来两者的不同）。但看似很简单的一个setOnItemClickListener 事件，1.5就无法实现。只能把me600刷成2.2来跑。如果是开发一个产品的话无疑要考虑到这个问题，开发成本和难度以及测试覆盖成本可想而知。这也无外乎Angry Bird之类最热门的Android应用索性直接放弃了1.6以下。 最后说说SDK库和文档的问题，手册本地化也不提了，手册被墙也和Android无关。只能说，Android的SDK只考虑到了最简单的Hello world之类的实现，对于手机上如此丰富的系统调用却根本没有提及。SDK自动生成的部分也是经常搞的你晕头转向，经常报些无厘头的错。 就说这么多。]]></description>
			<content:encoded><![CDATA[<p>这些日子正在做一个手机终端的项目。作为项目的原型设计，总要自己做点东西出来看看。于是乎，考虑到现在Android的大热，而且不像iphone那样必须上专用的开发机（xcode必须要Mac系统），于是决定用Android。</p>
<p>进度进行的很快，有人说开发起来像Java，我觉得其实比Java来的轻松的多，所有的事件已经提前绑定在了系统里，整个过程更像是在开发一个脚本或者插件，几下子一个界面就出来了。如果你像我一样仅仅是做个原型，不在UI多做考虑的话真的是很方便。</p>
<p><span id="more-1368"></span></p>
<p>本以为做CS结构的系统，不像做BS结构那样要调什么浏览器兼容性之类的问题。只要考虑UI和具体实现就OK了。几天开发过去，我严重鄙视了这个想法。</p>
<p>OK，说UI，问题来了。一开始用Google自家的Nexus One (G5)作为测试平台，所有的UI都是按照那个分辨率进行的。后来G5给了另一个兄弟测试用，自己用了HTC WildFire(G8)。那叫一个晕，所有的定位全部乱套。想要调整吧，Eclipse插件实现的“所见即所得”的功能实在是不敢恭维，生成出来的界面XML文件基本上已经封杀了肉眼能够读通的水平。最简单的方法反而是重新做一套。后来得知Android SDK 2.1以上本身就有实现此功能的解决方法，但一下子都封装到一个安装包里是不是有点怪异？不考虑到怪异版本的分辨率，480&#215;320, 640&#215;360, 800&#215;480算是主流的几种分辨率，还要考虑横向纵向什么的已经有了6种可能。远不如Iphone甚至于Nokia sybiam那样的统一。</p>
<p>再说兼容性的问题。1.5的Moto me600差不多我用到的系统调用有一半跟2.2是不一样的。用2.2开发出来的程序可以强制安装到2.0上，而且没有任何兼容性故障（可能是我代码没有体现出来两者的不同）。但看似很简单的一个setOnItemClickListener 事件，1.5就无法实现。只能把me600刷成2.2来跑。如果是开发一个产品的话无疑要考虑到这个问题，开发成本和难度以及测试覆盖成本可想而知。这也无外乎Angry Bird之类最热门的Android应用索性直接放弃了1.6以下。</p>
<p>最后说说SDK库和文档的问题，手册本地化也不提了，手册被墙也和Android无关。只能说，Android的SDK只考虑到了最简单的Hello world之类的实现，对于手机上如此丰富的系统调用却根本没有提及。SDK自动生成的部分也是经常搞的你晕头转向，经常报些无厘头的错。</p>
<p>就说这么多。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/12/15/%e5%8f%91%e5%8f%91android%e7%9a%84%e7%89%a2%e9%aa%9a/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>从”弹窗门”想到的</title>
		<link>http://www.litrin.net/2010/10/28/%e4%bb%8e%e5%bc%b9%e7%aa%97%e9%97%a8%e6%83%b3%e5%88%b0%e7%9a%84/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bb%258e%25e5%25bc%25b9%25e7%25aa%2597%25e9%2597%25a8%25e6%2583%25b3%25e5%2588%25b0%25e7%259a%2584</link>
		<comments>http://www.litrin.net/2010/10/28/%e4%bb%8e%e5%bc%b9%e7%aa%97%e9%97%a8%e6%83%b3%e5%88%b0%e7%9a%84/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 01:47:50 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[业界话题]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1333</guid>
		<description><![CDATA[从来不用QQ和360，听说他们最近打起来了，动用了各种手段。当然，作为国产软件最擅长的弹窗消息也是手段之一。我已经懒得关注这些狗咬狗的事情了，于是引用网络热语曰：“后排群众强势围观！” 之前写过评论，表明了一下我对于QQ的立场。至今仍然在抵制中，包括发动周围群众抵制。虽然很可笑，没什么效果，但这就如同示威， 需要我——一个受众有所表达，麻木不仁不是应有的态度。 360，也不提了。曾经公司呼叫中心的同事们最爱乱装的软件。而且仅仅是用作娱乐之用——清早来，比谁的主机开机快；中间比谁的评分高等等。耗费了大量的系统资源和网络带宽。推荐一大堆无所事事的软件。都这样也就罢了，可使从没有抵挡住病毒的入侵。反而前一段时间要求用户卸载公司已经花成本购买足够授权的卡巴斯基杀软。娱乐用户而已！ 一直以来，所谓“流氓软件”的定义就很模糊，虽然大家都在喊打。于是当初做流氓软件的公司纷纷转型，摇身一变举起了反流氓、反插件的大旗。借助了这一重身份，实则是为自己的流氓行径大开方便之门。所谓“流氓会武术，谁都挡不住！”“只要爷喜欢，想灭谁就灭谁！”种种行径严重违背了用户至上的原则，单从出发点上已经足够流氓了！ 一个是抄袭成性的剽窃者，一个是流氓的流氓！ 以前，总觉得的中国本土软件存在的问题都是艺不如人、钱不如人。现在觉得国产软件之所以落后的根本在于心胸不如人！但凡是一个软件，最终总会蜕变为广告软件或者流氓软件。于是广大用户就在被蹂躏中逐步成长为新一代的流氓技术体验者，进行着下一步的恶性循环中。 继续围观中！]]></description>
			<content:encoded><![CDATA[<p>从来不用QQ和360，听说他们最近打起来了，动用了各种手段。当然，作为国产软件最擅长的弹窗消息也是手段之一。我已经懒得关注这些狗咬狗的事情了，于是引用网络热语曰：“后排群众强势围观！”</p>
<p>之前写过<a href="http://www.litrin.net/2006/03/14/qq%e5%8f%b7%e8%a2%ab%e7%9b%97/">评论</a>，表明了一下我对于QQ的立场。至今仍然在抵制中，包括发动周围群众抵制。虽然很可笑，没什么效果，但这就如同示威， 需要我——一个受众有所表达，麻木不仁不是应有的态度。</p>
<p>360，也不提了。曾经公司呼叫中心的同事们最爱乱装的软件。而且仅仅是用作娱乐之用——清早来，比谁的主机开机快；中间比谁的评分高等等。耗费了大量的系统资源和网络带宽。推荐一大堆无所事事的软件。都这样也就罢了，可使从没有抵挡住病毒的入侵。反而前一段时间要求用户卸载公司已经花成本购买足够授权的卡巴斯基杀软。娱乐用户而已！</p>
<p><span id="more-1333"></span></p>
<p>一直以来，所谓“流氓软件”的定义就很模糊，虽然大家都在喊打。于是当初做流氓软件的公司纷纷转型，摇身一变举起了反流氓、反插件的大旗。借助了这一重身份，实则是为自己的流氓行径大开方便之门。所谓“流氓会武术，谁都挡不住！”“只要爷喜欢，想灭谁就灭谁！”种种行径严重违背了用户至上的原则，单从出发点上已经足够流氓了！</p>
<p>一个是抄袭成性的剽窃者，一个是流氓的流氓！</p>
<p>以前，总觉得的中国本土软件存在的问题都是艺不如人、钱不如人。现在觉得国产软件之所以落后的根本在于心胸不如人！但凡是一个软件，最终总会蜕变为广告软件或者流氓软件。于是广大用户就在被蹂躏中逐步成长为新一代的流氓技术体验者，进行着下一步的恶性循环中。</p>
<p>继续围观中！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/10/28/%e4%bb%8e%e5%bc%b9%e7%aa%97%e9%97%a8%e6%83%b3%e5%88%b0%e7%9a%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>永远的《文明5》</title>
		<link>http://www.litrin.net/2010/09/29/%e6%b0%b8%e8%bf%9c%e7%9a%84%e3%80%8a%e6%96%87%e6%98%8e5%e3%80%8b/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e6%25b0%25b8%25e8%25bf%259c%25e7%259a%2584%25e3%2580%258a%25e6%2596%2587%25e6%2598%258e5%25e3%2580%258b</link>
		<comments>http://www.litrin.net/2010/09/29/%e6%b0%b8%e8%bf%9c%e7%9a%84%e3%80%8a%e6%96%87%e6%98%8e5%e3%80%8b/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 06:44:16 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[站长的blog]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1315</guid>
		<description><![CDATA[总算等到了《文明5》的发布。从2开始，我就痴迷于这个系列的游戏，算起来也有10年多了。比较讽刺的是，当我的电脑刚刚能够顺畅的运行2时，3发布了；3顺畅时，4发布了，这次也不例外。 我的本本，2G内存，双核CPU，独显，只能在1024&#215;768的分辨率下最低效果，小地图下勉强跑起来，中后期随着发展，脱帧严重。家里的台式机4核+4G+ATI4系列显卡可以开中低效果完成大地图。文明一个系列就是吃内存大户，建议还是4G以上的内存来跑吧。 网上对于这次选择了武则天作为中国的代表很是不满。毛泽东、秦始皇乃至只有中文版才出现过的李世民都没有太多疑义。我觉得武则天的当选主要考虑到了几个方面，盛世时的帝王、唯一的女皇（均衡下帝王中的男女比例）、”art of war”中对于art的诠释。 这次的系统感觉上推翻了从2代开始的很多传统。 制度和科技的研发明确的区分开，就是最让人不适应的。而且还特别的为制度的进步增加了一个“制度胜利”，完成8个项目中的5个就可以取得最终胜利。 大概是受魔兽之类的游戏影响，文明5增加了独立城市的概念。通过与独立城市的联盟，你可以获取军队，夺得资源，扩展商业或者增加文化指数。独立城市有自己的“好感度”，但可以被军事占领。比较有意思的是，类似现实世界，你可以私下通过军事支持独立城市完成代理人战争。 其次这次的系统对于金钱的作用大大提升了，以往只有在后期才会出现的金钱征募，这次任何时候都可以进行，且不会引发反感。文明对话系统却大大减弱，科技成果无法被直接当作商品摆上谈判桌，仅仅只能在两个盟国之间合作研发科技。 伟人系统这次也大大提升，通过城市里的各种功能的建筑。城市可以出现各种伟人：军事家、艺术家、科学家、商人、工程师等。似乎是拉开文明发展最快的方式。当然，奇迹是最容易产生伟人的建筑。 中期的打法大致上就是一两个超级城市不断的生产奇迹，剩余的城市主要生产金钱和科技点数，超级城市的普通建筑主要靠金钱来直接购买。 军事系统这次也有不小的改变。城市有自己的城防系统，城防的强弱又由建筑和城市人口数决定。以往每个城市都要有军队驻守的模式失效了。“闯空城”的快速rush打法已经过时了。 这次比较人性化的是两军交战中科技的实力更好的体现了出来，曾经每一代都诟病的“野蛮人打爆坦克”的怪异问题基本上不会再出现了。况且两军交战前双方的胜负伤亡已经会有预估，更加方便了。当然，一回合分不出胜负的系统也是新加的。 当初文明4资料片“刀锋之上”因为有投降的设置，于是军事胜利成了最容易达成的胜利——电脑的有生力量被消灭殆尽后，谈判时就会投降成为附庸国。本以为这个设置会被延续，可要知道施得·梅尔最讨厌战争，投降的设置被取消，军事胜利又成了很难达成的目标。 交通的修改也不少，铁路不是什么地方都能修，单位的调动时间愈发漫长；取消了机场，之前跨洋作战中最快速的空投被一个事实上很弱的伞兵代替。 取消了运输船，任何一个单位都可以直接渡海，而且会随着科技的进步升级渡海速度，这一点让之前很难打的群岛地图容易了很多。 最后说的是，这次的《文明5》难度真的比以往低的多，最高难度的也是如此！]]></description>
			<content:encoded><![CDATA[<p>总算等到了《文明5》的发布。从2开始，我就痴迷于这个系列的游戏，算起来也有10年多了。比较讽刺的是，当我的电脑刚刚能够顺畅的运行2时，3发布了；3顺畅时，4发布了，这次也不例外。</p>
<p>我的本本，2G内存，双核CPU，独显，只能在1024&#215;768的分辨率下最低效果，小地图下勉强跑起来，中后期随着发展，脱帧严重。家里的台式机4核+4G+ATI4系列显卡可以开中低效果完成大地图。文明一个系列就是吃内存大户，建议还是4G以上的内存来跑吧。</p>
<p><span id="more-1315"></span></p>
<p>网上对于这次选择了武则天作为中国的代表很是不满。毛泽东、秦始皇乃至只有中文版才出现过的李世民都没有太多疑义。我觉得武则天的当选主要考虑到了几个方面，盛世时的帝王、唯一的女皇（均衡下帝王中的男女比例）、”art of war”中对于art的诠释。</p>
<p>这次的系统感觉上推翻了从2代开始的很多传统。</p>
<p>制度和科技的研发明确的区分开，就是最让人不适应的。而且还特别的为制度的进步增加了一个“制度胜利”，完成8个项目中的5个就可以取得最终胜利。<br />
大概是受魔兽之类的游戏影响，文明5增加了独立城市的概念。通过与独立城市的联盟，你可以获取军队，夺得资源，扩展商业或者增加文化指数。独立城市有自己的“好感度”，但可以被军事占领。比较有意思的是，类似现实世界，你可以私下通过军事支持独立城市完成代理人战争。</p>
<p>其次这次的系统对于金钱的作用大大提升了，以往只有在后期才会出现的金钱征募，这次任何时候都可以进行，且不会引发反感。文明对话系统却大大减弱，科技成果无法被直接当作商品摆上谈判桌，仅仅只能在两个盟国之间合作研发科技。<br />
伟人系统这次也大大提升，通过城市里的各种功能的建筑。城市可以出现各种伟人：军事家、艺术家、科学家、商人、工程师等。似乎是拉开文明发展最快的方式。当然，奇迹是最容易产生伟人的建筑。<br />
中期的打法大致上就是一两个超级城市不断的生产奇迹，剩余的城市主要生产金钱和科技点数，超级城市的普通建筑主要靠金钱来直接购买。</p>
<p>军事系统这次也有不小的改变。城市有自己的城防系统，城防的强弱又由建筑和城市人口数决定。以往每个城市都要有军队驻守的模式失效了。“闯空城”的快速rush打法已经过时了。<br />
这次比较人性化的是两军交战中科技的实力更好的体现了出来，曾经每一代都诟病的“野蛮人打爆坦克”的怪异问题基本上不会再出现了。况且两军交战前双方的胜负伤亡已经会有预估，更加方便了。当然，一回合分不出胜负的系统也是新加的。<br />
当初文明4资料片“刀锋之上”因为有投降的设置，于是军事胜利成了最容易达成的胜利——电脑的有生力量被消灭殆尽后，谈判时就会投降成为附庸国。本以为这个设置会被延续，可要知道施得·梅尔最讨厌战争，投降的设置被取消，军事胜利又成了很难达成的目标。</p>
<p>交通的修改也不少，铁路不是什么地方都能修，单位的调动时间愈发漫长；取消了机场，之前跨洋作战中最快速的空投被一个事实上很弱的伞兵代替。<br />
取消了运输船，任何一个单位都可以直接渡海，而且会随着科技的进步升级渡海速度，这一点让之前很难打的群岛地图容易了很多。</p>
<p>最后说的是，这次的《文明5》难度真的比以往低的多，最高难度的也是如此！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/09/29/%e6%b0%b8%e8%bf%9c%e7%9a%84%e3%80%8a%e6%96%87%e6%98%8e5%e3%80%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress google-syntax-highlighter 插件的问题</title>
		<link>http://www.litrin.net/2010/06/12/wordpress-google-syntax-highlighter-%e6%8f%92%e4%bb%b6%e7%9a%84%e9%97%ae%e9%a2%98/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-google-syntax-highlighter-%25e6%258f%2592%25e4%25bb%25b6%25e7%259a%2584%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2010/06/12/wordpress-google-syntax-highlighter-%e6%8f%92%e4%bb%b6%e7%9a%84%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 09:16:08 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">/?p=1251</guid>
		<description><![CDATA[小站上一直使用Google Syntax Highlighter for WordPress 插件实现代码高亮，就在上一篇文章发布之后，我发现了这个插件中存在的一个bug：windows + IE 8无法正常加亮python代码。 查阅了官方网站，发掘Google Syntax Highlighter for WordPress插件用的1.5版已经停止更新，只能使用2.0以上的版本，但2.0版本和之前的版本又存在兼容的问题，直接替换是不行的。不想每篇文章的修改&#60;pre&#62;标记，那就改插件喽。 下载最新版本的Syntax Highlighter，解压。 将原来/wp-content/plugins/google-syntax-highlighter目录下的Scripts和Styles目录清空后，分别用新版本的对应路径中的文件替换，注意大小写方式请不要变动。 修改google_syntax_highlighter.php文件，我用了minify的插件，这里就直接调用了。 &#60;?php function insert_header() {  $current_path = get_option('siteurl') .'/wp-content/plugins/' . basename(dirname(__FILE__)) .'/';  ?&#62;  &#60;link href="&#60;?php echo $current_path; ?&#62;Styles/shCore.css" type="text/css" rel="stylesheet" /&#62;  //可根据自己的需要选择不同的Styles &#60;link href="&#60;?php echo $current_path; ?&#62;Styles/shThemeEclipse.css" type="text/css" rel="stylesheet" /&#62;  &#60;?php } function insert_footer(){ $current_path = 'wp-content/plugins/' . [...]]]></description>
			<content:encoded><![CDATA[<p>小站上一直使用Google Syntax Highlighter for WordPress 插件实现代码高亮，就在上一篇文章发布之后，我发现了这个插件中存在的一个bug：windows + IE 8无法正常加亮python代码。</p>
<p>查阅了官方网站，发掘Google Syntax Highlighter for WordPress插件用的1.5版已经停止更新，只能使用2.0以上的版本，但2.0版本和之前的版本又存在兼容的问题，直接替换是不行的。不想每篇文章的修改&lt;pre&gt;标记，那就改插件喽。</p>
<p><span id="more-1251"></span></p>
<ol>
<li>下载<a rel="nofollow" target="_blank" href="http://alexgorbatchev.com/downloads/grab.php?name=sh" target="_blank">最新版本的Syntax Highlighter</a>，解压。</li>
<li>将原来/wp-content/plugins/google-syntax-highlighter目录下的Scripts和Styles目录清空后，分别用新版本的对应路径中的文件替换，注意大小写方式请不要变动。</li>
<li>修改google_syntax_highlighter.php文件，我用了minify的插件，这里就直接调用了。</li>
</ol>
<pre class="php" name='code'>&lt;?php

function insert_header() {
 $current_path = get_option('siteurl') .'/wp-content/plugins/' . basename(dirname(__FILE__)) .'/';
 ?&gt;
 &lt;link href="&lt;?php echo $current_path; ?&gt;Styles/shCore.css" type="text/css" rel="stylesheet" /&gt;
 //可根据自己的需要选择不同的Styles
 &lt;link href="&lt;?php echo $current_path; ?&gt;Styles/shThemeEclipse.css" type="text/css" rel="stylesheet" /&gt;
 &lt;?php
}

function insert_footer(){
$current_path = 'wp-content/plugins/' . basename(dirname(__FILE__)) .'/';
 ?&gt;
&lt;?php
/*
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shCore.js"&gt;&lt;/script&gt;

&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shLegacy.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushCSharp.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushPhp.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushJScript.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushJava.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushVb.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushSql.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushXml.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushDelphi.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushPython.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushRuby.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushCss.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushCpp.js"&gt;&lt;/script&gt;
*/
&lt;script src="/wp-content/plugins/wp-minify/min/?b=&lt;?php echo $current_path; ?&gt;Scripts&amp;f=shCore.js,shLegacy.js,shBrushPhp.js,shBrushSql.js,shBrushPython.js"&gt;&lt;/script&gt;
&lt;script&gt;
dp.SyntaxHighlighter.ClipboardSwf = '&lt;?php echo $current_path; ?&gt;Scripts/clipboard.swf';
SyntaxHighlighter.all();
dp.SyntaxHighlighter.HighlightAll('code');
&lt;/script&gt;
&lt;?php
}
add_action('wp_head','insert_header');
add_action('wp_footer','insert_footer');
?&gt;</pre>
<p>测试，通过！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/06/12/wordpress-google-syntax-highlighter-%e6%8f%92%e4%bb%b6%e7%9a%84%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

