2007年12月29日星期六

一天不学习,赶不上刘少奇

今天就出去了一天,陪儿子去了趟白云山,没上网,晚上回来在google reader上读了篇莫名其妙的blog,《那两段让人心酸的视频》,就隐约感觉出了什么大事,继续翻着今天未读的blog,逛到了三表那里,也是一篇莫名其妙的贴图,

嘛意思?为嘛要和CCTV过不去?
继续逛,终于,终于让我发现了这个地球人都知道的secret,


顺便Google了一下,这儿这儿这儿都有报道, 但也发现有些地方的报道已经被和谐了,所以,俺不厌其烦的把报道原封不动copy过来,也算留个证据。《 北京台财经女主播大闹央视 张斌婚外情为哪般?》

新闻发布会现场,胡紫薇冲上台发言。

新闻发布会现场,胡紫薇冲上台发言。

胡紫薇被工作人员劝离发布会现场。

胡紫薇被工作人员劝离发布会现场。
12月28日下午3时,中央电视台体育频道改名为奥运频道新闻发布会召开。会议进行到中途,主持人张斌正要介绍乒乓球运动员王楠上台之前,一个女人突然出现,眼尖的现场记者认出她就是北京电视台主持人胡紫薇,张斌的妻子。张斌妻子想上台发言,被张斌强行拦住,胡紫薇说给我一分钟就可以,随后甩开张斌上台拿起麦克风开始讲话:“2008年来了,大家都能过一个好年,我和张斌就不能了。”随后她断断续续说,意思是张斌表面一套,背后一套,貌似两人发生了感情纠葛。央视副台长江和平和另外几人赶紧上台把胡紫薇劝走。张斌在王楠发言前,上台说对不起大家,然后发布会继续。     由于发布会的重要性,央视的副台长、总编辑均有出席。
  目前,已有人将该事件过程的视频发布在网站上。(钟合)
  附:网上公布的现场视频的文字内容
  (视频开始,胡拿麦说话,张斌想阻止又不方便动手)
  胡:……但是有一天,我呢不是作为一个节目主持人的身份,而是作为站在我身边的张斌先生的(哽咽)太太,来为大家……(被打断)耽误大家一分钟的时间!耽误大家一分钟的时间!收好(抓住台子)
  胡:今天对于奥运频道是一个特别的日子,对于张斌先生是一个特别的日子,但是对于我来讲也是是一个特别的日子。因为在两个小时之前,我知道除了我之外,张斌先生还和另一个女人保持着不正当的关系。  
  胡:明年是奥运的一年,全世界的人民都在关注中国。但是,但是一个法国的外交部长说过:中国人如果要是在价值观上没有……(画外音:请不要拍摄)那么这一切又有什么意义呢?又有什么意义?(上来很多人拖她)你们就这样对待一个弱女子?你们就这样对待一个弱女子吗?    
  胡:(不断挣扎)我只说最后一句话,让我们可以保持风度地对抗。但是 法国的那一位外交部长曾经说:中国在能够输出价值观之前,不会成为一个大国。在我们面前面对着这样道貌岸然的……张斌内心并不能够面对自己的时候……甚至于不敢面对他受到伤害的妻子的时候。我觉得……    
  胡:今天可能是最后的一个星期天了。明天大家都会过一个很好的……长假,我和张斌是不可能了。    
  画外音:何必呢?    
  胡:非常不好意思,我也是……但是知道……
  张斌:对不起大家。
  胡紫微简历(据人民网)
  生 日: 4月5日
  身 高: 169 cm
  体 重: 50 kg
  血 型: O型
  星 座: 牧羊座 富正义感 善良直率 精力充沛 乐于尝试新鲜、开创性事物 是12个星座中比较难以模仿的星座
  个性: 一半是海水 一半是火焰
  学历: 毕业于北京电影学院文学系 获文学学士学位 并获香港中文大学金融财务管理硕士
  主持风格: 睿智风趣 亲和自然 机智灵活 具有较强的应变能力
  最想做的事: 和老公一起周游世界(她的老公是CCTV5的主持人张斌)

links for 2007-12-29


2007年12月28日星期五

深圳奇迹

