NBA小诺伦斯 诺埃尔尔如何,请大家发表下评论

10. 关系数据库 (Relational Databases)
  关系数据库因为在大规模 Web 服务上缺乏可扩充性而颇受微词,然而,关系数据库仍然是近20年来计算机技术中最伟大的成就。关系数据库对处理订单,公司数据方面有着出色的表现。
  关系数据库的核心是以记录表示数据,记录存放在数据库表,数据库使用查询语言()对数据进行搜索与查询,同时,数据库对各个数据表进行关联。
  数据库的标准化技术(normalization)讲的是使用正确的方式对数据进行分存以降低冗余,并加快存取速度。
  9. 安全 (Security)
  随着黑客的崛起与数据敏感性的上升,安全变得非常重要。安全是个广义的概念,涉及验证,授权与信息传输。
  验证是对用户的身份进行检查,如要求用户输入密码。验证通常需要结合 SSL (secure socket layer)进行;授权在公司业务系统中非常重要,尤其是一些工作流系统。最近开发的 OAuth 协议可以帮助 Web 服务将相应信息向相应用户开放。Flickr 便使用这种方式管理私人照片和数据的访问权限。
  另外一个安全领域是网络设防,这关系到操作系统,配置与监控。不仅网络危险重重,任何软件都是。Firefox 被称为最安全的浏览器,仍然需要频频发布安全补丁。要为你的系统编写安全代码就需要明白各种潜在的问题。
  8. 云计算 (Cloud Computing)
RWW 最近的关于云计算的文章 Reaching For The Sky Through Compute Clouds 讲到了云计算如何改变大规模 Web 应用的发布。大规模的并行,低成本,与快速投入市场。
  并行算法发明以来,首先迎来的是网格计算,网格计算是借助空闲的桌面计算机资源进行并行计算。最著名的例子是 Berkley 大学的 SETI@home 计划,该计划使用空闲的 CPU 资源分析太空数据。金融机构也大规模实施网格计算进行风险分析。空闲的资源,加上 J2EE 平台的崛起,迎来了云计算的概念:应用服务虚拟化。就是应用按需运行,并可以随着时间和用户规模而实时改变。
  云计算最生动的例子是 Amazon 的 Web 服务,一组可以通过 API 进行调用的应用,如云服务(EC2),一个用来存储大型媒体文件的数据库(S3),索引服务(SimpleDB),序列服务(SQS)。
  7. 并发 (Concurrency)
  并发是软件工程师最容易犯错的地方,这可以理解,因为我们一直遵从线形思维,然而并发在现代系统中非常重要。
  并发是程序中的并行处理,多数现代编程语言包含内置的并发能力,在 Java,指的是线程。关于并发,最经典的例子是&生产/消费&模式,生产方生产数据和任务,并放入工作线程消费或执行。并发的复杂性在于,线程需要经常访问共同数据,每个线程都有自己的执行顺序,但需要访问共同数据。Doug Lea 曾写过一个最复杂的并发类,现在是 core Java 的一部分。
  6. 缓存(Caching)
  缓存对现代 Web 程序不可或缺,缓存是从数据库取回,并存放在内存中的数据。因为数据库直接存取的代价非常高,将数据从数据库取回并放在缓存中访问就变得十分必要。比如,你有一个网站,要显示上周的畅销书,你可以从数据将畅销书榜一次性取回放在缓存中,而不必在每次访问时都去数据库读数据。
  缓存需要代价,只有最常用的内容才可以放入缓存。很多现代程序,包括 Facebook,依靠一种叫做 Memcached 的分布式缓存系统,该系统是 Brad Firzpatrick 在工作于 LiveJournal 项目时开发的,Memcached 使用网络中空闲的内存资源建立缓存机制,Memcached 类库在很多流行编程语言,包括 Java 和 PHP 中都有。
  5. 散列法(Hashing)
  Hashing 的目的是加速访问速度。如果数据是序列存储的,从中查询一个项的时间取决于数据列的大小。而散列法对每一个项计算一个数字作为索引,在一个好的 Hashing 算法下,数据查找的速度是一样的。
  除了存储数据,散列法对分布式系统也很重要。统一散列法(uniform hash )用来在云数据库环境下,在不同计算机之间分存数据。Google 的索引服务就是这种方法的体现,每一个 URL 都被散列分布到特定计算机。
  散列函数非常复杂,但现代类库中都有现成的类,重要的是,如何对散列法进行细调以获得最好的性能。
  4. 算法的复杂性 (Algorithmic Complexity)
  关于算法的复杂性,软件工程师需要理解这样几件事。第一,大O标记法(big O notation);第二,你永远都不应该使用嵌套式循环(循环里面套循环),你应该使用 Hash 表,数组或单一循环;第三,如今优秀类库比比皆是,我们不必过分纠缠于这些库的效能的差别,我们以后还有机会进行细调;最后,不要忽视算法的优雅及性能,编写紧凑的,可读的代码可以让你的算法更简单,更干净。
  3. 分层 (Layering)
  用分层来讨论软件架构是最容易的。John Lakos 曾出版过一本关于大型 C++ 系统的书。Lakos 认为软件包含了层,书中介绍了层的概念,方法是,对每个软件组件,数一下它所依赖的组件数目就可以知道它的复杂程度。
  Lakos 认为,一个好的软件拥有金字塔结构,就是说,软件组件拥有层层积累的复杂度,但每个组件本身必须简单,一个优秀的软件包含很多小的,可重复使用的模块,每个模块有自己的职责。一个好的系统中,组件之间的依赖性不可交叉,整个系统是各种各样的组件堆积起来,形成一个金字塔。
  Lakos 在软件工程的很多方面都是先驱,最著名的是 Refactoring (代码重构)。代码重构指的是,在编程过程中需要不断地对代码进行改造以保证其结构的健壮与灵活。
