智器(SmartQ)V5 使用半月杂记

2010/02/26 | 23:45 | 分类:IT杂谈 | 标签: | 325次阅读

  年前购入一台 智器(SmartQ)V5,使用已有半月。
  我购买 MID 的目的比较明确:折腾为主,实用为辅。
  ● 折腾方面,自然要安装通用的、开放的操作系统,既方便安装应用,也方便开发调试。同时需要提供简单的刷写机制以便在系统级做点文章。同时我对 Android 系统挺有兴趣,也想借此了解学习一下。
  ● 实用方面,主要是在外出或长途旅行时方便上网。WiFi 当然是 MID 的标配,不过国情所限,WiFi 的羽翼在绝大多数户外场合无处施展。因此,3G 网络成为我考虑的重要因素。
  最后是价格,1500 元之内。如果不考虑价格,确实有不少基于 Atom 的、内置 3G 模块的 MID 或 UMPC 可供选择。但我的原则还是应将经济因素列为硬性指标。
  基于这些限制,我最终选择了国产非知名品牌的智器 V5。
智器(SmartQ)V5 使用半月杂记
  我最早了解智器这个品牌是在山寨机网,因此智器给我留下的第一印象便是山寨厂商。这次选机时才发现智器原来是一家有地址、有电话、有网站的相对正规的公司。智器 V5 相比同类产品性价比很高:1000 元出头,配置 ARM11 600MHz 处理器、256MB 内存、2G 闪存、4.3 寸 WVGA 触屏、WiFi、蓝牙、USB(Host Mode & On-The-Go)、HDMI、SD(SDHC),预装 Ubuntu、Windows CE、Android 三系统。虽然没有内置 3G 模块,但可以通过 USB 连接 3G 上网卡,应急时也可使用蓝牙连接手机 GPRS 上网。三个系统各取所长,实用性与可折腾性得到平衡。
  不过这个价位的产品,缺点还是有不少。在购买之前我就已经从其论坛上做了仔细了解:产品做工不佳,尤其是 SD 卡插口无法合上的盖子以及手感明显不一的几个按键。单点触摸的电阻屏,不利于保护屏幕,也无法享受到 Android 的一些高级用户体验。续航能力有限,2000mAh 的电池用来上网也就 2、3 小时,而看视频的话几乎不能保证一部电影的时间。操作系统配置粗糙,预装软件杂而不精,响应速度慢,感觉很“卡”,等等。对于做工的问题,国产小品牌就不要强求了,我们要体谅中国的制造业。电阻屏的问题,主要还是受限于我所划定的价位,贴个膜防划伤吧。电池的问题,看视频不是我的主要需求,长途旅行时可以使用外置电池盒,也将就着吧。至于软件配置和响应速度,我倒认为不是问题。系统和软件是可以配置修改的,而像我这种在 Nokia 6600 上运行一堆后台程序,在五年前买的笔记本上跑 Windows 7 或 Compiz 的用户,对“卡”的敏感度远低于潮人们。
  购入之后,我自然为之选配了 3G 上网卡与外置充电电池(这些也涵盖于 1500 元预算之内)。3G 选择联通 WCDMA,主要还是考虑过年回家的网络覆盖情况。4400mAh 外置充电电池可以保证我 30 小时左右的车程不至于太无聊(充电线 DIY)。注意照片中还有一个 USB 有线网卡,这个遗留资产遇到智器时还是能够发挥一点余热的,特别是在没有 WiFi 覆盖的宿舍里。
  【实用场景一】 回家的 T69 列车上,用智器上网兼测试铁路沿线的 WCDMA 覆盖。京广、陇海沿线,有城镇乡村的地方半数以上能够搜到 WCDMA 信号。列车行驶中网络连接畅通,即使信号一时中断,也能自动恢复,无需重新拨号。而兰新线以及返程 K44 所走的包兰、京包沿线的情况则要差一些,当然这一线的城镇密度也远低于东部地区。
  【实用场景二】 打的从嘉峪关到酒泉的路上,嘉峪关本地的司机不甚清楚我家的所在的小区怎么走(事实上在酒泉居住总时间不到半年的我,也不清楚应该怎么走)。这时我打开智器,联网秀出地图,司机随即确定了路线。
  【实用场景三】 边从电视上看春晚,边从智器上看推友的热议。在看到推友贴出的刘谦魔术揭秘视频链接时,旋即点击播放。
  作为成天与 Linux、Windows 及 Symbian 打交道的用户,使用智器一项重要体会就是 Android 的用户体验。在单点触摸、无重力感应、无 GPS、无电话功能的设备上,Android 的易用性依然远优于并非为掌上设备定制开发的 Ubuntu 和 Windows CE。特别是移动版的 Google 应用令我这个坚守了 S60v2 五年的用户眼前一亮(虽然玩过无数同学的 iPhone,但手里拿着一个属于自己的设备,这种“指”点江山、“掌”控天下的感觉才算最得意的)。
  至于折腾场景,等闲下来再着手研究。从智器论坛上看,还是有不少闲人在智器的早期产品上玩出些花样的。权当它是一个功能完善的 ARM 开发板吧。

