读过很多代码,却依然写不好的 - JavaScript 是与非

JavaScript 语法简单,很多人都是上来看个例子就写,边搜索边写。所以很多基本的东西反而不是很了解。这里总结了一些东西希望有帮助。 变量名 变量名只能以字母和$_两个字符起始,非首字符还可以是数字。虽然变量名可以使用其他 unicode 字符,但是最好不要这么做。巨坑。 在引入了 ES6 之后,这个问题变得更为复杂了,具体可以看这里 https://mathiasbynens.be/notes/javascript-identifiers-es6 所以最好不要使用保留字和非字母、 »

MongoDB 使用入门

MongoDB 基本上可以算是 Node.js 的缺省数据库。好多主流框架都用它,比如 Mean.io (Mean.js), Meteor, Keystone 等等。(如果要了解其他的存储方式,可以看这里 http://jinglei.me/chang-yong-shu-ju-ku-xuan-yonglo 怎样安装就不介绍了,网上文档很多。这里主要介绍如何使用的基本知识。 为什么要 NoSQL 相比较 »

JavaScript 正则表达式简介

正则表达式是一种广泛使用的代码黑魔法。一连串外星语似的符号突兀地出现在代码里,时间长了连作者自己都看不懂。所以正则表达式一定要有注释。 正则表达式的好处就是异常简洁。其他方式,比如使用 if else, switch 等来做字符串解析的几十行代码,利用正则表达式一行就能搞定。譬如 function isZipCode(candidate){ return /^\d{5}-\d{4}$/.test(candidate); } 检测所有类似 12345-6789 »

Node.js 数据存储方式的选择

如何为你的 Node.js 应用挑选数据库 Node.js 应用一般有三种方式保存数据。 不使用任何数据库管理系统(DBMS),把数据保存在内存里或直接使用文件系统。 使用关系数据库。例如 MySQL, PostgreSQL. 使用非关系数据库。例如 Redis,MongoDB,CouchDB, PouchDB 无服务器数据存储 (Serverless Data Storage) 从管理上来说,第一种方式是最方便易用的。 »

函数原型 ( Function Prototype)

我发现在 JavaScript 里如果非要用类 class,对象 object,实例 instance 来描述面向对象概念的话,很容易搞混。比如 obj instanceof Constructor, 我们可以说 “这个对象是那个构造函数的一个实例” 吗?感觉怪怪的。 还有在某些开发语言语境里,对象有点像类,是个抽象概念,而在 JavaScript 里,对象就是实例,实实在在位于内存的某个位置。 »

OpenCV + Swift in XCode

TL;DR Then just hit this Github repo and read the code directly. But you need the header and dylibs to run it. Recently, I need »

闭包 (Closure)

我看到真正将闭包讲得很清楚的两篇文章: http://www.html-js.com/article/1746 http://www.html-js.com/article/Fine-blind-ponder 最重要的就是运行函数在作用域链里往上(global)追溯变量值的行为。一直追逐到全局变量。所以才有都是循环的最后一个值;把循环的值传递到 closure 里就能起到循环的作用。closure 帮助记忆状态。 关于闭包,阮一峰的这篇文章 写得比较清晰易懂。 »

JavaScript 函数的应用

匿名函数 通常如果我们希望创建一个函数留着以后使用,可以利用匿名函数。 匿名函数可以赋值给一个变量,也可以作为对象的方法,或者用作回调函数。 注意:有些人可能认为在对象里的匿名函数有属性名就是给了这个匿名函数一个名字。这种想法是不正确的。例如: var obj = { func: function(){ } } func 是属性的名字,不是函数本身。你如果使用 console.log( obj.func.name ) 查看,会发现返回的是空字符串。 为减少不必要的函数名污染全局变量, »

密码保存

网络应用开发,或多或少都会涉及到用户密码的保存。这里主要介绍一下密码保存的基本常识。希望给平时不太接触这些的人提供一点参考。 明文保存 新手最容易犯的错误就是保存明文密码。 所谓的明文就是不经过任何加密,用户输入什么就在自己服务器的数据库里保存什么。这种错误发生过很多,比较有名的是 CSDN 明文口令泄露事件。这样做的最大坏处是很多用户喜欢使用同样的用户名,比如自己的email 地址,和同样的密码来登录不同的网站。这样一旦泄露,用户的其他网络账号就受到威胁,不得不更改密码。 不过,谷歌的 Chrome 是用明文来保存用户在各个网站的密码。如果你让 Chrome 记住你的密码, »

函数基础。为什么说函数是 JavaScript 世界的第一公民

一些使用 JavaScript 函数的基本注意事项,主要是 Secrets of the JavaScript Ninja 第三章的小结。适合有其他语言编程经验的人阅读。 要想真正掌握 JavaScript 编程,必须把 JavaScript 作为一种函数式编程语言来理解。 函数是 JavaScript 世界的第一类对象(first-class object)。所有对象(object)有如下功能: 可以通过字面量( »

KeystoneJS 在 Raspberry Pi 上登录太慢的解决方法

最近我成功地把一个 KeystoneJS 应用装在了一个 Raspberry Pi Model B 上,系统是用的 Raspbian Wheezy 2014-09-09. 速度其实还不错,如果用户较少的话普通用用没有问题。但就是 login 的时候特慢,要 20~30 秒左右。 试过用本地的 MongoDB 和远程 MongLab 都这样, »