“p4eclipse插件checkout之后还是只读”问题

六月 3, 2011 · Shawn Ma

576G virtual memory

纯属好玩。新装的ubuntu 11.04,好像终于解决了intel显卡Suspend的问题,不过又出来wifi不能aggregation的问题,通过升级firmware,勉强解决了。昨天不知怎么的,pulse audio又出问题了,看top的结果: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6372 sma 20 0 <span style="color: #ff0000;">576g</span> 164m 39m R 63 4.3 29:05.87 gnome-settings- 6785 sma 20 0 <span style="color: #ff0000;">545g</span> 180m 41m S 58 4.7 28:13.15 empathy 6396 sma 20 0 266g 79m 20m S 27 2.1 14:12.00 gnome-power-man 6618 sma 20 0 262g 266m 23m S 20 6.9 38:20.09 firefox-bin 3280 sma 20 0 1374m 482m 5084 S 0 12.5 2:58.98 java 6739 sma 20 0 1314m 629m 561m S 6 16.3 62:09.77 VirtualBox 7008 sma 20 0 1293m 366m 7884 S 0 9.5 3:41.31 java 9935 sma 20 0 855m 79m 8232 S 6 2.1 3:11.90 banshee 就算64位虚拟内存可以很大,也不带有这么大的virtual size的吧?pmap看一下,有很多pulse的share memory块: ...

五月 17, 2011 · Shawn Ma

被HTC Desire搞死了

水货手机,基本上的问题就是,启动很困难,Radio那部分总是crash。这是几分钟内连续重启的结果: [ 20.648101] ARM9 has CRASHED [ 20.648284] smem: DIAG ‘[WCDMA] 08:14:04 FATAL: (DS :PFault :36888) (0) [ 20.648315] ‘ [ 20.648742] [ 20.648864] Restarting Linux version 2.6.37.4-cyanogenmod-82245-g7f230e8 (android@giulio-desktop) (gcc version 4.4.3 (GCC) ) #3 PREEMPT Tue Apr 12 22:27:17 CEST 2011 [ 20.648895] 其中加亮部分可以被替换为: [ 53.288482] smem: DIAG ‘[WCDMA] 08:00:22 FATAL: GPRS RLC UL (dsmi.c:00191) (0) [ 82.440185] smem: DIAG ‘[WCDMA] 08:01:51 FATAL: GPRS RLC UL (dsmi.c:00191) (0) [ 47.035705] smem: DIAG ‘[WCDMA] 08:02:44 FATAL: GPRS RLC UL (dsmi.c:00191) (0) [ 40.520263] smem: DIAG ‘[WCDMA] 08:03:30 FATAL: (GSM :XFault :00000) (0) [ 12.618225] smem: DIAG ‘[WCDMA] 08:07:23 FATAL: (SLEE:XFault :00000) (0) [ 40.406524] smem: DIAG ‘[WCDMA] 08:09:33 FATAL: (SMD :XFault :00004) (0) [ 20.300048] smem: DIAG ‘[WCDMA] 08:10:42 FATAL: (DS :XFault :00004) (0) [ 32.339019] smem: DIAG ‘[WCDMA] 08:12:53 FATAL: (IST0:XFault :00068) (0) [ 20.648284] smem: DIAG ‘[WCDMA] 08:14:04 FATAL: (DS :PFault :36888) (0) [ 8.030181] smem: DIAG ‘[WCDMA] 08:16:03 FATAL: (SLEE:XFault :00000) (0) ...

五月 9, 2011 · Shawn Ma

Export Private Key from JKS

四月 12, 2011 · Shawn Ma

In case of 40G JVM core dump…

