HP Veer & WebOS捣腾小记

我的Moto W205已经使用4年了,按键越来越不灵敏了,很长一段时间不能方便地发送信息,后来甚至连打电话也变得比较困难,是到了换个手机的时候了。之前考虑过小米,但出货太慢了,HTC有些贵说,更别提iPhone了,后来在公司里看到同事在玩一款小巧的手机,原来是Veer,基于WebOS操作系统,淘宝上有的卖,AT&T合约机解锁版,¥700左右,性价比超高的说,值得入手。于是上周末在淘宝上购买了HP Veer,和点金石一起才¥688(友情推荐:这应该是淘宝最低价吧 :-) )。这是我第一次在淘宝上购买实体物品,和店主简单了解下能否快速发货后,迅速下单购买,顺丰快递,周一签收。

周一

在森森童鞋的帮助下开始试用,系统基于煮机网制作的Rom,中文版,启动或重启时有个怪怪的Logo,一开始不了解,还以为WebOS原本就是那样呢。除了基本的通话(Phone)、短信(Messaging)、通讯录(Contract)、日历(Calendar)功能外,系统中已经安装有一些软件,如浏览器(Web)、邮件(Email)、音乐(Music)、PDF阅读器(PdfView)、软件管理器(Preware)、Google地图(Google Maps)等等,随便点开了一些应用,卡片式弹出打开,不了解WebOS的手势操作,不知道如何关闭程序、如何前进后退。由于系统没有安装中文输入法,还无法输入中文。

傍晚回家的路上,给朋友打了个电话,感觉通话质量不是很好。由于没有中文输入法,需要和房东交互发送信息,只好借用嘉乐童鞋的手机。回家连接Wifi,打开一些常用的网页,如Instapaper、RenRen、微博,将它们保存为书签方便以后查看。遗憾的是,Google Reader移动版无法访问,总是重定向到Google.cn,也许改天可以设置VPN就可以访问的说。

设置煮粥提醒闹铃和早晨起床闹铃。

试用点金石,感觉很不错。

周二

继续体验WebOS的功能,如通话功能、短信功能,期间误拨了好几次电话的说。捣腾着安装了WebOS微博、人人等应用,感觉还不错。下载了WebOSQuickInstall(WQI),使用它安装了一个小游戏后又通过Preware卸载掉了。用于不知道可以使用WQI加载.ipk文件直接进行安装,于是笨拙地将安装文件通过USB保存到Veer中,然后使用Internalz+Preware进行安装,太扯了点的说。

研究如何安装中文输入法,通过Web访问下载.ipk文件至手机中,然后使用Internalz+Preware进行安装。尝试了Wbee、爱微输入法、忠哲输入法。为了安装Wbee还尝试了使用VPS辅助下载文件。Wbee还要导入一个独特的文件来支持Veer内置的应用输入中文,使用WQI进行导入。

发现重启之后时间总是错乱,关闭状态下WebOS无法保持时间,手动调整了好多次,这点很不方便。

不过,整体感觉捣腾Veer不是件麻烦的事情,这可能与WebOS是基于我比较熟悉的Linux有一定的关系吧。

周三

在安装了微博、人人之后,感觉机子已经能够满足我目前的基本需求了,如果没有遇到问题,就可以很长时间不用捣腾了。但事与愿违,早上上班的路上,为了省电关闭了Wifi,下午由于Wiki无法启动,重启了一次,之后很多应用无法打开,应用一直停留在呼吸状态。搜索了下,可能是安装的补丁之间有冲突造成的,也可能是煮机网定制的Rom不稳定。森森建议刷机,说很简单,我还没刷过机就当尝鲜的说。