去年年初的时候,我和很多同事同时离开一家我们工作了很久的公司,我来到了广州。
我们在那家公司呆了那么久,皆因为我们陶醉在一种自以为创业的氛围中,但当我们醒来的时候,发现老板确实是在创业,但我们却是被忽悠的。呵呵,挺大的人了,还被这种小儿科手段骗了,真是没面子。
又到了年底,我还在广州没摸没样的混着,忽然收到了关于其中一个朋友的消息,有人要花几百万收购他公司一部分的股权。我是既吃惊又不吃惊。
他就是我们当初一起离开的同事,不同的是,我们大多数人又混进了所谓的大公司,而他却痛定思痛,再也不打工,自己开了一家公司。不到两年的时间,只依靠个人的能力,能有这样的成绩,让人吃惊。但联系到他的聪明,创业破釜沉舟的决心和付出的努力,一切又是水到渠成。

你也许觉得这没什么,几千万上亿的财富fortune故事你每天都能听说,几百万根本不入你法眼。如果你真是成功人士,我也没话说,但对于大多数普通人来说,靠打工你是一辈子积累不了这么多财富的。
这种财富故事,不是道听途说的,不是电视上演的,报纸上登的,而是真真切切的发上在我的身边。朝夕相处的同事,没用多久就进入了成功的初级阶段,让你不由得不叹服。
回想起自己在深圳的这么多年,不少曾经的同事,现在己经是老板,或者炒楼发了财。在这里,你很少能看见整天无所事事游手好闲的人,大家都拼命想着发财;这里也没有广州上海的所谓白领文化,在公司打工,也是为了自己日后做老板积累实力。所以说,深圳就是座欲望都市,每个人都充满了欲望,都想着要开创自己的事业。但我喜欢这座城市。
在深圳,什么奇迹都会发生。

2007年12月26日星期三

2007年12月25日星期二

2007年12月24日星期一

Scripting in Java: Languages, Frameworks, and Patterns

Overview

Scripting in Java starts with theexplanation of basic scripting concepts and mechanisms needed forimplementating scripting languages on the Java platform. Next, itfocuses on particular languages available for Java developerstoday, such as Groovy, BeanShell, Python (Jython), JavaScript(Rhino), etc.
After these basic concepts, the book'stopic is moved towards frameworks and patterns. This part of thebook describes Apache BSF framework and the Scripting API(javax.script). It also introduces practical advices and designpatterns for successful usage of scripting languages in Javaprojects. At the end, the Web Scripting Framework(javax.script.http) is described with examples of integration ofPHP and Java web applications.

links for 2007-12-24


2007年12月8日星期六

搜狗语料库的预处理

搜狗发布的互联网语料库包含了约1亿互联网页面,是一个非常好的原始语料库,可以拿来对统计语言模型进行训练。但首先我们需要对它进行预处理。可以参考http://blogs.sun.com/yongsun/entry/a_simple_stript_to_extract,我把这个脚本保存为extract.py。
 
我是在Windows下的cygwin中执行这个脚本的。首先df查看本机硬盘的位置,然后转到文本存放的地方,运行
pythonextract.py content_0 > processed
 
由于这个脚本在处理文本的时候使用了UTF-8,所以处理过的文本在java中打开时也应该使用同样的编码。
 
似乎我应该去弄一张unicode编码对应表。

links for 2007-12-08


2007年12月2日星期日

数学之美——统计语言模型

 google中国的blog“google黑板报”,从去年开始连载了一个“数学之美”系列,一直没有认真读过,最近准备开发中文信息处理了应用,这个系列又引起了我的注意。粗粗浏览了一遍,真是写的太好了,作者语言平实,婉婉道来,正好解释了我的多个疑惑。
第一篇“统计语言模型”,理解起来应该没有什么困难,不过最好先补习一下“条件概率、乘法公式、全概率公式”的基础知识。

links for 2007-12-02


2007年11月29日星期四

互联网公司的实验室

自从google的labs推出越来越多的创意产品,各大互联网公司也纷纷成立自己的labs,没事去逛逛,会有很多有趣的发现。
 
google labs
 
yahoo
 
adobe
 
