所有包含 tag ‘programming’ 的文章
BCGSoft 进驻 MFC
我可能是土了点儿,这其实是去年十一月的消息了,今天刚好在 Visual Studio 的 Start Page 里看到。
在 Microsoft 有更多的 framework 和编程语言,同时 Visual Studio 集成进更多功能的时候,Visual C++ 产品开始把精力和焦点放到他们擅长的 native code 开发上,这其中涉及到要提供更好的 native 库给程序员使用。
从 VS 2008 开始,Microsoft 将提供一个大大增强的 MFC,帮助开发者更方便地编写出具有 Office,IE 和 Visual Studio 外观风格的应用(Office 2007 的 Ribbon 迷死用户无数)。在评估和考虑了良久后,他们选择了 BCGSoft 作为合作伙伴,Microsoft 会以 BCGControlBar Library Professional Edition 为基础开始自己 MFC UI 部分库的更新。BCGSoft Pro 的很多部分,比方 visual manager,docking 面板,可自定义的工具栏和菜单,当然还有那个 Ribbon,都将 merge 进新的 MFC。

Microsoft 觉得 BCG 的功能,性能,质量俱佳,重要的是 BCG 架构优良,让 Microsoft 的神童们在将其集成进 MFC 时倍感方便—-当然,俄国人亲切地飞到 Redmond 做现场支持也是不可忽略的原因。预计将来发布的 MFC 会以神仙飘过不留声息,做人要低调,润物要细无声的方式出现,让老版 MFC 使用者能觉得新功能提供和使用起来非常自然,现有的 MFC 程序可以很方便地,无需太多改动就升级到新 MFC 框架上,获得迷人的新外观。
按我感觉(没有数据支持),现存 MFC 程序数量极其广泛,即便在现在新的编程方式和对象日渐丰富的情况下,MFC 更新也是有很有价值的。再说,风水轮流转,虽然现在 VC/MFC 开发的顶峰时期已过,可坚持下去,万一就等到了 native code 的又一春呢?
BCGSoft 是家很出名的 Windows Component 提供商,他们的 UI component 广泛应用在很多人的 MFC 或者 .NET 程序里。当年做这些 component 提供商的对比的时候,最喜欢的一个比较项目是 copy 它 5 万行代码到 textcontrol 里,上上下下翻下页,看谁表现优异,那是觉得 BCG 好像一般般啊。
BCG 这下子肯定高兴坏了,一是来自 Microsoft 的授权回报,再就是沟通和支持上的优待,另外,“名声”,这个及其不易获得的东西,现在因为 Microsoft 的选择而被点得光芒万丈。至于后面的计划嘛,BCG 本来有好几个产品线,即便 Pro 嫁了豪门也会继续开发,会提供和集成进 MFC 的那个版本不同的功能。
这个 MFC 更新预计 2008 第一季度发布—-只有 VS 2008 能用哟。
[tags]mfc, microsoft, visualc++, bcg, bcgsoft, bcgcontrolbar, programming, software[/tags]
Tags: bcg, bcgcontrolbar, bcgsoft, mfc, microsoft, programming, software, Technology, visualc++
Google 与 IBM 合作提供分布式系统试验环境与热烈庆祝十七大胜利召开
Google 和 IBM 8 号说,他们将合作为大学学生提供试验环境,方便他们学习开发大规模分布式系统上的软件。
在著名却少有人清楚了解的 MapReduce 阴影下,Hadoop 成了这个环境的首选。按 PR 的说法,这一合作是为了帮助 CS 学生们熟悉高度可并行程序的编写,在大规模分布式系统上这是新兴的前途与意义都很光明的道路。两者将合作提供软硬件以及服务,游说猫一样的教授们拓展课程范围和研究领域,这些当下的 CEO 们几年和几十年后有没有好日子过,就指着现在学校里美国派的神童了。
目前参与的学校有 University of Washington, Carnegie-Mellon University, MIT, Stanford, UC Berkeley 和 the University of Maryland,还真的一个都没缺。
Radar 的文章还提到了类似的系统:Hadoop with Amazon EC2。
Google 和 IBM 是大规模计算的典型需求和受益者,越早越多的有熟悉相关内容的学生,就有越好的人才储备。大学教育和业界发展的结合是美国人的骄傲,也只有拥有强劲和强盛的 IT 工业,才能这样热心积极地帮助和反馈高等教育的内容,教育昌盛,才能再保证工业界继续前进。中国和印度培养的工程师数量如何如何超过美国大学的说法,是忽悠国会和纳税人的,或者,红白脸儿齐上,就是忽悠对岸的中国人的。
我们特喜欢伟大“复”兴,从足球高尔夫到 GPD 与国力,总有人喜滋滋地说,中国早有了,我们世界第一,意思是老子好歹也曾经是个腕儿,现在无非虎落平阳而已,失势是失势,老大派头不能减。可轮到 IT 一行当,好像找不着“复”字了,那就自主“创”新,可据说现在的孩子们都积极入党了,那振兴 IT 产业,我看还是靠共产主义压倒太平洋好了。
[tags]google, ibm, programming, mapreduce, hadoop, computer science[/tags]
Tags: computer-science, google, hadoop, ibm, mapreduce, programming, Technology
Mono 展示 Ribbon 效果
做跟跑者,跟得用心,也是可以跟出花样的。
Mono 是 *nix 上的 .Net 的实现,出娘胎始就有一堆四眼律师等着它好看,不过至少到今天它还没夭折--知道夭折和英年早逝的区别不?
参加 Google Summer of Code 的 Laurent Debacker 用暑假完成的 GTK# widget 再造了 Office 2007 的 Ribbon 界面,因为基于 Mono 实现,这玩意自然可以跑在任何集成好了 Mono 的 Linux 发行版上。
作为 lead Mono developer,Miguel de Icaza 说,他可能会把这些 widget 放入 Mono 的 subverison 仓库--这就可算正式接纳哟;下一步是可能会打包给开发者,他们就能开始用啦;另外或许他有兴趣试试把 Ribbon 界面用在 MonoDevelop 上。
Mono 至今仍面对不少质疑,我感觉法律和操作细节上倒不是大问题,从开发者角度看,Mono 的工作是有意义的,多一门可使用的语言--而且还是 Anders Hejlsberg 设计的语言!--和一个 runtime 其实是件好事,当然 Mono 的 runtime 也可以接受 Java, C, C++, Python 等。有人觉得 Microsoft 在这件事上握有生杀大权让人如鲠在喉寝食难安,这种看法忽视了 Mono 实现者这方的主动性,虽然相关标准由 Microsoft 提出,可很多内容已经提交 ECMA 成为公开内容。
另外,只重视 Microsoft 之于 Mono 或者 Linux 的影响而忘记 Mono 的反馈效果也不合适,有 Mono 的存在,实际上也开辟了 OpenSource 通往通常认为是 proprietary 世界的道路。有 Mono,开发者就可以让自己的 free/OpenSource 作品通达所谓另一个世界。按原教旨主义者的意愿,开发者既不该用 Windows,更别提主流 Windows 开发工具,所以开发者处在无法为 Windows 用户开发 free/OpenSource 软件的死锁中,继而没有用户可以逃出某系统的魔爪。他们认为用户不用 GPL 系统和女人上街不蒙脸是一回事,所以道义上的过错责任在用户这边。Mono 提供了一条比较干净的道路来解放旧世界的人们。
目前成熟而知名的 Mono 软件有 Banshee,Beagle,F-Spot,TomBoy--这个其实很无聊的说。

