Blog migration

February 5, 2009 – 8:46 am

My blog (http://pluskid.lifegoo.com) has been down for several months. It disappeared so long that now I can not even found it in google. I’m very sorry to find that. However, it will (finally) be back online again. I hope the situation will recover gradually.

Now I’m hosting my new blog through DreamHost and I’ve got my own host name (pluskid.org). Here’s the migration plan for my blog:

  • All new posts will go to http://blog.pluskid.org, if you are still interested in my posts, please update your bookmark/subscription.
  • All the posts in my old blog will be kept on http://lifegoo.pluskid.org. I kept the old posts because there are many useful posts (due to my carelessness, several posts are lost). And I use the new domain name because it is easier for me to do the management.
  • The old domain http://pluskid.lifegoo.com is still available. I kept this DNS because there are many incoming links to that URL. All visits to that host will get redirected automatically to http://lifegoo.pluskid.org.

I’ve setup those two blogs and changed the DNS for pluskid.org. Modifications for the DNS entry of lifegoo.com will be applied withing days. However, it might take a day or two for the changes to spread over the whole internet The new DNS are beginning to take effect now.

So, thanks for reading/subscribing my blog! :lol:

pluskid.lifegoo.com 大迁移

October 29, 2008 – 11:24 am

事情确实发生得有点突然,昨天晚上登上 Google Talk ,Jack 突然告诉我托管的服务器在 11 月份就要拿回来了。那代表所有 lifegoo.com 上的应用都会下线吧。这个 blog 是去年五月份的时候我请求帮忙开通的,非常好用,真的要感谢 Jack 和 sishen 了!

不过,现在得到这个消息还真有些伤心,毕竟是用了这么长时间的 blog ,incoming link 也是有不少的。但是总之还是先把数据备份下来吧。我想先用 wordpress 的方式备份一份数据库,再用普通网页抓取的方式把网站爬下来,不过好像 quark 昨天晚上已经帮我爬过了,还做成了一个 chm ,待会找他要去。

备份下来之后还要考虑今后的去处呢。一时之间都没有想到哪个地方比较好用又稳定的。也许是该去注册一个域名了,不知道现在注册域名费用如何。可是如果单单是为了放一个 blog 去租一个虚拟空间的话,似乎太浪费了,而且这些价格啊、在哪里租比较好啊之类的也都还很不了解。时间比较仓促,似乎现在 blogger 还没有被封掉,于是暂时用 blogger 上的那个吧: http://pluskid.blogspot.com ,如果我找到了新的地方,会在那里贴出来。lifegoo 这里也不清楚具体哪天会下线,所以我待会把这篇文章也贴过去。

我想 blog 我还是希望继续写的,虽然现在频率比以前已经低了很多了吧。moonykily 曾经跟我说他觉得写技术 blog 的人都是脑子进水了,blog 本来就是用来抒发自己心情的。当然我是不会同意他的这个观点的,且不说写技术 blog 能够让知识得到分享这样的话吧,更自私的观点就是:如果你能把自己知道的东西给别人描述清楚的话,你会掌握得更加牢靠。而有些东西当你准备要写下来的时候,你才会发现原来自己根本没有弄清楚。我写 blog 一般会花掉半天到两天不等的时间,但是大部分时候我还是觉得是有收获的。

所以,我还是先去备份数据了,之后怎么迁移还真是个麻烦事,一时也想不清楚,不知道大家有什么好的主意没有?

用 dvipng 来快速生成公式图片

October 28, 2008 – 12:29 pm

LaTeX用 LaTeX 可以生成漂亮的公式,这是众所周知的。但是并不是总是会用 LaTeX 来做整个文档。例如,虽然我也用 beamer 做过 slides ,但是我还是觉得用 PowerPoint 或者类似的工具可以更方便地做出漂亮的幻灯片来。又比如我在写 blog 的时候想要插入一个公式,等等。这个时候我通常会临时建一个 TeX 文档,输入这个公式,生成出 PDF ,用阅读器打开,然后截图。虽然已经这样做了许多许多次了,但是其实这个过程非常无聊,而且我喜欢透明的背景,截图是白色的背景的话,有时候不能很好地融入到场景之中。

但是其实输出为 PDF 格式只是 LaTeX 文档的一种渲染方式,要得到一个透明背景的 png 其实也是非常方便的事情。我以前在用 Muse 做笔记的时候就有一个像 MediaWiki 那样的 latex 标签可以直接书写 LaTeX 公式,结果会自动转化为图片嵌入到生成的文档中去,效果就像这个页面显示的那样。

Read the rest >>>

百度印象

October 26, 2008 – 10:22 am

其实参加百度面试已经是在好久以前的事情了,那个时候我还在十字路口徘徊。一直想把自己的面试经历和对百度的印象写下来,但是一来是因为最近都比较忙碌,二来好像是有一些东西不能到处去说之类的吧。不过现在面试结果已经确定有一段时间了,而我也已经逐渐进入了准研究生的生活,所以我想写写也无大碍吧,反正也不是要说具体的面试题目。

百度的校园招聘比微软和 Google 都要早许多,我想大概是由于有内部推荐的原因(因为有许多朋友都在百度 :) ),我在宣讲会之前就被叫过去参加了一次面试。这算我求职生涯中的第一次面试吧,因为以前听马铃鼠说他的第一面悲剧了,所以我也比较紧张。面试的地点就在学校正门附近的一个宾馆里,时间是早上九点。似乎是前一天收到通知约时间的,要说准备嘛,虽然那段时间一直都说要准备找工作,但是其实没有什么具体的准备,我想大概还是不知道准备什么吧,总不至于临时去找一本《算法导论》来啃吧? :p