国内的公司也不甘示弱,
Sohu
腾讯
 
联想竟然也有

links for 2007-11-29


2007年11月26日星期一

2007年11月2日星期五

史上最强的电脑系列

 今天路过一个修车铺,远远看见老板的电脑,吓了一跳,貌似Apple一体机,走近了一看,原来是把液晶显示器拆的只剩屏幕,用透明胶粘在了机箱上,注意到屏幕下的几个按钮没。由衷的赞叹一声,强!
 

2007年10月29日星期一

推荐两个小工具

两个工具最主要的特点都是支持多tab浏览窗口。
 
UltraExplorer,可以替换缺省的资源管理器,使用起来很方便,再不用开多个explorer,支持定义favorite文件夹。虽然同类产品有很多,但我觉得UltraExplorer好用、够用,而且免费,所以推荐。
 
搞java开发的人,经常会开多个黑呼呼的命令行窗口,还要在它们之间来回切换。自然会想到会不会支持多tab命令行窗口的工具呢?google之,果然有这样的工具,PowerCmd is a modern and sleekWindows Command Prompt Replacement that allows you to run multipleconsoles within a single tabbedwindow.帖张图,漂亮吧,最主要还是方便、好用。
 

links for 2007-10-29


2007年10月24日星期三

Tip: 如何利用启动脚本将目录下的多个jar自动加入到classpath中

自己写的java独立程序,一般都需要提供一个脚本来启动程序,就像我们常用的tomcat、weblogic。
在这个脚本中,我们会设置好各种环境变量,最重要的就是classpath了。
通常我们的java程序会用到很多开源的java项目,log4j,apache的commons系列,spring...
写个java应用,没有使用十个八个开源项目,你都不好意思跟人打招呼。
这时,就会碰到一个问题,设置classpath的时候要一个个列出jar包来,例如

setclasspath=%classpath%;./lib/xxx.jar;./lib/xxx.jar;./lib/xxx.jar;./lib/xxx.jar;....
是不是觉得很烦,有多少个jar都要列出来。于是google了一下,问题顺利解决,答案就在本机上有。
打开tomcat的启动脚本,注意到这一部分:

for %%i in(%TOMCAT_HOME%\lib\*.*) do call %TOMCAT_HOME%\bin\cpappend.bat%%i
循环取lib目录下的所有文件,然后callcpappend.bat,很显然是用这个脚本把前面取出的文件加入到了classpath。
看看cpappend.bat的内容,

if ""%1"" =="""" goto end
set CLASSPATH=%CLASSPATH%;%1
shift

rem Processthe remaining arguments
:setArgs
if ""%1"" == """" goto doneSetArgs
set CLASSPATH=%CLASSPATH% %1
shift
goto setArgs
:doneSetArgs
:end

果然如此。照猫画虎,很快就搞定了自己的脚本。

links for 2007-10-24


2007年9月12日星期三

2007年9月11日星期二

links for 2007-09-11


2007年8月2日星期四

links for 2007-08-02


2007年7月10日星期二

links for 2007-07-10


2007年7月7日星期六

links for 2007-07-07


2007年7月5日星期四

2007年6月16日星期六

一个很使用的Vim插件

MultipleSearch同时高亮显示多次搜索的内容。我总是用Vim看日志,能同时显示多次的搜索结果太重要了。

下载后, Copy the MultipleSearch.vim file into your local pluginsdirectory, restart (g)vim, and you are ready to go.

命令语法
搜索 :Search
清除结果 :SearchReset

设置最大的同时显示颜色数
在 _vimrc中设置g:MultipleSearchMaxColors
let g:MultipleSearchMaxColors=5

What does <E extends Enum<E>> mean?

Enum的使用很简单,我们定义的enums实际上是继承了java.lang.Enum的类,所以才是类型安全和compile-timechecking。

稍微想了解一下Java是如何实现Enum的,所以打开java.lang.Enum的源代码,还没细看就先被类的声明吓了一跳。

public abstract class Enum<E extends Enum<E>>

implements Comparable<E>, Serializable

What does <E extends Enum<E>> mean?似乎是个递归的定义,google了一下,很快找到了一篇相关的文章,试着解释一下。