/hvtart/bjae/sko15s3g.htm
  2. 惯例与模板 (Conventions and Templates)
  命名惯例和基础模板在编程模式中常被忽视,然而它可能是最强大的方法。命名惯例使软件自动化成为可能,如,Java Beans 框架在 getter 和 setter 方法中,使用简单的命名惯例。 网站的 URL 命名也使用统一的格式,如 /menu/java/&会将用户带到所有标签为 software 的页。
  很多社会网络均使用简单命名,如,你的名字是 johnsmith ,那你的头像可能命名为 johnsmith.jpg,而你的 rss 聚合文件的命名很可能是 johnsmith.xml 。
  命名惯例还用于单元测试,如,JUnit 单元测试工具会辨认所有以 test 开头的类。
  我们这里说的模板(templates )指的并不是 C++ 或 Java 语言中的 constructs,我们说的是一些包含变量的模板文件,用户可以替换变量并输出最终结果。
  Cold Fusion 是最先使用模板的程序之一,后来,Java 使用 JSP 实现模板功能。Apache 近来为 Java 开发了非常好用的通用模板, Velocity。PHP 本身就是基于模板的,因为它支持 eval 函数。
  1. 界面(Interfaces)
  软件工程中最重要的概念是界面。任何软件都是一个真实系统的模型。如何使用简单的用户界面进行模型化至关重要。很多软件系统走这样的极端,缺乏抽象的冗长代码,或者过分设计而导致无谓的复杂。
  在众多软件工程书籍中,Robert Martin 写的《敏捷编程》值得一读。
  关于模型化,以下方法对你会有帮助。首先,去掉那些只有在将来才可能用得着的方法,代码越精练越好。第二,不要总认为以前的东西是对的,要善于改变。第三,要有耐心并享受过程。