Read the rest >>>

Google Reader 在 Firefox 下一片空白

October 10, 2008 – 6:20 pm

其实并不完全是一片空白,上面的一行诸如“Gmail”、“Calendar”以及右边的账户以及注销等按钮都在,只是内容页面完全是空白。刷新、重启 Firefox 、重启系统都没有作用。其实我以前碰到过同样的问题,但是那时好像是 Google Gears 和 Faster Firefox 这样的修改网络参数的扩展冲突的缘故。可是这次我两个扩展都没有装,还是遇到了这个问题。

在 Google 上搜索了一下,发现有不少人遇到这个问题,而且好像相当随机,各个版本的 Firefox 都有遇到过,甚至连 Safari 也有。那看来是相当地和人品相关了!不过我也找到了一个非常简便的解决办法:按住 Shift 键然后点刷新按钮。终于正常了!看样子似乎是缓存损坏掉了吧?

Hadoop 实战:谁是最倒霉的人?

October 4, 2008 – 2:04 pm

hadoop-logo.gif

上一次介绍了 MapReduce 的工作方式以及 Hadoop 这个开源的 MapReduce 实现,这次尝试用 Hadoop 来写一个简单的应用。要解决的问题是这样的:现在我手里有大量的邮件数据,并且我知道每封邮件是正常邮件还是垃圾邮件,现在我想要找出收到的邮件中垃圾邮件最多的人,亦即找出“谁是最倒霉的人”。

首先是 Map 的过程,输入数据是一封一封的邮件,彼此之间没有任何关联,因此可以很自然地分组处理。Map 将邮件转化到以邮件的收件人进行分组,如果邮件是垃圾邮件,则映射到收件人的垃圾邮件数“+1”。Reduce 的过程就是将各个收件人的邮件数统计结果加起来。

Read the rest >>>

CS 科普:计算机如何做分类

October 3, 2008 – 12:07 pm

本来是发在校内的 cc98 论坛上为 MSTC 的 staff 们科普用的,顺便转到这里来一下。

