谈论 What is success?

程墨同志写的关于success的文章。写的很好。 我最近就在烦这个问题。最根本的问题就是,我到底追求什么呢? 小时候,觉得成为一个科学家,或者什么专家,是很牛B的——也是我爷爷的一贯教导。。但是,随着我大学入错行,后来不想继续折腾生物学了,科学的道路是离我越来越远,也就看看方舟子的blog,反对一下中医,看看discovery,作为还关心科学的表现。 高中开始接触电脑,对这个东西疯狂着迷,也算入了这行,但是却没有足够好的基本功,有时候就觉得似乎欠缺点什么。想去读个master,又实在是太懒了,没有czhou、czhang的耐心,去考GRE。 于是乎,到了现在的一个状态,晃晃悠悠换了好多工作,似乎就在寻找自己的一个定位。在bea,一切似乎还算顺利,但是有时候,又不甘心平庸,希望自己能做点值得自己骄傲的事情出来。 现在,离而立之年越来越近, 也成了家,开始从两个人的角度思考未来,人似乎也开始务实起来。钱,当然是现阶段主要奋斗目标之一,因为我们两个现在手上基本没钱,但是压力很快就要到了,孩子,老人,自己,都是。但是,除此之外呢? 当然,这些也不至于让我如此焦虑。可是我们作为伟大祖国的公民,我热爱她,但是我却没有足够的安全感。我们还不是私有制,我们的房子只有60多年,物价房价在飞涨,但我还不知道是不是退休了我还要回户口所在地去领养老金! Ok. 最后的问题是,我到底要做什么呢?呵呵,这个问题似乎过一段时间就要烦恼一次。在一个大公司做一个高级一点的打工仔?自己闯闯,认识一下非development的世界?我真的不想让job只是一个job。。。 引用 What is success? 这两天参加一个内部培训,叫Development for Expert Developer,注册的时候还以为是教SDE技术知识的,上课的时候才知道,这个培训是给Senior SDE头衔的工程师准备的,不过参加这个培训的没有一个有Senior SDE头衔 培训内容也不是技术,而是技术之外的东西。这是一个很好的培训,A good developer should know that development is not only programming; a great developer should know that development is not only development。 培训老师自称,在MS的在职人员中,他是排第44位入职的,的确是老微软了,不过这位老先生的头衔还只是Dev Manager,很让人诧异,这样的老资格搞管理的话怎么着也应该混个VP或者PUM吧。课上这位大佬越聊越开心,说到他在这个级别干了十几年了,没有promote是因为自己不想promote,因为再往上责任会更大,工作需要占用更多时间,而他还有家庭要照顾,有业余活动要参与,所以现状他很满意,虽然每年的performance review都是Outstanding,但是就是不愿意promote。 按照通常人的想法,爬的越高就越成功,真的是这样的吗?记得某个美国佬说过,一个人要是白天不用为吃饭穿衣发愁,晚上有睡觉的地方,每天都能干自己想干的事,就非常成功了。先搞清楚自己的人生目标是什么,到这世上来干吗,实现这个目标就是成功了。 每个人都该花些时间想清楚自己的人生目标是什么,因为这会知道我们每天做什么怎么做,如果做的事情偏离了自己真正的目标,那么做的越成功也就越失败。

十月 14, 2007 · Shawn Ma

动物体型问题和电影match问题

方舟子在大象为什么不长毛blog中说: 生活在寒冷地区的动物的体型一般要比生活在温暖地区的同类动物大,这叫柏格曼法则。但是,寒冷地区的动物的耳朵等突出物则一般比较小,这叫阿伦法则。这两个法则其实都是对表面现象的概括,为了保温或散热才是真正的因素。 于是我就想,人类是不是也是这样呢?北方人体型较大,而南方人,或者越南人,就比较瘦小。至于靠近北极的老外们,则体型更加膨大一些。 昨天还在facebook做了关于看电影的品味的match,against Morgan Cheng。我们两个的结果是52分,Terrible Match ——基本上我们都喜欢Blockbusters,哈哈。我估计跟老婆大人就不那么match了,她肯定喜欢Comedies, Love这一类别的多一些,咯咯。。。

