Skip to content

Instantly share code, notes, and snippets.

Android上替代SQLite的选择:Realm

摘要

Realm是一个开源的面向对象移动数据库。上个月,Realm的Android版本发布了,比iOS版本晚了三个月。

正文

Realm是一个开源的面向对象移动数据库。上个月,Realm的Android版本发布了,比iOS版本晚了三个月。

我们之前已经报道过,Realm没有使用SQLite作为它的引擎,而是用C++写了自己的引擎,他们的目标是提供一个聚焦移动领域的SQLite的替代者。现在它的Android版本已经发布了。

@kneep
kneep / career.md
Last active August 29, 2015 14:08

程序员职业规划

程序员一直被认为是吃青春饭的职业,随着年龄的增长,程序员可能会受到知识结构陈旧、体力下降、分心家庭等各种原因的影响,逐渐在职场竞争中落于下风。有一点年纪的程序员都在思考:“我该何去何从?”

博客作者Oren Eini在他的最新文章分享了他对这个问题的看法。他认为,回答这个问题的关键不在于你能干什么,而在于你想干什么:

问问自己三年后想干什么。七年后呢?二十年后呢?

他把程序员的职业发展路线大致概括为四类,并一一予以剖析:

  • 专家型
  • 资历型

Atlassian峰会上的Git话题

摘要

本文是最近落幕的Atlassian峰会上关于Git的讨论的摘要。

正文

Git是那种很容易入门,却很难精通的工具。在刚刚落下帷幕的Atlassian峰会(译者注:Atlassian是一家企业软件公司,著名产品有项目跟踪软件JIRA和团队协同软件Confluence)上汇总的视频和幻灯片,无论对于新手还是专家来说,都是很好的学习Git的资源。

如果你还在挣扎着证明Git适用于你的组织或企业,那么Tim Petersen关于Git商用案例的话题就是你想要的。在讨论中他谈到了完全分布式的代码仓库相对于集中式的代码仓库(比如SVN)的不同之处。他也谈到了拉分支、代码审查、合入请求(pull request)等问题,以及这些技术如何紧密结合,构建一个持续但管控良好的发布流程。最后他辩称,不使用Git才是一种商业风险。

如何在 GitHub 创建一个“有人用”的项目

正文

近年来,GitHub的个人页面已经逐渐成为程序员的求职名片,它充分展示了程序员在笔试面试中很难展示的真正编程能力。甚至有企业在招聘广告中说,GitHub项目的星数只要达到一定数量,就免试录取。这也在一定程度上说明了问题——GitHub上的项目必须要有人用,才说明你做的软件是有价值的。那么去创建一个“有人用”的项目?来自纽约的Web开发者Barry Clark根据自己的经验给出了建议。

Barry Clark开发了Jekyll Now,很多人使用它在GitHub Pages上写博客。这个项目在GitHub上已经收到了1200多次fork。Barry Clark在自己的一篇博客总结了这个项目受欢迎的原因。

Clark认为首先要做用户需要的软件。Jekyll是GitHub Pages的后台博客引擎,但是它部署起来很复杂,使很多人望而却步。Clark抓住了用户的这个痛点,写了Jekyll Now。它大大地降低了使用Jekyll的门槛,用户不再需要使用晦涩的命令行工具来操作,也不再需要安装Ruby,Windows用户会感觉使用起来方便很多。

解决痛点“不需要打造一个完整的产品”,只要打造一个原型,足以让用户决定是否使用就可以了。然后尽快在同事、朋友中找一些长期受困于这个痛点的人试用,接受他们的反馈。当然,你是否能成功还是取决于用户是否会使用你的软件。

@kneep
kneep / ci.md
Last active August 29, 2015 14:07

另一种声音:持续集成已死

持续集成(Continuous Integration)一直被认为是敏捷开发的重要实践之一,但也有专业人士开始挑战这种观点。Yegor Bugayenko是teamed.io的联合创始人和CTO,他在最近的一篇博客中毫不客气地指出:“持续集成已死”。

持续集成的目的简单而明确。当有人向代码库的主分支提交代码的时候,后台的持续集成服务器会尝试去构建整个产品,包括编译、单元测试、集成测试、质量分析等等。结果只有两种:成功或失败。如果结果失败了,那就说明有人提交了对产品有害的代码。

单从技术上讲确实如此,但Bugayenko认为,从整个组织的角度来讲,这却是不合时宜的。他认为最大的问题在于:

如果构建失败,整个开发团队必须停下手里的工作,立刻修复他们的错误。

@kneep
kneep / redhat.md
Last active August 29, 2015 14:07

Red Hat Enterprise Linux 6.6发布

近日,业界领先的企业级Linux解决方案提供商Red Hat发布了其旗舰产品Red Hat Enterprise Linux的6.6版本。Red Hat在发布公告中说道:

