[转]Facebook:“把宝压在HTML5上是一个错误”—技术原因及其反响

Facebook决定不再使用这两三年所规划的HTML5,回到原生应用的道路上。本文讲述了FB转变背后的技术细节,以及Xamarin和Mozilla对这一转变的反应。 Facebook的CEO 马克·扎克伯格最近在TechCrunch的一次采访中宣称:“作为一个公司,我们最大的错误是在HTML5上下注太多了,我们没有选原生应用,因为HTML5没有达到我们的预期”,而且,“自从发布了iOS应用后,我们发现人们订阅feed的数量增加了一倍。” 扎克伯格没有谈及他们在使用HTML5时遇到的问题,但他认为这些产品的质量不够好:“外界已经有非常好的移动体验了……我们追求最高品质,唯一的办法就是使用原生应用。” Tobie Langel是Facebook软件工程师和W3C咨询委员会代表,他在一篇帖子中详细描述了Facebook基于HTML5做移动网页时遇到的性能问题。Langel提到的第一个问题是缺少调试工具: 移动浏览器缺少工具,从而很难深入进去,发现真正的问题是什么……我们遇到的最大的问题是内存相关的。对于给定内容大小,我们的应用很容易耗尽设备硬件能力,引起系统崩溃。不幸的是,我们很难理解到底是什么引起了这些问题。GPU缓存耗尽?达到资源限制?或是其他原因?很难说。 Langel希望知道堆栈、对象、GPU缓存的内存使用情况,以及GC(垃圾回收)周期、FPS和其他资源限制信息。 Langel谈到的HTML5的另一问题是其页面滚动性能,大部分页面滚动通过JavaScript实现,因为“其他选择不够快”。他提道: 不连贯的帧率,UI线程滞后(断断续续)。由于内容大小和图片数量导致的GPU缓存耗尽。 在不同操作系统中,原生的滚动有着不同的体验。针对一种操作系统优化过的JS实现,在其他系统上的体验却很差(机器人学中的“神秘波谷”)。 安卓设备上触摸事件相关的性能问题(延时,事件不足)使JS实现的页面滚动更加脆弱。 Langel提到的其他问题有:以“黑盒”出现的GPU、安卓系统中更好的触摸跟踪支持的需求、平滑动画以及更好的缓存。其中一些问题已经提交给W3C Web性能工作组。 Nat Friedman是Xamarin的CEO,Xamarin是构建跨平台本机应用的工具提供商。在一次InfoQ评论中,他表示欢迎Facebook的改变:“对包括设备提供商,应用发布商以及最重要的消费者在内的整个移动生态系统而言,这一支持原生体验的转变是非常重要的事件”。他还指出,移动标准现在还为时尚早: 移动创新仍在飞速发展,远超“标准”方式能达到的速度。历史上,当新的操作系统出现时,它的能力非常新,使用它们的唯一方式就是在操作系统层次使用。这一阶段,最好的应用和最具突破性的创新都在靠近操作系统层面出现。对于当前移动设备平台,这种状态非常准确。市场份额的竞赛驱动了设备操作系统层面上巨大的变革和创新。在接下来的几年里,这些操作系统将会稳定下来,这一层次的创新将会变缓,使得标准化方式更加可行。但这种转变需要几年时间。 Mozilla(Mozilla是致力于Web技术的组织)的CTO Brendan Eich在ZDNet对Brendan Eich的采访中,他对Facebook在HTML5上的失败表达了不同的看法: 如果你品一品言外之意,他(马克·扎克伯格)说的应该是将原生应用和HTML糅合起来。当这样糅合时,两个系统间总会有差距。Joe Hewitt是我的一个朋友,他曾在Facebook工作,做了第一个糅合应用,将两者很好地集成起来。但他离开了Facebook,后续版本中,将两者无缝集成的技能(可能还有苹果公司的一些支持)不见了。 Eich坚信Web将最终胜出: 我从不相信Web会失败。这只是个语用学的问题,而你却被这些给绕进去了。像Facebook这样的公司搞得起开发原生应用,尤其是iOS上的原生应用。但根据长尾理论,开发者将主要集中于开发Web应用,并且以此为乐。 如果Web发展到提供缺失的API,并具有更好的性能,开发者就没必要开发其他应用了。 我有一种感觉,Web将变得非常好(十年之后),那时将不会有现今这样地在原生应用对Web应用之间无休止的论战了。 Matt Asay是The Register的编辑,他在“本机应用vs.HTML5应用的争论”中,引用了一位匿名Facebook工程经理的话说: 现在,Fackbook通过写原生代码是行动最快的。这并不是说HTML5将一直无法达到宣称的效果,而是在当前情况下,摩尔定律和Web引擎仍然有效。因此我们做了一个务实的决定。最终,如果HTML5使得我们发展更快,你将看到我们会回归到HTML5。我们将使用任何让我们高效高质量工作的技术栈。 马克·扎克伯格也看好HTML5的长远前景: 并不是说HTML5不好。长期来看,事实上HTML5真的让我非常兴奋。有趣的是,实际上每天使用移动Web Facebook的人比使用iOS应用或Android应用加起来的更多。因此移动Web对我们来说非常重要。 Facebook八月份发布了iOS本机应用,他们正在开发Android上的类似应用,应该很快会在Google Play应用商店上架。 查看英文原文:Facebook: “Betting on HTML5 Was a Mistake” – Technical Reasons and Reactions via:http://www.infoq.com/cn/news/2012/10/Facebook-HTML5-Native

