2011年3月1日

2011年2月简述

对照年度总结

每周精读一篇论文:这条完成得很不好,只精读了一篇
锻炼:每周都参加了羽毛球活动,额外的两次锻炼也在住处的小区保质保量完成(主要是跳绳,仰卧起坐加双杠)
读书:看完非专业书籍《禅里禅外悟人生》和《大学毕业等于零》,在读专业书籍《Essential C++》
工作:进展顺利,主要围绕语料整理和新的toolkit的封装
生活:新加坡最北边的地段比市区凉快,也更安静

下月主要改进:上班时需全身心工作,下班回家后全身心休息

2011年2月27日

折腾语料的全角半角

折腾语料:整理语料时需要统一编码,开始是折腾utf8和gb的统一,后来折腾全角半角。又折腾出来一个经验:如果语聊中全角半角混杂的话,需要谨慎的统一,现在试验找到的final solution是先全部转半角,再全部转全角。由于转全角时保留了英文字幕为半角,原先的方案是直接将语料全部转全角,这两天发现那样原先语料库中的全角英文字母就会一直存在。

恩,还得谨慎啊。

2011年2月21日

重学C++之01《Essential C++》:P5程序的#include 注释与否

----------------------------------------------
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string user_name;
    cout << "Please enter your first name: ";
    cin >> user_name;
    cout << '\n'
         << "Hello, "
         << user_name
         << " ... and goodbye! \n";
    return 0;
}
----------------------------------------------
上面这段程序在Ubuntu 10.04上g++编译没问题,执行也没问题。按照P6页底的练习1.2将第二行注释掉,g++编译没问题,执行也没问题。

本来想忽略掉练习题直接往下看的,刚才等待某程序执行的过程中,一时兴致,将这个练习作了一下。这个有点超出我的想象了。为什么不引用<string>也可以呢。遍访google的结果,找到了大致的原因如下:

----------------------------------------------------------
以前也有同事遇到一样的问题,好的习惯是使用时包含string头。iostream间接引用了string,在VC下的确会出现操作符不能使用的情况,我觉得这个做法是正确的,g++使用的STL实现可以在只包含iostream头时照样使用那些操作符。
----------------------------------------------------------
参见:http://topic.csdn.net/t/20051213/12/4456074.html


有人专研的很深:
----------------------------------------------------------
我找到了原因。

在<iostream>中的“stringbuf”类使用到了string定义它的一个public member.

class stringbuf{
public:
string str ( ) const;
void str ( const string & s );
...
}

所以<iostream>应该要包含<string>才可以完成这个声明。

感谢各位。
----------------------------------------------------------
参见:http://topic.csdn.net/u/20100121/05/7abe6594-5ad2-4f1e-b1f8-8c9f74c3bc59.html


有人还引用《Effective C++》来说明类似问题的解决方案:
----------------------------------------------------------
《Effective   STL》

条款48:总是#include适当的头文件

STL编程的次要麻烦之一是虽然可以很容易地建立可以在一个平台上编译的软件,但在其它平台上则需要附加的#include指示。这个烦恼来自一个事实:C++标准(不像C标准)未能指定哪一个标准头文件必须或者可能被其他标准头文件#include。由于有了这样的灵活性,不同的实现就会选择去做不同的东西。

这在实践中意味着什么?我可以给你一些的概念。我使用了五个STL平台(咱们叫它们A、B、C、D和E),花了一些时间在它们上测试了一些小程序来看看我可以在忽略哪个标准头文件的情况下仍然成功编译。这间接地告诉我哪个头文件#include了其他的。这是我所发现的:

        *   对于A和C, <vector>   #includes   <string> .
        *   对于C, <algorithm>   #includes   <string> .
        *   对于C和D,   <iostream>   #includes   <iterator> .
        *   对于D,   <iostream>   #includes   <string>   and   <vector> .
        *   对于D和E,   <string>   #includes   <algorithm> .
        *   对于所有的五个实现, <set>   #includes   <functional> .

