EFI/GPT上的Windows – Linux双系统

很长一段时间都没有鼓捣重装系统了。前些日子旧笔记本坏了,买不起MBP的咱只好入手了一台惠普的win8系统的本本。

近来需要一个linux环境进行线下测试,这台本本就成了实验对象。本以为装个linux还不简单么,装个ubuntu分分钟搞定的事情,没想到居然屡遭挫折。最简单的方法就是通过easybcd软件进行硬盘安装了。然后遇到的第一个难题就是怎么重启机器。win8新的电源管理模式,所谓关机其实只是打瞌睡。网上查到在控制面板-电源管理中可以关闭这个功能。OK,重启。进入引导界面却引导失败,提示找不到文件。这个问题纠结了很久,我以为是自己填写的磁盘号错了,通过存储管理可以看到除了系统可见的C盘D盘E盘外,还有好几个分区,此时我还没了解到这是GPT分区表的特征,从(hd0,0)到(hd0,5)试了个遍,通通无效。

经过这么多纠结我终于决定放弃硬盘安装,转而采取刻录光盘安装,还好新本本光驱还没坏(不得不吐槽下本本光驱的脆弱身板。。)。结果再次挫折。。光驱引导界面进去之后无法进入到liveCD的试用模式,也无法直接安装,于是使用检测光盘那个选项吧,统统黑屏,进去光盘也不转。试用模式的最后会输出两行字,说是无法从cd0的某扇区读取数据。莫非是烧CD烧坏了?于是再烧一张,并且烧写结束的检测光盘步骤也检测正确了,ubuntu的iso检测checksum也检测正确了,应该没问题了吧,用新盘重试,还是一样的问题,甚至提示错误的扇区编号都是一样的,我看着状况应该不是烧写的问题。

只好再度重启去BIOS看看了(其实应当是叫做EFI,这个时候我还没意识到这个问题)。发现boot option中有一个选项是开启legacy support模式。注解中说这个模式用于引导win7及以前版本,推荐不要开启可能会导致(win8)系统无法引导。我晕,估计问题就出在这了。首先先不管一层层的警告先把这个选项开了,然后我也注意到这说明这台机器的引导方式已经与以往不同了,以往的引导方式已经是legacy了。。

重启之后还有提示,说有延迟的修改,不顾各种警告允许修改生效,再次通过liveCD引导,终于可以进入熟悉的ubuntu试用界面了。不管那么多进入安装。根据ubuntu以往的尿性,应该是对windows超级友好兼容,不用担心引导项问题的(我还是没意识到EFI这个问题的严重性)。结果装好发现就是败在这个疏忽上了,grub没有正确地安装,还是直接进入到windows引导界面了。

不过这时候已经知道病因了,那么在网上求医问药就比较顺当,找到了许多文章,介绍了许多不同的解决办法。我采取的是这篇文章中介绍的办法,通过liveCD进入ubuntu后,挂载sda2,这是gpt的引导分区。其文件夹结构为


<DIR> Boot
<DIR> HP
<DIR> Microsoft
<DIR> Ubuntu

其中Boot文件夹中有Bootx64.efi文件,Microsoft/Boot文件夹下有Bootmgfw.efi文件,Ubuntu文件夹下有grubx64.efi文件。可以看出Ubuntu安装程序已经安装了Ubuntu的引导文件,可是EFI系统没有识别出新的引导项,依旧直接启动了windows的引导文件。由于对EFI也是昨天折腾这个事才刚从网上了解,我还说不出所以然,为什么Ubuntu的安装程序无法正确替换windows引导文件,并且事实上ubuntu自动生成的windows引导项也是错的无法启动windows。应该说是新设备加上新系统吧,兼容工作不可能那么快跟得上。

网上提供的另一种解决方案是将linux引导信息写到U盘,通过U盘启动linux,这样做就避免修改windows的引导文件,应该说是方便企业级客户吧。这个方案来自linuxsir.org。可是对我来说太麻烦,不想采用。于是还是使用了上面引用的方案,将Ubuntu引导文件强行替换windows的引导文件,并将ubuntu的grub中增加一个项目,指向原来的windows引导文件(备份更名),从而解决问题。不得不佩服下这个方案的作者,这样强行替换引导文件确实是需要足够的知识和勇气的。。。

