<?xml version="1.0"?>
<rss version="2.0"><channel><title>Dian团队Blog聚合站点</title><link>http://www.dian.org.cn/bloggers/</link><description>聚合Dian团队的官方网站、小组活动、团队个人的blog</description><language>zh-cn</language><pubDate>2012-2-5 13:17:46</pubDate><generator>SXNA(www.sxna.cn)(www.dc9.cn)</generator><copyright>Copyright 2005 sxna.cn, All rights reserved.</copyright><item><title>随机混洗（Random Shuffle）算法</title><author>henix</author><pubDate>Fri,03 Feb 2012 17:01:00 +0800</pubDate><link>http://item.feedsky.com/~feedsky/the-distant-town/~8832999/601884161/6643815/1/item.html</link><description>　　最近遇到这样一个问题：生成 1 - N 的随机排列。这是一个比较常见的问题，生成一个有限集合的随机排列的时候就要用到。一种 naive 的算法是：
for i = 1..n do
  r = 1..n 之间的随机数
  while (r 已经被选择) do
    r = 1..n 之间的随机数
  end
  ar[i] = r
  将 r 标记为已被选择
end
　　这种算法的问题是，当可供选择的数很少的时候（极端情况是只剩最后一个），大量的时间都浪费在 while 循环上了，理论上平均时间复杂度达到 O(n2) ，而且还需要额外空间记录是否已经使用。
　　实际上，前人早已研究过这个问题。Random Shuffle 算法可以在 O(n) 的时间内随机打乱一个数组，所以只需要把 1..N 保存在一个数组中，再 shuffle 这个数组即可。实现方法参见维基百科 Fisher–Yates shuffle 。正确性证明参见 Knuth 的《计算机程序设计艺术（第二卷）：半数值算法》。
　　不少语言已经在标准库中包含了这个函数：

Python


import random

random.shuffle(ar)


Java


import java.util.Collections;

Collections.shuffle(List&amp;lt;?&amp;gt; list);


C++


#include &amp;lt;algorithm&amp;gt;

const int N = 8;
int ar[] = {1, 2, 3, 4, 5, 6, 7, 8};
random_shuffle(ar, ar + N);



　　Lua 标准库中没有这个函数，我的实现：

-- random shuffle a table in place
function shuffle(t)
	f</description></item><item><title>这一年，2011 （图片版）</title><author>kidonly</author><pubDate>Wed,01 Feb 2012 17:12:00 +0800</pubDate><link>http://kidonly.blogbus.com/logs/189933167.html</link><description>【一月】
冰雪中的湘南。


【二月】
回到北京，不置可否。


【三月】
朝南的窗，花花草草，写写画画。


【四月】
北方的春天，确比南方要耀眼得多。


【五月】
安静的转变。


【六月】
温暖，陪伴。最好的爱，是不是就是这个样子？


【七月】
你是否也向往这样一个葱郁的小院子，不管在哪里。


【八月】
忙碌中，不忘读书。在粉红色小屋。


【九月】
与自我对话。杂乱中找到主线。


【十月】
对于湘西的情感，已扎根于心中。湿漉漉的温情。


【十一】
阿加罗，一切都会顺利。


【十二】
一切由心而生。

</description></item><item><title>线段树小结</title><author>henix</author><pubDate>Tue,31 Jan 2012 22:15:00 +0800</pubDate><link>http://item.feedsky.com/~feedsky/the-distant-town/~8832999/600823273/6643815/1/item.html</link><description>　　线段树（Segment Trees）主要用来解决跟区间有关的问题。比如，给你一个数组，要求支持以下操作：

	更新：将某个区间的所有数加上一个数
	查询：查询某个区间的所有数的和