分类是一项非常基本的任务,例如,拿到一包奶粉,要判断它是不是三鹿牌的,“是”与“不是”,这是一个二元分类的问题。在杀毒的时候判断一个文件是否是病毒,也是一个二元分类问题。再比如,在玩杀人游戏的时候,对每一个人,你要判断出他是“平民”、“警察”或者是“杀手”,这是一个分做三类的问题,类别多余二的情况都可以通过组合多个二元分类来完成,比如,一种组合方式可以是:首先使用“是否是平民”进行分类,如果是,则分类完成,否则,再“是否是警察” 进行分类,如果是则分类完成,否则归为“杀手”类。所以通常二元分类是需要解决的最基本的问题。

Read the rest >>>

MapReduce 初体验

October 1, 2008 – 11:55 pm

最近一直都比较忙,blog 都好久没有更新了,不过正好今天十一开始放假,趁机了解了一下 MapReduce 相关的东西,想着还是把自己的经历记下来吧。

MapReduce 最先由 Google 实现并在论文“MapReduce: Simplified Data Processing on Large Clusters”中描述。差不多就是对计算模型做一些限制,让情况得以简化,在有 MapReduce 库支持的情况下,可以非常方便地写出一个应用,并且能够自如地在大型分布式系统里 scale 自如。

map 和 reduce 两个词来源于 Lisp 里的两个基本的函数,其中 map 是将一组元素映射到另一组元素的操作,而 reduce 则是讲一组元素组合起来得到最终结果的过程。举一个简单的例子,对一个数组 arr 里的数求平方和,就是先将 arr 通过“求平方”的 map 操作,然后再通过“加”操作 reduce 为最终结果,在 Ruby 里可以这样写(Ruby 里 reduce 被叫做 inject):

arr.map { |e| e*e }.inject(0) { |sum, e| sum + e }

但是 MapReduce 里的 map 其实做的事情比 Lisp 里的 map 要稍微多一点:在分布式的世界里,数据量经常都非常大,一个最常用的处理办法就是分组处理,而分组的规则可以是各种各样,原始数据的分组方式也许并不适合问题的处理,需要换一种方式进行分组,而这个分组变换的工作也在 map 里完成。

Read the rest >>>

public interface RequestProcessorFactoryFactory

September 20, 2008 – 1:10 am

beans曾经在 reddit 上看到这个 Apache 的 FactoryFactory ,觉得很好笑,只是想,大概这样的名字就是严格按照某些设计模式做出来的吧。不过笑过之后也并没有去细想。

最近自己开始用起 Java 来,因为以前学过这个语言,所以很容易就上手了,之后差不多很多东西都很自然,直到有一天我发现自己不小心做了一个叫做 FeatureCollectionFactory 的接口出来,才觉得似乎是该好好想一想了。

有一些东西,自己以前也时常听到或者看到,但是觉得太“企业级”了或者太“Java”了,并没有去关注。比如 Factory 这个东西,为什么会需要 Factory 呢?我觉得,主要就是因为 new 语句太“死板”了,比如:

Fruit fruit = new Fruit();

这里后面可以写 new Apple()new Pear() 或者是 new Grape() 什么的,但是无论是写任意一个,都必须要作为一个语句写死了,在编译的时候就完全确定了,但是有时候希望具体创建什么对象要等到运行时才能确定。于是就有了 Factory 。

Read the rest >>>

很鹾的“电话面试”

September 19, 2008 – 10:49 pm

因为朋友的推荐,阴差阳错地联系上了 Microsoft Ireland ,之前有两道题目,大约算一种海选的机制吧,很简单的,昨晚之后提交回去就可以了。后来说要约电话面试,最近也比较忙,约了两次在定在今晚十点钟,也就是爱尔兰时间的下午三点。

其实我是好好准备的,因为寝室的电话我都怀疑能不能用,还是只能用手机,准备了耳机线和话筒,纸、笔之类的,常见的我觉得会问到的问题都大致想了一下。可是有一个地方我确实是三番五次地忽略掉了——时间。其实最近几天 MSTC 在纳新,昨天我还在面试别人,一般如果遇到觉得合适的但是预感到有可能会很忙的那种人,我们都会问诸如“你能投入多少时间到社团里来”之类的问题。

Read the rest >>>