这里说明一下,我的系统引导文件分区与文章中一样是sda2,但可能不同系统不同,可以分别挂载查看一下目录结构就能确定具体是哪个。

好吧,长篇的唠叨说完,总结一下要点:

  • windows 8 电源管理关闭快速启动策略
  • EFI(BIOS)设置中启用boot options/legacy support(网上说法还需关闭secure boot,我是后来才看到,没有采用)
  • 完成ubuntu安装后用ubuntu的grubx64.efi文件替换windows的bootmgfw.efi文件(注意备份)
  • 在ubuntu的grub配置中增加指向原bootmgfw.efi的条目
  • 当前版本的easybcd暂不支持efi/gpt引导方式(我使用的是2.0.2,文章中称2.2也不支持)

后记

总结完才意识到可能由于我没有关闭secure boot才导致ubuntu引导项安装失败以及easybcd设置启动项失败。由于昨天经历漫长的战役已经重启笔记本30次以上消耗了一整天的时间,暂时没有心情去继续研究了。附上似乎是比较官方的介绍easybcd双启动linux和win8的文章供参考。
how to dual boot windows 8 and linux

最后是参考来源:

程序员精进 – 自勉

今天读了这篇文章How to Interview an Engineer for your Startup,看了看人家大牛如何面试Engineer,学习了不少。

其实关于link shortener,本来也有思考过一些。不过确实没有像此文思考如此之细。尤其关于数据库优化方面是我软肋,更是无法了解如此之多。

也不仅单是这个case吧,也不仅单是服务器、数据库或者网站吧。总归一个好的Engineer应该随时把握着开发-性能-质量-产品周期,把事情做到最好。要不断历练自己。

复制原文红字自勉吧:
These days, people that can cross between frontend, backend and design are the true rockstars and exactly what we’re looking for, so I like to get a feel for whether they “just like to code requirements” or they can truly get proactive and help us build product.

做个工程师还有不少路要走。

emacs + cygwin fail

真郁闷啊,装了cygwin还没怎么好好玩过。最近因为拆机-重装系统,暂时没装linux,就想着也摸索摸索cygwin,结果上来就给我难题。。
xemacs不太会用,关键是貌似函数名什么的都变掉了,配置文件还要重新写?麻烦啊。
于是emacs有什么问题呢?
居然ctrl-c 是默认绑定到ctrl-g上面去了。。所以怎么退出emacs啊C x C c啊。
查了查资料,原来这个问题04年就有人在问了。真的没有解吗。。

cygwin’s emacs

这里转载一下内容:

>On Tue, Mar 09, 2004 at 10:46:47PM -0500, George Hester wrote:
>>I go into emacs easy enough.  I start cygwin and type emacs and there I
>>am in emacs.  The directions say to exit type C-x C-c where C is the
>>control key.  I am assuming that is the left control key.  So I hold
>>down the left control key and type x.  I get a C-x in the lower bottom
>>of the window.  I then try C-c which is holding down the left control
>>key and hitting the c key.  Nothing.  Justy a ding.  In fact I casnnot
>>exit from emacs at all.  Does anyone have a way of exiting from emacs
>>which works?  Thanks.
>
>Either set the environment variable CYGWIN=tty prior to running any
>cygwin program or run emacs under rxvt.  CTRL-C is not remappable in
>the normal cygwin console due to windows constraints.

2 more options:
1. Run emacs under the X-Windows server.
2. Use "M-x kill-emacs", which is either:
	a. Hit the key ALT-x, then type "kill-emacs", then hit the key ENTER.
	b. Hit the key ESCAPE, then hit the key x, then type "kill-emacs", then hit the key ENTER.

-Richard Campbell.

好吧,所以结果还是可以接受的。反正emacs一般也就是一直开着他了。就让他tty设定过去也无所谓吧。

