Posts
傻瓜函数式编程
· ☕ 38 分钟

2006年6月19日,星期一

开篇

我们这些码农做事都是很拖拉的。每天例行报到后,先来点咖啡,看看邮件还有RSS订阅的文章。然后翻翻新闻还有那些技术网站上的更新,再过一遍编程论坛口水区里那些无聊的论战。最后从头把这些再看一次以免错过什么精彩的内容。然后就可以吃午饭了。饭饱过后,回来盯着IDE发一会呆,再看看邮箱,再去搞杯咖啡。光阴似箭,可以回家了……


一对一教学计划
· ☕ 4 分钟

开展计算机科学基础课程两个星期了,我终于可以相信,最初的目标“零基础教育”是一个正确的出发点。不仅因为它能检验我自己的学识和教学方法,而且因为零基础的人似乎更容易学会正确而干净的知识。

这一期课程的成员来自中国大陆,香港,台湾,具有各种各样的背景。有些同学完全没有理科背景,没上过大学,还有的完全是出于兴趣。他们短短两个星期以来的表现,思考问题的角度和深度,学习的态度和动力,让我惊讶又欣慰。每当看到他们的进步,我就觉得这一切的辛苦都是值得的。我正在改变一些人的人生。


git cherry-pick 教程
· ☕ 4 分钟

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。

这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并(git merge)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。


函数式编程初探
· ☕ 7 分钟

诞生50多年之后,函数式编程(functional programming)开始获得越来越多的关注。

不仅最古老的函数式语言Lisp重获青春,而且新的函数式语言层出不穷,比如Erlang、clojure、Scala、F#等等。目前最当红的Python、Ruby、Javascript,对函数式编程的支持都很强,就连老牌的面向对象的Java、面向过程的PHP,都忙不迭地加入对匿名函数的支持。越来越多的迹象表明,函数式编程已经不再是学术界的最爱,开始大踏步地在业界投入实用。


查找并修复页面意外的overflow
· ☕ 1 分钟

响应式网站设计切换不同尺寸后偶尔会出现页面内容比屏幕要宽面导致出现横向滚动条。这里有个脚本可以方便的检测哪个元素超出了屏幕:

var docWidth = document.documentElement.offsetWidth;

[].forEach.call(
  document.querySelectorAll('*'),
  function(el) {
    if (el.offsetWidth > docWidth) {
      console.log(el);
    }
  }
);

找到元素后,修改适配即可。


家用游戏机的历史:世嘉、任天堂和 PlayStation 的故事
· ☕ 14 分钟

今年是电子游戏业很重要的一年,下一代游戏主机 PlayStation 5 和 Xbox Series X 都将发布。

这件事有多重要,就这么说吧,大家都觉得,电影业很庞大,对不对?但是,你可能不知道,2019年全国电影总票房,只有全国游戏收入的五分之一!


如何选择开源许可证?
· ☕ 1 分钟

如何为代码选择开源许可证,这是一个问题。

世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种—-GPLBSDMITMozillaApacheLGPL-—之中做选择,也很复杂。

乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。