学习函数式编程,必须掌握很多术语,否则根本看不懂文档。 本文介绍两个基本术语:reduce和transduce。它们非常重要,也非常有用。 一、reduce 的用法 reduce是一种数组运算,通常用于将数组的所有成员"累积"为一个值。 var arr = [1, 2
今天,我想写一个"低技术"问题。 话说我订阅了不少了新闻邮件(Newsletter),比如JavaScript Weekly。每周收到一封邮件,了解本周的大事。 有一天,我就在想,是不是我也能做一个这样的邮件? 然后,就发现这事不那么容易。抛开后台和编
本文要回答一个很重要的问题:函数式编程有什么用? 目前,主流的编程语言都不是函数式的,已经能够满足需求。为何还要学函数式编程呢,只为了多理解一些新奇的概念? 一个网友说: "函数式编程有什么优势呢?" "我感觉,这种写法可能会
HTML代码写起来很费事,因为它的标签多。 一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容。还有一种就是我今天想要介绍的方法----简写法。 常用的简写法,目前主要是Emmet和Haml两种,本文都将加以介绍。 这两种简写法,
学习函数式编程的过程中,我接触到了 Ramda.js。 我发现,这是一个很重要的库,提供了许多有用的方法,每个 JavaScript 程序员都应该掌握这个工具。 你可能会问,Underscore 和 Lodash 已经这么流行了,为什么还要学习好像雷同的 Ramda
一、自由软件基金会的呼吁 上周,2012年将近结束的时候,自由软件基金会(FSF)发出呼吁,要求人们继续支持反Secure Boot垄断,希望签名者能达到5万人(目前是4万)。 我觉得,这个呼吁很重要。如果我们不支持,未来就无法自由地使用硬件
我现在的技术方向,前端是 React,后端是 Node,时间都投入在这两方面。 最近有一种感觉,我可以融汇贯通了,使用 JavaScript 全栈解决各种问题。 最初,我只是想整理一份技术清单,理清思路。但是内容越写越多,索性就做成一个教程,放
1. Kyle Rush是一个网站工程师。 2011年6月,他加入BarackObama.com,负责设计2012美国大选的奥巴马官网。 (图为2011年6月的奥巴马官网) 除了宣传,官网的主要目的就是筹款。 上一次大选,奥巴马筹到了6.9亿美元。这是一个很大的数字,
几个月前,我介绍了Sass的用法。 Sass是一种"CSS预处理器",可以让CSS的开发变得简单和可维护。但是,只有搭配Compass,它才能显出真正的威力。 本文介绍Compass的用法。毫不夸张地说,学会了Compass,你的CSS开发效率会上一个台阶。 本
网页开发时,常常需要了解某个元素是否进入了"视口"(viewport),即用户能不能看到它。 上图的绿色方块不断滚动,顶部会提示它的可见性。 传统的实现方法是,监听到scroll事件后,调用目标元素(绿色方块)的getBoundingClientRect()方
Node 开发离不开 npm,而脚本功能是 npm 最强大、最常用的功能之一。 本文介绍如何使用 npm 脚本(npm scripts)。 一、什么是 npm 脚本? npm 允许在package.json文件里面,使用scripts字段定义脚本命令。 { // ... "scripts": {
长假期间,我写了一个小程序,现在正式发布。 大家用不用Google日历? 它可以用来规划日程、记录事项、甚至写日记,既安全(数据保存在Google的机房)又方便(各种平台都能访问),甚至还很贴心地提供手机同步和免费短信提醒。 相信很多
上周中秋节,我待在家里,写完了 Redux 教程。 至此,《React 技术栈系列教程》算是比较完整了。 ES6 语法:教程 Babel:教程 React:教程,示例库 Webpack:教程 React 项目脚手架:代码库 Flex 布局:教程,示例 CSS Modules:教程,示
大部分网站,都要求用户登录。 常见的做法,是让用户注册一个账户。 这种做法并不让人满意。 对于用户来说,每个网站必须记住一个密码,非常麻烦;对于开发者来说,必须承担保护密码的责任,一旦密码泄漏,对网站的业务和信誉都是巨大打
前两篇教程介绍了 Redux 的基本用法和异步操作,今天是最后一部分,介绍如何在 React 项目中使用 Redux。 为了方便使用,Redux 的作者封装了一个 React 专用的库 React-Redux,本文主要介绍它。 这个库是可以选用的。实际项目中,你应该
diff是Unix系统的一个很重要的工具程序。 它用来比较两个文本文件的差异,是代码版本管理的基石之一。你在命令行下,输入: $ diff <变动前的文件> <变动后的文件> diff就会告诉你,这两个文件有何差异。它的显示结果不太好懂,下面
上一篇文章,我介绍了 Redux 的基本做法:用户发出 Action,Reducer 函数算出新的 State,View 重新渲染。 但是,一个关键问题没有解决:异步操作怎么办?Action 发出以后,Reducer 立即算出 State,这叫做同步;Action 发出以后,过一段
喜欢写Blog的人,会经历三个阶段。 第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写。 第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客。 第三阶段,觉得独立博客的管理太麻烦,最好在保
一年半前,我写了《React 入门实例教程》,介绍了 React 的基本用法。 React 只是 DOM 的一个抽象层,并不是 Web 应用的完整解决方案。有两个方面,它没涉及。 代码结构 组件之间的通信 对于大型的复杂应用来说,这两方面恰恰是最关键的
如果你严肃对待编程,就必定会使用"版本管理系统"(Version Control System)。 眼下最流行的"版本管理系统",非Git莫属。 相比同类软件,Git有很多优点。其中很显著的一点,就是版本的分支(branch)和合并(merge)十分方便。有些传统
真正学会 React 是一个漫长的过程。 你会发现,它不是一个库,也不是一个框架,而是一个庞大的体系。想要发挥它的威力,整个技术栈都要配合它改造。你要学习一整套解决方案,从后端到前端,都是全新的做法。 举例来说,React 不使用 HTML
学过CSS的人都知道,它不是一种编程语言。 你可以用它开发网页样式,但是没法用它编程。也就是说,CSS基本上是设计师的工具,不是程序员的工具。在程序员眼里,CSS是一件很麻烦的东西。它没有变量,也没有条件语句,只是一行行单纯的描述
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。 本文详细介绍CORS的内部机制。 (图片说明:摄于阿联酋艾因(Al
随着3G的普及,越来越多的人使用手机上网。 移动设备正超过桌面设备,成为访问互联网的最常见终端。于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 手机的屏幕比较小,宽度通常在600像素以下;PC的屏
浏览器安全的基石是"同源政策"(same-origin policy)。很多开发者都知道这一点,但了解得不全面。 本文详细介绍"同源政策"的各个方面,以及如何规避它。 一、概述 1.1 含义 1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览
国内的微博服务之中,新浪和腾讯的市场份额最大。 但是,它们的平台比较封闭,不提供Feed输出,而且存在强行删除用户发言、关闭用户帐号的情况。所以,我一直以来都使用Twitter。 Twitter属于墙外网站,墙内的大部分用户看不到。春节假期
前面的文章介绍了 Systemd 的操作命令和基本用法,今天给出一个实例,如何使用 Systemd 启动一个 Node 应用。 本文是独立的,不需要前面的教程作为预备知识。 一、克隆代码 首先,下载示例库。 $ git clone https://github.com/ruanyf/n
去年一年,我写了将近100篇网络日志。 现在这一年结束了,我要统计"访问量排名",看看哪些文章最受欢迎。(隆重预告:本文结尾处将揭晓前5名。) 以往,我用的是AWStats日志分析软件。它可以生成很详细的报表,但是不太容易定制,得不到
越来越多的人,使用React开发Web应用。它的测试就成了一个大问题。 React的组件结构和JSX语法,不适用传统的测试工具,必须有新的测试方法和工具。 本文总结目前React测试的基本做法和最佳实践,手把手教你如何写React测试。 一、Demo应
我的C语言是自学的,这些年看过不少教材。 下面,我对其中一些教材做个点评。 1. How to Think Like a Computer Scientist: C version 这是我读过最易懂的C语言教材。 虽然它只讲解最基本的语法,但是写得特别好懂,深入浅出,读起来不觉
(说明:本文选自我的新书《ES6 标准入门(第二版)》的第一章《ECMAScript 6简介》) Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。 这意味着,你可以现在就用 ES6 编写程序,而不用担心现有环境是否支
越来越多的人开始意识到,网站即软件,而且是一种新型的软件。 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。 网站开发,完全可以采用软件开发的模式。但是
npm 是 Node 的模块管理器,功能极其强大。它是 Node 获得成功的重要原因之一。 正因为有了npm,我们只要一行命令,就能安装别人写好的模块 。 $ npm install 本文介绍 npm 模块安装机制的细节,以及如何解决安装速度慢的问题。 一、
我一向以为,curl只是一个编程用的函数库。 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法。 =================================== curl网站开发指南 期权记 整理 curl是一种命令行工具,作用是发出
如果你经常看这个博客,就会知道我写了一本书。 现在第二版问世了,书名为《ES6 标准入门》。 购买链接如下。全部是现货。现在下单,最快明天就能拿到。 京东 当当 亚马逊 China-pub 老读者都知道,这本书是开源的。你可以先看看,再决定
过去一年中,前端技术大发展,最耀眼的明星就是React。 React 本身只涉及UI层,如果搭建大型应用,必须搭配一个前端框架。也就是说,你至少要学两样东西,才能基本满足需要:React + 前端框架。 Facebook官方使用的是 Flux 框架。本文就
2007年6月,三个美国年轻人决定成立一家新型的网络主机公司。 他们----James Lindenbaum,Adam Wiggins和Orion Henry----认为,现在的主机服务太复杂,无法做到"快速搭建,灵活扩展"。 在他们心目中,下一代主机应该提供对程序员非常友好
美国程序员Jon Scott Stevens,公布了他的创业公司所使用的开发工具清单。 他的语言平台是Java,开发项目是一个网站(还未上线)。所用到的工具都是开源的,可以免费得到。 在目前的创业者之中,用Java作为网站开发语言的人似乎很少。这
Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用。 所谓"测试框架",就是运行测试的工具。通过它,可以为JavaScript应用添加测试,从而保证代码的质量。 本文全面介绍如何使用Moc
如今,很多网站提供短网址服务。 但是有时候,我们需要知道真实网址是什么。 一个个点击,实在太麻烦。何况在国内,很多网址是点不开的。 我一直希望,有人做一个通用接口,提供所有短网址的还原服务。现在,这样的服务终于出现了,它就
一、概述 规格文件(specification)是计算机语言的官方标准,详细描述语法规则和实现方法。 一般来说,没有必要阅读规格,除非你要写编译器。因为规格写得非常抽象和精炼,又缺乏实例,不容易理解,而且对于解决实际的应用问题,帮助不
如何为代码选择开源许可证,这是一个问题。 世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,也很复杂。 乌克兰程序员Paul Bagwell,画了一
两周前,云存储网站Dropbox宣布,用户总数达到了2500万。 这个数字令人印象深刻,因为一年半前,它的用户总数已经是300万了。短短18个月,在一个这样大的基数上,继续扩张八倍多,真可谓势头惊人。 惊叹之余,许多人很好奇,Dropbox到底
两周前,《ECMAScript国际标准(第6版)》正式通过,下一代 JavaScript 语言定案。 ECMAScript 6(以下简称 ES6)总共新增了20多项重大的语言特性。各种浏览器和 Node.js 都积极支持,但还有不少功能没实现。 上个周末,我读到了 Kyle Si
去年9月,twitter改版。 一个显著变化,就是URL加入了"#!"符号。比如,改版前的用户主页网址为 http://twitter.com/username 改版后,就变成了 http://twitter.com/#!/username 在我印象中,这是主流网站第一次将"#"大规模用于直
测试的时候,我们常常关心,是否所有代码都测试到了。 这个指标就叫做"代码覆盖率"(code coverage)。它有四个测量维度。 行覆盖率(line coverage):是否每一行都执行了? 函数覆盖率(function coverage):是否每个函数都调用了?
开发网页的时候,往往需要观察HTTP通信。 我使用的工具主要有两个,在Firefox中是Firebug,在IE中是Fiddler。但是,一直听别人说,付费软件HttpWatch是这方面最好的工具。 前几天,HttpWatch的官方网志刊登了一篇好文章,澄清了一些HTTPS
一种编程语言是否易用,很大程度上,取决于开发命令行程序的能力。 Node.js 作为目前最热门的开发工具之一,怎样使用它开发命令行程序,是 Web 开发者应该掌握的技能。 最近,Npm的网志有一组系列文章,我觉得写得非常好。下面就是我在它