十月 12, 2007 · Shawn Ma

五号线通了

昨天下午2点开通。2点半我去坐了,要去建国门。发现有好多老头老太太在车上,大概北京新出地铁了,新鲜。车上人还是挺多的。 今天早上做地铁到东四倒102之类的来上班,一共费时40分钟,门到门,嗯,还不错。比平时节省了20分钟。 5号线总的来说设施还不错,但是有些细节还不好。比如过道的地面,铺的瓷砖非常的滑,要是下点雨就该摔倒了。候车的那个显示屏上,也没有英文显示,挺奇怪的。还有,崇文门,东单两个地方的换乘都很远。要走好久好久啊……

十月 8, 2007 · Shawn Ma

OpenID Debates

Open ID 是个很有意思的东西。它号称是一个分布式的身份认证系统。任何一个网站都可以做一个Identity provider。也就是说,用户只要在一个Identity provider那里注册了,那么在任何一个service provider那里就都可以sso了。具体的说,好比我在openid.cn注册了一个id,再如果天下所有的网站、论坛、blog都支持openid登录,那么我再也不用在任何地方注册第二次了。其实跟windows live id差不多,不过WLID必须微软来管,open id谁都可以做用户认证管理的。比如我就注册了一个id是:http://shawnma.openid.cn 然后网上就有很多的debate,基本上来说,就是这个东西非常不安全。 Eugene and Vlad Tsyrklevitch发表了一个白皮书,论证了这个东西是如何的有缺陷。 Stefan Brands发表了一个巨长的blog,来批判Open ID。 David Recordon就声称Open ID 2.0会解决这些所有问题。 Bob Blakley就开始问,Open ID到底要解决什么问题?他看起来Open ID是先有解决方案,再来寻找problem -_- Mike Neuenschwander说,Open ID缺少一个Trust model。 嗯,看起来都挺有意思的。其实用的技术也都很老了……

九月 20, 2007 · Shawn Ma

Google SAML implementation

看了一下GOOGLE的SAML实现,大跌眼镜,他不是像Windows Live ID一样提供身份信息的,相反,他是google application作为service provider,接收3rdparty传过来的saml assertion的。google现在卖他们的gmail等服务,其实就是以前做得企业邮箱,当然,还有gtalk,google doc之类的程序,这些东西加起来,卖50$一个账号。这也挺好的,我老婆这样的单位就不需要买一个服务器做邮箱了,还老维护,还老当机。 话说回来,Google把这些服务卖给一个公司之后,可以接收这个公司传给google的saml2的token,这样,google可以不维护身份信息,也不维护密码。要是windows live id可以提供saml2 token的话,他们两个就可以连起来了,哈哈。 当然,要一个公司实现一个saml2 token的producer,也不容易,google提供了sample。我诧异于这个sample的实现。他使用了一个最简单的xml生成办法,文本替换。做了一个template文件,然后替换其中的某些特殊符号,就生成了xml文档。当然,xml文档的签名没法这么做,只能programmatically的实现。这个很像hydra以前用php实现移动的的web service接口的方法,也是类似的。xml parsing也只是字符串搜索,嗯,其实,这样只要结果是对的,who cares? 哪天用weblogic做一个identity provider,看看能不能跟google连起来。不过似乎要一个域名,也挺麻烦。

九月 19, 2007 · Shawn Ma

Windows Live ID internals