除了 <set>   #include   <functional> 外,我无法使缺少头文件的程序通过实现B。按照Murphy定律,你总是会在像A、C、D或E那样的平台上开发,然后移植到像B那样的平台,尤其是当移植的压力很大而且完成的时间很紧的情况下。

但是请别指责你将要移植的编译器或库实现。如果你缺少了需要的头文件,这就是你的过错。无论何时你引用了std名字空间里的元素,你就应该对   #include合适的头文件负责。如果你遗漏了它们,你的代码也可能编译,但你仍然缺少了必要的头文件,而其他STL平台可能正好会抵制你的代码。

要帮你记起需要的东西,关于在每个标准STL相关的头文件中都有什么,这里有一个快速概要:

        *   几乎所有的容器都在同名的头文件里,比如,vector在 <vector> 中声明,list在 <   list> 中声明等。例外的是 <set> 和 <map> 。 <set> 声明了set和multiset, <   map> 声明了map和multimap。
        *   除了四个算法外,所有的算法都在 <algorithm> 中声明。例外的是accumulate(参见条款37)、inner_product、adjacent_difference和 partial_sum。这些算法在 <numeric> 中声明。
        *   特殊的迭代器,包括istream_iterators和istreambuf_iterators(参见条款29),在 <iterator> 中声明。
        *   标准仿函数(比如less <T> )和仿函数适配器(比如not1、bind2nd)在 <functional> 中声明。

无论何时你使用了一个头文件中的任意组件,就要确定提供了相应的#include指示,就算你的开发平台允许你不用它也能通过编译。当你发现移植到一个不同的平台时这么做可以减少压力,你的勤奋将因而得到回报。
----------------------------------------------------------
参见:http://topic.csdn.net/t/20051213/12/4456074.html

2011年2月16日

Am old?

不当家不知柴油盐米贵,不锻炼不知长期不动弹身体有多差!

昨晚准备活动后跳绳400下,仰卧起坐13下。今早起床时赖床25分钟,还觉得身上有感觉。顿觉一个多月没锻炼身体变差不少啊。

2011年2月7日

展望2011

何时是一年的开始,因人而异。有人是元旦节,有人是春节。显然,我是春节那伙儿的。

回顾我的2010,基本实现了两大年度目标,总体表现自己的打分能到80分。展望2011,给自己的目标如下:

1. 心态放宽,扎实基础,量化的目标是每周精读一篇相关论文;

2. 锻炼身体很重要,刚结束的三周回国之旅赶上重感冒,发烧咳嗽头晕的感觉真不好,量化的目标是每周参与单位组织的羽毛球活动,外加两次额外的身体锻炼;

3. 多读书是必须的,现在刚搬的住处到单位需要一个小时,每天利用好这段时间多读书,量化的目标是每月读完一本喜欢的书;

4. 不轻易的给自己制定计划,一旦制定必须严格执行,量化的目标是制定的计划必须有每次完成的日志。

目标很杂,一句话概括就是夯实基础,争取突破。

在这里恭祝各位朋友兔年吉祥,万事如意!

2010年12月27日

[zz] 14个值得推荐的个人提升方法

14个值得推荐的个人提升方法

Link: http://www.apple4.cn/2010/04/14-ways-to-improve-youself/

在成长生活中,我一直在寻找能够提升自我的方法途径。我已经找到了14个最好的技巧可以帮助你更好的提升自我。其中有一些简单方法步骤你可以立即开始去做,还有一些更大的计划你需要更多的努力去完成。

1.每天读书。书是智慧的源泉。你读的书越多,你就会变得更加有智慧。都有什么书可以让你提高自己呢?博华看过的《建立你的时间资本》、《要事第一》、《世界上最伟大的推销员》等等都是很好的书,可以帮助你认识自己。另外朋友的博客 学无止境 也在《让每一天有意义:一生的学习方法图书推荐》一文中有推荐学习方法的书。