无论你是使用裸机架构(bare metal)、构建虚拟基础设施(virtual infrastructure)或是利用开放的混合云(open hybrid cloud),Red Hat Enterprise Linux 6拥有增强的虚拟化技术、性能和系统管理工具,是部署和管理复杂的大型IT项目的不二选择。

Red Hat Enterprise Linux 6.6的亮点集中在以下三个方面:

  • 性能
  • 系统管理
  • 虚拟化

Visual Studio支持CMake语法高亮和智能代码补全

摘要

Visual Studio对新编程语言的支持是非常强大的,但很少有人有能力并下决心去利用这个平台。David Golub却是其中之一,他为Visual Studio带来了对CMake的支持。

正文

Visual Studio对新编程语言的支持是非常强大的,但很少有人有能力并下决心去利用这个平台。David Golub却是其中之一,他为Visual Studio带来了对CMake的支持。

Visual Studio的CMake工具功能包括:

  • CMake代码语法高亮

Shellshock漏洞证明是时候放弃CGI技术了

最近,被类UNIX系统广泛使用的Bash软件曝出了一系列已经存在数十年的漏洞(Shellshock),在业界引起了非常大的影响。不少Linux发行版本连夜发布了修复版本的Bash,在服务器领域占有不少份额的FreeBSD和NetBSD已经默认关闭了引起漏洞的功能。InfoQ也及时带来了关于Shellshock的详细报道

在这个漏洞的风波逐渐平息之余,不少业内人士也在思考,它为何波及如此之广,影响如此之大。InfoWorld的专栏作者Andrew C. Oliver在一篇文章中表达了自己看法,他认为CGI技术的普及是个错误,正是因为CGI技术的不合理之处,Shellshock才有机可乘。

CGI技术是Web技术刚兴起的时候发明的,它是最早的可以创建动态网页内容的技术之一。它会把一个HTTP请求转化为一次shell调用。而Shellshock的原理是利用了Bash在导入环境变量函数时候的漏洞,启动Bash的时候,它不但会导入这个函数,而且会误把函数定义后面的命令也执行一遍。在有些CGI脚本的设计中,数据是通过环境变量来传递的,这样就给了数据提供者利用Shellshock漏洞的机会。对此,Oliver抱怨道:

为什么有人会认为,通过HTTP请求给一个陌生人访问shell(哪怕是受限的)的机会是一个好主意呢?我不理解。

Oliver把CGI技术比作“上了膛的武器”,程序员必须非常谨慎地使用它,写出优秀的脚本。但在现代的商业实践中,雇佣优秀程序员已经不是一个必选项,大量的廉价程序员很多时候也能合力完成工作。能写出考虑周全的CGI脚本的人越来越少,这也使得CGI技术更不合时宜了。

ShellShock来袭——Bug背后的故事

摘要

最近曝出的Bash漏洞最初是利用了一个远程执行的缺陷,这个缺陷很快被修复,并且在正式宣布之前就被有责任感的人揭露出来了。然后,最早的补丁发布后,又有其他缺陷被发现,成为0day(译者注:尚无解决方法的漏洞)安全威胁。Shellshock到底有什么问题?它真的被修复了吗?InfoQ给您带来背后的故事。

正文

Bash软件中声名狼藉的bug,CVE-ID为CVE-2014-6271(译者注:CVE即Common Vulnerabilities and Exposures,这个系统为公开的信息安全漏洞提供参考信息),现在有了新的名字“ShellShock”(译者注:在英语中ShellShock是指弹震症,一种精神疾病,参考这里)。精心伪造的数据通过网络传到一台服务器上,直接或间接触发一个bash脚本,就可以远程执行恶意代码。最初的bug已经修复了,但引发了人们对Bash的解析程序可能产生0day漏洞的关切,随后又挖掘出了第二个漏洞CVE-2014-7169,这个漏洞也在前天得到了修复。但这种漏洞的根源到底是什么?同一类型的漏洞已经全部被消灭了吗?FreeBSD 和NetBSD已经默认关闭了自动导入函数的功能,以应对未来可能出现的漏洞。

这个问题的发生是因为Bash的一个功能(不是bug吗?),它允许在Bash的shell中使用环境变量来定义函数。函数的作用是把经常调用的代码封装起来,然后在其他地方复用,所有的shell脚本语言都有这个功能。Bash中函数的定义是这样的(大多数其他shell也是):

持续部署就意味着用户满意吗?

摘要

持续部署(continuous deployment)使企业能通过自动化的构建、测试和部署循环来快速交付高质量的软件。它使投资更容易得到回报,产品团队更早地得到用户反馈,也简化了部署流程。但从商业的角度看,持续部署也那么好吗?

正文

持续部署(continuous deployment)使企业能通过自动化的构建、测试和部署循环来快速交付高质量的软件。它使投资更容易得到回报,产品团队更早地得到用户反馈,也简化了部署流程。但从商业的角度看,持续部署也那么好吗?

Steve Blank是斯坦福大学的咨询副教授,他在他最近的博文中提到,从消费者的角度来讲,持续部署可能意味着不满意。