Windows Live ID(WLID)本身是一个identity provider,他负责维护用户的用户名,密码。 作为一个想使用WLID的网站,需要首先注册成为Windows Live application。注册的时候,你先需要有一个WLID! 注册的目标是双方需要有一个PSK——preshared key(WLID叫Secret Key)。这个key是用来验证WLID传回来的token的。注册的同时要求给WLID提供一个Return URL,当用户登录成功,或者logout的时候,WLID会调用这个页面,并且加上一些parameter,其中一个重要的就是stoken,这个参数含有一个WLID传回来的用户相关信息。 我也注册了一个, return URL=http://sma01:8080/wlid/return.jsp secret key=thisisaverylongkey Application ID=<span>00163FFF8000412B</span> WLID认证成功之后,他就redirect用户到Return URL,相当于SAML的ACS service。另外还要加上token之类的参数。 WLID给用户浏览器返回一个post form,内容如下 <html> <head> <noscript> JavaScript required to sign in <meta http-equiv="Refresh" content="0; URL=https://login.live.com/jsDisabled.srf?lc=1033&#8243;/> </noscript> <title>Continue</title> <script type="text/javascript"> function OnBack(){} function DoSubmit(){var subt=false;if(!subt){subt=true;document.fmHF.submit();}} </script> </head> <body onload="javascript:DoSubmit();"> <form name="fmHF" id="fmHF" action="<a href="http://sma01:8080/webauth/sample/webauth-handler.jsp">http://sma01:8080/webauth/sample/webauth-handler.jsp</a>" method="post" target="_top"> <input type="hidden" name="stoken" id="stoken" value="DvJ%2BtIPK9bn%2FKlG7PjSB7FNPFEzlX5g9HtHcBGGv2r2h5s1VsnzoRlI7GnSRNK%2Bo3pn87YJCJnTi1jtKgXEh3TLxASGCSt3Okju7MK51VDXz4KGSemv%2BARYN4WJ33FIoHoZ3aVvF19wsNq2YRnM8npmfgVh5ZDVtu%2FXA9FaUqKLRAsOR377dMpDXEWSOrsRQBsmRUy7dZPdZSW4F9%2F%2Fyow%3D%3D"> <input type="hidden" name="action" id="action" value="login"> </form> </body> </html> 再看看那个token的具体内容。token首先是base64编码的byte array。前16个字节是IV,剩下来的是加密的内容。加密是用的AES,准确的说,AES/CBC/PKCS5Padding。解密之后的东西居然可以直接得到一个string,看来是iso-8859-1字符集的。顺便说一下,那个decryption key是PSK加上一个前缀"ENCRYPTION",然后做SHA-256,获得的。没有使用PBE的PBRDF2算法,呵呵,让我平衡的很多。我自己做的也只是用SHA-1 hash两次,不过SHA-256可以一次获得16byte的key,的确很省事。 ...

九月 19, 2007 · Shawn Ma

Lost my phone…again

So bad… I’m very depressed not because I lost it, but the way I react when I found I lost it. I hate myself. When you do hate yourself most?

九月 19, 2007 · Shawn Ma

Windows Live ID and identity federation

晚上心血来潮,想起来要是做web sso似乎只有saml这个东西,就想看看微软的passport,Google,以及open ID都是怎么实现的,应该用的不是saml吧? 随便search了一下,发现windows live id刚刚发布了SDK,里面有perl,java,ruby等等的的实现,java的实现居然只有两个class,其中一个还是base64的code,很有意思,今天没时间了,改天研究一下。原来好像passport使用kerberos的,似乎那段代码很简单,没有kerberos的迹象啊。 (忍不了maxthon了,随便敲几个字就这么慢。。。杀。o, 又试了试ie…也是有问题,狂吃cpu。去死吧。。。难道是这个控件跟ie6合不来?嗯,转换到html格式下就好了。。。那就html吧。) 其他的几个发现: 这位作者做了一些有意思的东西,并且介绍了ADFS(Active Directory Federation Service)。没时间仔细看,先记下来。 ADFS好像用的是WS-Federation,这个很奇怪,WS-F不是只能给WS用么?然后他们用的token似乎又是saml。 波音公司在做identity federation的deployment。他们说,原因有三,第一个是user experience好,第二个是省钱,每帐号每月省500刀,这个我想不明白。第三个,是帐号有一个集中管理的地方,比如某人从boeing公司辞职了,那么他在其他partner那里的帐号也就失效了。波音的方案提供商好像是Ping identity,一个我觉得不错的小公司,有一些值得学习的地方。 google也在提供帐号服务,好像是提供saml接口的,哪天看看。 Open ID呢? Liberty Alliance的saml 2.0网页上居然没有CA的site minder,有意思。。。当然,也没有weblogic server。。。But I’m very interested with interop with those! espcially, google saml2 impl. 睡觉了,有时候,我很赞同我老婆的一个观点,觉得睡觉真无聊,人要是可以不睡觉多好呢。。。

