svn命令add使用

名称 svn add — 添加文件、目录或符号链。 概要 svn add PATH... 描述 添加文件、目录或符号链到你的工作拷贝并且预定添加到版本库。它们会在下次提交上传并添加到版本库,如果你在提交之前改变了主意,你可以使用svn revert 取消预定。 别名 无 变化 工作拷贝 是否访问版本库 否 选项 --targets FILENAME --non-recursive (-N) --quiet (-q) --config-dir DIR --auto-props --no-auto-props --force 例子 添加一个文件到工作拷贝: $ svn add foo.c A foo.c 当添加一个目录,svn add 缺省的行为方式是递归的: $ svn add testdir A testdir A testdir/a A testdir/b A testdir/c A testdir/d 你可以只添加一个目录而不包括其内容: $ svn add --non-recursive otherdir A otherdir 通常情况下,命令svn add ** *会忽略所有已经在版本控制之下的目录,有时候,你会希望添加所有工作拷贝的未版本化文件,包括那些隐藏在深处的文件,可以使用svn add** 的--force递归到版本化的目录下: $ svn add * --force A foo.c A somedir/bar.c A otherdir/docs/baz.doc [...]

November 16, 2012

svn命令blame使用

名称 svn blame — 显示特定文件和URL内嵌的作者和修订版本信息。 概要 svn blame TARGET... 描述 显示特定文件和URL内嵌的作者和修订版本信息。每一行文本在开头都放了最后修改的作者(用户名)和修订版本号。 别名 praise、annotate、ann 变化 无 是否访问版本库 是 选项 --revision (-r) REV --username USER --password PASS --no-auth-cache --non-interactive --config-dir DIR --verbose 例子 如果你希望在测试版本库看到blame标记的readme.txt源代码: $ svn blame http://svn.red-bean.com/repos/test/readme.txt 3 sally This is a README file. 5 harry You should read this.

November 16, 2012

svn命令checkout使用

名称 svn checkout — 从版本库取出一个工作拷贝。 概要 svn checkout URL[@REV]... [PATH] 描述 从版本库取出一个工作拷贝,如果省略_PATH_,URL的基名称会作为目标,如果给定多个URL,每一个都会检出到PATH的子目录,使用URL基名称的子目录名称。 别名 co 变化 创建一个工作拷贝。 是否访问版本库 是 选项 --revision (-r) REV --quiet (-q) --non-recursive (-N) --username USER --password PASS --no-auth-cache --non-interactive --config-dir DIR 例子 取出一个工作拷贝到mine: $ svn checkout file:///tmp/repos/test mine A mine/a A mine/b Checked out revision 2. $ ls mine 检出两个目录到两个单独的工作拷贝: $ svn checkout file:///tmp/repos/test file:///tmp/repos/quiz A test/a A test/b Checked out revision 2. A quiz/l A quiz/m Checked out revision 2. $ ls quiz test 检出两个目录到两个单独的工作拷贝,但是将两个目录都放到working-copies: ...

November 16, 2012

svn命令cleanup使用

名称 svn cleanup — 递归清理工作拷贝。 概要 svn cleanup [PATH...] 描述 递归清理工作拷贝,删除未完成的操作锁定。如果你得到一个“工作拷贝已锁定”的错误,运行这个命令可以删除无效的锁定,让你的工作拷贝再次回到可用的状态。 如果,因为一些原因,运行外置的区别程序(例如,用户输入或是网络错误)有时候会导致一个svn update 失败,使用--diff3-cmd选项可以完全清除你的外置区别程序所作的合并,你也可以使用--config-dir指定任何配置目录,但是你应该不会经常使用这些选项。 别名 无 变化 工作拷贝 是否访问版本库 否 选项 --diff3-cmd CMD --config-dir DIR 例子 svn cleanup 没有输出,没有太多的例子,如果你没有传递路径,会使用“.”。 $ svn cleanup $ svn cleanup /path/to/working-copy

November 16, 2012

svn命令commit使用