November 2, 2012

[转]Wally McClure谈MonoTouch与Mono for Android的未来

Wallace B. McClure是《Professional iPhone Programming with MonoTouch and .NET/C#》以及即将出版的《Professional Android Programming with Mono for Android and .NET/C#》一书的合作者。我们刚好在Xamarin将从Attachmate手上接管Mono这一消息公开前后进行这次采访的。 InfoQ: 现在距Miguel宣布Attachment裁员及创建Xamarin已经过去两个月了。您对这个情况有什么看法吗? 第一个问题是在7月16号提出的,两天后Miguel宣布创建Xamarin以及与Novell合作。 Wally McClure: 作为一个面向移动设备的.NET开发者,我有几个必须关注的问题。其中最大的问题就是:“我该如何针对移动平台进行开发才可以赚最多的钱?”对我来说,这相当于“我该如何开发iPhone和Android应用程序?”许多人跟我提起过iPhone开发,有时候也会谈到Android。那么作为一个.NET开发者,我该如何简单快速地针对这些平台进行开发?我可以去开发一个HTML 5应用程序,但是Web程序并不能利用设备的所有功能,客户也会要求原生应用而非Web应用程序。HTML 5应用会有一席之地,但是它们无法解决所有客户的所有问题。 作为一个.NET开发者,如果想要开发原生应用,则可以选择学习Objective C和Java。学习语言需要一些时间,还包括开发环境等等。开发人员可能会认为学习语言没什么难度,但就我的感觉来说,事实并非如此,我没法使用一个周末的几个小时来学会一门语言。当然我也可以使用其他一些产品,例如把HTML应用程序作为原生应用的基础。然而,我还是时常会关注跨平台与原生应用之间的比较,所以我还在寻找其他方式。 我比大部分人知道更多东西,因为我除了是一个开发人员,也会关注许多金融方面的消息。在2009年末至2010年初的时候,我听说了Novell的事情,他们正通过CNBC寻找买家。对我来说,这意味着可能会有些麻烦了。此外我还听说了Novell业务部门之间的一些摩擦,其中也包括Novell的裁员以及Xamarin建立的事情。我的看法是: 市场并没有拒绝MonoTouch。我和许多付费用户交谈过,有些暂停使用MonoTouch/iPhone,不过并非所有人都拒绝MonoTouch,有些人继续在iPhone和MonoTouch上投入。 已有的MonoTouch产品也不会就此无法使用了。我还是可以创建在iPhone和iPad上运行的程序,一切正常,而他们也认为可以在3个月内构建一个产品。他们是六月份动手的,所以九月份可以完成,这也差不多是下个版本iOS发布的时候。 MonoTouch本身有一些风险。例如,Xamarin和他们的iPhone .NET产品可能会有一些版权纠纷。这是事实。我和一些比我更具有法律背景的人交谈过,他们提出的问题是: Xamrin可能会面临这些风险。Miguel de Icaza已经对此发表过申明,表示这方面已经没有什么问题了。 部分API是基于iOS及Andorid的API而定义的。不过这方面出现版权纠纷的可能性不大。 在Novell公布裁员消息之后的两个星期我重新尝试了Objective-C和Java开发,最后得到了与我2009年相同的结果。Objective-C与我内心所想相差甚远,对于.NET开发者来说会是十分陡峭的学习曲线。想要获益的唯一办法便是投入大量时间。对于我们这种已经在其他领域投入许多的人来说,这个门槛实在有些高。 在仔细审视了这些问题之后,我发现MonoTouch和Mono for Android依然有着十分重要的意义,这与两年前的状况一致。 InfoQ: 我们开始采访的不久,Attachmate就宣布向Xamarin提供有关“Mono,MonoTouch,Mono for Android以及Mono Tools for Visual Studio”的永久授权。现在法律问题已经解决了,你觉得采纳iPhone和Andorid上的Mono还有哪些障碍呢? Wally McClure: 这真是美妙的一周。一周前,我醒来后看到一堆指向 http://ios.xamarin.com/ 的内容,我发现Xamarin获得了这些工具永久的知识产权。这周末我又参加了Monospace会议,整整两天,我了解了许多关于Xamarin的消息,也和其他参与者进行了交流。上周我和一个潜在客户进行了沟通,他们是财富500强公司,对MonoTouch很感兴趣,已经投入iOS平台,并使用.NET开发他们自定义的业务应用产品。不过现实情况是,目前有些公司依然有顾虑。我想关于Attachmate的法律问题已经解决了,我估计接下来还会和其他一些公司达成协议,这会更进一步减少法律风险,我想接下来几个星期应该会有相关消息。从法律角度来说,我觉得已经没什么问题了。除了一些目前还无法得知的风险,我已经找不到暂缓使用MonoTouch和Mono for Android的理由。就我个人来说,过去的六个星期可谓是马力全开,我也会继续保持下去的。 我还听说过一个问题,是说“MonoTouch和Mono for Android有bug,所以不该使用”。其实每个软件都有各种各样的bug,Android和iOS也都在持续更新,有问题都会即时修复。Xamarin的计划是定期更新他们的软件,就像过去24个月那样。当发现bug的时候,我们会在trunk上修复它,并打包在下次升级的版本中。之前的更新一直很有规律,我想这应该也会保持下去。发布频率大约是2到3个星期一次,所以你无需等好几个月才能获得新版本,而可以很快地更新,很快地更新项目。最终用户都不愿等待,我们都明白这一点。 InfoQ: 有没有哪方面你觉得是MonoTouch和Mono for Android做得尤其出色的呢? Wally McClure: 理论上说,它们是向六百万.NET开发者开放了两个最流行的移动平台。对我来说,作为一个.NET程序员,在2009年早些时候还在考虑如何进行iPhone开发,那时候MonoTouch的出现真可谓神来之笔。我还是需要学习特定平台的内容,但我完全不需要学习新的语言,就好比Objective-C。这对我来说至关重要,在学习iPhone理念的同时还要学习Objective-C真可谓是难以逾越的高山。虽然我还是需要使用Mac,我必须使用MonoDevelop进行开发,但这笔投资还是相当值得的。我可以使用HttpWebRequest来调用服务获取内容,再使用LINQ处理数据,在许多地方都可以使用这些代码,这实在是太棒了。 从技术角度来说,我会关注基础方面的内容。我每天早上都会在iPad上使用一款新闻工具,它时不时就会崩溃一下,我猜这是因为指针计算或是内存使用方面的问题。有了垃圾收集器之后,我们就可以减少内存使用的麻烦,也无需担心指针问题了。 我认为它们还有一个重要的优势,它们是在运行平台上进行“真正针对性的开发”。简单的说,它们只是为底层操作系统提供了一个C#调用层,最终执行的还是平台上的原生API,只不过使用C#而已。这对开发人员来说十分关键。尽管我会推荐有关MonoTouch和Mono for Android开发的书籍,但我们完全可以通过一本使用Java的Android的书籍来学习Mono for Android。它们并没有为用户界面控件提供什么通用的容器,而是完全直接使用平台上完全相同的那些控件。MonoTouch应用程序和Objective-C应用程序完全相同,Mono for Android应用程序看上去也和Java程序毫无二致。这对用户来也是个优势。 ...