阅读(...) 评论()雅虎网络相册
开发公司:
加拿大Ludicorp公司
发布时间:
社交网络应用
卡尔·韩德森
&功能服务/flickr
Flickr提供全面的、一流的、高效的图片服务,包括图片的上传与存放、分类、加标签(Tag)、图片搜索等。&首先当然还是得注册并登录,比较复杂的一项工作是填写你的个Flickr人简介(Profile)。
上传图片很简单,进入你的主页面后,点击Upload,进入一新页面,在你的计算机中选出你要上传的图片,然后点”Upload”按钮就可以了。&上传完毕后,它会要求你给每一张图片加入标题(Title,会显示在图片上方)、说明(Description,会显示在图片下方)、标签(Tag,为索引、搜索时用)。&接下来,可以为这些图片分类(即建立组[Set]),点主页面上方的”Organizr”,进入一新页面。点右下方的”Create&a&New&Set”建新组,然后从左边将图片拖入指定的组中,点保存就可以了。&需要说明一下的是,免费用户目前可以建多个组,且上传图片的大小每月不能超过300M,且只能显示200张。而付费用户(每月约2美元),可每月上传1G的图片,分组无限制。&图片的搜索非常的简单,这里不多说。联系人服务
这项服务可以让你加入联系人(Contact),他可以是朋友(Friend)或家人(Family)。加入联系人的好处是,你可以结交到更多的朋友,并可将这些朋友的图片有规则的组织起来,方便浏览、交流、分享。组群服务
组群服务令用户可以加入一个组群或创建一个新的组群并自任管理员。在组群中,大家可以进行像在BBS上那样的交谈、分享图片、知识、互发邮件等活动。
加入组群的方式可以是:&1.&直接选择组群服务页面下方给出的那些组群,进入组群后,选右边的”Join&this&Group”即可。&2.&通过输入相关的关键词进行组群的搜索,找到适当的组群并进入后,点页面右边的”Join&this&Group”加入。&3.&通过进入某人的Profile页面,点开他所加入的组群,然后选择加入。
另外,你也可以自己建立新组群,方法也很简单。在组群服务页面点击”Create&a&New&Group”,进入新页面,根据相关的系统提示,即可完成组群的建立[我自己也试着建了一个,Chinese&Mutual&Association(华人互助协会)。并且,你还会成为自建组群的管理员(Administrator),拥有踢人、封锁&等权限。建立好自己的组群后,你还可以邀请你的联系人加入进来。
发展简史/flickr
Flickr是由Ludicorp公司所开发设计,这家公司于2002年在温哥华设立。Ludicorp公司于2004年2月正式发表 Flickr网站。这项服务所使用的工具最早是为了LudicorpFlickr公司的大型线上游戏“Game Neverending(永不结束的游戏)”而研发。Flickr被认为具有较高的可行性,因此“Game Neverending”计划最后被搁置。早期Flickr的形态是一个具有即时交换照片功能的多人,可供分享照片,当时名为“FlickrLive”;接连的研发工作都集中在使用者的上传和归档功能,而聊天室则渐渐被忽略了。最后Flickr的末端系统终于脱离了Game Neverending的。2005年3月,公司收购了Ludicorp公司和Flickr。在6月28日那个星期,所有的资料都从原本位于的迁入,使得所有的资料都受到美国联邦法的管辖。日。Flickr进行了设计与结构的检修,并将服务从Beta(第二测试阶段)升级至“Gamma”阶段。日,Flickr正式推出中文界面。 日,Flickr进行了大幅改版,彻底改变了外观和感觉,而且升级了Android应用,并增加了存储空间。 
网站特色/flickr
管理方式Flickr集合了借由使用者间的关系彼此相互连接的数位影像,影像可依其内容彼此产生关联。图片上传者可自己定义该相片的关键字,也就是“标签(Tags)”(是元资料(Metadata)的一种格式),如此一来搜寻者可很快的找到想要的相片,例如指定拍摄地点或照片的主题,而创作者也能很快了解相同标签(Tags)下有哪些由其他人所分享的照片,Flickr也会挑选出最受欢迎的标签名单,缩短搜寻相片的时间。Flickr被普遍认为是有效使用(Floksonomy)的典范。此外,Flickr也是第一个使用标签云(Tag Cloud)的网站。Flickr也让使用者能将照片编入“照片集(Sets)”,或是将有相同标题开头的照片结成群组。然而,照片集比传统的资料夹分类模式更有弹性,因为一张照片可被归类到多个照片集中,或是仅分至一个照片集中,或是完全不属于任何的照片集(这个概念以Google的Gmail服务中的“标签”(labels)功能更为人熟悉)。OrganizrOrganizr是一个在Flickr中用以管理照片的网络应用程式。这个程式能让使用者修改标签、相片描述、以及制作照片集,并且使用了技术让这个程式在、、和的功能都与一般的照片管理程式几乎无异。因此Organizr让大量照片的管理变得更为简单。公开分享使用者除了可透过分 享照片,Flickr也提供连络人机制(Contacts),使用者可看到对方最新的照片,以及快速浏览该连络人的公开相片。使用者也可透过将私人照片加入其他公开Group,供群组内的会员浏览,有些Group更提倡会员互相交流,如著名的“1-2-3”Group,即提倡“在群组内贴出1张相片后,至少看3张群组内的其他照片,并至少帮其中2张照片留言”,藉以提高相片曝光率。另外Flickr也会参考浏览数、被加入最爱次数,选出当日风格照片于站内刊登。使用者可设定相片的开放权限:完全公开、绝对隐私,或是决定照片是否开放给被设为朋友、家人的连络人观看或是留言。使用者也可设立私人Group,透过Group设定浏览权限的方式,只让自己挑选的成员看到照片。NIPSA机制NIPSA(Not In Public Site Areas)为Flickr筛选使用者是否拥有分享私人相片能力的机制。由于Flickr的主旨是建立数位相片分享社群,因此若某帐号之下储存了过量的非照片图像、屏幕截图、网络抓图、名人肖像、拥有版权的相片或艺术作品,Flickr管理员便会将该使用者做上NIPSA的标记。一旦被标上NIPSA,无论该帐号是否有付费,其图片均不会显示显示于公开区域中,仅能让供使用者自己观看。被标记为NIPSA的帐号若要除名,必须自行整理有问题的图片,并向Flickr提出重新审查。档案保存Flickr并不是一个永久存放档案的网站。免费帐号的使用者若连续超过90天未登入Flickr,帐号下的照片将会被删除。在该公司的网站上表示:‘若使用者连续90天都没有任何动作,我们最后将会删除(免费的)帐户。 ’有效的免费帐户最多仅能显示最近上传的200张图片,更早之前的图片将不会出现在免费使用者的Flickr帐户中;但这些图片仍能显示于外连的网页上,以及站内的Group中。著作权在Flickr内,相片上传者可选择使用是否开放授权,让公开的照片可以被合理使用,使用者也能自行设定该照片的著作权授权细节,Flickr同时也提供使用者搜寻其他能被合理使用的照片。 &授权方式如左圖,正常的預設授權值為"版權所有 不得轉載",按下附加資訊的編輯(紅圈處)來設定授權接著按下"姓名標示-授權分享 Creative Commons",然後按下儲存&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&完成如右圖,維積共享資源只接受CC-BY、CC-BY-SA、公有领域所以如果要上傳至維基共享資源,請點選姓名標示(紅圈上方)、姓名標示-授權分享(紅圈處)软件架构Flickr的开发者卡尔o韩德森(Cal Henderson),在2005年温哥华PHP协会的简报上,公开了大部分Flickr所使用的背后技术。这个平台是由以下技术组成:o PHP - 用于核心程式逻辑o Smarty模组引擎o PEAR - 用于XML和电子邮件o Perl - 控制(Controlling)o
- 用于影像处理o MySQL 4.0o Java - 用于节点服务o Apache Web Server 2o Macromedia Flash自从Flickr被雅虎收购并且将资料转移至雅虎的资讯中心后,就不再使用ImageMagick。跨平台互动Flickr使用了PHP(以.gne为副档名)、MySQL作为服务核心,配合使用者端AJAX技术,达到传统线上相簿所没有的高互动性,使用者可透过一般操作系统和支援JavaScript的网页浏览器,在线上即时操作Flickr。官方对外提供了Flickr API,供外界程式设计师能够自行开发、延伸Flickr的外部功能,让Flickr中的内容跨越网站、软件之间的代沟。如fd's Flickr Toys内的线上工具,均是搭配Flickr API所开发的程式,其他软件如网页浏览器Flock,也使用了Flickr API实现管理、浏览Flickr相片的功能。
亮点/flickr
现在互联网上有很多网络相册服务网站,其中有些网站的界面让人眼花缭乱,到处是闪烁和浮动的广告,上传、浏览和处理相片的按钮被隐藏在一大堆用户不想看到的内容之Flickr间,有的操作步骤繁琐,有的不兼容非主流浏览器,总之是想尽一切办法“逼着”用户点击他们的广告或页面。
而Flickr则是以为用户提供良好的体验为最高目标。其当初界面的“简陋”程度与谷歌的首页不相上下,但界面布局更加合理,配色以logo的蓝色作为字体颜色,不追求花哨。除了登录后的界面之外很少看到明显的广告。注重细节
Flickr网站脚本使用的地方很合理,如修改照片标题、把图片加入收藏或群组或图片集、批量操作、预览前后的图片、增加标签、下拉菜单等等。网站除了“My&Favorites”一项没有RSS&Feed之外,其它用户希望有RSS的地方它都提供了很方便、及时的跟踪信息。另外,上传文件的标签也几乎无处不在,照顾了使用创作共用协议的用户。Flickr网站对中文的支持也很好,同时,各类信息的组织方式比较合理,适合用户查看。社会化功能
作为Web&2.0网站的领头羊,Flickr的社会化功能是非常出色的:
1、Flickr&Mail是用户之间通信的基本工具,功能不算多,但是使用简单,完全能够满足用户的基本需求。
2、联系人(Contacts)包括一般的联系人、朋友和家庭成员3类,可以控制自己的图片只对哪部分联系人开放,登录后,用户可以看到联系人最新上传的部分相片。
3、群组(Groups)包括免费用户在内都可以建立群组并设置许多细节的选项,通常群组是通过一个固定的主题联系起来,如动物、西欧风光等,还可以是使用同一相机型号的用户,等等。
4、标签(Tag)可以对图片进行说明,如“美洲”、“旅游”、“美食”等等,用户可以通过标签发现感兴趣的图片。
5、收藏(Favorites)喜爱的照片,将它们加入用户各自的收藏夹,并且共享给其他用户。
6、跟踪用户的留言记录,提醒用户曾经在哪发表过评论。扩展工具
开放了API的Flickr允许开发人员为网站研发插件,这也是Flickr成功和流行的一大因素。一个开放的服务能够带来许多第三方的工具和服务,进一步吸引了用户使用这项服务,可谓皆大欢喜。Flickr重点推荐的工具、服务和插件包括,下载工具FlickrDown、截图和上传工具flickr&and&WEBIMAGER、破解免费用户限制的软件Flickr&Leech、收藏图片下载工具FlickrFaves等等。 
访问方式/flickr
1、安装Firefox浏览器(/firefox/toolbar/bundle/intl/zh- CN/)后再安装一个伊朗人开发的插件Access Flickr(https://addons.mozilla.org/zh-CN/firefox/addon/4286),然后按普通上网即可。2、透过普通http代理网站、SSL网站或加密代理软件(Tor、、UltraSurf最新版等)。3、海外VPN、SSH连线。4、普通http代理:http://www.dai.li/ / 经过测试(陕西网通)已经可以正常访问,界面是繁体中文。
经过测试(北京)已经可以正常访问,界面是繁体中文。
目前在中国内地都可以通过yahoo、Google邮箱账户登录。
网站改版/flickr
日上午消息,据科技博客Re/code报道,知情人士透露,雅虎(37.6,&0.37,&0.99%)即将对Flickr进行最新一次改版。&Flickr
2012年12月,刚刚出任雅虎CEO&6个月的玛丽莎·梅耶尔(Marissa&Mayer)推出了iPhone和iPad版Flickr应用的2.0版,更新了设计、过滤器,并简化了分享过程。在此之后,也就是2013年5月,该公司又对Flickr网站和Android应用进行了改版,并且为用户免费提供1TB存储空间。&
最新一次改版参见目录“最新改版”&
由此可见,新版Flickr已经将照片放在最核心的位置。而知情人士表示,之所以进行此次改版,是为了提升Flickr的应用市场排名。根据市场研究公司App&Annie的排名,Flickr在全美照片和视频类应用中曾经从第64升至第9,总排名也从第705升至第130,但随后又下滑到43(总排名为426)。&
、UltraSurf最新版等)。
iPhone应用/flickr
纳入麾下的Flickr后来似乎停止了积极进取,而且前者对移动互联网契机的忽视也导致了Flickr在与包括Instagram等移动社交分享应用的竞争中溃败。虽然Flickr目前仍有8500万的日活跃用户,但与Instagram相比仍逊色一筹。尽管如此,Flickr似乎还是终于意识到了移动互联网的重要性,并在日,推出了更新版的iPhone应用。Flickr新应用的滤镜功能将使得照片的展示效果更棒;此外,新款Flickr的iPhone应用还优化了注册环节、提升了图片浏览速度以及发现其他用户照片的能力。
新版iPhone应用允许用户浏览和评论照片。用户还可以通过双击照片标记“喜爱”,或者将手机切换为横屏以观赏高分辨率全屏照片。此外,这款应用还允许用户通过定位发现附近有趣的照片。当然,你还可以直接使用移动设备自带的摄像头进行拍摄、编辑再进行分享,上传过程中还可以添加标题和位置信息等。
雅虎Flickr部门的主管Markus&Spiering表示,新版Flickr移动应用将会逐渐渗透至各个平台。“最先选择iPhone进行更新的原因是因为它是Flickr用户最喜爱的平台。举例子说,只在昨天,就有3817位iPhone&4S用户上传了62839张照片。当然,Android智能手机应用与平板电脑应用将于不久后推出。”
虽然雅虎本尊并没有太多社交特性,但有趣的是,Flickr是一款相对开放的服务。相较Twitter和Facebook屏蔽搜索引擎爬虫,以及最近闹得沸沸扬扬的“Instagram对Twitter变脸事件”的举动来讲,Flickr允许用户通过包括Facebook、Twitter、Google+、Tumblr等社交网站进行内容分享。另外,Flickr的API接口也允许AppleTV和Windows&8集成在线照片资源库。
&最新改版/flickr
日,雅虎将对Flickr以照片为中心新一次改版。
最新一次改版将分享功能放置在中心位置,并且去除了该服务顶部的雅虎工具条。除此之外,改版后的网页版和移动版也将密切协调,使得照片流更加浑然一体,而且没有留白。新页面上的文字和按钮也大幅减少,只保留了一些浮动文本信息,这一点与目前文本和按钮过于杂乱的设计有着很大不同。
新版Flickr已经将照片放在最核心的位置。之所以进行此次改版,是为了提升Flickr的应用市场排名。根据市场研究公司App&Annie的排名,Flickr在全美照片和视频类应用中曾经从第64升至第9,总排名也从第705升至第130,但随后又下滑到43(总排名为426)。
相比而言,Facebook旗下的Instagram在照片和视频类应用中排名第2,总体排名第8。
Flickr还面临营收挑战,该公司的年营收约为2500万美元。但梅耶尔已经将该部门的员工人数从几十人扩大到100多人。
登录方式/flickr
一般由于DNS污染或直接的域名封锁造成的无法登陆。4GIPvpn的方式都可以解决。
万方数据期刊论文
模式识别与人工智能
万方数据期刊论文
内蒙古科技与经济
万方数据期刊论文
计算机研究与发展
&|&相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
此词条还可添加&
编辑次数:25次
参与编辑人数:15位
最近更新时间: 16:58:30
贡献光荣榜您所在的位置: &
6.1 Flickr API简介
6.1 Flickr API简介
唐扬斌等译
人民邮电出版社
《Web 2.0 Mashup开发实战》第6章通过Flickr学习Web服务API,本章进一步介绍如何理解Flickr文档,以及如何利用Flickr API Explorer这一优秀的工具来研究Flickr API。详细介绍调用一个基本的Flickr API方法的机制,并利用这一机会,介绍两个基本的技术:HTTP请求处理和XML解析。本节为Flickr API简介。
第6章 通过Flickr学习Web服务API
Flickr是学习XML Web服务的一个绝佳背景。Flickr提供了清晰的文档,具有指导性的API Explorer,允许我们在浏览器中尝试其API,以及许多混编和混搭方面的先进技术手段的研究。有许多的第三方应用都在使用Flickr API。
如前面几章(特别是第2章)讨论过的,应用编程接口(API)是实现对Web站点编程及访问其数据和服务的最佳途径,但并不是每个站点都有API。我们已经研究过许多不需要太多编程的工作,在很多情况下甚至不需要借助于API。但现在我们要来介绍API。请不要忘记那些从最终用户功能所获得的知识,在应用API的过程中你会用到这些知识。
本章最后,你会发现Flickr API也是可扩展的,通过使用它的不同选项我们能够做许多事情。不过,该API的核心其实很简单。我将给出一个(也许算得上是)最简单实用的Flickr API的例子来开始本章。通过深入地分析该例,我将从概念上介绍如何使用API中的搜索方法,以及如何理解所得到的结果。在详细说明如何构造这样一个具体的请求后,再简要介绍一些推广该例的不同途径。
在概述与该API相关的策略和服务条款后,我将进一步介绍如何理解Flickr文档,以及如何利用Flickr API Explorer这一优秀的工具来研究Flickr API。我会详细介绍调用一个基本的Flickr API方法的机制,并利用这一机会,介绍两个基本的技术:HTTP请求处理和XML解析。随后,解释如何利用这两项技术,基于照片搜索API创建一个简单的HTML界面。
有了实际使用某个方法的经验,接下来你将看到Flickr中其他的一些API方法。我会演示如何使用Flickr API中的反射(reflection)方法,并通过它来进一步介绍API本身。然后介绍一些选择不同API请求与响应格式的途径,为下一章进一步介绍REST和SOAP协议做好准备。
有了这些知识,我们应该已经可以完成几乎所有的事情了,不过这一切的前提是我们拥有合适的权限。访问授权机制是API中最复杂难懂的部分之一。如果无法理解授权每一步操作背后的动机,Flickr的授权机制可能会把你弄得很糊涂。就此,将逐一介绍Flickr授权过程中的每一步操作,并以此为基础解释Flickr授权模式的基本运作机制;同时,将展示授权过程的每个部分是如何组合在一起实现最终的整体目标的。故事有些错综复杂,但理解它们会对你掌握其他类似环境(设计约束)下的授权模式带来帮助。此后,将介绍一些具体实现以上过程的PHP代码。
在实际使用Flickr API构造混搭时,或许你并不想直接使用该API本身,而是希望利用一些API工具包或第三方提供的基于特定语言的软件包。在此,简要介绍3种面向Flickr的PHP API工具包。最后,以对Flickr API相对其UI在功能上的局限性的讨论结束本章。
6.1 Flickr API简介
在进入复杂的API应用之前,先来看一个简单的例子。简单的例子更容易帮我们避开API中繁琐复杂的细节,看到其内部简洁的核心思想。API是为程序设计人员设计的,可以用它向API本身发送请求并接收响应,其中所涉及的所有信息都能够被你的程序非常方便地解析。在较早的章节,特别是第2章中,你已经了解了可以使用Flickr的URL语言来访问Flickr中的资源。然而,为了让计算机程序能够使用这些信息,我们不得不使用屏幕抓取。屏幕抓取本身是一个脆弱而笨重的过程。相比之下,Flickr API为生成请求和获取响应建立了定义明确、稳定而简便的框架,使得计算机程序能够更加方便和可靠地使用相关的功能。
在继续工作之前,请先注册一个Flickr API键(Flickr API key),为实践下面的例子做好准备(参见下面阴影部分中的内容)。
获取Flickr API键
为了使用Flickr API,你需要一个Flickr API键。一个键就是一个数字和字母构成的字符串,它把你标识为一个API请求的来源。也即,当创建了一个API调用时,通常需要将你的键(或其他一些派生自该键的参数)传递过去。可以通过在Flickr中注册应用来获得一个键:
为了实践本章和后续章节中的示例和练习,需要获取一个属于自己的API键。可以在如下地址查看你当前所拥有的键:
下一章,你将看到键其实是许多应用API都采用的一项公共机制。通过键,API提供程序能够了解到关于API使用者标识的某些信息(通常情况下,如果没有别的,至少应该包含API键所有者的e-mail地址),同时对用户访问API的方式进行监控(例如调用API或产生特定请求的频度和总量)。通过这样的跟踪监测,API提供程序能够更好地推行其API使用条款的实施--从利用e-mail联系用户,让其关闭其某个键对应的访问……到极端情况下,对某个用户的行为提起控诉。
有了你自己的键,让我们来创建一个可能是最简单的Flickr API调用。在浏览器中输入如下URL:
其中api-key是你的Flickr API键。该请求有两个参数:method和api_key,前者指明了所要访问的API的部分,后者则用于标识产生该API请求的对象(用户或用户组)。对于该请求,Flickr的响应如下:
&请注意该响应的实体部分是一个包含了你的键的XML文档。
我们再来考虑一个稍微复杂些的例子,它将返回一些更有趣的东西。我们将向Flickr请求与给定标签对应的所有照片。第2章中你已经了解了如何使用Flickr UI获得对应于某个标签的所有照片,具体的URL为:
相应的使用Flickr API获取某个标签对应的所有近期上传的公开照片的方式形如:
在其中替换入你的API键,将tag设置为puppy,将per_page设置为3,具体的调用为:
它将得到类似如下的响应:
这个Flickr API调用中都发生了什么?在请求部分,你所要求的是最近上传的3张带有标签puppy的公开照片,所使用的方法是flickr.photos.search。在响应主体中,获得了一个XML文档。本章稍后将介绍如何使用类似PHP的语言解析XML文档。现在,请留意从该XML响应中获得的信息:
在rsp的根元素中,可以看到一个photos元素,其中包含了3个子photo元素。
photos元素的属性包含一系列与所请求的照片相关的信息:total是使用了标签puppy的公开照片的总数(288877);perpage是在该响应中实际返回的photo元素数量(3个),page为该响应对应的页码(1);最后,给定perpage的值--每页所包含的photo数,pages为总的页数(96293) 。
注解&正如Flickr的人机界面那样,使用API所得到的返回结果也是一系列的页面(试想一下API一次性地把所有puppy相关的照片数据都发给你!)。perpage的默认值是100,最大值为500。在本例中我选择其值为3,目的是使你能够更方便地分析整个响应。
每个photo元素都有一些相关的属性,能使你对照片的主题(或标题)有所了解。可以将这些属性(id、owner、secret、server和farm)映射为照片的不同URL,也可以从中了解该照片对不同类别用户(ispublic、isfriend和isfamily)的可见性。
我们来考虑关于这一请求/响应模式的两个相互关联的问题:
以上XML响应是何含义?
你能对XML响应做些什么?
【责任编辑: TEL:(010)】 &&&&&&
关于&&&&&&的更多文章
Web Components是W3C定义的新标准,目前还处于草案阶段,但各大
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
讲师: 354人学习过讲师: 14人学习过讲师: 50人学习过
JavaScript 是Web 开发中应用最早、发展最成熟、用户
《中级会计实务》是"会计专业技术资格考试"的配套学习
本书聚焦于Google和Yahoo!等Web搜索服务幕后的搜索引
本书详细介绍了AJAX在Web开发上的应用。主要内容包括:ASP.NET AJAX技术概述、实现异步局部更新页面、UpdatePanel编程功能、Page
51CTO旗下网站

我要回帖

更多关于 诺埃尔 的文章

 

随机推荐