志敏's profile新的开始,新的生活PhotosBlogListsMore ![]() | Help |
|
|
11/13/2009 不折腾了[原文: http://www.huangzhimin.com/posts/447] 这一周真是郁闷,尽在装系统了,从Ubuntu 9.10, XUbuntu 9.10,到Fedora 11,再回到Ubuntu 8.04。 鼠标键盘老是无法正常运行,估计是我的t43已经适应不了现在的linux内核,还是退回到之前Ubuntu 8.04,现在运行良好,希望继续保持。 10/25/2009 Kungfu Rails Conf[原文: http://www.huangzhimin.com/posts/446] 昨天Kungfu Rails会议还是收获很大的 最后两个演讲没有听到,赶去参加同学的婚礼了,以后搜搜有没有ppt看看 9/12/2009 爬虫复活[原文: http://www.huangzhimin.com/posts/444] 自从上次网站被墙之后,不得已每个月多花2.5美刀买了个独立IP,网站是可以访问了,但是网站上的爬虫却无法爬取中国网站的网页。郁闷~~~ 于是在google app engine上面申请了个app,做代理。发现想直接用Servlet来做代理服务器好像不太可行,只能退而求其次,通过分析QUERY_STRING来转发目标网页的内容。网站上的爬虫终于复活啦,不错。 GAE上面可以申请10个免费应用,还是值得多尝试尝试的。 9/1/2009 网站被墙[原文: http://www.huangzhimin.com/posts/443] 大概是昨天下午吧,网站被墙了。一开始还不知道原因,只是总上不了自己的网站,和hostmonster的客服一说,直接告诉我被墙了,建议我买dedicated ip,试了很久都没用,无奈之下只能花近50美金买20个月的dedicated ip,好不容易网站有点流量了,居然出这种事,只能从头开始了。上twitter抱怨了一把。 8/26/2009 github最近有点不稳定[原文: http://www.huangzhimin.com/posts/442] 今天早上在github上面发布bullet插件的第一个gem包,结果等了半天没结果,一会返回Queued for rebuild,一会什么都不返回。在support上面发帖提问,被告知可能是gem build进程运行在low priority,他们会把它升到medium priority。 等到下午快3点才收到通知说gem已经build成功,不过到现在还没有被加到github的gem list上,说是晚上会强制做一次reindex,希望那时候会成功gem install。 7/25/2009 网站三天无法访问[原文: http://www.huangzhimin.com/posts/436] 已经有三天无法正常访问网站了,一开始还以为是Hostmonster网站维护,后来才发现原来是Hostmonster把rails升级到了2.3.3,又没有很好的测试(挺不负责任的)。于是提交Ticket要求修复,不过到现在还没有结果。实在受不了了,自己动手。把网站的gems指向自己的目录,修改rack的源码,搞定,终于又可以看到自己熟悉的网站啦,哈哈 5/21/2009 rubyconfchina[原文: http://www.huangzhimin.com/posts/430] 第一次参加这类活动,ruby之父matz先生的出席,受到了所有关心ruby和rails的开发程序员的追捧。 由于matz的翻译晚到了,所以把我的演讲提前到了第一个。第一次面对300+人演讲,好紧张。上一次演讲还是一年前的论文答辩。之前准备的比较充分,所以总体感觉还行。daniel后来和我说,演讲的ppt还是不要放太多的代码,吸取经验。 之后matz的演讲是通过翻译来表达的,还不错,讲了很多关于ruby语言创始的事情,经济危机使得工作无所事事,于是诞生了ruby,呵呵,不知道今年的经济危机是不是又会给我们带来一种新的语言呢? robbin演讲介绍了javaeye架构,包括web server, cache memory, db server等等。网站是如何从简单的部署环境,遇到性能瓶颈之后是如何一点点解决的。 陆亦斌介绍了不少rails开发中的陷阱,主要是由于并发带来的问题,这些倒是之前很少会考虑的问题。 郑晔带来了thoughtwork中使用ruby的经验,从DSL到JRuby。 TonyI则介绍了如何使用ruby on rails开发企业/政府项目,强调的是文档。 之后maxime带来了10来分钟的关于scrum的介绍,用的可是中文演讲哦,great! Koz介绍了日本地方政府对ruby的支持,不过中文实在不敢恭维。 最后王浩飞介绍了SAP公司内部的BlueRuby项目,一个为ABAP web应用开发ruby虚拟机。 今天还是收获不少的,看到这么多充满的ruby爱好者,还看到了杭州的老同事。希望以后有更多的机会参加这类会议! 5/14/2009 导入联系人列表的类库[原文: http://www.huangzhimin.com/posts/429] 上个月在google code上发布了一个导入联系人列表的类库,http://code.google.com/p/contact-list,获取用户的msn和邮箱联系人列表,支持的邮箱包括hotmail, gmail, yahoo, sohu, sina, 163, 126, tom和yeah。算是之前一段时间的小成果吧。 不过由于这个类库的原理是使用抓取网页来分析联系人列表的,所以会因为邮箱网页的改版而无法正确获取联系人列表。 在写代码的时候就碰到过Hotmail改版的情况,所以这个类库是需要不断改版的。还好在发布之前特意写好了测试脚本,很容易找到哪个邮箱出问题了。 今天收到一个用户的email,说他的新浪和搜狐好像无法导入,我回来test了一下,发现新浪和搜狐没问题,倒是yahoo出问题了。于是给他回信,让他把log4j的level设置成debug,然后把调试信息发给我。现在有了用户的反馈,有点小压力,要好好维护好这个类库 1/11/2009 慎用QQ for Linux 1.0Beta版今天用VI写些代码,发现ESC键无效了,太可怕了,没有了ESC,VI不就废掉了嘛 重启电脑,无效。用xev测试,好像没什么问题,抓狂!!! 结果居然是因为装了QQ for Linux 1.0Beta,关掉QQ就好了,呵呵,QQ还真是霸道呢! 12/26/2008 msn让我很失望啊昨天收到msn的邮件,说出了msn9.0版本,感觉还不错,就去升级了,安装过程很长很枯燥。 很期待地打开了新版的msn,结果发现无法登录,登录到现在都没有成功,我汗啊,只能切到笔记本用pidgin上咯,失望啊! 8/14/2008 SQL杂感在学校里学SQL,也实际操作过,觉得还是掌握的不错的。这两天在公司一用,缺点就暴露了。 以前做的应用,数据量有个几千上万就不错了,写的SQL语句也大多比较简单,跑跑都不成问题。这两天公司有张数据表A的数据量已经达到24万,我要做的是将这张表A的数据LEFT JOIN另外一张表B,在mysql客户端上一跑,没有反应,等了好几分钟都出不来结果,只能Ctrl+C。看了好久都看不出SQL语句错在哪里,自己另外建了两个表作实验,也没有问题,很快就能显示结果。后来在同事的提醒下,原来是B表关联的字段没有加index,加上index之后果然很快就显示结果了。 平时自己在实验SQL语句的时候大多将精力集中在SQL语句是否正确,而忽略了SQL语句的性能,好比今天用子查询来找数据,结果发现还不如分成两条SQL语句来的效率高呢。书本上将的金玉良言大多是很有用的,但是也有部分在实际应用中是必须违反的,比如几大范式要避免冗余,但是实际应用中还是会通过增加冗余来提高查询效率。 看来应该好好在研究一下数据库的性能问题了呢 7/31/2008 QQ for Linux好消息,好消息,QQ出Linux版本了 以后不需要通过虚拟机上了,也不需要通过Wine上了,哈哈,不错。不过毕竟是Preview版,功能还不全,不过至少是稳定,占资源少,期待正式版的出现^_^ 6/19/2008 Web开发的多浏览器,很无奈啊这个网站的开发平台在Ubuntu上,自然将Firefox作为默认的浏览器,用久了居然忘了还要兼容一下IE, Safari, Opera。刚刚完成的代码高亮功能,在FF上显示相当完美,部署之后用IE一看,真是差距明显,不好看了。整个时间看看能不能fix掉。 我算是反过来了,大多数网站都是对IE100%支持,对FF什么支持比较差。就因为要用IE才能上网银,用IE才能网上消费,害得我还得装个虚拟机,跑起来还巨占资源。 哎,偏偏我又不擅长css,要处理这些跨浏览器显示对我来说还真不是件容易的事情呢。 4/28/2008 Ubuntu升级到8.04Ubuntu 8.04(代号Hardy)的正式版出来好几天了,昨天下定决心做了升级,因为学校有个udlchina的源,所以下载升级包的速度那是相当得快。 升级过程不如7.04到7.10那么顺利,upgrade的时候有些包好像没有安装上去,后来都是手动重新安装上去的,感叹apt-get的强大! 除了软件的版本号增大了,升级之后好像也没有发觉什么大的变化呢 升级之后最大的问题是字体问题,之前用的是STHeiti,放在/usr/share/fonts/truetype/下面,配置文件是/etc/fonts/language-selector.conf。新版本中字体配置文件/etc/fonts/language-selector.conf已经不存在了,而是需要到/etc/fonts/conf.avail/69-language-selector-zh-cn.conf去修改,还好配置内容几乎没变。 另外还有一个问题是fcitx,在新版本下中文字显示都为方块,虽然还能输入中文,但是根本没办法找到自己想要输入的字。google了一下,只需要修改~/.fcitx/config,将显示字体(中)=后面填入你的中文字体,我的是STHeiti,OK。 比较头疼的是Firefox 3.0b5很不稳定,有时候会莫名其妙crash,速度也没有传说中的那么快。最过分的,无法显示railsbrain生成的rails api,这个影响太大,于是去装了个opera,还不错哦,试用几天看看。 最后发现的问题是新版本导致vim的rails插件crash。具体是当我输入:Rcontroller po<Tab>,本来应该补全称:Rcontroller posts的,结果就crash了,唉,不知道什么时候修正这个错误呢。 暂时就发现这点问题,还好这次升级没有伤筋动骨,一些小错误暂时先忍忍,谁让自己喜欢尝鲜呢,呵呵! 4/24/2008 日志同步发布中发布在flyerhzm.com 感谢rmetaweblog的作者Pieter Steyn给予的邮件答复,不过由于1.0版本发布日志不能加分类,而且服务器上没有安装rmetaweblog这个gem,所以看了rmetaweblog的源码,重新用xmlrpc/client来实现的,增加了分类的数据 4/21/2008 小爬虫备份msn spaces上周自己写的blog上线之后,就开始准备把msn spaces上的日志导入到我的blog上。 一开始是准备用msn spaces提供的MetaWeblog接口来获取日志。正好ruby下面有rmetaweblog的gem,直接拿来用。不过文档写得不怎么样,google了半天也没有用ruby xmlrpc方式管理msn spaces的实例,还好作者留了个gmail的联系方式,请教了一下,作者回复了我一个实例,果然很容易就连上了,不过msn好像限制只能读取最近发布的几十条日志,在前面的好像就读不出来了,不过到可以用来以后做同步日志发布。 xmlrpc方式受挫之后,就只能写个小爬虫自己去解析了。第一次写爬虫,还是蛮麻烦的。要看html源码,分析所要读取的元素,不断尝试,调试。用了一整天的时间,代码不是很多,就是发送html request,读取html response,然后用正则表达式解析。全部日志读取下来花了10来分钟呢。 以后估计就把主要的精力放在自己写的blog上了,不过还是会尽量通过xmlrpc同步到msn spaces上,大家以后可以访问我的blog——http://flyerhzm.com 1/28/2008 初次安装苹果操作系统失败昨天看到Devon的T61上安装的苹果操作系统,Devon还极力推崇在苹果操作系统上开发Rails的高效率,弄得我甚是心痒。应该说在笔记本的品牌上,IBM和Apple算是最受欢迎的吧,被用户们分别戏称为小黑和小白。曾经向往着能够有一台苹果电脑,但是价钱却不是一般得贵啊。现在苹果的操作系统也能在X86的机器上运行了(已经很久之前的事情了),而且能安装在IBM的笔记本上,那我当然要在自己的小黑上面尝试一把咯 回到实验室,外网的下载是不指望了,还好缘网上有10.4.6的DVD ISO,载下来刻盘。接着将自己笔记本上的重要数据备份到实验室的台式机上。1、2个小时的兴奋之后,终于开始安装,用刻好的盘引导,结果黑屏,然后拿到别人的机器上一试,是可以的,原来自己的COMBO挑盘,读不出来。借了别人T43上的COMBO换到我的机器上,成功引导,不过在刚刚进入安装界面的时候,就不动了,光驱再读,硬盘灯在闪,就是屏幕没动,唉~~~Google了一个晚上,怎么都不行,在虚拟机上尝试也是同样的问题,网上说可能用SATA的光驱或者外接USB光驱就可以了,但是我手头没这玩艺。网上还有通过硬盘安装的,但是镜像DMG要么是电驴要么是BT,校内都没法载。回家之后又没有空间备份数据,郁闷死了。 哎,看来只能暂时放弃了,不过现在要是装的话,也是盗版的(鄙视自己一把)。还是攒攒钱,买台MacBook吧 1/19/2008 用jmeter测试https应用实验室的项目是做关于web service的security产品,主要是对soap消息进行加密签名。上一次的性能测试是将单纯调用web service和应用我们的security产品后的web service进行对比,然而差距还是相当明显的,尤其是在高并发的时候,毕竟中间的加密和签名过程是相当消耗时间的。上次review的时候,老师就说性能有很大的程度可以提高,我本来想说基本没太多的空间可以优化(除了之后会加入的线程池,应该会有小幅度性能提升),但是苦于没有数据支持。正好这两天为了准备开题,一直在看一些文章,看到网上有人提到,SSL + WS-Security = Web Service安全保障,主张用https的方式来传输soap消息。虽然不是什么很好的方法,不过不是正好拿来作为产品测试对比的对象嘛。 tomcat上已经配置好了axis,通过http访问soap消息是没有问题了。但是还没有配置https,所以按着官方文档开始干活了。首先用keytool生成服务器段的keystore: keytool -genkey -alias tomcat -keystore ktomcat.keystore 注意,alias的密码要与keystore的密码一致,tomcat文档上是这么说的。接着是修改了server.xml: <Connector 重启tomcat之后,输入https://localhost:8443进行验证(注意是8443哦,我一开始居然傻乎乎的输入8080^_^) 接着设置客户端的trustStore,jmeter需要它来信任tomcat服务器段的证书 keytool -export -alias tomcat -keystore ktomcat.keystore -file tomcat.crt tomcat上的https配置成功之后,就开始jmeter的配置了,默认情况下用jmeter是不可以访问我们配置的https应用的,不过却可以访问像google等网站上的https应用,原因很简单,我们自己生成的证书是不被信任的。jmeter的官方网站有一个很大的陷阱,上面说只要修改jmeter.properties参数,将SSL Configuration部分内的注释去掉就可以了,如下 #--------------------------------------------------------------------------- #Classname of the ssl provider to be used (to enable testing of https urls) ssl.provider=com.sun.net.ssl.internal.ssl.Provider #The location of the truststore (trusted certificates) and keystore ( if other than the default. #The password to your keystore 不过结果还是失败,尝试了好多次,总是报SSLHandshakeException。如果是通过浏览器访问的话,浏览器都会提醒你对方的证书不合法,是否要信任它,但是java是不会询问你,而是直接抛出异常。但是如果设置了trustStore的话,就会信任对方的证书啦,太奇怪了。 google了一下有关SSLHandshakeException,网上有说可以用-D方式添加应用参数,于是打开了jmter启动文件,修改最后一句话为: java $JVM_ARGS $ARGS -jar `dirname $0`/ApacheJMeter.jar -Djavax.net.ssl.trustStore=/home/flyerhzm/software/jakarta-jmeter-2.2/tclient.keystore -Djavx.net.ssl.trustStorePassword=changeit "$@" 居然成功了,呵呵。可恶,配置文件jmeter.properties居然不起作用,害我辛苦到现在。 趁热打铁,测试了一下通过https访问web service,果然比应用我们的security产品要多消耗1倍多的时间,赞,终于有数据可以说服老师了,哈哈。 1/14/2008 Google Remind Me你是否经常上网...... 呵呵,广告就做到这里了。一直使用google简洁主页,前几天心血来潮使用了其可订制的iGoogle主页,感觉很不错。现在我的主页包括Gmail, Google Reader, Bookmarks, To-Do List, 天气预报和上面提到的提醒小工具(我自己写的^_^)。 捣鼓了几个晚上才写出来的,其实很简单,输入需要提醒的日子,工具会按照剩余天数进行排序,越早到的日子越先提醒咯,当然你也可以配置需要显示的提醒数目。Gadget提供的API还是比较简单的,主要是HTML, XML和Javascript,不过就是debug太麻烦了。所有的html和javascript都必须写在XML的CDATA标签内,这样就没有了语法检查和高亮。另外缺乏IDE的支持,必须在网页上嵌套的Google Gadgets Editor进行调试,而且有些高级功能如setprefs和dynamic-height只有在真是环境下才能显示出来。对于我这个严重依赖IDE的人,还是绕了很大一段远路。下面来个特写 其实应该做个网站,上面朋友间可以互相共享生日,内置重要节日,用户定义一些纪念日,然后通过Feed在提醒小工具上面显示,不过现在没时间,也没有服务器搭网站,只能先凑合着用用咯。 1/7/2008 写程序也要拼人品啊 作为程序员,最痛恨的事莫过于调试一段代码,而这段代码怎么看都是正确的,但是它又偏偏出错了。计算机是不会欺骗人的,所以碰到这样的事可以很肯定是程序员把代码写错了。一般来说呢,这种错误可以分成两种情况:一是错误发生在很小的细节上面,程序员在Review的时候不容易发现;二是错误发生在自己不熟悉的代码块中。碰到这两种情况的时候,能不能解决,花多久时间绝对是拼人品的一件事情。 |
|
|