解决 IPv6 路由发现协议得到错误地址的问题

2010/01/15 | 23:59 | 分类:Windows应用 | 标签: | 296次阅读

  IPv6 环境一般使用 DHCPv6ICMPv6 协议自动配置网络参数,网关配置错误或多个网关的存在会导致客户端得到错误或冲突的配置参数。最近在我使用的 IPv6 环境中,就出现了网关同时给一个客户端分配多组 IPv6 地址、两个 IPv6 路由的问题,这使得路由发生混乱,IPv6 网络无法连通。由于种种原因,网管一直未能解决此问题,我们只好试图在客户端动动脑筋。
  按照 IPv4 的经验,如果 DHCP 有问题,直接手工配置静态地址即可。但我们的环境中,即使手工配置了静态的 IPv6 地址和路由,发现没过多久又会恢复原状。看来还是有一定的自动配置机制在作祟。经搜索得知,这是 ICMPv6 的路由发现(Router Discovery)特性,系统会根据其收到的 ICMPv6 包自动修改 IPv6 配置。下面要做的就是过滤与路由发现相关的包。
  在 Linux 下,可以使用 ip6tables(即 iptables 的 IPv6 版本)过滤相应的 ICMPv6 包:

  1. /sbin/ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -j DROP

  可以将上述命令加入 /etc/rc.local。或使用 ip6tables-save 导出到文件,在启动网络前使用 ip6tables-restore 恢复。
  在 Windows Vista/7 或 Windows Server 2008 以后的版本,可以使用这条命令:

  1. netsh interface ipv6 set interface "[你的网卡名称,比如 Local Area Connection]" routerdiscovery=disable

  执行一次之后持久生效,重启后不用再次执行。
  而在 Windows XP 下,目前还没有发现很好的办法。XP 对 IPv6 的支持仅仅是一个“预发行版”,实现并不完善。手工配置 IPv6 地址和路由只能使用“ipv6 adu”、“ipv6 rtu”命令,而没有图形界面支持;虽然 XP SP2 以后 Windows 防火墙加入了 IPv6 支持,但仍不支持 ICMPv6。我没有查到 XP 下屏蔽路由发现协议的标准方法,目前可行的办法是使用支持 ICMPv6 的第三方防火墙软件,比如 ZONEALARM Internet Security 8 以上版本。

Windows Live Messenger drag & drop 小技巧

2009/06/16 | 21:35 | 分类:Windows应用 | 标签: | 603次阅读

  无意中发现 Windows Live Messenger 的一个小技巧:把联系人拖放到 gtalk 或 Fetion、Baidu Hi 的聊天窗口本文输入框中,相应区域就会显示这个联系人的 Live ID(Email)。其实 Windows 的 drag & drop 的原理挺简单的,但 Live Messenger 使用文本格式的 drag & drop 数据,这倒是增强了程序的互操作性。Fetion 和 Baidu Hi 的联系人也是可以 drag & drop 的,但它们使用的是封装过的对象,所以不能把账号什么的以文本形式拖放到别的软件的窗口中。有趣的是,Live Messenger 不能把联系人的 Live ID 拖放到自身的聊天窗口中,如果拖放到非文本区域代表的是加入多人会话。
  顺手写了一个查看 drag & drop 信息的小程序(需要安装 .Net Framework 3.5),含 C# 源代码,需要的朋友可以下载:
  http://files.linjian.org/dotNet/dragdroppad.zip
  http://www.linjian.cn/files/dotNet/dragdroppad.zip
Windows Live Messenger drag & drop 小技巧

试用Windows的UNIX/POSIX子系统(SUA)

