Pages

Sunday, December 30, 2012

VS2012升级Update1后Help报错解决方法

安装VS2012后,修改了Local store path。之后更新了Update1,再打开Help,报错:
A content file required by the Help Viewer is missing or has been corrupted.
搜索后发现以下解决方法:
编辑注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Help\v2.0\Catalogs\VisualStudio11
键值LocationPath被复原了,导致Help找不到catalog文件,把这个路径修改回正确的路径。

Wednesday, December 19, 2012

邮件发贴

测试一下邮件发贴。
向校长致敬。互联网的未来属于精通网络底层协议和编程技术的少数技术宅。向此目标而奋斗。

Wednesday, September 12, 2012

9月12日,索尼哥逆天了

盗官方图一张

几天前,屋脊开始流传全副黑卡RX1。谍照毫无PS痕迹,但是还是让人无法相信。今年五月刚刚发布了1寸底的RX100,在屋脊好评如潮。按照传统厂的策略,绝对没有如此大跃进的可能。然而今天RX1如期而至。只能感慨,索尼的规则就是不按规矩出牌。

虽然定价高达$2799,加上定焦不可换镜头,RX1注定是小众中的小众,拥有者不会太多。但RX1对整个影像市场格局的影响绝对超过了产品本身。从今天屋脊各论坛无一例外的都在热议RX1可以看出。

索尼哥给了大家两个信号:

一、全副即将全面普及,趋势在加速。DC已经是全副,Alpha单电也已经是全副了,奶昔全副也就是明年的事情。没有全副技术的要小心了。NC两家坐拥全副单反,暂时无忧,但是其他几家就难受了。最悲催的应该是P家了。别人家DC都是FF的了,自家的旗舰单反还是APS-C。看样子今年全副又是没戏。P家的归属也许就是放弃单反,专注于645中副市场中去了。而奥巴、松下M4/3后面的日子估计比较难受了。虽然和APS-C比,M43有不少优势,但是一旦变成M4/3与全副的对抗,则劣势就明显了。

二、单电要革单反的命。本次发布的机器都拥有CMOS整合相位对焦技术,单反对焦能力的优势即将消失。那么只有OVF与EVF的问题了。如果索尼能继而解决了EVF的缺陷,单反的消失也指日可待了。

回想上个月去北京,不小心进了大悦城索尼自营店。感叹索尼能拿的出手的东西已经不多了,黑卡RX100算一个,头戴3D视频算一个,其他的真没什么拿的出手的了。虽然摆了一堆A77和奶昔,但是和CN比毫无吸引力,一堆笔记本也无法和旁边的水果相提并论。今天RX1的发布算是逆天了(与之相比,A99都没人关注了)。

感谢索尼的不按常理出牌,加上今年尼康对感动牌的逆袭,明年的竞争会跟精彩。拭目以待。




Tuesday, June 26, 2012

VirtualBox+Oracle 11gR2 RAC一点心得

这两天在做高可用测试方案,其实是拿了别人以前的案例在改。一个用例实在搞不明白,是关于在RAC节点上运行alter system suspend的效果。由于没有可用的RAC环境可以试(就算有也不太敢玩),只好用虚拟机自己建一个做试验了。经过一个休息日和两个早上的努力,终于成功安装。下面记录一些注意事项。

安装手册

如果不熟悉的话,RAC安装还是挺复杂的,一个好的安装手册是必须的。我先找了官方的文档,写的太罗嗦,看到最后没心思细看了,遂搜了一篇中文文档,最后发现是翻译的ORACLE-BASE的这篇文章:
http://www.oracle-base.com/articles/11g/oracle-db-11gr2-rac-installation-on-oel5-using-virtualbox.php
看来以后装Oracle直接去ORACLE-BASE就好。

操作系统