<编辑>
后来又发现这个网站,给了一个更好的解决方案~~
Cygwin

Cygwin下的Emacs不能退出的问题
Xemacs就没有这个问题
 
需要在cygwin.bat里面加进:
@echo off
set CYGWIN=binmode tty ntsec   #加进这句话Emacs就能正常退出了
g:
chdir g:\cygwin\bin           #$PATH/Cygwin/bin/
bash --login -

问题解决~~
</编辑>

协程的C实现

今天正好跟ownwaterloo聊到协程,于是查了查资料,顺便写个博客记录一下吧。

我主要参考的是这篇资料http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html,是Simon Tatham提出的一个协程的C实现,非常有意思。

协程的思想主要是为了解决多个任务如何分享CPU这个问题的。线程在很多协作问题上处理的不好,而且需要锁机制,导致运行缓慢,不易理解,容易出错。协程的思想是,一系列互相依赖的协程间依次使用CPU,每次只有一个协程工作,而其他协程处于休眠状态。与线程不同,协程是自己主动让出CPU,并交付他期望的下一个协程运行,而不是在任何时候都有可能被系统调度打断。因此协程的使用更加清晰易懂,并且多数情况下不需要锁机制(或者说他本身就是一个全局锁)。

Simon的举例是一个生产者消费者例子。传统的程序可能是生产者一个循环不断产生字符,之后退出。而消费者一个循环不断读取字符,并处理之。使用时或许会用一个管道,将生产者的输出重定向到消费者的输入。从而使两者协作。

Simon提出,如何使这样的简单任务无需通过管道这类操作系统相关的重型机制,就能完成。他提出,生产者或者消费者之间,有一方需要改变自己的工作模式。不再是在循环中不断处理任务,而是一次只处理一个字符然后立刻返回。而另一方依旧保持原状,只需在原本输出到或读取自标准IO的地方修改为调用对方的那个函数就可以了。

但这种写法难以维护。他提出了协程的概念,并期待写出类似这样的代码:

int function(void) {
    int i;
    for (i = 0; i < 10; i++)
        return i;   /* won't work, but wouldn't it be nice */
}

在这里return语句并不是终止函数,而是将函数转入睡眠的状态,并将CPU交付给另一个函数执行。例如生产者写入一个字符后,调用类似的return语句,交付消费者处理这个字符。稍后当消费者处理完并调用return语句后,能重新激活生产者协程,并继续这个for循环。

如何在C语言中实现这样的功能而不需使用汇编代码去hack堆栈和寄存器呢?他给出的最初的实现是使用goto语句。

int function(void) {
    static int i, state = 0;
    switch (state) {
        case 0: goto LABEL0;
        case 1: goto LABEL1;
    }
    LABEL0: /* start of function */
    for (i = 0; i < 10; i++) {
        state = 1; /* so we will come back to LABEL1 */
        return i;
        LABEL1:; /* resume control straight after the return */
    }
}

巧妙的使用静态变量存储函数状态,并使用goto语句来继续for循环。但这种写法不够优美,于是又引入了Duff’s device。

switch (count % 8) {
        case 0:        do {  *to = *from++;
        case 7:              *to = *from++;
        case 6:              *to = *from++;
        case 5:              *to = *from++;
        case 4:              *to = *from++;
        case 3:              *to = *from++;
        case 2:              *to = *from++;
        case 1:              *to = *from++;
                       } while ((count -= 8) > 0);
    }

使用这种trick来将switch-case语句作为循环中的跳转。这就避免了goto-label语句需要同时维护goto和label两处代码的麻烦。于是前面的代码可以变成这个样子。

int function(void) {
    static int i, state = 0;
    switch (state) {
        case 0: /* start of function */
        for (i = 0; i < 10; i++) {
            state = 1; /* so we will come back to "case 1" */
            return i;
            case 1:; /* resume control straight after the return */
        }
    }
}

他的文章后面还有一些内容,例如如何使用宏包装这套机制。如何使用__LINE__宏避免state被赋予相同的数值。如何避免多线程调用下干扰静态变量等等。我这里就不赘述了,大家有兴趣可参考原文。
总之读此文的两个收获一个是认识协程,一个是学习到了一种诡谲的C语言用法。非常开心。