2.学习新的语言。学习一门新的语言是一项挑战,你可以通过学习语言来了解不同的文化背景,丰富自己的知识。博华曾发表过《如何用你的ipod学习35种语言》,有ipod的朋友可不能错过这个机会。前一阵海地地震时,博华就学习了海地语的一些基本语句,很有意思。你还在苦苦学习英语么?为什么不去学习新的语言呢,也许有更适合你的语言等着你去发掘。

3.打造你的灵感空间。你的生活环境会影响你的情绪,如果你生活在一个充满灵感的环境中,你每天都会富有创造力和激情。如果你的房间还是一团糟的话,是时候改造它了。从小事做起,先整理你的桌面吧。可以看看《12个小技巧使你的书桌整齐有序,学习更加高效》。

4.战胜你的恐惧。不得不说的是,每个人都有他害怕的东西。有人害怕在众人面前演讲,害怕成功,害怕冒险,害怕鬼怪,甚至是害怕毛毛虫。你也有害怕的东西吧?为什么不花时间去战胜你的恐惧呢?这会帮助你成长的。

5.升级你的技能。如果你玩过角色扮演游戏的话,你应该了解升级的概念――通过增加经验值,你会变得更加强壮,更加厉害。我们的生活就好似一场真实的角色扮演游戏,只不过你不能任意存档或者读档(这就是现实与虚拟的区别)。作为一个博客作家,博华总是在学习新的知识,不断升级我的技能,在过去的一年里,我为自己增添了很多技能。这些新技能也是战胜强大"Boss"(生活中的困难)的最大资本。你会为自己升级哪些技能呢?

6.给未来的自己写一封信。5 年后的自己会是什么样的呢?你可以写一封信给5年后的自己,我想你一定有很多话要说:"告诉自己要好好学习,珍惜时间……不要做浪费时间的事情"亦或是 "珍惜身边的朋友,亲人……" 好吧,既然这样,为什么不从现在开始珍惜生活呢?要知道,现在的每一步都在书写自己的历史。我想5年后的自己应该不仅仅是身体上的成长,思想与心灵也应该更加成熟。

7.承认自己的缺点。每个人都有缺点,但重点是了解它们,承认它们,并且重视它们。你的缺点是什么呢?不用告诉我,用自己的行动去改掉吧!

8.立即行动。我承认天枰座的我确实有时会变得非常犹豫,不知道该怎么选择。后来,我找到了克服犹豫的秘诀――立即行动。通常一件事我会在60秒内果断下决定,然后立即执行。这样我就不会给自己任何时间去犹豫不决。自从我养成了立即行动的习惯,我的效率变得更高了,我节省了一大笔时间去做事情,而不是去想,去犹豫。我认为,立即行动的习惯是每个人都应该努力培养的,这会给你的生活带来巨大的改变。可以看看这篇文章《7步养成立即行动的习惯》、《克服拖延――7个技巧让你坚持前进》,你会收获更多。

9.向你佩服的人学习。每个人在生活中都有自己佩服的人,他们可以是伟大人物,也可以是你的朋友,你的亲人,甚至是一个陌生人。博华在参加运动会的时候,非常佩服5000米比赛的第一名,每一次他从我身边跑过,我为他坚定地眼神所折服。尽管他大口喘着粗气,汗流浃背,但是他还是没有放慢脚步。我想,这种坚毅的眼神正是我所缺少的,我要向他学习。你也有佩服的人吧?你之所以佩服那个人,是因为他们身上拥有某种你没有的东西,而这种东西正是你所缺少的。所以,向你佩服的人学习,从他们身上获得新的能力。

10.减少在QQ上的时间。我已经认识到自己养成了一个不好的习惯,那就是每次打开电脑第一件事就是挂上QQ,我的很多朋友也有这个习惯。当你挂着QQ的时候,你会不时的收到聊天信息,打断你正在进行的工作。每当你停下手头工作去查看QQ消息的时候,你的时间被浪费了,而重新进行工作又需要一定的"转换时间"。

