微信号:infoqchina

介绍:有内容的技术社区媒体

Q新闻丨最受开发者欢迎的平台是……LinkedIn开源软件项目数量已经超过了100个

2016-08-20 09:01 主播小Q
Android反超ios,地位稳固

根据VisionMobile最新的Developer Nation Q3 2016调查,Android领先iOS,是第一位的平台,而且其开发者占有率一直很稳固。此外,Windows开发人员更喜欢在云中使用C#,而Linux开发人员仍然使用Java。

在谈及优先平台时,多年以来,iOS一直在开发者首选项里高居首位。一家公司在开始创建新的应用程序时,会把iOS作为第一个目标平台,而如果应用取得了成功,他们才会在Android上做同样的尝试。

但现在,在北美和西欧,Android已经在开发者首选项里赶上了iOS。根据VisionMobile的调查,在世界的其他地区,Android也有重要的引领作用,尤其是在亚洲。下表给出了具体的数值。在业余和辅助项目里(这里没有给出),Android的数值比iOS高得更多。

在各大洲中,开发者对面向Windows Phone或Windows 10平台开发感兴趣大约为5%。

在开发者占有率方面,Android现在的记录是79%,而iOS为61%。以前,移动浏览器有很大的开发者占有率,2011年为56%,但2014年降到了7%。现在,它又反弹了一些,为30%。

下表是按主要的桌面平台统计的服务器端语言的开发者首选项(点击查看大图):

可以看到,当以Windows为桌面平台时,C#作为理想的服务器端语言处于领先地位,然后依次是PHP和Java。对于Linux开发人员,Java是主要的云端开发语言,然后依次是C/C++和Python,而Mac开发人员更喜欢PHP,然后是Java。

虽然微软努力让C#成为主流的云端开发语言,开源了许多技术,并实现了.NET跨平台支持,但报告显示,只有2%/3%的Linux/MacOS开发人员想使用它。

要想了解更多有关调查结论的细节,包括开发人员对IoT的兴趣,我们建议您阅读完整的报告。链接地址:

https://www.visionmobile.com/reports/developer-economics-state-developer-nation-q3-2016

该调查报告的结论是根据世界各地145个国家的16500多名开发人员的回复得出的。

  • 本部分翻译已获作者授权,原文链接:

  • http://www.infoq.com/news/2016/08/survey-android-ios

  • 本部分译者:谢丽

LinkedIn开源软件项目已超100

社交网络巨头、开源社区的活跃贡献者LinkedIn最近又开源了一系列重量级基础设施软件。到目前为止,LinkedIn在GitHub上开源的软件项目数量已经超过了100个。

最近宣布开源的项目有URL-Detector、Rocket Data和LayoutKit等。

URL-Detector

GitHub地址:

https://github.com/linkedin/URL-Detector

URL-Detector是一个以文本方式检测和标准化URL的Java库。为了保证用户的安全使用,所有用户提交的内容都会经过安全检测。LinkeIn的内容验证服务每秒钟都要处理几十万个URL,检查其中是否有恶意软件或钓鱼软件。LinkdedIn的高级软件工程师Tzu-Han Jan说:

如果提交的内容是一个URL,我们就直接用我们的内容验证服务去检查。如果提交上来的是一大堆文本,那就先用URL-Dector算法把可能的URL从中提取出来,再把URL交给内容验证服务。

他们设计了一个有限状态自动机来从文本中提取URL。有限状态自动机是一个包含了若干状态的系统,每个状态可能根据不同的输入而转入几个可能的其他状态。在URL-Detector中的输入就是当前正在解析的字符。

URL-Detector可以辨别出如下任意形式的URL:

  • HTML 5 Scheme – //www.linkedin.com

  • Usernames – user:pass@linkedin.com

  • Email – fred@linkedin.com IPv4

  • Address – 192.168.1.1/hello.html

  • IPv4 Octets – 0x00.0x00.0x00.0x00

  • IPv4 Decimal – http://123123123123/

  • IPv6 Address – ftp://[::]/hello

  • IPv4-mapped IPv6 Address – 
    http://[fe30:4:3:0:192.3.2.1]/

它还可以直接解析出关键字,以http://user@example.com:39000/hello?boo=ff#frag为例:

  • Scheme – "http"

  • Username – "user"

  • Password – null

  • Host – "example.com"

  • Port – 39000

  • Path – "/hello"

  • Query – "?boo=ff"

  • Fragment – "#frag"

Rocket Data

Github地址:

https://github.com/linkedin/RocketData

Rocket Data是有持续同步层的非阻塞、不可变模型管理系统。它可以使用任何类型的缓存,可以使用简单的API来轻松地挂接到键值型存储上。

