导热硅脂

家里的台式机CPU温度过高已经很长一段时间了。一个i5-2500K的CPU,全功率运转的时候温度轻松上百,在BIOS里面看着温度监控都能到87,平时闲着也有七十几,这俨然不正常。 前两天拆开来,发现风扇里面好多灰…… 于是清理了一把。本来想着这回应该没问题了,结果开机之后状况依旧,丝毫没有好转…… 拆开来的时候发现风扇底下的导热膏已经全干了,剩下一层灰状物质分布在散热片表面和CPU表面。之前听说过导热硅脂干了会影响散热,因为硅脂干了之后,CPU和散热片之间会有空气间隙,导热很差,于是CPU的热量无法传达到散热片上。这种情况需要换新的导热硅脂。虽然没搞过,还是可以一试。于是去Amazon上随便搞了个5刀的导热硅脂,搞败了也没啥损失。   今天硅脂送到了,拆开来之后看上去是个针筒,不过比较细,头上有个盖子。 拆下CPU上的风扇,把上面的旧硅脂车掉,再把CPU拆下来也这么搞一遍。全搞干净之后,我开始研究硅脂怎么涂…… 网上说可以用玻璃棒啦针头啦之类的涂。拧开盖子之后,看上去就是个针筒头的样子。把针筒顶在散热片上轻轻按下去,出来了大约1mm粗细的牙膏样的东西。 反正我也没有别的工具,干脆直接用这个针筒的头来涂。重复着挤出来一些再抹到边上去的操作,直到看上去基本上都布满了…… 看网上的说法应该均匀涂,还要啥薄的像纸但是没有空隙…… 想想反正装上去之后就会压平的,谁管那么多……   涂完之后把风扇装回去,因为装得不太顺利还抬起来了几次。装完之后,怀着忐忑不安的心情开机…… 貌似效果还不错,BIOS里看看也就四十几,进了系统闲着也就四五十的样子。全功率跑起来,温度升…… 升…… 也就升到刚过七十。 现在跑了几个小时了,还是71~73的样子,系统温度35。看来基本上算是成功了。 之后再观察个几天,看看会不会有所反复。终于可以全功率跑程序了……

在bsd上跑ndk-build

