Home mail me! Syndicate this site using RSS

Archive for Technical


Install Chinese Input Method for ADP1

版权申明:本文旨在提供一种安装输入法的方法,其中涉及到一些文件归HTC所有。

将ADP1升级到v1.5版本后,依然没有中文输入法,于是从网友定制的ROM中提取了HTC_CIME安装包及所需的库文件(支持手写输入、拼音、笔画以及2种台湾常用的输入法),以下是安装步骤(前提条件是已经安装好Android SDK以及ADP1手机驱动程序):

将手机通过USB线与PC机连接
 
E:\software\android\cime>adb devices
List of devices attached
HT93LLZ00193    device
 
E:\software\android\cime>adb shell
$ mount
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
<strong>/dev/block/mtdblock3 /system yaffs2 ro 0 0</strong>
/dev/block/mtdblock5 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock4 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block//vold/179:1 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1000,fmask=0711,dmask=0700,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8 0 0
 
从加粗的那行文字可以看出,手机上的/system目录只有只读权限,所以我们需要remount为可读写权限,以便将文件复制到/system/lib目录下。
 
$ su
我们需要su 为root用户,否则没有权限执行下面的命令:
 
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
# mount
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
<strong>/dev/block/mtdblock3 /system yaffs2 rw 0 0</strong>
/dev/block/mtdblock5 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock4 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block//vold/179:1 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1000,fmask=0711,dmask=0700,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8 0 0
 
现在/system目录已经具备可读写权限
 
# chmod 777 /system/lib
# mkdir /system/lib/zi
# exit
$ exit
 
现在已经退出手机SHELL环境,接下来复制HTC_CIME所需要的库文件到手机的/system/lib/目录下。
 
E:\software\android\cime>adb push lib/libcimet9.so /system/lib/libcimet9.so
E:\software\android\cime>adb push lib/libimezi.so /system/lib/libimezi.so
E:\software\android\cime>adb push lib/libpphwr.so /system/lib/libpphwr.so
E:\software\android\cime>adb push lib/zi/Zi8DatPYP_CN.z8d /system/lib/zi/Zi8DatPYP_CN.z8d
E:\software\android\cime>adb push lib/zi/Zi8DatPYS_CN.z8d /system/lib/zi/Zi8DatPYS_CN.z8d
E:\software\android\cime>adb push lib/zi/Zi8DatZHA_CN.z8d /system/lib/zi/Zi8DatZHA_CN.z8d
E:\software\android\cime>adb push lib/zi/Zi8DatZHA_HK.z8d /system/lib/zi/Zi8DatZHA_HK.z8d
E:\software\android\cime>adb push lib/zi/Zi8DatZHA_TW.z8d /system/lib/zi/Zi8DatZHA_TW.z8d
E:\software\android\cime>adb push lib/zi/Zi8DatZYP_TW.z8d /system/lib/zi/Zi8DatZYP_TW.z8d
E:\software\android\cime>adb push lib/zi/Zi8DatZYS_TW.z8d /system/lib/zi/Zi8DatZYS_TW.z8d
 
开始安装HTC_CIME中文输入法
E:\software\android\cime>adb install HTC_CIME.apk
 
至此中文输入法已经安装好了,接下来执行恢复/system/lib目录权限为只读,并重启系统。
E:\software\android\cime>adb shell
$ sync
$ su
# chmod 755 /system/lib
# chmod 755 /system/lib/zi
# reboot

激活中文输入法
进入Setting,选择Locale & text,如下图所示:
adp1_cime_locale
adp1_cime_select
adp1_cime_selected
adp1_cime_select_input
adp1_cime_input_list
Handwriting – 手写输入法
ZhuYin – 注音输入法
CangJie – 仓颉输入法
PinYin – 拼音输入法
Stroke – 笔画输入法

效果图:
adp1_cime_stroke
adp1_cime_handwriting
adp1_cime_pinyin

下载:Click here to download HTC_CIME

Android Dev Phone 1 使用手记

adp1_v15_home
入手ADP1也有半个多月时间了,从美国寄到中国也花了将近半个月时间,可谓一波三折。

由于ADP1不针对中国开放,也没有朋友在那边,结果就想到通过OneNow网站代购。

因为注册Android开发者帐号必须先开通Google Checkout,但可恶的是Google Checkout也没对中国开放,然后就随便填了个香港的地址,绑定自己的信用卡,支付了注册Android的25美金后,结果第2天Google Checkout帐号就被封了,值得庆幸的是Android帐号没被封。

接下去就是注册OneNow帐号,然后在http://market.android.com上下订单,收件地址就填OneNow提供的美国地址,选择的是免邮费的平邮,所以寄到OneNow提供的美国地址也花了5天时间。

在OneNow下单之前就咨询过在线客服,他们说上海海关很严格,超过1000RMB就会被扣留,如果没有过去一个月去过美国的出境记录,包裹就会被退回,所以只能先寄到深圳的同学那,第2天,手机从OneNow寄出了,选了快递,花了46.33刀,4天时间就到深圳了,结果在深圳海关清关延误了4天时间,还以为被扣留了呢,同学收到手机的时候,向DHL的工作人员支付了150元关税。

