Skip to content

Instantly share code, notes, and snippets.

@xishuixixia
xishuixixia / gist:88bdbac124e8d271e915
Last active August 29, 2015 14:01
Github开源其文本编辑器Atom

Github开源其文本编辑器Atom

5月6日,代码托管社区GitHub基于MIT协议开源了其文本编辑器Atom。十周前,GitHub正式推出了Atom,Atom是一款基于Web技术的桌面应用程序,它融合了SublimeText、TextMate等编辑器的特点,欲打造一款方便使用又具灵活性的文本编辑器。GitHub称,过去三十年开源文本编辑器Emacs和Vim已经证明,要建立一个活跃的持续的社区,编辑器必须开源。

Atom截图

在发布Beta版本时,Github就已经开源了Atom的部分程序包(Atom的很多功能都是通过程序包的形式提供的),由于其并未开源Atom的核心部分而备受争议。这次GitHub开源了Atom编辑器的剩余部分,包括核心应用程序、程序包管理器、基于Chromium的桌面应用程序框架、Atom Shell。核心应用程序是指通过非程序包形式提供的功能模块,包括构建系统、整体环境、工作区、窗格以及文本编辑器组件。程序包管理器(APM)是一个客户端库和命令行工具,用于发布和安装Atom程序包。Atom Shell是一个基于node.js和[Ch

@xishuixixia
xishuixixia / gist:23393d5a3baca8cb4429
Last active August 29, 2015 14:01
Sign in with Other platform

Sign in with QQ

####Step 1: Creating your application To start a sign in flow,you should create an application in QQ.In the application manage center,you can create a website application of InfoQ to access the information in QQ system through their Open API.The thing is simple but verbose,which may takes one or two week.Because you need for auditing.After these works,you can get InfoQ's APP ID and APP KEY,remember them and then will be used later.

####Step 2: Downloading the SDK You should download development SDK from the website.In the SDK,There are many demos which you can learn and consult.For example,the java SDk provides you their API in sdk4j_doc folder and some examples in sdk4j_demo folder.

####Step 3: Comprehending Oauth 2.0

@xishuixixia
xishuixixia / gist:3c543896165e1a5bdb51
Last active August 29, 2015 14:01
Visual Studio 2013 Update 2发布:支持Apache Cordova

5月12日,微软宣布Visual Studio 2013 Update 2正式发布,此次版本升级带来了许多令人兴奋的新功能以及Bug修复,比如改进对Windows Phone 8.1和Microsoft Azure的支持、集成Apache Cordova 支持跨平台开发。其官方博客中称,纵观整个行业,开发者日益将焦点转移到移动优先、云优先(mobile-first and cloud-first)的开发模式上,所以Visual Studio的产品策略也会向这方面倾斜。

Visual Studio 2013 Update 2除了修复Bug、解决用户反馈问题、对性能和稳定性进行完善外,还包含一些新功能:

1.通用的App。新版本的Visual Studio可以用来构建通用的应用,通用的App可以同时兼容Windows 8.1和Windows Phone 8.1。针对Windows Phone 8.1及 Windows Store 8.1平台,Visual Studio支持通过共享工程来共享代码和资源。

2.TypeScriptTypeScript是一门由微软开发的开源的编程语言。它是JavaScript规范的超集,添加了类型检查和静态代码分析,同时生成原生JavaScript。新版本的Visual Studio开始支持TypeScript。

3.Web工具。提供了一些新的[Web开发工具](http://bl

@xishuixixia
xishuixixia / gist:08d120036b0ec817cca6
Last active August 29, 2015 14:01
ASP.NET vNext:微软下一代云环境Web开发框架

在5月12日的TechED大会上,微软首次向外界介绍了下一代ASP.NET框架——ASP.NET vNext。ASP.NET vNext专门针对云环境和服务器环境进行了优化,并带来了“无编译”( no-compile )开发体验以及依赖注入(Dependency Injection out of box)等令人兴奋的新特性。微软员工Scott Hanselman在其博客中对ASP.NET vNext做了简单介绍。

首先使用ASP.NET vNext,开发者可以为其应用部署单独的.NET框架,同一服务器上两个使用不同版本库的应用不会彼此影响,并且应用可以使用针对其云计算环境进行优化的CLR版本。开发以可以把应用依赖定制的CLR以及云优化的.NET框架构建为一个NuGet包。

开发者可以通过命令行工具来运行和管理ASP.NET vNext应用。kvm命令可以帮助开发者操作和管理自己的应用环境,比如通过kvm list命令来查看可用的应用版本,通过kvm use version命令设置当前生效的应用版本。

ASP.NET vNext将packages.config、NuGet 配置(nuspec)以及项目文件(csprojs)合并到统一的项目依赖配置文件project.json中。在输入类库或者NuGet包时,开发者可以看到完整的智能提示,并且NuGet包会被自动下载到开发环境中。

@xishuixixia
xishuixixia / gist:515e2dfba360f58b6a09
Last active August 29, 2015 14:01
PostgreSql 9.4 Beta 1发布,支持JSONB

5月15日,PostgreSQL全球开发小组正式发布了PostgreSQL 9.4首个测试版,此测试版包含了9.4正式版中的所有功能,目前官方已经提供了下载地址供外界下载测试,新版本的PostgreSQL内建了一些NOSQL的功能,全面转型为一款混合型(SQL和NOSQL)数据库。

早在PostgreSQL 9.2中就已经提供了对JSON的原生支持,JSON是NOSQL数据库的特点之一,最常见的NOSQL数据库MongoDB的存储格式就是JSON类型的,但是由于数据库直接存储JSON字符串的性能非常差,所以业内会使用二进制结构来存储JSON数据以提高查询等方面的性能,比如Mongodb的底层存储结构BSON。PostgreSQL 9.4中也开始支持二进制的存储结构JSONB(Binary JavaScript Object Notation),JSONB与Mongodb的BSON大同小异,主要差别是BSON不能支持大于64位的整型以及浮点型数据。随着JSONB的引入以及索引、函数、JSON相关操作等功能的支持,PostgreSQL已经全面支持文档型数据的存储并且有相当不错的性能。

除了对JSONB的支持外,PostgreSQL提供了新的Data Change Streaming API以对replication流中的数据编码和转换。实时刷新(Refresh Concurrently)的物化视图可以及时更新数据报告。ALTER SYSTEM SET允许管理人员通过SQL命令行修改PostgreSQL的配置文件postgresql.conf

另外,PostgreSQL 9.4 Beta 1中还包含了一些其他的功能,比如Replication slots,详细内容读者可以阅读[发行说明](http://www.postgresql.org/docs/devel/static/re

@xishuixixia
xishuixixia / gist:0f5249811c263d349d76
Last active August 29, 2015 14:01
Dart 1.4发布:新增Observatory工具

Dart 1.4发布:新增Observatory工具

5月21日,Google的Dart团队正式发布了Dart 1.4。Dart是由Google Chrome V8引擎团队的领导者拉尔斯·巴克主持开发的一种结构化的Web编程语言,旨在弥补JavaScript的不足。Dart的设计目标是为开发现代Web程序提供结构化但又不乏灵活性的编程语言。Dart在JavaScript语言的基础上,改进了编程效率和执行性能,并大幅度减少了编程的复杂性。相比JavaScript,Dart语言更加简单和高效,Dart支持类和接口,是一门纯面向对象的语言。Dart在动态语言的基础上,结合了静态语言的优点,它有很多不错的特性,比如可选类型、并发编程、工厂构造函数、级联调用。Dart代码可以用两种不同方式执行:一是通过原生的虚拟机(可以集成到浏览器);另一种则是通过Google的Dart2js编译器将Dart代码转换为JavaScript代码,然后再执行。

Dart 1.4带来了一款全新的监测工具Observatory,Observatory可用于对Dart应用程序进行性能分析和调试。通过Observatory,开发人员可以查看Dart 虚拟机内部的运行情况,包括垃圾回收、内存对象实例数、代码覆盖以及任意表达式的执行。Dart团队称他们将在接下来的几个版本中改善并增强Observatory,具体使用方法读者可以参考其官方文档

另外,Dart 1.4中,命令行工具dartanalyzer已经全部使用Dart编写,运行dartanalyzer只需要Dart虚拟机(不再需要Java)。新版本的Dart提升了文件IO的性能,特别是在存取大文件的时候。Dart 1.4中还试验性的在Linux系统中增加了对分享网络socket的支持。

@xishuixixia
xishuixixia / gist:703ecf5d26597e1be032
Last active January 15, 2016 09:38
有关微服务架构的争论:更简单还是更复杂?

随着DevOps、持续交付等理念的深入人心,微服务(Microservices)架构开始走进我们的视野。微服务是用一组小服务的方式来构建一个应用,服务独立运行在不同的进程中,服务之间通过轻量的通讯机制(如RESTful接口)来交互,并且服务可以通过自动化部署方式独立部署。正因为微服务架构中的服务之间是相互独立的,所以不同的服务可以使用不同的语言来开发,或者根据业务的需求使用不同类型的数据库。3月底,来自ThoughtWorks的James Lewis和Martin Fowler分享了他们对微服务架构的理解以及看法。文章中作者详细介绍了微服务的特点以及相对于传统架构的微服务架构的优势。

在James看来,传统的整体风格的架构在构建部署和扩展伸缩方面有很大的局限性,传统的整体(monolithic)风格的架构一般分为三部分:客户端用户界面(HTML页面和JavaScript程序)、数据库、服务端应用程序。服务端程序负责处理HTTP请求、执行业务逻辑、加载和更新数据库数据、查询和填充HTML页面,这个服务端应用就像是一块铁板,笨重且不可拆分,系统中任何程序的改变都需要整个应用重新构建和部署新版本。另外传统的整体风格的架构在进行水平扩展时也只能整个系统扩展,而不能针对某一个功能模块进行扩展。而微服务架构可以完美的解决统一风格架构所遇到的种种问题。微服务架构将系统以组件化的方式分解为多个服务,服务之间相对独立且松耦合,单一功能的改变只需要重新构建部署相应的服务即可。 传统风格架构与微服务架构在扩展性方面的对比

传统的开发模式在分工时往往以技术为单位,比如UI团队、服务端团队和数据库团队,这样的分工可能会导致任何功能上的改变都需要跨团队沟通和协调。而微服务则倡导围绕服务来分工,不同的服务可以采用不同的技术来实现,一个团队中应该包含开发所需的所有技能,比如用户体验、数据库、项目管理。 团队对比

传统的软件开发常常以项目为周期,一旦项目开发完成即交付给运维部门,而在微服务架构中,一个团队应该去把控产品的整个生命周期,而不只是开发,这其实也是DevOps的核心理念,所以微

@xishuixixia
xishuixixia / gist:7b04bfeb0d22f0e02c63
Last active August 29, 2015 14:02
苹果发布新的编程语言Swift

苹果发布新的编程语言Swift

在6月3日凌晨举行的WWDC 2014大会上,苹果发布了新的编程语言Swift。Swift是一门基于C和Objective-C的编程语言,它被设计用于开发iOS和OS X的应用程序。Swift采用了安全的编程模式并添加了新的主流功能使编程变得更加灵活、简单、有趣。Swift沿用了Objective-C的命名参数和动态对象模型,并提供了对Cocoa和Cocoa Touch框架的支持。另外,Swift采用了与Objective-C一样的编辑和运行环境LLVM,因此它可以兼容Objective-C,开发者也可以在开发过程中无缝切换。

Swift支持代码实时预览(Swift Playground),开发者在左侧输入代码的同时即可在右侧实时预览代码执行结果。这也就是说Swift代码可以被实时编译并输出(同Objective-C,Swift会被LLVM编译为Native Code后运行),开发人员可以拥有更加流畅的编程体验。

据官方介绍,Swift的运行速度飞快。比如在对复杂对象排序这一功能点上,它的运行速度均快于Python和Objective-C。另外,Swift 允许开发者通过非常少的代码来实现更多的内容。在发布会上,苹果演示了如何通过一行简单的Swift代码来完成了一个完整图片列表加载的过程。

@xishuixixia
xishuixixia / gist:70e52242dcabda4fcca2
Last active August 29, 2015 14:02
替代Objective-C?Swift尚不成熟

替代Objective-C?Swift尚不成熟

在今年苹果的开发者大会上,最引人注目的当属新的编程语言Swift的发布。Swift是一门苹果自主开发的编程语言,它由LLVM的创始人Chris Lattner在2010年开始着手设计,目标是在保证应用质量和性能的前提下,让应用开发变得更加简单、快速。苹果宣称Swift的特点是:快速、现代、安全、互动,且全面优于Objective-C语言。为了给Swift打好基础,苹果公司改进了编译器、调试器和框架结构,不难看出苹果在Swift的设计上也煞费苦心。社交媒体上一时间铺满了对Swift的讨论:

JavaEye的创始人Robbin在微博中写到:“Swift目前只是提供了一种脚本编程语法,编写代码的效率提高不了多少,对程序员来说,熟悉Swift语法也不过一天时间足够了。关键是要提供高级数据类型,简化Cocoa类库,否则用不用Swift都没区别。当代的程序员,主要学习成本不在编程语言的语法上,而在语言提供的特殊数据类型和庞大的类库上。”

CNET的Tim Stevens认为Swift是一门具有巨大潜力的编程语言,它在结合了脚本语言与传统编译语言的优势的同时,又兼有更快的执行速度(从几项关键指标来看)。Swift的脚本特性以及实时预览功能可以帮助开发者方便快捷地编写并测试应用程序。但Swift也没有想象中的那么美好,Objective-C在开发应用方面相对比较成熟,并且有了完整的生态圈,Swift想推倒一切重新开发,恐怕还需要一段时间。

资深iOS开发者郭亮认为Swift对于准备学习iOS开发的新手来说是个好消息,毕竟它的入门门槛比较低,但对于已经习惯了Objective-C的上百万开发者来说,又是一件痛苦的事情!因为他们已经爱上了Objective-C。Swift虽然门槛很低,但要真正熟练,道路依然荆棘,Protocol、Extension、继承、多态还有闭包,真的没那么简单。语言刚刚发布,还会有许多的不完善,其性能、效率还有待验证,并且相关资料非常少,应该只有苹果官方的文档,也没有开源社区的支持。所以Swift短期内取代Objective-C的可能性非常小,目前想用Swift单独作为项目