博文

夜宴,流氓软件以及其它

最近有两件事炒的很火。 一是夜宴终于出炉了。骂声一片。大有连冯导都堕落了的呼声。 二是奇虎和雅虎关于流氓软件的口水仗打得不亦乐乎,近日风闻又有民间组织起诉所谓流氓软件。 刚好前些日子和网友在论坛上讨论国内软件业的 盗版 情况,心理颇有些感慨,觉得这林林总总的背后,很多东西都是相通的。 影视作品和软件具有很多类似的特性,比如其物理载体的价值可以极低,可以通过互联网传播,可以相当容易的进行盗版。因此在某种程度上,可以认为影视作品是一种特殊的软件。这使中国的电影产业和中国的软件产业具备了相似性。 无论是电影还是软件,都必须在商业性、艺术性和大众性之间取得一个平衡。这是目前我们生活的时代所决定的。创作者追求艺术性,投资方追求商业性,受众认可大众性,这种制约在某些情况下是一种完美的平衡,在另外某些情况下就会变成一种无奈的悲哀。比如中国的电影,还有软件。 尽管可以找到很多理由,比如还是国民收入太低,影片或者软件本身的素质太差等等等等,不可否认的是,这些年来,国人已经被惯坏了。我们已经习惯了免费享用这些可复制的二进制数据。从而把电影人和软件人推到了一个尴尬的境地。一方面,他们有自己追求艺术的理想,另一方面,他们不得不在现实世界中生存下来。 既然不能直接从使用者上收费,于是,越来越多原本不属于电影或者软件的东西进入其中,比如广告。于是就有了冯导每次贺岁片中不断增加的广告品牌,于是有了越来越流氓的国产软件。 在市场经济环境下,消费品具有取悦消费者的倾向。这种情况下,消费品的发展方向是否良性,取决于消费者的水平。 在整体消费文化低下的中国市场,好产品很难做。市场竞争的结果,是越俗的产品,拥有越好的销量,能够攫取越多的利润。这点上,史玉柱的脑白金、征途,神舟的电脑,盛大的传奇,韩国的三星电子以及大量泡菜网游深谙其道,赚到了大票的银子。很多早期社区的转变,比如猫扑元老与小P孩竞争的失败,也缘于此。很多国际品牌到了中国市场的水土不服,最终都选择了降低自己产品在中国区域的品质来提升价格竞争力,也缘于此。 或许,这个阶段是成长过程中的必经阶段。但是,自己种的苦果,自己总归要尝。如果今天的流氓软件以及外贸化的中国电影还不能警醒我们,那么明天,我们必将尝到更多的苦头。对于历史的欠债问题,“人间正道是沧桑”,是取不得巧,偷不得懒,更躲不过的。今天我们对于自己的继续放纵,只会最终扼杀我们自己的产业。 正...

J2ME 开发上手指南

概述 J2ME 是 Java 2 Micro Edition 的缩写,最新的官方名称是 JavaME(Sun 似乎很喜欢改名字,从 Oak 到 Java,从 Java 到 J2?E,再到现在 Java?E),可 以认为是 Java 为移动设备(手机、PDA 以及其它计算能力和能源供应都受限的设备)剪裁的一套 API。基本上,如果有 J2SE 的开发经验,上手 J2ME 会非常快。除了个别类或方法,J2ME 基本上是 J2SE 的一个子集。Java 在保持语言体验统一性这一点上,做得确实非常好。 J2ME 采用比较混乱的方式来描述自身的版本。整个 J2ME API 被划分为 Configuration 和 Profile。而 Configuration 和 Profile 又各自拥有其版本。关于混乱现象的解释,一两句话难以说清,有兴趣的同学可以随便抓本 J2ME 的书过来,第一章必然有大篇文字解释这些匪夷所思的现象[1]。 J2ME 最吸引人的地方(或者说是吸引我的地方),就在于其针对的平台计算能力有限。这并不是受虐。运算速度、可用内存、以及最终生成字 节码尺寸的限制使得 J2ME 应用通常比较小巧玲珑。以早期支持 J2ME 的设备为例,可用的 Heap不过 200k,最终生成的代码(包含各种资源文件,如图片)不得超过 64k,这就使得面向这种平台开发的 J2ME 应用规模基本上不会超过一个人的能力范围。这样可以有效避免协作、过程等等令人不胜其烦的软件工程概念的引入,从而使开发人员重新回归到编写代码的乐趣中去。 开发环境 抛开感情因素,Windows 是进行 J2ME 开发的首选平台。为什么呢? 首先,开发 J2ME 所必须的开发包,只有 Sun 官方的 WTK(Wireless ToolKit)[2]对 Linux 提供了良好的支持。其它如 Nokia,与 Windows 版本的更新速度来看,其 Linux 版本更新相当慢且陈旧,而其它如 SonyEricsson[3] 和 Motorola[4] 则根本没有 Linux 版本的开发包。 其次,数据线。J2ME 的开发是离不开真机测试的。模拟器上在完美的代码到了真机上还是有可能运行得一塌糊涂。因此开发人员应该要有一个比较便捷的将 J2ME 部署到手机的途径。这些途径当中,数据线显然首选。而众多的数据线中,提...

不要把非项目文件扔在workspace里面