手机到手的那天就把系统升级到v1.1版,输入中文比较麻烦,在网上也看到很多自制的cupcake版本,对中文的支持几乎很完美了,所以就一直期待官方的v1.5版能早点出来,昨天收到消息,HTC官方已放出v1.5版本,立马就刷了新系统。

下面就来讲讲刷系统的步骤:

刷系统之前,当然得到HTC官方下载v1.5的固件(http://www.htc.com/www/support/android/adp.html)

刷系统有2种方法:fast boot和recovery-image,个人觉得recovery-image方法要简单点,不过话说回来,不管采用哪种方法,都得先刷Radio固件,升级或降级都是如此,下面就来讲讲第2种方法:

一、准备工作
获取adb工具,这个文件包含在Android SDK,也就是说需要先下载Android SDK,如果是WIN系统,还需要给手机装USB驱动,驱动程序也包含在Android SDK。解压后,将该目录下的tools目录加到PATH环境变量中。

二、下载v1.5固件
本文介绍的方法中,只需要下载ota-radio-2_22_19_26I.zip 和 signed-dream_devphone-ota-147201.zip 这2个文件即可。

三、升级Radio固件
不管升级或降级系统,这个步骤都是必须的。

1) 确保SD卡在手机里;
2) 开启手机,并通过USB线与电脑连接;
3) 执行下面的命令,确保Android驱动已经安装正确;
adb devices

如果看不到下面的输出,说明驱动程序没有安装正确。

* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
HT93LLZ00193 device

4) 将Radio固件PUSH到SD卡上,并重命名为update.zip;
adb push ota-radio-2_22_19_26I.zip /sdcard/update.zip

执行后,会输出类似下面的内容:
662 KB/s (0 bytes in 9181622.013s)

5) 为了确保Radio固件完整的拷贝到SD卡上,也为了接下去的升级工作能够顺利完成,需要执行以下命令。
adb shell sync

6) 现在关闭手机,然后按HOME和挂机键重新开启手机,直到出现一个!图标,如下图所示:
adp1_v15_recovery

7) 打开键盘,按住 Alt + l 键,开启日志显示,如下图所示:
adp1_v15_alt_l

8) 按 Alt + s 键,开始执行升级,如下图所示:
adp1_v15_alt_s

9) 升级完之后,屏幕会提示按 Home + Back 键重启系统,如下图所示:
adp1_v15_home_back

10) 重启的速度有点慢,需要耐心等待一下,进入系统后,通过Settting -> About Phone里可以看到BaseBand Version已变更为2.22.19.26I,如下图所示,说明Radio固件已经升级成功。
adp1_v15_basehand

四、升级Recovery Image
升级步骤与升级Radio固件一样,前提是Radio固件已经刷新成功。

1) 确保SD卡在手机里;
2) 开启手机,并通过USB线与电脑连接;
3) 执行下面的命令,确保Android驱动已经安装正确;
adb devices

如果看不到下面的输出,说明驱动程序没有安装正确。
List of devices attached
HT93LLZ00193 device

4) 将Recovery Image PUSH到SD卡上,并重命名为update.zip。
adb push signed-dream_devphone-ota-147201.zip /sdcard/update.zip

5) 执行adb shell sync确保拷贝完整。

6) 现在关闭手机,然后按HOME和挂机键重新开启手机,直到出现一个!图标,如下图所示:
adp1_v15_recovery

7) 打开键盘,按住 Alt + l 键,开启日志显示,如下图所示:
adp1_v15_alt_l

8) 按 Alt + s 键,开始执行升级,如下图所示:
adp1_v15_alt_s

9) 升级完之后,屏幕会提示按 Home + Back 键重启系统,如下图所示:
adp1_v15_home_back2

10) 重启后,可以看到开机LOGO已经变掉,如下图所示:
adp1_v15_logo

11) 进入系统后,通过Settting -> About Phone里可以看到Firmware version已变更为1.5,如下图所示,说明刷机成功。
adp1_v15_firmware

刷机感言:刷完v1.5的系统后,发现语言还是只有English,中文输入法还是没有,看来不对中国开放的机子,要想使用中文输入法就别指望官方版本了,只能自己整。

短域名在IE中无法设置子域名COOKIE的BUG

对于域名投资者来说,当然是越短越好,然而对于IE来说,小于3位的域名就无法设置子域名COOKIE了。

最近就碰到这个BUG了,一直想不通IE为什么会出这种BUG,对于其他浏览器来说一点问题都没。

假设2台服务器如下:
127.0.0.1 www.6.cn
127.0.0.1 bbs.6.cn

在www.6.cn这台服务器上有个aa.php文件,源文件如下:

<?php
setcookie("aa", "bb", time()+3600, "/", ".6.cn");
echo '<pre>';
print_r($_COOKIE);
?>

在bbs.6.cn这台服务器上有个bb.php文件,源文件如下:

<?php
echo '<pre>';
print_r($_COOKIE);
?>

