大概99年的时候,家里有了电脑。那时候机器贵硬盘空间小,虽然8000块钱的机器,硬盘只有5.1G。宽带还没普及,经常要用到1.44M的软盘。压缩软件自然居家必备。Windows 98的时代,Windows还原生不支持zip,需要Winzip来搞定。可是Winzip只是共享软件,非免费软件,过了试用期都会提示你付费,只好到处找破解版。后来Winrar不知为何取代了Winzip,占领了用户的桌面。(后文有解答)
这几天导师让我做个课程主页,里面要带上Slide。可是Office转换而成的HTML效果总是不尽如人意,而且一般总是IE only。还好有个网站叫Cometdocs,支持PDF->HTML。我先用PDF Creator打印成PDF,再上传到网站转换HTML。
转好了发现体积太大了。原本2M的Slide转成HTML居然涨到了10M。这也不能怪别人,HTML和PDF很不一样,背景图一张一张分开放,Slide一多就不行。正愁怎么发给老板,想到了7z的压缩比比zip好,于是就压缩成7z的格式试试。
一试吓一跳。25M的网站,压缩成zip剩下23M多,换成7z只剩下4.5M!!!原来7z支持文件间的对比压缩,而这些幻灯片的背景图大同小异,自然得到很理想的压缩比。不过文件间压缩的缺点在于,一旦只想解压缩一部分文件的时候,只能解压缩所有的文件之后再把目标文件给抽出来。
在搜索7z文件间压缩的时候,不经意看到善用佳软的两篇推荐7zip的文章,在这里和这里。其中提到的传奇文章《压缩大战真相》,揭露了当初RAR PK掉ZIP的一些故事。
最后再给7-zip做做广告。全免费(个人可能无所谓用破解,但公司可承担不起这个法律风险),支持格式丰富,压缩比高,使用简单。用惯了winrar也不用怕,7zip也支持rar的解压缩,别人发给你的rar照样能打开,基本没有软件切换的成本。
想起来俺家小白也在我的唆使下用起了7-zip,挺好使的,是吧?
读研 or not 读研
最近做项目,和大三的学弟学妹们有些接触,读不读研自然是个经常提起的话题。虽然现在当了两年的烟酒僧,但我也还没把自己读研是否划算这档事给算计清楚。不过,即使算清楚了也没啥用,虽然现在很有套牢的感觉,而且还是那种有限售的套牢,想止损都不行,但目前的首要任务还是尽可能提高期望收益吧。
言归正传,前几天我在博客上对研究生这个牌子砸了发了点牢骚。今天正好看到两篇文章,都是对本科研究生贬值的感慨,却得出了截然不同的结论。正方感叹本科不够用,
所以呢,大家还是都去读研吧,反正现在研究生又疯狂扩招,虽然不知道等到研究生毕业是不是研究生学位也不够用了。。
反方材料比较多,不止是发发牢骚,还搬出了很多背景知识。最后的建议是:
由于硕士学位的贬值很快就会出现,所以你一定要想清楚,将宝贵的青春和金钱,用来交换一张意义不大的学历证书是否值得。
如果你喜欢搞科研(愿意当大学老师),那就不要停留在硕士,坚持下去一口气把博士学位拿到。很多学校都有“硕博连读”项目,本科毕业后,4~5年拿到博士,这还是值得的。
否则的话,本科毕业后还是应该直接选择就业。除了名校可能会有一点区别(更好的机会、更好的图书馆、更好的同学),其他学校的硕士意义不大,你得到的很可能不如你失去的东西多。至于“专业学位”,如果你是应届生的话,还是把它忘了吧。
下面的内容,打算出国的同学请绕道,呵呵。
具体一点,谈谈学院的研究生。想报送工学的同学们,不要对工学硕士的科研生活有太大的期望。按照现在3届学生的经验,你们只能靠自己做研究,学院能提供的,除了基础设施以外,很少有具体的科研项目。更多的时间埋没在导师的项目里,这里我就不说了。不过现在我也听说有些科研项目也上路了,具体情况不详。工学对于工程的优势一个在于现金成本,一个在于有导师的定期指导。而劣势是一年的时间成本和没有实习的锻炼,前者抵消了现金优势。
工程硕士对于软院的本科生来说,工程硕士就是大五+实习。和本科时一样的上课,一样的三学期,一样的实习,一样的无导师,除了最后学位服换成蓝的,论文要比本科厚一倍。4万块钱加上2年的时间,换取半年多的实习经验和一张硕士文凭。好消息是求职时用人单位并不太在意工学还是工程,都是参照硕士待遇。
微观经济学的第一课都会谈谈机会成本,纠结的同学们算算你们的机会成本。第一个问题是是否读研。读研相对于找工作,机会成本在于 1)这2-3年间的工资损失 2) 2-3年的工作经验损失 3)可能的学费支出 4)研究生贬值,可能找不到比本科更好的工作 5)取得读研资格的成本。对于大部份同学来说,财务成本放到长远来看的话,1,3项是微不足道的。第4项其实是读研究生的期望收益,读研究生不就是为了将来可能找到更好的工作吗?如果你读研究生后还找不到比本科更好的工作,那只能说研究生白活了,况且今年的经济形势还这么糟糕。对比第三条的成本和第四条的收益,砝码往往掌握在取得读研资格的成本上。如果成本为0,天平往往就向读研倾斜;如果考研把握不大,往往向工作倾斜,毕竟考研失败的成本往往包括了失去不错的工作机会。
最后我的结论是,首先能保研就保研。如果想读博,上工学;想像我这样,拿张研究生的文凭做敲门砖的,同时经济条件能承受的,就是工程了。
终于入职了
还是上班时间,偷偷摸摸的来写blog
5月13日终于入职了,感谢亲爱的老妈一拿到报到证就坐最快的动车赶到了上海,让我成功的在第一时间入职,mua一下
入职了就不能那么散漫了,怎么说2个月的试用期随时有被炒鱿鱼的可能。。还是很怕怕的。。我很胆小。
不知道什么时候才能有门卡,饭卡,本本。。。
一头汗的爱立信电话
今天下午在宿舍,突然接到一个010的电话,迟疑着接了电话。电话那头是个普通话不错的GG,要我明天去参加明天爱立信的宣讲会,顺便去帮帮忙。我一头大汗,根本没投爱立信啊。我说,我没投你们家啊,然后对方就有点语焉不详了,一会儿说有人推荐,一会儿说别的。
晕死。
雇主见面日
上周六去上海参加了ACCA就业力大赛雇主见面日活动。参加这个活动本来是为了考次博思的,无心插柳进了下一轮,就去见识见识。
之前收到官方邮件说要穿正装,头都大了。首先我没有正装,第二在30多度的正午在外晃荡实在是一种折磨。匆匆找上海同学借了正装,买了双25块钱的皮鞋,找见比较见得人的衬衫,没打领带,顶着正午12点的大太阳,从中山公园奔赴东华大学(其实也就3站公交)。
到早了,正好看看KP,PWC和Henkel发的材料。绝大多数人穿得很official,也一脸稚气。
前面各个企业做了宣讲,记得有KPMG,PWC,BestBuy,Citi,DTZ,Dupont,GE,Grant Thornton, Henkel,Whirlpool。其他就不记得了。
没想到Whirlpool的HR面是群面,God,昨天我刚经历了Ebay的群面。。。6人小组,只有我是男的,只有我是上海外地的学校。讨论话题是:“Obama当选美国总统,能力重要还是机遇重要?”。我们的讨论比较失败,基本没跳开Obama,中间几次我有意把大家扯出来,未果。不过这次群面感觉明显比昨天的好,正好碰上我比较熟悉的国际时事政治方面,而其他女生估计平时都没怎么关心吧。
BRT链接线
有新闻讨论BRT链接线的取舍。当初开通BRT链接线,主要是为了培养BRT的客流,事前的论证结果肯定也是亏本的,明眼人一看就知道。刷卡3毛钱,投币5毛钱,油钱都收不回来。
链接线我只坐过一次,在集美坐的,应该是大年初二的早上,基本是坐专车。除了上下班高峰,我想链接线平时肯定坐都坐不满。
一个城市的快速交通,BRT也好,地铁或者轻轨也好,要真正发挥其优势,必须要形成网状结构,并建设好换乘体系。如北京上海广州现阶段地铁网络。南京只有一条线,我虽然就住在地铁沿线,但去很多地方,比如山西路、大桥南路、紫金山、龙江,首选只能是公交。预计要等地铁3号线的通车,地铁才能真正发挥其优势。
正如541说过的,BRT其实是场赌博,所以ZF要尽其所有保证其运营。现在BRT客流还不错,原有的链接线改成普通公交线并适当延伸,也是不错的选择。
IE6设置Image.src的bug
这个问题我现在也没彻底搞懂。网站有一块需要建立一个Image对象,设置好src属性,onerror和onload属性,然后把Image添加为div的子元素,交给浏览器去请求图片并渲染(请看p.s.)。用其他浏览器都很正常,但用IE6浏览器访问,虽然能得到图片,但服务器的日志里会报错,第一个Exception是Connection reset by peer,第二个是多次调用response.getOutputStream()或getJspWriter()。
上了调试器,发现一次图片的调用,服务器会在入口函数的断点停留两次,说明浏览器发出了两次请求。用Fiddler看各次请求的内容,居然再也无法重现错误了。换用HttpWatch,终于重现了错误。每次图片的调用都会有两个请求,第一个请求发出后马上被掐掉(Aborted),然后接着发出第二个请求。这解释了为什么会抛Connection reset by peer的异常。第二个异常的原因,估计是当浏览器的reset请求到达服务器时,服务器的代码已经完成了生成图片的工作,并把图片塞进了response,这个时候抛来一个异常,被forward到error.jsp,于是乎二次调用了getJspWriter,报错。
网上搜了搜这个问题,有少许提到这个bug。我的解决方法很简单,就是在image append到div之后,再设置src属性。经测试解决了IE6的Aborted问题,其他浏览器,如IE7,FF3和Chrome都没什么影响。
p.s. 后来看到玉伯的博客,发现Image对象在设置了src对象以后就马上请求图片,并不等到被添加到DOM上再请求,因为Image本来就是用来做图像预加载的。所以原本的代码就有一些错误,应该先设置onerror和onload属性后,再设置src才有意义。
p.s.2 这里是一篇描述了IE中Aborted的文章,推翻了不少本文的无妄猜测。
p.s.3 经我第三次的测试,发现IE6中如果先设置image.src在appendChild,会出现Aborted问题,相反顺序则没有问题。
简单比较Apache+Tomcat的mod_jk和mod_proxy方法
这几天服务上线。由于80端口还需要blog和wiki两个服务,所以把80给了Apache管理,然后再通过apache连接后面8080的Tomcat。
Apache+Tomcat主要有三种办法实现: mod_jk, mod_proxy和ajp_proxy。mod_jk是比较专门针对Tomcat的方法,通过AJP协议连接Tomcat,mod_proxy不止可以连接Tomcat,只要是HTTP应用都可以进行反向代理。ajp_proxy不是很清楚,具体参见这里。
我前后碰到过三种不同的配置环境。第一次是搭建试验服务的时候,服务搭建在一台内网机器上,通过外网机器的8080端口映射内网的80端口进行访问。由于可对外暴露的端口只有被映射的一个80端口,自然把Apache推了上去。使用mod_proxy进行反向代理配置。后来上面要求搭建两个运行实例,于是开了两份Tomcat,配了两份的proxy。一个在18080,一个在28080。
ProxyPass /app http://localhost:18080/app
ProxyPassReverse /app http://localhost:18080/app
ProxyPass /app2 http://localhost:28080/app2
ProxyPassReverse /app2 http://localhost:28080/app2
RewriteCond %{HTTP:Host} example\.com$
RewriteCond %{HTTP:Host} !www\.example\.com$
RewriteCond %{HTTP:Host} !wiki\.example\.com$
RewriteCond %{HTTP:Host} !blog\.example\.com$
RewriteRule app/(.*) http://%{HTTP:Host}\:8080/app/$1 [NC,R=301]
RewriteCond %{HTTP:Host} example\.com$
RewriteCond %{HTTP:Host} !www\.example\.com$
RewriteCond %{HTTP:Host} !wiki\.example\.com$
RewriteCond %{HTTP:Host} !blog\.example\.com$
RewriteRule (.*) http://%{HTTP:Host}\:8080/app [NC,R=301]
RewriteCond %{HTTP:Host} www\.example\.com$
RewriteRule ^/$ http://%{HTTP:Host}/app/index.htm [NC,R=301]
RewriteCond %{HTTP:Host} wiki\.example\.com$
RewriteRule ^/(.*)$ http://www.example.com/wiki/$1
RewriteCond %{HTTP:Host} blog\.example\.com$
RewriteRule ^/(.*)$ http://www.example.com/blog/$1
ebay实习 笔经+面经
上周四和周五,ebay来学院招实习。这么个送上门来的机会自然不能错过,宿舍三人同行去笔试。之前问了点笔试的内容,说考了不少英语,还有些类似GRE的数学题(个人估计就是简单的SHL),还有就是数据结构。
宣讲会很热闹,我们到晚了,里面又很闷,只好在外面候着。见到一些小弟,纷纷问我怎么也来了。唉,人老大不小了还要和大三的DDMM们抢实习。
笔试的题目有些出乎我的意料之外。25题,全选择,30分钟完成。题目不是很难,但时间紧,典型是压力测试。多亏我有过SHL的一些经验,很快进入状态完成了前面8题逻辑,最后一题暂时没头绪,直接放过。中间是技术题,Java、C++、SQL,仍然有一两题不是很确定。但时间不容许我再仔细思考,直接上最后8题的阅读理解。做完阅读理解后回头看了看前面不确定的答案,等我刚填好所有的答案之后大概10多秒,HR就宣布考试结束。收走了试题册后,HR又出了题小作文,写了6、7句话就交了。
和舍友们回浦口校区吃了启明园,想起了上个学年偶尔在启明园的日子,特别是那段暑假留下来上课的时刻。吃饱了突然想去看看从未踏入的工作室新址,如果再不去的话,南大远走仙林以后再也没机会见一眼了。见到了王子龙和刘白光,还有一位DD素未谋面,难道是remember2015?回鼓楼的路上,我们三人陆续收到了明天面试的通知,痛苦的是8:15开始的面试6:30就得起床,郁闷的是居然把我的名字写错了,还错得很夸张。有消息说我笔试考了第一,不过怎么算,也错了3、4题吧。
第二天的面试分为两大轮,单面和群面,通过单面的才能进入群面,而单面又分为三轮,每一轮都有被淘汰的可能。笔试的淘汰率不高,大概只有50%,所以今天有90人参加面试,角逐只有个位数的实习岗位。
我是名单上的第一个,自然就第一个进了面试教室。第一个面我的估计是个一线开发人员,比较casual,一直让我不要紧张。除了我的项目,就是问一些比较泛的技术问题,还有一些通用的技术手段,比如Web性能调优的一些方法。最后简单问了点英语然后就送我进二面。二面估计是个项目经理,主要围绕项目来谈,也问了我的实习时间。三名应该就是CDC部门经理了(主要是前一天的宣讲到晚了,没看清楚,不然应该认得),要我用英文描述我的技术优势,并举个例子证明。我的回答没让他满意,重来了一次后,他说我简历上其实有很多可以谈的东西我都忽略了。不过他最终还是让我进了群面。
群面和想象的一样,一群人讨论一个Open Question。发挥一般,发言量低于平均水平,而发言也没什么突出的地方,主要随大流了。那个时候第一肚子很饿,6:40吃的早饭,12:40群面才开始,期间粒米未进;第二困,前一个晚上没睡好,折腾APIS到近1点,上床了也没睡安稳;第三,心情很复杂。负责任的说,我应该是所有参加面试的人中心情最复杂的一位。即使我拿到了Offer,能否成行也是未知数;第四,脑子里还在纠结APIS的一个服务配置问题,总想着把这个搞定,早上为了这个面试时小老板给我打了6个电话。综合上面的原因,群面中我基本上没怎么主动发言。
面试结束后倒是很轻松,回鼓楼宿舍睡觉。晚上还要赶赴上海,第二天的雇主见面日。。。
小结:以后面试要带吃的,前天晚上要睡好,排除其他干扰。要准备一些有关自己能力的一些材料,以免面试时磕磕巴巴。
车子可惜啊
一场比赛就给裁判毁了。不过车子也浪费了太多机会。
普拉蒂尼实在看不下去英超独霸欧冠,把宇宙队保送进了决赛。到决赛这种水平的他萨怎么打得过他魔。。。