　　普通的做法时间复杂度为 O(n) ，每次需要遍历区间内所有的数，但用线段树可以做到 O(log n) 。
　　其基本思想就是把区间信息先预处理出来。如果根节点保存 [l, r) 的信息（可以是和，或者最大值、最大值等等），其左右孩子节点则分别保存 [l, (l+r)/2) 和 [(l+r)/2, r) 的信息，然后依次类推。
　　查询的时候，只需要选取其中部分节点就可以“拼凑”出要查的区间。所以，线段树只适用于那些总结果可以由子区间的结果合成的问题，比如区间求和、区间最值。
　　由于线段树除最后一层外，前面每一层的节点都是满的，因此深度为 O(log n) 。
　　关于线段树，黑书上说有这样一个性质：线段树建立好后，其范围内的任何一个区间，都可以用线段树上的不超过 2 log n 条线段表示。
　　证明的方法主要是先证每一层最多会被选取两个节点，然后由于高度为 log n 可得。
　　为什么每层最多会选取两个呢？试证如下：
　　首先，任何一个区间进入线段树，这个区间总会在某个地方被分成两半，除非这个区间的长度为 1 ，那就不用讨论了。分成两半后，前一半由于必须包含 mid 这块区间，它“落下”的时候，每一层最多选取一个节点。后一半同理。
(svg)
　　如上图，在线段树中查询线段①，被分成②③两个部分。对于每个部分，可以分两种情况：一种是像②那样，没有达到下一层的一半，此时不会选择 C ；另一种是像③那样，超过下一层的一半，此时会选取 D 。后面的类似。于是一层中最多有两个节点被选取。
　　实现方法：一般是像堆那样实现成数组，然后可以用 2 * i 和 2 * i + 1 作为下标分别访</description></item><item><title>树状数组小结</title><author>henix</author><pubDate>Mon,30 Jan 2012 21:03:00 +0800</pubDate><link>http://item.feedsky.com/~feedsky/the-distant-town/~8832999/600823274/6643815/1/item.html</link><description>　　树状数组（Binary Indexed Trees）适用于单点更新、区间查询的问题，更新和查询的复杂度都是 O(log n) 。可以求前缀和（sum(a[1]..a[n])），用两个前缀和相减就可以求任意区间和。更新的时候只能是对某位的一个 delta ，而不是设置某一位。经过变形可以解决区间更新、单点查询的问题。
　　使用的时候需要注意，树状数组的下标必须从 1 开始，下标 0 是错误的。如果遇到题目中有下标 0 的情况，可以把所有的下标都加 1 。
　　我的实现：

#include &amp;lt;cassert&amp;gt;

inline int lowbit(int x)
{
	return (x &amp;amp; (-x));
}