11.培养一个新的习惯。30 天可以培养一个新的习惯,我在用Toodledo这个软件管理时间时,我设定了培养新习惯的计划。将一个任务设定成每日重复,每天只需完成这个任务,这样 30天后我就养成了新的习惯。现在,我通过每日习惯计划已经养成了每天做50个俯卧撑;每天早上读一个小时英语;每天听写VOA英语;每天6:30起床…… 习惯一旦养成,就很容易做到了。

12.让过去的过去。你是否曾经有过一些不愉快的事情呢?如果有的话,是时候让它们随风而去了。记着那些事情只会阻挡你前进的步伐。你是否有时会焦虑呢?不如看看这篇《如何消除焦虑情绪 》。

13.送人玫瑰手有余香。你对别人好,别人也会对你好。事实上,我们很多人并不能够做到这一点。我们看到别人的缺点,总是想以一个长者的身份教育别人,但是殊不知每个人都有自己的生活,你不能将你的意志强加于别人身上。试着尊重他人的想法与生活习惯,更多的帮助他们,你会发现与人相处好其实很简单。

14.好好休息。个人提升不是一朝一夕就能完成的,它需要我们持之以恒的努力与勤奋。当我们看书累了的时候,要懂得休息,听听轻音乐,舒缓心情。散散步,亲近大自然。只有休息好了,我们才能更好的前行。

2010年11月24日

祝贺我景仰的王海峰老师获选ACL副主席

今天一早在Buzz上看到Muyun Yang老师说ACL选举结果出来了,查看ACL官方网站上并没有相关信息。Yang老师回复Buzz时看到了消息,我所景仰的王海峰老师当选了副主席。后来在目前新闻网以及我毕业实验室的网站上都看到了这个新鲜出炉的大好消息。
详见: http://today.hit.edu.cn/articles/2010/11-23/1115591920.htm

王老师在我心目中做人做事做学问都堪称我辈楷模。

我和王老师有过四次接触。第一次是王老师带领东芝研究团队到我们实验室学术交流。那次讨论会,王老师非常认真的听取了实验室每位博士生的工作介绍,并逐一给与了指导建议。好几个小时下来,我们都觉得有点疲惫了,王老师是那么认真的坚持最后,没有丝毫懈怠。

第二次见到王老师是在美国哥伦布市召开ACL2008。由于shiqi的签证问题,王老师到会介绍了他们复述方面的工作。在会后去当地动物园游玩的一路上,我和王老师交流了很多,也对王老师有了进一步的了解。几番下来,非常喜欢王老师的为人处世风格。

第三次是开完ACL回到学校,大概过了两个月忽然收到邮件,王老师邀请我为中文信息学报撰写ACL2008概述。我欣然接受邀请,和王老师定好框架,我完成初稿后王老师又修改了两次,最终定稿。我建议王老师是第一作者,但是王老师坚持让我一个人做作者。这是我和王老师唯一的一次论文写作上的实际交流。虽然只是一个两页纸的概述,王老师的那种非常认真的态度再次深深的打动了我。

第四次是09年暑假我们学校计算机学院主办的高企之旅。期间我们参观了很多家北京的高新企业,包括微软亚洲研究院、NEC、百度、腾讯、华为北研所、富士通以及东芝研发中心。当时王老师是东芝研发中心的副所长。虽然是最后一站,但是在东芝我感受到了那种认真对待每件事的态度。我当时的博客里有详细介绍(http://billlangjun.blogspot.com/2009/08/blog-post_1204.html   或者    http://billlangjun.wordpress.com/2009/07/23/%E9%AB%98%E4%BC%81%E4%B9%8B%E6%97%85%E7%AC%AC%E4%B8%89%E6%97%A5/)。在东芝招待的那顿晚餐上,王老师酒桌上的豪爽彻底把我征服。

再次祝贺王老师。向王老师学习。在王老师身上,我再次体会到那种对研究的无比热情,和做人做事的风范。感谢王老师!