2009/05/04 | 20:07 | 分类:Windows应用 | 标签: | 1,616次阅读

  以前研究Windows的基本概念时,我就知道它有一个POSIX子系统,可以在Windows下编译运行使用了POSIX库的程序。但这一直停留在书本概念层面,直到昨天看到Jeep同学的Windows系统上安装了一个Subsystem for UNIX-based Applications时,我便决定也安装试用一下。
  有关Windows的POSIX子系统是什么、怎么用的问题,可以参考Wikipedia或Microsoft TechNet [英文][中文]上的介绍。它历经了NT时代的Microsoft POSIX subsystem、XP/2000时代的Microsoft Windows Services for UNIX (SFU)以及2003 R2/Vista/2008时代的Subsystem for UNIX-based Applications (SUA)等版本,对POSIX标准的支持日臻完善。我的系统是来自MSDNAA/IEEE的Windows Server 2008,自然要使用最新版的SUA。至于SUA和cygwin在实现机理和功能性能上有什么区别,我还没有仔细研究。但从直观感觉上,Windows原生支持的SUA是比cygwin快一点儿;按照Wikipedia上的这个说法,cygwin是对POSIX是“partial”兼容,而SFU/SUA则是“full”兼容。
  很多人安装SUA的目的并不是要向Windows移植什么重要的UNIX/Linux应用,有时候我们仅仅是为了在Windows中使用一个类UNIX的Shell以及丰富的GNU utilities,毕竟这类久经考验的命令行工具比Windows Command Prompt的那些命令好使很多。对于工作环境要求在Windows和Linux间来来回回切换的人们,也省得敲错命令。安装SUA之后,预装的Shell是C Shell和Korn Shell,还安装了包括vi、gcc在内的300多个命令行工具。同时,Windows的Path环境变量中自动添加了SUA相关目录,这样在Windows Command Prompt和Power Shell中也可以使用很多GNU utilities了。当然,UNIX Shell的内部命令是不可以在这里使用的。此外,在Power Shell中,Power Shell命令别名(如ls、cp)会优先于同名的GNU utilities调用。总之,使用SUA或cygwin这类UNIX Shell+GNU utilities的模拟环境,相比手工添加的“容错”命令或者GnuWin32这类独立命令级的移植要“真实”和顺手得多,但缺点就是体积庞大。
  为了检验SUA的能力,我拿我相对熟悉的GNU bash做了实验。从官方下载bash-4.0版源代码,在SUA的C Shell环境中解压,运行./configure通过。但在make时报错:

  1. execute_cmd.c: In function `time_command':
  2. execute_cmd.c:1145: error: storage size of `dtz' isn't known

  查看execute_cmd.c源代码,发现这句代码有注释:

  1. struct timezone dtz; /* posix doesn't define this */

  看来这个struct timezone不是POSIX标准的东西。通过上下文,我发现这里是处理time(计时)关键字的函数。于是查看configure的帮助,得知只要加一个“--disable-command-timing”参数即可禁用time关键字(这时输入time将改用/bin/time程序做计时)。再次make,execute_cmd.c通过,但又出现以下错误:

  1. getcwd.c: In function `_path_checkino':
  2. getcwd.c:80: error: `MP_RMDOT' undeclared (first use in this function)
  3. getcwd.c:80: error: (Each undeclared identifier is reported only once
  4. getcwd.c:80: error: for each function it appears in.)

  查看./lib/sh/getcwd.c的源代码,果然没有找到MP_RMDOT宏的定义。在全部源代码中搜索,发现这一定义在externs.h中,在./lib/sh/makepath.c中也有使用,唯独在./lib/sh/getcwd.c中使用了却没有引用其定义。也许这是bash-4.0的一个bug?使用Linux下的gcc编译连接是通过的,但SUA下的gcc版本也许有更严格的名字连接策略,导致无法编译通过。于是我将“#define MP_RMDOT 0x04”的定义手工加入./lib/sh/getcwd.c,再次make,全部通过。实验运行无误!
  需要注意的是,SUA提供的是编译和运行使用了POSIX库的程序的环境,并不提供UNIX二进制文件的运行支持。它编译生成和支持运行的可执行文件仍然是Windows的PE格式,而不是ELF之类。SUA支持的只是仅使用了标准库和POSIX库的程序的源代码级移植,对于使用了Linux等环境特有的系统调用的程序,也不可能不加修改地编译运行。
  有空再研究一下SUA在我们的工程中能有什么实际点的应用。

我选择Windows平台软件的原则

