2013

DD-WRT使用DNSMasq时设置静态DNS服务器的方法

几个月前为了能让路由器支持自定义DDNS服务,于是给自己的Buffalo刷了DD-WRT的第三方固件(Buffalo自带固件中也有DDNS,但是那几个服务提供商现在不是倒了就是转提供付费服务了…),版本:DD-WRT v24-sp2 (08/07/10) std。DDNS倒是支持了,但最近想修改路由器DHCP给客户端的DNS解析服务器地址却发现不那么管用了,一番折腾后,发现原因如下:
Continue reading…

使用图片方式自定义iOS导航栏navigationItem的backBarButtonItem

在做ViewControlller的navigationItem时,我们经常需要使用自定义的图片来替换系统默认的按钮样式,这点在对普通导航项,比如leftBarButtonItem或rightBarButtonItem来说还是比较简单的,通过UIBarButtonItem的setImage设置做好的图片按钮,然后再通过

[item setBackgroundImage:[UIImage new] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

去掉默认的背景image就可以了。但是如果是想自定义特殊的backBarButtonItem就比较麻烦了, Continue reading…

使用Uncrustify强化Xcode的源代码自动格式化功能

Xcode的源代码自动格式化比起Eclipse和Visual Studio(尤其是再挂上Visual Assist X)来说可以说是比较弱智,除了Structure里的简单Re-Indent外就没有什么能美化代码格式的方法了,今天由于实在忍受不了默认的大括号位置,决定找找有没有能代码格式美化的方法。

首先,看了下Xcode的偏好设置,果然没有像Eclipse那样自带设置代码格式的选项,于是开始查找有没有像AStyle之类的外挂工具能整合进Xcode用的,最后,幸运的发现了这个叫Uncrustify的工具,看网上很多人提到用这个配合Xcode进行源代码格式化处理。 Continue reading…

在Windows下删除Mac系统硬盘中的200mb EFI分区

把一块曾经装过Mac系统的硬盘挂到Win上用,在设备管理中可以删除默认200mb EFI分区以外的其他分区,虽然这200mb也不算多,但看着还是别扭,查了下发现可以通过如下操作进行删除

打开cmd命令行,运行命令diskpart,进入提示符后先执行list disk,然后看下显示出得列表中哪个编号的硬盘是这个包含EFI分区的,然后执行 select disk N,把N替换为刚才查到的对应磁盘的索引号,选中磁盘后,执行clean,清除掉整个磁盘的分区,然后再次打开磁盘管理工具,会提示进行初始化操作,选MBR还是GPT,选好后就可以使用完整硬盘空间了!

修复由于误改系统盘权限导致的白苹果Mac无法启动的问题

由于一次误改Mac系统盘根目录权限,导致重启时一直停在灰苹果界面,虽然前面的“转菊花”可以通过,但是始终不能看到桌面,解决方法如下:

按照Apple说明,开机时按Command+R进入修复模式,打开磁盘工具,修复了系统盘的权限和错误,以为就可以了,结果发现重启后问题依旧!再次查找资料, Continue reading…

更换域名dns解析为dnspod

在换用了各个godaddy提供的官方nsxx.domaincontrol.com后,终于决定还是换用dnspod的免费解析服务吧。之前也看到网上很多人说godaddy的nameserver在中国大陆被和谐之类的,但还是想先试试看,结果一段时间后,发现问题确实比较明显,域名经常不能解析,尤其是北方联通线路!希望这次换过后能一切正常了吧。

使用StartSSL免费SSL证书为SubversionEdge添加受信任的https访问

以前搭建SVN服务器时一直是用纯手动添加svnserve服务命令行的方式做的,最近发现CollabNet推出了一款叫做SubversionEdge的整合SVN服务器一键安装程序,试了一下还是很方便的,自带一个web方式的管理界面,查日志啊,创建资源库之类的操作都可以以可视化的方式进行,很是方便!

SubversionEdge默认安装的是http方式的SVN访问方式,当然也包含https方式访问,为了提高网络传输安全性,准备尝试一下带SSL的http访问方式,在设置中勾上https访问方式直接重启就可以了,但是浏览器访问的时候会提示SSL证书错误,这是因为SubversionEdge的https使用的是自带默认的SSL证书,域名和自己架设的对不上号,当然就证书错误了,下面要做的就是申请一个正式的SSL证书修正这个错误!

Continue reading…

如何转换Android打包用jks格式keystore证书为Air用pkcs12格式p12证书

由于受到Flash先进的Stage3D技术以及Unreal Epic Citadel演示的诱惑,决定试用一下Flash Builder的跨平台性能,顺利运行Starling 2D框架demo后决定打包上设备一试,遂即发现Air的跨平台导出Android安装包所需的签名证书居然是.p12格式,虽然这种“合体”证书在开发iOS时用到的还是蛮多的,但对Android开发来说还是头一次。
很明显,默认情况下原生Android开发生成的发布证书keystore不是.p12的格式,这时就需要转换一下,好在JDK中的一个叫keytool的工具可以完成此项工作,方法如下:
Continue reading…

辩证

男人嘴笨就和女人脸丑一样,换个角度想反而能给对方带来安全感。

[译]Android冰淇淋三明治ICS(4.0+)JNI局部引用的变化

译序:

这篇文章的内容实际是在我发现一个项目bug后寻找解决方案时找到的,当时项目原有target为8(ICS 4.0之前的2.X版本),在4.0+的S3上运行一切正常,而后target升级到14时再在S3上运行时就会出现类似如下的native crash:

05-13 14:07:13.139: E/dalvikvm(22265): JNI ERROR (app bug): attempt to use stale local reference 0x20d00001
05-13 14:07:13.139: E/dalvikvm(22265): VM aborting
05-13 14:07:13.139: A/libc(22265): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 22457 (Thread-1276)
05-13 14:07:13.239: I/DEBUG(1894): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-13 14:07:13.249: I/DEBUG(1894): Build fingerprint: ‘samsung/m0zc/m0chn:4.1.2/JZO54K/I9300ZCEMB1:user/release-keys’
05-13 14:07:13.249: I/DEBUG(1894): pid: 22265, tid: 22457, name: Thread-1276 >>> cn.android.app <<<
05-13 14:07:13.249: I/DEBUG(1894): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d
05-13 14:07:13.489: I/DEBUG(1894): r0 00000000 r1 00000000 r2 deadd00d r3 00000000
05-13 14:07:13.489: I/DEBUG(1894): r4 408cb1a8 r5 0000020c r6 20d00001 r7 fffff86c
05-13 14:07:13.489: I/DEBUG(1894): r8 5ee308dc r9 00004e58 sl fffff870 fp 5ee307b8
05-13 14:07:13.489: I/DEBUG(1894): ip 00004000 sp 5ee30540 lr 400f7c95 pc 40866e50 cpsr 60000030
05-13 14:07:13.489: I/DEBUG(1894): d0 3ff000003f800000 d1 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d2 0000000000000000 d3 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d4 0000000000000000 d5 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d6 0000000000000000 d7 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d8 0000000000000000 d9 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d10 0000000000000000 d11 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d12 0000000000000000 d13 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d14 0000000000000000 d15 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d16 0000000000000000 d17 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d18 0000000000000000 d19 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d20 0000000000000000 d21 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d22 0000000000000000 d23 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d24 0000000000000000 d25 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d26 0000000000000000 d27 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d28 0000000000000000 d29 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): d30 0000000000000000 d31 0000000000000000
05-13 14:07:13.489: I/DEBUG(1894): scr 60000010
05-13 14:07:13.499: I/DEBUG(1894): backtrace:
05-13 14:07:13.499: I/DEBUG(1894): #00 pc 00045e50 /system/lib/libdvm.so (dvmAbort+75)
05-13 14:07:13.499: I/DEBUG(1894): #01 pc 00028c3c /system/lib/libdvm.so (IndirectRefTable::get(void*) const+336)
05-13 14:07:13.499: I/DEBUG(1894): #02 pc 00049eeb /system/lib/libdvm.so (dvmDecodeIndirectRef(Thread*, _jobject*)+30)
05-13 14:07:13.499: I/DEBUG(1894): #03 pc 0004ca77 /system/lib/libdvm.so
05-13 14:07:13.499: I/DEBUG(1894): #04 pc 00653480 /data/data/cn.android.app/lib/libgameapp.so (CKSoundManager::LoadBGM(char const*)+56)

05-13 14:07:13.509: I/DEBUG(1894): memory map around fault addr deadd00d:
05-13 14:07:13.509: I/DEBUG(1894): be9ae000-be9cf000 [stack]
05-13 14:07:13.509: I/DEBUG(1894): (no map for address)
05-13 14:07:13.509: I/DEBUG(1894): ffff0000-ffff1000 [vectors]
05-13 14:07:13.674: I/DEBUG(1894): !@dumpstate -k -t -z -d -o /data/log/dumpstate_app_native -m 22265

Continue reading…