当前位置:首页 >> 机械/仪表 >>

毕业论文(设计)文本规范范例(理工科)


毕业论文(设计)

题 系 专

目 部 业

qDou(豆瓣 Symbian 客户端) X X系 年级 2006 级 XXX XXXXXXXXX XXX

学生姓名 学 号

指导教师

四川大学锦江学院毕业论文(设计)

qDou(豆瓣

Symbian 客户端)

XXX 专业 学生 指导教师

【摘 要】 qDou---豆瓣 Symbian 客户端, 采用的是 Qt 进行编写。 豆瓣是一家 Web2.0 网站,豆瓣主要通过用户点击及购买电子商务网站的相关产品,来获得收入。 本次设计的 qDou 将主要是采用 Qt 的 Graphics View 框架编写,部分框架运用 Declarative UI(Qt 的下一代控件),在与豆瓣官方数据接口的交换上,利用豆瓣提供的 Api key,通过 OAuth 协议进行对豆瓣数据的访问,修改以及提交。 利用豆瓣网提供的API结合Qt的下一代控件Declarative UI 轻松的实现了具有平滑, 收放自如, 动态变换的一款豆瓣客户端,这种控件主要针对于移动平台上,比如手机或者 上网本。采用Qml语言使开发者和设计者在完成他们工作的时候更多的高效。另一方面这 种简单易学的语言,是那些不熟悉C++的开发人员可以方便的使用Qt。为了保护豆瓣用户 私有数据的安全,豆瓣采用OAuth协议来完成数据的写入,修改和删除。 S60下豆瓣客户端新增了如搜索书籍,电影,音乐查询,收发豆邮等更强大的功能,同 时你可以读取他们的评论,看看其他豆瓣的用户对这个条目时什么观点或者推荐好的条目 给你的好友。另一方面,qdou 提供了朋友之间的数据可视化,通过豆瓣这个巨大的网络, 你可以发现你与其他人之间的联系,共同的爱好.这些功能满足了时下网络社交生活的需 要,更增加了无穷乐趣。由于使用Qt进行开发,所以qDou可以轻松的发布到Symbian Maemo,webOs,甚至Android上。 【关键词】 豆瓣 APIKey Declarative UI OAuth 协议 Qt

-I-

四川大学锦江学院毕业论文(设计)

qDou(Douban Client On Symbian)
【Abstract】qDou (watercress Symbian client) is developed with Qt.Douban is a Web2.0 website mainly through users to click and buy related e-commerce site products to obtain income. The design of qDou will be mainly used the framework of Graphics View of Qt to complie, and part of the framework uses Declarative UI which is the next generation control of Qt, in term s of the interface data switching of www.douban.com, it uses API Key afford by www.douban. com, calling, modifying and submitting the data of www.douban.com through OAuth protocol. With API provided from douban network and combining the next generation widget (Declarative UI) of Qt,qDou has a fabulous fluid user experiences with smooth controls,dynamic user interfaces.The next generation widget is applied to mobile platforms or notebook.It adopts Qml language to make developers and designers more efficient when they work on their projects.On the other hand, this language is easy to learn so that those who are not familiar with C++ developers can easily use the Qt.In order to ensure data security, it uses OAuth protocol for data writing, modification and deletion. It is an open protocol to allow secure API authorization in a simple and standard method from desktop and web applications. qDou on Symbian added new powerful features such as searching books, movies, music critic, send and receive Douban email.At the same time, you can read these item critic to pay attention the views of other Douban users or recommend a good item to your friends .On the other hand,qdou provided a data visualization about friends through the large network. You may find the relationship or common interests between you and your friends.So it meets the needs of social networks life nowadays. because of adopting Qt for development,It’s easy to realease qDou on multi-platform like Symbian, Maemo ,WebOs, even Android. 【Key words】Douban API Key Declarative UI OAuth protocol Qt

- II -

四川大学锦江学院毕业论文(设计)

目 录
绪 论 ........................................................................................................................................ 1 1.1 背 景 ............................................................................................................................. 2

1. 开发概述 .............................................................................................................................. 2 1.2 课题来源 ......................................................................................................................... 4 1.3 国内外研究现状 ............................................................................................................. 4 1.4 论文主要工作 ................................................................................................................. 7 1.5 论文结构 ......................................................................................................................... 7 2. 相关技术概念 ...................................................................................................................... 8 2.1 关于 Qt ............................................................................................................................ 8 2.2 OAuth 协议 ..................................................................................................................... 9 2.3 豆瓣 API ....................................................................................................................... 11 2.4 cookies ........................................................................................................................ 11 3. qDou 的设计 ....................................................................................................................... 12 3.1 概要设计 ....................................................................................................................... 12 3.1.1 程序流程图 ........................................................................................................... 13 3.1.2 模块框架图 ........................................................................................................... 14 3.1.3 系统数据流程图 ................................................................................................... 14 3.1.4 系统数据结构设计 ............................................................................................... 14 3.2 系统界面设计 ............................................................................................................... 18 3.2.1 MVC 模型 ............................................................................................................... 18 3.2.2 qDou 中的 MVC 模型 ............................................................................................. 19 3.2.3 C++向 qml 扩展 .................................................................................................... 20 3.2.4 qml 中调用 C++形式函数 ................................................................................... 21 3.3 qDou 认证 ..................................................................................................................... 21 3.3.1 获取未授权的 Request Token ............................................................................ 22 3.3.2 请求用户授权 Request Token ............................................................................ 22 3.3.3 使用授权后的 Request Token 换取 Access Token .......................................... 22 3.3.4 使用 Access Token 访问或修改受保护资源 ................................................... 23 3.4 利用 NetworkAccessManager 在本地储存 Cookies .................................................. 23 3.4.1 NetworkCookiejar 与 NetworkCookie 的关系 ................................................. 23 3.4.2 将 Cookies 导入 Webkit ...................................................................................... 24 3.5 PhotoView (豆瓣关系可视化) .................................................................................. 24

- III -

四川大学锦江学院毕业论文(设计)

3.5.1 基于 GraphicsView .............................................................................................. 24 3.5.2 豆瓣用户信息的获取数据的获取 ...................................................................... .25 4. 实现运行 ............................................................................................................................ 25 5. 测试 .................................................................................................................................... 26 总结以及展望 .......................................................................................................................... 28 参考文献 .................................................................................................................................. 29 附录 .......................................................................................................................................... 32 致谢. ........................................................................................................................................................... 33

- IV -

四川大学锦江学院毕业论文(设计)

绪论
现实社会中,人与人的交流是通过人与人之间的介绍、握手来形成一个朋友圈、联系 圈的,每个人不需要直接认识所有人,只需要通过他的朋友,朋友的朋友,就能促成一次 握手。而普通的网络交际,则大多数通过某些平台来实现,比如将自己放到一个平台中去, 让很多人看到,并且联系你认识你。两者的优缺点明显,社会性交际优点是可靠,彼此关 系建立在可靠的人际网络上,缺点是产生握手的时间长、代价较高;平台式的网络交际优 点是成本低,但不可靠。 那么在网络中将这套机制拷贝,即在理论上,获得可靠与低成本的双重优点。还有一 些优点就是,SNS 中,在朋友圈内关系往往真实度很高,非常可靠,互相之间不存在所谓 网络的“假面具” ,因此,比较容易实现实名制;sns 基于人传人联系网络,一传多,多传 多,利用网络这一低廉而快速的平台,网络建立的速度会非常快,这又使得建立人脉网络 的成本进一步降低。 先说个题外话,其实有关 Web 2.0,除开技术细节,完全由网民去发表内容、形成舆 论,在我看来,并非完全行得通。如果是服务信息性的还好,但敏感信息呢?把舆论不加 控制地放任自流,在一个完全理想化的民主社会是可能的,但目前还不行,这里面有多种 原因。并且,网民实名制目前未能推行,每个人在网上说话不需要负责这种想法到处都是, 如何控制不负责任的言论?所以 Web 2.0 在现实环境中,不可能放得很开。 说了这么多题外话,其实只是说,如果真要做不需网站管理员控制的言论网站,SNS 算是一个较为理想的 Web 2.0 手段。理由很简单,SNS 较为贴近实名制,线上线下的身份 比较一致。由此可看出来,SNS 是未来一个有前景的东西,至少在国内是如此。这方面的 市场缺口很大,既然传统媒体都转向网络了,社会交际,又如何只能光靠见面吃饭打电话 呢? 到 2000 年,搜索引擎的发展影响了人们的生活方式,谷歌已经成为人们日常生活不 可缺少的一部分。随后,互联网的发展进一步扩展到 Y 一代人群(1978 年及其后出生的一 代),社交网站也随之兴起,并迅速吸引了一大批 25 岁至 34 岁、甚至年龄更大的用户群。 社交网站正在改变我们使用互联网的方式,而搜索引擎不再是美国流量最大的网站也 就不让人意外了。数据显示,社交网站在 2006 年 6 月超越搜索引擎,成为流量最大的网 站类别,而 Facebook 的热门程度甚至超过某些色情网站。 社交网站将取代搜索引擎吗?我不想深究。也许危机本来就存在于搜索引擎的自身特 性中。比如,过去,我们一边在谷歌中输入问题,一边拨打远在印度的呼叫中心寻求支持。 但现在,我们不再需要谷歌,我们去 Facebook。在 Facebook 上,用户不需要找信息,相 反,信息自动找上门。 搜索引擎在互联网发展初期,为广大对网络一窍不通的用户指明了方向,通过最简单
-1-

四川大学锦江学院毕业论文(设计)

的信息索引推荐服务为大众提供了便利!但是随着网络的发展,用户的自主性和能动性也 逐渐提升,网络习惯也在发生着潜移默化的微妙变化。虽然我并不认同互联网使用模式将 在近期有大的变迁,但是随着社交网络的发展和网民网络熟练性的提升,这种趋势非常明 显!也就是说,要寻求长远的发展规划,就必须考虑如何创建这种社交并应用到不同行业 的网络运营规划中去。