九月 18, 2007 · Shawn Ma

firefox extension: refcontrol

最近用google reader读一些blog。其中sina,baidu这两个空间的图片全部做了referrer检查,用咱们中文说,叫做“防止盗链”。举例来说,baidu和sina的图片在google reader中会显示成下面这个样子。 (XXX: 好像我这里又好了?) 这是非常SB的一件事情,在看一些blog的时候还真不得不打开某些网页去看,很麻烦。于是就想到了无所不能的firefox插件,搜了一下,果然有人做了,叫做refControl。试了一下,的确很不错。现在这两个图片都能显示了……没有subscribe任何sohu的blog,不知道sohu有没有这个问题。 这个东西也就是简单的篡改refer的URL。只要hiphotos.baidu.com和album.sina.com.cn都Forge一下就可以了。。

八月 19, 2007 · Shawn Ma

我的firefox插件们

firefox的确是个很不错的浏览器,至少,他不支持activeX,所以安全了一些……现在那些网站开发的所谓安全控件,有时候却还同时给别人开了后门,还是很恐怖的。 现在firefox用的越来越顺手了,插件是少不了的。但是它的毛病是,插件多了,firefox还是挺吃内存的,而且启动超慢——这点ie快很多。。 于是,我只装几个常用的插件,如下: ABP (adblock plus) 0.7.5.1. 这个东西很好,所有的广告统统block掉,甚至文字广告。他的原理主要是URL过滤,支持regular expr. 支持css selector。比如这个规则可以干掉sina的嵌入广告:sina.com.cn#*(id^=PublicRelation) Drag De Go 0.2.5. 让firefox支持手势,拖拉一个url可以打开一个tab,拖拉一个文字自动google搜索。差不多了。这个是maxthon养成的习惯,所以要装。哦,它还可以快速的保存图片…咳咳。 Stylish 0.5.2 乖乖,这个更厉害了,可以写一个css override页面的style,这样,可以让一些不好看的网页好看起来。当然,也可以让一些广告元素消失(display:none)。有人就用这个把google页面变成黑的,也满酷的……我主要用来调整一些难看的网页,比如我们公司的bug tracking系统,我给他写了如下的css: @-moz-document domain(“bugs.bea.com”) { TR[bgcolor=”#ffffdd”] {background-color:#FFdd99 !important } TR[bgcolor=”#aaaaaa”] {background-color:#bbFFff !important } TR[bgcolor=”#dddddd”] {background-color:#aaFFaa !important } table[border=”1″] { border: 1px solid #C0C0C0!important ; border-collapse: collapse !important; } TH[bgcolor=”#cccccc”] { font: bold 10px tahoma!important; background-color: #ddddaa !important } DIV[align=”center”][class=”header”]{background-color:#ddddaa !important} } 其他的就没有了,偶尔用一下DOM inspector,是用来找到某一个元素,并找出其selector的。。。 TMP这样的tab管理工具似乎没啥用了,所以也不装了。。。

八月 16, 2007 · Shawn Ma