关于生存还是死亡这个热门问题的讨论

今天突如其来的在推上聊了些或许旁人会认为是无趣的事情。。
其实缘起自@rainux的一些及其严肃的问题们。或许虚大大只是扔了这么块板砖进TL的池塘然后在一旁偷笑吧。总之大家都很有劲头地摆出了严肃的哲学家的脸谱认真论战了一番。值得记录,值得记录。

总之,虚黍熟在一番委婉之后,在推上抛出了他宿构已久的这个问题:

@rainux: 所以本来还打算找天晚上在 Twitter 上跟大家讨论死亡的问题,结果都不知道该不该说了。
@pipitu: 没关系吧。。。
@littlepush: 连结婚生子都还没想好要怎么做的某只表示死不死的这种问题不在考虑范围内…虽然说死掉了就死掉了,不管活着的人有什么看法、感想、感情,对于死人来说没有任何意义
@rainux: 虽然我也没想好结婚生子的问题但真是越来越觉得时光飞逝如电,死亡越来越近了,我甚至经常想象哪天自己回过神来突然发现生命之火已经快要熄灭时的状态。无论如何也不知道应该如何面对自己的死亡。

对于这个问题,当然每个人的看法都是不一样的。

@pipitu: 不会啊,会很平静的,一辈子下来什么都经历过了,有什么好痛苦的,人总归要死的
@littlepush: 活着和死了的唯一区别就是体内的C14含量… 感觉我好冷血,不过生和死,对于自身来说并没有什么差异,因为死了你自己也不会有感觉。而对于身边的人来说,是你认为他们会在乎还是他们自己认为会在乎?时间是一切的良药,而已。
@yamimasho: 所以死了之后的事情,都是还活着时候的一种期望呀。。。
@hawkwithwind: 这就我前面说的生死由自己决定的意思,你还不想放弃人生,其实就说明生命力强,(除非意外)不会离开这个世界,反之,假如对人生失去了兴趣,意志消沉,那么死亡就在眼前了。
@rainux: 大概是我太自私?虽然亲人朋友的死也难面对,但应该说自己的死才是最在乎的吧?就是很不愿意接受死亡这件事,虽然很理性地清楚这是毫无悬念不得不接受的。

接下来,@rainux着重定义了自己对生命的眷恋,其强度和其范围。

@rainux: 其实在我看来与其说是能真的想开,不如说是到了那个时候不得不接受而已。
@rainux: 在我最痛苦,觉得生活毫无色彩的时候,我也一样贪恋生命站在18楼窗前也不敢再往前。
@rainux: 孤独痛苦我已经习惯了,但失去意识是如论如何也不能接受的。

@hawkwithwind: 都说了没有高低之分了。。||假如说秦始皇唐太宗也贪恋人生,那说明贪恋人生是伟人气质,我们都比不上你呢。。
@rainux: 不,我觉得我只是单纯地贪恋生命而已。就算是生命力强我也没什么强大的毅力成为什么强人,而且就算是强人又如何,对死亡的恐惧丝毫不能减轻。

@pipitu: 说到底还是不能接受自己的存在被时间抹杀不留痕迹:没有人记得我,没有人能证明我在这个世界上存在过,有过什么样的经历和感情,那些记得我的人记得的也只是他们脑海中的我,并不是真正的我,他们也将死亡,就更没有人记得我了,就和我从未来到过这个世上一样[之前GT你跟我说的一些话的感受]
@rainux: @pipitu 完全不对。我不能接受的仅仅是自我意识的消失,是“我”的消失,而非存在的证据之类无聊的东西。名垂青史或者遗臭万年对我来说都毫无意义,我只是想要“我”能继续存在继续感知世界感受自己的存在。