1 开发概述
随着互联网高速的发展,社交网站也日益壮大,有人甚至预测社交网站引爆互联网的 第三次革命,Google 也在此时宣传下一代的搜索应该是社交化搜索,那么社交网络是如何 吸引年轻人的呢,它是怎样改变人们传统的生活和工作方式,社交网络在传统的媒体的影 响下是如何快速成才并不断壮大的呢?它与传统媒体有何区别呢?

1.1 背景
让我们先来看一组数据,看看全球各大社交网站也在创造着自己的奇迹: 1. 2010 年 2 月 2 日, 据国外媒体报道,Facebook 正赶超雅虎将成为全球第 三大网站, 与微软谷歌领衔前三。 2. 2009 年 12 月,Facebook 的独立人次达到了 4.69 亿。 3.美国互联网流量监测机构 Experian Hitwise 日前公布报告称,在截至 3 月 15 日的一周 里,社交网站 Facebook 超过 Google 成为美国 访问量最大的网站。 4.Twitter 作为移动社交网站,其研究小组发现平均每天的 Tweets 数量从 2009 年的 250 万一直上涨到了 2010 年 1 月的 500 万。 5. 2009 年移动 Twitter 用户的增长速度达到惊人的 2800%。 6. Twitter 宣布收购第三方 iPhone 客户端 Tweetie。 7. Facebook 是全球第一大社交网站,用户数量近 5 亿。 从上面的数据可以看出 Facebook,Twitter 的成功不仅体现在对新型社交网络技术上 的创新,还有就是很大程度上得益于其数据的开放,提供第三方搜索 API,不仅让你的服 务器减轻负担,而且他们的搜索算法显然比你的算法更优秀,从而使众多的开发者使用其 提供的 API 开发出众多实用、新奇的第三方应用,这些为社交网站锦上添花。不论是基于 BS 还是 CS,从另一方面来说,这也是流量的另一大来源,通过这些应用,人与人之间的 关系更加紧密,每个人都是这张网络上的一个节点,你的一举一动也许可以带动你周围众 多 follower 的关注。SNS(社交网络)靠得就是人气,他的任务是聚众,为了聚众,他用什 么手段,那就是他的核心竞争力了?以 facebook 举例, Facebook 靠的是你的朋友在上面活 动,你可以参与他们的活动,这就是全部的理由。至于搞什么活动不重要,写不写什么文 字也不重要,唯一重要的是你需要 Facebook 这样一个 tool 来保持和你朋友之间的关系。
-2-

四川大学锦江学院毕业论文(设计)