workspace,当然就是eclipse的工作区。之前一直都这么做的,资源、其它脚本,统统都在workspace里面,尽管其中相当一部分根本不受eclipse管理。 一次偶然的机会,eclipse在build workspace的时候(这种操作eclipse会在很多情况下进行,比如refresh某个项目的时候)死掉了。进度永远是0%,而且无法正常退出,只能强制杀掉进程。 最开始以为是windows几天没关,又犯病了,重启之后,故障依旧。 于是留意eclipse在build workspace时候给出的提示。原来是说几个非项目的文件夹 的路径和eclipse记录的不符。eclipse还善意的提示我将这几个“项目”按正确路径重新导入即可…… 一不做二不休,把几个非项目文件夹请出了workspace。重启eclipse,故障解决。 看来,还是不要太相信IDE!!

手机 Java 之怪现象

ok,我承认题目是用来吸引眼球的。但是,不能不承认的是,这篇文章会很有用,很有用……尽管目前可能只是对我有用……因为我记性不够好…… 下面记载的都是手机 java 实现中各种奇怪的毛病,bug,或者……特性,是根据某项目的开发经验总结出来的。但是涵盖的手机型号还是有限。因此很有可能某些“特性”会存在于更多的采用了相同 JVM(比如平台相同、生产厂商)的手机上。 == 早期 S60 的内存泄漏 == 这个 bug 可以上溯至 2003 年,甚至更早。表现为 java 应用中如果使用了 Class.getResourceAsStream("本地文件") 无法释放其占用的内存,是的,没有任何办法,无论是调用获得的的 InputStream 实例的 close() 或将其设为 null,甚至显式强制 System.gc(),都没有效果。结果就是至少和本地文件同尺寸的内存成为了无法回收的垃圾。这个问题还影响到以 Class.getResourceAsStream() 为基础的 Image.createImage()(这个是最要命的,如何能够不使用图片资源呢!)。 这个 bug 据说在新的 S60 上已经解决了。但是 Nokia 3230(4.0526.2ch)、Nokia 7610(6.0525.0ch)都存在这个问题。对于这些个有问题的机型,在 java 程序中是无法完美解决这个问题的,只能尽量避免。比如集中、统一载入资源,永不释放(也就是说,尽量控制泄漏的次数)。当然,这会对已有代码造成很大影响。毕竟手机 java 应用是内存受限系统的典型,大多数情况下,珍贵的内存中应该只保留需要的资源。 == 键盘响应事件 == 在 MIDP1 中,获取键盘事件只能自己实现 Canvas.keyPressed()。但是 Motorola E398 和 SonyEricsson K700c 的实现却很奇怪。表现为左右软键有可能在这个方法中捕获不到。而是否能够成功捕获,取决于 keyPressed() 方法中代码的行数…… 我承认我没彻底搞清楚这其中的玄机。鬼知道 Motorola 和 SonyEricsson 是怎么实现的 JVM。我只知道把 keyPressed 中的所有代码提取到另外一个函数中,在 keyPressed 只把参数传递给新函数,问题就消失了…… =...

宁缺毋滥

越是现代人,恐怕越讨厌罗嗦。以至于无论内容是否正确,当重复的次数超过了受众的忍耐,都会引起习惯性的逆反。这个不能把责任推到受众的非理性一面,这明显跟心理学有关。对任何事物,绝大多数人类显然都有忍耐的极限。比如前些天某个大学调查的,欧洲人忍耐红灯的极限不过1分钟左右等等。中国人在这方面显然要更强一些。就在北京,我等过的最长的红灯恐怕要5分钟。而虽然大家都很不满,却习以为常。 不过今天要说的事情和红绿灯没关系。而是公交车上移动电视频道的广告。 这则广告相信大多乘坐北京公交的朋友百分之百见过。三维动画创作的范伟,愁眉苦脸,“酒不能喝,辣椒不能吃,车不能开,睡觉还得趴着”。这时同样三维动画创作的赵本山出现“咋的了?”“我痔疮又犯了”哦,到此时才恍然大悟,原来是治疗难言之隐的广告。之后便是“赵本山”的大锻独白,“北京东大……多项无痛微创技术……治疗各种内痔外痔混合痔肛瘘直肠息肉……治完就能走……北京人都知道”等等等等,诸如此类。 从技术的角度看,这则广告的制作水准相较国内同类还是相当之高。人物建模精细,过场安排紧凑幽默,画面与台词配合的也很有国内flash作者的风格,和脑白金的系列三维动画广告相当。 但是,在8月26日下午4点多的大概不到30分钟内,这则广告在移动电视上出现了不下六次……即使能够分辨广告制作水平如我,也已经在呕吐的边缘,更何况如我父辈的广大乘客,印象中,父亲无论何时何地,听到这类广告就会光火不已,认为这类广告,有伤大雅,上不了台面。于是那一路颠簸,是伴随着不断重复的“治疗各种内痔外痔混合痔肛瘘直肠息肉”过来的。下车前铁青着脸用怨恨的眼神最后瞥了那电视一眼,心里琢磨着不知道这医院给了移动电视多少钱。 倘若真的没什么可播放,请您欣赏,自然风光,动物世界,都是很好的内容。认为有东西总比没有好,就肆无忌惮的重复广告,简直是愚蠢至极的想法。 正如昨天在鼎好陪一个朋友装机,面对如苍蝇一般嗡嗡作响挥之不去的推销导购,我终于矜持不住斯文,“你们谁家我也不去,真讨厌!”