不知道阿虚之前经历什么样的大开大阖,居然走到了“站在18楼窗前也不敢再往前”的地步。这里先给大叔加把油!幸而现在的阿虚已经能淡定的坐在电脑前面跟我们畅谈这个话题了。无论能否看开生死,都绝不应该蔑视生命。其实惧怕死亡,是大自然深深刻在我们内心深处的对生命的敬畏之情也说不定吧。

接下来讨论支离破碎,变成了多个开放式的分支,当然,对每一个子问题,都没有人有答案。把追寻这些问题的答案变成我们生命的理由,也是个不错的主意吧~
病痛:

@hawkwithwind: 考虑一种极端的情况,假如身患重病,活着就是要被各种痛苦的治疗折磨,而没有享受思考和精神物质世界的心情,恐怕对生命的热情就大打折扣了吧。
@rainux: 这么说大多数人年老之后都要经历各种病痛然后死去其实是为了能更容易地接受死亡?
@hawkwithwind: 不知道。。生老病死。。这是大自然的鬼斧神工。。不敢揣测。。||根据道的观点,自然是无情无为的,“目的”是人后天附加上去的。

看破红尘:

@pipitu: 我不是说现在啊,我是说你确实到了油尽灯枯感觉到自己的生命快要消失于这个世界的时候,那时候应该就很坦然了,因为世间一切事物都有兴衰,死亡是必然的结局啊
@hawkwithwind: @rainux 我认为你的状态正符合我的命题。你可以设想一下自己活了几个世纪之后的状态。。
@rainux: @pipitu 以前也有不少朋友跟我说过你这样的观点(好像也是天蝎座 Orz),但我无法信服。我觉得就算那个时候还是一样会非常留恋人世,舍不得这里的精神的物质的一切。
@rainux: @hawkwithwind @pipitu 以前也看过一篇关于永生的痛苦的科幻小说,大意就是说因为有永恒的生命你终究会经历所有的事情对一切东西失去兴趣。不过普通人类有限的一生是不可能达到这种状态的,所以一定会留恋。
@yamimasho: @rainux @pipitu 即使不舍得也只能坦然接受自己快要死掉的事实 // 所以与其到时候带着遗憾离开,还不如趁早为所欲为啊。。。(啥
@hawkwithwind: @rainux 带着身边的人的祝福,带着一生美好的回忆,带着或许一丝眷恋一丝遗憾一丝牵挂,走完人生路,其实是件美好的事情。热爱生的人,不该惧怕死亡。不朽的,只有癌症。
@rainux: @hawkwithwind 很多文学或者艺术作品也都宣扬这种观点,但我大概是太懦弱了吧?与其说热爱生命不如说贪恋生命惧怕死亡。

此时之我非彼时之我(子非鱼焉知鱼之乐):

@pipitu: @rainux 我觉得你还是把现在的自己代入到那个时候了,我可以肯定的告诉你那个时候的心态是不会和你现在一样的,人老了很多事情都会看开的,包括生死
@rainux: @pipitu 你老过吗?你怎么能准确地知道年老后的心态?
@yamimasho: @rainux @pipitu 正是因为无法预测,所以你现在想的跟你几十年之后想的也可能完全不一样。到那个时候回过头来想想现在自己的态度,会觉得很可笑呢。。。
@hawkwithwind: @rainux @pipitu 跟老人聊天,尝试理解他们的心境的时候,自己猜的一些。。||其实跟你搭讪猜测女生心思可能差不多吧。。

尘归尘,土归土:

@littlepush: 你能接受别的生物吃掉你的body么? RT @pipitu: @rainux 吾已经看开了【远目
@pipitu: @littlepush @rainux 能啊,在我死后
@hawkwithwind: 其实死后被别的生物吃掉才是最自然的。烧成灰,还不是被植物吸取。生于自然,归于沃土,这是定理。
@hawkwithwind: 做成木乃伊,放在水晶棺材里,那是恶鬼。。那才是无法接受的。。

之后我们一致赞成的一点是,虚叔才不是贪生怕死呢,看开看不开,没什么好没什么不好:

@hawkwithwind: 真的,我觉得“看不开”也是好事啊~说明你活跃嘛~你看历史上的真正强人都是贪图长生不老的。这是生命力强的表现嘛
@rainux: @hawkwithwind 不,我觉得我只是单纯地贪恋生命而已。就算是生命力强我也没什么强大的毅力成为什么强人,而且就算是强人又如何,对死亡的恐惧丝毫不能减轻。
@rainux: @pipitu @hawkwithwind =_= 说来说去还是说我不如你嘛。
@pipitu: @rainux @hawkwithwind 这种事情哪有什么比较的说法。。。际遇不一样看法自然不同而已。。。
@hawkwithwind: @rainux 都说了没有高低之分了。。||假如说秦始皇唐太宗也贪恋人生,那说明贪恋人生是伟人气质,我们都比不上你呢。。
@pipitu: @rainux 阿虚你才不是这样呢, 我觉得阿虚的人生观比我强多了= =
@rainux: @littlepush 的确你的经历冷酷得多。这么说来我的经历质量还不够
@pipitu: @rainux @littlepush 不要比较这种事情啊笨蛋_,=

最后来迟的@Charseer不鸣则已一鸣惊人,拿到了本次论战最多的RT:

@CharSeer: 不就是生死嘛。。。我老了,早看开了。“我来到这个世上,就没准备活着回去”

除此之外,我和@littlepush单开线程,纠结起了生命定义这个更加无聊的问题。。虽然看似无关,但确实如果无法定义生的话,则也无法定义死。然后如何看待死亡这个问题本身也就站不住脚了。所以作为脚注这段讨论也是值得列下来的。

@littlepush: 死亡也是一种生命的表现形式,生命还在延续,只是作为载体的本身不会有任何感觉而已。
@hawkwithwind: 这条我不赞同,那我问你,在出生之前,生命是否也是存在的?
@littlepush: 如果你从纯粹的科学角度出发,把你自身分解成无数的原子/夸克和能量,你会自然的去用最基本的能量守恒定律来解释你的生命的连续性。
@hawkwithwind: 物理学解释不了生命。他能解释生命现象,却解释不了为什么我们能感知体验这一生。他能定义感情的化学反应,却定义不了什么是“我”
@littlepush: 你可以很自然的看待猪、牛、羊…因为从心底里你觉得人类比其他动物高级,那如果你从比人类高级的生物的角度来看待人类,个体的生命没有什么特殊的意义,而种族的延续性才是生命的含义。
@hawkwithwind: 那不是因为感觉“高级”,而是因为无法“同情”。人更能同情跟自己地位经历类似的人。人能同情拟人的猪,却可以随意吃猪肉。归根结底人只能了解自己,也就是“我”,除此之外只是用“设身处地”的方式同情别人而已。跟自己越近似,就越容易同情。所以人能理解人,能养宠物,却难以接受毒蛇蜥蜴之类的冷血动物。更体会不了岩石大海的感受。
@littlepush: @hawkwithwind “同情”其实是最没必要的一种情感(对我来说…我讨厌看到别人“同情”我),每种生物都有自己的感觉,可以通过其他途径来了解、实验别的物种,却无法了解“自己”,所谓“超然于世外”也仅仅只是一种逃避的借口。
@hawkwithwind: 晕。。我说的“同情”可不是替你流几滴眼泪那种“同情”,而是“以自己的经验去理解别人的处境”。相比起毒品走私贩,你更容易理解一个程序员的辛酸,因为你自己也是程序员。相比起一块岩石,你觉得猫才算是生物,因为你自己也是哺乳动物。假如你是一块岩石,说不定你觉得人类都是些无聊的跳蚤,不过我肯定错了,因为我不是岩石,也无法“同情”岩石
@littlepush: @hawkwithwind 这是毫无意义的吖…“自己的经验”就是自己的,不是“别人的”,更不会是“我的”,这是很没意义也很让人气愤的一件事情吖
@littlepush: 你不会觉得岩石是生物因为生命的定义里不包含岩石,这个比喻是不是有点问题? RT @hawkwithwind: @littlepush 相比起一块岩石,你觉得猫才算是生物,因为你自己也是哺乳动物。
@hawkwithwind: 为什么你觉得岩石不算是生命?生命的定义其实归根结底是根据“人”的状态,扩大范围决定的不是吗?假如你是一块岩石,或者说外星某种智能岩石生命吧,他们肯定觉得人类算不上生命。
@littlepush: 那你告诉我生命的定义是啥?!
@CharSeer: 我理解的生命就是能主动维持自己的状态的东西
@littlepush: @hawkwithwind 都说是“智能岩石生命”了…如果把“智能”两字去掉,那作为“岩石生命”,它的起点和终点又是如何的呢?如何定义这种生命形式的“生”和“死”?
@hawkwithwind: 在我看来,生命就是“我”,当然,这是唯心论的观点。我不想强加给别人。但是认为生命就是DNA+蛋白质则未免肤浅了一点
@hawkwithwind: @rainux @littlepush 你看,啊虚说,它可以接受肉体的毁灭,却无法接受精神的消失。这个精神,正是指的啊虚的“我”。同样用这个“我”,可以定义岩石、海洋、星河宇宙的生命。其实生命就是宇宙的律动吧。周而复始。
@rainux: @pipitu @littlepush […] 我不能接受的仅仅是自我意识的消失,是“我”的消失,而非存在的证据之类无聊的东西。名垂青史或者遗臭万年对我来说都毫无意义,我只是想要“我”能继续存在继续感知世界感受自己的存在。

