
四款后起编程语言能否成功挑战Python的王者地位
下面是Python的一些潜在的挑战者,并讨论了Python是如何保住它第一的席位的。

介绍Node.js Streams文件读写操作
Node.js 天生异步和事件驱动,非常适合处理 I/O 相关的任务。如果你在处理应用中 I/O 相关的操作,你可以利用 Node.js 中的流(stream)。因此,我们先具体看看流,理解一下它们是怎么简化 I/O 操作的吧。

阮一峰:谷歌的代码管理
最新一期的《ACM通信》(59卷第7期)有一篇论文《为什么 Google 要把几十亿行代码放在一个库?》,作者是谷歌基础设施小组的工程师,可以看作官方对这个问题的详细解答。我读后感到收获很大,下面就是摘录。

程序员为省点儿饭钱 黑进餐馆系统办了“永久饭票”
想知道“黑客”是怎么吃饭的吗?最近,南京秦淮警方抓获的一名“黑客”嫌疑人来告诉你。他在某餐馆办理一张储值卡后,便利用“黑客”技术侵入该餐馆系统,修改储值金额数据,将储值卡变成了一张“永久饭票”。而据该“黑客”交代,他这么做仅仅是为了省点伙食费。

程序员, 你过度封装了吗?
过度封装是程序员最容易犯的错, 因为是否过度并没有固定的数值标准, 只能是有经验的程序员基于科学的判断. 过度封装的危害十分严重, 所以必须重视, 并且极力避免.

Linux grep命令详解
Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,

手把手教你搞懂Android反编译
反编译别人的程序不是什么值得炫耀的事,希望大家最好只是兴趣探索,而不是利益驱动。本文主要目的是绕开一个简单的激活程序。

最牛华人“程序员”邵中,全世界程序员的命运都可能因他而变
看完这些你还敢说自己是个程序员吗?

Java究竟是不是纯种的面向对象?
但是在后来,我在互联网站上陆续看到不少开发者说 “Java 实际上不是纯粹的面向对象,因为并不是所有的东西在 Java 世界都是一个对象”。他们很多的论点都可以概括为以下两点:

一篇文章,掌握所有开源数据库的现状
本次分享聚焦于数据库既结构化数据存储 OLTP 及 NoSQL 领域,不会涉及 OLAP、对象存储、分布式文件系统。

详解MySQL调优指令 explain
在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快。如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择。

好代码如白居易的诗:老妪能解
bug少、性能好、易修改。好的代码有着很高的影响力,能否写出这样的代码,正是评判一位开发人员是否优秀的标准。然而,虽然代码的质量很重要,但是新入行的开发人员往往感觉心有余而力不足。

红黑树算法探索笔记
最近花了些时间重拾数据结构的基础知识,先尝试了红黑树,花了大半个月的时间研究其原理和实现,下面是学习到的知识和一些笔记的分享。望各位多多指教。本次代码的实现请点击:红黑树实现代码 – gist

何为软件即服务(SaaS)?
通俗易懂地解释了 Software-as-a-Service (SaaS) 商业模式。这种商业模式的优缺点,如果你要购买 SaaS 网站该注意哪些地方,如果你要卖你的 SaaS 网站又该注意些什么?

我是如何面试WEB前端开发人员的
作者先后在twitter,Stripe工作,期间会参加面试工作。实际上参加面试工作的人都知道要想在一个较短的时间内(30min-1h)就对一个应聘者做出判断其实是很难的,因此我们不得不想尽办法去更加合理的去判断面试者。下面是作者理出的一个思路:

让你的代码更健壮的诀窍
遗留代码最常见的问题就是脆弱性。团队如要修改脆弱的代码库,必定伴随着巨大的痛楚。在我们 ThoughtWorks 开发产品的 10 年里,当我们年复一年地尽量保持庞大代码库的延展性时,学到了一些惨痛的教训。我想在本文分享我们从最大挑战中吸取的教训。

程序员,你会从 Bug 中学习么?
Bug 是绝佳的学习机会。所以我们怎样尽可能多地从修复的 bug 中吸取经验?我至今已经用了 13 年的一个方法是,写下这个 bug 的简单描述、修复方法以及吸取的经验。遥想 2002 年,我偶然发现一篇描述这个方法的博客(很不幸,我没再找到)。我从那时起就使用这个方法了,并且相信它能帮助我成为一个更出色的程序员。

为什么谷歌将数十亿行代码储存在单一代码库中?
来自 Google 的大规模代码管理的经验之谈。monolithic repo 便于代码复用,公司范围内不同团队的人都能方便地学习以及改动所有代码,尤其是改动不同平台的代码,一个 commit 就搞定了。除了 Android 等开源项目外,Google 内大部分代码都在同一个 repo 中。这个 repo 的代码有 86 TB 之大,20 亿行源代码,共 3500 万个 commits;25000 个工程师都能访问大部分代码(除了排序算法之类的商业机密外)。

为什么敏捷开发在亚洲实行不了
亚洲人习惯于和自己的伙伴保持和谐的关系,避免冲突,这就影响了亚洲的敏捷小组在从事敏捷开发时的工作方式,包括迭代计划、迭代回顾及日常敏捷工作等。据Partogi说,人们习惯于保留意见,因为他们无法适应一个他们可能会犯错误的环境,即使在这样的环境下犯错误也无所谓。

微软说它深爱着Linux,现在它用行动证明了
昨日清晨,微软在Red Hat DevNation大会上正式发布了.NET Core以及ASP.NET Core 1.0,并提供了下载,其不仅能在Windows操作系统上运行,还能在Linux和Mac OS X操作系统上运行

30分钟学会使用Git
这是一篇给像我这样的新手或者是熟悉图形工具的老鸟看的。仅作为快速入门的教程。

在软件开发团队里如何打口水仗
开发软件是一个非常情绪化的工作,团队中的每一个人都希望这个软件可以获得成功,而有的时候这种情绪会在团队中制造紧张气氛。软件团队中流行着这样一句话:“你必须要挑选你自己的战斗。”那么问题来了,如何做这样的决定?你要跟谁干仗?

如何给变量取个简短且无歧义的名字
湾区日报上分享的一篇文章,文章的作者在Google设计Dart语言,就变量命名方面给了4点建议,文中也列出了好变量名、坏变量名的对比。不管作者的看法与你实际中的命名习惯是否一致,看完这篇文章,相信可以在变量命名方面有一些新的思考。

黑客是如何玩死微信聊天机器人的
微信作为时下最in最热的移动端即时通讯App,把我们的工作和生活紧密联系到了一起。一个脑洞大开的程序猿写了用开源程序改了一个微信聊天机器人,并且在不断调试中给它赋予了n多好玩的功能譬如防撤回信息之类。然后好死不死他在号称白帽黑客欢喜地的 “i春秋-信息安全魔法学院”微信群中做机器人的调试,于是分分钟被凶残的坏蛋们玩坏,这个小程序猿也被微信封号处理,结果顽强不息的程序员为了突破微信封锁又做了很多逗逼尝试……

职人介绍所:年薪不过百万就不是好程序员?
好多人一直在问我们,你们什么时候访谈程序员什么时候访谈程序员什么时候访谈程序员?程序员这就来了。这期《职人介绍所》中,我们请到了不论是技术水平还是名气(也许包括薪水)都在业界名列前茅的@winter 和@赵劼。