class Bit {
private:
	int size;
	int *reduced;
public:
	Bit(int size) {
		assert(size &amp;gt; 0);
		this-&amp;gt;size = size;
		reduced = new int[size + 1];
		for (int i = 0; i &amp;lt;= size; i++) {
			reduced[i] = 0;
		}
	}
	int query(int idx) const {
		assert(idx &amp;gt; 0 &amp;amp;&amp;amp; idx &amp;lt;= size);
		int res = 0;
		while (idx &amp;gt; 0) {
			res += reduced[idx];
			idx &amp;amp;= (idx - 1);
		}
		return res;
	}
	void update(int idx, int delta) {
		assert(idx &amp;gt; 0 &amp;amp;&amp;amp; idx &amp;lt;= size)</description></item><item><title>这一年，2011 （文字版）</title><author>kidonly</author><pubDate>Sun,22 Jan 2012 00:30:00 +0800</pubDate><link>http://kidonly.blogbus.com/logs/188665190.html</link><description>本来是要在2012还没有到来之前写下这些的。我习惯对于过去的一年回顾一下，这样对自己会有更清晰的认知。可是一直都忙得焦头烂额，没有功夫静下心来。
于是，一直到农历年的末尾。终于有这么一个晚上，能安安静静地坐在台灯前，翻翻过去。
过去是由什么组成的呢？
走过的路，经历过的事，遇见过的人，看过的书，写过的字，拍过的照片，画过的画，拍过的照片，住过的房子，梦过的梦。
这些就是全部吗？
我想不是。
其实很多东西都已经忘了。那些藏在记忆的角落里的点点滴滴，那些思绪里的细枝末节，也许早就忘了。它们的存在只是一瞬，而我们却是由这么多个一瞬连接而成的。情绪过去，便不再留痕迹。接下来的是下一个情绪，而下一个情绪也会走。
真的不会有痕迹吗？如今我整理的，是痕迹，还是它们的结果？
我也不知道。我也不想思考这个问题。就容我将它们，一个个记叙。
今年博客写得少了。其实有好多东西想写，有太多太多东西想写。这些年积累的太多，却未有道来。渐渐地，也不去道了。因为一旦道，就是排山倒海。
【一月】
一月的湖南冰冷到极点。
先是期盼雪，后来是被雪折腾得够呛。由湘西转战湘南，依然是冰冻天气。我喜欢郴州，这种有树的小城我都喜欢。再加上板梁小河上蒸腾的雾气，便是更多了些欢喜。衡山没有雾凇，但莽山有。被吹出毛茸茸的形状，朝一个方向歪着，大雾一来，又什么也看不清。真想不到这竟是广东的第一峰。
在衡山我有特别的亲切感。在半山住着的几日，白天爬山，傍晚回来。我总会记得傍晚深绿色的树林中，飘散着大山特有的气味。我甚至会感觉自己是在喜马拉雅脚下的那个小山村。它们是相似的，亲切的，令人愉悦的，让人从上到下每一块筋骨都舒展开来，每一个毛孔都在顺畅呼吸。
在之后的日子里，我常常会向人提起小东江旁那个废旧的隧道，那个有着温润清凉的江水的拉拉渡。隧道口传来的狗吠，还有小羊咩咩的叫，越来越远，最后全无。无尽的黑暗，前后都是黑暗。但我选择了继</description></item><item><title>专注</title><author>kidonly</author><pubDate>Thu,19 Jan 2012 07:59:00 +0800</pubDate><link>http://kidonly.blogbus.com/logs/188277181.html</link><description>当一个人专注地做ta热爱的事情的时候，身上一定是放着光的。周围的人能&amp;ldquo;看&amp;rdquo;到ta的光，被ta，或者不只是ta，被这光中的ta所吸引。
英语里面个短语叫be into something，我觉得表达得更形象。专注地去做一件事情，把整个人投入了进去。你好像是不存在的，你和你正在做的事情是一体的。
你有过这样的时候吗？
在这样的时候，你是在做什么事情？
这件事情也许就是你要去做的，让你天性舒展，让你放光的事情。

</description></item><item><title>POJ 2823 单调队列 + IO 优化</title><author>henix</author><pubDate>Tue,10 Jan 2012 17:39:00 +0800</pubDate><link>http://item.feedsky.com/~feedsky/the-distant-town/~8832999/600823275/6643815/1/item.html</link><description>　　最近继续补算法……学习一下单调队列。据说 POJ 2823 是道经典题目。
　　给出一个数组和一个固定长度的窗口，这个窗口从左滑到右，要求依次输出每个区间的最大值。
　　用单调队列求解：滑动窗口每往右边移动一步，就有一个元素出队，另一个元素进队。考虑队列中有两个元素依次是 a b（b 在 a 后面），如果 b &amp;gt; a ，那么 a 在任何时刻都不可能作为最大值输出，所以在这种情况下就可以直接忽略掉 a 。于是我们可以保证队列是单调递减的，这样每次输出的时候就输出队首就可以了。
　　不过这道题直接提交就超时了，看了下网上其他人都说要加上 IO 优化，也就是不要用 printf 输出，改用自己写的输出函数以实现更快速的输出一个整数。参见 putint() 函数，什么 register 都出来了，再优化下去就汇编了。这样做了之后果然 AC 。
　　代码（gcc）：

#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;assert.h&amp;gt;
#include &amp;lt;errno.h&amp;gt;
#include &amp;lt;stdbool.h&amp;gt;
#include &amp;lt;limits.h&amp;gt;

struct monoq_t {
	int *head, *end;
	int *q;
	int size;
};
typedef struct monoq_t monoq_t;

int monoq_init(monoq_t *self, int size)
{
	if (size &amp;lt; 0) {
		return EINVAL;
	}
	self-&amp;gt;q = malloc(size * sizeof(int));
	if (self-&amp;gt;q == NULL) {
		return ENO</description></item><item><title>最长上升子序列的 nlogn 算法</title><author>henix</author><pubDate>Tue,10 Jan 2012 17:05:00 +0800</pubDate><link>http://item.feedsky.com/~feedsky/the-distant-town/~8832999/600823276/6643815/1/item.html</link><description>　　最长上升子序列（Longest increasing subsequence, LIS）是个经典的动态规划问题，用动态规划可以在 \(O(n^2)\) 的时间内解决。
　　问题描述参见 POJ 2533 。
　　但还有另外一种利用决策的单调性的算法，可以在 \(O(n\log n)\) 的时间解决。
　　设 min[i] 为长度为 i 的最长子序列的最后一个元素最小可以是多少。每次将原序列的一个元素 a 插入到 min 数组中，并更新数组 min ，每次只需找到 min 中第一个比 a 大的数，并用 a 替换那个数。在查找的时候可以用二分查找，于是时间复杂度是 \(O(n\log n)\) 。
　　代码：

#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdbool.h&amp;gt;

int main(int argc, char *argv[])
{
	int n;
	scanf("%d", &amp;amp;n);
	int ar[n];
	int i;
	for (i = 0; i &amp;lt; n; i++) {
		scanf("%d", ar + i);
	}
	int min[n];
	int len = 0;
	for (i = 0; i &amp;lt; n; i++) {
		/* insert ar[i] into min */
		int l = 0, r = len;
		int mid;
		bool found = false;
		while (l &amp;lt; r) {
			mid = (l + r) / 2;
			if (ar[i] &amp;lt; min[mid]) {
				r = mid;
			} else if (ar[i] &amp;gt; min[mid]) {
				l = mid + 1;
			} else {
		</description></item><item><title>失而复得</title><author>kidonly</author><pubDate>Sun,08 Jan 2012 23:12:00 +0800</pubDate><link>http://kidonly.blogbus.com/logs/186217066.html</link><description>2011年的末尾，接二连三遇到一系列的狗血事件，虽然过程很麻烦，但最后大部分都以一个不错的结果而告终。大约是我能欣然接受各种变化，每天还乐呵呵地傻高兴。唯一有点小失落的是，丢了一张SD卡。其实也没什么，只不过丢了些照片，一些记忆的凭证罢了。
但你越不失落，生活就越不会让你失落。昨天同事递给我一张卡，问我是不是看它很面熟。顿时大喜。至今我也没有弄清楚这张卡经历了怎样的过程最后到了她的手上，但失而复得感觉实在太棒。至此，年末所有事件最后都完满画上句号。
你说呢。只要你去相信，相信好的就会有好的。相信顺利，最终总是会顺利。



本来以为弄丢了的照片。小乖和小卡同学，在夕阳里。</description></item><item><title>社交游戏广告投入与收回天数模型</title><author>aw</author><pubDate>Wed,04 Jan 2012 17:49:00 +0800</pubDate><link>http://www.awflasher.com/blog/archives/1847</link><description>社交游戏方兴未艾，我不相信未来就一定是发行商的天下。于是，打算抛砖引玉，利用自家产品积累的一些数据，建立一个模型（非常不完善，所以期待大家各种板砖）。模型要解决的问题是：给出一个预算（Budget），计算多久能够收回预算。地址： http://www.magnetjoy.com/budget.html 目前的思路是，用预算，除以CPC（install，而非click，我们自己计算，在FB台湾，大概是0.3美金左右，FB自己的Ads CPC要考虑到Developer Dashboards中的Auth通过率），得到预算带来的直接安装用户数。结合我们自己的经验，发现一个普通的社交游戏，一般一个外界用户会带来X倍的自增长。姑且称为Organic Growth Users，把每天的自增长用户数，除以外界带来的用户数，得到的一个比例，姑且称为Organic Growth Rate，简称OGR。这个值加一，即是每一个外界用户带来的新用户总数。我自己算了一下，手头某个游戏，在台湾FB市场的OGR是2.12（广告）～0.70（互推），如果有其他渠道，肯定也有不同的比例。这个数值跟游戏的病毒性也有一定关系。 于是通过Budget/CPC*(OGR+1)可得知投入预算能带来的相应安装数。再乘以“安装转化DAU比率”，即可得到大概带来的均值DAU。这个比例根据我们的经验，一般在5%-15%左右。 拿到DAU之后，输入对应的ARPU，再考虑相应的成本（比如平台分成、服务器），就能估算收入。再用预算除以收入，即可得到『多久能够收回预算』。 以上模型，存在非常多不完善的地方，譬如没有考虑DAU随游戏生命周期的衰减；譬如没有考虑OGR会随着用户积累而有些许上扬。这两者优于对结果分别有正面和负面的影响，所以我姑且认为他们可以『抵消』。但一个人的思维是局限的，还希望更多同行参与交流，可以添加我的微博：@awg</description></item><item><title>传智播客创始人张孝祥因病去世</title><author>周亮</author><pubDate>Tue,03 Jan 2012 00:27:00 +0800</pubDate><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/596471134/6047504/1/item.html</link><description>昨天在微博上看到张孝祥老师突然病逝，我刚开始搞混了，我以为是孙鑫。孙鑫大家都知道，有一套视频教程讲VC++的，在BT上很火，但是后来不让下载了，说是孙鑫自己办了培训公司，因此不让这类视频在网上传播了。过了一段时间我才意识到我错了，张孝祥最初是讲Java，我Java入门就是看的他的视频，讲Java线程讲得特别清楚，他也创办了培训公司，但是所有的培训视频都在verycd上可以免费下载，全部公开的。顿时让我肃然起敬。 后来读张孝祥在CSDN上的博客，感觉到他的不容易。现如今，计算机科班毕业的大佬们看不起非科班的，就连称谓都有两种：程序猿和程序员。非科班的被认为只会编码，不懂架构，不懂算法的代码民工。而张孝祥做为“代码民工”的培训机构创始人，同样也被大多数人看不起，甚至是贬低，有些公司公然号称不招传智播客的毕业生，但是他还是坚持去做这一份事业。我想说的是，即使是计算机科班的毕业生在编程入门的时候谁不以能有通俗易懂的视频培训课程而感到幸福呢，更何况是所有的视频课程都能通过互联网进行下载，而且免费。这是不仅仅是一种自信，而是一种信仰，一种追求。这样的追求，谁也不能苛责。 中国的IT产业落后国外很多，虽然有多家号称巨牛逼的纳斯达克上市公司，但大多都依赖“墙”而生存。而国内的IT教育与国内外IT的发展就更加脱离甚远了。当今的中国IT事业之幸有张孝祥、孙卫琴这样的一流的入门技术书籍作者和培训师，太多的人因为他们而改变自己的生命，改变整个中国的IT产业。对他们，我们应该致敬。 最后，我想说的是，对于从农村、从家庭条件特别不好的家庭奋斗出来的男人，38岁正是事业像春天里生命旺盛生长的时候，但是张孝祥却突然与世长辞，令人扼腕，我翻看他的博客，翻到这样一篇题目的博文《累病倒了我两次的面试题&amp;#8211;移动用户资费统计系统》，生命只有一次，请善待她吧。在Dian团队的同学们，身体是事业的本钱，坚持锻</description></item><item><title>在 Linux 中用 ffmpeg 录屏</title><author>henix</author><pubDate>Sun,01 Jan 2012 10:08:00 +0800</pubDate><link>http://item.feedsky.com/~feedsky/the-distant-town/~8832999/600823277/6643815/1/item.html</link><description>　　ffmpeg 是个跨平台的全套视频音频解决方案，可以录屏、录音、转码。
　　为了能在 Linux 中录音，必须先安装 PulseAudio 。
　　启动 PulseAudio ：

	pulseaudio --start

　　退出 PulseAudio ：

	pulseaudio --kill

　　然后就可以在 ffmpeg 中使用 pulse 这个音频设备了。ffmpeg 命令：

	ffmpeg -f alsa -ac 1 -i pulse -f x11grab -s 1366x768 -r 20 -i :0.0 -acodec aac -strict experimental -vcodec libx264 -vf scale=852:480 /tmp/test2.mp4

　　其中 -r 指定帧率。我采用了 H.264 的视频编码和 AAC 的音频编码。AAC 还是处于试验阶段，所以必须加上 -strict experimental ，而我试了实际的录音效果还可以，但有时会出现音频落后于视频的情况。你也可以用 libmp3lame 来录制 mp3 音频。
　　列出所有可用的编码器：

	ffmpeg -codecs
</description></item><item><title>基于黑莓平台的MD5密码生成器</title><author>Dan</author><pubDate>Sat,31 Dec 2011 14:02:00 +0800</pubDate><link>http://www.shanhh.com/index.php/archives/298</link><description>前段时间大量密码泄漏的问题闹得挺严重的, 自己也发现我几乎所有网站的注册密码都是相同的. 非常不安全. 如果考虑每个网站使用不同的密码, 对自己来说也是一种负担. 于是就考虑是用md5对自己的密码进行加密. 自己提供一个私钥, 然后输入注册的网站. 之后程序在其中混入数字和符号. 计算md5, 取其中的某几位来生成密码. 这样我只要记住自己的私钥, 那么当我登录weibo的时候, 我的我就在WebSite中写weibo. 这样又好记, 又安全. 我只在自己的黑莓9780上6.0os上测试了, 按道理 96,97应该都能使用. &amp;#169;2012 Dan&amp;#039;s Workspace. All Rights Reserved..</description></item><item><title>相信。</title><author>kidonly</author><pubDate>Thu,22 Dec 2011 22:47:00 +0800</pubDate><link>http://kidonly.blogbus.com/logs/182584756.html</link><description>
在它面前我站了好久。
好似看到了什么。实际上什么也没有看到。
你相信什么，它就是什么。你若不相信，它就什么也不是。
这世界全是由我们的心所造。包括你，包括我，包括我们曾经经历过，正在经历着的一切。</description></item><item><title>我的北京。以及，相信。</title><author>kidonly</author><pubDate>Sun,18 Dec 2011 11:56:00 +0800</pubDate><link>http://kidonly.blogbus.com/logs/182521024.html</link><description>一。
我的北京曾经只有春天和夏天。那两年，我像一只候鸟，每年春天时候飞来，秋天时候飞走。飞去尼泊尔，飞去湖南，然后在武汉过冬。春节是得回家的，必须。
莫名就来到了北京。
04年还在上学的时候，在北京待过一个月，便莫名喜欢上了这个城。说不清楚原因，好像是空气中散发的一种味道，气氛抑或是什么。总之它是看不见的，它不是四平八稳的马路，也不是方方正正的建筑。跟人也没有太大关系，四处的人于我来说都是一样，心底都是良善美好的。
那时我就说要回来，没想到一等就是五年。北京等我了吗？是我一厢情愿。
五年里，我去了深圳，又去了上海，又在国内四处漫游。漫游归来，一个声音告诉我，来北京。然后我就跟所有问我的人说，我要去北京。再然后我就来了。
搬家可不是一件容易的事儿。可对于我来说，其实很容易。
二。
这是今年在北京搬的第三次家。搬得居无定所，搬得看似更加漂泊？
我漂泊吗？这个问题我问了自己，也问了身边的人。答案很确定，看似漂泊，心中却越来越稳定。这一年不到的时间，好像把我引向一个正常的轨道。北京作为一个地理位置，它也是有引力的。但和两年前不一样，我的心愿意接受这个引力。实际上，它并不来源于某个城市，它是现实生活的引力，是物质的引力，把我这个飘在空中四处游荡的人拉回地面，落地。
不脚踏实地，怎能承载那些空中的东西？
三。
昨天我搬家了。搬得居无定所，但这并不重要。
十个月前，我住在青年旅舍。半个月里，四处找房，没心思写稿。那时我只知道我要这个地方，安下心来，把稿子写完。其实这个地方不一定在北京，可以是凤凰，可以是大理。其实我更向往后者，但不管怎么说，阴差阳错各种的原因，我还是来到了北京。这座大城。
在这座大城里，常常看不到自己。
五个月前，我住在潘家园。那时我已经开始工作了，异常繁忙。每天要花上将近4个小时的时间上下班，在这座大城里往返奔波。虽然劳碌，却不知不觉中习惯。人渐渐对周围事物变得顿感，还</description></item><item><title>骗人的美国主机服务商WebHostingPad</title><author>周亮</author><pubDate>Thu,15 Dec 2011 01:31:00 +0800</pubDate><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/596471135/6047504/1/item.html</link><description>我终于忍不住要写这篇博客，奉劝想省钱的朋友们：“便宜无好货”，而且不要被所谓的“华人”给骗了。 我是在找国外主机的时候发现WebHostingPad的，因为有介绍说创始人是华人，因此多了一份好感。价钱比较便宜，2-3美元一个月，而且还可以绑定无限个域名，其他的限制条件（如空间、文件数、流量）基本都是不限制，这对于我这个一直用国内主机的人来说是很兴奋的。大家都知道国内的空间总是限你的文件数目、数据库的个数等等等等，一遍又一遍的强奸用户。而且WebHostingPad还承诺一个月不满意就退款。 事实证明，一个月之内的确没有任何问题，网站速度也不错。当一个月满了，过了几天之后，帐号被禁用了。客服说CPU使用太多，我艹，我就一个WordPress，而且每天的独立IP也就70-100，这样也CPU使用太多？ 我以为被挂马了，我把WordPress和数据下载下来，在本地分析之后，发现没有被挂马，一切正常，普通PC上访问一点问题都没有。我给客户说应该是你们的服务有问题，他说让我卸掉WordPress插件，于是我按照客服的要求，卸载了所有的WordPress插件，他们说CPU依然使用过多。 又按他们的要求将WordPress降到了旧的2.8版本，CPU还是使用过多。这让我很无语了。WebHostingPad用的是小霸王么、阿童木么？连个WordPress每天70-100的访问量都承受不了？ 后来，我在找到下面一些文章： WebHostingPad是不是骗子？ 谨慎：注册Webhostingpad免费域名 美国主机WebHostingPad的最大文件数量限制 美国主机WebHostingPad五个月评价 我突然醒悟了，难道是一个月退款期过了就想把我赶走么？找了客服，总是一遍又一遍说我的WordPress有问题，那为什么之前的一个月就一点问题都没有呢？我感觉，我应该被骗了。 下面是北山美国主机</description></item><item><title>X Window System简介</title><author>周亮</author><pubDate>Thu,15 Dec 2011 00:39:00 +0800</pubDate><link>http://item.feedsky.com/~feedsky/zhlwish/~8011581/596471136/6047504/1/item.html</link><description>历史 1984年，MIT开始研究X Window System，用于在Unix上支持GUI界面，X Window System研究时是作为应用软件进行开发的，而不是操作系统。而且X Window System是作为架构规范进行研究，因此需要人和组织对其进行实现和包装（和linux一样，要有发行版）。 1987年，X版本更新到X11，这一版有非常明显的进步，因此后面X Window System也被称为X11，X11有通过网络功能访问GUI界面的功能， 1994年，X11R6发布，后来的架构都基于此版本，1995年发布X11R6.3。 前面提到X Window System是作为架构规范进行研究的，需要有人去实现，而1992年开始的XFree86项目就是这样一个被广泛使用的实现，名称来源于X+Free+X86架构。 2004年的时候，XFree86不在以GPL协议发布，而是另外成立了公司。X.Org基金会就从XFree86的派生出了另一个窗口系统，称为X.Org Server的X Window System。 现在X11最新的版本是X11R7.6，X.Org发布的X Window实现最新版本为1.11。 因此，我们称X、X Window、X11、xf86都是指代X Window System。 X的作用 X能为GUI环境提供基本的框架：在屏幕上描绘、体现图像与移动程序窗口，同时也受理、运行、及管理电脑与鼠标、键盘的交互程序。不过，X并没有管辖到用户界面的部份（可以理解为界面样式，如gnome和kde就外观完全不同），而是由其他以X为基础的界面实现来负责，也因为如此，以X为基础环境所开发成的视觉样式非常地多；不同的程序可能有完全不同的用户界面。 X的架构 X Window System由X Server（服务器）和X Client（客户端）两部分组成。X采行C/S的架构模型，由</description></item><item><title>All the best for you, Matt!</title><author>xbull</author><pubDate>Wed,14 Dec 2011 00:23:00 +0800</pubDate><link>http://item.feedsky.com/~feedsky/xbull/~8166713/586759230/6270460/1/item.html</link><description>上周四是matt的最后一个工作日，我曾经预想过很多次，这天的每日例会该如何度过，事实却非常令人吃惊——大家都出奇的平静，像什么事情都没有发生，15分时间很快过去，大家说完goodbye，我长舒了一口气，我的英文还没有好到应付这种场面，而且在这种非出自本愿而达成的结局，我实在不知道该站在哪个立场来说话；matt是被redundancy而离开trend的
matt是humyo时代的老臣，他是soho一族，住在伦敦的南面，每次到leeds来要开四个小时的车——四个小时在中国可能算不了什么，可是在英国，就从南部开到中部了——我见他的次数极少，大概每个月一次，每次不过两天。他最初给我的印象是非常苛刻而且严厉的，代码中任何错误，只要不入他法眼，他都会非常直接的指出来，silly、stupid、idiot这些我原以为只在吵架的时候用的词汇，他总是毫不吝惜的使用。刚开始给我压力很大，因为每次改点东西，都要被他提好多问题，返工几遍，最惨的一次他实在忍不住了，直接在邮件里面写出代码，让我把他们贴到工程里面去。我刚去humyo的最初几个月，这些事情几乎要令我崩溃（详情得看去年的文章）。
后来慢慢体会到这是他的工作风格，毕竟他从来不会直接revert我的代码，然后自己上去改掉他不认为对的东西，他一边在骂stupid，一边不厌其烦的指导和review，直到他认为已经完美，他始终尊重我的劳动，而且给我以实际的指导，我所不适应的，是他的过分直接的方式
再后来，我发现这是英国人的普遍待人方式，他们很直接，不喜欢拐弯抹角，如果觉得你的idea不好，开会的时候就直接指出来，而且用的句式都是“i dont like this idea”, &amp;#8220;i dont know how it‘s going to work&amp;#8221;, &amp;#8220;i am really confused here, cou</description></item><item><title>X11 中的复制粘贴</title><author>henix</author><pubDate>Tue,13 Dec 2011 23:18:00 +0800</pubDate><link>http://item.feedsky.com/~feedsky/the-distant-town/~8832999/600823278/6643815/1/item.html</link><description>　　在 Linux 中，你是如何复制粘贴的呢？
　　是不是也像在 Windows 中一样：选择一段文本 -&amp;gt; 右键 -&amp;gt; Copy -&amp;gt; 切到另一个程序 -&amp;gt; 右键 -&amp;gt; Paste ？
　　接触 Linux 这么多年来，我一直都是这么干的——偶尔也会有“如果像 Windows 一样可以 Ctrl-C Ctrl-V 就更好了”这种想法——Windows 的惯性思维让我中毒太深。
　　我今天才发现，我错了！我一直都没有发现 X11 的复制粘贴的精髓！
　　所以下面就是精髓了。在 X11 中，复制粘贴应该这么干：

在一个程序中，选中一段文本
什么也别动！直接切换到你要粘贴的程序
按下鼠标中键，粘贴进去了！

　　怎么样，是不是很 cool ？
　　在 X11 中，有两个剪贴板：PRIMARY 和 CLIPBOARD 。用鼠标中键的是 PRIMARY ，而通过菜单明确执行复制粘贴的是 CLIPBOARD 。鼠标中键也可以是 Shift-Insert 。
　　xsel 这个小工具可以与剪贴板交互，查看或设置剪贴板的内容。
Links:

http://en.wikipedia.org/wiki/X_Window_selection
</description></item><item><title>月食，因为孤独的缘故。</title><author>kidonly</author><pubDate>Sun,11 Dec 2011 00:12:00 +0800</pubDate><link>http://kidonly.blogbus.com/logs/180622767.html</link><description>一。
月全食，红月亮。
几年前在上海看过一次，坐在班车上，路过地铁站。地铁开到地面之上，红铜色的月亮挂在轨道之上。没太多注意，只是一瞥。
后来错过了几次日食，没有见到天地突然间变得昏暗。
但月食多，这是看得最完整的一次。出我所料，虽然月亮是变红了，但还是有一端透着点亮。食既的将近一小时里，我在小区里踱着步子，正对着它，侧对着它，最后来到一棵大树下。那一大片地方里，只有一棵树，树叶都掉光了，稀稀落落地散布在干涸的泥土上。我绕着它，仰着头，踱着步子。其实可以不踱的，但太冷了。
红色的月亮挂在树梢上。挂在旁边的高楼上。挂在星星点点的星空上。
我突然抑制不住大哭了起来。
不知道是不是因为，月食的缘故。大概是因为，孤独的缘故。
二。
我其实不常感到孤独。
只是常常能感到他人的孤独。
感到他人的孤独是不是引诱出更大的孤独？
三。
最近心中有一句话爬来爬去，常常钻出来，因为孤独的缘故。是蒋勋的一本书名，他更被人熟知的一本书叫《孤独六讲》。夏天时读的，在漫长的去上班的地铁上。
你孤独吗？
这是我这几天一直在琢磨的事情。是不是每个人的内心都有一份孤独？当我们在地铁里，每个人都对着一个手机目不转睛的时候，当我们忙碌地去应酬、在人群中扮演各种角色的时候，是不是内心都有一份孤独？当我们夜深人静独自面对自己的时候，当我们独自上路去寻找些什么的时候，是不是内心也都有一种孤独？出走到别处，是不是因为孤独？让自己忙碌，是不是也是因为孤独？
孤独是人类的天性吗？世界的灵魂被分裂成无数个灵魂，我们每个人都不完整，都在寻找另外的碎片，所以注定孤独？我们每个人都是同一个灵魂的一部分，认识到这一点是不是就不会再孤独？
孤独的反面是什么？是完满吗？
是不是为了让我们更好地懂得爱，去抵达完满，才有孤独的存在？没有孤独过的人，是不是就体会不到完满？孤独与完满，是不是就是大与小，高与矮，慢与快，快乐与痛苦的关系？
你说，没</description></item></channel></rss>

