|
2006年3月6日
blog也搬迁了:http://blog.sina.com.cn/liuwendao
来武汉快三年了,留在北京的最后一件物件-电吉它,也被我拿到武汉来了
我们这么混,能成功吗?
立帖为证
军事演习区,一位妇女驾车在大桥前被一名军官拦住:“对不起,公民,您现在不能过去。”“为什么?”“这座桥在一小时前被炸毁了。”“您能告诉我这究竟是怎么回事吗?”“很抱歉,不行。我本人已于2小时前阵亡。” 伊万看电视,是勃在演讲。伊万觉得无聊,换了一个,还是勃在演讲,又换一个,还是他。伊万一连拨了几十个台,最后累了,准备关电视。这时候电视画面变成一个KGB,怒气冲冲地叫:“你再敢换?再敢换?再换判你10年大牢!” 某日苏联举行国庆**,沿着大街开来了炮兵、机械化步兵、坦克、自行火炮、战术导弹、战略核导弹,破坏力一个比一个大;队列末尾却是两个带公文包的矮子。在看台上勃列日涅夫惊讶地说:“这两个人破坏力比核导弹还大!他们是什么人?” KGB头子说:“不是我的人。” 国防部长说:“没见过他们。” 苏联总理说:“他们是国家计委的...” 戈尔巴乔夫视察农场,看到猪儿乖乖,一时兴起站在猪中间照了张像。 待到报纸准备发表时,编辑为照片的标题犯了难?? “戈尔巴乔夫同志和猪在一起”不好。 “猪和戈尔巴乔夫同志在一起”也不好。 报纸出版后,照片下的说明文字是?? “左起第三位是戈尔巴乔夫同志” 勃列日涅夫和美国总统卡特在瑞士开会,休息时间两个人很无聊,就开始比谁的保膘更忠诚。卡特先来,他把自己的报膘叫进来,推开窗(外面是20层楼)说:“约翰,从这里跳下去!” 约翰哭着说:“你着么能这样呢,总统先生,我还有老婆孩子呐。” 卡特被感动了,流着泪说是自己不对,叫约翰走了,然后抡到勃列日涅夫,他也大声叫自己的保膘伊万。 “伊万,从这里跳下去!” 伊万二话不说就要往下跳,卡特一把抱住他说:“你疯了?跳下去会死的!” 伊万一边挣扎着要跳下去一边说:“放开我,混蛋,我还有老婆孩子呐。” 早年莫斯科修地铁,工程师将方案上报斯大林审批。不久,方案发下来,上面有斯大林的签字。 细心的工程师发现图纸上多了一个圆型的茶杯印,于是莫斯科地铁就多了一条环形线。 斯大林肃反时期的苏联。一位内务人民委员部审判员结束一天的审判工作,回到办公室,突然一个人大笑起来。对面办公桌的同事奇怪的问道:“有什么好笑的事吗?”“是啊,”审判员用手帕擦着笑出来的眼泪:“一个很好笑的笑话……”“哦?说来听听?”“你疯了吗?!我刚判了说这笑话的家伙五年苦役!” 苏联30年代肃反扩大化时期。内务人民委员部的一间牢房里关了三个人,彼此间谈起坐牢的原因。 第一个人说,我因为反对了党书记彼得罗夫; 第二个人说,我因为支持了彼得罗夫; 第三个人说,我就是彼得罗夫。 戈尔巴乔夫和他的司机开着车在路上,戈尔巴乔夫突发异想,说:让开!我来开。一个老警察和一个新警察在路上值勤,见一辆车歪歪扭扭的开得疯快,老警察就对新警察说:去!好好收拾一下。新警察将车拦住之后,又没趣没趣地回来了。老警察问:怎么?里面是谁?新警察回答说:我也不知道里面是谁,反正给他开车的是戈尔巴乔夫。 美国外交代表团到苏联访问,苏联接待官员陪他们参观“建设的伟大成就”,并且得意的说:“到了下一个五年计划,每个苏联家庭都可以拥有一架私人飞机!”美国人惊讶的问:“ 他们要飞机干什么呢?”苏联官员说:“当然有用啊……譬如你在莫斯科听说列宁格勒开始供应面包了,你可以马上开着飞机赶去排上队。” 一位公民打电话到基辅电台问主持人:“共产主义到底是艺术还是科学?” 主持人说:“我也不清楚,但我肯定不是科学” “为什么?” “如果是科学的话,他们应该拿狗做试验。” 斯大林在大会上引经据典地说:“马克思和列宁说1+1=2,而托洛茨基和布哈林说1+1不等于3。是托洛茨基和布哈林说的对呢?还是马克思和列宁说得对呢?”下面听众一脸疑惑,“毫无疑问,是马克思和列宁说的对!”底下热烈鼓掌,“托洛茨基和布哈林是帝国主义派来的间谍,说1+1不等于3的人罪不容赦……” 列宁快去世了,叫赶快把继承人斯大林召进克里姆林宫来,临终有几句话要嘱托。“不瞒你说,我还有一个隐忧啊,斯大林。”“说吧,亲爱的伊里奇。”斯大林专心地听着。“那就是,人们会跟你走吗?不知你想过了没有?”“他们一定会跟我走的。”斯大林强调说,“一定会!” “但愿如此。”列宁说,“我只是担心,万一他们不跟你走,你怎么办?”“没问题!”斯大林答道:“那他们就得跟你走!” 集体农庄庄员伊万在河里捉到一条大鱼,高兴的回到家里和老婆说:“看,我们有炸鱼吃了!” “没有油啊。” “那就煮!” “没锅。” “烤鱼!” “没柴。” 伊万气死了,走到河边把鱼扔了回去。那鱼在水里划了一个半圆,上身出水,举起右鳍激动地高呼:“斯大林万岁!” “瑞典能否建立共产主义”? “不能。” “为何?” “列宁同志说了:共产主义不在山那边。” 一个苏联KGB特工和一个美国CIA特工互相吹嘘各自的机构是如何的杰出。 那个KGB特工首先发言说,“我们拥有你们美国过去15年里所有导弹发射的详细数据。” CIA特工说:“这不算什么。我们CIA掌握着你们苏联未来15年里所有当选的中央委员名单。” 一艘航行在大海上的轮船快要沉了,船长叫乘客赶紧跳海,但他喊了半天没有一个人跳,一个社会学家说我来喊,他去喊过之后所有的人都跳下海去了。船长觉得奇怪,问他是怎么喊的,社会学家回答说:我对法国人说这样跳下去很浪漫,我对西班牙人说这样跳下去很潇洒,我对英国人说这样跳下去是一种体育运动,我对美国人说这样跳下去有利可图,我对苏联人说这样跳下去是革命行动。 在苏联的一趟公交车,一个男的非常谦恭地问站在他身旁的另一个男的:“同志,请问您是克格勃吗?” 那人答道:“不是。” 又问:“那您有没有亲戚或朋友是克格勃呢?” 答:“没有。” 还问:“那您是否跟克格勃有些交往或联系?” 答:“没有,你要干嘛啊!” 该男生气地说:“干嘛,他妈的,你踩着我的脚了!” 赫鲁晓夫作报告,批判斯大林。忽然,有人从台下递了个纸条,写道:当他做坏事的时候,你在哪里?赫鲁晓夫一看这个条子,大声怒喝道:“是谁写的,给我站出来。”台下雅雀无声,没有人站出来。赫鲁晓夫接着说道:“同志们,我当时就和你们现在一样,你们知道我当时为什么不敢站出来了吧” 勃列日涅夫:同志们,美国人登上了月球,我们不能再等了,党决定让你们上太阳。 宇航员:总书记同志,我们会被烧死的。 勃列日涅夫:没关系,同志们,党都替你们想好了,你们晚上去。 电影《这里的黎明静悄悄》试映时,由于其中有部分裸体镜头,因此主管电影审核的官员曾试图把这部电影禁演,幸亏勃列日涅夫内部观看时感动得热泪盈眶,这部优秀的电影才有幸与观众见面,成为世界电影史上不朽的篇章。而另一部电影由于其中有主人公走到教堂时跪地痛哭的镜头,被电影审核官员认为是宣扬宗教而准备勒令裁掉这部分内容,恰恰勃列日涅夫看到这里时动了感情,因此这个镜头得以幸存下来。 当年的捷克斯洛伐克政府中,设立了一个“海军部”,结果,苏联老大哥就对捷克人说:你们是内陆国家,设什么海军部? 捷克人回答说:那你们不是也设了文化部吗?
最近看到越来越多的人使用mina,甚至在线下也碰到合作公司的库中使用MINA,出于好奇,尝试一下用自己的blog做一下调查,访问本blog的兄弟,如果您使用MINA作为自己的通讯基础件,请留言介绍一下自己
软件开发的世界里充满了不理解, 客户不理解软件是怎样开发的、经理不理解开发人员、开发人员不理解指挥者。问题在于软件开发惊人的困难,造成很少有开发人员能够说出软件自始至终是怎样开发的,并能够对这个过程中会遇到的不同选择所隐含的结果表现出适度的理解。 在软件开发人员还很年轻的时候(十几岁或二十出头),他们通常集中精力学习和使用技术,称自己为perl程序员、Linux专家、EJB开发人员、.NET开发人员等。对他们来说技术是最重要的事情。因为技术在不断的变化,年轻的程序员倾向于大致学习一个技术,在一到两个项目中使用,然后重新开始学习新技术或者是学习以前使用过的技术的最新发展。这里的问题是,他们一遍又一遍的重复的学习的不过是同样的低层次基本技能的不同风味。 幸运的是,很多开发人员在经过了几轮技术学习之后逐渐意识到:一旦用COBOL、Java、C#等语言为事务控制编写过代码,就会开始认识到基本的、本质的东西是不变的。不同环境下的数据库访问、用户界面设计等领域也是同样的情况。不久以后,开发人员逐渐认识到无论具体的技术怎样,很多基础性的东西是保持不变的,这些基础性的东西有的在学校里讲过,有的没有。 这种认识经常发生在开发人员接近三十岁或刚过三十岁的时候,通常是人们开始稳定下来,结婚、买房的时候。这是比较幸运的情况,因为上面提到的这些新的个人需求意味着他们不可能再投入大量的时间去学习新的技术,他们需要用这些时间和家庭成员在一起。突然的,高层次的角色如项目负责人、项目经理、(非敏捷的)建模人员等对他们变得非常有吸引力,因为这些角色不需要持续花费大量的时间和精力去学习新技术。于是,等到开发人员开始真正学到技艺的时候,他们已经处于离开开发人员角色的转变过程中了。所幸的是,新的“小年轻”不断的跟上来,这个过程在不断的循环重复。最终的结果是:大部分最活跃的正在开发软件的人通常不是最称职的做这件事的人,而他们自己甚至还不知道。
来自pythoncn的maillist,呵呵,挺有意思 ------------- 像Chris Qie <longroad1999@gmail.com>这样的在公共论坛用侮辱性言语挑起骂战并从中获取某种不知名快感的人,在Usenet文化中有一个名称:
-
Troll
。
- Troll作动词是钓鱼的意思,指那些人发表某种言论后等待别人的攻击性回复,从而获得快感。Troll还有一个意思是斯堪的纳维亚神话中一种长相丑陋、爱恶作 剧、令人讨厌的巨人,和那些找骂的人有相似之处,因此也被引申过来形容那些 人,做名词使用。回troll的贴则被称为feed the trolls,即给trolls喂食。
- Trolls有很多种,像Chris Qie只是其中一种,即使用种族歧视性语言激怒别人,好让别人回帖骂他。comp.lang.python上著名的troll: Xah Lee则是长年在各个 script语言讨论组上交叉张贴无关内容或用错误百出的话语对某种语言或者文化进 行攻击。但无论那种troll,他们的目的都是一样的:想通过怪诞的举动引起别人 的注意。这是一种病态心理,是一种未成熟,类似小孩“人来疯”似的举动。
- Trolls的存在对公共空间是破坏性的。它们的post会引起很多人回帖,甚至会有情绪激动者采用谩骂的方式回敬,这些人被称为trollhunter。这些行为正中trolls 的下怀,使他们获得被骂的快乐,从而更加积极的trolling。而且即使 trollhunter的动机是好的,也会给论坛带来不好影响,使其他用户接收到大量无 关信息和攻击性信息,成为受害者。公共空间的和谐性被破坏。
- Trolls最愿意看到别人回他的贴,无论是正儿八经指出他的错误还是义愤填膺的对他谩骂。对一个troll来说,最能让他感到沮丧的则是没有人理他。而我们,正是 应该让他们沮丧,失去trolling的动力。
- 对待trolls的方法,一方面要靠大家自觉,克制自己回帖的冲动,不给他们喂食。
另一方面,在邮件列表这种有管理员的公共空间,可以向管理员提出封禁trolls的 提案。
- 下图是我从c.l.python上Keith Thompson对Xah Lee的trolling行为提醒公众的帖子中拷贝过来的图片(请使用等宽字体观看)
+-------------------+ .:\:\:/:/:.
| PLEASE DO NOT | :.:\:\:/:/:.:
| FEED THE TROLLS | :=.' - - '.=:
| | '=(\ 9 9 /)='
| Thank you, | ( (_) )
| Management | /`-vvv-'\
+-------------------+ / \
| | @@@ / /|,,,,,|\ \
| | @@@ /_// /^\ \\_\
@x@@x@ | | |/ WW( ( ) )WW
\||||/ | | \| __\,,\ /,,/__
\||/ | | | jgs (______Y______)
/\/\/\/\/\/\/\/\//\/\\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
/*-------------------------------------------
程序员的进化——从学生到首席执行官
翻译 2002 王咏刚
http://www.contextfree.net/
转译自 Omri's Computer Humor Page
http://www.cs.bgu.ac.il/~omri/Humor/
-------------------------------------------*/
-------------------------------------------------------------------------------- 中学阶段
10 PRINT "HELLO WORLD" 20 END -------------------------------------------------------------------------------- 大学一年级
program Hello(input, output) begin writeln('Hello World') end. -------------------------------------------------------------------------------- 大学高年级
(defun hello (print (cons 'Hello (list 'World)))) -------------------------------------------------------------------------------- 初级程序员
#include <stdio.h> void main(void) { char *message[] = {"Hello ", "World"}; int i;
for(i = 0; i < 2; ++i) printf("%s", message
); printf("\n"); } -------------------------------------------------------------------------------- 编程老鸟
#include <iostream.h> #include <string.h>
class string { private: int size; char *ptr;
public: string() : size(0), ptr(new char('\0')) {}
string(const string &s) : size(s.size) { ptr = new char[size + 1]; strcpy(ptr, s.ptr); }
~string() { delete [] ptr; }
friend ostream &operator <<(ostream &, const string &); string &operator=(const char *); };
ostream &operator<<(ostream &stream, const string &s) { return(stream << s.ptr); }
string &string::operator=(const char *chrs) { if (this != &chrs) { delete [] ptr; size = strlen(chrs); ptr = new char[size + 1]; strcpy(ptr, chrs); } return(*this); }
int main() { string str;
str = "Hello World"; cout << str << end
return(0); } -------------------------------------------------------------------------------- 编程高手
[ uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820) ] library LHello { // bring in the master library importlib("actimp.tlb"); importlib("actexp.tlb");
// bring in my interfaces #include "pshlo.idl"
[ uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820) ] cotype THello { interface IHello; interface IPersistFile; }; };
[ exe, uuid(2573F890-CFEE-101A-9A9F-00AA00342820) ] module CHelloLib {
// some code related header files importheader(<windows.h>); importheader(<ole2.h>); importheader(<except.hxx>); importheader("pshlo.h"); importheader("shlo.hxx"); importheader("mycls.hxx");
// needed typelibs importlib("actimp.tlb"); importlib("actexp.tlb"); importlib("thlo.tlb");
[ uuid(2573F891-CFEE-101A-9A9F-00AA00342820), aggregatable ] coclass CHello { cotype THello; }; };
#include "ipfix.hxx"
extern HANDLE hEvent;
class CHello : public CHelloBase { public: IPFIX(CLSID_CHello);
CHello(IUnknown *pUnk); ~CHello();
HRESULT __stdcall PrintSz(LPWSTR pwszString);
private: static int cObjRef; };
#include <windows.h> #include <ole2.h> #include <stdio.h> #include <stdlib.h> #include "thlo.h" #include "pshlo.h" #include "shlo.hxx" #include "mycls.hxx"
int CHello::cObjRef = 0;
CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk) { cObjRef++; return; }
HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString) { printf("%ws\n", pwszString); return(ResultFromScode(S_OK)); }
CHello::~CHello(void) {
// when the object count goes to zero, stop the server cObjRef--; if( cObjRef == 0 ) PulseEvent(hEvent);
return; }
#include <windows.h> #include <ole2.h> #include "pshlo.h" #include "shlo.hxx" #include "mycls.hxx"
HANDLE hEvent;
int _cdecl main( int argc, char * argv[] ) { ULONG ulRef; DWORD dwRegistration; CHelloCF *pCF = new CHelloCF();
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
// Initialize the OLE libraries CoInitializeEx(NULL, COINIT_MULTITHREADED);
CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE, &dwRegistration);
// wait on an event to stop WaitForSingleObject(hEvent, INFINITE);
// revoke and release the class object CoRevokeClassObject(dwRegistration); ulRef = pCF->Release();
// Tell OLE we are going away. CoUninitialize();
return(0); }
extern CLSID CLSID_CHello; extern UUID LIBID_CHelloLib;
CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */ 0x2573F891, 0xCFEE, 0x101A, { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 } };
UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */ 0x2573F890, 0xCFEE, 0x101A, { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 } };
#include <windows.h> #include <ole2.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include "pshlo.h" #include "shlo.hxx" #include "clsid.h"
int _cdecl main( int argc, char * argv[] ) { HRESULT hRslt; IHello *pHello; ULONG ulCnt; IMoniker * pmk; WCHAR wcsT[_MAX_PATH]; WCHAR wcsPath[2 * _MAX_PATH];
// get object path wcsPath[0] = '\0'; wcsT[0] = '\0'; if( argc > 1) { mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1); wcsupr(wcsPath); } else { fprintf(stderr, "Object path must be specified\n"); return(1); }
// get print string if(argc > 2) mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1); else wcscpy(wcsT, L"Hello World");
printf("Linking to object %ws\n", wcsPath); printf("Text String %ws\n", wcsT);
// Initialize the OLE libraries hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if(SUCCEEDED(hRslt)) {
hRslt = CreateFileMoniker(wcsPath, &pmk); if(SUCCEEDED(hRslt)) hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);
if(SUCCEEDED(hRslt)) {
// print a string out pHello->PrintSz(wcsT);
Sleep(2000); ulCnt = pHello->Release(); } else printf("Failure to connect, status: %lx", hRslt);
// Tell OLE we are going away. CoUninitialize(); }
return(0); } -------------------------------------------------------------------------------- 黑客初阶
#!/usr/local/bin/perl $msg="Hello, world.\n"; if ($#ARGV >= 0) { while(defined($arg=shift(@ARGV))) { $outfilename = $arg; open(FILE, ">" . $outfilename) || die "Can't write $arg: $!\n"; print (FILE $msg); close(FILE) || die "Can't close $arg: $!\n"; } } else { print ($msg); } 1; -------------------------------------------------------------------------------- 黑客有成
#include <stdio.h> #define S "Hello, World\n" main(){exit(printf(S) == strlen(S) ? 0 : 1);} -------------------------------------------------------------------------------- 黑客高手
% cc -o a.out ~/src/misc/hw/hw.c % a.out -------------------------------------------------------------------------------- 黑客大虾
% cat Hello, world. ^D -------------------------------------------------------------------------------- 初级经理
10 PRINT "HELLO WORLD" 20 END -------------------------------------------------------------------------------- 中级经理
mail -s "Hello, world." bob@b12 Bob, could you please write me a program that prints "Hello, world."? I need it by tomorrow. ^D -------------------------------------------------------------------------------- 高级经理
% zmail jim I need a "Hello, world." program by this afternoon. -------------------------------------------------------------------------------- 首席执行官
% letter letter: Command not found. % mail To: ^X ^F ^C % help mail help: Command not found. % damn! !: Event unrecognized % logout --------------------------------------------------------------------------------
下午写完设计,趴在武汉办公室的窗户上看风景,天气好的时候,左面长江右边东湖都可以看到,其实想想在武汉出差也挺不错的,呵呵
彼得·德鲁克在他的《 卓有成效的管理者 》当中,阐述了知识工作者管理的秘诀,那就是知识工作者的工作效率来自于对其工作的有效性以及他的工作是否有所成就。这本1966年出版的管理学书籍经过近50年的时间,反而越发显得适应潮流。 而卓有成效的知识工作管理者现在显得比过去任何时候都要短缺,也比现时任何人才都要短缺。在现时这个信息爆炸,案例丰富的年代,战略眼光与部署格局对于一个企业人才不再如此重要,对于企业战略,任何有管理常识、了解企业实情的人大都可以分析得很到位,关键是要找到合适的人去实施。知道什么样的人合适,以及找到这个合适的人,成为企业家最需要做的事情。而成为那个合适的人,则成为草根阶层走入舞台中央的必备能力。 附一篇来自经济观察报刘军的《 笨蛋,最重要的是人!》 --------------------------------- 2005年10月8日管理大师彼得·德鲁克曾经讲过一个他和《时代》《财富》等杂志的出版人亨利·鲁斯交往的故事。鲁斯有个很好的新杂志方案——试图创办“从美国人思考角度出发”的高格调文化杂志,他去向德鲁克求教。德鲁克分析了一番说,“这份企划案很棒,不过晚了50年。”接着,他对鲁斯说出了最重要的话:“此外,《时代》的人也无法胜任。我猜,你想鼓励一些外面的作家来为这本杂志执笔,并以一般大众为读者群。但是你的专长却是叫自己手下人搞定,因此大有不同。” 鲁斯回答说,“我来向你请教,正因为我猜想你会这么说。”他因而放弃了这个计划,因为他深知人的重要性。经过十多年的西方管理教育和知识传播,中国企业管理者已经熟知战略的理性分析,与重视人比起来更重视事,另外先建立制度、而不是依靠人的观念也被广泛接受。不过,我却逐渐感觉到,在这些问题上我们可能有点矫枉过正,对于知识型工作、对于管理,或许人更重要,是应该优先考虑的。 9月底,索尼新任CEO、美国人霍华德·斯特林格(Howard Stringer)宣布索尼的战略调整计划:全球裁员一万人,缩减工厂数目,出售1200亿日元的不动产与股票等非核心资产,对消费电子业务进行架构调整、将权力集中到这一业务的最高主管手中。在过去五年中,索尼逐渐失去消费电子霸主地位,业绩很不理想,这背后的根本原因正是这些战略调整所触及的问题。对于这一点,大概稍微有点管理常识的人都知道,我想索尼前CEO出井伸之自然了然于心,他之下的索尼高管也清楚。不过,大概只有霍华德·斯特林格、索尼历史上第一个外国人CEO、这个日本文化的局外人才能推行上述改革。 战略,有管理常识、了解企业实情的人大都可以分析得很到位,但真正去做,就需要“合适的人”。我一直相信,选择霍华德·斯特林格作为继任者,是出井伸之的最重要的决策,体现这个亚洲最优秀的商业领袖的领导才能。卡洛斯·戈恩已经因成功在日产汽车(Nissan)实现大逆转而成为全球最知名的管理者之一,他当初所做的关闭工厂与裁员、破除日本式企业联盟等措施,都是众所周知的弊端,但惟有他这个合适的人才能推动变革。斯特林格和戈恩都是在这种情境下最合适的人,只是恰巧他们都是外国人。 Google、微软和李开复之间的纷争一直没有停息的迹象。在这个过程中李开复把自己再次塑造成了最优秀的技术专家形象,但如果相信这一点,我们就错误理解了Google的智慧。如果要一流的中文搜索研发人才,Google的最佳人选绝对不是李开复,而可能是李彦宏。如果它的战略诉求点是这个,它可以百度买下,从而得到李彦宏。但是,Google在中国,需要的哪里是什么技术专家、研发中心?现在Google中国战略要的合适的人是据称是“技术专家”的李开复,但他在公众心目中的号召力和政府公关能力才是Google所看重的。 我们也可以循同样的视角来看待雅虎和阿里巴巴之间的联姻。这一次是把雅虎中国的业务交道马云手中去让他照料,因为对于谁了解中国市场和能够帮助雅虎发现中国市场潜力这个问题,马云是最佳答案。雅虎在中国的最近两次战略行动目标都首先是为了“人”。上一次是雅虎在中国收购3721,反而让其老板周鸿一担任中国区总裁,从而让雅虎中国从跨国公司在华分支机构这样的角色变成勇猛的中国本土企业。但在经历一段发展时期之后,雅虎中国就需要更合适的人。我们可以认为,这是雅虎、阿里巴巴联姻的主要原因之一。 先建立制度、体系,而不是“因人设事”这样的观点被广泛接受,可是,我们忘记了这个观念背后的工业化背景:所有人的都被当成了可替换的零件,所以制度体系最重要。但是,对于知识型工作来说,特别是非重复的创造性工作,每个人的工作方式、结果都截然不同。 我们所设计的制度体系,在当前的人员安排下也似乎运转正常。但是,由于这些人是无法替换的,人走了,看似精妙的体系也就出现出现问题了。这个时候,是去做不可能完成的任务:寻找适合制度体系的一摸一样的人?还是更改体系?或者看得更远点,在现在的情境下,我们根本就不该把制度体系的重要性神话到这种程度?针对知识型工作的讨论,和上文对最高管理者的讨论并非没有联系,因为在我看来,管理工作是最重要的、最具创造性的知识工作。 吉姆·柯林斯在《从优秀到卓越》说卓越公司是“先人后事”:这些公司的主管不是先确定目的地(先有方向、愿景、战略),然后才把人们引向那里;他们首先让合适的人上车(不合适的人自然请下车),然后才决定去向何处。他所说的虽是方向、远景,但大体上和制度是同一类型的事物。我们都应该了解,合适的人更重要,那些看似严密的战略分析和完善的制度体系有时候会变成令人难以忍受的障碍,因为它们和“合适的人”可能是完全矛盾的,这些人通常都难以放到一个既定的模子中去。
今天将webwork2.2.1更换成webwork2.2.2,出现了一个奇怪的异常,每次启动后,都会报出: org.xml.sax.SAXParseException: Element type "global-exception-mappings" must be declared. com.opensymphony.xwork.config.ConfigurationException: Caught exception while loading file xwork.xml with nested exception org.xml.sax.SAXParseException: Element type "global-exception-mappings" must be declared. 如果将xwork.xml中的 global-exception-mappings注释掉便好
头疼了几个小时解决不了,不得不求助飞云小侠 飞云小侠一出手果然不同,马上定位了问题所在 就是这句: <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
原来虽然几次升级webwork.jar,但是xwork.xml的DTD解析还是用的原来的DTD,顶多就是改了DTD的地址,也就是将这句 "http://www.opensymphony.com/xwork/xwork-1.1.dtd">
改为这样 "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
而实际上解析DTD是靠的前面那句 <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" >
原来一直是 <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" >
于是就出现了上面的问题 多谢飞云小侠的帮助^_^
自工作以来,我就养成了睡前读书的习惯,这一年在武汉,实在买不到一些好书,每次回北京总要带很多书过来,最近再次面临回京购书的局面,在回京之前总不能闲着,于是从去年看过的书中乱翻,以第一感觉来决定自己最想重读那本书,结果选中了温博格的《成为技术领导者-解决问题的有机方法》 两年前,当一位同窗好友集齐全套的温博格系列的时候,我曾很不屑的说他:一个人写那么多书,质量显然没保证,买他作甚?现在看来,当时确是井底之蛙了,温博格的书中少有瑕疵,尤其是后期作品,读来总是让人意犹未尽。 过去的几年里,我看过很多书,无论是早期GOF的设计模式,Martin Fowler的企业架构系列,还是Rod的J2EE开发厚厚的两卷本,甚至我最喜欢的POSA系列,虽然都会给人技术方面成长的感觉,但最好情况下也只是让我感觉到技艺的变化。 而管理方面的书籍,则大多走入两个极端,要么是学院式的分析解构,要么是江湖术士式的技巧集合。就像过去我曾很喜欢DEBORAH G. ANCONA的那本组织行为学和曾士强的中国式管理,但现在看来,DEBORAH关注组织多过于关注团队,而曾士强则过于强调中国人的心理情结,实用归实用,但可能不太适合技术人员的口味,读他的书让人感觉有些厚黑,让我常常想到一句俗语:人老精,鬼老灵。
而温博格的写作方式,如同Ken在英文版序中所说,会引起大量的思考,对温博格的文字的思考,思考对温博格文字的思考,以及对自身思考的思考....通过温博格的书,让我体会到的事是,读书,有时候是为了实用,而的有时候,则纯粹是为了过瘾。 本书中温博格的MOI模型,实际上不是一个行为指导手册,而是带来了更加宏观和可思考的空间,让你对自己在团队中的行为更加有目的性,也更加有效。我仍然记得两年前,上述同窗好友在某技术论坛发表的一篇名为《任务分解和任务分配》的帖子,现在看来,在该贴中提出的Effective Communication仍然太过于关注技术视角了,而现在,我则更加注重人文关怀,包括对技术架构。这一点,在本书第十章得到了精彩的阐述。
下面的内容,来自于本书第三章摘录
各种各样的想法是解决问题的核心,没有想法就不可能找到解决方案,但想法太多又会杂乱无章,领导者需要对想法的交流进行有效的管理。以下是领导者常用的12种典型的管理想法交流的方法以及点评。 > 为团队提供一个聪明的想法。尽管这是最显而易见的领导者行为,而且有时新的想法的确会起到关键性作用,但事实上真正全新的想法是非常罕见的。比发掘一个新的聪明想法更重要的是创建一个合适的环境,是能够解决问题的想法一旦提出就能被大家意识到。 > 鼓励和借鉴有用的旧想法。尽管有些领导者不愿意承认,但他们实际上是根深蒂固的模仿者。最优秀的领导者不仅承认这一点,而且将其视为一门艺术而精心培育。 > 认真完善团队成员提出的想法。大部分解决问题型领导者在完善一个想法上花费的时间比提出这个想法多上百倍的精力。 > 放弃自己的想法并支持团队采纳的想法,但只有当每个成员都充分了解你的想法时才予以放弃。放弃或保留你的想法是相当简单的,难的是要做到理智和公正。 > 尽管时间压力很大,仍然不要吝啬花时间听其他人解释他们的想法。迫于时间压力,大部分想法没有经过充分理解就被否决了,事实上,其中一些想法可以为我们节省的时间是花在了解错误想法上时间的上百倍。 > 检验别人提出的想法。在任何给定的环境中,绝大部分的想法都是没用的,但到底哪些才是有用的呢?领导者要做的就是分析和检验这些想法。 > 为了保持想法的交流,不要轻易否定团队成员的想法。尽管检验这些想法是非常重要的,但几乎没有什么想法会危险到使我们来不及重新考虑一下我们的第一反应,就必须立刻否定。 > 如果你不得不否定一个想法,那么一定要明确,你所否定的只是这个想法,而不是提出这个想法的人。解决问题型领导者一直清楚地知道,并不是所有的想法对每个问题都有帮助,但他们更知道,团队中的每一个成员都是有用的。 > 在给出你的想法之前要先对它进行检验。没有人可以聪明到提出所有建设性的想法,而一个喋喋不休地发表自己未经仔细考虑的想法的人却能有效地阻止其他人给出自己的想法。 > 当时间和人力吃紧时,不要再考虑新的想法而应该专注于现有的想法。 > 鼓励团队成员放弃以前曾经成功过,但并不适用于现在情况的想法。 > 如果一个已被否定的想法对问题的其他部分有价值,就应该重新采纳它。其实没有绝对不好的想法,之所以“不好”只是因为它们出现在不适当的地点或时间。
去年年底,osgi R4发布,eclipse建立equinox项目,标志着以osgi为核心的组件管理模型正式进入使用阶段,鉴于今年年初jsr291的推出,osgi正式走向java世界的前端,遂建立osgi观察者group,希望能同所有关心和喜爱osgi的国内技术人员共同进步。 加入osgi观察者:
|