[tags]mono, ribbon, ui, software, programming, linux, .net, c#[/tags]
Tags: .net, c#, linux, mono, programming, ribbon, software, Technology, ui
Tera-scale Computing

这一期的 Intel Technology Journal 主题是 Tera-scale Computing。
和常在总裁身边出现的光鲜亮丽的 Audrey 本名是 翠花,独享办公室而神气活现的 Ansel 被叫做 狗剩 一样,Tera-scale 在 Intel 内部毫无光环地叫做 many core--many?多少算 many,80?80 也就 so so 吧。与此类似的还有 CSI--据称 marketing name 要叫 QuickPath 了……好难听。
这组 Tera-scale 专题由 8 篇文章组成,在 architecture 和 application 两方面。60 年代起头的处理器革命让这个世界多了一个独立类目,人们开始在其上构建新型的商业社会,处理器不再跟计算器混淆分不清,而是成为媒体,通信和商务工具的基础--这是上一波浪潮。在这期 ITJ 的 FOREWORD 里,几个作者认为,下一个 10 年期,处理器里有 2或4 核心不算什么了,数十个或者数百个核心的处理器才是常态。抛开如何做到这一点不说,如何利用好这样惊人的计算资源也是问题。和如今的计算机远超 ENIAC 一样,Terascale 的处理器可以提供过去的超级计算机才具有的能力。处理器之间会有 Tera 量级的 I/O 带宽,超常的核心间低延迟要求等等等等,这些属性都会催生今日难以想象的新型应用--早期只能在字符界面做文字处理工作的用户看到今日绚烂易用的 GUI 环境和软件会怎样?
这样的“能力”上,正有多种类型的应用方兴未艾。比如 model-based 的,计算机可以逐步建立/获得关于“事物”的成熟 model,软件能从海量数据中识别,发现甚至合成真实/虚拟的人物,场景等实体--别煞风景地提什么不搭界的 Matrix 或者 Second Life,否则你就是没吃过猪肉也没见过猪跑的猪头。这样的分析和处理能力可以让--至少有物理基础让--计算机达到那个我们曾经想象过却从未真正逼近的目标:成为我们可信赖的伙伴和顾问。从这个角度上说,Eric Schmidt 说未来 Google 可能成为人们问“我今儿该干什么”的入口是有些道理的。
前述的景象就是 Intel 的 Tera-scale Computing Research 计划的动机之一。这是 Intel 的事业,也是整个信息技术业界的事业,这样的变化隐含完全不同的挑战,architecture 设计需要考虑 数十/数百 核心的情况,能够有效管理和使用这样资源的系统软件和应用也和 Andy 在 Shawshank 的那把锤子一样起着决定性的作用。
并行或者多线程程序在传统的--也就是过去多年以及现在的--世界里也不错,不过没人要求必须,我们差不多都习惯了只要能 work 就行。这样的现状和思路是 terascale computing 面临的最大障碍,所以和大学开设合作课程传播 并行/多线程 程序设计最积极的正是 Intel。
这期的 8 篇文章讲述了相关的硬件设计,还有 Intel 提出的与其对应的适合的编程模式。有讲 datacenter-on-a-chip 的,一个原本运行在 133 颗处理器上的电子商务数据中心如何大挪移到一个 32 核心(每核心 4 线程) terascale 处理器上。此外还有对教科书上经典的 memory architecture 的更改,特别是 cache 部分,新构想是高带宽的 L4 cache,还有多线程如何优化使用共享 cache 空间。应用部分谈了游戏和电影中的虚拟现实,以及家庭多媒体数据的搜索与挖掘。
基于这些信息,有啥新动向呢?一是 L4 cache 的封装和集成;还有非 IA 芯片的集成;另外就是…这下有看头了…提供高带宽 memory 最后可能要 memory 直接上 die--那么,很显然,集成 memory controller 在 die 或者 package 一级更早也会实现,比如 CSI--AMD 又要笑了,又能拿出 HyperTransport 说事--可惜,第一个下树的猴子诚然会引得猴群一片仰慕乃至部分母猴无限倾心,可猴子落地比 CNN 在中国大陆落地还难的情况持续不了多久,当到处都是下地的猴子后,谁还记得第一个?--除非你再次与众不同。
ITJ 可从文首提及的 Intel 网站上免费下载。
[tags]intel, processor, cpu, chip, silicon, hardware, multithreading, programming, software, parallel[/tags]
Tags: chip, cpu, hardware, intel, multithreading, parallel, processor, programming, silicon, software, Technology
Intel TBB 开源
在这两天的 OSCON 上,Intel 宣布,Threading Building Blocks,Intel 众多软件开发工具中的一个,open source 了。协议是 GPLv2。
TBB 获得过 17 届 Jolt Productivity Awards,是一套 C++ 模板库,和直接利用 OS API 写程序的 raw thread 比,在并行编程方面提供了适当的抽象,当然还包括更多其他内容,比如 task 概念,常用算法的成熟实现,自动负载均衡特性还有不绑定 CPU 数量的灵活的可扩展性等等。STL 之父,Alexander Stepanov 对此评价不错,他说“Threading Building Blocks… could become a basis for the concurrency dimension of the C++ standard library”。其他 TBB 的早期用户,包括 Autodesk,Sun,Red Hat, Turbo Linux 等亦然。现在 O’Reilly 已经出版了一本 Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism。
TBB 可以在 Windows,Linux 和 OSX 上运行,支持 Intel, Microsoft 和 GNU 工具,这就覆盖了绝大多数需求范围。
Intel 内部大概在 2004 年有了 TBB 的概念,2005 年 team 成立,2006 年 8 月发布 1.0,今年 4 月 1.1,这个程序看上去势头不错。
和业界目前层出不穷的并行解决方法/方案比较,TBB 有自己的优势,例如:和 OpenMP 比…哦,他们几乎是两回事…关于 OpenMP 有个笑话:OpenMP is great if you have Fortran code, or C code that looks like Fortran, or C++ that looks like Fortran,或者说,一句话,flat do-loop centric parallelism。另外,如果你的项目不适合甚至不允许 pragma 来 prgma 去的,那就麻烦了。
目前 TBB 也仍然作为售价 $299 商业产品(包括了 Intel C++ Compiler Professional Editions 10.0)销售,因为有些用户更喜欢 Intel 的支持服务。一个不知道是好消息还是坏消息的信息是,如果我用 TBB 和 Intel Compiler 配合编写的程序,在 AMD 的 multicore 处理器上会有更好的 performance 吗?答案是,很多情况下,确实会提高的 :-)
对 TBB 或者说并行编程趋势的完整理解和支持只可能最先发生在工业界,这不是你在论坛上看到的某个蹩脚程序员或者业余爱好者愿意花精力或者有机会实践的东西,Autodesk,Sun 和 好莱坞 是典型的最渴望和最欢迎任何这方面的有益举动的厂商。DDJ 对 James Reinders 的访问,其中有一段,或许,有一天会扩展 TBB 到支持 Java 和 .Net 吧。
Raw thread 几乎铁定不是最方便和具备可移植性的选择,某种程度的 wrapper 只能改良而无实质变化,TBB 引入 generic parallel programming 的支持是个大进步,当然这也不能说完美,TBB 有不方便的地方(有些来自 C++ 有些来自 TBB 实现),而且不一定适合某些特定问题域,所以 Google Sawzall(适合大规模数据并行处理的脚本语言) 和 Yahoo Pig 都是很好的对比参考(当然,他们是更不 generic 的实现,更针对自己的问题),至于硬件对 parallel progarmming 的支持比如 transactional memory… 扯更远了哈。
出于照顾受众的原因,不少介绍和推广 multicore 处理器优势的资料都会说你可以一边运行杀毒软件,一边处理照片等等,我得说,这个比方真的很蠢,它模糊了实质,也让人觉得职业程序员们没干什么正事儿,可是,如果你没法跟他聊算法,数据流以及指令序列,那也就这么着了吧。
Jakob Nielsen 和 Steve Jobs 的看法有很多类似之处,大多数用户要么根本不知道自己要什么,要么说出来需要什么后,旋即转身要求其他更好的继而让他刚刚告诉你的东西成为废话。你得敏锐地观察他们的行为,分析趋势,这是个预测未来的活儿,你得做好准备去迎合至今尚不存在,将来却会铁板钉钉的那个“需求”。用户可能会觉得你现在提出的 idea 非其所需,或者不过是忽悠人,甚至蠢得可以,这样的过程在 iPod 身上发生过,在 Parallelism 身上正在发生。
[tags]intel, software, thread, threading building blocks, multicore, programming, parallelism[/tags]
Tags: intel, multicore, parallelism, programming, software, Technology, thread, threading-building-blocks
为 iPhone 开发应用程序 (Part 3)
此系列:
为 iPhone 开发应用程序 (Part 1)
为 iPhone 开发应用程序 (Part 2)
在开头 Part 1 说了,Apple 声称 iPhone 有和桌面 Safari 一样的 WebKit,不过在实践上,开发者还是得考虑两者实际存在的区别。iPhone Safar 提供的 feature 才是可以依赖的标准,对那些不支持的东西,Apple 承认,得想办法 workaround。
一个差别是资源方面的。所有被下载的资源,包括 HTML, CSS, JavaScript, 图象, 非流媒体,都得小于 10M。JavaScript 的 top-level entry point 执行时间必须小于 5 秒,否则会抛出异常。这个要求是为了保证用户能体验到足够好的响应性。Apple 还列出了支持的 MIME 类型(都是些媒体格式)。
另外是 iPhone Safari 和桌面版本表兄在行为上有些不同,iPhone Safari 缺省是 block 弹出窗口,不过用户可以改变这个设置。还不支持的有:
window.showModalDialog() 方法
Mouse-over 事件:这条说得过去,手持设备上,目前根本没办法 hover 东西,要么就干看,要么就触摸了。不过在 Pocket IE, NetFront 等浏览器上,焦点是可以移动的,如果把当前焦点视作 mouse over,也有得做。iPhone 上没什么按钮,无法做移动焦点,那就免谈了。
Hover styles:同上道理
Tool tips:其实也同上
Java applets:根本不支持
Flash:前面说了
Plug-in:桌面版本支持的怎么样?
Custom x.509 certificates:不知道用不用得上
不过 cookie 是支持的,SSL 实现和桌面版本一样,支持 SSL2, SSL3, TLS,RSA key 最高 4096 位。
用户发起的新建窗口也支持。可惜没上手试试的机会,不知道这样的多窗口支持如何,Windows Mobile 的 IE 是不支持的,NetFront 支持的还不错。iPhone Safari 支持最多 8 个窗口。
网页里链接的 PDF 文件能被 Safari 识别,在 iPhone 上阅读也没问题。
Part 2 里说了,Flash 目前不在 iPhone 支持范围内,这显然有那么点影响 iPhone 的可用性,让 iPhone web app 上的开发也有点微妙。除此之外,Java 同样不支持。
所有关于 iPhone 开发的东西就这么点了,说多也不多,因为本来就是基于已有技术和标准的 web app 嘛。
Apple 让 web app 成为手机应用的通用形式的目标让我想起 Adobe 正在推的 AIR,他们纵然手段差别挺大,却很有神似之处。AIR 让人使用 web 开发技术制作桌面--应该说快赶上 universal--应用,也就是在某种程序上达到让 web app 和本地应用拥有类似的功能以及 UI。
AIR 做到的是,使用一种技术,即可制作原来泾渭分明分属不同问题域的 web app 和 desktop app,AIR 也是这个问题的正解之一。Apple 推测起来也挺喜欢的这个想法,不过 Apple 的做法基本是 workaround--限制开发者只能开发 web 页面,以此充当 iPhone “里”的应用。纵然如此,iPhone 的积极意义可能在于,在满世界都急得屁股冒烟地寻找 web 2.0 正途的时候,Jobs 开口,就在手机里。
Web 2.0 需要或者推崇的属性,用户参与,个性化,面向服务,连通(最好是随时随地的),iPhone 都提供了不错的平台,当然其他手机也能提供这些,可 iPhone 硬逼着本来半推半就还在考虑是要写 native code 还是做 web service 的好汉们上了 web 的梁山,加之 Safari 和 iPhone 对 web app 的开发支持够好,开发者们得到到比 J2ME 一次开发,到处到处调试 更爽的体验后,后继的英雄们会在此汇聚得越来越多。
[tags]iphone, programming[/tags]
Tags: Gadget, iphone, programming, Technology
为 iPhone 开发应用程序 (Part 2)
小插曲:在我如火如荼地整理 ADC 上的 iPhone 开发资料并在昨天抛出了 part 1 之后,我发现……网站挂了。那种精心筹划并准备接受鲜花掌声和顶礼膜拜却发现因为一个愚蠢的原因而未果的感觉和上周末在伦敦 Tiger Tiger 俱乐部前放汽车炸弹却被人因运气而发现最后如意算盘落空的菜鸟恐怖分子一样。
在发现网站挂掉的那个第一秒,我自鸣得意地以为是被“类digg”了,不过很快发现有点不对头,之后到服务商 media temple 看了下,果然是他们出了问题。我那篇心血文章陷入了藏在深闺无人问的地步。后继报道显示,伦敦人对未遂的汽车炸弹心平气和,戴安娜演唱会照开不误,所以,网站挂就挂呗,part 2 照写。
在开始看 part 2 前, mashable 的这则消息你可能会感兴趣:8 Coolest iPhone Apps at iPhoneDevCamp。这个话题这周有空可以细说–不是戏说,谢谢。
今天又想了想 Apple 死活都不想公开 OS API 甚至是经过 SDK 包装过再提供的 API 的原因,我猜和 Apple 宣称 iPhone 采用的是“完全的 OS X”有关。我早先–并且到现在一直–认为,Apple 这个说法实在很猪头–如果哪天事实证其实我是猪头那也挺好–衡量这个说法是否靠谱,iPhone 的 OS 是不是所谓“完全的 OS X”有几个准则,其中一个是看其提供的 API。而现在 Apple 只给大家一个开发 web app 的机会从而避免了必须在开发者面前宽衣解带的尴尬,就没人能知道这个侏儒 OS X 到底是什么构成,自然也就没法 challenge 那个“完全的 OS X”的谎言了。
Microsoft 在 WinCE/Windows Mobile 中还是引入了不少桌面 Windows 的概念的,窗口,事件驱动,消息,注册表,相似的大量 API,甚至 .NET Compact(不过当然没有 MFC 和 ATL 等),即便这样 Microsoft 也谨慎或者明智地没有宣称 Windows Mobile 和桌面 Windows 有什么暧昧关系。Redmond 的工程师们太朴实了,他们不像 Apple 的家伙那样会撩拨挑逗不明就里的处男处女消费者。
继续:此后 ADC 关于 iPhone 开发的内容是页面布局,字体的东西了,好烦人,而且没有实际东西就很难写得形象,这就不罗嗦了。留心几点,iPhone 上的 Safari 不提供滚动条,也不做所谓窗口缩放(根本就没 窗口 概念)。核心是 viewport 那个矩形区域(如图)。大页面又没滚动条怎么办?当然是使出 iPhone 最炫招数,手指头拖动啦。