这2个程序的作用就是能使子域名共享COOKIE,结果却因为这个域名小于3位,瞎忙活了1天,如果域名换成3位或3位以上,就一点问题都没,比如把6.cn换成123.cn就很正常。

暂时还没有找到解决办法,先留个帖子,看看以后是否有时间解决。

参考资料:http://curl.haxx.se/rfc/cookie_spec.html

Only hosts within the specified domain can set a cookie for a domain and domains must have at least two (2) or three (3) periods in them to prevent domains of the form: “.com”, “.edu”, and “va.us”. Any domain that fails within one of the seven special top level domains listed below only require two periods. Any other domain requires at least three. The seven special top level domains are: “COM”, “EDU”, “NET”, “ORG”, “GOV”, “MIL”, and “INT”.

解决IE中IFRAME无法保留SESSION的问题

最近用C++开发一个基于WebBrowser的Application,界面都是在一个IFRAME里展示,由于需要会员登录模块,结果却出现在IFRAME里无法保留SESSION的问题,上MICROSOFT官方找到了答案:

@header(’P3P: CP=”CAO PSA OUR”‘);

一句代码搞定!

P3P是微软的隐私策略,通常情况下跨域IFRAME或者FRAMESET默认采用的隐私策略为“中”,该级别的策略拒绝保留SESSION。CAO PSA OUR则意味着你同意跨域保留SESSION。

详细资料可以查看官方文档:http://support.microsoft.com/kb/323752

Free UML 2 tool box – BOUML

BOUML is a free UML 2 tool box (under development) allowing you to specify and generate code in C++, Java, Idl, Php and Python.

BOUML runs under Unix/Linux/Solaris, MacOS X(Power PC and Intel) and Windows.

BOUML is very fast and doesn’t require much memory to manage several thousands of classes, see benchmark.

BOUML is extensible, and the external tools named plug-outs can be written in C++ or Java, using BOUML for their definition as any other program. The code generators and reverses are ones of the pre-defined plug-outs included in the BOUML distribution. See features.

BOUML是一个免费的UML2.0工具(还在开发中),可以生成C++, JAVA, IDL, PHP, Python的代码。

BOUML是一款跨平台的程序,支持Unix/Linux/Solaris, MacOS X(Power PC and Intel) 以及 Windows。

BOML执行速度非常快,而且不需要占用太多的内存就可以管理成百上千个类,具体可以看官方的性能评测

官方网址:http://bouml.free.fr
当前版本:v4.5,发布于2008年8月26日
下载地址:http://bouml.free.fr/download.html

1146 – Table ‘mysql.proc’ doesn’t exist

如果MySQL升级到新的版本后,出现”1146 – Table ‘mysql.proc’ doesn’t exist”的错误,那么还需要升级一下系统表,可使用MySQL自带的mysql_fix_privilege_tables或mysql_upgrade命令来修复一下.

注:自5.0.19版本起,mysql_fix_privilege_tables已经被mysql_upgrade命令代替!

相关信息可访问:http://dev.mysql.com/doc/refman/5.0/en/mysql-fix-privilege-tables.html

Features in PHP 5.3

8月1日,PHP5.3的第一个Alpha发布了,粗一看,改动的还不少啊,这下终于支持Namespace命名空间了,而我们需要做的尽量多做测试,哈哈。

具体的一些新功能可以查看此链接:http://cvs.php.net/viewvc.cgi/php-src/NEWS?view=markup&pathrev=PHP_5_3

MySQL Sandbox

如果想在一台服务器上安装多个MySQL服务的话,MySQL Sandbox是个不错的选择,相比较MySQL自带的mysqld_multi而言要方便不少。

mysqld_multi方式需要安装多次,并且需要对每个服务进行相应的配置,而MySQL Sandbox一个命令即可搞定。

这里有个MySQL Sandbox的PPT介绍:http://datacharmer.org/presentations/mysqluniv_2008/sandbox_2_0.html

感兴趣的朋友可以访问官方网站:https://launchpad.net/mysql-sandbox

High Availability with DRBD and Heartbeat Presentation

这是Chris Barber 发布在Twin Cities MySQL and PHP User Group上的演讲,演讲内容很不错,关于采用DRBD和Heartbeat结束架构的高可用性集群,非常适合数据库应用,感兴趣的朋友可以看看。

原文地址:http://www.cb1inc.com/2008/06/10/high-availability-with-drbd-and-heartbeat-presentation

Sofee Domain Typo Generator released

Sofee Domain Typo Generator will take a domain name you specify and generator a list of suggestions of likely human mis-spellings and mis-typings for that domain.

The typo methods we do are:

  • Wrong key (QWERTY keyboard) typos (e.g. google.com -> goofle.com)
  • Missed character typos (e.g. google.com -> goole.com)
  • Transposed character typos (e.g. google.com -> goolge.com)
  • Double character typos (e.g. google.com -> googgle.com)
  • Look alikes typos (e.g. google.com -> g00gle.com)

Sofee Domain Typo Generator Screenshot

Click here for detail.


Next Page »