巴鲁's profile岩屋PhotosBlogListsMore Tools Help

Blog


    July 09

    不花钱买房的经历(转)

    最近关心了一下房子,看完之后,真不知道中国是次贷先来,还是通货膨胀先来。


    昨晚,和一个开典当行的同学喝酒。

      我问同学,“你买了多少套房子,多少间铺面?”

      “房子22套,铺面12间。”同学炫耀似的答道。

      “那你花了多少钱呢?”同学虽然是千万级的富翁,但他也不至于能把千万多的钱压在固定资产上吧!我心中默算了一下,非常怀疑!

      “现在买房子,傻瓜才掏钱!亏你还是个生意人!”同学鄙视的看着我。

      同学的话,简直令我震耳欲聋,使我目瞪口呆。我连忙虚心请教。于是,同学就对我说出一番匪夷所思、惊世骇俗的话来......以下,都是我同学的话,虽然词句有些出入,但基本语意我还是转述清楚了的。

      一、买房不掏钱,你是怎么操作的?

      同学的话——

      你知道,我的典当生意完全是靠钱生钱。第一次买房时,虽然我有能力一次性付清全款,但我还是不愿意那么多的现金被房子压死。那时,正流行“零首付”,于是,我一分钱没花,贷款18万买了房(贷款期限为一年)。

      一年期满,要还房款和利息了。也不知道是我幸运呢?还是我倒霉!那时,我的资金被一笔业务占用了。为了业务,我不仅还不起房款不说,还得另外 新增贷款。迫不得已,我找老关系——银行的信贷部经理沟兑。当我吞吞吐吐的把“延期还房款并另外新增贷款”的要求说出来后,没想到,信贷经理却诡秘的一 笑,非常爽快的答应了。

      信贷经理给我出的主意很简单:让我老婆,以两倍的价格,贷款买我的房子,贷款期限也是一年。

      “两倍的贷款,那就是两倍的利息啊!你这不是变着方的剥削我吗?”我还没有反应过来。

      “如果到时,你不还款呢?”信贷经理很镇定。

      “啊......”

      “被银行收房,没有什么大不了的!关键是除去税费后,我还凭空白得了17万。不,这17万我可不能一个人得,我至少要分给他5万。”很快,我反应过来。于是,我对信贷经理会心的一笑......

      这,就是我第一次买房的经历。

      我后来的买房经历都与此类似,也就是:坚决的不掏一分钱,全部用银行的贷款买房子;然后,如果遇见不明真象的投资者(说是投资者,其实是傻帽)买房,那就高价卖给他。如果一直没有投资者买房,那就不断的把自己的房子加价转贷给自己,不断的用银行的钱来还银行的债。

      并且,我是开典当行的,与银行的关系是一般人无法比的。一般老百姓买房,大都选择20年按揭,而我买房从来都是只贷款一年,到期了才还本金和利息。这样操作,不用交月供。而贷款到期后,我只须做做“纸面文章”转贷款一下。实际上,我一分钱也不用掏。

      二、我不信,在实际生活中能有如此荒谬的事情。你讲的是“童话”吧!

      同学的话:兄弟!我是看你人对,才给你讲这些掏心窝的话。你怎么可以不相信我呢?你要怎样才能相信我呢?

      作者发言:你就给我讲点实际的例子吧!

      同学的话:你知道王二麻子是怎么发家的吗?

      作者发言:“那你说说。”王二麻子是我的另外一个同学,现在是开发房地产的亿万级富翁。

      同学的话——

      那我就说说。

      想当年,王二麻子那个落魄啊!就连他注册公司的注册资金,也是我临时拆借给他的。如今,别看王二麻子表面风光,他拿地的钱,是从银行贷款的;修房子的钱,是建筑商垫资的。总之,他就是一个完全的“空手道”。

      房子修好后,王二麻子在正式开盘前,通常要举行一个“内部认购会”。这个内部认购,其实就是王二麻子召集公司内部员工和一些象我这样的、相熟 的炒房客(或者干脆是一些从招聘会上收集的、众多的、应聘者的“身份证复印件”),以这些人的名义来买房子,全部用银行贷款来买。这,就是所谓的“开发商 囤房”。

      并且,此次交易上报给银行的交易价,必须比实际的内部交易价提高30%。为什么?因为贷款买房要首付两成啊!举个例子,如果你想收回100 万,那你就必须以130万的房价向银行贷款。这样,银行给你的钱就是:130万×0.8=104万;你实际装进口袋的钱就是:104万—4万(给相关银行 人员的“好处费”)=100万。

      就这样,通过开盘前的内部认购,王二麻子其实已经成功的全部收回了投资,把所有的风险转给了银行。到这时,王二麻子才会开始打广告卖房子,并归还“买地的银行贷款”和“修房子的建筑商垫资”。

      作者发言:后面又怎么操作呢?

      同学的话——

      你怎么那样笨啊!稍微聪明一点的人都能想到,后面的操作方法,其实与我炒房的方法是一样的,也就是:“如果遇见不明真象的投资者(说是投资 者,其实是傻帽)买房,那就高价卖给他;如果一直没有投资者买房,那就不断的把自己的房子加价转贷给自己,不断的用银行的钱来还银行的债。”

      不过,由于已经收回了按揭贷款的首付款,所以后面的操作并不需要每一次都加价30%,只需按着楼市房价本来的上涨幅度加价就可以了(即每年上涨14%左右)。

      什么?万一房价上涨幅度不足于支付贷款利息怎么办?笑话,你什么时候看见过中国楼市的房价上涨幅度低于当年的贷款利息了?

      明白了吧!这,就是中国楼市的房价只能上涨不能下跌;并且,房价的上涨幅度还不能低于当年贷款利息的真正原因!!

      想想就觉得可笑,居然有学者说,“建筑成本和地价的不断上涨,是房价飞涨的原因。”这简直是扯蛋!其实,“金融成本”才是房价构成的大头,至少要占目前房价的50%。

      以上海倒塌的莲花河畔景苑为例。网上公布,其楼面价格不到604元/平方米,建筑成本也不到1300元/平方米(其实,网上公布的建筑成本并 不准确。市法院电梯公寓的建筑质量总该比它好吧,建筑成本也没有超过1000元/平方米)这么便宜的房子,开发商为什么非得要把它卖到14000元/平方 米呢?卖低一点、少赚一点不行吗?答案是不行的。原因很简单,“金融游戏”是有成本的,每这样操作一次,房子就必须加价一次。只有不断的加价,上述操作才 有生存的空间。所以,莲花河畔景苑前年卖7000元/平方米,去年卖10000元/平方米,今年就得非要卖14000元/平方米。俗话说“豆腐盘成了肉价 钱”。这,就是“金融游戏”的代价!

      有句话道出了目前中国楼市的实情,“房子是用来炒的,不是用来住的;商品房是卖给银行的,不是卖给老百姓的。”

      老同学,请你想一想,现在的楼市,房价明明已经远远的超过了老百姓的实际购买能力(也就意味着房子永远卖不出去),为什么房价还会不断的上涨呢?并且,还要“量、价齐涨”呢?原因何在?正在于此!

      三、你讲的,只是极个别的现象,不能代表中国楼市的整体形势。

      同学的话——

      老同学,你太孤陋寡闻了吧。请看:

      李树彪案:1999年9月8日到2004年1月15日,湖南郴州市住房公积金管理中心原主任李树彪骗取公积金贷款、银行贷款共计44笔,涉案金额1.2亿元。

      康明案:2000年前后,河南郑州康明置业有限公司通过东明花园414套房源,在工商银行、交通银行、建设银行、招商银行进行重复抵押贷款共690多套,至少套取银行资金2亿元。

      姚康达案:从2002年至2003年上半年,中国工商银行上海外高桥保税区支行向“姚康达”一人发放房贷7141万元,用于炒作128套住房。

      森豪虚假按揭案:从1997年年至2002年上半年,北京市华运达房地产开发公司以森豪公寓、太利花园为幌子,采取假按揭的方式,向中行北京 市分行、北京银行中关村支行、北京银行展览路支行三家银行骗贷共计16.2亿元。(请看《京城最大假按揭骗贷案震醒房市》 http://finance.people.com.cn/GB/1045/9255894.html)

      建行广州分行案:2002年,审计署抽查建设银行广州地区八家支行的住房按揭贷款,发现10亿元虚假按揭。仅广东省汕尾市公安局某副局长一人,即骗取建行广州市芳村支行按揭贷款3793万元。

      曲沪平案:2006年,上海浦东发展银行陆家嘴支行在已发放贷款中,发现1.26亿元个人房产按揭贷款存在抵押不实,贷款代理人为“曲沪平”。其后更查出与曲相关的房贷高达91笔,涉及金额4亿元左右。银行不得不委托房屋中介公司出售抵押房产,以回收问题贷款。

      同泰案:2006年,北京同泰房地产公司涉嫌利用87份假业主所签购房合同,从银行骗贷6700万元。

      成都虚构房产骗贷案:2005年至2008年期间,犯罪嫌疑人唐某勾结成都市房管局工作人员以虚构房产的方式办理房产证进行骗贷。现已发现的涉案房产证已超过一百多套,涉及金额近二千万元!而且事态还在进一步发展中。

      另外,今年银监会三令五申的明确要求,“贷款发放必须用于满足实体经济的有效信贷需求,防止信贷资金流入楼市”。然而,40000亿资金依然流入楼市......

      老同学,请你想一想,为什么会发生那么多的这类事情呢?为什么全国的银行都明知道是假按揭也要把钱贷给地产商呢?难道银行的官员们都是傻子吗?

      其实,银行的官员们一点都不傻。

      原因在于,银行内部人员与开发商其实是狼狈为奸的同伙。参与这项操作的某些银行内部人员决不是希望通过购房者支付贷款利息为银行赚钱,坦白地 说,他们是在参与分赃——他们与开发商一起盗取不义之财,将风险转嫁给国家银行,而买单的是真实的购房者。一旦真实的购房者无法买下这个巨单,银行就出现 危机。

      这时候,买单的就是全国人民了,国家必须银行注资,消除烂帐。国家的钱哪里来?印钞票!结果是什么?通货膨胀,物价飞涨,老百性的钱不值钱 了,或者说老百姓的钱被抢了,被谁抢了?被国家抢去堵漏了,堵开发商和银行某些蛀出来的大洞。这个洞如此之大,堵住了也是一个丑陋的疤,而疼的永远是百 姓。

      所以我会说——房地产业已经成为相关单位、相关部门团结起来瓜分国家金钱(其实是老百姓的存款)的道具。

      违规又有什么大不了的?银行官员们不怕啊!只要表面的纸上手续完备了,我就没有了责任。即使按揭贷款是假的,又有什么关系?况且银行有国家这 个后台,就是亏了也不怕,反正银行的官员们现在挣了钱就行。至于银行以后不行了,自然有国家来管,况且那是下届银行官员的事情。难怪中国银行的坏账率居然 在40%以上!原来,在中国,最大的腐败在银行!!

      四、我依然认为,这只是极个别的现象。如果你讲的是普遍的现象,为什么还没有开发商被收楼呢?

      同学的话——

      原因有许多,简单的有:

      1、你不关心房地产界的新闻。比如“曲沪平案”,上海浦东发展银行陆家嘴支行就收了楼,不得不成为了“房东”;

      2、由于开发商在银行内部的同伙,掩护工作做的好的缘故,案子没暴。

      掩护工作怎么做?很简单——只要一近债务偿还期,开发商就会和“银行内部的同伙”们一起,把房子又一次加价卖给(转按揭)其它的“身份证复印件”(其实,房子依然在开发商手里)。这样操作,开发商永远不会被收楼。

      虽然这样操作,房价会不断的上涨,并很快的远远超过老百姓的实际承受能力(也就意味着房子永远卖不出去)。但是,这样的操作,如果只从官样程 序上来看、只从表面的纸上手续来看的话,它是永远合法的。这就是银行官员们敢于给开发商打掩护的原因——因为以目前的银行制度来说,只要表面的纸上手续完 备了,银行的官员就没有了责任。

      五、你的意思是,目前的银行贷款制度有着严重的漏洞?

      同学的话——

      当然!

      我能不花钱的买那么多的房子和铺面,甚至还靠房子从银行套出那么多的周转资金做生意,这一切,全都得感谢银行的制度漏洞啊!银行的贷款制度,真的是“为人民服务的好制度”啊!

      作为一个典当行的老板,以同行的眼光来看,我认为银行贷款的制度漏洞有:

      1、抵押物价值的评定方法有缺陷。

      比如,明明开发商拿地只用了5000万,他却可以用这块地抵押贷款1个亿;比如,开发商修楼修到盖顶,明明只用了7000万(含地钱),他却可以用这个楼抵押贷款2个亿。

      如果,按照我们典当行的规矩来办,事情又会怎样呢?

      当开发商用这块地抵押贷款时,我会亲自去核实:开发商拿这块地,是否真的给了政府5000万。并且,如果这个情况属实,他也最多只能贷款4000万。因为我要预提风险基金啊!

      当开发商用这个楼抵押贷款时,我也会亲自去核实:开发商修这个楼,是否真的花了2000万(只算建筑成本,不含地)。我会按照各种人工、各种 建筑材料的最低价来核算这个楼的建筑成本。并且,如果开发商修这个楼的确花了2000万,他也最多只能贷款7000万×0.8=5600万(连地一起抵 押)。

      最后,当购房者按揭贷款时,我绝对不可能按照“购房合同交易价”来发放贷款,购房者最多能获得的贷款金额是:7000万×0.8×购房面积/此楼总面积。

      举个例子:有个卖衣服的商人因为生意周转,需要以衣服为抵押物向银行贷款。你说说,银行是该“按照衣服出厂价的8折”给他贷款呢?还是该“按照衣服零售价的8折”给他贷款。

      作者发言:当然该按出厂价算。如果按照零售价算的话,卖衣服的商人干脆不用开店了,他直接把衣服卖给银行赚钱更快!恩,我明白了,怪不得在中国会出现“房子是用来炒的,不是用来住的;商品房是卖给银行的,不是卖给老百姓的”这样的奇闻!!!

      同学的话:是啊!抵押房的价值,不能由客户之间的交易来决定啊!!

      2、责任追究方法有缺陷

      “只要表面的纸上手续完备了,银行官员就没有了责任。”这怎么可以呢?在我的典当行,我可不管你的纸上手续是否已经完备,只要是你负责的业务出了问题,嘿嘿!我就找你算帐!!!

      另外,让国家损失16.2亿的森豪虚假按揭案暴露后,相关的银行官员居然没有被追究责任,这怎么可以呢?嘿嘿!如果这样的事是发生在我的典当行,不要说让他家破人亡,我至少会让他和他的亲戚倾家荡产!!!

      作者发言:是啊!发生金融案件后,居然不追究相关银行官员的责任。换成是我,我也觉得“打马虎”比尽忠职守更合算!!!怪不得中国的金融案件 层出不穷。听君一席话,胜读十年书!听你说到这儿,就连我这么笨的人也知道了应该如何理顺楼市——只要严格金融制度,让炒房的人不能获得投机的资金,楼市 的泡沫自然的就会散去!!


    July 01

    AR用肢体来代替键盘

    http://labs.e-graphics.cn/OperateByVideo/

    说明:在视频中您通过触摸红色区域来控制小人的前进方向。



    June 30

    用Microsoft Visual Studio开发Flex——Amethyst IDE

    作者 Moxie Zhang 译者 宋玮 

    通常,开发者都希望把他们的已有技能应用到新的技术上。Sapphire Steel Software的Amethyst IDE就 是这么一种工具,它可以让.Net开发者在其熟悉的Visual Studio环境中开发Adobe Flex或AIR应用。Infoq最近采访了Sapphire Steel的创始人及技术负责人——Huw Collingbourne,以了解更多关于Amethyst IDE的情况。

    Collingbourne参与到了Sapphire Steel的Ruby和Flex相关软件产品的整个设计及规划当中,他目前负责“Amethyst Designer”的开发,这是一款可视化的拖放方式的开发环境。按照Collingbourne的说法:

    “Amethyst是一个针对Adobe Flash平台的编辑、设计、调试环境。其完全集成进Visual Studio,支持Flex、AIR和ActionScript项目,可以让开发者创建基于Web的或者是独立的应用程序。Amethyst有两个版本 ——一个免费的“个人版”和一个商业的“专业版”。

    Amethyst IDE是如何开始的?

    我们于2008年初开始开发Amethyst,去年12月发布了第一个公众beta版。最初我们把Flex看作是为Ruby On Rails创建基于Web用户界面的一种备选方式。

    用Flex为Rails做了几个基于Flash的简单界面之后,我们很快发现,与使用HTML标记语言相比,Flex给了我们一种更加可视化、更紧 密集成的方式来开发应用程序。但是可用于Flex开发的唯一可视化设计环境只有Adobe的Flex Builder,它是构建在Eclipse之上的。

    我们意识到真正需要的不是(我们最初所想的)一个简单的支持Rails的Flex设计环境,而是一个完整的Flex IDE环境,能够让Visual Studio用户编写、设计和调试任何类型Flex、AIR或ActionScript应用的全套工具。

    在已有Builder、IntelliJ IDEA和其他Eclipse ActionScript插件的情况下,为什么还要开发Amethyst IDE呢?

    因为两个字:Visual Studio。根本的问题是许多Visual Studio用户不打算使用其他IDE。实际上,对许多开发者来说,如果一门语言或技术不被Visual Studio所支持,他们压根儿就不会用它。

    Steel在过去几年Ruby开发过程中,积累了许多创建Visual Studio IDE方面的专业知识,这就是为什么我们从开始做Amethyst的时候就非常自信,我们能够创造出包含所有工具的完整的开发环境,让Visual Studio用户感觉理当如此。Amethyst是除Adobe的Flex Builder之外唯一能够提供如此完整工具集的IDE。

    可是,我想Amethyst从一开始就是针对Visual Studio的。我们的目标并不是“克隆”Flex Builder,相反,是让Flex开发更贴近Visual Studio。底线就是:如果你是Eclipse用户,你可能会选用Flex Builder;如果你用的是Visual Studio,你会首选Amethyst。

    在开发Amethyst的过程中,最大的挑战是什么?

    无缝集成。让ActionScript语言、Flex框架、AIR运行时和Flex/AIR可视化设计器看上去就像是Visual Studio原有的东西一样,就像是微软的C#、.NET以及Silverlight这些技术一样。为达到这一目的,我们必须支持一大堆Visual Studio的特殊特性,从重构“smart tags(智能标签)”到可视化设计器与底层ActionScript及MXML的正向/逆向工程。完整及无缝集成,一直是Amethyst的基本设计目 标。

    根据你们及你们用户的经验,为什么.Net开发者想要做Flex/AIR开发?

    首先,我要说的是,Amethyst并不是针对.NET开发者的,而是针对Visual Studio用户的。Visual Studio用户需要开发的许多应用程序根本不用.NET,而是面向Flash平台的。

    尽管如此,.NET开发者无疑也需要把微软和Adobe的技术集成在一起——例如,后台用ASP .NET,前台用Flex/Flash的应用程序。可以有很多种方法做到这一点:通过发送数据请求到后台,然后把结果展现在前台用户界面上。当然,考虑到 Flash的图形化和动画能力,开发者并没有被限制在创建业务应用上。有些人可能会用这种方式来创建游戏或Facebook应用:在浏览器里显示动画,而 游戏得分和用户概要则存储在数据库中。还有些额外工具还可以使Flex和.NET之间的交互更加顺畅,比如Midnight Coders的WebORB for .NET。

    需要说明的是,Amethyst也可用于其他后台技术。实际上,我们另一个IDE——Ruby In Steel的用户,甚至可以在同一个Visual Studio解决方案中创建出混合的Flex/Rails应用。

    在Silverlight和Flex的比较方面,你们的观点是什么?

    支撑Silverlight和Flex的图形技术和编程框架在技术上有许多区别,我们所关心的区别在于Flash Platform处于绝对支配地位。Flash遍布天下。Adobe把Flash描述为“当今世界无处不在的软件平台”并声称Flash Player被安装在互联网上99%的机器上。无论你是否接受这些统计数据,Flash无疑都是一个庞大的重要平台。但是,到目前为止,还没有给 Visual Studio用户提供支持它的开发工具。

    如果人们想要开发Silverlight,没问题。Microsoft提供了工具。但是,如果开发者需要一个支持Flash平台的专业品质IDE,那么Amethyst非常合适。

    InfoQ likes to hear how do Visual Studio developers like the Amethyst IDE product.

    Amethyst的路线图是怎样的?

    我们计划在接下来的几个月继续发布beta版,每个beta版引入一个或多个新特性。在这些大的beta版本之间,我们还将发布一些临时版本或者修 改了一些错误或增加了一些试验特性的“edge” build。我们还没有宣布Amethyst最终版的发布日期,但在Adobe发布Flex框架版本4之前是不大可能的。

    InfoQ乐于听到Visual Studio开发者是否喜欢Amethyst IDE产品的相关消息。

    June 26

    AR Labs

    最近把AR的东西都放到一个实验室里了。
    http://labs.e-graphics.cn/

    AugmentedReality

    Alcatel

    A precious gift in a delicate box...

    The AugmentedReality

    HelloKitty

    HelloKitty...

    The AugmentedReality

    Transformers

    Transformers...

    The AugmentedReality

    The Youtube Wall

    Input your favorite videos and watch in a new way...

    The AugmentedReality

    The Remote Control Car

    Display, then remove the marker… then play! ...

    AugmentedReality

    Virtual Watch

    The xxxx

    NissanCube

    Think out of the box with the Nissan Cube!

    The AugmentedReality

    ETIHAD

    Fasten your seat belt with this virtual plane!

    AugmentedReality

    NetLink

    NetLink.


    June 16

    ActionScript 3网站构建框架

    作者 Moxie Zhang 译者 沙晓兰 

    开发基于RIA的网站有很多种方法。对于和多媒体内容息息相关的业务和个人来说,Flash形式的网站尤其动人。Fosfr是一个ActionScript 3网站构建框架,专门用来创建Flash网站。InfoQ采访了Fosfr的创始人——Jeff DePascale,以深入了解Fosfr。 

    Q. 是什么驱使你开始开发这个Fosfr框架的? 

    A. 我大部分工作都跟小型网站开发相关。Fosfr最早是为了保证各网站的版本能保持一致。最初,AS2中有组特别的类严格控制站点的构建,Fosfr作为 AS3框架主要是以前面提到的那个类库为基础来扩展,给我所有的Flash构建——无论是小型网站,还是独立的SWF,或者是其它项目——提供了稳定、一 致的基础。 

    Q. 你为什么觉得会有AS3(或者说Flash)网站的需求? 

    A. 目前有两种对立的看法,一部分认为Flash有益于互联网的发展,另一部分人认为Flash只是让整个网络充斥着用户体验很烂而又无法被检索到的网站。就 我个人认为,每个技术都有各自发展的天地,非要说某种技术在像互联网这样迥异的媒体中比另一种技术更适合,未免有些误导。Flash有缺点吗?当然 有,SEO方面就是其中一个非常大的缺点。Flash有没有被用到一些不合适的场合?当然也有。但是,如果能有效应用它的长处的话,Flash能提供强大 的富用户体验, 

    Q. 你能概括下Fosfr的基本构架吗? 

    A. Fosfr的整体实现是一个三层SWF结构。一个是核心层,或者说是主SWF。这个核心层包含了预加载器,可以看作是项目的宿体。核心层之上是shell SWF,这里包含了所有通用的网站元素,诸如导航栏、脚注等等。最后,那些可变内容则放在子SWF文件中。 

    Fosfr的优点还在于它有用于生成文档的类库。Fosfr提供自定义文档类,所有.as文件都能得到扩展(包括外部类);它提供直至自动生成文档 这个层次的自定义方法,这些方法可以是为了调试、跟踪、导航,也可以是为了访问Fosfr的其它控件,比方说cookies、url信息等等。项目的任何 一个地方,你都能直接索引到fosfr对象,快速访问到框架的任何一个方面,可以访问到加载在项目中的所有SWF。 

    整个项目由一个外部XML配置文件来驱动,根据这个配置文件,能构从该xml文件本身直接访问Fosfr主要控件的所有属性。借助于自动生成文档的 类库的后台工作,只需要在每个.as文件中添加几行简单的代码就能实例化整个框架。只要几分钟,你就能得到可以立刻运行的一个功能完善的网站了。 

    Fosfr还能和Prequel集成使用,Prequel是我开发的一个预加载API;Fosfr还能集成SWFAddress,完全自动完成,不需要任何手动处理。通过Fosfr创建文档的类库来开发结合SWFAddress的子SWF的自定义功能会非常容易。 

    另外,如果你只需要一个SWF文件和一个对应的预加载器,那么可以只实现Fosfr的核心文件和shell文件,可以省去其中的导航 /SWFAddress功能;或者通过框架中的FosfrLite创建一个独立的SWF。FosfrLite也可以选择使用XML配置文件。 

    Q. Fosfr能和已有的CMS甚至诸如Wordpress这样的日志平台集成吗? 

    A. Fosfr的XML配置文件包含了一个专门针对自定义网站元素的结点。CMS或XML编辑插件直接与这部分xml配置交互的话,能够很容易操作在 Fosfr上创建的任何SWF文件的各个方面。目前还没有给Wordpress及类似平台专门开发插件的计划,但我会在以后的开发中实现此类集成。 

    Q. 开发Fosfr,你用的是什么开发工具?还有,Fosfr和Flex有关吗?要是没有,以后会把这两者结合起来吗? 

    A. 开发Fosfr,我用的是FlashDevelop,这也是这段日子以来一直在用的开发工具。在调试方面,我结合采用了集成在Fosfr当中自定义调试器和Flash播放器的标准调试器。目前我还没有任何计划要把Fosfr集成到Flex当中的计划。 

    Q. 你对Fosfr的前景有何规划? 

    A. 目前,Fosfr的版本上处于0.8。在推出1.0版本之前,我计划完成处理自定义事件和事件提醒的系统,在调试器上再多加一些功能,而且希望到时候还能 集成我正在抓紧开发的、更新、更强壮的Prequel版本。处于开发阶段、尚未结合在公共发布当中的模块还有tab管理和音频管理。我还计划开发另外的文 档管理类库来捆绑papervision3D站点的创建。1.0及其之后的版本将囊括这些特性,而且会不断添加新功能。就眼前来说,更重要的是确定什么是 目前要完成的,要编写快速入门指南,最好还要创建一个AIR应用把XML配置文件转变为向导。我希望开发人员能在半个小时以内就能轻松掌握Fosfr,而 且我觉得Fosfr能大幅度缩短产品的开发周期,这无疑是它的一大优势。但是如果没有快速入门指南和向导的话,这个优势也很难实现。Fosfr非常有用, 能够极大地缩短开发周期,但前提是你要懂得怎么去使用这个工具。我在不了解如何使用某个API的前提下直接去用这个API,还确实遇到过很多问题。 Fosfr在1.0之后就不会有这些问题。所以编写指南是目前最迫切的一件事。之后,我会发布完全值得信赖的1.0版本,会尝试让公众关注到这个项目,目 前我有意识地尽量把关注度控制到最小。 

    Q. 为什么要把这个开发框架叫作“Fosfr”? 

    A. 从技术上来说,它的全称是“Flash Open Source Framework”。然而,由于之前SWFObject和SWFFit因为名字当中有“Flash”这个词,在注册商标的时候遇到很多问题,所以现在严 格采用Fosfr。另外,这个名字厅听上去也很酷。 

    InfoQ会关注并且追踪报道Fosfr的开发进度。

    查看英文原文:ActionScript 3 Site Framework - Fosfr

    June 01

    Adobe发布Flash Builder 4 Beta1和Flash Catalyst Beta1

    6月1日,国际儿童节,Adobe如约在今天中午释放出了Flash Builder 4 Beta1和Flash Catalyst Beta1。
    Flash Builder 即原先的Flex Builder。在Flash Builder 4中将出现简体中文版。Flash Catalyst之前的开发代号为Thermo。

    Flash Builder 4 主页
    Flash Catalyst 主页

    May 14

    纽约时报放弃WPF/Silverlight,转向Adobe AIR

    作者 Jonathan Allen 译者 张龙 

    形势总是那么变幻莫测,微软的WPF和Silverlight平台又丧失了一个重要客户。我们曾在2006年报道过Times Reader(纽约时报阅读工具)基于WPF的消息。 从那时起,纽约时报还为OS X用户提供了一个基于Silverlight的应用,但遗憾的是,Silverlight版本总是充满了各种问题,有政治上的,也有技术上的。最大的障碍 就是缺少跨平台的支持。虽然基于WPF,但Silverlight的功能只是WPF的一个子集。这就导致了不太容易编写既适合Silverlight又适 合WPF的代码,因此大多数的开发者不得不维护两套独立的代码基。设计Silverlight 2.0之时就考虑到让其运行在浏览器中,而WPF则不存在这个限制。对此事敏感的Apple用户总是抱怨无法享受到与Windows用户一样的特性。众所 周知,Silverlight产生的文本有时不太清楚,而这对于新闻显示来说是无法容忍的。最后,Times Reader与Safari 4的兼容性还有点问题

    为了解决众多的问题,纽约时报决定放弃WPF和Silverlight,Rob Larson说到:

    下周我们将推出Times Reader 2.0。该版本将构建在Adobe AIR上且在Windows、Mac及Linux上都有着良好的表现。借助于该最新的发布,Times Reader更像是打印的纸媒体,同时每5分钟更新一次以反映Web上最新的新闻。

    Times Reader 2.0现在已经可以使用了;同时在微软的促进下,纽约时报Silverlight工具箱也发布了,选择这个时候发布真是可笑之至啊。

    查看英文原文:New York Times Dropping WPF/Silverlight for Adobe AIR

    May 08

    Blaze Data Services还是LiveCycle Data Services?

    作者 Ryan Knight 译者 张龙 

    摘要

    现在已经有不少文章在谈论各种版本的Data Services,然而却没人能说清楚该如何从这些Data Services中进行选择,同时也没人对端点(end point)和管道(channel)是如何影响着应用性能这个议题进行过详细论述。

    尽管Adobe提到4个不同版本的Data Services,但实际上只有2个主要版本。一个是开源的Blaze Data Services,另一个是名为LiveCycle Data Services(LCDS)的私有版本。这两个产品都提供了一个重要特性:借助于Message Broker Servlet连接Flex和Java。他们都可以通过二进制协议,ActionScript消息格式(AMF)使用远程过程调用和消息与服务器端进行通 信。此外,Adobe还在这两个核心产品之上提供了支持版本和更具扩展性的产品套件。

    从我在Gorilla Logic的工作经历来看,我认为这两个产品之间的主要差异在于支持项与数据管理,而性能和可伸缩性之间的差异则颇具争议。LCDS为客户端通信提供了额 外的端点和管道。Adobe宣称这么做的主要好处在于提升了可伸缩性,然而基本的通信方式依然是通过HTTP上的AMF,这样不管服务器端或客户端的配置 如何,其性能没什么差别。

    LCDS提供的另一个特性是数据管理,它通过实时的冲突调节(conflict resolution)实现Flex客户端和Java服务器端之间的数据同步,同时还提供了数据装配器和适配器以通过JDBC、Hibernate或其他 客户化的适配器连接Data Services和持久化存储。

    那么这4个不同版本都是什么呢?

    1. Blaze Data Services——免费、开源的版本
    2. LiveCycle Data Services社区版——Blaze DS的一个支持版
    3. LiveCycle Data Service单CPU协议版——商业版的一个免费版本,具有一些额外特性,但只能用在单个CPU上
    4. LiveCycle Data Services——带有支持的商业版的付费版本

    同时还有一个Adobe称之为LiveCycle Data Services Enterprise Suite产品套件。它向核心的Data Services中添加了额外的产品以通过PDF Generation、Forms及Digital Signatures等工具提供内容服务和文档输出功能。

    理论上来说,我们可以根据以下三点来选择产品。

    1. 需要支持么?这取决于应用是否需要支持,比如任务关键的应用。
    2. 需要数据管理服务么?这取决于应用对数据同步和管理服务的需求。
    3. 需 要额外的LCDS端点和管道么?根据Adobe所述,如果同时有几百个并发连接,那么就需要了,然而这么说还是颇具争议的。服务器能 处理的并发连接数取决于多种因素,比如线程和I/O吞吐量等,同时我们还可以通过多个服务器的负载平衡来处理大量的并发连接,就像Java应用服务器那 样。

    在本文的最后有一张比较图表概览了这4个不同版本。

    概览不同的端点——Servlet和NIO

    在Data Services中,端点就是服务器监听来自客户端连接的方式。对于Blaze DS和LCDS来说,标准的端点基于Servlet,运行在应用服务器上。端点通过Message Broker Servlet(配置在web.xml中)加入到标准的Servlet过滤器链中,这样我们就可以将Blaze DS和LCDS部署到现有的Java应用中。与Java Servlet端点类似,每个客户端连接都需要服务器上一个单独的线程。

    与上面相比,NIO端点的工作方式就完全不同了。NIO表示Java新的输入/输出。NIO端点会创建一个独立的基于NIO的Socket Server。其优势在于单个线程能管理多个I/O流,这样就无需很多线程,同时能处理更多的客户端。

    要想使用NIO,我们面临着如下几个挑战:

    • 客户端无法通过客户端代理访问NIO端点。
    • 连接无法通过标准的Servlet链,因为这会打断依赖于Servlet的任何一部分系统。比如我们在项目中使用Servlet处理文件上传。
    • 要想使用NIO,我们必须利用客户化的认证,因为Socket Server运行在与Servlet容器不同的进程中。

    尽管我们可以通过配置的方式让NIO服务器监听80端口,但通常它却驻留在其它端口上。这样就给网络配置带来了挑战,我们必须将网络配置成可以接收 新端口上的连接。根据服务器内部网络和各种客户端的不同,这可能会产生问题。不过这个问题还是有可能解决的:使用带有sticky sessions的负载平衡器。

    然而Java NIO的这些优势却是颇具争议的。开发Java NIO的目的在于让单个线程处理多个连接,这是通过令单个线程遍历连接池以检查是否需要读取或写入新的数据来实现的。但由于NIO是在2002年引入的, 那时的JDK版本还是1.4,而现在JVM和Linux中的线程已经得到了极大的改进,因此Java和Linux处理大量线程的能力也已经得到了巨大的提 升。

    举个例子吧,Linux Kernel 2.6引入了一个新的线程库,也就是本地的POSIX Linux线程库(NPTL)。测试表明,借助于NPTL在IA-32上只需2秒钟1就能启动100,000个线程,而如果不使用NPTL的话,Linux Kernel需要花费15分钟才能启动这么多线程。

    更有意思的是Paul Tyma等人发布了一篇博文说到Java NIO实际上是个劣势2, 3, 4。凭借一系列基准,Paul得出了如下一些结论:

    • Java NIO丧失了大约20%到30%的吞吐量
    • 线程上下文切换的代价并不大
    • 同步的代价并不大

    Paul根据这些测试得出如下结论:一个连接对应一个线程完全没问题。在使用JDK 1.6的情况下,JVM可以处理15K到30K的线程数。这意味着Servlet端点已经不再局限于几百个线程了,相反,线程数可以更多,甚至15K个连 接以上。当然了,实际的限制取决于硬件配置,比如内存、CPU等等。

    概览不同类型的管道

    我们可以在基本的网络连接之上使用多种不同类型的管道进行客户端与服务器端的通信。基本远程过程调用使用的是标准AMF管道。

    另一种通信形式就是消息,这样应用就可以推送来自于服务器端的消息并进行近乎实时的通信。代表性应用就是聊天服务器、拍卖客户端及协作服务。

    Data services处理消息的主要方式就是轮询(polling)。由于HTTP上的标准通信并不会一直打开通信管道,这样一个轮询管道就会让客户端请求一 直等待服务器端,直到数据可用为止,其等待时间从几毫秒到几分钟不等。这么做就模拟了从服务器端推送数据的过程。

    有两种基本的轮询管道:短轮询与长轮询。其主要区别在于服务器端等到客户端数据变得可用时所需时间的多少。

    一种更高级的管道是流式AMF(streaming AMF)。它会打开到服务器端的HTTP连接并让服务器以流的方式在该管道上传输消息(消息的数量没有限制)。这么做就无需客户端轮询了,同时还能使用标 准的网络配置。该方式最接近于实时流。流式AMF的挑战在于它使用了HTTP 1.1的持续连接,而不同的浏览器对其的实现方式却不同。

    最后一种管道就是RTMP(实时消息协议)管道了,目前只有LiveCycle DS对其提供了支持。Adobe最近宣布将要发布RTMP规范,由此我猜想它最终将会得到其他产品的支持。

    设计RTMP的目的是在双向管道上以流的方式处理大量多媒体和数据。RTMP的一个主要好处是可以一直打开与客户端的连接,这样就可以推送服务器端的数据了。凭借这一点,RTMP可用于Comet风格的通信和实时的数据推送。

    RTMP有三种形式。一种是基于TCP并使用1935端口,其底层实现要求在客户端浏览器上初始化连接。由于使用了非标准的端口,这样客户端防火墙经常会阻止其运行。

    RTMP的另两种形式在HTTP请求内封装了RTMP消息,这样协议就可以穿越防火墙并使用标准的端口。这两种形式分别是RTMPT(用在标准的HTTP上)及RTMPTS(用在安全的HTTPS上)。

    在Flex中,所有对服务器的调用都是异步执行的,因此这些管道都不会对客户端性能造成任何影响。然而他们却对服务器端性能有一定的影响,尤其是在 同时打开多个客户端连接的情况下更是如此。例如,流式AMF会导致服务器端打开大量并发的客户端连接,这也就意味着会产生多个线程。但如前所述,多个线程 的影响微乎其微。

    所有的客户端连接都可以配置默认管道和备选管道,如果默认管道失败则可以切换到备选管道上。根据服务器端处理的不同通信类型,我们可以指定不同的管道链。例如,可以指定RTMP管道,但如果该连接失败,就回到长轮询管道。

    结论

    相对于Blaze DS来说,LiveCycle DS的真正优势在于其支持与数据管理,而额外的端点和管道所带来的优势却是颇具争议的。根据我们在Gorilla Logic所完成的项目来看,根本无需使用NIO端点或是RTMP。但从技术角度来看,没什么是确定的。我倒是想多点项目经历。

    特性比较表

    table

    关于作者

    Ryan Knight是Gorilla Logic的高级软件架构师,他主要从事Flex和Java咨询方面的工作,同时还是Anvil Flex的主要贡献者,这是一个开源的项目,用来帮助企业上手Flex开发。他有着12年的Java开发经验,期间经历了从开发到咨询的各种角色变迁。

    资源

    1 http://www.linuxjournal.com/article/6530

    2 http://paultyma.blogspot.com/2008/03/writing-java-multithreaded-servers.html

    3 http://www.theserverside.com/discussions/thread.tss?thread_id=26700

    4 http://cometdaily.com/2008/11/21/are-raining-comets-and-threads/

    来自Adobe的链接

    LiveCycle Homepage

    LiveCycle Data Services ES FAQ

    Comparison of the different LiveCycle Data Services solutions

    其他资源

    LiveCycle ES vs LiveCycle DS vs BlazeDS - clearing up the confusion

    Why are you NOT using LiveCycle DS?

    查看英文原文: Blaze Data Services or LiveCycle Data Services?

    April 21

    Silverlight和Java的互操作

    作者 Robert Bell    译者 连小剑

    简介

    摘要

    本文针对那些希望把Silverlight集成到解决方案中的Java社区开发人员,给出了一些入门指导。微软Silverlight是一个跨浏览 器、跨平台和跨设备的浏览器插件,旨在设计、开发和发布下一代多媒体体验与富交互(rich interface application)的网络应用程序。 本文同时也介绍了Silverlight的一些背景知识,其基本功能和开发理念;介绍了在开发支持多种媒体的富客户端应用时如何合理定位 Silverlight;还介绍了Silverlight的架构,优点及其局限性等等。

    本文探讨了Silverlight和Java交互的三种不同情况:SOAP web服务、REST web服务以及聚合(RSS)服务。SOAP web服务和REST web服务是通过NetBeans中的工具来实现的。文中为每种交互都提供了演示程序代码,并且讨论了最适合应用该种交互的情况。Silverlight 也可以直接与sockets交互,但相对比较复杂,并不常见,因此将会在以后加以讨论。本文着重于Silverlight 2 Beta 2的Silverlight-Java交互的讨论和一些架构方面的指导。

    范围

    本文将主要讨论Silverlight-Java的互操作。通过Visual Studio创建一个Silverlight应用程序,帮助开发者对下列这些互操作方式有所了解:

    • 与SOAP web服务的互操作
    • 与REST服务的互操作
    • 与聚合 (RSS) 服务的互操作

    Silverlight也可以与sockets交互,但相对比较复杂,本文将不作讨论。

    终极目标

    • 为Java社区提供实现基本的Silverlight-Java服务互操作的几种可选方案。

    目标

    • 读者对什么是Silverlight及其用途有准确的理解。
    • 读者对Silverlight的架构,它的优缺点,能有个基本的了解。
    • 通过对上文“范围”一节中提到的三种基本互操作实例的描述,就Silverlight客户端是如何与Java服务进行交互这个问题给读者提供一个实用的指南。

    Silverlight简介

    微软Silverlight是个跨浏览器、跨平台、跨设备的浏览器插件,旨在设计、开发和发布下一代多媒体体验与富交互(rich interface application)的网络应用程序。Silverlight的定位是,应用于可以快速部署到浏览器中的富互联网应用。 “Silverlight是为连接到主机的网页内容而设计的,其特点是不但用户可深入地参与到交互中,而且应用还可在任何浏览器中运行。”使用Silverlight的场景

    把用户界面设计和底层逻辑分开可以大大提高应用程序开发生命周期(ADLC)的生产率。结合使用Microsoft ExpressionMicrosoft Visual Studio,用户界面设计人员和开发人员能够发挥各自所长,改进相互间的合作。

    扩展应用程序标记语言(XAML)是一种基于XML的说明性语言,支持对 流程的控制,专门用来做用户界面设计。而.NET语言则用来编写用户界面的后台逻辑,例如VB.NET、C#、IronRuby和IronPython。 Windows Presentation Foundation (WPF)和Silverlight都采用XAML。

    Silverlight的运行时环境是其架构的基础。Silverlight 2 Beta 2有一个一次性下载的大小为4.6MB的插件,能够部署到IE、Firefox、Opera或者Safari浏览器中。一个zip格式的“.xap”文件 是Silverlight应用程序的开发包。这个“.xap”包中包含了应用程序及其接口,供Silverlight插件控制运行。这个“.xap”文件 是在Visual Studio .NET中开发的,每次编译,客户端的“.xap”文件都会得到更新。Silverlight应用程序(“.xap”文件包)可以由任何web服务器部 署。

    图1:Web浏览器沙箱中的Silverlight

    Silverlight控制器内嵌在HTML网页中,自然就包含在web浏览器的沙箱内。 MSDN有一篇技术文章Silverlight架构概述对 Silverlight的架构做了大体的描述,阐释了Silverlight在微软用户体验(UX)计划中的地位。 非常重要的一点是,在Silverlight运行的客户端机器并不需要安装.NET。运行Silverlight所需的必要资源全都包含在 Silverlight浏览器插件中。所有互操作场景都建立在Silverlight 2 Beta 2之上。Silverlight 2 Beta 2的新特性有:

    • 框架语言(Visual Basic.NET, C#, IronPython, IronRuby)
    • 存储分离
    • JSON、REST、SOAP/WS-I、POX和RSS Web Services(也支持Sockets)
    • 支持WCF
    • ADO.NET数据服务
    • LINQ to Objects和LINQ to XML
    • Deep Zoom技术
    • XML可编程
    • 媒体内容保护
    • 丰富的可管理控制框架这里列举了一个简单的crossdomain.xml文件的例子:“

    1)所有的文件头或者2)Content-Type和SOAPAction头

    如果指定domain="*"任何领域发出的对文档的访问请求都会获得准许,但如果明确制定域名,比如domain="*.microsoft.com",那么只有指定领域发出的访问请求才能获得准许。Silverlight策略文件的格式描述可以参见:Network Security Access Restrictions in Silverlight 2“这里列举了一个简单的crossdomain.xml文件的例子:“Make a Service Available Across Domain Boundaries””。请注意本文中涉及的所有实例中,clientaccesspolicy.xml和crossdomain都必须置于域的根目录下。

    图6:http://localhost:8081/clientaccesspolicy.xml

    REST服务实例

    REST (REpresentational State Transfer)这个概念是2000年Roy Thomas Fielding在他的博士论文中首先提出的。得益于REST本身的简单和普遍熟知的事实-万维网有REST架构的缘故,REST的发展迅猛。REST原则基于一下几点:

    • 所有资源对应一个标识
    • 表述(方法)是标准的
    • 资源可有多重表述
    • 资源的访问和传输由连接器封装, 连接器有: 客户端, 服务器, 缓存, 解析器和通道
    • 无状态通信

    REST能够迅速流行得益于它的简单和被广泛熟知。可以简单地把REST看作是:通过对URI的操作来改变资源的状态。

    “纯REST”构想包括如下理念,即:1)所有事物都可以由拥有地址的资源来表示 2)对于资源只需要四种操作行为:创建、获取、更新和销毁。

    “REST-to-HTTP映射”,这是许多人看待REST的方式。这种看法和“纯REST”的理念相同,只是URIs对应了资源地址,HTTP协议的GET、PUT、POST和DELETE则对应了四种操作。

    当一个POX服务没有遵循“纯REST”架构,这种解决方案有时被称作“低REST”。可能会有多种自定义的操作而不是标准的4种操作。自定义操作是通过POST HTTP方法中的参数而非HTTP的特定方法来完成操作。

    尽管REST开发和维护都比较简单,但它并不处理消息安全、事务、路由以及消息,这些更象是WS_I SOAP web服务负责处理的事务。 Silverlight中的SOAP网络服务也不处理消息安全、事务、路由以及消息。Silverlight无法象自动生成SOAP代理那样来自动生成 REST代理。

    HTTP方法

    大多数REST的实现使用了下表所示的HTTP方法,由这些方法对底层的资源进行创建、获取、更新和销毁(CRUD)操作。

    图7:HTTP方法

    Silverlight仅支持GET和POST 这两个HTTP方法。一些防火墙对PUT和DELETE HTTP方法的使用也设置了一定的限制。

    需要指出的很重要的一点是,真正的RESTful的服务仅仅能够用GET和POST HTTP方法来创建(遵循了以上列出的所有REST规则),换句话说,REST架构并不一定要对HTTP做特定的映射。Google’s GData X-Http-Method-Override头就是一例。

    如果web服务在POST中解析X-HTTP-Method-Override头,那么可以在HTTP头中添加下列这些覆写的方法来完成PUT和DELETE操作:

    • X-HTTP-Method-Override: PUT
    • X-HTTP-Method-Override: DELETE

    另外一个解决浏览器不支持PUT和DELETE HTTP的方法是在Silverlight控制器所在的页面使用异步的JavaScript和XML(AJAX)。在JavaScript事件中使用 XMLHttpRequest可以做到通过HTML Bridge在正确的时间发送正确的HTTP方法。MSDN的一篇文章HTML Bridge: Interaction Between HTML and Managed Code详细讲解了该方法的实现。这种技术只有在HTML页面、“.xap”文件和服务端点在同一个领域内的时候才有效。

    REST方案的定义:WADL和XSD

    REST的一个局限性是schema是未知的,而且可能会有变化;再次验证REST服务可没那么简单。

    Web Application Development Language(WADL)可以代替WSDL来支持特定的RESTful web服务,但目前没有得到广泛认可。

    XML Schema Definition(XSD)文件可以作为REST服务中任何给定资源的“协议”来使用。

    Java REST支持

    许多工具、框架和集成开发环境都支持RESTful服务的开发。NetBeans Java集成开发环境就完全集成了1)从实体自动产生REST服务 2)集成REST服务测试(NetBeans Getting Started with RESTful Web Services on GlassFish)。 Eclipse集成开发环境也支持REST服务的开发(Eclipse REST support in STP)。JSR 311,提供RESTful Web服务的Java API,目前支持HTTP的PUT和DELETE方法。Jersey是遵循了JSP311的一个开源参考实现。

    Silverlight .NET REST支持

    Silverlight通过如下方式来支持REST:

    1. Web客户端类(例如,使用DownloadStringCompleted(GET)和 UploadStringAsync与UploadStringAsync(POST)方法), 或者 HttpWebRequest类(更难使用,但可以激活一些高阶应用)。在这个实例中我们只使用简单而直接的WebClient类。
    2. 使用上面提到的HTML桥
    3. 使用AJAX,通过JavaScript和XMLHTTP对象或者AJAX工具包

    创建请求URI的技术有很多种。使用XML消息体时,可用XmlSerialzer或者LINQ-toXml(System.Xml.Linq)。 使用JSON消息体时,可用DataContractJsonSerializer或者LINQ-to-JSON(System.Json)。 使用RSS/Atom消息体时,请参照如下内容。

    图8:REST互操作性架构

    从这个REST的例子,我们可以理解到目前Java REST实现与Silverlight协同工作的方式,同时也可以看到这种互操作方式的局限性。NetBeans 6.1版本能够根据Entity类自动生成REST服务。比方说,我们通过NetBeans创建一个简单的REST服务来访问某个数据库的一个数据表(也 就是资源)。我们要访问的这个表DiscountCodes,有一个String字段DiscountCode和一个integer字段Rate。

    图9:表DiscountCode

    REST动作概要:

    总体来说,在这个例子中,我们用到的HTTP方法(REST动作)有:

    • GET: http://localhost:8081/resouces/discountCodes
      • 返回所有DiscountCode记录的列表
    • GET: http://localhost:8081/resouces/discountCodes/A/
      • 返回DiscountCode“A”
    • POST: http://localhost:8081/resouces/discountCodes
      • 创建一条DiscountCode记录

    图10:POST XML

    GET: http://localhost:8081/resouces/discountCodes

    这个Silverlight应用首先通过请求/resource/discountCode URI来实现“GET”(DownloadStringCompleted)操作。

    图11:GET所有的discountCode

    我们在这里提供整个XML的内容,response的内容因此一览无疑。接下来,只要在之前的URI基础上进一步指定/A/,得到了一个单独的资源。

    GET: http://localhost:8081/resouces/discountCodes/A/

    图12:GET资源/A/

    POST: http://localhost:8081/resouces/discountCodes

    现在通过拷贝新获得的/A/资源并在POST文本框中创建一个资源/D/来加入一个新的资源。

    图13:POST资源/D/

    确认GET URI中已经添加了/D/,然后点击GET按钮来创建了资源。

    图14:GET (验证) 资源/D/

    Get_Xml_Click和Post_Click事件这两个事件都通过WebClient来与Java服务通信。为清晰起见,这里我们省去了例外处理的部分。

    图 15:Page.xaml.cs

    “Get_Click”事件中,发送的请求中包含了getUri文本框中的内容,而后,回复的XML内容则显示在TextBox_GET的文本框中。

    “Post_Click”事件中,发送的请求中包含了getUri文本框中的内容,而后,回复的XML内容则显示在TextBox_POST文本框中。

    图16:Page.xml

    由于在Silverlight既没有PUT也没有DELETE HTTP方法,因此这样的REST实现无法更新或者删除资源,但REST实现仍然可以利用POST方法来实现资源的更新和删除。>Why REST Failed一文就专门讨论了由于大多数浏览器不支持PUT和DELETE而带来的REST在浏览器兼容性方面的限制问题。

    聚合(RSS)服务实例

    远程站点聚合2.0(RSS)是一个轻量的发布-订阅标准,通常订阅诸如blog之内的内容。RSS最先由Netscape开发,而现在,RSS2.0实际上就是RSS标准。原子聚合格式已经通过了IETF的标准化程序,并且有一个ITEF RFC来描述原子种子(Atom feed)是什么以及如何解析。大多数聚合站点都支持这两种格式。

    Silverlight有一个专为聚合而编译的动态链接库System.ServiceModel.Syndication.dll(Silverlight Syndication)。聚合种子和聚合项都包含在这一框架中。

    我们举一个“选举”的例子,客户端需要异步访问RSS服务种子来查看更新的种子内容。Silverlight客户端通过种子的URI来访问一个简单的Java RSS种子。

    图17:聚合交互架构

    由于结果本身就是XML,所有Silverlight控件仅需要3行代码就能jiexi种子结果放到中。

    图 18:聚合(RSS 2.0)阅读器

    在OpenReadCompleted事件调用之后,回复结果被保存到XmlReader当中,然后被加载到SyndicationFeed。SyndicationFeed则以XAML的形式被绑定到itemList控件。为清晰起见,这里我们省去了例外处理的部分。

    图 19: Page.xaml.cs

    图 20: Page.xaml

    有关Silverlight聚合的更多内容,请参见Accessing Syndication Feeds with Silverlight以及Databinding and the SyndicationFeed class

    SOAP Web服务实例

    Web Services Interoperability Organization (WS-I )定义的web服务标准建立在Simple Object Access Protocol (SOAP)基础上。SOAP是一个基于XML的协议,使得消息可以通过HTTP/HTTPS协议来传递。W3C的Web Services Architecture文 件奠定了SOAP Web服务的基础。如果基于Java的SOAP Web服务已经存在,那么为该服务创建代理就非常直接了当,然后就好在Visual Studio中运用这个服务了。需要注意的是,在web服务中采用引入复杂的数据类型会带来很大的麻烦,尤其是在设计Java-.NET交互的情况下。 Java SOAP web服务采用的数据类型应当能够映射到.NET所支持的数据类型上。

    调试Web服务也存在很多问题。像Fiddler web调试代理或Web Development Helper这样的工具在调试Web服务时就非常有用。

    除了WS-I Basic Profile,Silverlight对WS-*不提供任何支持,“但如果自己动手实现必要的协议的话,还是可以调用这些服务的”(参见Accessing SOAP Services)。Silverlight 支持WS-I Basic Profile 1.0和SOAP 1.1 over HTTP。需要指出的是,SOAP的错误会在客户端抛出一个例外,但不会指明导致该错误的详细信息。

    Silverlight支持WCF(Windows Communication Foundation) 客户端技术,这种客户端可以调用SOAP服务,但所能调用的服务还是会受到互操作方面的限制。Silverlight可以调用的SOAP服务可以是WCF 服务、ASP.NET Web服务(“.asmx”),或某些Java服务。

    Silverlight Web服务团队的blog上有一篇文章——Detailed Overview of Silverlight 2 Beta 2 Web Service Features,概括了Silverlight 2 Beta 2在web服务方面的一些优化。对于使用SOAP的Java-Silverlight的互操作,最主要的顾虑是:代理是否能够编译;web服务是否存在数据类型或者序列化方面的问题。

    配置

    ServiceReference.ClientConfig的配置支持,使得修改绑定或地址都不需要重新编译Silverlight控件。

    图21:ServiceReference.ClientConfig

    Windows Communications Foundation(WCF)

    Silverlight 2 Beta 2中有一个“支持Silverlight的WCF服务”模板,如果用这个模板创建WCF服务的话,服务自动就被配置使用Silverlight所支持的协 议。BasicHttpBinding使用HTTP之上的SOAP1.0,是一个符合WS-I Basic Profile 1.1的绑定。参见“Accessing SOAP Services”。

    ASMX

    “Add Service Reference”会根据Address:label为所引用的服务创建一个ASMX代理。

    图22:添加服务引用

    SOAP错误处理

    “由于Web浏览器的限制,客户端无法接收SOAP错误。当服务发送出错误时,客户端会抛出一个例外,但无法指明发生错误的详细信息。(Accessing SOAP Services

    图23:SOAP Web 服务互操作性架构

    NetBeans中,一个简单的web服务节点有如下方法:FindAll和find。为清晰起见,这里我们省去例外处理的部分。

    图24:Page.xaml.cs

    Visual Studio中指向Java Soap2Service端点的代理如下:

    图25:Soap2Service代理引用

    web服务其实就是一个调用,这个调用通过请求参数来传递,之后又负责接收web服务的响应。Web服务的响应(String)被绑定到XAML。而XAML又通过Silverlight控件显示到用户界面。

    图26:SOAP Web服务-Find All

    图27:SOAP Web服务 - Find 'B'

    代理对象有一个绑定和一个端点。代理用findAllAsnyc事件来发送findAll请求,用FindAllCompleted事件接收 FindAll的响应。findAll的响应以XAML显示在findAllResponse文本框中。为清晰起见,这里我们省去例外处理的部分。

    图28: Page.xaml.cs

    图29:Page.xaml

    代理的配置信息来自ServiceReference.ClientConfig。ServiceReferences.ClientConfig配置文件支持多个端点的配置。

    修改ServiceReferences.ClientConfig不需要重新编译Silverlight应用程序。

    图30: ServiceReferences.ClientConfig

    总结

    本文展开论述了Silverlight/Java的互操作性。简单SOAP web服务、REST服务和聚合种子服务都可与Silverlight互操作。SOAP web服务有着潜在的数据序列化问题,仅仅提供基本的WS-I支持,因此相对比较复杂,但只要Visual Studio Silverlight客户端中能够成功创建代理,服务也能很快实现。在开发REST服务的时候,开发者必须依赖于文档,而文档却可能没有更新或不是很准 确。已有的的那些仅使用GET和POST HTTP方法的RESTful实现与Silverllight的互操作工作得最好。对于查询类型的服务来说,REST是个不错的选择;而SOAP则更适合 CRUD型的服务。聚合服务实现起来相对简单,而且限制很少。

    开发者可以选择任意的互操作形式,找到最合适他们特定的开发和部署环境的方式。

    需要了解的一个基本概念是,Silverlight运行在浏览器上下文中。跨域、跨方案和跨区问题、浏览器连接数的限制以及对不同MIME类型的支 持等等,对Silverlight和运行在浏览器平台上的任何应用来说,都是在开发和部署过程中不可忽视的问题。对于浏览器上各种各样的应用开发,最基本 的共同点往往是定义浏览器局限性的基准。

    非常有趣的是,在Silverlight 2 RTM中将很有可能支持JAXB-style对象引用,其支持方式与 .NET框架3.5 SP1(DataContractSerializer)的支持类似。

    参考资料

    Silverlight

    Get Started

    Community Site

    Main Product Site

    MSDNCenter

    Online Forums

    Online SDK

    Blogs

    Tim Sneath’s blog

    Mike Harsh’s blog

    Joe Stegman’s blog

    Laurence Moroney’s blog

    Tim Heur’s blog

    Robert Bell’s blog

    Technical

    Make a Service Available Across Domain Boundaries

    Silverlight HTTP Networking Stack

    HTTP 1.1 Header Field Definitions

    Simple Object Access Protocol (SOAP) 1.1

    Project Zero

    RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1

    XAML

    XAML Overview

    Extensible Application Markup Language (Xaml)

    The New Iteration: A Whitepaper on the XAML Revolution

    Android正日臻完善

    Android SDK 1.5的preview发布以后,最近这几天相关的消息非常多,William觉得有必要在这里整理一下,看一看Android 1.5的改进,当然今天主要是从用户的角度出发,关于API变化相关的会在后续的文章中来解读。
    今天主要从一下几个方面来分析:用户界面的改进、全新的视频录制功能、软键盘的支持、中文显示和中文输入的支持、桌面Widgets和Live folders,蓝牙功能的改进,捆绑应用功能改进以及系统性能优化等。 用户界面的改进
    我们可以看到,1.5的UI做了很多细节的改进,Google微调了所有核心UI组件的样式,使其更加美观,并且对包括 Browser,Gmail,Email,Calendar,Camera&Gallery以及Contacts等在内的自带程序界面都作了优 化。让我们来看一个例子,这是新建联系人的界面,左侧是来自Android 1.1的截图,右侧是来自1.5的截图(此图来自Google Android 官方Blog)。我们可以看到下拉选择框和按钮的样式发生了不小的变化,而且添加联系人详情的方式也更加简便了,1.1中的More Info按钮不见了,取而代之的是每一个项目后面的添加和删除按钮。有兴趣的朋友可以打开1.1和1.5的模拟器来比较一下两者在操作上的差异。



    全新的视屏录制功能,上传视频到Youtube,上传照片到Picasa
    Android 1.5中,用户可以利用内置的摄像头来拍摄视频,并且立即上传到Youtube与朋友分享(尽管目前看来G1的3M摄像头效果不太理想,希望G2的5M摄像头效果会好一些)。同样,用户所拍的照片也将可以方便的上传到Picasa相册。

    当用户完成拍摄/拍照后,只需按一下“Share”按钮,Android便会让你选择Share的方式,只要选择Youtube/Picasa,然后输入你的账户信息,就可以开始上传了。
    HTC Source上有一段Nick Gray用G1拍摄的视频,可以看一下效果。

    软键盘的支持
    我们都知道,G1带有一个QWERTY物理键盘,而G2将取消全键盘而改用全触摸的设计,所以软键盘也是Android 1.5中一个非常重要的特性。下面我们来看一张Android 1.5软键盘的截图吧,键盘的布局还是标准的QWERTY,有一个Shift键以及输入模式切换键,进入数字模式以后,可以输入数字以及+-*/?!等常 用符号,按ALT就可以输入一些不太常用的符号。


    中文显示和中文输入的支持
    Android 1.1除了英语以外,只能支持德语,而Android 1.5的国际化有了更进一步的发展,支持了包括简体/繁体中文、日语、朝鲜语、西班牙语、法语、意大利语、荷兰语、波兰语、俄语在内的各国语言(大概主要 语种就差葡萄牙语了吧,Correct me if I’m wrong :))。当然我最关心的就是对于中文显示和输入的支持了。启动模拟器,载入1.5的Image后,默认语言依旧是英语,当我在 Settings–>Locale & text中把Locale改成Chinese(China)之后,界面语言就切换到中文了。

    不过这时候,Google拼音输入法却并不工作,我们调出软键盘以后还是看不到切换到中文的按键,尽管在Locale & text设置中,它是被选中的。我们需要反选“Android键盘”这一选项,然后退出设置菜单,这时Google拼音输入法就可以工作了(我不确定 “Android键盘”这个选项的作用,但是随后我再选中它的时候,Google拼音输入法依旧可以工作,所以我觉得这也许是个bug。注意,我测试的是 Android 1.5 preview Windows版中所带的image,但愿其他版本没有这个问题 :))。

    关于输入的另一个值得注意的特性是,得益于IMF我们可以安装第3方的输入法来取代Google拼音,也许不久以后就会有Android版的搜狗拼音、五笔加加。

    桌面Widgets和Live folders
    首先,相对于Android1.1来说,自带的桌面Widge增加了Calendar和Music player,Music player widget的样式看起来还不错。

    至于Live folder,自带的包括列出所有联系人,列出所有有电话号码的联系人,以及列出Starred联系人,因为缺少可定制性,这个功能现在看来似乎并不怎么 吸引人。不过新增的Home screen widgets API和Live folders API使得开发者可以编写各种新奇的Widget和Live Folder来丰富Android的应用。

    蓝牙功能改进
    Android 1.5的蓝牙增加了A2DP(Advanced Audio Distribution Profile)和AVRCP(Audio Video Remote Cortrol Profile)的支持,立体声显著提升了通过蓝牙听音乐的用户体验,AVRCP则允许用户通过蓝牙进行包括暂停、停止、启动重放、音量控制及其它类型的 远程控制操作。另外,Auto-pairing则使耳机与手机连接更加快捷方便。

    捆绑应用功能改进
    Android 1.5内置的Chrome lite浏览器采用了最新的Webkit引擎和Squirrelfish Javascript引擎,并且开始支持网页内容复制和页内搜索功能,窗口下方的Zoom In/Out 菜单也有变化,同时用户可以指定网页默认编码。我比较感兴趣的就是网页内容复制和页内搜索了,看一下截图吧。


    Gtalk、Contacts、SMS、MMS、Gmail和Email程序直接的集成也更加紧密,使得用户可以在Contacts、SMS、MMS、Gmail和Email中查看Gtalk联系人的状态等
    Gmail客户端软件中,批量的存档、删除、加Label操作也已经得到支持。
    另外,Android 1.5还对SD卡的管理做了改进,增加了文件系统检查和自动修复功能。

    系统性能优化
    除了上面提到的新功能,Android 1.5还有不少性能上的改进,虽然我现在用模拟器无法体会到,不过还是要在这里给大家说明一下。
    包括:
    * 更快的摄像头启动和拍摄速度
    * 更快地获取GPS位置
    * 浏览器中更平滑的滚屏
    * Gmail中更快的对话列表滚屏等

    Android 1.5的主要改进就是以上这些了,UI上的细节变化就要大家在使用中慢慢去体会了。尽管Android 1.5还处于preview阶段,不过我们已经可以看到它在1.1的基础上所做巨大的改进,就像它的版本号所暗示的那样。伴随着不久以后G2的上市(G2今天已经开始接受预定)和1.5 SDK的正式发布,日趋成熟的Android平台无疑将获得更大的市场份额,从而真正成为一个主流的Smartphone操作系统。

    Flash技术进入电视机机顶盒 产品预计年内上市

    从PC到TV,Adobe决定将丰富的Web动画与视频体验带入用户的起居室。Adobe于周一宣布其最新版本 的Flash多媒体平台,将在根本上将Flash技术带入到连接Internet的电视机、机顶盒、蓝光播放器以及其他数字家庭设备。将Flash引入这 些设备的主要目的,是使得用户可以在他们的电视机上观看高清视频、运行互动程序以及获得新的用户界面。

    Flash On TV


    从PC到TV,Adobe决定将丰富的Web动画与视频体验带入用户的起居室。

    Adobe于周一宣布其最新版本的Flash多媒体平台,将在根本上将Flash技术带入到连接Internet的电视机、机顶盒、蓝光播放器以及其他数 字家庭设备。将Flash引入这些设备的主要目的,是使得用户可以在他们的电视机上观看高清视频、运行互动程序以及获得新的用户界面。

    这份声明中同时提到,Adobe已经寻求到多家公司的支持,计划在他们的设备上使用这项技术,包括Intel, Comcast, Disney Interactive, Netflix, Atlantic Records, 以及New York Times Company。
    目前为止,Adobe Flash播放器主要还是用于电脑,使在浏览器中的动画或者像Youtube这样的视频站点成为可能。这一技术已获得市场的肯定,根据comScrore的统计,大约80%的在线视频使用了Adobe Flash技术。

    Adobe同时也将Flash技术移植到了智能手机平台上,移动版本的Flash使得用户可以观看采用Flash技术的视频。而现在Adobe则将注意力 转移到了起居室中高清电视的大屏幕上面,这意味着人们可以在他们的电视上直接获取内容丰富的Youtube资源,而不是一小部分针对电视特别编码的资源。

    开发者们也可以为电视机编写Widget,将Web内容带到电视机屏幕上。Widget是一种特别设计的Web应用程序,可以很容易的添加到用户的电子设备上。

    Yahoo与其合作开发者Intel一起,也在为电视机提供widget技术。Yahoo Widget频道提供了大量Widget,诸如Flicker、Yahoo新闻、Yahoo天气和雅虎财经等。摩托罗拉、三星、东芝也计划在他们的一些新 电视产品中,加入Yahoo Widget。

    Anup Murarka,Adobe Flash平台技术事务组的战略与伙伴发展总监称, Yahoo算不上什么威胁。他指出Adobe和Yahoo都同Intel有着合作关系,实际上Flash技术对于Yahoo的Widget技术也是一种补 充。”Yahoo在桌面平台上支持Flash,我们希望他们在电视机平台上也会这样做,我们已经看到了Flash在诸多新领域的价值。”

    Murarka不愿透露何种电子消费产品将使用新版本的Flash,但是这项技术已经对设备制造着与应用开发者开放,预计支持Flash的电视机与机顶盒将在年内上市。

    April 18

    使用Flash实现增强现实

    作者 Jon Rose译者 张龙

    最近随着FLARToolKit的发布,增强现实(augmented reality)成为Flash社区的一个时髦词,它能将真实世界的对象与计算机生成的对象混合在一起。

    Bartek Drozdz在其博客上科普了增强现实这个概念:

    增强现实使用模式识别在视频上渲染3D图形。模式(又叫做标记)是一个矩形,你用其在相机前打印和定位。来自相机的流经过分析后由标记生成其捕获世界的坐标系统,接下来将该坐标系统发送到3D引擎,由后者在视频图像上渲染对象。

    Duane Nickull在其博客上高度评价了FLARToolKit:

    FLARToolKit是ARToolKit的AS3版本。ARToolKit是个可以创建增强现实的C程序库,然而兼容于Adobe Flash/Flex/AIR的FLARToolKit并不仅仅只是对之前C版本的移植。FLARToolKit是从Java版本移植过来的,其名称叫做NyARToolKit(经过nyatla的艰苦努力之后,现在NyARToolKit的执行速度要比原始的C版本快)。

    构建基于浏览器应用的能力(包括增强现实)可以提高开发者对软件的认识。为了让开发者尽快上手,Adobe布道者Lee Brimelow发布了一个视频教程,其中包括GE的智能网格增强现实应用的示例。该示例在真实应用中使用了增强现实的叫声因子(wow factor),是绝佳的学习资源。

    请阅读维基百科关于增强现实的说明来进一步了解其背景信息。 查看英文原文:Augmented Reality with Flash

    April 09

    4月编程语言排行榜 脚本语言占据半壁江山

    TIOBE今日公布了2009年4月的编程语言排行榜,本期前十的榜单与上期相比没明显变化,Java、C、C++依然以绝对优势 占据前三甲的位 置;排名第四到十位的分别是:PHP、VB、Python、C#、JavaScript、Perl和Ruby。Ruby经过数月的艰难爬升后终于进入前 十,上期第十名Delphi下滑一位,排在第十一位。仔细分析本期榜单可以看出,前十名中的PHP、Python、 JavaScript、Perl、Ruby均为脚本级语言(榜单中的Visual Baisc未列入脚本级语言,但在ASP和ASP.NET中,如果选择VB作为开发语言,则是以VB Script这种脚本进行编程的);撇开应用场景和项目规模不说,至少在使用率上,脚本语言已经占据了编程语言的半壁江山。


    2009年4月TIOBE编程语言排行榜前20名

    脚本语言

    脚本语言(Script language,或scripting programming language)是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。脚本语言的命名 起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。早期的脚本语言经常被称为批次处理语言或工作控制语言。一个脚本通常是解释运行 而非编译。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让程序设计师快速完成程序的编写工作。大多脚本语言共性是:良好的快速开发,高效率的 执行,解释而非编译执行,和其它语言编写的程序组件之间通信功能很强大。

    就脚本语言的应用场景而言可以大致分为:工作控制(shell)、GUI 脚本、 应用程序定制脚本、Web编程、文本处理;就语言特性而言,大致可以分为: 文本处理语言、动态语言和可嵌入语言。

    处理基于文本的记录是脚本语言最早的用处之一。如Unix's awk最早是设计来帮助系统管理员处理调用UNIX基于文本的配置和LOG文件。PERL最早是用来产生报告的,现在它已经成了全面成熟的语言。许多脚本 语言用来执行一次性任务,尤其是系统管理方面。它可以把服务组件粘合起来,因此被广泛用于GUI创建或者命令行。操作系统通常提供一些默认的脚本语言,交 互式的解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令,即通常所谓shell脚本语言。

    目前主要的脚本语言有:JavaScript、PHP、Python、Perl、Ruby、Groovy、Action Script、VBScript、PowerShell、Smalltalk等。

    脚本语言与编译语言

    脚本语言与传统编程语言(C、C++)有很多相似地方,比如脚本语言的函数与编译语言比较相象,也会涉及到变量、参数;脚本语言也具有面向对象等方面的特性等等。但在语言核心和本质上,脚本语言与传统语言有着明显的区别。

    脚本语言一般都有相应的脚本引擎来解释执行,一般需要解释器才能运行;而C、C++、Java等则需要编译、链接后,形成独立执行的exe文件。脚 本语言是一种解释性的语言,它不象Java等可以编译成二进制代码,以可执行文件的形式存在,脚本语言不需要编译,可以直接用,由解释器来负责解释。

    脚本语言与动态语言 动态语言是指程序在运行时可以改变其结构,比如,在程序运行过程中可以引入新的函数,已有的函数可以被删除等在结构上的变化。动态语言的类型检查是 在运行时做的。它的优点是方便阅读,不需要写非常多的类型相关的代码。事实上,大多数的动态语言都是解释执行的,他们具有脚本语言的一般特点和结构,只是 在运行时上更具动态性,状态上更为灵活。 一般地,脚本语言都是动态语言,而动态语言都是解释型语言。

    其他编程语言

    下面是排名21到50的编程语言。

    Position Programming Language Ratings
    21 COBOL 0.463%
    22 ActionScript 0.451%
    23 Lisp/Scheme 0.443%
    24 FoxPro/xBase 0.393%
    25 Ada 0.356%
    26 Fortran 0.341%
    27 PowerShell 0.250%
    28 Scala 0.237%
    29 LabVIEW 0.230%
    30 Prolog 0.223%
    31 Alice 0.207%
    32 Erlang 0.195%
    33 Scratch 0.178%
    34 Transact-SQL 0.170%
    35 Haskell 0.169%
    36 Groovy 0.165%
    37 Falcon 0.163%
    38 Focus 0.151%
    39 Awk 0.149%
    40 ML 0.142%
    41 NXT-G 0.134%
    42 Objective-C 0.134%
    43 Smalltalk 0.123%
    44 Bourne shell 0.118%
    45 Tcl/Tk 0.115%
    46 Euphoria 0.111%
    47 Caml/F# 0.110%
    48 Forth 0.109%
    49 CL (OS/400) 0.108%
    50 J 0.102%

    下面是排名51-100的语言:

    ABC, AD, Alpha, APL, Applescript, bc, Beta, Boo, C shell, cg, Clean, Clojure, Cobra, cT, Curl, Dylan, Eiffel, Factor, Icon, IDL, Inform, Io, Lingo, MAD, Magic, Maple, Mathematica, MAX/MSP, MOO, MUMPS, Natural, Occam, Oz, PILOT, PL/I, Postscript, PowerBuilder, Progress, Q, R, Revolution, REXX, S-lang, SIGNAL, SPSS, SuperCollider, VBScript, Verilog, VHDL, XSLT

    编程语言类别

    下面给出了编程语言类别的一年变化趋势,相比2008年,动态语言了近1%的增幅,占整个编程语言类型份额的42.8%。

    Category Ratings April 2009 Delta April 2008
    Object-Oriented Languages 55.6% +0.0%
    Procedural Languages 40.3% -1.1%
    Functional Languages 3.0% +0.8%
    Logical Languages 1.2% +0.2%

    Category Ratings April 2009 Delta April 2008
    Statically Typed Languages 57.2% -0.9%
    Dynamically Typed Languages 42.8% +0.9%

    静态类型和动态类型的语言走势

    March 26

    BSQUARE将为Android平台带来Flash


    原文地址:http://www.bsquare.com/about/story.asp?PressID=519

    据Engadget网站报道,BSQUARE 公司日前宣布,他们将为“全球一线运营商”的利益,将Adobe Flash带到Android平台上来。但是他们没有指明“全球一线运营商”是谁。其他的信息他们尚未公布。该公司在去年购买下了NEC美洲公司的Adobe® Flash®技术谘询与经销业务部门,并且为消费者进行Android方面的研发。

    March 25

    Adobe 宣布下一版 Flex SDK 释放时间轴

    昨天晚上, Open Iteration Meeting, Adobe 给出 Flex SDK 的 3.4, 4.0 和 4.1 释放的时间表:

    3.4 beta 1: June '09
    3.4: August '09
    4.0: Q4 '09
    4.1: Q3 '10


    Mozilla和Khronos合作为Web带来3D图形加速技术

    你是否期待着你的浏览器能玩上《Crysis》?

    Mozilla 谋智网络

    两个很有影响力的组织目前展开合作,试图将3D图形加速带到Web上来,此举最终将对在线游戏和其他Web程序产生重大的影响。现在Mozilla和Khronos 两大组织已经看到了OpenGL技术的广泛应用,他们也想借此为Web创建新的3D图形加速标准。 为 了回应Mozilla的提议,Khronos已经成立面向Web 3D加速技术的工作小组,试图开发出新的免费的标准。按照目标,他们将在1年内开发出第一个公共版本。他们计划将JavaScript和OpenGL标准 结合起来,开发出新的Web 3D图形加速技术。Mozilla也计划在推出Firefox 3.5之后,以扩展的形式率先在浏览器中采用该技术。

    利用Clear Toolkit连接Flex与Java开发

    作者 Jon Rose & Moxie Zhang译者 张龙

    Farata Systems于2月24日宣布开源其Clear Toolkit Framework,这是一个使用Adobe Flex与Java开发企业级RIA的框架。InfoQ有幸采访了Farata Systems三个合伙人之一的Yakov Fain一探究竟。

    Fain首先解释了创建Clear Toolkit的缘由:

    在开发企业项目时,大家都希望减少手工编码的工作量,因此我们想要自动化一些重复性的工作。如果你是个使用数据库的Java程序 员,就会不断编写类似的JDBC代码来处理结果集。我们首先着眼于XSL模板并搭配元数据从而基于SQL Select语句为后端的Java处理生成了完整的源代码,接下来增加了更多的模板以使用Adobe Flex来生成前端,这样我们现在只需花几分钟的时间就可以生成Flex/Java CRUD应用的代码了。与此同时,我们还为Flex应用创建了Ant脚本生成器,友好的日志器及大量增强的Flex组件来降低手工编码的工作量。

    在被问到Clear Toolkit的典型使用场景及其能解决的问题时,Fain继续说到:

    首先,Clear Toolkit可用来创建企业级的Flex/Java项目,接下来这些灵活的Flex组件就可以简化对用户修改数据的跟踪、更方便地处理数据表格与表单并 自动对连接的Adobe AIR应用进行数据同步。我们还拥有优秀的Web报表工具ClearBI,最终用户可以凭借它创建自己的报表而无需其他软件(只需一个带有Flash Player的Web浏览器即可)。我们将在不久之后发布ClearBI。

    根据Fain所述,当前的Clear Toolkit包含如下组件:

    • Clear Data Builder,这是个Eclipse插件,可以根据SQL语句或Java数据传输对象为BlazeDS或LCDS生成CRUD应用。
    • DTO2Fx,该插件会根据Java类型自动生成对应的ActionScript类。
    • Log4Fx是个构建于Flex logging API之上的Eclipse插件,它会自动化日志处理并且更加灵活,也更加友好。
    • Fx2Ant插件会为Flex Builder项目生成优化的Ant构建脚本。
    • clear.swc是个增强的Flex组件库。

    他继续说到:

    因为大多数的Clear Toolkit组件都是非常灵活的,因此他们几乎可以用在任何的Flex项目中。如果你只需高级的日志组件,使用Log4Fx就好了。如果你想要增强的数 据验证类和表单处理,只需将clear.swc添加到项目的构建路径中即可。如果你仍在使用SQL,请使用Clear Data Builder来生成CRUD。你还可以根据Java DTOs生成整个Flex前端,包括UI层数据变化时与服务器之间的通信机制。对于那些由于各种原因而决定使用Adobe开源的服务端组件BlazeDS 而放弃商业的LiveCycle Data Services bundle的用户来说,Clear Toolkit能助他们一臂之力。我们认为BlazeDS是个健壮、设计良好的组件,它可以用在要求很高的企业应用中。

    关于Clear Toolkit的开源,Fain说到:

    在过去的2年中,我们一直在www.myflex.org上 免费提供Clear Toolkit组件。之后我们认识到,尽管公司招纳了优秀的软件工程师,但这还远远不够,凭借一己之力你无法与成百上千的开发者的智慧相抗衡。我们已经付 出了大量努力让Clear Toolkit成为RIA开发的坚实平台,这样你就无需再花钱了。我们诚邀世界各地的Flex与Java开发者加入进来,为Clear Toolkit成为首选的开源平台而努力奋斗。

    Fain又说:

    目前由于这是个开源项目,所以我只能告诉你Farata Systems在2009年的打算:
    • 文档化对AIR/BlaseDS应用的数据同步解决方案。我们已经编写好了示例应用并在即将出版的O’Reilly书Enterprise Development with Flex中进行了说明,但现在需要将这些内容转换为产品文档。
    • 增强Flex UI组件以支持客户端的PDF生成。
    • 文档化Clear组件库生成的类(clear.swc)。
    • 开源Web报表工具ClearBI。

    除了Fain在接受InfoQ采访时所说的以外,他还在InsideRIA上给出了主要的框架组件的一个概览。对于那些使用客户端或服务端架构处理过数据同步问题的开发者来说,该框架最吸引人的地方在于它能跟踪客户端上的Flex更新并将其同步到Java服务器上。

    如果熟悉LCDS,那么你应该知道Data Managemet Services使用了ChangeObject,这是一个特殊的DTO,用来在服务端与客户端之间传播变化。我们的组件也包含了这类对象,而且它不仅可以用在LCDS上,也能用在BlazeDS上。
    ...

    DataCollection类会自动跟踪UI上的所有变化并将相应的ChangeObject实例集合发送到服务器端。
    ...

    当用户准备将改变提交到服务器端时,下面这行会将ChangeObject实例集合发送到服务器端:collection.sync()。
     

    Clear Toolkit基于MIT协议,这意味着只要声明Farata Systems是代码的创建者,你就可以在自己的应用中使用我们的代码了。可以从http://sourceforge.net/projects/cleartoolkit/下载Clear Toolkit 3.1最新的构建版和源代码,相关的文档、示例、论坛和bug跟踪也在那儿。

    查看英文原文:Clear Toolkit Bridges Flex and Java Development

    March 19

    Mix09下一代互联网技术大会-走向体验设计时代

    http://live.visitmix.com/

      第一天早上大会的主讲嘉宾是微软副总裁Scott-Guthrie(负责开发工具)和UX(用

    户体验)设计大师Bill Buxton.


    Experisece Design时代
      带着设计师发型的Bill Buxton第一个出场,Buxton回顾了工业设计的发展,
    那也是在经济大萧条的1929年,经典的电话设计(苹果ipod采用同样的颜色)

      不过工业设计关注是设计对象,而体验设计关注的是用户和产品的交互。

    移动电话的设计例子

    如何设计使用电话的体验,这是设计的挑战。

    从草案到原型,设计师需要更好的工具来帮助。

    Bill Buxton三年前加入微软的时候,微软的技术管理层只有一人有设计背景,
    现在已经有10人,微软的用户体验设计师已经有800人。可以期待微软未来的产品设计将会越来越人性化。


    Bill Buxton的结束语