iPhone Safari 支持的图片类型:GIF,PNG,TIFF,JPG。前三种格式的 decoded image size 最大 8M,也就是 宽x长x4 < 8 M。GIF 则必需 < 4M。原始 JPG 图片最大可以 128M--足够了吧。
如果页面上有 form,比如输入文本框,那就要考虑弹出的软键盘--它会消耗屏幕空间,如下图。

多媒体–打住,跟最开始一样,目前看来你可没机会写什么第三方多媒体程序,这里的多媒体是仅仅指页面里的媒体内容。
第一要义是别忘了,如果是网络媒体,iPhone 的承载只有 EDGE 和 WiFi。对视频来说,码率和尺寸是最重要的,iPhone 支持 H.264/AAC。
再者,使用 reference movie,这样 iPhone 能根据当前链接是 EDGE 还是 WiFi,自动选择不同质量的内容。这种媒体包含多个 movie url,每个 url 包含一组测试内容。连接到 reference move 时,播放器只会选择最近的通过了其所有测试的 url,播放这个 url 的媒体内容,这样就保证了不同能力的设备选择合适自己的内容,在视频质量和链接速度之间取得均衡。Apple 提供 MakeRefMovie 工具。
其他内容,以及媒体制作工具自己取细看哈。从最终 Apple 推荐结果看:
为适合 WiFi 连接制作的 H.264 内容,视频可以达到 900 kbit/sec, 480 x 360,EDGE 是 64 kbit, 176 x 144。