从2015年早期重写LinkedIn旗舰版应用时开始,他们就在寻找一个可用的缓存系统来把内容展现给用户,而内容要从网络上加载。总的来说对这套缓存系统的需求是:

  • 不可变,线程安全模型;

  • 模型在内存和缓存中一致。这样在更新模型之后,所有其它实例中的这个模型都会跟着更新;

  • 读写操作都是非阻塞式的;

  • 简单的数据淘汰策略;

  • 在有大量模型类型、模式和监听器时可以容易扩展;

  • 自动迁移;

他们调查了当时业界的各种现有解决方案,包括Core Data、URL Cache、Realm,以及直接将模型写入磁盘的方案等,但找不到哪种方案可以满足上述所有需求,或者保证不可变模型的一致性——这是他们最看重的。于是他们决定自己写一套,就是Rocket Data,它的架构如下:

每一个视图控制器都有一个或多个数据提供者的引用。有两种类型的数据提供者:正规数据提供者持有对单一模型的引用,集合数据提供者持有对模型的有序数组的引用。两种数据提供者都可以很容易很快速地完成数据存取,因为模型都保存在内存中。

Peter Livesey这样评价这套系统:

有了这套缓存系统,开发者只需一点点额外工作就可以轻松地为项目添加缓存了。缓存和数据提供者都是自动保持一致的。除了每周为一些模型添加模式之外,我们再也不必为迁移增加任何代码。最重要的最,我们程序从来不会因为Core Data异常而崩溃。

LayoutKit

Github地址:

https://github.com/linkedin/LayoutKit

LayoutKit是一个高性能的iOS应用视图布局库。

LinkedIn非常在意手机应用的性能,可第一版的手机应用性能却非常不尽人意,调查后发现原因是主线程在运行Auto Layout时花费了过多时间。Auto Layout是iOS提供的布局引擎,可以自动计算视图在屏幕上的大小和位置。

据LayoutKit的开发者之一Nick Snyder说,他们当初也做了许多尝试。他们试过手工写布局代码,但发现这样会非常难以维护。所以总之需要的是在保证性能的前提下,将布局功能封装起来的可重用模块。可是调查了现有方案之后,仍是发现虽然Auto Layout给大家造成了很大困扰,但合适的方案还是找不到,于是决定自主开发。与Auto Layout相比,LayoutKit的主要优点有:

  • 速度快:性能可以与专门写的定制的布局代码相媲美,比Auto Layout快非常多;

  • 异步:在后台线程中做布局运算,所以不会干扰与用户的交互;

  • 声明性的:用不可变的数据结构声明布局,这样更容易开发、审核、调试和维护布局代码;

  • 可缓存的:布局结果都是不可变的数据结构,所以可以在后台线程中计算并缓存,可以非常大的提升性能;

而且LayoutKit还很好用:

  • UIKit友好:LayoutKit生成UIView,也提供适配器来方便与UITableView和UICollectionView一起使用;

  • 国际化:可以自动为从右到左的语言调整视图;

  • Swift:可以在Swift应用中使用;

  • 成熟:单元测试覆盖率超过90%,已经用于最新版的LinkedIn iOS应用;

LayoutKit比Auto Layout快八倍,性能可以与专门写的定制的布局代码相媲美。它快在专用的布局算法,而且它也不会为布局创建它并不需要的UIView。所以开发者可以用它随意的去组合布局,再也不用担心性能问题了。

开源运动如火如茶,其中LinkedIn、Google、Twitter等巨头公司的贡献和推动功不可没。至今LinedIn已经为开源社区贡献了100多个项目和数十万行代码,包括Kafka这样重量级的高吞吐量分布式消息系统。LinkedIn首席工程师Jay Kreps说LinedIn会持续投身开源运动:

  • 开源有助于产品保持高标准并引发人们的关注;

  • “让任何事情都成为秘密武器并不是我们热衷的有效战略,内部的(工具和技术)信息并不需要成为我们的竞争优势”。

  • 坚持开源策略是最好的技术招聘广告。很多LinkedIn招聘到的人都说这是他们加盟的重要原因。

本部分内容由InfoQ社区编辑足下原创发布

也许等时间成熟了,我们也会为大家整理一篇LinkedIn开源软件项目列表,大家敬请期待!对开源感兴趣的同学也可以戳延展阅读里的第一、二个标题!

延展阅读(点击标题):


喜欢我们的会点赞,爱我们的会分享!

 
InfoQ 更多文章 不负责问答:怎样才能叫高级程序员? 王垠:编程宗派之我见 移动支付背后的高可用架构丨视频+PPT下载 程序员简易成长指南:从菜鸟码农到架构师 饿了么:业务井喷时,订单系统架构这样演进
猜您喜欢 跟着Jason学UML(一) 类图 UIApplication的详细介绍 1万小时定律是误导大众!扎克伯格等人热捧的5小时定律才是成功关键! 敏捷破冰之旅(八) PHP新手必须掌握的入门与实战技巧