看不明白的,还是直接看原文吧。

1.Enum接受一个类型参数

2.Enum是一个抽象类,任何Enum的子类都必须为Enum提供一个类型参数

3.这个类型参数必须是Enum的子类

为什么要把范型定义搞的如此复杂呢?先看看这么做有什么好处。请看下面这两个类:

public abstract class TaxPayer<P extendsTaxPayer<P>>

{

protectedabstract P getDetailedType();

publicdouble extortCash()

{

return strategy.extortCash(getDetailedType());

}

}

public class Employee extends TaxPayer<Employee>

{



@Override

protectedEmployee getDetailedType()

{

return this;

}



}

在基类TaxPayer中声明了一个抽象方法getDetailedType(),强制要求子类覆盖这个方法,并且要求这个方法返回的是实际的子类。

也就是说,我们允许superclass定义这样的方法,它的参数和返回值可以是具体的子类,而不是基类。

我们可以看到,在TaxPayer的extortCash()方法中,通过getDetailedType()得到的实际上具体的子类。

这个基于范型实现的strategy模式,完整描述可以参考”Strategy Pattern with Generics“.

明白了上面的例子,你也就应该能够知道为什么java.lang.Enum被声明为Enum<Eextends Enum<E>>.

1.类型参数E被使用为getDeclaringClass()的返回值

2.类型参数E作为compareTo()的参数,看下面这个例子:

OpType opType = OpType.ADD;

ProductStatus status =ProductStatus.NORMAl;

opType.compareTo(status);

这儿直接就会报syntaxerror,compareTo的参数必须是OpType类型。这样,在基类的方法定义中,要求了方法参数是某个具体的子类。

简单的一个Enum,还包含了这样的设计技巧,看来JDK的代码还是要常翻出来看看。

links for 2007-06-16


2007年6月7日星期四

2007年6月6日星期三

What does > mean?

Enum的使用很简单,我们定义的enums实际上是继承了java.lang.Enum的类,所以才是类型安全和compile-timechecking。
稍微想了解一下Java是如何实现Enum的,所以打开java.lang.Enum的源代码,还没细看就先被类的声明吓了一跳。

public abstract class Enum>
implements Comparable, Serializable

What does > mean?似乎是个递归的定义,google了一下,很快找到了一篇相关的文章,试着解释一下。
看不明白的,还是直接看原文吧。

1.Enum接受一个类型参数
2.Enum是一个抽象类,任何Enum的子类都必须为Enum提供一个类型参数
3.这个类型参数必须是Enum的子类

为什么要把范型定义搞的如此复杂呢?先看看这么做有什么好处。请看下面这两个类:

public abstract class TaxPayer

>
{

protectedabstract P getDetailedType();
publicdouble extortCash()
{
return strategy.extortCash(getDetailedType());
}
}

public class Employee extends TaxPayer
{

@Override
protectedEmployee getDetailedType()
{
return this;
}

}
在基类TaxPayer中声明了一个抽象方法getDetailedType(),强制要求子类覆盖这个方法,并且要求这个方法返回的是实际的子类。
也就是说,我们允许superclass定义这样的方法,它的参数和返回值可以是具体的子类,而不是基类。
我们可以看到,在TaxPayer的extortCash()方法中,通过getDetailedType()得到的实际上具体的子类。
这个基于范型实现的strategy模式,完整描述可以参考”Strategy Pattern with Generics“.

明白了上面的例子,你也就应该能够知道为什么java.lang.Enum被声明为Enum>.
1.类型参数E被使用为getDeclaringClass()的返回值
2.类型参数E作为compareTo()的参数,看下面这个例子:
OpType opType = OpType.ADD;
ProductStatus status =ProductStatus.NORMAl;
opType.compareTo(status);
这儿直接就会报syntaxerror,compareTo的参数必须是OpType类型。这样,在基类的方法定义中,要求了方法参数是某个具体的子类。

简单的一个Enum,还包含了这样的设计技巧,看来JDK的代码还是要常翻出来看看。

2007年6月5日星期二

2007年5月23日星期三

2007年4月21日星期六

2007年4月20日星期五