做DITAOT的碰到xalan的一些问题

1. SUN JDK自带了一个xalan,不过版本比较老,要把它给替换掉。但办法不是把xalan.jar放到CLASSPATH里。要放在jre里的endorsed目录下。
这个FAQ下有解答:(http://xml.apache.org/xalan-j/faq.html#faq-N100D6)
2. xalan里用document()函数load外面的XML文档的时候,在一个stylesheet里,不能读两次一个文件,不然会抛出下面的错误: Programmer’s Error; “putDocumentInCache found reparse of doc: “ 这是一个比较SB的BUG,如果xalan查到这个文件在cache里了,他就不干了,说你应该用一个variable把文件里的内容存起来,不要给我读两次。这是我见过最SB的理由。让你读文件你就给我读,JJWW干什么,在cache里有是吧?给我从cache里读出来就可以了啊!
不过这个问题好像是出现在输入文件的路径有空格的情况下,要再查一查。
3. 好像没有了。。想不起来了。。不然就是没有碰到过,因为我平常是用的SAXON。嗯,在这里推荐一下SAXON,很不错的一个xslt processor。
<![CDATA[1. SUN JDK自带了一个xalan,不过版本比较老,要把它给替换掉。但办法不是把xalan.jar放到CLASSPATH里。要放在jre里的endorsed目录下。
这个FAQ下有解答:(http://xml.apache.org/xalan-j/faq.html#faq-N100D6)
2. xalan里用document()函数load外面的XML文档的时候,在一个stylesheet里,不能读两次一个文件,不然会抛出下面的错误: Programmer's Error; “putDocumentInCache found reparse of doc: “ 这是一个比较SB的BUG,如果xalan查到这个文件在cache里了,他就不干了,说你应该用一个variable把文件里的内容存起来,不要给我读两次。这是我见过最SB的理由。让你读文件你就给我读,JJWW干什么,在cache里有是吧?给我从cache里读出来就可以了啊!
不过这个问题好像是出现在输入文件的路径有空格的情况下,要再查一查。
3. 好像没有了。。想不起来了。。不然就是没有碰到过,因为我平常是用的SAXON。嗯,在这里推荐一下SAXON,很不错的一个xslt processor。]]>

准备建立财务制度

   先说点题外话。这几天公司的项目已经准备release了(所以比较闲,上班写blog),昨天收到两封notes,一个是我们的team lead,在美国的,还有一个来自经理。大体意思是说,大家做得很好,stakeholder的feedback很positive,感谢各位所做的工作,等等。虽然知道在项目结束的时候很可能说这些stmulating的话,但是还是比较开心的,呵呵~~比较喜欢这种工作环境,而不是办公室、国企里的office relationship。team lead还把notes cc给了一个STSM。在blue pages上查了一下,他管的都是technical lead啊。STSM再上去就是distinguish eng,甚至可以直升fellow了!
   嗯,进入正题。现在关于80后的文章越来越多了,经常看到的一个称号就是:“啃老族”,就是指那些靠自已的工资无法维持自己的开销,要靠父母一个月给几百甚至上千块钱才勉强收支平衡的刚工作的年轻人(现在刚工作的肯定都是80后的,暂时无视博士叔叔和博士阿姨们)。其中支了几招省钱的办法,第一个就是记帐,说正式点就是建立财务制度啦,对钱的来源去处自己都有一个把握。这显然不是什么新办法了,以前我曾经也想施行的,但总是没有开个头。现在在上海,第一次拿了自己的收入,也同时支付着自己的房租、餐费、交通、通讯以及娱乐等等费用,开始感觉到真正的生活压力(这是在校园里肯定无法感觉的)。
   前几天开始做记录,然后回忆了从9月1号开始几天的支出,以及上月手机、公交卡的结余。暂时就写在Excel里了,这样也比较方便。支出列出了几项:午餐、晚餐、交通、超市、手机、报刊等等七八项。一星期算一次,一个月再总结一下。回南京两个月后,也开始实行预算决算制度。同时也可以和家里商量把每个月的生活费固定下来,提前过精打细算的日子。对于一些预算的透支,都留一个record。虽然表面上不会省钱,但实际上你就掌握自己的资金流向,培养一些理财的头脑。比如如果一个月的报刊预算用完了,比如这个月,我已经用了26块,还有14块(上下班实在无聊,在南京的话报刊的预算一个月最多10块吧),我就知道我肯定不能再买“兵器”了,然后在余下的三个星期里,除了“南方周末”2块钱*3,只有8块钱可以用于21世纪和环球时报,就是说,每天都看时代报,一周买2-3份环球或21世纪经济报道(不是那个SB的21st century)。谁让我昨天傻傻地买了“财经”,同时又忍不住买了“程序员”呢(当时给自己的理由是,回南京和到上海的火车上看)?

新东方也IPO

   第一次看到这个消息,是在三天前看到罗永浩的blog(http://www.bullog.cn/blogs/laoluo/Default.aspx)。没想到小样了现在已经发展到这个地步了。几年前以为新东方只不过是一个比较有钱的商业性教育机构,知名度高,老师也牛B,在国内开了几家分校。去年暑假到北京上新东方一看:在中关村居然矗立起一栋四、五十层的中关村金融中心(鬼都知道金融中心在朝阳区),旁边的副楼上有新东方的标志,说是到2005年10月,新东方就要从北四环那破楼搬到这新的地盘了。新东方果然大手笔,开始做房地产了?
   这几天在网上看了一些资料,也粗粗看了一眼新东方的招股书(基本看不懂,全英文,好多页,全是术语)。小样原来是海外红筹,BVI公司上市。在NYSE的代码居然叫EDU?叫什么NOT大家都知道(我查了一下,NYSE,NASDAQ等交易所没有NOT),叫EDU总感觉很别扭。也可能是老罗的blog看多了吧,现在对新东方有好感的,只有商业上的运作了。所谓的那些什么理想,责任感(这是徐小平接受采访时说的,上市以后,我们责任更大了,这话怎么听怎么恶心,丫的10%的股份,赚翻了吧,得了便宜还不卖乖),其实也就那样,就像市面上一大堆的什么励志书,除了看的时候激动激动,对个人而言,基本没什么效果。
 
看了新东方的财务报表,基本是一头雾水的说。什么current portion, Pro Forma, ADS,全都不懂。其实中文的也不是非常理解,除了知道以外,并不能做出一些普通的判断,更不用说自己的预测了。嗯,给自己定一个小小的目标,一年内要学会看懂上市公司的财务报表(听同事说不难看懂,呵呵)。
 
创业-融资-扩张-再融资-再扩张-上市IPO-董事
Engineer-Staff Engineer-Advisory Engineer-Senior Engineer-STSM-Distinguished Engineer-Fellow
Engineer-Department Manager-Manager-Senior Manager-Executive-VP(CEO)
 
To Bill:
昨天看到财经杂志,头脑发昏,买了一本下来看,后来才发现网站上都有。。。(http://www.caijing.com.cn)

研究生 vs 三年工作经验

看到这篇blog,似乎为以前的自己的问题做出了比较好的问答:
下面是原文所在,我也摘录一部分,自己做一些comment
http://blog.csdn.net/zhengyun_ustc/archive/2006/09/02/1161016.aspx

如果你仅仅是赚钱养家、兴趣所在,那么可以不用通过上研究生的方式来达到,而去选择多那三年的工作经验。

仅仅,这个限定让我只能回答否。

如果你的职业抱负是,成为一代受人尊敬的计算机方面的专家/大师,或者研究出改变人类的技术,那么请你还是上研究生的好。只有这样,你才能脱离劳苦程序员大众,进入殿堂。

不敢说有这么大的抱负,但我一直期望能够自己搞出一套好的东西出来。

请不要急于给自己订立目标。或者我建议,等你自己有了一定的工作经验,有了一定的职业圈子之后,再重新制定。

目标当然还是会有的,但绝对是一个泛泛的–开公司,创业。能赚多少钱不要紧,赔点钱也不要紧,只是想体验一下创业中间的酸甜苦辣。

1 培养自己的成熟的开发思维模式;

在IBM实习的这些日子,好像开始有一点这种想法了。可惜实习的时间太短,如果多三个月半年的话会更好。毕竟还没有经历过项目的需求和设计。但这次所经历的开发、测试、发布却正是我最欠缺的经验,以前从来没好好做过,也不知道该怎么做。

2:培养自己对团队如何大规模运营的操作模式的深刻理解;

这个还没有什么概念,如果研究生可以做一些东西的话,可以先接触一下

3:增进自己对圈子对人脉的把握

这个也是我一直都在培养的

记住,你的圈子大小,你的人脉,对你的职业发展起着很大作用。

不知道算一算一定的中国特色,但我也比较认同。多认识一些人,特别是牛人~~

上海的报刊生活

        住在莘庄,上班要一个多小时,第一个星期就傻傻地一路无聊到底,但最不懂的是,有一种报纸,叫做时代报,为什么地铁上每个人都在看,应该是一个销量很大的报纸了,但为什么我以前没有听过?后来网上出了那个什么“禽兽丈夫”的事,里面牵扯到时代报,我才知道那是在地铁免费拿的。以前坐地铁居然都没有看到,白坐了一周了。
        时代报是免费的,所以内容也一般般,广告也不少。一般最多让我从莘庄看到徐家汇吧。一般是到漕宝路,最烂的一期内容是看锦江乐园就OVER了,好像是周五的生活特刊。但一般基本的新闻还是可以看到的。
        第二份是环球“日”报。初一的时候还是一周一份的,也很好看,接下来是二份、三份。。。。三年没买过了,某天在报亭看到,标题比较吸引人,就买了份。发现已经是周一到周五天天有,于是就经常买了。可惜地球还是那么大,消息还是那么多,内容不免缩水不少。不管报纸有多少版,一般只有16版有内容,然后第14、15版的内容会比较无趣(14版有一半的漫画都不错),中间的B叠和C叠都是垃圾。曾有一个星期天天都买。后来也觉得没什么意思,就基本隔天买了。
        第三份是南方周末了。作为国内首屈一指的周报,南方的内容是够分量的。一般一份南方,可以让我坐特快,从上海看到南京。当然那是特殊情况,把基本上所有的报道都看完的情况。专题内容多,报道深入,涵盖方方面面,可以说是我最喜欢的一份报纸了。记得当初前几次看南方的时候(初中),老爸还说我看这些市井消息,这点我从来就不同意。
        第四份是21世纪财经报道,也是南方报业集团的。当南方看得差不多的,或者不想看环球的时候会看这个,主要是给自己财经方面的知识充充电(虽然更好的方式是看书,可是书带在身上不方便)。理财方面也可以增长一些知识。但出版的比较奇怪,周一的2块,周三周五的1块。
        买过的报纸还有申江服务导报、青年报、新闻X报,都是在火车站等车的时候买的。申江是那次急急忙忙从上海赶回来签协议的时候,在拥挤的K282(上海-成都)上看的,内容还不错,比较生活。份数也多,只要1块钱吧。
        上海有名的报纸还有新民晚报、文汇报吧,没看到,据同事说不好看,也就没什么兴趣。还在上海买过一次扬子晚报,发现扬子好像已经比较垃圾了。。。
        还想看看的报纸就是最近很火的第一财经吧,被鸿海直接找记者索赔的那一家,同事说挺不错的,以后要试一试。
        杂志方面,买的不多,因为毕竟贵。程序员买了一期8月份的,因为那期多了32页,还送一张光盘。觉得挺划算的,就买了一次。10块钱。买了一次兵器是因为那次午饭在家里附近解决了,觉得好像省了几块钱,就买了一本。自己好像已经1年多没买了,再看军事类的杂志感觉竟有点陌生。
        还想南方人物周刊,呵呵,发现自己偏爱南方的东西。果然是中国第一报业出版集团,做出来的东西还是很不错的。经常在新浪上看到人物周刊的文章,觉得很不错,但是一期6块钱,还是得掂量掂量。要是我一小时有30块钱的话,我肯定买。1小时20块,我也会偶尔买。可是我1小时只有15块。。。呵呵,也就喊一喊~~
     

ClassLoader与Ant的一些问题

今天被这个Classloader搞死了。起因是这样的:
public  static void  staticMethod(){
String resource = ClassLoader.getSystemResource(“a.xml”).toString();
}
然后a.xml已经加入了CLASSPATH。
整个代码是写在一个Ant的Task里,然后Ant里调用(事先<taskdef>)
这个时候在Eclipse调用build.xml,没有问题。
但是在命令行下调用ant,出错,找不到,返回null。
于是到Task里的execute里测试一下
public void execute(){
String resource = getClass().getClassLoader().getResource(“a.xml”).toString();
}
两个环境都找到了。
看来是static的函数里ClassLoader比较不一样,是systemClassLoader估计。
然后这么写:
public  static void  staticMethod(){
String resource = new Object().getClass().getClassLoader().getResource(“a.xml”).toString();
}
居然报出一个NullPointerException,原来是返回的ClassLoader为空。马上查了一下ClassLoader的源码(IBM JDK),发现如果某个instance的classloader=systemClassLoader就返回空。什么道理啊。。。
这么写,也不行
public static void staticMethod(){
String resource = ClassLoader.getSystemClassLoader().getResource(“a.xml”).toString();
}
这么写,还是不行
public static void staticMethod(){
String resource = ClassLoader.getSystemClassLoader().getParent().getResource(“a.xml”).toString();
}
嗯,把那个类换成Singleton,发现居然可以了。
后来发现要这么写:
public class Test{
public static void staticMethod(){
String resource = new Test().getClass().getClassLoader().getResource(“a.xml”).toString();
}
}
才OK。。。
Eclipse自已有ClassLoader,Ant自己又有ClassLoader。才有这么多问题。
接下来我想搞的OSGi,每个Bundle都有自己的classloader实例。。。。晕死了。。。

今天的办公室好PP~及导师二三事

  办公室里漂了很多气球,进门的时候也有人发给我们一个精美的卡片,倒很有节日的气氛。
  原来是Sametime 7.5就要发布了,公司先在内部做一做宣传。刚才大老板(就是经理的经理)经过我的桌子,把我桌子旁的气球抢走了!!!
  现在的Sametime已经进入GA了吧,记得我用过一两次RC2的,印象很不好,常常死掉,今天有一个update,发现不再动不动就僵死,不错~~~
  昨天老板问我能做到什么时候,我说9月30号。然后他又问了我研究生可不可以再出来,我很遗憾的说没办法,协议都签了不可以实行,然后控诉了一通万恶的工学研究生制度和SB软院的管理。还有学校导师惨无人道的剥削。
  当然,这是没办法的事。在企业,让资本家剥削,但是这是有人格,有补偿的剥削,而在导师这边却没有人权。。。听同事说浙大有个老板让学生在里面做事,一个月上的班不比正式员工少,只是只给500一个月,同时却毫无廉耻地宣称“要让我的马儿跑得快,又不吃草”。比起那些日资、台资、韩资企业又好到哪里去?
  我也很怀疑所谓导师带研究生做项目的质量。同事告诉我,他们做的一般是关系拉过来的,比如电子政务的一些项目,平时也就用一用,基本功能可以用就行了,有一些BUG拉倒。快则几个月,慢则一两年,就没有人用了。怎么可能做那些商业的项目,给企业用呢?质量差就不谈了,更不用说什么critical的东东了。想想也是,一个月500做起来的东西,怎么可能好?要我显然也积极怠工。和导师做,从来不是一分耕耘,一分收获。除非,真的想一心一意做学术。

昨天去了一趟福州路

到上海以后,除了去滑雪,还基本上没什么出门过。前几天突然想起来可以去福州路看看书,于是昨天下午去逛了逛。
上海书城很大,是我见过的最大的书店之一了(另一个是西单图书大厦)。也有一些打折的书,比如译林的都打8折,赞一个。突然想去买“品三国”,虽然有不少宣传的海报,但我愣是找了半天也没看到,也觉得25块钱有点多。算了,在网上下下来看吧,不然直接看“百家讲坛”也好。
突然发现了“银河英雄传说”,让我很惊讶。田中芳树的书我还是第一次看到正式出版了。可是不厚道的是,一本书挺厚的,也要20多块,居然只是VOL.1,就是黎明篇。要知道一共有10VOL的啊!纸张的厚度也明显大了点,行间距什么的也太大的,明显在骗钱啊。要不是我看过了还真想买了。
再往上走就刻意去了计算机的专柜,看了些英文书。好久没去书店了,现在又新出了不少好书。有一本Linux Network Internals就很不错,回来在Amazon上查还是5星书。然后也看到了TAOCP,出的是双语本。等哪天再赚了点米,就去网上买个英文三卷本。发现我的功底比较薄,比较注重应用,算法这块一直比较薄弱的说。O’reilly的书还是一如既往的赞,特别是那种Notebook系列的。
接下来的任务就是寻找商务印书馆的门市部了,想买一两本汉译世界名著看看。沿着福州路南边走,一直到了外滩也没看到,倒是找到了上海市国安局。最后在回来的路上在北边找到了,可是居然二楼没开,估计不卖了吧,真可惜。
最后还去了趟建筑书店。找到了Alex的“建筑的永恒之道”,本来想买的,可是是精装的,要45块,还是薄薄的一本,算了,再说吧。
回来的路上差一点在天钥桥路、中山南二路那边迷路了,还好找到了一个地图,呵呵~~
注:TAOCP=The Art of Computer Programming