博文

目前显示的是 十月, 2012的博文

2012-10-24

本周最大的变化是我们team终于有了第三台服务器。我需要用它运行hadoop,虽然硬盘只有100GB,但是有总比没有好。这周的主要工作是做搜索的点击日志分析。在做这些日志分析工作之前,我一直以为统计程序的瓶颈是在IO上,所以就一门心思的学习各种列存储技术、对压缩算法做benchmark等等。但是实际运行的时候发现瓶颈总是在CPU上。对hadoop程序做profiling并非易事,所以我现在主要靠手动使用jstack做抽样,猜测哪些函数是热点。我最近对linkedin的glu玩的越来越转了。首先是安装脚本这块儿,写多了也就熟了,所以没啥问题了。其次,glu虽然号称有监控的功能,但是实际上glu agent server只提供了一个ScheduledExecutorService罢了,其它什么都没做,全靠你去发挥。从某种角度来看,glu也可以看做是一个分布式计算框架。它的task分为两种,只执行一次的(如install),和定期执行的(ScheduledExecutorService)。那么最简单的监控功能,就是往ScheduledExecutorService扔一个task,定期检测下load、disk usage啥的。整个工作的核心是如何搜集系统信息,可惜,java在搜集操作系统信息方面的功能太弱,应用层利用jmx倒是很方便。所以就看你的监控侧重什么了。linkedin glu里面用的groovy是1.7.x的,比较老。不仅不支持jdk 7(exception的构造函数不一样多),而且Grape也不大好使。我想用它抓mysql jdbc的jar,没成功。想手动把这个jar包加到当前这个脚本中的classpath中,也没成功。jar包放到~/.groovy/lib目录中,也没成功。最终我放弃了。改成由glu script启动一个bash脚本,这个bash脚本设置classpath并执行一个新的groovy脚本。glu的static model文件是一个json,我现在深深的觉得在生产环境中这玩意儿绝对不该手写。因为随着机器数增多这玩意儿很快就会膨胀到数千行。所以,glu本身应该只是一个基础框架。各个企业应该写自己的脚本来生成static model文件,然后调用glu console-cli 上传、部署。glu把cli工具做那么完善就是为了便于其他人二次开发。

解决mp3 tag乱码的问题

不知道你们现在都从哪里下载音乐专辑? 我是从港台的论坛上,下载BT文件,然后交给QQ旋风下载。但是,有个问题,他们那边在制作mp3的时候都是采用繁体中文,很多mp3到了我机器上,tag信息都是乱码(如歌手名),只有文件名不是乱码。出现乱码的原因倒不是简体字、繁体字,而是因为他们在mp3中采用了BIG5编码,而不是GBK或者unicode。为了消除乱码,最彻底的办法就是把所有的tag信息都换成utf-16编码。那么在任何操作系统下都可以正确的解析。这里需要用到两个软件:微软的applocale。可惜从2004年之后就没更新了,在win7/8安装过程中可能遇到困难,具体请google。mp3tag。一个免费软件,随处都可以下载到。解决办法:用applocale以繁体中文运行mp3tag这个软件,然后在mp3tag中切换至歌曲所在目录,然后Ctrl+A,Ctrl+S即可。

Howto: 在windows 7或8中彻底禁用IPv6

今天我发现我的电脑上有很多ipv6的连接,尤其是skydrive,这个吃流量的大户,竟然走的是ipv6!!! 很明显,我现在的ISP没有提供IPv6接入,所以实际上它走的是6to4 tunnel,于是网络延迟就很高了。禁用ipv6的办法:打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP6\Parameters下面新建一个名为DisabledComponents的DWORD值,value=0xffffffff 。打开服务管理器,services.msc。找到一个名为IP Helper的服务,禁用它。重启。附带说一句,如果你的这台电脑有公网IP的话,那么默认情况下windows会帮你启用ipv6 6to4 tunnel,于是你就可以直接访问ipv6.google.com而不担心被reset了。 所以,要不要禁用ipv6请自行考虑。

HIV的感染数

我今天刚发现我之前对CDC的传染病发病及死亡统计理解有误。 卫生部每年都会发一个统计报告,披露上一年全国法定传染病发病及死亡人数。如http://www.chinacdc.cn/tjsj/fdcrbbg/201202/t20120216_57473.htm 死亡人数中,占大头的毫无疑问是AIDS,去年是9224/15264=60.5%。 但是我今天在http://www.phsciencedata.cn/ 看统计数据的时候发现,上面那个统计报告中,AIDS的发病和死亡人数仅仅是指AIDS病人,不含HIV携带者。HIV是导致AIDS的病毒,从感染HIV到发展成AIDS,平均要经过8-9年的潜伏期。HIV携带者同样具有很高的病毒传播性,所以,从传染性疾病的预防和控制角度来说,HIV的“发病数”,要比AIDS的发病数更有意义。去年HIV的新发感染人数大约是4.8万,加上AIDS,大约就是7万左右。每年有这么多人被宣布“死刑”或“死缓”,不得不说这很可怕。另外,每年HIV的死亡人数和AIDS差不多,但是却没有被列入法定传染病发病及死亡人数表中,不得不说,这很误导人。 据卫生部的估计,存活的HIV感染者及AIDS病人大约78万,因此全人群中HIV的感染率大概是万分之六左右(假设总人口13亿)。虽然HIV的最主要传播途径是异性性行为,但是为了防止不必要的恐慌,还是需要说明一下:暗娼虽然是高危人群,但是HIV感染率在1%以下。如果已知性行为的某一方是HIV感染者,那么一次性行为导致另一方感染HIV的概率是0.1%-3.3%。女性比男性更易感染。(虽然HIV感染者中男性占了绝大多数,这个矛盾关系,自己体会吧)口交、接吻不传染。以上均指的是异性间的性行为。