RHEL兼容性好,但是不容易下到,也无法更新。用甲骨文自家的Oracle Linux就方便多了。首先兼容性没问题,且免费下载,更有免费的更新源。目前Oracle的官网不允许中国IP下载,我是用迅雷拖的,后来发现有公开的mirror,见此文:
https://wikis.oracle.com/display/oraclelinux/Downloading+Oracle+Linux

不建议用最新的6系列,没有asm相关包,我用的是5.8的版本以及uek内核。装完之后,可增加Oracle的公开免费YUM源,见:
http://public-yum.oracle.com/
更新到最新的uek内核也没有问题。

Oracle介质

操作系统版本很重要,Oracle介质的版本也很重要。及时是5.8,由于用了uek内核,也需要比较新的版本。
曾经也有Oracle support帐号,流畅下载最新版本,可惜最近不能用了,各种不方便。移动硬盘里存了一个以前下载的11.2.0.2,安装失败,查了一下是11.2.0.2和uek内核的兼容性问题,需要11.2.0.3。用版本号搜了半天也没搜到下载地址,后来用p+patch号,一搜一堆。例如11.2.0.3的patch号是10404530,用"p10404530"做关键字搜索,能搜到很多连接,用迅雷下载即可。
安装RAC需要1,2,3三个包。

关于虚拟机

VirtualBox虚拟机内存最好设2G,原来设置了1.5G,OUI提示内存不足,应该问题不大,但是为了保险还是改为了2G。一个Windows跑两个Linux虚拟机,磁盘是比较大的瓶颈。跑起来比较慢,只能学习用途了。有条件的可以上SSD,应该改善很大。



Wednesday, March 28, 2012

关于VLC 2.0中文字幕方块问题

曾经是坚定的K-Lite/MPC用户,因为进来OSX和Linux上VLC用的比较顺手,在Win下VLC用的越来越多,渐渐成为主力了。可惜中文字幕这块始终有问题,不是乱码就是白色方块。今天又捣鼓了一下,终于(凑合着)解决了。
先放狗搜了一下,关键还是字体,有人用OSX下的LiHei搞定了,但是我手上没有,也懒得去下。只能拿本机上的字体试。试了很多中文字体都无效,包括微软雅黑/文泉驿微黑/仿宋什么的。结果试着用日语字体Meiryo时,竟然成功了。还有繁体字体MingLiU也可以。但是Meiryo存在缺字的问题,MingLiU稍微全一些。虽然字体比较丑,但是总算凑合能用了。
还有一种说法,是设置字体的时候,不是从下拉列表选择,而是直接输入完整路径。这招试过貌似无效,也尝试过修改配置文件vlcrc,也是无效。目前只能用MingLiU凑合着用了。

Thursday, March 8, 2012

更新:关于谷歌市场与运营商

之前一直以为手机注册之后,运营商就定死了,现在看还是会变化的。因为在机器上的变化反映到WEB有个延时,之前没有发现。我的一个帐号注册时显示CHINA MOBILE,在修改系统属性的第二天变成T MOBILE了。另外一台机器在拿走了SIM卡,用WIFI上网之后,运营商变为空了。看来注册信息中一切都是可变的。因此,我原来想的创建两个帐号,分别设置成不同运营商的做法无法实现了。等手上的NOTE升级到ics后,还得想办法root。

另外验证了一个想法,不再需要Market Enabler这个程序了,直接设置系统属性就行了,甚至不需要自己写程序,用adb shell 加自带命令即可。

PS: 写这篇博客的时候,Android Market已经更新为Android Play了。

Sunday, February 26, 2012

Galaxy Note (2.3.6) 成功 Root


由于手上的N7000是欧版,ROM比较干净,自带Google Map/Market等谷歌服务,因此相比行货,root的需求不是那么强烈。不过root仍然是迟早的事情,最重要的一个需求就是伪装运营商。用CMCC的sim卡登录市场,就是一个悲剧,啥都装不了,搜不了。另外系统自带的OTA系统更新功能,需要先向三星注册,如果运营商是CMCC,直接失败。(传说中三月份放出ICS升级,三月之前搞定注册是必须的)