晚上回家后,煮机网上找资料,查找刷机教程,真的很简单的说,不过由于网速较慢花了很久才下载完官方Rom(不太信任第三方Rom,下载了也没用),实际刷机过程花了很少的时间。刷机成功后,重启,已经是AT&T的启动画面了,接着提示需要注册Palm账户,填写信息后,很久没有成功,猜测可能是我的SIM卡无法上网的原因,于是借了小蓝童鞋的SIM卡尝试,很快完成了注册过程。进入系统后,发现AT&T版本安装了一些我不需要的软件的,如Amazon MP3、YPmobile等,但没有找到卸载的地方,不过影响不大的说。

接着,在安装Preware时耗费了一些精力,下载了多次软件与安装包,还切换到了Windows平台下,仅仅是因为自己以为要在USB模式下使用WQI进行安装,其实是在充电模式下安装(不过,安装前记得要将系统切换为开发模式:搜索webos20090606,打开Developer Mode Enabler,开启开发模式后重启机器即可)。

再后来,安装了Internalz Pro、Evernote、忠哲输入法(免费版)、Weibo(免费版)、RenRen(功能不完善)、AiiQQ(功能不完善)、Translator(基于Google Translate)、Clock Sync(用于同步时间)。然后,创建新的启动页,重新排列已有的软件,将常用的不用的软件按照使用频率和类型进行归档整理。

周四

安装了Relego(ReadItLater的WebOS客户端)。

电池好像不是很给力的说,尤其实在开启Wiki以及一些应用的时候,以后使用的时候,得悠着点。

周五

安装了ClassicNote(一个简单的笔记软件)、HoshiDict(词典,支持StarDict词库)。了解了如何合并联系人的多个账户,可以为联系人设置特定的通知音乐,不过联系人无法进行中文搜索,这点带来了一些不便,想给某人大电话,有时需要翻半天目录的说,目前采用将常用的联系人标记为“收藏”来应付一下。

使用Tasks进行简单的GTD实践。

傍晚,和家人和朋友通了电话,这次通话质量还是可以的。

周六、周日

没有继续捣腾了。

小结

以上就是我这周捣腾HP Veer & WebOS的流水帐,目前Veer已经能够满足我的大部分需求了,比我的上一个手机强大了N倍的说,通话质量也还可以。后续我还会进行一些其他折腾,主要是学习与体验WebOS的功能、数据备份与回复和安装新的软件,届时将会结合阅读到的文章与实际体验来发布一些相关文章,也许还可以考虑自己捣腾着开发一些简单的App来玩的说。考虑过是否要办张3G卡,目前好像没有太多的必要,还是等能够更加熟练地使用Veer再说吧。

PS:HP Veer是我的第三部手机,希望可以用的久一些。另外两部是:第一部Nokia XXX(忘记了)在大一入学时购买,10月份就丢了;第二部Moto W205是在当时丢失手机后购买的,前前后后用了四年的说,终于退役了。

Update:发现虽然通讯录里无法搜索联系人,但打电话时却可以通过输入汉字查找联系人。

Gonna Sailing ;-)
==END==

我是个黑客吗?

前两天,阿敏亲戚公司的网站管理后台无法登陆了,老是提示“验证码错误”,于是向阿敏求助。不想写毕设论文的我,就去凑了个热闹。最终解决了问题,下面描述一下详细的过程:

1. 使用提供的帐号和密码在本地进行了多次尝试,遇到同样的错误。

2. 查看验证码图片的生成路径,猜测其验证码生成方式和我们自己做项目时生成验证码的方式是一样的,单独的一个文件,调用PHP的GD库生成包含随机字符串的图片,每次生成的时候将随机字符串存储在SESSION中,与用户提交表单后的验证码进行比对,相同的话继续执行登陆过程。

3. 怀疑是否是在存储随机字符串到SESSION中的时数据出错(我们此前曾遇到这个问题),但是我们没有托管空间的帐号,无法接触到代码,不可能进行调试验证猜测。

4. 尝试单独刷新验证码,输入前一次验证码的字符串,还是提示“验证码错误”。

5. 使用Firebug查看页面源码,发现该站点的登陆页面不是表单(Form),而是在点击登陆按钮的时候,通过JS获取相应字段的数据,然后发送Ajax请求执行登陆过程。