好久不收拾,这里都长草了。先广告一下,弄了一个shawnma.com的域名(其实去年就申请了,然后就给忘了,浪费了50元啊!),以后shawnma.xomud.com就不搞了,xomud.com我也不打算续了,有人想要么,可以转让,哈。 这是一个很久以前写了一半的东西(从URL来看,去年11月),坚持写完: —- 跟时髦的分割线 — 最近公司的产品出了一个奇怪的问题,有一个weblogic跑的应用,跑着跑着,就core dump,产生一个40G的core文件。一开始觉得很奇怪,为什么有这么大的一个core,一般就想,嗯,java内存泄露了。但是这个应用的-Xmx一共才4G,加上PermGen,加上JVM的东西,顶多也就5、6G的core啊。再说这个系统总共内存只有32G,40G的core一定是因为某些native library或者其他的什么地方泄露了内存。 Solaris有一些很好的工具,是Linux所没有的,一旦到了Linux平台我就很怀念他们。比如pstack,比如dtrace。尤其是dtrace,加上一些网上的dtrace script,用来troubleshooting真的是很无敌,跟Windows底下的Sysinternals suite一样。不知道是不是Linux也有类似的工具? pstack可以用来检查一个core文件产生时系统所有线程的状态。(Java也有一个,jstack,有时候不太好用)不过由于我们是内存泄露,当然要用pmap(java有jmap,不过只能查看java heap)。一个正常的java经常的内存image应该是这样: $ pmap 3536 |more 3536: /opt/middleware/jdk1.6.0_21/bin/amd64/java -Dweblogic.Name=imdmapi -se 0000000000400000 52K r-x-- /opt/middleware/jdk1.6.0_21/bin/amd64/java 000000000041C000 4K rw--- /opt/middleware/jdk1.6.0_21/bin/amd64/java 000000000041D000 158048K rw--- [ heap ] FFFFFD7ECBCD0000 152K rw--R [ anon ] FFFFFD7ECC2D6000 152K rw--R [ stack tid=2729 ] ...... FFFFFD7EEA6F1000 8K rw--- /opt/middleware/jdk1.6.0_21/jre/lib/amd64/libnet.so FFFFFD7EEA6F5000 8K r--s- dev:32,0 ino:477791 FFFFFD7EEA6F8000 16K r--s- dev:32,0 ino:8281559 FFFFFD7EEA7FB000 16K rw--R [ stack tid=8 ] FFFFFD7EEA800000 1048576K rw--- [ anon ] FFFFFD7F2A800000 3145728K rw--- [ anon ] FFFFFD7FEA800000 131072K rw--- [ anon ] FFFFFD7FF2800000 88064K rw--- [ anon ] .... FFFFFD7FFF3FD000 8K rwx-- /lib/amd64/ld.so.1 FFFFFD7FFFDFC000 16K rw--- [ stack ] 其中最上面低地址段的是真正的进程的Heap。底下那段红色的anonymous的内存段才是真正的java heap——它其实在内存高端,相当于跟栈在抢内存。这段内存不是用malloc()这样的东西来申请的,而是通过mmap()把一个文件映射到内存里来申请的。我们指定一个4G的max heap,那么JVM就mmap一个4G的文件。这个文件,当然就是/dev/zero。这个行为也是可以观察的,用truss(Linux: strace)指定跟踪mmap何open这两个系统调用就能发现了JVM先open了/dev/zero,然后把这个文件映射进内存。这样还有一个好处是内存相当于已经都memset成0了!至于为什么使用mmap,据说是为了产生一块连续的内存作为heap,不过我不明白为什么pmap显示它还是分成几段。 ...

四月 9, 2011 · Shawn Ma

路过Oracle Open World

偶然的机会,今天去了一趟三番的Oracle Open World + Java One。去年的Open World本来是可以去的,不过我换了公司,就没了。 本来是带着研究Coherence的任务去的,边上就是Tuxedo的booth,看到Todd Little胖墩墩的坐在那里,还觉得挺有趣的,一转身,Frank走了过来,颇有一种他乡遇故知的感觉,不过也有点不好意思,谁让咱跑了呢。互相寒暄了一下,今年中国也来了不少人,William Cai据说代表Security Team去了。不过转了一圈,Identity Management有好多柜台,却没有认识的。泱泱离去。 找到Coherence柜台,跟Brian Oliver聊了聊,这个组其实有好多以前的同事,比如高大为同学。一问,果然都认识。这个其实也就是一种Distributed Cache,听他讲了讲,似乎feature还不错,不过也没仔细比较跟memcached或者cassandra的区别(话说cassandra最近势头很不好,digg的VP Engineering因为用了这个做的不好走人了)。有空再研究吧。 下午正好赶上拉里埃里森的keynote,他看起来的确老了,都66岁了。没有听到开头,过去的时候已近开始讲Middleware和Fusion Application。讲到Fussion Application的时候人开始退场,到后来退场的人很多很多,看来对这个东西都不感兴趣,尤其是Larry下去,让其他几个人demo的时候。我在Oracle的时候就对这种从头做的应用抱有怀疑的态度,外加那个“做的很复杂以至于看不到明显的错误的ADF”,看来大家使用脚投票了。不知道这玩意前景如何。。。 Keynote会场的门口放了两套大机器,一个Full Rack Exadata,还有一套Exadata + Exalogic配合的东西,性能的确很强,不过价钱也很强,不是一般人消费的起的——1/4的Rack据说要1M$左右。在边上放了四个Iron Man的从旧到新的模型,上面的大屏幕还放着Iron Man 2的广告,我看来看去,觉得Iron Man就是Larry演的,而且Iron Man的性格也像极了Larry,很张扬。 其实也没啥具体的收获,开开眼界吧。