bsd一直是个官方不咋支持的Android开发平台…… 不过靠着linux兼容层,还是可以混混的…… 首先是ndk-build会报不支持的os(FreeBSD)和arch(amd64),而且ndk-build并不会使用环境变量里定义的值。所以有两个办法: 1. 直接调用gmake env HOST_OS=linux HOST_ARCH=x86 gmake -f $NDK_DIR/build/core/build-local.mk 这样啥都不用改。 2. 修改ndk-build 把HOST_OS设置成linux,HOST_ARCH设置成x86,并且export出来。 再把GNUMAKE设置成gmake,否则会调自带的linux版gmake导致一些麻烦的事情…… 然后直接跑就行了。 跑了之后会碰到一个问题:ld会segmentation fault。看系统log可能是因为fallocate和fstatfs64系统调用没有实现的关系。 解决办法是,到ndk目录里的toolchains/*/prebuilt/linux-x86/…/bin/,如果有ld.gold,那把老的ld干掉,改成到ld.bfd的符号链接。老的ld就是ld.gold…… 其实就是gold那个新的ld调了一些新的bsd还没实现的linux的system call…… 用老的bfd里的ld就没事了……

居然又碰上一个Android的Bug

开发某物过程中已经碰见俩Android的bug了,Android有那么多bug么…… 第一个是在TextView里面加有格式的文本,可能会导致IndexOutOfBoundException…… 在Android公开issue列表里的一个对应的issue是#35466,影响Android 4.1,大约在4.1.x修复了。 第二个是如果有硬件加速的话,那么EditText里面的文字显示会有问题,输入一些文字之后,在前面插入文字,新的文字会和老的重叠起来…… 或者说,老的文字不会自动后退…… 在issue列表里有#38770是关于这个bug的。影响Android 4.1-4.1.2,在Android 4.2修复了。 看来4.1 bug很多嘛…… 难道和Project Butter有关系……

正则表达式与有一定格式的文本

最近用aMule扒下来一堆cd。这些cd很神奇,是一堆iso,里面是一些flac文件…… 这些flac都没有歌曲信息,于是我想办法提取歌曲信息存进去…… 首先是文件名。文件名还算有点规律,都是###-(#) xxx _ xxx _ xxx _ xxx这样的。但是搞了没几张就发现,这个不太靠谱。首先是,有时候分隔用的是_,有时候是__…… 其次有时候一个域内部也会有_,例如标题里面时常出现…… 再次,看上去不少文件名最后被截断了…… 于是为了搞出靠谱的歌曲信息,还是用别的办法。 其次,每个cd还有个Vol ## xxx.txt的文件。打开一看,好歹比文件名有规律一点,第一行是专辑信息,之后有些# xxx : xxx / xxx = xxx这样的行,最后还有一些#-# xxx的表示录音时间的行。于是搞了个简单的python脚本,parse这些信息存进去…… 既然是parse文本,那就正则表达式。一开始可简单了。再配合glob找文件,mutagen保存歌曲信息,看上去都很美好…… 直到处理没几张专辑之后我发现:格式貌似不止一种…… 接下来就是各种麻烦的事情…… 有时候,因为是一个作品的各个部分,除了第一部分那行外艺术家之类信息统统没有,只有一个小标题…… 有时候,艺术家信息在下面录音时间那行的末尾…… 有时候,录音时间那些行不是#-#或者#,而是#、#-#、#-#这样…… 有时候,xxx : xxx表示作曲:标题,但有时候,xxx : xxx表示大标题:小标题…… 还有时候,xxx : xxx就完全是个小标题…… 有时候,大标题和小标题之间用—分隔,但有时候,用:分隔…… 有时候,:变成了;…… 有时候,/不见了…… 反正一开始一个没几行的python脚本膨胀到了超过两百行,有时候还需要手动处理…… 例如有一张里面艺术家跑到了第一行专辑信息里…… 最后好歹算是差不多弄完了。虽说这还是有点格式的文本(我觉得肯定是人写的),正则表达式处理还是很麻烦。如果处理系统有音乐相关信息的话,估计能够更好地完成任务(例如知道作曲家都有那些这样)……

尝试训练Gmail垃圾邮件过滤器

起因是我VPS发出来的邮件被扔到 Spam 里去了…… 首先根据之前经验,观察邮件的原文里的 Google 的 SPF 的评价,标记为 neutral。 为了试图将其往更好的方向转变,首先我跑去 GoDaddy 在域名信息里搞上了SPF,顺便去 PhotonVPS 开了个 ticket 让他们设好Reverse DNS。SPF用于说明这个域名允许哪些IP以他的名义发邮件,而Reverse DNS用于IP到域名的反查,如果发送者IP的反查结果能和发送者邮箱域名部分匹配上,对于垃圾邮件过滤识别结果也有帮助。这俩倒挺快,GoDaddy 那个完全是程序完成,PhotonVPS 那个 ticket 也是一会儿就有人搞定了。 再发一封邮件试试,嗯,SPF 评价为 pass 了。但是,这封邮件还是跑 Spam 去了…… Google 的理由依旧是这个邮件很像垃圾邮件,跑去看帮助,大约也就是啥你这IP好像发垃圾邮件啦,你这内容像垃圾邮件啦之类。我服务器就发发自检报告,又不骚扰别人,有啥像垃圾邮件的…… 既然这样么,只好试试训练他了。GMail 有个”Not Spam”按钮,大约是能够训练垃圾邮件分类器,告诉他这个不是垃圾。 尝试性的一封一封邮件发,一封一封标记”Not Spam”… 过了大约五六封,还真不扔到Spam里去了…… 再发几个,也是这样。 刚才还收到了自检报告,看来基本上算训练成了。但是不清楚这个训练对发到别的邮箱的邮件有没有用,其实整个事情起因就是发到贾叔邮箱的确认邮件进了Spam导致他找不到…… 当然,如果只关心自己的邮箱,那貌似把发送者加为联系人就成了。但是我不是这个情况…… PS: 后来尝试给贾叔发了个邮件,结果这封邮件没有进Spam,看来对别人的邮箱也是有用的。