6. 查找处理登陆过程的JS代码,分析后感觉可以绕过其验证码的登陆过程,但是怎样绕过呢?于是将该页面下载到本地,修改对应的JS文件,屏蔽了其验证码验证的过程,尝试了几次登陆过程,最终还是失败。难道分析结果不对?

7. 在JS代码中添加alert语句,确认代码停止执行的位置,结果是,代码都执行了呀。

8. 意识到可以在Firebug中执行JS代码,于是将处理用户名和密码验证的JS代码复制过去执行,发现返回的数据有警告信息,大意是磁盘空间不够,SESSION文件无法写入,这应该就是症结所在了。

9. 获取站点的IP地址,咨询万网(网站托管在万网机房)的技术支持,的确是磁盘空间已满造成的,需要升级服务或者删除一些文件腾出些空间。

10. 因为站点很久没人维护,就花费了些时间获取万网会员的账户和密码,然后登陆进去。通过FTP访问并不能茶找到报错信息中显示的文件夹,但是既然是空间满了,阿敏决定删除写文件来释放些空间。

11. 找到一个比较大的文件,备份到本地,然后删除掉线上的数据,此时能够登陆进去了。阿敏和其亲戚交流了下,事情告一段落。

12. 我手痒,在Firebug下跑了下此前分析的可能绕过验证码验证过程的JS登陆过程。刚开始一直停留在登陆页面,以为自己的设想是错误的呢,看代码,发现是漏掉了一条跳转语句,添加后,成功登陆到后台。当然这是在我们知道用户名和密码的过程中。

13. 既然这样可以绕过,那么在不知道密码的情况下,写个脚本暴力破解是可能的。(突然想到也许该站点还存在注入漏洞,当时没有尝试,找时间可以尝试一下,不过我是不会做坏事的啦^_^)

以上就是这次事件的经过了,哈好,我是个黑客了吗?

另外,在登陆到空间管理后台时,我查看了下数据库数据,发现所有的密码都是明文存放的,网站的代码也是乱七八糟的,和我们初学PHP时的项目有的一拼的说。

我提议阿敏建议他亲戚对重新开发一下站点,外包给我,基于Drupal实现一个更优秀与健壮的站点,但是没有下文了。不过这确提醒了我,以后确实可以通过接些外包的活连连手,赚点外快的说。

PS:站点就不说出来了,免得他人过去进行破坏,不过很希望他们愿意进行再次开发,外快啊!!!
Gonna Sailing ;-)
==END==

移除Ubuntu 10.04的Ubuntu One

Ubuntu One是集成到Ubuntu 10.04里的一个文件同步服务,但是我没有学会使用,同时我还有更好的替代者Dropbox,那么还留着Ubuntu One做甚呢?!那么就果断移除它吧。

如果你从来没有曾经尝试使用过Ubuntu One,那么前两步操作可以省略掉,当然为了确保安全你最好将所有的流程过一遍。

1. 确认Ubuntu One没有运行。打开系统监视器(System->Administration->System Monitor),在Process标签页中,搜索“UbuntuOne”,选中并杀死这些进程。

2. 保证没有保存Ubuntu One的验证字段。打开密码管理器(Applications->Accessories->Passwords and Encryption Keys),如果存在与Ubuntu One相关的密码,删除它们。

3. 移除所有Ubuntu One使用到的文件夹。打开终端窗口(Applications->Accessories->Terminal),使用如下命令移除相应的文件夹:

rm –rf ~/.local/share/ubuntuone
rm –rf ~/.cache/ubuntuone
rm –rf ~/.config/ubuntuone
rm –rf ~/Ubuntu\ One

当然你也可以依次找到它们并手动删除。在Nautilus中,Ctrl-H显示隐藏文件夹,接下来,你知道的。

4. 彻底删除所有与Ubuntu One相关的包。

sudo apt-get purge ubuntuone-client* python-ubuntuone-storage*

