Stack的三种含义
学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈"。 理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分。 含义一:数据结构 stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。...
View Article朴素贝叶斯分类器的应用
生活中很多场合需要用到分类,比如新闻分类、病人分类等等。 本文介绍朴素贝叶斯分类器(Naive Bayes classifier),它是一种简单有效的常用分类算法。 一、病人分类的例子 让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难。 某个医院早上收了六个门诊病人,如下表。 症状 职业 疾病 打喷嚏 护士 感冒 打喷嚏 农夫 过敏 头痛 建筑工人...
View ArticlePostgreSQL新手入门
自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选。 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手。以下内容基于Debian操作系统,其他操作系统实在没有精力兼顾,但是大部分内容应该普遍适用。 一、安装 首先,安装PostgreSQL客户端。 sudo apt-get install postgresql-client...
View Article技术有什么未来?
今天是2014年的第一天,整个白天,我都关在屋里写东西。 晚餐后,我想出门走走,不知不觉来到热闹的商业区。 大商场正在跨年促销,"满500送300券"。据说从昨天早上开始,已经连着搞了36个小时。我到的时候,所有的专柜都像被洗劫过一样,收银台前还是排着长长的人龙。 正当我对人民的消费热情惊叹不已的时候,就在商场楼下的人行道上,看到了一个新玩意。 原来这是一台大型的户外移动广告播放平台。...
View Article浙江温州的鲸鲨屠宰场
除夕夜,我收到英国摄影师Alex Hofford的邮件,他想让我帮忙曝光一件事。 几年前,我转载过他在宁波拍的《熔模铸造》系列图片,就这样认识了。后来,他和另一个摄影师Paul Hilton,在香港发起了野生动物保护组织Wildlife Risk 。 这一次,他们发现浙江省温州市有一个世界最大的鲸鲨屠宰场。 下面是维基百科对"鲸鲨"的介绍。 "鲸鲨(学名:Rhincodon...
View ArticleSSL/TLS协议运行机制的概述
互联网的通信安全,建立在SSL/TLS协议之上。 本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解这方面的内容,请参阅RFC文档。 一、作用 不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。 (1) 窃听风险(eavesdropping):第三方可以获知通信内容。 (2)...
View ArticleCSS动画简介
现在,我很少写介绍CSS的文章,因为感觉网站开发的关键还是在服务器端。 但是,CSS动画除外,它实在太有用了。 本文介绍CSS动画的两大组成部分:transition和animation。我不打算给出每一条属性的详尽介绍,那样可以写一本书。这篇文章只是一个简介,帮助初学者了解全貌,同时又是一个快速指南,当你想不起某一个用法的时候,能够快速地找到提示。 我的主要参考资料是,2013年10月,Lea...
View ArticleLinux服务器的初步配置流程
开发网站的时候,常常需要自己配置Linux服务器。 本文记录配置Linux服务器的初步流程,也就是系统安装完成后,下一步要做的事情。这主要是我自己的总结和备忘,如果有遗漏,欢迎大家补充。 下面的操作针对Debian/Ubuntu系统,其他Linux系统也类似,就是部分命令稍有不同。 第一步:root用户登录 首先,使用root用户登录远程主机(假定IP地址是128.199.209.242)。 ssh...
View Articleundefined与null的区别
大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的none,Ruby语言的nil。 有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null。这是为什么? 一、相似性 在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别。 var a = undefined;...
View Article《ECMAScript 6入门》上线了
过去的一个月,我写了一本书《ECMAScript 6入门》,今天上线了。 网址:es6.ruanyifeng.com ES6是JavaScript语言的下一个版本,预计将在2014年底正式发布。它对JavaScript做了大量改造,提高了灵活性和应用性,使得这门语言真正成为了企业级开发工具。...
View Article理解OAuth 2.0
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。 一、应用场景 为了理解OAuth的适用场合,让我举一个假设的例子。...
View ArticleRESTful API 设计指南
网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备......)。 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"API First"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。我以前写过一篇《理解RESTful架构》,探讨如何理解这个概念。...
View Article我的博客文集上架了!
这个博客写了十年,累积了1000多篇文章。 我一直想整理一本文集,这个月终于完成了。 书名叫做《如何变得有思想?》,电子版已经上架了。目前有两个版本。 (1)百度阅读:浏览器阅读体验较好。 (2)图灵社区(上册,下册):EPUB、MOBI、PDF格式下载。 十年(2004-2013)的思想漫游,100篇精华文章,20万字,只售15元!...
View ArticleGit远程操作详解
Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能。 Git有很多优势,其中之一就是远程操作非常简便。本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作。 git clone git remote git fetch git pull git push...
View ArticleAirbnb与创投
最近,网上有一篇文章《黑暗创投圈》引起了争论,新浪科技的杜丹编辑向我约稿,谈谈对它的看法。 那篇文章抨击了国内创投圈的乱象,感慨国内缺乏导师型的创投,多的是职业投资人出身的创投。这导致了一方面,投资人像评估银行贷款一样地评估创业项目;另一方面,创业者日益重视项目的包装和概念,而忽视"内功"。...
View Article数据库的最简单实现
所有应用软件之中,数据库可能是最复杂的。 MySQL的手册有3000多页,PostgreSQL的手册有2000多页,Oracle的手册更是比它们相加还要厚。 但是,自己写一个最简单的数据库,做起来并不难。Reddit上面有一个帖子,只用了几百个字,就把原理讲清楚了。下面是我根据这个帖子整理的内容。 一、数据以文本形式保存 第一步,就是将所要保存的数据,写入文本文件。这个文本文件就是你的数据库。...
View Article中文字体网页开发指南
字体的选择,是网页开发的关键因素之一。 合适的字体,对网页的美观度(或可读性)有着举足轻重的影响。 但是,相比英文字体,中文字体的网页开发有着极大的局限性。因为,一套中文字体最少也要有几千个字符,体积为几个MB;单单为了浏览网页,开发者不可能让用户去下载字体,只能依靠操作系统的预装字体。(*注:确实有网站提供中文字体的web服务,从技术角度,我不推荐这样做。)...
View Article数据压缩与信息熵
1992年,美国佐治亚州的WEB Technology公司,宣布做出了重大的技术突破。 该公司的DataFiles/16软件,号称可以将任意大于64KB的文件,压缩为原始大小的16分之一。业界议论纷纷,如果消息属实,无异于压缩技术的革命。 许多专家还没有看到软件,就断言这是不可能的。因为根据压缩原理,你不可能将任意文件压缩到16分之一。事实上,有一些文件是无法压缩的,哪怕一个二进制位,都压缩不掉。...
View Article前端模块管理器简介
模块化结构已经成为网站开发的主流。 制作网站的主要工作,不再是自己编写各种功能,而是如何将各种不同的模块组合在一起。 浏览器本身并不提供模块管理的机制,为了调用各个模块,有时不得不在网页中,加入一大堆script标签。这样就使得网页体积臃肿,难以维护,还产生大量的HTTP请求,拖慢显示速度,影响用户体验。 为了解决这个问题,前端的模块管理器(package...
View Article图解SSL/TLS协议
本周,CloudFlare宣布,开始提供Keyless服务,即你把网站放到它们的CDN上,不用提供自己的私钥,也能使用SSL加密链接。 我看了CloudFlare的说明(这里和这里),突然意识到这是绝好的例子,可以用来说明SSL/TLS协议的运行机制。它配有插图,很容易看懂。 下面,我就用这些图片作为例子,配合我半年前写的《SSL/TLS协议运行机制的概述》,来解释SSL协议。...
View Article