月度归档: 2016 年 6 月
红黑树算法探索笔记

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

女程序员在互联网界到底有没有被歧视?

翻开科技界的历史,我们惊奇地发现女性在其中的地位和能力从来不亚于男性,然而随着时代的发展,不知从何时起,我们越来越少地听到女性在科技圈中的发声,却越来越多听到对她们的负面评价:代码水平不高、抗压能力差、很难独当一面等。有些企业在招聘技术人才时甚至暗文规定:不招女程序员,或者给她们开出更低的薪资。

为什么Go是一种设计糟糕的编程语言

好吧,我承认这个标题有点放肆。我多告诉你一点:我爱肆意妄言的标题,它能够吸引注意力。不管怎样,在这篇博文中我会试图证明 Go 是一个设计得很糟糕的语言(剧透:事实上它是)。

关于如何学习的二八法则

苏伽特·米特拉是一位杰出的教育领袖,但是他搞错了一件事情。他认为我们无需劳神记住那些事实性知识,因为当我们需要时,我们可以利用 Google。实际上,背记事实性知识特别关键。保存在你记忆中的事实性知识可以帮助你解决问题

程序员的生存技巧——搜索技巧

人人都可以接触到海量的信息,那么衡量信息财富多寡就只剩下技巧这惟一的标准了:善用搜索引擎的都是信息时代的富翁,不懂搜索引擎的都是信息时代的负翁。

为什么程序员都喜欢上StackOverflow?

作为一名程序员,如果没有听过 Stackoverflow,那么你最好去面壁思过一下。程序员最需要阅读的一本编程书籍(其实编程书留下这本就够了!):

程序员的生存环境和代码的生存环境

微观代码环境 这个是最直接的,每天都在做各种业务的支持,写各种代码亦或是抄各种代码。你有没有在不经意间思考这么个问题,你所产生的代码如果能思考,它会怎么看那些 跟他在同一个文件中的其他代码?另外一个问题是这个模块中有那么多代码,为什么你改掉了别人之前写的代码,而放下你的代码?你的代码可能会在什么样的场景 下被别人修改?

那些零基础转行做程序员的人是如何拿高薪的

除非天赋异禀骨骼惊奇,不然不要指望入行就有 20 K 月薪!或许在大公司,顶级学校,和突出的个人技术水平会有这样的待遇。但对于转行者来说,达到这个水平至少也要 3 – 5 年的时间。

为什么结对编程并不那么受欢迎?

是什么原因导致他们不采用结对编程呢?在我个人的经验当中,采用结对编程和协作仍有许多障碍。许多团队合作(cooperate)的很好,但实际上并不是协作(collaborate)。因为协作基于信任,它是结对编程的关键环节之一。

一位编程老手13年来处理棘手bug的18个心得

我在《从你的bug总结经验教训》一文中写道,我一直在如何跟踪遇到的最有意思的bug。我最近回顾了全部194个bug(时间跨度达13年),看看从中学到了什么经验教训。下面是最重要的几个经验教训,分为编码、测试和调试这三大类:

如何不用那么担心成为一个坏程序员

我无意中发现了“冒充者综合征”的另一种表现形式,总是质疑“我是一个真正的开发者吗,或只是一个善于网络搜索的代码搬运工?”我看到的答案忽略了要点,因此我打算接下这个烂摊子,好好解说一下,因为太多人都有着这种担忧。

程序员编程的 7 + 1 条小贴士

这篇文章我已经构思了几个星期了,现在决定发表出来。请享用!

HBO热播剧《硅谷》里的人物原型是哪些大咖?

美国HBO电视网的热播剧《硅谷》 (Silicon Valley)让我们领略了真实科技从业者的成功和失败以及他们的放荡生活。这部热播剧非常真实,以至于“阅后即焚”照片分享应用Snapchat的 CEO伊万?斯皮格尔(Evan Spiegel)曾惊呼,它“基本上是一部纪录片”。本月初,《硅谷》超级粉丝和科技顾问雷克斯?索格茨(Rex Sorgatz)将《硅谷》中的人物与真实科技行业中的人物一一对应了起来。我们结合索格茨的研究、我们自己的观察以及网络评论整理出了下面的对应关系。