这里有个好玩的地方大家可能意识到了:缺少 Flash 支持。这限制了媒体制作者能使用的媒体格式和播放手段,甚至进一步限制了能编写的 web app 类型–或者要实现类似功能,需要花费更多代价,所以我们只有期待 flash 支持的传闻尽快成真。
[tags]iphone, programming[/tags]
Tags: Gadget, iphone, programming, Technology
为 iPhone 开发应用程序 (Part 1)
Apple 确实为 iPhone 应用的开发定了条与众不同的道路--如 Jobs 大嘴巴所说--iPhone 上八成不再有什么第三方 native code 了,唯有 web app 才是 iPhone 第三方应用的正道--不过我猜如果哪个 ISV 面子够硬的话还是能有 SDK 来写 native 应用的 :-)
Apple 的开发者网站 Developer Connection 上已经推出了 iPhone 部分。只有一个内容,就是 Web Development for iPhone。按照 Apple 的设想和许诺,开发者能够写出和 iPhone 内置应用在外观和功能上差不多的第三方程序–这是暗示内置程序亦是 web app 呢还是只是夸耀 apple 提供给第三方的开发能力使外人也能写出和内置的 native 程序同样等级的软件?这些第三方程序能与 iPhone 内置应用和服务无缝集成--包括拨打电话,发送 email 和在 Google Maps 上显示位置。
我想这种安排相比暴露一堆 API 的好处是:
- 引导了开发者把重心放到设计有创意的产品上,开发真正创新的有竞争力的应用,而不是继续鸡毛蒜皮的小修补,才是 iPhone 最需要的–大家可对 Windows Mobile 上 500 个第三方日历程序心有余悸?谁让 Microsoft 恨不得把自家牙缝里的东西都写进 MSDN 呢。对易用性大师 Apple 来说,暴露 API 似乎没有太多现实意义–出自这帮这帮家伙之手的 iPhone 内置应用基本没什么余地/缺陷留给第三方开发者填充或者弥补了,所以,你们不需要 OS 或者某种传统 framework 的 API 来再次开发,再所以,你们还是打起精神,为编写真正配得上 iPhone 的 cool app 整装待发吧。
- 再者,web app 开发好歹也算在标准接口上工作,绝大多数相关技术都是开放的,开发 iPhone 需要的参考资料–xml,html,javascript,rfc 里的协议等等等等–差不多全是 ISO,IEEE 等的标准。design house 为一百个手机写他妈的一百个的 phonebook 的黑暗日子总算有个头了– 哦,又忘了,iPhone 根本没打算让你为他重写 phonebook。
ADC 的 iPhone 开发准备内容只有两节:WebKit (或者 Safari,随便你) 和 Development Guidelines。WebKit 的内容不依 iPhone 的开发早就有了,不表。和其他手持系统上的开发不同,iPhone 上没有什么鸟 SDK 和 host 上的模拟器,如果说有的话,那 SDK 就是所有 web 开发相关标准–因为这是和 iPhone 打交道的接口,而模拟器就是 host 上的 Safari 啦,要不 Jobs 费劲地移植个 Safari Windows 版干嘛。
Guideline 是一对一和 iPhone 挂钩的东西,需要编写应用时阅读参考。不过先打个招呼,基于你的视角和观点,你会觉得 iPhone 上开发应用程序“居然沦落到”或者“终于进化到”这样的地步:If you are a seasoned web developer, there are probably just a few refinements you can make to ensure that your site looks great and works best on iPhone。
早先说了,在 Apple 的选择下,没有必要有类似 API 列表的 reference manual 了,因为 html,css 和 javascript 等内容本来就是开放的,所以只需说明应用与 iPhone 时的注意事项。
按 Apple 的表述,iPhone 的 Safari 和桌面系统 Safari 使用一样的 WebKit--这话其实言之不详,似是而非,虽然我们宁愿已是精确表述。换做老式应用开发,我们只需要知道系统底层机制的描述,再有文档可以查阅 API 变化(比如有无增减,参数类型含义有无变更)即可,而所谓使用同一 WebKit 并不明确,因为 WebKit 至少包含 WebCore 和 JavaScriptCore 两部分,细节颇多,随便挑个 DOM 对象比比,都有可能不同。
对开发者甚至一般 iPhone 用户来说,最重要的是,如 guideline 里一句话所说,It’s tempting to think that using an iPhone is like using a computer. But it isn’t. 体现在用户交互上,表现很明显。