其实在入手N7000前,就已经在论坛下到了root程序了。但是考虑到root权限实在是大,对这种论坛上的东西不太放心,怕夹带私活,加上对神秘的root过程一直不太明白,就没急着去运行,而是分析了一下这堆东西。看明白了真不复杂,其核心就是一个可执行程序,利用了2.2/2.3系统中的一个名为zergRush的漏洞,达到获取root权限的目的。脚本的大致过程是:
  1. 用adb将zergrush push到/data/local/tmp目录
  2. 为zergush增加可执行权限,并执行
  3. zergush将自己复制为boosh,并通过漏洞以root权限执行 boosh
  4. boosh设置系统属性ro.kernel.qemu=1
  5. 重启adb,当adb发现 ro.kernel.qemu 属性为1时,以root权限运行
  6. PC端脚本重新连接上adb时,已经是root权限了
  7. 将busybox push到 /data/local/tmp,通过busybox的mount功能,将/system remount为可写
  8. 将busybox安装到/system/xbin
  9. 将superuser版本的su安装到/system/bin,设置权限为04755
  10. 安装superuser.apk
由于本人不是安全专业,对缓冲区溢出的原理和试用一窍不通,对作者和分析者只能膜拜了。zergRush的漏洞原理可参考http://blog.claudxiao.net/2011/10/zergrush/

Root的过程弄清楚了,但是对root包中这几个可执行文件心里可没底。好在发现zergRush竟然是开源的,代码可以直接在github中下载。那么就完全可以使用自己编译的zergrush程序了。而busybox也可以自己编译。至于supserUser.apk和su,虽然免费,但是不开源。最后分析了一下,装这两个程序,主要是为后续需要root权限的apk程序使用。而我所知道的需要SuperUser的程序,主要是用Root Explorer和Market Enabler。前者是收费的,还需要破解,更加危险。其实有了root权限,adb shell+busybox差不多可以替代了,就不需要装了。而Market Enabler,其实功能就是设置几个系统属性,甚至可以用adb shell的setprop来替代。因此大不了superuser.apk我不装了。

分析下来,难的还是编译zergrush,费了不少周折。一开始去研究NDK,还找了本书学习了半天。最后发现路子不对。unix staff需要编译AOSP项目。传说中编译AOSP需要16G内存,25G+6G空间。经过数天的折腾,终于成功编译成功AOSP的模拟器target。之后编译zergrush和busybox就容易了。

zergRush:
源码在 https://github.com/revolutionary/zergRush
在AOSP项目的development下建一个子目录zergrush,将zergRush.c复制进去,建一个Android.mk文件,在当前目录执行mm,可顺利编译出zergrush

busybox:
偷了一把懒,直接用了CyanogenMod版本的busybox,自带Android.mk
源码在 https://github.com/CyanogenMod/android_external_busybox
和上面一样,在development下建一个busybox目录,直接mm,成功编译出busybox。

我的root过程(当时忘记记录了,有些细节可能不太对):

  1. adb push zergrush /data/local/tmp
  2. adb shell chmod +x zergrush
  3. ./zergrush
  4. adb push busybox /data/local/tmp
  5. # busybox mount -o remount,rw /system
  6. # dd if=/data/local/tmp/busybox of=/system/xbin/busybox
  7. # chmod 04711 busybox
  8. adb push su /system/bin
  9. # chmod 04755 su

伪装T Mobile的脚本,在root权限的adb shell中执行:

setprop gsm.sim.operator.numeric "310260"
setprop gsm.operator.numeric "310260"
setprop gsm.sim.operator.iso-country "us"
setprop gsm.operator.iso-country "us"
setprop gsm.sim.operator.alpha "T-Mobile"
setprop gsm.operator.alpha "T-Mobile"

出自:http://android.modaco.com/topic/304693-market-enabler-workaround/



顺便说一下我手上系统的版本:
Android version
2.3.6
build number
GINGERBREAD.XXKKA