Monthly Archives: February 2012

一声叹息:两台服务器是为失败者准备的

一、

总裁:“我们不需要两台服务器”

我:“可是我们需要双机备份”

总裁:“两台服务器是为失败者准备的,优秀的团队绝对不允许任何一台服务器出问题”

我:“唉…”

二、

领导:“我们的外网网站应该支持IE8”

开发:“我们需要安装IE8才能测试

领导:“技术支持部门会为你们测试”

技术支持:“我们不支持IE8”

开发:“我们需要安装IE8来测试

领导:“你们不允许安装未经批准的软件

开发:“唉…”

领导:“为什么我们的外网网站还没有支持IE8?”

三、

技术总监:“我们要准备把我们的MySQL换成SQL Server。”

开发人员:“这是出于什么目的?一切都运转良好呀,而且买SQL Server需要花费¥¥¥…”

技术总监:“因为MySQL不是‘企业级’的。”

唉…

四、

一个同事在写单元测试。当运行起来后,他发现有个测试断言失败了。他如何解决这个问题?他把它给删了,因为“没有人会注意到这些”。

唉…

五、

老板:我们需要在这放一个cookie——他指着屏幕。

我:什么?

老板:在这放一个cookie——他再次指了一下屏幕。

我:呃…

技术负责人:他的意思是一个下拉列表。

六、

我:在我们把这些屏幕截图通过网络送出去之前应该用ffmpeg工具包把它们压缩一下…

团队负责人:谁打算去学习这些没有文档的api?我们先用多线程技术直接发送数据…

我:这样可能数据量太大…

团队负责人:没错,先干着。你抽空在“业余”时间研究一下那个api。

团队:哈哈…

….. 一个月后,多线程版的实现了…

团队:局域网上运行表现非常好…放到WiFi网络上试试

…. 由于数据延迟,慢的像蜗牛…

团队负责人:你有没有在业余时间研究一下那个ffmpeg?

我:唉…

七、

我知道,我们需要用 pngquaint软件 压缩60多个总共20多兆的PNG图片。

pngquaint软件崩溃了,怎么回事?

研究发现,这些PNG文件实际上是JPG文件,只是名称被改成了PNG,不知道之前那个程序员她想干嘛。

唉…

转自:http://www.lupaworld.com/article-216087-1.html

Ubuntu部署Git服务器

Rui以前都用Subversion作为开发的代码版本管理工具,现在看到很多人在大力推荐Git,同时看到有很多知名的开源项目也纷纷从sourceforge和google code迁移到了Github上,外加Git又是Linus大神继Linux之后的又一开源力作,长期使用Linux作为首选Desktop OS的Rui岂有不上手一试之理。今天抽时间在自己的VPS上安装了Git,长期使用SVN的Rui在上手时确实还有些不习惯,这个问题留待日后边用边熟悉,今天就记录一下在Ubuntu上安装配置Git的方法。

首先安装git和gitosis:

Read more »

亲爱的老板:程序员的10分钟就是3个小时

导读:国外程序员艾德·韦斯曼(Ed Weissman )从业32年。某天老板告诉他产品有个问题,10分钟可以修复问题,谁知结果一干就是3个小时。本文就是艾德记录下的过程。

10:48

老板:嗨,艾德,苏在底特律说,“产品历史屏幕”上经常出现错误的发票号码(Invoice Part Number)。你能帮我们搞定这个问题么?

艾德: 我现在在忙其他事。你到我的任务队列中提交一个ticket吧。

老板: 这事10分钟就够了。

艾德: 你确信么?

老板: 嗯,确定。我一会开个网络会议。苏会演示给你看,然后你有空的时候再仔细看看。

艾德: 好的。

老板: 嗯。去你的 Outlook 中查收(会议)邀请吧。

11:05

收到 11:30 的网络会议的 Outlook 邀请,接受。

11:25

从我的IP电话呼叫了网络会议的800号码。拨了两次,都占线。从IP电话打我手机,同样是忙。哎,IP电话系统再次坏了。从我手机呼叫了网络会议的号码。我是第一个上线了,然后又挂掉了。在浏览器中点击链接进入了网络会议,还是第一个。

(艾德开始在浏览器的另一个选项卡中看 Hacker News。)

11:38

老板进入会议,问:苏在哪里?

艾德: 我不知道。

老板: 你能看到我的屏幕么?

艾德: 不能。

老板: 哦,等一下。我来做主(Let me be the host)。现在能看到了么?

艾德: ?嗯,可以了。但我想苏是不是去展示问题了。

老板: 对。我一会让她做主。

(艾德开始在浏览器的另一个选项卡中看 Hacker News。) Read more »

langdetect, a simple java language identifier library

When I use Apache Nutch to crawl the Chinese website, there’s a problem make me unhappy, the language-identifier plugin which nutch provide can’t detect Chinese characters, I have to find a new method to identify the language that the website uses. Finally I went about solving this problem with ‘langdetect’, an open source java language detection library. The project is deployed on http://code.google.com/p/language-detection/.

LangDetect support 53 languages, awesome! We can check the support language list from here: http://code.google.com/p/language-detection/wiki/LanguageList.

And we can use it as simple as the sample show in it’s project homepage.

import java.util.ArrayList;
import com.cybozu.labs.langdetect.Detector;
import com.cybozu.labs.langdetect.DetectorFactory;
import com.cybozu.labs.langdetect.Language;

class LangDetectSample {
    public void init(String profileDirectory) throws LangDetectException {
        DetectorFactory.loadProfile(profileDirectory);
    }
    public String detect(String text) throws LangDetectException {
        Detector detector = DetectorFactory.create();
        detector.append(text);
        return detector.detect();
    }
    public ArrayList<Language> detectLangs(String text) throws LangDetectException {
        Detector detector = DetectorFactory.create();
        detector.append(text);
        return detector.getProbabilities();
    }
}

When I test it, I found I need to add jsonic-1.2.x.jar into the project’s build path. Which is not contain in the package when I downloaded langdetect. So I have to download jsonic by myself and add it to build path of the project. After all, everything goes on the track now. Enjoy it!

By the way, langdetect provide a build of nutch’s plugin, we can integerate it with our cluster conviniently.