通常的网页–其实是我们的电脑了–当然只考虑到最常用的交互设备是鼠标键盘等,iPhone 的输入设备–手指–在精确度,可识别性乃至可产生的 event 上不同于鼠标。guideline 上为此专门提供了 “Know Which Events You Can Handle” 和 “Design for Double Tap.”两节内容。不过当然记住,在 iPhone 那光滑性感的表面上游走的两根手指可没法实现什么复制粘贴,拖放和选中;另外,手指是有宽度的,设计过于密集的交互对象(比如网页上的超链接)会让人吐血的。
既然是些 Web app,那相关标准就要随时能涌上心头了,iPhone 伟大的 WebKit 引擎支持的标准“应该”和桌面 Safari 一样,包括:
* HTML 4.01
* XHTML 1.0
* CSS 2.1,部分 CSS 3.xx
* JavaScript 1.4, 包括 DOM 支持
* AJAX 技术, 包括 XMLHTTPRequest
又因为 Apple 让 iPhone 上的 WebKit 和桌面一样,所以 iPhone 会另类地不支持 WML (Wireless Markup Language),不过支持 XHTML mobile profile。开发适合 iPhone 浏览的页面和开发适用于通常浏览器的页面有很多详细之处,如果感兴趣,ADC 里也列出了相关参考资料。
下面,终于是有点入题的内容了–怎么实用 iPhone 上的服务。
电话:
1-408-555-5555
吐血,也可以理解,一切都是协议。这下好了,你连炫耀一下知道 MO call,MT call 的机会都没了。
Safari 也可以自动把一串数字解释成电话号码。
至于 mail 和 google map,和通常网页也无区别啦:mailto: 协议以及通常的 google map url 就行了。
在编写为 iPhone 优化的页面是,再一个参考是 Safari 发送的 agent 字符串:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3
和桌面平台的 Safari 很像,但是多了
platform 描述:(iPhone; U; CPU like Mac OS X; en)
mobile 版本:Version/3.0 Mobile/1A543a Safari/419.3
在使用 CSS 时,要考虑到 iPhone 只支持 screen –你没看错哈–而不支持 print 和 handheld media query–这些都是 CSS3 的特性。所以,编写 iPhone 优化的页面时,可以这样引用 css 文件:
使用 only 关键字。这样也不会影响其他浏览器。[tags]programming, iphone[/tags]
Tags: Gadget, iphone, programming, Technology
硬件模拟及驱动调试
IBM developWorks 上的两份文章
Debugging simulated hardware on Linux, Part 1: Interrupts and Interrupt Service Routine
Debugging simulated hardware on Linux, Part 2: Device driver debugging
讲述怎样构建模拟环境调试Linux驱动--感觉文笔有点乱,莫非因为作者是印度人?……
概念不算新鲜。第一搞好交叉调试环境,其中target上用 kgdb patch。第二就是作者列出的3个要素方法,用一个kernel thread 调用 INT 产生软中断,用kernel debugger调试,用polling thread 玩极限。
为了用kernel thread 模拟中断源,你得再造待模拟设备的各种特性,包括寄存器等数据结构。所以做完这些,你会发现--作者也坦承--自己好像在搞硬件模拟了。
文章给出了一些过程逻辑,列出的参考资料比较有用。
[tags]driver, programming, linux, kernel[/tags]
Tags: driver, kernel, linux, OpenSource, programming, Technology
任天堂GBA编程
Jonathan S. Harbour 在自己的网站上贴了篇 Programming The Nintendo Game Boy Advance。看日期今年1月25号最后更新的,有些日子咯。
这份因为与任天堂有些不能解决的法律问题而没有付梓的劳作有完整PDF下载。
在VisualBoyAdvance emulator上的运行效果演示。


还是小孩的时候,从来不知道世界是怎样运转的,那些神秘的规律,奇妙的实际…… 长大了,从F = ma开始,可以慢慢理解,重新审视世界,那种你也能掌控和改变一些东西的感觉,是什么都不能比拟的。
[tags]gba, game, 任天堂, nintendo, programming[/tags]
Tags: 任天堂, Gadget, game, gba, nintendo, programming, Technology