虽然 Facebook 不仅仅限于认识的朋友,但是其主要目的就是提供给熟识的朋友进行 交流之用,因此 Facebook 本身并不提供任何全站的公共信息广播,也不开放匿名访问, 你和自己认识的朋友之间的交流本来就是私密性的,这些信息本来就是被保护起来的。 而且尤其重要的一点就是 Facebook 并不鼓励 UGC 用户创造内容)这是和其他 web2.0 ( , 网站的本质区别。 Facebook 真正鼓励是你 和你的朋友在 Facebook 上面“发生了互动的行 为”,而不是“互动的所创造的内容”。 说白了就是一句话: 高质量的内容和资源在吸引你, 所以要保持高质量的内容和资源, 你必须依靠高质量的会员持续的 UGC。国内社交网站(SNS)市场的巨大潜力,吸引着越多 越多的资本进入。豆瓣网已经完成了第二轮近千万美元的融资。不过,此轮融资过后,豆 瓣网将继续和人人网、开心网们承受着收入和盈利的挑战。据豆瓣网创始人杨勃介绍,公 司的第二轮融资于去年年中开始筹备,去年下半年确定挚信资本和联创策源共同向豆瓣网 注资近千万美元。 据统计,目前国内的 SNS 网站规模已达千余家,而且还在不断增长。同时,社交网站 的用户数量也保持着较快的上升趋势。根据 CNNIC 测算,到 2009 年底,中国使用交友和 社交网站的网民数将达到 1.24 亿。随着在中国计算机的进一步普及,这个数字还会进一 步上升。 在国内 SNS 用户群体中,年轻化的特征非常明显。CNNIC《报告》显示,年龄为 20 到 29 岁的用户占到整体人数的 52.6%,远远高出在这一年龄段的全国网民比例。其中,学生 与职场人士这两大群体是中国社交网站用户的主力,分别占到 50.3% 和 31.1%的比例。由 于年轻人对互联网新型应用的兴趣较大、接受程度高,社交网站用户呈现年轻化是理所当 然的。 此外,我国社交网站用户中高学历的特点也比较明显。CNNIC《报告》数据显示,大 专以上学历的用户占到了社交网站用户的近六成水平,达到 59.1%。 CNNIC《报告》分析显示,我国社交网站的平台化特征正日趋明显。随着在网民中渗 透率的不断提高,社交网站正在逐渐成为包括博客、Email、IM 等各种互联网应用在内的 聚合平台。数据显示,给好友留言成为用户最常使用的功能,使用率占到 51.2%,图片/ 相册功能的使用率为 48.6%,博客/日志功能的使用率则达到了 41.5%。由于用户社会关系 在社交网站上日渐积累,越来越多的交互和信息传递都会通过社交网站这一平台来完成。 同时,社交网站对用户互动的内在激励作用能够有效的促进互动型应用,用户对新闻 资讯、音频视频的转帖传播和评论比起传统网站将大大增加。 休闲娱乐和游戏仍是目前社交类网站的主要应用功能。在关于用户使用社交网站目的 的调查中,42.4%的用户表示是为了“打发时间”,而以“玩游戏”为目的用户占到 27.4%。 随着社交网站诚信环境的进一步发展,四成用户期待手机 SNS 应用,用户对网络交易 类应用的需求进一步深入,CNNIC《报告》显示,希望社交网站提供第三方支付增值服务 的用户占到 25.6%。而通过对不同学历的用户偏好进行调查的结果显示,硕士及以上的用
-3-

四川大学锦江学院毕业论文(设计)

户对第三方支付的偏好达到了 52.8%,远远高于其他学历的人群。 值得注意的是, 随着无线互联网应用的日渐广泛与深入, 社交网站用户在手机上的 SNS 应用需求越来越大。调查数据显示,有 40.9%的社交网站用户期望可以在手机上使用 SNS 服务。据了解,目前我国手机网民规模已达 1.8 亿,同时随着手机 OS 和各个平台的开放, 社交网站在手机应用上有着良好的发展前景。 尽管资本在不断注入,国内 SNS 网站无一例外地面临着收入和盈利的挑战。无论是豆 瓣网的“电子商务+广告”模式,还是开心网、人人网的广告模式,将用户的点击换成真 金白银都存在不小的难度。对此,杨勃表示,豆瓣网不同的产品生命周期有不同的盈利目 标,而营收增长很快的社区估计会是下一个实现盈利的产品。

1.2 课题来源
毕业设计,选择此课题的原因有二: 1. 豆瓣网作为一个有特色的社交网站,却没有一款出色的移动客户端,在已有的客户端 上有支持 Andriod 和 iphone 的,但是功能简单,相对粗糙,各个功能没有整合。豆瓣 现在并不像 Twiiter 或者 facebook 那样在国外的受众面达到很广的程度,它主要还是 面向的是国内的用户,而在国内众多使用 NOKIA 手机的豆瓣用户中唯独也缺少支持 Symbian Os 的豆瓣手机客户端,这未免有些遗憾。在加上随着 3G 的到来,整个行业都 在向移动终端上转移,在不受约束的移动终端上的社交网络必将会火起来。 2. 自己对 Qt 比较熟悉,在界面和嵌入式上深知 Qt 都有很大的优势,Qt 也是 Symbian 标 准的应用开发平台 而在选择课题期间,正好 Qt 发布了 4.7 技术预览版,下一代的控件 是专门为移动平台打造的,所以想借这个机会一面来完成自己的毕业设计,一面掌握 Declarative UI(Qml),同时自己也可以腾出时间来学习一下 Symbian Os。毕竟 NOKIA 收购 Trolltech 之后,基本上算是押宝在 Qt 上了,而且从 Symbian 3 开始,Qt 将作为 标准的开发平台,这对擅长 Qt 做开发的我来说,也是一个好的机会。

1.3 国内外研究现状
开放 API(OpenAPI)是 SaaS(Software as a Service,软件即服务)模式下常见的 一种应用,网站的服务商将自己的网站服务封装成一系列 API(Application Programming Interface,应用编程接口)开放出去,供第三方开发者使用,这种行为就叫做开放网站 的 API,所开放的 API 就被称作 OpenAPI(开放 API) 。 网站提供开放平台的 API 后,可以吸引一些第三方的开发人员在该平台上开发商业应 用,平台提供商可以获得更多的流量与市场份额,第三方开发者不需要庞大的硬件与技术 投资就可以轻松快捷的创业,从而达到双赢的目的,开放 API 是大平台发展、共享的途径, 让开发者开发一个有价值应用,付出的成本更少,成功的机会更多。今天,OpenAPI 作为 互联网在线服务的发展基础,已经成为越来越多互联网企业发展服务的必然选择。
-4-

四川大学锦江学院毕业论文(设计)

Twitter 的开放之路。 OpenAPI 的典型成功范例是 Google Maps API 和 Twitter,Google Maps 有 Google 这 样的大公司支持,成功当然并不奇怪,但是 Twitter 的成功就很能说明问题。事实上,如 果 Twitter 仅仅是一个网页形式的微博客的话,Jaiku 就可以轻松的将其打败,Twitter 根本不可能取得今天的成就。 Twitter 的活力就在于开放 API,Twitter 的成功和开放 API 密不可分。Twitter 的开 放 API 可以激发个人创作的积极性,引来了大量的第三方应用,这些第三方应用同时又扩 大了 Twitter 原有的功能,让 Twitter 更好用,从而极大丰富了 Twitter 平台自身的功用 和乐趣,现在,Twitter 超过一半的流量都是来自第三方 API。 随着 Twitter 的 OpenAPI 发布数量不断增加,运营过程中也开始暴露出一些问题。 OpenAPI 的巨大的访问量引起了 Twitter 种种性能问题, 使得 Twitter 的稳定性大为降低, 为了支持大量的外部 API,Twitter 宕机频繁,这估计是几乎所有 Twitter 用户都遇到过 的现象。但即使如此,Twitter 也没有放弃对 OpenAPI 的支持。因为开放 API 是历史的潮 流,是必然的趋势,顺之者昌,逆之者亡,Twitter 之所以击败众多各式各样的微博客网 站,开放 API 功不可没。 由于社交网络在国内起步较晚,大都处于照搬,照抄的模式(校内,开心,各大门户 网站的微博),这些很拙劣的 Facebook 模仿者,他完全没有领会社交网络的本质,完全用 自己做社区软件的思路去做一套 Facebook, 搞出来的 UCHome 压根就是一个社区网站,说通 俗一点就是一个 BBS。 在加之有一道很大的“墙”,看似保护了本地的互联网企业的发展,但是实质却阻碍 了社交化的融合和发展。导致了我们国家的社交网络发展缓慢,缺少核心竞争力,所以一 直处于跟风的状态.同时国内大型社交网站开放 API 的时间也较晚,所以相应的附加功能 或者不同平台上的开发相对滞后,这都造成了国人没法最快,更好的使用和了解最先进的 互联网技术.豆瓣是算是比较开明的一家中国互联网企业,也是最先开放 API 的几个之一。 独特的运营机制加上网站区分于普通的社交网站的鲜明性,是其独树一帜.在开放 API 之 后, 出现的最多的形式是浏览器与插件绑定, 第三方应用诸如 andriod 客户端, 豆花(iPhone 客户端)等一批针对移动终端的小软件,但是功能简单(有的只实现广播消息),用户体验 差,在智能机大行其道的当下,已不符合当前形式下移动用户的需要.用户不仅需要的是 一套功能强大集于一身的口袋软件,而且需要的是能有完美体验的 UI。这才是当前移动设 备不断发展,相关技术也同步支持的大趋势。随着 3G 的发展,传统 PC 向上网本,平板电 脑的过渡,桌面上应用向移动转移,这也应该是以后软件发展的一个方向,同时开发数据, 开放 API 也是网站做大做强,聚众的另一个手段。 国内的一些 Twitter 模仿者最初也尝试开放 API,但一切好东西到了中国,没有不走 样的,腾讯为了发展腾讯滔滔,就曾经屏蔽过饭否的 QQ 机器人,饭否虽然吃过这种苦头, 然后一旦发展成为国内微博客的领先者,就干起了同样的事情,远的是屏蔽叽歪的 IP,使
-5-

四川大学锦江学院毕业论文(设计)

得叽歪用户无法同步信息到饭否,近的是前些天饭否屏蔽嘀咕的 IP,使得嘀咕用户无法将 信息同步到饭否。 饭否的想法大概是,自己好不容易发展了这么多用户,忽然旁边跳出来一个新的竞争 对手,通过 OpenAPI 实现了比自己更多的功能,因此为了阻止用户的流失,必须屏蔽掉竞 争对手的 API 调用,否则,用户都跟别人跑了,自己不成了“赔了夫人,又折兵”了。 KESO 曾经说过,网站不能靠限制用户离开来留住用户,越开放越让用户放心。服务商 把心思花在套牢用户,而不是改善服务上,是一种很不上流的做法。老子说,大智若愚, 大巧若拙。看起来很傻、很笨的做法,可能恰恰是最聪明的。同样是为了留住用户,两种 做法的境界截然不同,效果当然也肯定不一样。你越自信,用户对你也就越有信心。 道理虽然简单,但是封闭意识仍然是国内网站的主流思想,生怕自己的用户跑到竞争对手 那里。其实,每个用户都是有自己的头脑和思想的,你对用户好,用户自然会对你好,服 务是死的,用户是活的,通过限制的方法来阻止用户的离去,最终会伤了忠实用户的心。 Facebook 成功了,而且不是小成。当初 Facebook 以校园为基础,掀起真人社交网 络的时候,就引来了大量的跟风者。这个跟风还不是中国人民的专利,是全世界都在跟风。 记得前段时间就有人列出了各种语言的 Facebook 跟风网站。 后来,Facebook 开始开放了 API,引来了大量的第三方应用在 Facebook 上驻扎。这甚至 引起了 Google 这个互联网老“新秀”的警惕。开放 API 似乎也会开始逐步成为一种风潮。 但是,谁想做平台?谁能做平台?谁想做内容?谁能做内容? Facebook 的这种开放 API,模式很简单,我出用户,你出内容。一起给用户服务。我 不动你的内容,你别想动我的用户。有钱大家一起赚。 当然了,Facebook 作为平台,就像赌场里坐庄的一样。是有先天优势的。而这个先 天优势,当然也是基于他前期的庞大用户基础,以及用户已经对这个平台有足够的粘性而 建立起来的。 Facebook 的这个模式,一眼都看的出来,作为平台的 Facebook 牢牢的占据了产业的 上游。而内容服务商,是处于产业的中下游,在各种方面,都受制于 Facebook。就像中国 移动一跺脚,SP 就死一片一样。哪天 Facebook 打个喷嚏,这些 Facebook 的内容提供商 也都得感冒不可。谁不想占据产业的上游呢?很显然,把自己做成平台,成为了不少“类 Facebook”网站的目标。 不过,平台可不是怎么好建的,平台首先就必须有牢固的用户基础和对用户足够的吸 引力,否则,一开放,用户都跟别人跑了,不成了“赔了夫人,又折兵”了。另外,也有 人说校内也要开放 API 了。 现在在 WEB2.0 领域, “老当益壮”的搜狐,也开始发力了。搜狐的博客搞了一个 SOW, 好像是有想做平台的意思。但是好像博客这个东西,也不是特别是和做平台,而且从现在 看,开放的还不够。仅仅是一个 input 而已。 做不了平台,咱们就做内容吧。做内容,首先就要有内容,而且还有卖点,有技术。
-6-

四川大学锦江学院毕业论文(设计)

并且要有除了用户资源之外的“核心竞争力” 。否则,有了内容,也很可能给别人做嫁衣。 帮别人探路。 豆瓣也开放了 API,没有深入研究,应该就是走内容服务商的样子吧。不过,豆瓣最 核心的竞争力在什么地方?不是图书资料,甚至不是豆瓣拥有多么强大的技术优势。而是 在用户,是在豆瓣拥有一大群很多网站所不拥有的“大量的、优质的用户群” 。作为这样 的网站,他适合做一个平台的内容服务商吗?或者说,他会心甘情愿的去站到一个产业的 下游来觅食呢??? 开放 API,是必然的趋势。但是,这个产业链的建立和健全,任重道远。尤其是在中 国——这个对创意、对知识产权相对漠视的国度。

1.4 论文主要工作
qDou 将主要是采用 Qt 的 Graphics View 框架编写, 部分框架运用 Declarative UI(Qt 的下一代控件),在与豆瓣官方数据接口的交换上,利用豆瓣提供的 Api key,通过 OAuth 协议进行对豆瓣数据的访问,修改以及提交。 UI 方面:关于 Declarative UI,是基于 Graphics View 框架打造的下一代控件。主要 针对于移动平台上,比如手机或者上网本,并且具有独特的 Flick 特性,使其本身通过很 简单的接口调用便可具有平滑,动态变换的 UI,同时加上 Declarative 本身所采用的 Qml 语 言是基于 ECMAScript。这种比较松散的声明性编程语言使得懂得 JavaScript 或者 ActionScript 的编程人员,也可写出漂亮的应用程序。由于 Declarative UI 的属性绑定 (Property Binding),对网络访问的透明(Network Transparency: 内部自动加载请求资源) 以及良好的 C++扩展(Extending QML),使得其不仅可适用手机上的开发,同时利用良好的 C++扩展特性也可打造丰富的 pc 平台上的应用。 数据方面: 豆瓣提供了第三方 API,通过 xml 文件来进行交互,而对数据进行修改, 提交的,需要适用 OAuth 协议进行授权,关于 OAUTH 协议,它为用户资源的授权提供了一个 安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAUTH 的授权不会使第三方 触及到用户的帐号信息(如用户名与密码) ,即第三方无需使用用户的用户名与密码就可 以申请获得该用户资源的授权,所以在编写 qDou 界面的同时, 还需一个 OAuth 的 C++版本, 将 OAuth 与 Declarative UI 融合才是一个可以部署到 Pc(Window ,Linux ,Mac)和移动终 端上(Symbian,Maemo)上的豆瓣客户端。 本篇论文,主要目的是为了探讨 QML 部署到 Symbian 以及 Maemo 上的可行性,为移动 终端上的社交软件的打造提供一个思路。

1.5 论文结构
绪论 介绍社交网络现在,国内外的社交网络发展的现状以及为什么开发移动终端上的 客户端以及编写 qDou 的初衷豆瓣。
-7-

四川大学锦江学院毕业论文(设计)

第二章 概述以及相关技术的概念。 第三章 qDou 编写所采用的相关技术。 第四章 实现运行情况,以及各个模块的截图。 第五章 qDou 在模拟器或者移动终端上测试的数据。 编写后的总结,提升的空间,对 Declarative UI 的认识以及这次编写 qDou 中自己编码上 的一些认识。 参考文献 附录 致谢

2 相关技术概念
本章将主要介绍 qDou 中用到的相关技术的一些背景,概念,以及发展的现状。

2.1 关于 Qt
Qt 是一个跨平台的 C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺 术级的图形用户界面所需的所用功能。Qt 是完全面向对象的,很容易扩展,并且允许真正 地组件编程。 自从 1996 年早些时候,Qt 进入商业领域,它已经成为全世界范围内数千种成功的应 用程序的基础。Qt 也是流行的 Linux 桌面环境 KDE 的基础,KDE 是所有主要的 Linux 发行 版的一个标准组件。在支持 linux 的同时,windows,mac,Symbian,Maeomo,你都可以 通过代码的一次书写以及完成多个平台的移植。比如 Qtopia Qtembeded。 现在 Qt 的最新的版本为 4.7。Qt 4.7 的最重要的补充就是 Qt Quick(Qt 的用户界面 创建工具包), “高层次的 UI 技术,允许开发人员和 UI 设计师一起工作,以创建动画,触 摸功能的用户界面,轻量级的应用程序” 三新技术组合到一起,形成了 Qt 快速创建用 。 户界面工具包:它包括 QML(Qt 的元对象的语言 - 声明式语言),Qt Creator IDE 中的新 工具(包括一个可视化编辑器,让设计人员和开发者用一个迭代法在相同的代码上工作)和 QtDeclarative(Qt 的一个新的模块,它允许一个说明性编程方法)。使 Qt 更容易的被那些 对 C + +不是特别熟悉开发人员和设计师使用。 一个增强的 Qt Creator IDE,其中包括一个先进的 C + +代码编辑器,项目建设管理 工具,可视化调试器等工具。QML(“Qt 的元对象语言”),一个易于使用的,声明性语言。 用来描述一个程序的用户界面:包括看起来是什么样子,以及它如何表现。QML 是一个被 指定为一个用户界面与性能的对象树。 JavaScript 是用来作为 QML 的脚本语言。Qt 库中 的一个新的模块名为 QtDeclarative,它提供了一个声明框架,用于创建高度动态的,可 定制用户界面。
-8-

四川大学锦江学院毕业论文(设计)

Qt 的 4.7 还包括一个 Qt WebKit 组件的更新,以提供更加稳定和更好的性能。新版 本也是首次发布,由 Qt 的持续集成系统控制,该系统控制合并成 Qt 新功能的过程。它的 目的是防止新的错误,提高稳定性和加快发布时间表。因为 Qt 的不断发展,这将是非常 重要的。 Symbian 的智能安装程序可以更容易地将 Qt 应用部署到 Symbian 手机上, 特别是在现 有的没有安装 Qt 库的手机(Qt 只在 Symbian ^ 3 成为了标准)。有了智能安装程序,开发 人员不必担心包括 Qt 或他们应用程序对 SIS 文件的依赖。他们也不需要告诉用户安装额 外的关文或检查 Qt 库的相关的安装问题。 使用智能安装程序,开发人员可以打包 Symbian 的 Qt 应用程序。当用户安装了一 个.SIS 文件(直接或来自像 Ovi Store 那样的配送点)智能安装组件将检查什么样的依赖关 系是需要的(如 Qt,Qt WebKit,Open C),如果有必要的话可以从网上下载并安装它们。 关键的好处是,它可以确保手机获得最新版本的 Qt 和它的依赖关系(确保应用程序能够在 最佳状态工作),而且还大大减少了 SIS 文件的大小,因为它不再需要包含在.SIS 文件的 依赖关系。这就好比 ubuntu 下的软件管理 apt-get 命令,直接从网站上下载相关的。

2.2 oAuth 协议
OAuth为用户提供了一种可以不共享密码而授权第三方来访问其资源的方法。它超越 了传统的客户机/服务器认证的模型,客户端的用户使用信用证书来访问服务器上的资源。 OAuth为这种模型引入了一种新的第三方角色:资源所有者。在OAuth模型中,作为不是资 源所有者的客户端请求访问在服务器上的资源,而资源的访问权限是由资源所有者控制 的。客户必须首先向资源所有者申请许可以便访问这些资源,而这许可就以某种令牌的形 式来匹配对私密信息的共享。 在弄清楚OAUTH流程之前,我们先了解下OAUTH的一些术语的定义: OAUTH相关的三个URL: Request Token URL: 获取未授权的Request Token服务地址; User Authorization URL: 获取用户授权的Request Token服务地址; Access Token URL: 用授权的Request Token换取Access Token的服务地址; OAUTH相关的参数定义: oauth_consumer_key: 使用者的ID,OAUTH服务的直接使用者是开发者开发出来的应用。 所以该参数值的获取一般是要去OAUTH服务提供商处注册一个应用,再获取该应用的 oauth_consumer_key。如Yahoo该值的注册地址为: https://developer.yahoo.com/dashboard/ oauth_consumer_secret:oauth_consumer_key对应的密钥。 oauth_signature_method: 请求串的签名方法,应用每次向OAUTH三个服务地址发送请求 时,必须对请求进行签名。签名的方法有:HMAC-SHA1、RSA-SHA1与PLAINTEXT等三种。
-9-

四川大学锦江学院毕业论文(设计)

oauth_signature: 用上面的签名方法对请求的签名。 oauth_timestamp: 发起请求的时间戳,其值是距1970 00:00:00 GMT的秒数,必须是大于 0的整数。本次请求的时间戳必须大于或者等于上次的时间戳。 oauth_nonce: 随机生成的字符串,用于防止请求的重放,防止外界的非法攻击。 oauth_version: OAUTH的版本号,可选,其值必须为1.0。 OAUTH HTTP响应代码: HTTP 400 Bad Request 请求错误 HTTP 401 Unauthorized 未授权 Invalid Consumer Key 非法key Invalid signature 签名非法 Duplicated OAuth Protocol Parameter 参数重复 Unsupported parameter 参数错误 Invalid / expired Token 失效或者非法的token Invalid / used nonce 非法的nonce

Unsupported signature method 签名方法错误 Missing required parameter 参数丢失

图2-1 OAuth认证流程

OAuth协议致力于使网站和应用程序(统称为消费方)能够在无须露其认证证书的情况下, 通过API访问某个web服务(统称为服务提供方)的受保护资源。更一般地说,OAuth为API 认证提供一个可自由实现且通方法如图2-1: 1. 用户希望在第三网站和应用上使用他在SNS网站上的用户信息,这些第三方网站联 系SNS网站,但是由于没有用户认证信息,这时这些用户信息是不允许访问的。 2. SNS网站把用户的浏览器重定向到SNS网站的登录页面。 3. 如果用户没有登录,用户向普通登录一样,输入用户名和密码完成登录。如果用
- 10 -

四川大学锦江学院毕业论文(设计)

户已经登录(使用记录Cookie的方式),会出现一个页面,问用户是否允许共享他的SNS 信息给第三方网站。 4. 一旦用户选择信任第三方网站,SNS网站将把Web浏览器重定向到第三方网站或者 第三方应用,同时把SNS的用户信息传递过去。 5. 这样第三方网站就可以访问 SNS 网站的用户信息了。 OAuth 的典型案例:如果一个用户拥有两项服务:一项服务是图片在线存储服务 A, 另一个是图片在线打印服务 B。如下图所示。由于服务 A 与服务 B 是由两家不同的服务提 供商提供的,所以用户在这两家服务提供商的网站上各自注册了两个用户,假设这两个用 户名各不相同,密码也各不相同。当用户要使用服务 B 打印存储在服务 A 上的图片时,用 户该如何处理?法一:用户可能先将待打印的图片从服务 A 上下载下来并上传到服务 B 上 打印,这种方式安全但处理比较繁琐,效率低下;法二:用户将在服务 A 上注册的用户名 与密码提供给服务 B,服务 B 使用用户的帐号再去服务 A 处下载待打印的图片,这种方式 效率是提高了,但是安全性大大降低了,服务 B 可以使用用户的用户名与密码去服务 A 上 查看甚至篡改用户的资源。 很多公司和个人都尝试解决这类问题,包括 Google、Yahoo、Microsoft,这也促使 OAUTH 项目组的产生。OAuth 是由 Blaine Cook、Chris Messina、Larry Halff 及 David Recordon 共同发起的,目的在于为 API 访问授权提供一个开放的标准。OAuth 规范的 1.0 版于 2007 年 12 月 4 日发布。 通过官方网址: http://oauth.net 可以阅读更多的相关信息。

2.3 豆瓣 API
豆瓣 API 是豆瓣为第三方开发人员提供的编程接口。利用豆瓣 API,你可以在你的网 站或程序中使用豆瓣的数据和功能。 为了保护豆瓣用户的数据;防止 API 被滥用或恶意使用,豆瓣要求每个 API 的使用者 申请一个 API Key, 而每个 API Key 唯一标识一个 API 使用者。你可以在申请页面获得 API Key,在页面中填写必要信息后提交,你会得到你的 API Key,例如 c4579586f41a90372f762cb65c78be5d 在之后的 API 使用过程中,你需要在请求中包括 apikey 参数,例如 http://api.douban.com/people/1345767?apikey={apikey} 如果只是想试验一下 API,豆瓣也允许在不申请 API Key 的情况下进行 API 调用。不 过在这种情况下,API 调用被限制为每分钟请求不超过 10 次。使用 API Key 时,对访问的 限制较为宽松,为每分钟 40 次,超过限制的话会被封禁。

2.4 Cookies
Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传 递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。
- 11 -

四川大学锦江学院毕业论文(设计)

假设在用户请求访问您的网站 http:// www.douban.com 上的某个页面时,您的应用 程序发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的 Cookie。用户的浏 览器在获得页面的同时还得到了这个 Cookie,并且将它保存在用户硬盘上的某个文件夹 中。以后,如果用户再次访问豆瓣网的时候,浏览器就会在本地硬盘上查找与该 URL 相 关联的 Cookie。如果该 Cookie 存在,浏览器就将它与页面请求一起发送到您的站点, 您的应用程序就能确定该用户上一次访问站点的日期和时间。您可以根据这些信息向用户 发送一条消息,也可以检查过期时间或执行其他有用的功能。 Cookie 是与 Web 站点而不是与具体页面关联的,所以无论用户请求浏览站点中的哪 个页面,浏览器和服务器都将交换豆瓣的 Cookie 信息。用户访问其他站点时,每个站点 都可能会向用户浏览器发送一个 Cookie,以保存用户的信息,比如 e-mail,登录账号, 用户对于相应界面的设置,而浏览器会将所有这些 Cookie 分别保存。 Cookies 分为会话性质的 cookie 和持久化的 cookie,存放在浏览器内存中,当你在 用代码向客户端写入 cookies 的时候,如果没有指定过期时间,那么 cookie 是存放在浏 览器的内存里面的,它会随着浏览器的关闭而自动消失,不会持久化在硬盘上,也就是你 在浏览器的临时文件里找不到。(Sessionid 就是存放在这类 cookie 中)。 而持久化的 cookie,存放在硬盘上,当你指定了 cookie 的过期时间,那么,在客户 端(一般为浏览器)写入 cookie 的时候就会存放在临时文件夹中,IE 中的 cookies 而针 对 webkit 是没有限制的,你可以在你的客户端手动的编写相应的 cookies 储存,因为如 果 cookies 量一大的话,那么你每次访问页面,都会去匹配。这样的话效率太低,访问页 面也会变得太慢。

3 qDou 的设计
本章将详细叙述 qDou 设计过程,包含具体的程序流程,数据流程,数据结构,OAuth 在 qDou 中一步一步完成认证的过程。Qml 中 mvc 架构,photoview 中的 GraphicsView 框 架,在 qDou 中储存本地 cookies。

3.1 概要设计
UI 方面:关于 Declarative UI,是基于 Graphics View 框架打造的下一代控件。主要 针对于移动平台上,比如手机或者上网本,并且具有独特的 Flick 特性,使其本身通过很 简单的接口调用便可具有平滑,动态变换的 UI,同时加上 Declarative 本身所采用的 Qml 语 言是基于 ECMAScript。这种比较松散的声明性编程语言使得懂得 JavaScript 或者 ActionScript 的编程人员,也可写出漂亮的应用程序。由于 Declarative UI 的属性绑定 (Property Binding),对网络访问的透明(Network Transparency: 内部自动加载请求资源)

- 12 -

四川大学锦江学院毕业论文(设计)

以及良好的 C++扩展(Extending QML),使得其不仅可适用手机上的开发,同时利用良好的 C++扩展特性也可打造丰富的 pc 平台上的应用。对于简单的手机应用来说,在不使用 C++ 扩展的情况下,已经能满足开发者的需求,但是对于 qDou 来说,由于豆瓣 API 支持 OAuth 协议,为了更好的使用遵循协议要求和第三方开发的规范,使 qDou 在支持 QML 的同时能 够支持 C++,也是必要的,同时这种语言采用的是 MVC 结构。 数据方面: 豆瓣提供了第三方 API,通过 xml 文件来进行交互,而对数据进行修改, 提交的,需要适用 OAuth 协议进行授权,关于 OAUTH 协议,它为用户资源的授权提供了一个 安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAUTH 的授权不会使第三方 触及到用户的帐号信息(如用户名与密码) ,即第三方无需使用用户的用户名与密码就可 以申请获得该用户资源的授权。 3.1.1 程序流程图

图 3-1 程序流程图

- 13 -

四川大学锦江学院毕业论文(设计)

3.1.2 模块框架图

图 3-2 模块框架图

3.1.3 系统数据流程图

图 3-3 数据流程图

3.1.4 系统数据结构设计 豆瓣提供的数据时一个 xml 文件,而要在 qml 中使用 xml 文件,特别是较大的数据模 型的时候,快速的访问特定字段的功能,这时需要的是一个数据库语言,qml 中不支持 sql

- 14 -

四川大学锦江学院毕业论文(设计)

而是 xuqery。 对于软件架构师和开发人员而言,XQuery 提高了生产率,增加了敏捷性。XQuery 最 适合于 XML,就像 SQL 最适合于关系数据。 XQuery 为需要访问、挑选、集成和转换一 个或多个 XML 集合的应用程序提供了类似于 SQL 的查询能力。虽然 XML 的狂热者可能 将世界上的一切都看成是用 XML 标签编码的,单关系数据库模型仍然根深蒂固,世界上 大部分数字数据是用由行和列组成的表来进行编码的。SQL 不会很快地消失。相反已经出 现 XQuery 扩展,将 SQL 调用的结果看作是 XML 文档集合的一部分。 简单的说 XQuery 相对于 XML,等同于 SQL 相对于数据库。XQuery 被设计用来查询 XML 数据。 qDou 中涉及的数据项有: 用户信息:用户编号、用户名称、签名、城市、用户头像图片地址 书籍:图书编号、书籍名称、作者、ISBN、页数、定价、出版社、装帧、出版年、评级 电影:电影编号、电影名称、导演、编剧、主演、语言、上映时间、制片国家/地区、imdb 链接、评级 音乐: 音乐编号、音乐名称、表演者、唱片数、ISRC(中国)、发行时间、版本特性、出版 者、介质、评级 收藏条目:条目编号、名称、对应收藏条目的图片地址、收藏者简评、评级 好友条目:好友编号、用户头像图片地址、好友姓名、 签名、 城市 广播条目: 广播编号、广播类型、广播信息 评论条目:评论编号、评论类型、评论者名称、评论者头像地址、简评 添加收藏条目:收藏条目编号、收藏类型、收藏名称、收藏原因、评级 1.名称:用户信息表(表 3.1) 表名称标识:douban-user 数据来源:通过 OAuth 协议授权的用户登录成功后获得的数据表
表 3.1 用户信息表 名称 用户编号 用户名称 签名 城市 用户头像图片地址 字段名称 UserID db:uid Isadmin db:location link rel="icon" 类型 数字 文本 文本 文本 文本 主键 Yes No No No No 非空 Yes Yes No No No

2.名称:书籍表(表 3.2) 表名称标识:douban-book 数据来源:获得特定书籍的名称

- 15 -

四川大学锦江学院毕业论文(设计)

表 3.2 书籍表 名称 图书编号 书籍名称 作者 ISBN 页数 定价 出版社 装帧 出版年 评级 字段名称 ItemID ItemName Author Isbn Page Price Publish Binding Date Rating 类型 数字 文本 文本 文本 数字 数字 文本 文本 日期 数字 主键 Yes No No No No No No No No No 非空 Yes Yes Yes No No No No No No Yes

3.名称:电影表(表 3.3) 表名称标识: douban-movie 数据来源:获得特定电影的名称
表 3.3 电影表 名称 电影编号 电影名称 导演 编剧 主演 语言 上映时间 制片国家 Imdb 链接 评级 字段名称 ItemID ItemName director author cast language year country Date Rating 类型 数字 文本 文本 文本 文本 数字 日期 文本 日期 数字 主键 Yes No No No No No No No No No 非空 Yes Yes Yes No No No No No No Yes

4.名称:音乐表(表 3.4) 表名称标识: douban-music 数据来源:获得特定音乐的名称
表 3.4 音乐表 名称 音乐编号 音乐名称 表演者 唱片数 ISRC 发行时间 版本特性 字段名称 ItemID Itemname Author Number Ean Pubdate Language 类型 数字 文本 文本 数字 文本 日期 数字 主键 Yes No No No No No No 非空 Yes Yes Yes Yes No No No

- 16 -

四川大学锦江学院毕业论文(设计)

表 3.4 音乐表(续表) 出版商 介质 评级 Publisher Type Date 文本 数字 数字 No No No No No No

5.名称:收藏条目表(表 3.5) 表名称标识:douban-collection 数据来源:用户的收藏列表
表 3.5 收藏条目表 名称 条目编号 名称 对应收藏图片地址 收藏者简评 评级 字段名称 ItemID ItemName link rel="icon" Summary Rating 类型 数字 文本 文本 文本 数字 主键 Yes No No No No 非空 Yes Yes No No Yes

6.名称:好友条目表(表 3.6) 表名称标识:douban-friends 数据来源:用户的好友列表
表 3.6 好友条目表 名称 好友编号 用户头像图片地址 好友姓名 签名 城市 字段名称 UserID link rel="icon" UserName Isadmin db:location 类型 数字 文本 文本 文本 文本 主键 Yes No No No No 非空 Yes No Yes No No

7.名称:广播条目表(表 3.7) 表名称标识:douban-broadcast 数据来源:用户的广播列表
表 3.7 广播条目表 名称 广播编号 广播类型 广播信息 字段名称 broadcaId Type Info 类型 数字 数字 文本 主键 Yes No No 非空 Yes No Yes

8.名称:评论条目表(表 3.8) 表名称标识:douban-reviews 数据来源:条目的评论
表 3.8 评论条目表 名称 评论编号 评论类型 字段名称 reviewID Type 类型 数字 数字 主键 Yes No 非空 Yes Yes

- 17 -

四川大学锦江学院毕业论文(设计)

表 3.8 评论条目表(续表) 评论者名称 评论者头像地址 简评 Author link rel="icon" summary 文本 文本 文本 No No No No No No

9.名称:添加收藏条目表(表 3.9) 表名称标识:douban-insertCollection 数据来源:条目的评论
表 3.9 添加收藏条目表 名称 收藏条目编号 收藏类型 收藏名称 收藏原因 评级 字段名称 reviewID Type ItemName Reason Rating 类型 数字 数字 文本 文本 数字 主键 Yes No No No No 非空 Yes Yes Yes No Yes

3.2 系统界面设计
Declarative UI虽然提供了基于ECMAScript的qml语言进行代码的编写,但是不管从 语法的表现形式,语言的松散度上都与传统的C++有很多的不同,但是毕竟Qt是基于C++语 言的,所以它也提供了Qml良好的C++扩展,这不仅有助于Qml与Qt内部模块的结合,也有 助于多平台下的扩展。通过深入了解Qt,其实这种类型的语言在Qt4的早期版本就存在, 当时称之为QtScript,也就是一个脚本语言,但是由于这种脚本语言在发布的时候,相对 麻烦,所以使用者较少,QML在集成ECMAScript的同时,正好利用这一模块完成这种简易 语言的脚本化,然后利用Qt Creator来完成一个简单的脚本化语言的编译和发布,这大大 缩短了开发周期,也使得Qt便于不熟悉C++ 的开发人员和设计人员使用。 由于Declarative UI的属性绑定(Property Binding),对网络访问的透明(Network Transparency: 内部自动加载请求资源)以及良好的C++扩展(Extending QML),使得其不仅 可适用手机上的开发,同时利用良好的C++扩展特性也可打造丰富的pc平台上的应用。对 于简单的手机应用来说,在不使用C++扩展的情况下,已经能满足开发者的需求,但是对 于qDou来说,由于豆瓣API支持OAuth协议,为了更好的使用遵循协议要求和第三方开发的 规范,使qDou在支持QML的同时能够支持C++,也是必要的。 3.2.1 MVC 模型 模型-视图-控制器(MVC)是 80 年代 Smalltalk-80 出现的一种软件设计模式,现在 已经被广泛的使用。 MVC 不是一种设计模式(design pattern),它是一种架构模式 (Architectural pattern),用以描述应用程序的结构以及结构中各部分的职责和交互 方式。它最先是在 1979 年的时候第一次被人提出,不过,当时环境有些不同,网络应用 的概念在当时还不存在。MVC 模式对于 Web 应用的开发无疑是一种非常先进的设计思想,

- 18 -

四川大学锦江学院毕业论文(设计)

无论你选择哪种语言,无论应用多复杂,它都能为你理解分析应用模型时提供最基本的分 析方法。 模型(Model) 模型是应用程序的主体部分。模型表示业务数据或者业务逻辑。 模型是指运用于数据之上的数据规则和数据内容,它一般对应于应用程序所要管理的对 象。在软件系统中,任何事物都可以被抽象成可以对其以某种方式进行处理的数据模型。 应用程序中的用户,信息以及图书是什么?它们只是一堆必须按照对应规则处理的数据 (日期不能是未来的日期,电子邮件有特定的格式,名字的长度不能超过多少字符等等) 。 视图(View) 视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 视图提供了展示模型数据的不同方式。它可能是数据填充的模板。视图可以有多个,而控 制器则决定使用哪个视图。一个网络应用通常由许多控制器,模型和视图组成。控制器可 以被看成是一个主控制器,用于接收用户的所有请求,然后在调用特定的控制器来处理不 同的情况。 控制器(Controller) 控制器工作就是根据用户的输入,控制用户界面数据显示和更新 model 对象状态。 控制器掌管着用户的请求(当用户点击图形用户界面(GUI)上的元素执行操作时,控制 器会收到 HTTP GET 或者 POST 请求) 。它的主要功能就是调用并协调需要的资源/对象来执 行用户请求。通常控制器会为任务调用合适的模型,以及选择合适的视图。

图 3.4 MVC 结构形式

MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可 维护性、可扩展性、可移植性和组件的可复用性。 管理系统为了实现系统的可维护性和业务逻辑同显示逻辑的分离,故各个子系统的开 发应尽量符合 MVC 的技术架构。 3.2.2 qDou 中的 MVC 模型 以MusicView为例,举例说明这种架构(图 3-5),用户点击More,进入功能菜单,输
- 19 -

四川大学锦江学院毕业论文(设计)

入框中输入’ATB’,然后点击音乐,开始查询音乐信息。通过NetworkaccessManager访问 豆瓣提供的音乐查询url,通过地址传参默认为开始条目为1(start-index=1)总共返回为 50个条目(max-number=50),返回的http头信息的code为200时,获取xml文件成功,数据存 储在以xmlListModel的数据模型中,每一个重复数据段以xmlRole存储,而xmlRole中储存 的就是对应的条目的数据, 如图中每张专辑的封面地址, 名称??,由于QML支持动态绑定, 所以直接将获取数据赋给对应view中的Item,刷新便完成整个的音乐查询的过程,结果如 图3-6。
XmlModelList(searchMusic) MODEL Binding XmlModelList(searchMusic) VIEW

AlbumPath XmlRole AlbumName XmlRole ReleaseDate XmlRole AlbumAuthor XmlRole AlbumPub XmlRole AlbumId XmlRole

AlbumPath XmlRole AlbumName XmlRole ReleaseDate XmlRole AlbumAuthor XmlRole AlbumPub XmlRole AlbumId XmlRole 图 3-5 qDou中音乐的MVC架构

图 3-6 qDou中音乐界面显示

3.2.3 C++向 qml 扩展 C++形式给qml发消息,Qml的所有对象都是建立在一个树上面,在这颗树上,qml中所 有声明的对象都是root的一个子树,子树也有可能有其子对象,由于面向对象是C++的一 个最主要的一个特征,那么要将C++代码形式要在脚本上运行的话,最根本的就是要将C++

- 20 -

四川大学锦江学院毕业论文(设计)

实现的那个对象插入到root的一个子树下,这样root下的所有子树都可以通过动态绑定的 方式,将C++形式返回的结果提交给qml中的对象。 Context.cpp m_RootContext->addDefaultObject(new qDouContext()); qDouContext ->setContextProperty("ItemBkColor",Color) qDou.qml states:[ State{ name:"colorChange"; when: ItemBkColor == "red"; PropertyChange{ Target:backgroud; Color: "red"; } 3.2.4 qml 中调用 C++形式函数 要在qml中调用C++形式的函数,需在函数声明前加Q_INVOKABLE宏,以表示其可作为脚 本语句被调用.Qt会将含有Q_INVOKABLE的函数嵌入在脚本语言中,与C++形式的代码进行 数据交互。 Context.cpp Q_INVOKABLE qDou.qml states:[ State{ name:"colorChange"; when: button.pressed ==true; StateChangeScript{ getMails(); } } void getMails(); }

3.3 qDou 认证
有很多的SNS网站,提供了通过联系人的Email匹配查找朋友的功能,对于大多数人来 说,再是否做这一步的时候,都会有所迟疑,通常情况下,用户只会在自己信任的网站上 这么做,不过即便这样,心里总会多少有些异样,毕竟是把帐号和密码给了别人,虽然别 人保证不记录、不作第二次使用。 透过统一的OAuth机制,上面的这些个迟疑就可以避免了。而豆瓣正是利用OAuth这一
- 21 -

四川大学锦江学院毕业论文(设计)

机制:只需要在自己原来的网站认证就可以了,不需要提供帐号和密码给其他人。这大大 减轻了开发者的负担。 豆瓣 API 通过以下四个步骤来完成认证授权并访问或修改受限资源的流程。 3.3.1 获取未授权的 Request Token 获取未授权的 Request Token 通过访问以下 URL 获取未授权的 Request Token (这 里的 Request Token 需要在豆瓣的 API 申请页面下进行申请才可以使用)
http://www.douban.com/service/auth/request_token 包含的主要参数

参数 oauth_consumer_key API Key oauth_signature 签名值 oauth_nonce 的 Request Token Secret。 3.3.2 请求用户授权 Request Token

意义 oauth_signature_method 签名方法 oauth_timestamp 时间戳 单次值,随机字符串,防止重放攻击

本步骤用于签名的 secret 是 API Key Secret,返回值包括未授权的 Request Token 和对应

请求用户授权 Request Token 获得 Request Token 之后, 需要请求用户授权该 Request Token ,浏览器跳转到如下 URL(如果无法自动跳转,则需要提示用户手工跳转) 。这会是 一个豆瓣上的页面,提示用户授权给你的应用,以允许你的应用访问该用户在豆瓣上的信 息 。
http://www.douban.com/service/auth/authorize

跳转后用户会看到请求授权的页面,用户可以选择同意或者拒绝授权 该请求包含如下两个参数 参数 oauth_token oauth_callback(可选) 意义 上一步中获得的 Request Token 如果包含这个参数,认证成功后浏览器会被重定向到形如

http://callback?oauth_token=ab3cd9j4ks73hf7g 的 url,其中 oauth_token 为 Request Token,否则需要用户手工通知第三方应用以完成授权。 3.3.3 使用授权后的 Request Token 换取 Access Token 使用授权后的 Request Token 换取未授权的 Access Token 用户完成授权后,第三方 应用可以通过访问如下 url,将已授权的 Request Token 换取 Access Token。Access Token 将被用于访问或修改受限资源。
http://www.douban.com/service/auth/access_token 包含的主要参数

参数

意义
- 22 -

四川大学锦江学院毕业论文(设计)

oauth_consumer_key API Key oauth_signature_method 签名方法 oauth_timestamp 时间戳

oauth_token 第一步中获得的 Request Token oauth_signature 签名值 oauth_nonce 单次值

本步骤用于签名的 secret 和 token secret 分别为, Key Secret 和 Request Token API Secret ,返回值包括授权的 Access Token,对应的 Access Token Secret。 3.3.4 使用 Access Token 访问或修改受保护资源 使用 Access Token 访问或修改受保护资源获得 Access Token 之后,你的应用就可以 使用该 Access Token 访问或修改受保护的资源 在每次操作受保护资源时,请求都必须包含以下参数 参数 oauth_consumer_key API Key oauth_signature_method 签名方法 oauth_timestamp 时间戳 意义 oauth_token Access Token oauth_signature 签名值 oauth_nonce 单次值

本步骤用于签名的 secret 和 token secret 分别为,API Key Secret 和 Access Token Secret,关于用于签名的 Secret 在第一步获取 Request Token 时, 需要使用 API Key 和 API Key Secret 进行签名。对应到 OAuth 规范中,API Key 对应 Consumer Key,API Key Secret 对应 Consumer Key Secret。该步不需要使用 Token 和 Token Secret——设为空字符串即 可。 在第三步换取 Access Token 时,需要使用 API Key、API Key Secret、Request Token 和 Request Token Secret 进行签名。 其中 API Key 和 API Key Secret 的对应不变。 Request 而 Token 和 Request Token Secret 对应签名中的 Token 和 Token Secret,而在第四步访问修 改受限资源时,需要使用 API Key、API Key Secret、Access Token 和 Access Token Secret 进行签名[3]。

3.4 利用 NetworkAccessManager 在本地储存 Cookies
虽然豆瓣采用oAuth协议保护数据的安全性,但是在每次验证的时候,豆瓣指定了认 证访问的网页地址,这些网页地址必须在用户当前为登录状态并且浏览器内核的Cookie处 于未过期的情况下,才能很好的访问,要不然,需要用户重新登录,为了用户减少繁琐的 操作,加深良好的体验,使得一次登录,直到Cookie过期才重新输入用户信息,只要在重 写NetworkCookieJar,便可以轻松实现.所有的Cookies信息都已结构体的形式存储在配置 文件中。 3.4.1 NetworkCookieJar 与 NetworkCookie 的关系 简单的说,NetworkCookies就是客户端便于接受到服务器传送过来的Cookies封装好 的类,NetworkCookiejar就是NetworkCookie的集合,但是作为NetworkAccessManager的 一个组件,他提供了很多方便的接口,所以继承NetworkCookieJar生成能储存Cookies新
- 23 -

四川大学锦江学院毕业论文(设计)

版本的NetworkCookieJar便可以实现上面的要求。 1. 当应用程序请求网络资源时,客户端会发送自己储存在本地的cookie值给服务器,用 于与服务器匹配是否过期等情况。这时cookiesForUrl会自动的调用.重载该虚函数完 成自己关于Cookie的存储。 2. 当应用程序请求网络资源时,服务器会发送它相应的Cookie到本地,这样可以避免用户 特征在下次进入该网站的时候,再次确认,这是setCookiesFromUrl会自动被调用.客 户端需要做的就是将从服务器接受到的Cookies筛选,看是否过期或者是否是一个会话 期间的Cookies,如果是,便丢弃,反之便存储。 3.4.2 将 Cookies 导入 webkit 由于webkit内建了NetworkAccessManager的,所以我们只需要简单的调用webkit的网 络访问接口,将继承来的NetworkCookieJar导入便成。 m_webpage->networkAccessManager(new ConfigureNetworkCookieJar(this))。

3.5 PhotoView (豆瓣关系可视化)
豆瓣作为一个独特的社交网络,聚集了大量的用户,但是通过传统的方式很难发现人 与人之间的一种联系,而豆瓣本身则是通过个人的喜好将豆瓣用户与其好友联系起来,其 实从豆瓣用户的好友以及好友之间的关系,不难发现一种联系-----一种小型的六度空 间.PhotoView就将这种空间的联系用视图的方式展示出来.通过它你会发现与你臭味相投 的人。 3.5.1 基于 GraphicsView PhotoView能达到一个成百上千图元的可视化,这完全依赖Qt强大的GraphisView框 架. Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items, 又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放。这个 柜架也包含一个事件传播结构,对于在scene中的这些items,它具有双精度的交互能力。 Items能处理键盘事件, 鼠标的按, 移动、 释放、 双击事件, 也可以跟踪鼠标移动。 Graphics View使用BSP树来提供对item的快速查找,使用这种技术,它可以实时地绘制大规模场景, 甚至以百万items计,通过快速的二分法便可以很快的定位各个Item的位置。 QGraphicsItem 是场景中图形items的基类。Graphics View 提供了一些标准的、用 于典型形状的items。 像矩形(QGraphicsRectItem),椭圆 (QGraphicsEllipseItem),文本(Q GraphicsTextItem),那些最有用的一些QGraphicsItem特性也是有效的。除此这外,QGrap hicsItem支持以下特性: *鼠标按、移动、释放、双击事件,鼠标悬停事件,滚轮事件,弹出菜单事件。 *键盘输入焦点,键盘事件。 *拖拽 *组,包括父子关系,使用QGraphicsItemGroup
- 24 -

四川大学锦江学院毕业论文(设计)

*碰撞检测 Items如同QGraphicsView一样,位于本地坐标系,它也为item与场景之间,item与it em之间的坐标转换提供许多工具函数。而且,也像QGraphicsView一样,它使用矩阵来变 换它的坐标系统:QGraphicsItem::matrix()。它对旋转与缩放单个的Item比较有用。 Items可以包含别的items(孩子)。父items的转换被它的子孙所继承。然而,它的所 有函数(也就是,QGraphicsItem::contains(),QGraphicsItem::boundingRect(),QGraph icsItem::collidesWith()),不会积累这些转换,依然在本地坐标下工作。 QGraphicsItem通过QGraphicsItem::shape(),QGraphicsItem::collideWith())来支 持碰撞检测。这两个都是虚函数。这对以后用Qt写游戏有很大的帮助,从shape()返回你 的item的形状(以本地坐标QPainterPath表示),QGraphicsItem会为你处理所有的碰撞 检测。再加上一些第三方的物理引擎,用Qt写游戏也不是什么难事。 3.5.2 豆瓣用户信息的获取数据的获取 要查找豆瓣用户之间的关系,首先要获取豆瓣用户以及朋友的列表,通过Xquery语言 doc('http://api.douban.com/people/%1/friends?start-index=1&max-results=10 &apikey=%2')/atomNS:feed/opensearch:totalResults/string()").arg(uid).arg (apikey);uid和apikey分别对应的是查询的豆瓣用户以及它的api key。

4 实现运行
该运行截图(图4.1)是在模拟器上进行的。

图 4.1 qDou登录以及主界面
- 25 -

四川大学锦江学院毕业论文(设计)

图4.2 qDou广播

图4.3电影搜索

图4.4评论搜索

图4.5 qDou-PhotoView 豆瓣关系图

5 测试
每分钟请求条目设置时按照正常使用频率给定的值,豆瓣官方规定没有通过 OAuth 授 权的用户使用第三方软件进行访问的话,每分钟请求的条目数目最多不能超过 10 条,并 且不能访问授权用户的 API,而使用 OAuth 协议授权后,每分钟可以访问的最多不能超过 40 条。 Phototview 涉及到的关系网可能会超过 1000 或上万个节点,因为每个节点都涉及到

- 26 -

四川大学锦江学院毕业论文(设计)

物理特性(每个节点对其他节点都会有受力) ,所以对 CPU,内存,显卡要求都比较高,这 个功能在 Symbian 上被去除掉。测试状况如表 5.1 所示 注:因为使用了模拟器测试原因有二,第一 Declarative UI 现在还处于技术预览版,真 机上测试部稳定,第二 真机上进行测试的网络环境有很多,现在个人只能使用 wifi。所 以没有在真机上进行测试。 测试结果分析: 1.信息接收丢失:这种状况是由两种原因造成的,其中最主要的原因是网络状况延 时,如果在网络状况延时的情况下,请求后得到的数据丢失严重,而且获取也很慢,还有 一个原因是OAuth中使用到一个随机数算法,在请求多次后,随机数可能重复,由于服务 器接收OAuth协议的时候,会检查OAuth的正确性,就算APIKEY和APISECRET正确的情况下, 如果随机数列是重复的,那么这个请求也会是失败的。 2.UI延时:主要原因是字体的栅格化时,延迟严重,所以在view上,应尽量的使用 图片和简单的StaticText而不要家在太多的字体简介。
表 5.1 测试状况表 机型配置 CPU: T9600 显卡: NVIDIA Quadro FX 770M 512MB 内存: 4G 正常接收信息,无损失, UI 无延迟。Photoview 超 过 1500 个节点时候界面 有延时 信息由丢失,UI 无延时 Photoview 同上 每分钟请求条目 30 条 网络状况顺畅 Photoview 超过 1500 个节点时候界 面有延时 信息由丢失,UI 无延时 Photoview 同上 正常接收信息,无损失, UI 无延迟 Photoview 超 过 1500 个节点时候界面 有延时 信息由丢失,UI 无延时 Photoview 同上 CPU: T5200 显卡:7300Gt 128mb 内存 1G Symbian 的 epoc 模 拟器 CPU:32 位,主频 206 MHz ,ARM 内存:128mb

测试条目 每 钟 求 目 条 分 请 条 20 网络状 况顺畅

正常接收信息,无损失, 正常接收信息,无 UI 无延迟。Photoview 损失,UI 无延迟 超过 500-700 节点界面 有延时 信息由丢失,UI 无延时 Photoview 同上 正常接收信息 UI 有延时 Photoview 超过 500-700 节点界面有延时 正常接收信息 UI 有延时 Photoview 同上 正常接收信息 UI 有延时 Photoview 超过 500-700 节点界面有延时 信息有丢失,UI 有延迟 Photoview 超过 500-700 节点界面有延时 信息有丢失,UI 无 延迟 信息无丢失,UI 有 延时

网络状 况延时 分 请 条 30 网络状 况顺畅

每 钟 求 目 条

网络状 况延时 分 请 条 40 网络状 况顺畅

信息有丢失,UI 有 延时 信息有丢失,UI 延 时严重

每 钟 求 目 条

网络状 况延时

信息丢失严重,UI 延时严重

- 27 -

四川大学锦江学院毕业论文(设计)

总结以及展望
完成了 qDou 的编写充分的体会到的 Declarative UI 作为下一代控件的强大,只需要 简单的 ECMAScript 语言你变可以实现用 C++数 10 行的代码量,个人觉得这样的语言特别 适合快速开发,同时这样语言所带来的视觉上的效果非常华丽,毫不夸张的说, Declarative UI 对应于 Iphone Os 界面的设计有过之而无不及.特别是新的 QML 语言是 Qt 再也不属于 C++程序员的专利了,即使你是一位 web 设计人员,你都可以很快的对 qml 上手,另一方面对于 C++程序员来说,过去冗长,繁重的 C++形式部分也可以交过 Qml 来 取代之。作为新一代的控件引擎,为 Symbian 和 Maemo 以及以后的 Meego 都提供了广阔的 扩展空间.但是同时我也看到了,作为了技术预览版,它还是存在一些不足的地方,比如 控件焦点的问题,切换时候焦点不相应,在输入法切换的时候,容易死机,不支持滚轮, 对于用户不需要使用数据模型的情况下,使用 xmlListModel 来获取信息太过麻烦。虽然 主要面向的是移动平台,但是作为 PC 上,不支持滚轮的话,有点说不过去。如果在不支 持触屏的手机上,使用 Qml,如果设置相应的键位。在发布时,这种语言如何生成对应的 bin 也是一个问题.这种语言在调试的时候,由于 qml 是一种脚本语言,对于使用 vs-2008 来开发 Qt 的变成人员来说,当前只能在 Release 下进行开发。调试的方式极为复杂。对 于 qDou 来说,在模拟器中改变网络带宽,模拟真实现在大多的网络状况下,qDou 接受服 务器返回的数据的能力相对来说还比较低。 同时对于 qDou,还有很多提升的空间,比如利用 Ocr 来完成书籍,电影,音乐,编号 的实时搜索,比如对书籍实现这一功能,用户只需要拍照,抓取下书籍的 ISBN 对应的那 部分图片信息,通过 Ocr 便可以将对应的图片转换为相应的数字,然后通过 oauth 相应的 编码,到豆瓣上进行查询,反馈给用户相应书籍的信息,书评的内容。这回大大增强 qDou 的实用性。还可以加上视频搜索功能,对特定的电影可以利用 QtWebkit 支持 Netscapt Plugin 的特性来完成视频的播放, 比如对 youku 对应电影的搜索??并完成视频本地的播 放,增加了软件的可用性和丰富相应的功能,当然这个功能暂时不支持手机上,只能在 PC 上运行。

- 28 -

四川大学锦江学院毕业论文(设计)

参考文献
[1] Qt 参考手册 http://doc.trolltech.com/4.6/assistant-manual.html http://doc.qt.nokia.com/4.7-snapshot/qt4-7-intro.html#declarative-ui-development-with -qt-quick 2009-012-09 [2] OAuth 无痛入门指南 http://atomti.javaeye.com/blog/510070 2009-12-09 [3] 豆瓣 API http://www.douban.com/service/apidoc/ 2009-12-10 [4] QtDeclarative Module http://qt.nokia.com/doc/4.7-snapshot/qtdeclarative.html 2009-12-10 [5] qOAuth http://files.ayoy.net/qoAuth/1.0/doc/ 2009-12-21 [6] Qt for Symbian Quick Start http://developer.symbian.org/wiki/index.php/Qt_Quick_Start 2009-12-10 [7] andriod 豆瓣客户端 http://www.douban.com/note/31968837/ 2009-12-25 [8] Generating bld.inf and .mmp files on S60 platform http://labs.trolltech.com/forums/topic/298 [9] C# for douban-oauth-sample http://code.google.com/p/douban-oauth-sample/source/browse/trunk/csharp/DoubanOAuthBa sicSample/DoubanOAuthBasicSample/Program.cs?r=13 2009-12-31 [10] 初探浏览器缓存实现原理 --提高性能 http://www.cnblogs.com/jecray/archive/2007/09/09/887403.html 2010-01-14 [11] How to generate oauth signature using HMAC-SHA1 in Symbian C++ http://wiki.forum.nokia.com/index.php/How_to_generate_oauth_signature_using_HMACSHA1_in_Symbian_C%2B%2B 2010-01-16 [12] Open C 插件的问题 http://blog.csdn.net/zhu_xz/archive/2009/11/21/4845392.aspx 2010-01-20 [13] Symbian 认证 http://wiki.forum.nokia.com/index.php/%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91_S60_3rd_E dition 2010-01-20 [14] 将 Qt 应用运行在 Symbian 手机上 http://wiki.forum.nokia.com/index.php/%E5%B0%86Qt%E5%BA%94%E7%94%A8%E8%BF%90%E8%A1%8
- 29 -

2009-12-30

四川大学锦江学院毕业论文(设计)

C%E5%9C%A8Symbian%E6%89%8B%E6%9C%BA%E4%B8%8A [15] Open C 插件的问题

2010-01-28

http://blog.csdn.net/zhu_xz/archive/2009/11/21/4845392.aspx [16] Symbian 系统中 DLL 的冻结 http://www.symbianx.cn/viewthread.php?tid=110 [17]Shared Library DLLs on Qt for Symbian 2010-02-01

2010-01-28

http://wiki.forum.nokia.com/index.php/%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91_S60_3rd_Ed ition 2010-02-08

[18] Symbian 常用工具用法说明 http://wiki.forum.nokia.com/index.php/Symbian%E5%B8%B8%E7%94%A8%E5%B7%A5%E5%85%B7%E7% 94%A8%E6%B3%95%E8%AF%B4%E6%98%8E 2010-02-10 [19] Open C and Open C++ Technical Overview/zh-hans http://developer.symbian.org/wiki/index.php/Open_C_and_Open_C%2B%2B_Technical_Overvie w/zh-hans 2010-02-10 [20] DEF 与 Dll 构建 http://casper1314.spaces.live.com/blog/cns!5C29B0743964E16!192.entry 2010-02-12 [21] Problems with porting Openssl on to symbian http://discussion.forum.nokia.com/forum/showthread.php?t=93263 [22] Final: OAuth 核心 1.0 http://www.rollingcode.org/blog/f/oauth-core-1.0-final-cn.html [23] Using QML in C++ Applications http://doc.qt.nokia.com/4.7-snapshot/qtbinding.html [24] QOAuth: QOAuth Namespace Reference http://files.ayoy.net/qoauth/1.0/doc/namespace_q_o_auth.html [25] Qt The Animation Framework http://doc.trolltech.com/solutions/4/qtanimationframework/animation.html 2010-01-06 2010-03-11 2010-03-08 2010-03-02 2010-02-27 2010-02-12

[26] 图解 symbian 自签名 http://www.3gfan.com/article/58/6849_1.htm [27] 再谈模拟器上网 http://www.xgdown.com/article/175/52646_1.htm 2010-03-20 2010-03-17

[28] How to generate oauth signature using HMAC-SHA1 in Symbian C++ http://wiki.forum.nokia.com/index.php/How_to_generate_oauth_signature_using_HMAC-SHA 1_in_Symbian_C%2B%2B 2010-03-21

[29] Generating bld.inf and .mmp files on S60 platform
- 30 -

四川大学锦江学院毕业论文(设计)

http://labs.trolltech.com/forums/topic/298 [30] Qt-Mobility 概览 http://www.cuteqt.com/blog/?p=988

2010-03-28

2010-03-28

- 31 -

四川大学锦江学院毕业论文(设计)

附录:
qDou 就在家里的两台机子上测试了一下,可能有很多不足的地方,最终是要部署到移动设备上 Maemo(轻松些),S60 上恐怕到时候要裁剪很多(原因有三:1 硬件条件 2oAuth 协议 3photoView),便先 写了一个 PC 版本, 现在正忙着发布 KDE 下的版本和源代码, 因为涉及到 openssl,qca,qca-ssl,qoauth, 还有 qtdeclarative 现在还处于技术预览版的阶段,3 月份 qtdeclarative 应该正式被纳入 qt 标准库里 面.所以,我这段时间还没有开发源码,大家也多提意见和报 bug 上来,把毕业设计报告提交了,开放源 码。

qDou 图片:http://www.douban.com/photos/album/23769514/ qDou 视频:http://v.youku.com/v_show/id_XMTU0NTkzMjI0.html qDou 下载地址:http://qdou.googlecode.com/files/qDou%200.2.5-setup.exe (这是 0.2.5 最新的) qDou 小组:http://www.douban.com/group/223244/ 更多 qDou 的详细信息见此:http://code.google.com/p/qdou/

- 32 -

四川大学锦江学院毕业论文(设计)

致 谢
???????????????????????????????????? ?????????????????????????????????????? ?????????????????????????????????????? ?????????????????????????????????????? ?????????????????????????????????????? ?????????????????????????????????????? ?????????????????????????????????????? ?????????????????????????????????????? ?????????????????????????????????????? ?????????????????????????????????????? ?????????????????????????????????????? ????????????????

页面设置:页边距为上 2.5cm, 下 2.5cm, 左 2.5cm, 右 2 cm,装订线 0; 页眉边距为 1.5cm,页脚边距为 1.5cm; 行间距:固定值 20 磅

- 33 -


相关文章:
毕业论文(设计)文本规范范例(理工科)
毕业论文(设计)文本规范范例(理工科) 隐藏>> 毕业论文(设计) 题院专 目系业 qDou(豆瓣 Symbian 客户端) 机械工程学院 机械设计制造及其自动化 年级 XXX XXXXX...
毕业论文(设计)文本规范范例(理工科)
毕业论文(设计)文本规范范例(理工科) 隐藏>> 毕业论文(设计) 毕业论文(设计) 题系专 目部业 qDou(豆瓣 客户端) qDou(豆瓣 Symbian 客户端) X X系 2006 ...
毕业论文(设计)文本规范范例(理工科)
毕业论文 22页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 毕业论文(设计)文本规范范例(理工科) 范文本范文本隐...
毕业论文(设计)文本规范范例(文科)
毕业论文(设计)文本规范范例(文科) 隐藏>> 毕业论文(设计) 题系专 目部业 我国智力外流原因及对策研究 XX 系 XXX 年级 2006 级 XXX XXXXXXXXX XXX 学生姓名...
《理工科本科生毕业论文(设计)_正文及参考文献的撰写规范》
《广东商学院理工科本科生毕业论文 (设计) 广东商学院理工科本科生毕业论文 设计) 理工科本科生毕业 正文及参考文献的撰写规范 参考文献的撰写规范》 正文及参考...
大学本科毕业论文(设计)文本规范 1
大学本科毕业论文(设计)文本规范 1_其它_高等教育_教育专区。本科毕业论文(设计...2.论文格式参考范例 2.1 理工科类 目□录(三号黑体居中,不加粗) (空一行)...
大学本科毕业论文(设计)文本规范 2
大学本科毕业论文(设计)文本规范 2_工学_高等教育_教育专区。附件 2 湖北大学...2.论文格式参考范例 2.1 理工科类 目 □录 (三号黑体居中,不加粗)(空一行...
理工科本科毕业论文写作格式要求(模版)
理工科本科毕业论文写作格式要求(模版)_工学_高等教育_教育专区。毕业论文模板本科...写作格式要求 (见后范例) 安徽农业大学 毕业论文(设计) 论文题目 姓院名系 ...
毕业论文模板(理工科)
理工科毕业论文格式模板 7页 免费 本科毕业论文标准范文 32页 1下载券 OpenCV的...(扉页)模板 毕业设计(论文)格式模板 (理工类专业适用) 基于低分辨率视频的手势...
本科毕业论文规范格式(理工科)++
本科毕业论文规范格式(理工科)++_管理学_高等教育_教育专区。附件 2:本科毕业...尽我所知,除文中已经 注明引用的内容外,本设计(论文)的研究成果不包含他人...
更多相关标签:
理工科毕业论文范文 | 理工科大学毕业怎么办 | 理工科毕业论文 | 理工科毕业论文格式 | 新规范检验批填写范例 | 文本解读范例 | 2015新规范填写范例 | 2015监理规范填写范例 |