好了,以上就是彻底删除Ubuntu One的过程!
via How-To Geek

Gonna Sailing ;-)
==END==

Ubuntu下安装Git以及Git帮助手册

Git简介

Git是一个分布式版本控制系统,对应的是SVN、CVS这样的集中式版本控制系统。

虽然知晓并安装Git是很久以前的事情了,但是我却没怎么用过,一直使用的是SVN。在《Pro Git》中看到的Git的好处有:

  • 本地完整地镜像了代码仓库的所有内容,如果服务器出现故障,可以使用任何一个本地镜像进行恢复。而使用SVN,如果没有对服务器端的数据进行安全悲愤,出现故障后,以前的所有记录数据将会丢失,无法恢复。
  • 本地完整地镜像了代码仓库的所有内容,当由于某些原因,不能连接到中心服务器的时候,你可以在本地继续工作、提交代码,等到网络连通,再将更新同步到中心服务器。

当然还有其他的好处,但是我没有体验过,无法很好得描述,等以后有经验了在补充吧。

安装Git

Git 的工作需要调用 curl,zlib,openssl,expat,libiconv 等库的代码,所以需要先安装这些依赖工具。

apt-get install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

从源代码安装

Git官方站点下载最新的源代码,如当前最新版 1.7.4.4
编译安装命令

tar -zxf git-1.7.4.4.tar.gz
cd git-1.7.4.4
make prefix=/usr/local all
sudo make prefix=/usr/local install

二进制包安装

这种方法安装方便,我使用的就是这个方法,但往往不是最新版本的Git,如我的版本就是1.7.2.1。

apt-get install git-core

安装Git帮助手册

使用二进制包安装后,发现并没有安装Git的帮助手册,源代码安装后是否有类似的情形就不知道了,如果有也可以用以下的方法进行安装。
使用git --version查看自己安装的Git版本。
然后现在对应的帮助手册,并解压到相应的位置:

curl -O "http://kernel.org/pub/software/scm/git/git-manpages-1.7.2.1.tar.bz2"
sudo tar xjv -C /usr/local/share/man -f git-manpages-1.7.2.1.tar.bz2

你还可以复制执行下面的脚本,轻松搞定手册安装:

cd /tmp
curl -O "http://kernel.org/pub/software/scm/git/git-manpages-`git --version | awk '{print $3}'`.tar.bz2"
sudo mkdir -p /usr/local/share/man
sudo tar xjv -C /usr/local/share/man -f git-manpages-`git --version | awk '{print $3}'`.tar.bz2

Git使用的其他注意事项

使用Git初始化项目的时候,你可能会遇到如下的警告信息:

warning: templates not found /usr/local/share/git-core/templates

原因是由于模版目录的读写权限造成的,使用如下命令变更模版目录的读写权限即可:

sudo chomd -R 755 /usr/local/share/git-core/templates/

参考链接:

安装Git帮助手册

Pro Git 是一本免费的Git书籍,有中文版本

Gonna Sailing ;-)
==END==

创建CSS粘性页脚

问题:使用CSS/HTML实现的页面的页脚不能够一直停留在页面底部,当页面内容较少时,页脚就会显示在屏幕的中部,而我希望当页面内容较少的时候,页脚能够一直停留在页面底部,同时当页面内容较多时,页脚正常状态显示。
解决方案:CSS粘性页脚(CSS Sticky Footer)。

以下是我从网上找到的几个解决方案,感觉可能大同小异,但目前我对CSS也是一知半解,就都列出来吧。

  1. Making Your Footer Stay Put With CSS
  2. Make the Footer Stick to the Bottom of a Page
  3. CSS Making Your Footer Stay at the Bottom
  4. How to keep footers at the bottom of the page

其中第二个不需要使用额外的文件就能够兼容IE6,我想其使用的方法应该可以应用到其他的解决方案中(未验证)。相对来说,我更喜欢第四个解决方案。

Gonna Sailing ;-)
==END==