最后的最后,当我想要开启一个新的篇章的时候,鲸鱼出现了。大家只好无聊地退散。。

@hawkwithwind: 何妨把这宇宙看成是一部书呢?只要在这宇宙中生活过,就永远写在这部杰作当中了,在其中某个篇章中,不朽

最后的最后的最后,套用最近沉迷的wow的一句台词。。

@hawkwithwind: 敞开心胸,接受圣光吧!

ID秀

reddit上有一个组织大家说出自己ID含义的帖子,蛮有劲的

mandolinhero
|-----------------|-----------------|-----------------|-----------------|
|-----------------|-----------------|-------------0---|-----------------|
|-------0-2---2-3-|-2-0---2-0---2---|-------0-2-5---5-|-2-0---2-0-------|
|-2-4-5-----------|-----5-----5---5-|-2-4-5-----------|-----5-----5-4-5-|

曼陀林英雄回了一首歌

comment-repeater
|-----------------|-----------------|-----------------|-----------------|
|-----------------|-----------------|-------------0---|-----------------|
|-------0-2---2-3-|-2-0---2-0---2---|-------0-2-5---5-|-2-0---2-0-------|
|-2-4-5-----------|-----5-----5---5-|-2-4-5-----------|-----5-----5-4-5-|

于是评论复读机就把他复读了一下

Hibernator
Pretty music makes me sooo … sleeeepy …. zzzzzzzz
冬眠家说:优美的音乐搞得我好困啊zzzz

hush_hush
Shhhhhh
嘘~说:嘘~ ~

IAmARealDoctor
You have cancer.
我是个纯医生说:你得了绝症

rocketsurgery
You have moon cancer.
火箭医疗师说:你得的是月亮癌

TheG00GLE
Did you mean: You have a new form of cancer
google说:您是不是要找:你得了一种新类型的癌症

i_just_lost_the
game
我刚刚输掉了说:比赛

winrar
And I won!
winrar说:是我赢了!

deltageek
Are you sure it’s not lupus? I think it’s lupus.
delta奇客说:你确定这不是狼疮吗?我觉得这是狼疮。(不是啥月亮癌)

contrarian
It’s never lupus.
反对主义者说:这从来就不是狼疮。

beta_pup
I’ll never be the alpha dog.
beta狗说:我从来就不是alpha犬

RandomNoises
woof woof
随机噪声说:呜呜

ButteredPotato
steams
黄油土豆说:蒸了

Veggie
You’d go good with some carrots or broccoli.
蔬菜说:你跟胡萝卜或西兰花一起吃,味道肯定棒!

来源:http://www.reddit.com/r/reddit.com/comments/aly4i/say_something_in_character/