九月 23, 2010 · Shawn Ma

Ipad的蓝牙和地图

发现2008年写了一个对新笔记本的希望,没想到今年买了一个ipad,还真挺符合我的要求的。稍微有这么一点差异: ARM CPU vs ATOM CPU。ARM应该也还好了,好像很多便携设备都用ARM。没有仔细比较过。 没有windows系统。很多网银是用不了的。这个没啥办法。。。 不要内置的GPS还被我说中了-_-“”。不过这个问题还好,我有Holux M-241,加上roqy bt这个软件,GPS基本解决。 价钱基本上说对了,499美元。不过加税就超过500美元了。 不过ipad也有两个超出期望地方:多点触摸和重力感应。这两个东西带来的有意思的东西还是蛮多的,很多游戏只能用这两个东西来玩,很有趣。 嗯。说回到地图的问题。其实这有两个问题,一个是希望有offline map,另外一个是希望有导航,或者最基本的,能用GPS在地图上显示我目前的位置和方向(就像手机版本的google map一样)。上个礼拜研究了一下还是有所进展的。 蓝牙问题 ipad是带蓝牙的,不过它的蓝牙很“封闭”,比如蓝牙的GPS的SPP Slave模式就不支持。你要上大街上买个蓝牙键盘,也不支持,只能买苹果的蓝牙键盘,唯一支持的就是蓝牙耳机。还好我们可以越狱,目前方案有两种,一个叫roqy GPS,这个可以替换掉ipad内置的蓝牙stack,就可以连上GPS了。不过这个只支持GPS,想要接蓝牙键盘,不行。Cydia可以下载到,定价8欧元。不过在weiphone可以搞到破解版。另外一种叫btstack,本身是开源的,不过如果想要支持GPS,请掏5美元(还是affordable的,我差点就买了)。如果想要支持keyboard,另外交一点。不过,btstack keyboard在tgbus也有破解版,没有试过……(PS, 蓝牙键盘看起来也很不错,尤其是那种可以折叠的Nokia的键盘。只是要300元,似乎不是很值) 地图问题 蓝牙GPS问题解决了,Google Map显示我就是一个点了。MotionX GPS也可以工作了。从Hackluous可以下载到tomtom的国外的导航(北美、欧洲),从weiphone可以下载到某国产的中国导航软件,这样 导航的问题也还ok,但是这两个软件都是iphone的(超小),而且不是地图软件——导航的软件跟地图还是挺不一样的,导航的往往只能显示眼前的地图, 没有全局观,很不爽。 研究了一下,离线地图大概有这么几种解决方案。 iphoneofflinemap,一个台湾人搞的。原理是利用现有的苹果maps应用,把所有的离线地图放在它的缓存里面。不过在3.2.x似乎有点问题,貌似maps在联网的情况下会写入这个文件,似乎会导致这个文件的不一致(删地图?)。我倒是想了一个狠招,因为maps是以普通用户身份运行的的,把那个缓存文件用root写入并且设置其他人只读,应该能解决这个问题。不过总之觉得这个不是狠靠谱,也不喜欢那个map生成器。。。 Offmaps. iphone应用,在ipad不能全屏。下载地图只支持openstreetmap,没什么兴趣研究。等它出ipad版本再搞它。。 MotionX GPS HD。这个倒是全屏,而且支持GPS,支持tracking。最重要的是,它也支持下载地图,当然,只能下载openstreetmap的地图,不过这个地图怎么看怎么难过,不知到是对比的问题还是怎么样,总之很不清楚。北京的地图更是不可用了。所以需要想办法用Google或者是bing的地图覆盖之。稍微研究了一下,他的下载之后的地图就是直接放在一个目录下(后缀.data,其实就是png),然后有一个sqllite的小数据库做索引,记录某个文件是对应哪一块,哪天下载的等等。为了省空间他对重复下载的块只是增加引用计数 -_-。所以,理论上用Google的图覆盖之时候可能的。待有时间研究来……

八月 29, 2010 · Shawn Ma

Hacking ipad (4)