November 2, 2012

推荐一个javascript类库:jsonpath

在我们的研发过程中,有时会遇到这样的情况:程序很简单,数据是固定的,不想使用服务端语言(php、java、.net),但是要实现一些分页和检索功能。这种情况下我们应该选择javascript+xml+div就ok,不过javascript解析xml的数据比较慢。json是现在非常流行的一种数据格式,所以有另外一种解决方案:javascript+json+div。 json是目前web的通用数据格式,在轻量级的web服务中占据主导地位,这里推荐一个非常轻巧的类库:jsonpath(下载地址:http://code.google.com/p/jsonpath/)。作为一个轻量级类库,你可以使用它来对json数据进行精确查找、条件查找和模糊查找,这样就能满足简单网站的功能了。下面是一个简单例子: JSONPath - Example (js) var json = { “store”: { “book”: [ { “category”: “reference”, “author”: “Nigel Rees”, “title”: “Sayings of the Century”, “price”: 8.95 }, { “category”: “fiction”, “author”: “Evelyn Waugh”, “title”: “Sword of Honour”, “price”: 12.99 }, { “category”: “fiction”, “author”: “Herman Melville”, “title”: “Moby Dick”, “isbn”: “0-553-21311-3”, “price”: 8.99 }, { “category”: “fiction”, “author”: “J. R. R. Tolkien”, “title”: “The Lord of the Rings”, “isbn”: “0-395-19395-8”, “price”: 22.99 } ], “bicycle”: { “color”: “red”, “price”: 19.95 } } }, var test1 = jsonPath(json, “$.store.book[*].author”).toJSONString() + “\n>”;//精确检索 var test2 = jsonPath(json, “$..author”).toJSONString() + “\n”; var test3 = jsonPath(json, “$.store.*”).toJSONString() + “\n”; var test4 = jsonPath(json, “$.store..price”).toJSONString() + “\n”; var test5 = jsonPath(json, “$..book[(@.length-1)]”).toJSONString() + “\n”; var test6 = jsonPath(json, “$..book[-1:]”).toJSONString() + “\n”; var test7 = jsonPath(json, “$..book[0,1]”).toJSONString() + “\n”; var test8 = jsonPath(json, “$..book[:2]”).toJSONString() + “\n”; var test9 = jsonPath(json, “$..book[?(@.isbn)]”).toJSONString() + “\n”; var test10 = jsonPath(json, “$..book[?(@.price<10)]”).toJSONString() + “\n”;//条件建设 var test11 = jsonPath(json, “$..*”).toJSONString() + “\n”;//所有 var test12 = jsonPath(json, “$..book[?(@.title.indexOf(’the’) > -1)]”).toJSONString() + “\n”; //模糊检索

October 29, 2012

从windows8开始,我们一起支持正版吧:申请98元促销代码的方法

我承认,大学一直在使用windows的盗版操作系统,毕业后公司购买的电脑内置正版操作系统,而家里的那天老电脑一直是老的xp系统。打算明年买一台属于自己的笔记本,所以决定购买windows8的正版操作系统。 为保证成功率,大家可以按我下图方法试一下,还有,我第二次申请是转用了IE9申请的,可能IE申请更好些吧。我申请成功之后马上打开邮箱就收到微软的来信了,真是这次不得不支持一下正版了,忘了最后说明一下,我申请所使用的操作系统是win7旗舰版(软件激活那种)因为我试过用ipad申请是不能的。 放上申请地址。http://windowsupgradeoffer.com/zh-CN 如果你已经毕业参加工作,并且有自己的个人电脑,建议支持正版吧。

October 26, 2012

数学英雄:欧拉

一、简介 莱昂哈德·保罗·欧拉(Leonhard Paul Euler,1707年4月15日-1783年9月18日)是一位瑞士数学家和物理学家,近代数学先驱之一,他一生大部分时间在俄罗斯帝国和普鲁士度过。欧拉在数学的多个领域,包括微积分和图论都做出过重大发现。他引进的许多数学术语和书写格式,例如函数的记法"f(x)",一直沿用至今。此外,他还在力学、光学和天文学等学科有突出的贡献。欧拉是18世纪杰出的数学家,同时也是有史以来最伟大的数学家之一。他也是一位多产作者,其文学著作约有60-80册。法国数学家皮埃尔-西蒙·拉普拉斯曾这样评价欧拉对于数学的贡献:“读欧拉的著作吧,在任何意义上,他都是我们的大师” 二、生平 1、早年 欧拉出生于瑞士巴塞尔(Basel)的一个牧师家庭,父亲保罗·欧拉(Paul Euler)是基督教加尔文宗的牧师,保罗·欧拉早年在巴塞尔大学学习神学,后娶了一位牧师的女儿玛格丽特·布鲁克(Marguerite Brucker),也就是欧拉的母亲。欧拉是他们6个孩子中的长子。在欧拉出生后不久,他们全家就从巴塞尔搬迁至郊外的里恩(Riehen),在那里欧拉度过了他童年的大部分时光。 欧拉最早是从他的父亲那里接触到一些数学,后来欧拉搬回巴塞尔和他的外祖母住在一起,并在那里开始了他的正式学业,在中学时期,由于欧拉所在的学校并不教授数学,他便私下里从一位大学生那里学习。 欧拉13岁时进入了巴塞尔大学,主修哲学和法律,但在每周星期六下午便跟当时欧洲最优秀的数学家约翰·伯努利(Johann Bernoulli)学习数学 。欧拉于1723年取得了他的哲学硕士学位,学位论文的内容是笛卡尔哲学和牛顿哲学的比较研究。之后,欧拉遵从了他父亲的意愿进入了神学系,学习神学,希腊语和希伯来语(欧拉的父亲希望欧拉成为一名牧师),但最终约翰·伯努利说服欧拉的父亲允许欧拉学习数学,并使他相信欧拉注定能成为一位伟大的数学家。1726年,欧拉完成了他的博士学位论文De Sono,内容是研究声音的传播。1727年,欧拉参加了法国科学院主办的有奖征文竞赛,当年的问题是找出船上的桅杆的最优放置方法。结果他得了二等奖,一等奖为被誉为“舰船建造学之父”的皮埃尔·布格(Pierre Bouguer)所获得,不过欧拉随后在他一生中一共12次赢得该奖。 2、在圣彼得堡 这一时期,约翰·伯努利的两个儿子——丹尼尔·伯努利(Daniel Bernoulli)和尼古拉·伯努利(Nicolas Bernoulli)——在位于俄国圣彼得堡的俄国皇家科学院工作,在尼古拉因阑尾炎于1726年7月去世后(此时距他来到俄国仅一年),丹尼尔便接替了他在数学/物理学所的职位,同时推荐欧拉来接替他自己在生理学所空出的职位。欧拉于1726年11月欣然接受了邀请,但并没有立即动身前往圣彼得堡,而是先申请巴塞尔大学的物理学教授,不过没有成功。 前苏联于1957年发行的邮票,纪念欧拉诞辰250周年。文字内容为:欧拉,伟大的数学家和学者,诞辰250周年。 欧拉于1727年5月17日抵达圣彼得堡,在丹尼尔等人的请求下,科学院将欧拉指派到数学/物理学所工作,而不是起初的生理学所。欧拉与丹尼尔保持着密切的合作关系,并且与丹尼尔住在一起。在1727年至1730年间,欧拉还担任了俄国海军医官的职务。 俄国皇家科学院由彼得大帝于1724年创建,在彼得大帝和他的继任者凯瑟琳女皇主政时期,科学院是一个对外国学者具有吸引力的地方。科学院有充足的资金来源和一个规模庞大的综合图书馆,并且只招收非常少的学生,以减轻教授们的教学负担。科学院还非常重视研究,给予教授们充分的时间及自由,让他们探究科学问题。 凯瑟琳女皇,同时也是科学院的资助者,于欧拉到达圣彼得堡的当天去世。其后彼得二世继位,彼得二世是个软弱的君主,实际权力由俄国贵族掌握。贵族们对科学院的外国科学家心存戒心,于是他们切断了对欧拉及其同事们的财政资助,并且在其它方面找他们的麻烦。 情况在彼得二世去世(1730年)后有所好转,欧拉在科学院迅速得到提升,并于1731年获得物理学教授的职位。两年后,由于受不了在圣彼得堡受到的种种审查和敌视,丹尼尔·伯努利返回了巴塞尔,欧拉于是接替丹尼尔成为数学所所长[10] 。1735年,欧拉还在科学院地理所担任职务,协助编制俄国第一张全境地图。 1734年1月7日,欧拉迎娶了科学院附属中学的美术教师,瑞士人乔治·葛塞尔(Georg Gsell)的女儿,柯黛琳娜·葛塞尔(Katharina Gsell,1707-1773),两人共育有13个子女,其中仅有5个活到成年。 3、视力恶化 在欧拉的数学生涯中,他的视力一直在恶化。在1735年一次几乎致命的发热后的三年,他的右眼近乎失明,但他把这归咎于他为圣彼得堡科学院进行的辛苦的地图学工作。视力在他在德国期间也持续恶化,以至于弗雷德里克把他誉为“独眼巨人”。欧拉的原本正常的左眼后来又遭受了白内障的困扰。在他于1766年被查出有白内障的几个星期后,导致了他的近乎完全失明。即便如此,病痛似乎并未影响到欧拉的学术生产力,这大概归因于他的心算能力和超群的记忆力。比如,欧拉可以从头到尾不犹豫地背诵维吉尔的史诗《埃涅阿斯纪》,并能指出他所背诵的那个版本的每一页的第一行和最后一行是什么。在书记员的帮助下,欧拉在多个领域的研究其实变得更加高产了。在1775年,他平均每周就完成一篇数学论文。 4、其他 欧拉年轻时曾研读神学,他一生虔诚、笃信上帝,并不能容许任何诋毁上帝的言论在他面前发表。有一个广泛流传的传说说到,欧拉在叶卡捷琳娜二世的宫廷里,挑战当时造访宫廷的无神论者德尼·狄德罗:“先生,,所以上帝存在,请回答!”不懂数学的德尼完全不知怎么应对,只好投降。但是由于狄德罗事实上也是一位有作为的数学家,这个传说有可能属于虚构。 欧拉是史上发表论文数第二多的数学家,全集共计75卷;他的纪录一直到了20世纪才被保羅·埃尔德什打破。他发表的论文达1475篇,著作有32部。产量之多,无人能及。欧拉实际上支配了18世纪至现在的数学;对于当时新发明的微积分,他推导出了很多结果。很多数学的分枝,也是由欧拉所创或因而有大大的进展。 在1765年至1771年据说是因欧拉双眼直接观察太阳,双眼先后失明。尽管人生最后7年,欧拉的双目完全失明,他还是以惊人的速度产出了生平一半的著作。 1783年9月18日,晚餐后,欧拉一边喝着茶,一边和小孙女玩耍,突然之间,烟斗从他手中掉了下来。他说了一声:“我的烟斗”,并弯腰去捡,结果再也没有站起来,他抱着头说了一句:“我死了”。“欧拉停止了生命和计算”。后面这句经常被数学史家引用的话,出自法国哲学家兼数学家孔多塞之口:“…il cessa de calculer et de vivre”(he ceased to calculate and to live)。 三、成就 欧拉的数学符号引进和推广,并通过他的许多教科书广为流传。最值得注意的是,他介绍了一个运行概念是先写函数F(x)表示函数f参数x的应用他还介绍了三角函数现代符号,为自然对数的底(现在也称为欧拉数已知),对求和希腊字母Σ和字母i字母E来表示虚数单位。(该使用希腊字母π来表示一个圆的周长和直径之比也由欧拉普及,但它并不是由他发明。) 欧拉和丹尼尔·伯努利一起,建立了弹性体的力矩定律:作用在弹性细长杆上的力矩正比于物质的弹性和通过质心轴和垂直于两者的截面的转动惯量。 他还直接从牛顿运动定律出发,建立了流体力学里的欧拉方程。这些方程组在形式上等价于粘度为0的纳维-斯托克斯方程。人们对这些方程的主要兴趣在于它们能被用来研究冲击波。 他对微分方程理论作出了重要贡献。他还是欧拉近似法的创始人,这些计算法被用于计算力学中。此中最有名的被称为欧拉方法。 在数论里他引入了欧拉函数。自然数的欧拉函数被定义为小于并且与互质的自然数的个数。在计算机领域中广泛使用的RSA公钥密码算法也正是以欧拉函数为基础的。 在分析领域,是欧拉综合了莱布尼兹的微分与牛顿的流数。他在1735年由于解决了长期悬而未决的贝塞尔问题而获得名声: 其中是黎曼函数。 欧拉将虚数的幂定义为如下公式 这就是欧拉公式,它成为指数函数的中心。在初等分析中,从本质上来说,要么是指数函数的变种,要么是多项式,两者必居其一。被理查德·费曼称为“最卓越的数学公式”的则是欧拉公式的一个简单推论(通常被称为欧拉恒等式): 他在1735年定义了微分方程中的欧拉-马歇罗尼常数,也是欧拉-马歇罗尼公式的发现者之一,这一公式在计算难于计算的积分、求和与级数的时候极为有效: 欧拉还发现了公式的V型é f键= 2的数量与顶点,边和面的凸多面体,因此,对一个平面图形。此公式中的常数是现在被称为欧拉示性数的图形(或其他数学对象),是有关属的对象。研究和推广这一公式,特别是通过柯西和欧莱雅Huillier,是在原点的拓扑结构。 欧拉在1736年解决了柯尼斯堡七桥问题,并且发表了论文《关于位置几何问题的解法》(Solutio problematis ad geometriam situs pertinentis),对一笔画问题进行了阐述,是最早运用图论和拓扑学的典范。 在1739年,欧拉写下了《音乐新理论的尝试(Tentamen novae theoriae musicae)》,书中试图把数学和音乐结合起来。一位传记作家写道:这是一部“为精通数学的音乐家和精通音乐的数学家而写的”著作。 ...

October 26, 2012

数学王子:高斯

一、引言 高斯无疑是迄今为止最伟大的数学家,同时他也是我最喜欢和最崇拜的数学家,作为数学史上最有才华的数学家之一,并且他把自己的才华最大限度应用到数学上,产生大量的数学研究成果,在数论方面更是拥有超凡的天赋、悟性和创造力。 二、简介 高斯(Johann Carl Friedrich Gauss)(1777年4月30日-1855年2月23日),生于不伦瑞克,卒于哥廷根,德国著名数学家、物理学家、天文学家、大地测量学家。高斯被认为是最重要的数学家,并拥有数学王子的美誉。 1792年,15岁的高斯进入布伦瑞克(Braunschweig)学院。在那里,高斯开始对高等数学作研究。独立发现了二项式定理的一般形式、数论上的“二次互反律”(Law of Quadratic Reciprocity)、质数分布定理(prime numer theorem)及算术几何平均(arithmetic-geometric mean)。 1795年高斯进入哥廷根大学。1796年,19岁的高斯得到了一个数学史上极重要的结果,就是《正十七边形尺规作图之理论与方法》。 1855年2月23日清晨,高斯于睡梦中去世。 三、生平 卡尔·弗里德里希·高斯是一对普通夫妇的儿子。他的母亲是一个贫穷石匠的女儿,虽然十分聪明,但却没有接受过教育,近似于文盲。在成为高斯父亲的第二个妻子之前,她从事女佣工作。他的父亲曾做过园丁,工头,商人的助手和一个小保险公司的评估师。当高斯三岁时便能够纠正他父亲的借债账目的事情,已经成为一个轶事流传至今。他曾说,他在麦仙翁堆上学会计算。能够在头脑中进行复杂的计算,是上帝赐予他一生的天赋。 高斯用很短的时间计算出了小学老师布置的任务:对自然数从1到100的求和。他所使用的方法是:对50对构造成和101的数列求和(1+100,2+99,3+98……),同时得到结果:5050。这一年,高斯9岁。父亲格尔恰尔德·迪德里赫对高斯要求极为严厉,甚至有些过份,常常喜欢凭自己的经验为年幼的高斯规划人生。高斯尊重他的父亲,并且秉承了其父诚实、谨慎的性格。 在成长过程中,幼年的高斯主要得力于母亲和舅舅:高斯的母亲罗捷雅、舅舅弗利德里希(Friederich)。弗利德里希富有智慧,为人热情而又聪明能干投身于纺织贸易颇有成就。他发现姐姐的儿子聪明伶利,因此他就把一部分精力花在这位小天才身上,用生动活泼的方式开发高斯的智力。若干年后,已成年并成就显赫的高斯回想起舅舅为他所做的一切,深感对他成才之重要,他想到舅舅多产的思想,不无伤感地说,舅舅去世使"我们失去了一位天才"。正是由于弗利德里希慧眼识英才,经常劝导姐夫让孩子向学者方面发展,才使得高斯没有成为园丁或者泥瓦匠。 在数学史上,很少有人象高斯一样很幸运地有一位鼎力支持他成才的母亲。罗捷雅直到34岁才出嫁,生下高斯时已有35岁了。她性格坚强、聪明贤慧、富有幽默感。高斯一生下来,就对一切现象和事物十分好奇,而且决心弄个水落石出,这已经超出了一个孩子能被许可的范围。当丈夫为此训斥孩子时,她总是支持高斯,坚决反对顽固的丈夫想把儿子变得跟他一样无知。 罗捷雅真地希望儿子能干出一番伟大的事业,对高斯的才华极为珍视。然而,她也不敢轻易地让儿子投入当时尚不能养家糊口的数学研究中。在高斯19岁那年,尽管他已做出了许多伟大的数学成就,但她仍向数学界的朋友W.波尔约(W.Bolyai,非欧几何创立者之一J.波尔约之父)问道:高斯将来会有出息吗?W.波尔约说她的儿子将是"欧洲最伟大的数学家",为此她激动得热泪盈眶。 7岁那年,高斯第一次上学了。头两年没有什么特殊的事情。1787年高斯10岁,他进入了学习数学的班次,这是一个首次创办的班,孩子们在这之前都没有听说过算术这么一门课程。数学教师是布特纳,他对高斯的成长也起了一定作用。 当然,这也是一个等差数列的求和问题。当布特纳刚一写完时,高斯也算完并把写有答案的小石板交了上去。E.T.贝尔写道,高斯晚年经常喜欢向人们谈论这件事,说当时只有他写的答案是正确的,而其他的孩子们都错了。高斯没有明确地讲过,他是用什么方法那么快就解决了这个问题。数学史家们倾向于认为,高斯当时已掌握了等差数列求和的方法。一位年仅10岁的孩子,能独立发现这一数学方法实属很不平常。贝尔根据高斯本人晚年的说法而叙述的史实,应该是比较可信的。而且,这更能反映高斯从小就注意把握更本质的数学方法这一特点。 高斯的计算能力,更主要地是高斯独到的数学方法、非同一般的创造力,使布特纳对他刮目相看。他特意从汉堡买了最好的算术书送给高斯,说:“你已经超过了我,我没有什么东西可以教你了。”接着,高斯与布特纳的助手巴特尔斯建立了真诚的友谊,直到巴特尔斯逝世。他们一起学习,互相帮助,高斯由此开始了真正的数学研究。 1788年,11岁的高斯进入了文科学校,他在新的学校里,所有的功课都极好,特别是古典文学、数学尤为突出。经过巴特尔斯等人的引荐,布伦兹维克公爵召见了14岁的高斯。这位朴实、聪明但家境贫寒的孩子赢得了公爵的同情,公爵慷慨地提出愿意作高斯的资助人,让他继续学习。布伦兹维克公爵在高斯的成才过程中起了举足轻重的作用。不仅如此,这种作用实际上反映了欧洲近代科学发展的一种模式,表明在科学研究社会化以前,私人的资助是科学发展的重要推动因素之一。高斯正处于私人资助科学研究与科学研究社会化的转变时期。 1792年高斯进入布伦兹维克的卡罗琳学院继续学习。1795年,公爵又为他支付各种费用,送他入德国著名的哥丁根大学,这样就使得高斯得以按照自己的理想,勤奋地学习和开始进行创造性的研究。1799年,高斯完成了博士论文,回到家乡布伦兹维克,正当他为自己的前途、生计担忧而病倒时─虽然他的博士论文顺利通过了,已被授予博士学位,同时获得了讲师职位,但他没有能成功地吸引学生,因此只能回老家-又是公爵伸手救援他。公爵为高斯付诸了长篇博士论文的印刷费用,送给他一幢公寓,又为他印刷了《算术研究》,使该书得以在1801年问世;还负担了高斯的所有生活费用。所有这一切,令高斯十分感动。他在博士论文和《算术研究》中,写下了情真意切的献词:“献给大公”,“你的仁慈,将我从所有烦恼中解放出来,使我能从事这种独特的研究”。 1806年,公爵在抵抗拿破仑统帅的法军时不幸阵亡,这给高斯以沉重打击。他悲痛欲绝,长时间对法国人有一种深深的敌意。大公的去世给高斯带来了经济上的拮据,德国处于法军奴役下的不幸,以及第一个妻子的逝世,这一切使得高斯有些心灰意冷,但他是位刚强的汉子,从不向他人透露自己的窘况,也不让朋友安慰自己的不幸。人们只是在19世纪整理他的未公布于众的数学手稿时才得知他那时的心态。在一篇讨论椭圆函数的手搞中,突然插入了一段细微的铅笔字:“对我来说,死去也比这样的生活更好受些。” 为了不使德国失去最伟大的天才,德国著名学者洪堡(B.A.Von Humboldt)联合其他学者和政界人物,为高斯争取到了享有特权的哥丁根大学数学和天文学教授,以及哥丁根天文台台长的职位。1807年,高斯赴哥丁根就职,全家迁居于此。从这时起,除了一次到柏林去参加科学会议以外,他一直住在哥丁根。洪堡等人的努力,不仅使得高斯一家人有了舒适的生活环境,高斯本人可以充分发挥其天才,而且为哥丁根数学学派的创立、德国成为世界科学中心和数学中心创造了条件。同时,这也标志着科学研究社会化的一个良好开端。 高斯的数学研究几乎遍及所有领域,在数论、代数学、非欧几何、复变函数和微分几何等方面都做出了开创性的贡献。他还把数学应用于天文学、大地测量学和磁学的研究,发明了最小二乘法原理。十分注重数学的应用,并且在对天文学、大地测量学和磁学的研究中也偏重于用数学方法进行研究。 高斯开辟了许多新的数学领域,从最抽象的代数数论到内蕴几何学,都留下了他的足迹。从研究风格、方法乃至所取得的具体成就方面,他都是18─19世纪之交的中坚人物。如果我们把18世纪的数学家想象为一系列的高山峻岭,那么最后一个令人肃然起敬的巅峰就是高斯;如果把19世纪的数学家想象为一条条江河,那么其源头就是高斯。 高斯于公元1805年10月5日与来自Braunschweig的Johanna Elisabeth Rosina Osthoff小姐(1780-1809)结婚。在公元1806年8月21日迎来了他生命中的第一个孩子约瑟。此后,他又有两个孩子。Wilhelmine(1809-1840)和Louis(1809-1810)。1807年高斯成为哥廷根大学的教授和当地天文台的台长。 虽然高斯作为一个数学家而闻名于世,但这并不意味着他热爱教书。尽管如此,他越来越多的学生成为有影响的数学家,如后来闻名于世的Richard Dedekind和黎曼。 高斯非常信教且保守。他的父亲死于1808年4月14日,晚些时候的1809年10月11日,他的第一位妻子Johanna也离开人世。次年8月4日高斯迎娶第二位妻子Friederica Wilhelmine (1788-1831)。他们又有三个孩子:Eugen (1811-1896),Wilhelm (1813-1883) 和 Therese (1816-1864)。1831年9月12日她的第二位妻子也死去,1837年高斯开始学习俄语。1839年4月18日,他的母亲在哥廷根逝世,享年95岁。高斯于1855年2月23日凌晨1点在哥廷根去世。他的很多散布在给朋友的书信或笔记发现于1898年。

October 25, 2012

[转]Mono相关文章汇总

一则新闻《软件服务提供商Xamarin融资1200万美元》,更详细的内容可以看Xamarin的官方博客Xamarin raises $12M to help you make better apps faster →。这篇新闻里告诉了我们目前Mono的用户规模“使用Xamarin软件的应用开发者已经超过15万,其中付费用户约为7500名。在Xamarin的客户中,还包括一些知名的企业,如美国国家仪器(National Instruments)和数字音乐订阅服务商Rdio等”。一直关注和研究Mono项目,今天把平常自己写的和园子里同学写的Mono的相关文章整理了一下,发现从2011年开始已经有非常的多人开始在项目中使用Mono,这里列一下这么多年来的园子里的相关博客内容和大家分享: 2006年,Mono最新版是1.1.13,社区出现了第一本《Mono: A Developer’s Notebook》。 什么是MONO 什么是MONO再议 “另类”的.NET——Mono 1.2发布 .NET和JAVA的跨平台,我们很期望.但是容易吗 Mono 开发 (使用.NET技术的你,绝对不能忽略Mono) 2007年,Mono最新版本Mono 1.2.6,最新版本全面支持.NET 1.1,并部分与.NET 2.0兼容,包括支持Windows Forms。.net 现在赶上了java甚至在某些领域超越了java,而且.net借助于mono项目正在超越java的跨平台。微软在不断的走向开放,微软的codeplex已经上线,微软的asp.net ajax客户端框架,ironpython,ironruby,DLR等这些都是使用完全的开源协议,开始逐步纳入Mono的版本。 倡议研究mono Mono的最合适的环境 Mono项目的新进展 我会为开源和自由学习,使用JAVA.但我决不会为了开源和自由放弃.NET 我也来说说.net开源 Mono 1.2.5 发布,提供对IronPython和DLR的支持 2008年,Mono的最新版本Mono 2.0,MonnoDevelop终于发布了一个Release版本1.0,Mono 2.0包括ADO.NET 2.0/ASP.NET 2.0/Windows.Forms 2.0/System.XML 2.0/System.Drawing/Linq/GTK#等类库的实现。这个release比1.x更为完整和成熟了。其中,C#编译器对C# 3的支持已经完整;标准库方面,WinForms 2.0的API已经完整支持,LINQ和ASP.NET的支持也比之前更为完善;执行引擎开始共享泛型代码后占用内存量减少了,同时Mono开始涉足iPhone开发领域的尝试,这也为今天的Xamarin融资打下了基础。有意思的是国内也出现了第一个Linux下的ASP.NET的Web服务器 http://www.linuxdot.net/,后面在具体介绍。 MonoDevelop 1.0 和 Mono 1.9(2.0 beta)发布了 Mono 2.0正式发布了 Mono运行于IPhone之上 利用Mono-cecil实现.NET程序的重新签名,重新链接相关库的引用 在Linux上使用Mono连接MySQL数据库 2009年,Mono最新版本Mono 2.6,MonnoDevelop发布了2.0,同时Moonlight 1.0也发布了,微软的asp.net mvc 1.0也开源了,可以在Mono上跑了,微软已经开源了不少项目:ASP.NET MVC ,NET Dynamic Language Runtime (DLR),IronRuby,IronPython,Silverlight Toolkit,Ajax Control Toolkit,Managed Extensibility Framework (MEF) ,都可以在Mono上跑了,Mono就可以快速的走向成熟。 ...

October 23, 2012

[转]使用C#开发iOS、Android和Windows Phone跨平台应用

 框架 [![](images/mono-开发框架-300x226.jpg)](images/mono-开发框架.jpg) 工具 [![](images/mono-工具-300x225.jpg)](images/mono-工具.jpg)

October 23, 2012

Mono 3.0正式发布

 经过一年半的努力,我们终于发布了Mono 3.0的正式版本。 就像我去年说的一样,我们会尽快推动Mono 3.0的正式版的发布。我们努力压缩进度,尽快地让每一个Mono开发者快点。这就意味着从此以后我们的主分支开发会走上一个正常进度,并且未来会有更伟大的版本出现在我们的主要分支中。 Mono 3.0的 release notes 列出了3.0的新内容: 1、C#异步编译器 2、统一的C#编译器的所有配置文件 3、4.5异步API简介 4、集成新的微软的开放源代码的堆栈: ASP.NET MVC 4 ASP.NET WebPages Entity Framework Razor System.Json (replaces our own) System.Json(代替Mono自己的) 新的高性能的垃圾收集器(SGEN - 许多性能和可扩展性方面的改进) 大量的运行时和类库的改进。 原文地址:http://tirania.org/blog/archive/2012/Oct-22.html

October 23, 2012

Memcached简介及相关访问客户端

 Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。 Memcached:是守护程序,也就是服务端,它与分布式无关,它的下载地址是http://memcached.org/; Memcached的客户端:客户端是指通过各种语言(php、java、.net)访问Memcached服务端,客户端实现了分布式算法,这里需要注意,php有两个访问memcahced的客户端 php其中一个客户端是:memcache(下载地址:http://php.net/manual/en/book.memcache.php),直接使用这个客户端的memcache.so或者memcache.dll文件就可以连接到Memcached服务端,不需要额外的其他组件,不过这个客户端的功能比较差,不支持CAS操作等; php另外一个客户端是:memcached(下载地址:http://php.net/manual/en/book.memcached.php),使用这个客户端,需要在客户端上安装libmemcached(下载地址:http://libmemcached.org/libMemcached.html)客户端,然后再引用memcached.so或者memcached.dll,这个客户端支持大量的操作,而且也非常稳定,建议使用这个客户端。

October 22, 2012