2009/04/11 | 15:52 | 分类:IT杂谈 | 标签: | 965次阅读

  我认为,目前阶段我选择计算机软件或服务的一个重要原则是:在不直接或间接侵犯他人合法权益的的前提下,尽可能满足自己对计算机系统的知情权和控制力。基于这个原则,使用GNU/Linux+开源软件当然是最好的选择。不过这不是今天要说的重点,我想说说我在Windows平台下的选择软件的一些准则。也许这个话题的受众面更广一些。
  “不直接侵犯他人合法权益”是比较容易理解的,在计算机软件领域,主要指的就是不使用盗版、破解软件。我的这一原则并不是出于什么高尚的道德或法律因素,仅仅是出于对同行的尊重。我承认,在其它一些方面,如电子书、音乐、影视,我自觉或不自觉地使用着一些侵权的复本。但在软件方面,自己作为一个计算机专业的学生,一个不断制造代码的劳动者,我十分理解同行的工作价值。虽然自己是开源和自由软件的爱好者,但尊重他人选择自己软件发行和营利方式的权利。当然,很多人会以经济原因拒绝使用正版。但这个问题还用我说吗?网上介绍常用盗版软件的替代免费软件的文章还少吗?(123)除了Windows本身和一些领域专用软件外,日常应用中没有哪个领域缺乏优秀的免费软件。在免费软件中,我的首选是开源、自由的工具,这一方面是对自由软件精神的支持,另一方面,作为一个开发者,学习他人源代码、按照自己的需求修改软件功能也是满足我知情权与控制欲的途径。当然,很多Windows下的自由软件也沿袭了UNIX的KISS精神,相比Windows下传统软件那种大而全的风格,这些软件的确不迎合一些用户的习惯。我有时也会犯这个懒,比如在Windows下虽然有自由的ISO制作和CD刻录工具,但我还是想使用如同UltraISO那样集成了这两类功能GUI的工具,这时候免费但是专有的ImgBurn则成了我的选择。同样,一些开源、自由的媒体播放器出于专利原因,默认不集成Real、QuickTime等格式的插件,在懒得自己配置的情况下,选择那些专有的免费软件也是不错的。
  至于免费软件覆盖不到的Windows本身(注意是“Windows”而不是“操作系统”),我承认我有点站着说话不腰疼——我的Windows及微软的一系列软件都是本科时通过参加微软的竞赛等活动免费得到的。但这对于一个有经济能力使用电脑和网络的大学生来说并不是遥不可及的:微软的DreamSpark计划为大学生免费提供Windows Server 2003在内的操作系统。如果想要XP、Vista或Server 2008,则可以通过加入IEEE学生会员等方式得到MSDNAA的授权,下载和使用百余种微软产品。IEEE对中国学生只需要25美元的会费,连Vista Business版价格的十分之一都不到。计算机专业的学生,有兴趣可以还参加ImagineCup竞赛,只要第一轮晋级就可以免费得到MSDNAA授权。另外听说ACM-ICPC也开始和MSDNAA合作了。这些途径得到的微软产品在技术上和零售版没有区别,但licence限制在学术、科研等非商业领域使用(全凭自觉)。当然,微软出此策略也是老谋深算的,想方设法把学生吸引到它的平台下,学习和使用它专有的技术,从而沦为它的奴隶,在将来的工作中不得不使用它的产品,进而谋取潜在的利益。知道了微软的陷阱,不往下跳就是了。我通过免费或廉价的途径合法地得到了你的软件,你通过竞赛活动或商业合作轻松地宣传了你的产品,双方已经各取所需了。而对于非学生用户,我想说的是,你既然有钱买电脑、上网,就不可能真的因为经济因素用不起正版Windows。用不用正版,绝对是一个意识问题。
  所谓“不间接侵犯他人合法权益”的原则往往被很多用户忽略。举几个例子:我拒绝使用迅雷一类P2SP的下载工具,因为它未经授权地盗链他人服务器上的文件,尽管加快了用户的下载速度,但在减少被盗链网站点击量的同时反而耗费了它们带宽与流量,给这部分运营者带来了损失。我不使用stardict这个开源的词典软件,因为尽管软件本身合法且优秀,但它所使用的词典很多都是侵权的,作者通过把软件和词典(包括软件和词典的网站)分离的办法来规避GPL授权应有的责任,这种擦边球不值得我们支持。我也不在网络浏览器中安装广告拦截插件,因为你既然要从这个网站有所收获,就应该允许网站的建设者得到回报。一个负责任的网站,它所选择的广告也应该是负责任的,即使对消费者没有帮助,也不会产生不良影响;至于有些人说网络上充斥着大量低俗、欺诈、病毒等性质的广告需要拦截,那我只能说,你对网站的选择有问题!总体而言,这个原则有“己所不欲,勿施于人”的意味。开发者、运营者和使用者应该尽量构成一种和谐的循环。这话说起来空,但要做起来,对于用户来说有不少点点滴滴是可行的。这一原则与其它社会道德是一样的:如果只有你一个人做,也许你就是吃亏者;但如果大家形成了一种良好的氛围,那么整个环境就会向着积极的方向发展。
  所谓“知情权”和“控制力”,这是Windows天生的弱势,提到这个问题的时候,我也只能强调Windows的用户只有相对的知情权和控制力。微软要把用户变成傻瓜,但用户有必要明白,在操作模式上傻瓜一些无妨,但在对系统的知情和控制方面,务必要保持清醒的头脑。普通用户并不需要像系统级程序员那样了解Windows内核中每个接口的功能和设计原理,但至少要对自己使用的实用工具(Utilities)和应用软件(Applications)的逻辑有表象上的了解。Windows 9X及其工具的表象相对容易把握,我曾熟知多数系统文件和进程的功能;然而XP以后,一系列本不应该由操作系统负责的机制被Windows接管,微软打着“安全”的旗号把一系列机制黑盒化了(然而对用户来说最重要的默认用户权限问题却有所放松),一度使我感到控制力的丧失。当然,我一方面因为微软及第三方应用强大的推力而妥协,另一方面自己也会与时俱进地学习的。我所抵制的,是那些表面上以给用户更多的知情权为诱饵,事实上接管了用户的控制力的软件,这包括不少国产安全软件(以360安全卫士为代表)以及一些系统优化、设置工具。这类工具针对的目标是大众用户,但开发者缺乏社会责任感,没有想着如何引导用户理解软件机制或表象、培养良好的计算机与网络使用习惯,反而以自己利益为导向,在软件的界面设计和提示语中存在着大量充满主观色彩内容。这类软件误导着用户,让他们对Windows产生误解、对注册表产生恐惧、对病毒和攻击产生敬畏。在这类软件的影响下,用户自身的技能难以提升,只能做这些工具的奴隶。因此,我所期望的软件应该在客观层面增强用户知情权和控制力,而不应该从主观上妨害用户自身判断和决策。借用“己所欲,勿强施于人”的说法,这一原则可以表述为“己所欲,勿强施愚(动词)人”。
  最后,我想附带说一下我对绿色软件的态度。“绿色软件”是一个已经被用歪了的概念。起初,人们把那些不需要安装、不需要建立或更改任何在该程序所在目录以外的文件、不修改Windows注册表及系统设置的软件称为绿色软件。一些开发者看到了这个需求,纷纷将自己的软件以这样的方式设计和发行,这是一个很好的趋势,我喜欢这样的程序。然而一些盗版、破解者也瞄准了这块绿地,把一些商业软件加以破解、修改,制作了所谓的“绿色版”。从技术角度说,这些通过反向工程制造出来的软件往往不是真正的绿色软件,它们一般只做到了免安装、免序列号等正版验证过程,而对于软件原有的修改注册表等特性,破解者们往往不在意。从本质上说,这类软件的绿色版,只不过是给破解版、盗版加上了一个好听的名字罢了,绿色软件的名声早已被这些不法者弄臭。不过有一类“绿化软件”是合法的,那就是对开源软件做源代码级的修改,使之具备免安装、无垃圾的特性,然后在原作者所使用的licence的许可范围内重装发布的软件,它们也被称为“便携版”(Portable edition)。国外有一些“绿化”组织专门从事此行,如PortableApps.com。如果没有特殊的需求,我仍然会优先选择原版(需要安装、非绿色)软件。因为我相信,在大多数情况下最懂某个软件的人应该是它的开发者。软件开发中往往存在一些hack和trick,这是第三方开发人员常常注意不到的。即使是这种合法的、基于源代码级的修改版软件,也可能存在第三方人员无意中造成的隐患。故减少一个中间环节,有助于提升我对这个软件的信任。
  个人见解,仅供参考,欢迎批判。

页面存档: 上页 1 2 下页