名称 svn commit — 将修改从工作拷贝发送到版本库。 概要 svn commit [PATH...] 描述 将修改从工作拷贝发送到版本库。如果你没有使用--file或--message提供一个提交日志信息,svn 会启动你的编辑器来编写一个提交信息,见“config”一节的editor-cmd小节。 提示 如果你开始一个提交并且Subversion启动了你的编辑器来编辑提交信息,你仍可以退出而不会提交你的修改,如果你希望取消你的提交,只需要退出编辑器而不保存你的提交信息,Subversion会提示你是选择取消提交、空信息继续还是重新编辑信息。 别名 ci(“check in”的缩写;不是“checkout”的缩写“co”。) 变化 工作拷贝,版本库 是否访问版本库 是 选项 --message (-m) TEXT --file (-F) FILE --quiet (-q) --non-recursive (-N) --targets FILENAME --force-log --username USER --password PASS --no-auth-cache --non-interactive --encoding ENC --config-dir DIR 例子 使用命令行提交一个包含日志信息的文件修改,当前目录(“.”)是没有说明的目标路径: $ svn commit -m "added howto section." Sending a Transmitting file data . Committed revision 3. 提交一个修改到foo.c(在命令行明确指明),并且msg文件中保存了提交信息: $ svn commit -F msg foo.c Sending foo.c Transmitting file data . Committed revision 5. 如果你希望使用在--file选项中使用在版本控制之下的文件作为参数,你需要使用--force-log选项: ...

November 16, 2012

数学学科分类(MSC标准)

MSC的顶级主题分类,但下面的几个分组并不是MSC分类的一部分,它们仅仅是为了能够更有条理地划分。 一、通用及基础 00: 通用,包括趣味数学,数学哲学,数学建模等。 01: 数学史 and 数学家传记。 03: 数理逻辑和数学基础,包括模型论,可计算性理论,集合论,证明论,代数逻辑等。 二、代数(及离散数学) 05: 组合数学 06: 序理论 08: 通用代数系统 11: 数论 12: 场论和多项式 13: 交换环和交换代数 14: 代数几何 15: 线性代数和多重线性代数;矩阵 16: 环论和结合代数 17: 非结合环和非结合代数 18: 范畴论; 同调代数 19: K-理论 20: 群论及推广 22: 拓扑群,李群和基于它们的分析 三、分析 26: 实变函数,包括导数和积分 28: 测度及其积分 30: 复变函数,包括复数中的近似值理论 31: 位势论 32: 多复变数和解析空间 33: 特殊函数 34: 常微分方程 35: 偏微分方程 37: 动力系统和遍历理论 39: 差分方程和泛函方程 40: 序列,级数, 发散级数 41: 近似值理论及其拓展 42: 调和分析,包括傅里叶分析,傅里叶变换,傅里叶级数,三角插值,和正交函数 43: 抽象调和分析 44: 积分变换,运算微积 45: 积分方程 46: 泛函分析,包括infinite-dimensional holomorphy,分布 (数学分析)中的积分变换 47: 算子理论 49: 变分法和最优控制;最优化(包括同源性整合理论) ...

November 16, 2012

“画一个火柴人”史诗版发布iphone、ipad和win8版本

激动人心的一款游戏:“画一个火柴人”(Draw A Stickman EPIC) 游戏已经发布ios(ipad、iphone)和windows8的产品,去年他们发布网页版的时候,24小时获得了100w用户。在app产品里,开发团队融入了更多的场景,并且让玩家能大量地发挥自己的想象力。令人惊喜的是,这款游戏完全采用Mono来开发,主要基于MonoGame来开发,代码共享达到95%。他们的android版本也会在最近推出。 如果你很喜欢,可以他们的官网http://www.drawastickman.com/体验这款富有想象力的游戏。 更多信息可以查看:http://blog.xamarin.com/2012/10/29/draw-a-stickman-epic-now-available-for-iphone-ipad-and-windows-8-2/

November 2, 2012

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

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