啊,居然写了一个4。 因为我发现了一个有趣的事情。一直在找一个能offline使用map的应用,不过都不太好。OffMaps这个软件本身就收费,用的地图也是openstreetmap的地图——中国部分极差。有人做了一个ipad自带的map的离线方法,不过在新版里很不好用,因为它是通过改map的sqllite缓存数据库来实现的。考虑到用j2me写过一个简单的地图程序,开始琢磨是不是可以在ipad上自己写个小程序。但是苹果要求首先要有一只mac,而我并没有买一只的打算,只好另求他法。 首先想的是是不是有交叉编译的办法,一查,还真有,有一个项目叫iphone gcc,就是用gcc来交叉编译objective-C,然后把iphone的root文件系统,以及iphone sdk里面头文件、连接库搞到一台Linux上,就可以开发了。听起来很不错,不过看了Saurik的guide之后,就放弃了这个想法。网上说有人做了一些vmware的image,不过没有找到link,不然倒是挺好的一个选择。 后来在网上找到一个帖子,又想起来Cydia里面有一个iphone-gcc,决定试一下用ipad直接来开发。用apt-get安装iphone-gcc, make, ldid等等,还是要用VPN解决一下Cydia的cache的问题。还下载了180M的头文件。试了一个tab demo,cc1出问题:bus error,直接去/usr/libexec/…去执行cc1,报告说:cannot allocate memory。分特。杀掉mail,safari,还是不够,奇怪的很。最后发现,我装的iphone-gcc来自tgbus的源,版本是2009xxxx,而saurik的iphone-gcc版本(以及libgcc的版本)还是2008xxxx,删掉tgbus的源,重装,make,make install,哇哈哈,安装成功! 接下来有空得学习一下objective-C了。这个东西真的语法很诡异。没有GC的软件写起来也很痛苦。我怎么知道什么时候release/autorelease?

八月 24, 2010 · Shawn Ma

Hacking ipad (3)

Step 3. Installous 和 AppSync 前两天在weiphone看到了这个帖子,发现我做的这些别人都做过了,要是早点看到这个帖子就省好多事情了。weiphone看来是现在讨论苹果很火的地方,ipad软件板一天有一千多个帖子。 不过还是简述一下我的过程。Cydia里面可以找到Installous这个软件,装上之后就是一个软件列表,有点类似itunes,不过可以想象,这就是一个盗版的集合。我试着装了两个,结果安装的时候告诉我,Invalid IPA文件。IPA是苹果ipad软件的发布包,其实就是一个zip。搞了半天都不成功。又从weiphone当来别人的ipa,用iTunes导入,也不行。Google之,发现原来还要额外的破解。这就是AppSync这个破解,它在cydia.hackulo.us这个源可以找到。有趣的是Cydia还会警告说,这个网站含有盗版的内容…… AppSync其实就是覆盖现有的installd这一个文件,让他在安装软件的时候不检查数字签名。然后世界各地的同志们就用另外一些软件,把从app store买来的软件rip成IPA,就可以下载安装了。 很好,很强大。

八月 17, 2010 · Shawn Ma

读“哀悼日合法性四辩”

哀悼日合法性四辩 这篇文章解释了我心中的一个问题。一直觉得这种一刀切的全国纪念日有点问题,但是又说不上来。不过看完了就似乎明白了一些。政府认为自己占据了道德高点,对不赞成这种观点加以处罚,(比如参加娱乐活动应该会被惩罚),但是其实它并没有权力这么做。虽然我觉得地震也好,泥石流也好,受害人都是很值得同情和纪念的,但是每个人都有权利选择自己的方式。上至国务院依然如此,建立法制国家依然任重而道远。 “当我们默认政府设定哀悼日的实证法合法性时,对哀悼日合法性的挑战将来自于更高的正当性要求,在现代宪政国家,这将是一个合宪性问题,即一个国家的政府,是否可以强制或可以用怎样的方式依据某种道德规范强制它的公民。 “……以及,也许是最重要的,国民还没有普遍形成宽容、互相尊重个人选择的人格。如果我们以其它事件来作为考察出发点,同样会发现诸多类似问题。实际上,我们不能指望中国在一天之日就实现完全的行政法治与宪政,但我们至少可期希望历史前进的步伐不会停滞。今天,公民的地位和中国的传统政治道德哲学因为哀悼日的设立而发生了颠覆性的变化。虽然置于历史长河来看,这只不过是历史前进的一小步而已,其中暴露出来的问题说明,中国实现法治与宪政之路还很长。

八月 17, 2010 · Shawn Ma