几个月前为了能让路由器支持自定义DDNS服务,于是给自己的Buffalo刷了DD-WRT的第三方固件(Buffalo自带固件中也有DDNS,但是那几个服务提供商现在不是倒了就是转提供付费服务了…),版本:DD-WRT v24-sp2 (08/07/10) std。DDNS倒是支持了,但最近想修改路由器DHCP给客户端的DNS解析服务器地址却发现不那么管用了,一番折腾后,发现原因如下:
Continue reading…
2013
使用图片方式自定义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…
修复由于误改系统盘权限导致的白苹果Mac无法启动的问题
由于一次误改Mac系统盘根目录权限,导致重启时一直停在灰苹果界面,虽然前面的“转菊花”可以通过,但是始终不能看到桌面,解决方法如下:
按照Apple说明,开机时按Command+R进入修复模式,打开磁盘工具,修复了系统盘的权限和错误,以为就可以了,结果发现重启后问题依旧!再次查找资料, Continue reading…
使用StartSSL免费SSL证书为SubversionEdge添加受信任的https访问
以前搭建SVN服务器时一直是用纯手动添加svnserve服务命令行的方式做的,最近发现CollabNet推出了一款叫做SubversionEdge的整合SVN服务器一键安装程序,试了一下还是很方便的,自带一个web方式的管理界面,查日志啊,创建资源库之类的操作都可以以可视化的方式进行,很是方便!
SubversionEdge默认安装的是http方式的SVN访问方式,当然也包含https方式访问,为了提高网络传输安全性,准备尝试一下带SSL的http访问方式,在设置中勾上https访问方式直接重启就可以了,但是浏览器访问的时候会提示SSL证书错误,这是因为SubversionEdge的https使用的是自带默认的SSL证书,域名和自己架设的对不上号,当然就证书错误了,下面要做的就是申请一个正式的SSL证书修正这个错误!
如何转换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