Jon

Jon

Node.js

用 Express 4.0 重写《Node.js 开发指南》第5章的项目实例

首先,这篇文章的存在告诉我们,对于新兴的技术,不要买纸质书。 《Node.js 开发指南》 应该是国内最早的 Node.js 教程,这本书由浅入深地介绍了 Node.js 的一些用法,尤其是包管理的部分非常实用。但是由于年代久远(2012年7月),版本更迭,书中第5章的实例已经不能直接使用,尤其是涉及 Express 框架的部分,所以看书的同时试着用新版 Express 来完成书中的例子。 Express 4.0 的默认模板引擎是 jade,jade 的优点是代码简洁、表达能力强,但语法与 HTML 差别很大,需要额外的学习成本。为了方便起见,这里将模板引擎改成 ejs(Embedded JavaScript),并且尽量用原生的 Express(不安装非官方的包)来完成书中的例子。如果想挑战高难度的话,也可以尝试着用 jade

By Jon

IT

《黑客与画家》十周年——Paul Graham 访谈

注:原文是《黑客与画家》这本奇书出版十周年之际,Chris Castiglione 对原书作者 Paul Graham 的采访记录。 2003年,《黑客与画家》这本书问世了。不过黑客技术这个词还很不像现在这样高端洋气,计算机科学、创业公司也是如此。 就在这一年,我开始学习编程。 但我却栽在了计算机科学这门课程上,栽得很彻底:只得了F。 我灰心丧气,几乎决定要放弃计算机这条路。 然后,我读到了《黑客与画家》这本书,翻然醒悟:“作者才是真正的明白人。我学不好计算机科学,问题不是出在我自己身上,而是学校上课的方式本身就不对” [1] 。要作一个软件开发者,我不需要首先事无巨细地把所有计算机知识通通学一遍。我可以从软件开发的过程中学习需要的技能。认识到这一点之后,我从挫败与悲观中解脱出来。 《黑客与画家》让我开始思考软件开发人员的职责到底是什么。我要成为一名艺术家,而不是科学家。 十年后的今天,我已经在教别人学习编程。不过仍然有一些困扰我的问题; * 这十年来,计算机科学有没有发生变化? * 每个人都应该学习编程吗 [2] ? * Paul

By Jon

GIS

OpenLayers 3 加载 Mapbox 图层

Mapbox上有世界上最好的地图。OpenLayers 3 是世界上第二好的地图API(第一是 Leaflet.js)。用 mapbox.com 提供的 Tiles 、TileJSON 服务,可以将用户自己创建的地图加载到 OpenLayers 3 地图控件中。 使用 Mapbox 地图服务之前,需要弄清楚 Mapbox 的 Map ID 和 Access Token。Map ID 是地图标志号,格式是[account].[handle],其中 account 为用户名,handle 则表示该账号下的某个地图项目。mapbox.com 上的每个地图项目都有惟一的 Map ID,可以在项目属性中查看。而 Access Token 则是与账号相关联的一串“

By Jon

Ghost 上手体验

随着 WordPress 越来越庞大,这个平台已经不适合单纯地写点文字了。有这个想法人应该不少,甚至包括前 Wordpress 员工,于是他们动手开发了一个轻量级博客平台:Ghost。 优点 清爽的编辑页面 题图就是 Ghost 的文章编辑页面,左侧是 MarkDown 编辑器,右侧是实时预览。比 WordPress 的在线编辑高到哪里去了。一打开编辑器,就有想敲点文字的冲动,根本停不下来。 高端洋气的 DashBoard 博客流量、友邻等等博主最关心的信息一目了然。不过现在只能看看截图,DashBoard 要等到2015年初发布1.0版本的时候才会推出。 (Update:现在已经2015年12月了,最初的宣传视频里的 Dashboard 还是没有出 😆) (Update:现在已经2019年08月了,最初的宣传视频里的 Dashboard 还是没有出 😆) 缺点 * 服务器端使用 Node.js,支持的 VPS 价格比

By Jon

TOEFL Official Guide 脱水版

根据自己看完 TOEFL Official Guide 之后的笔记整理。Could be helpful. 1 题型与时间 * 要练习 Paraphrase * 加快阅读速度。一篇文章不超过20分钟 Test Section Number of Questions Timing Reading 3 – 5篇 每篇12 – 14个问题 共36-70题 60 – 100 分钟 Listening 4 – 6 篇演讲,每篇6个问题 2 – 3 则对话,每则对话5个问题 共34-51题 60 – 90 分钟 BREAK 10 分钟 Speaking 6个tasks,2 independent and

By Jon

Python

使用 VirtualEnv 配置 Python 虚拟环境

在同一台机器上开发多个 Python 项目,经常会碰到某个包的版本不一致的问题。VirtualEnv 可以为每个的项目提供独立的配置,避免冲突,绝对是居家旅行必备工具。 VirtualEnv 的安装很简单,pip install VirtualEnv 一行命令即可(前提是已经安装了 pip 包管理工具)。 安装完成后,对需要使用 VirtualEnv 的项目需要手动进行‘初始化’。切换到工程目录,运行 $ virtualenv venv $ ./venv/scripts/activate 上面使用了两个命令。首先通过 virtualvnv 命令创建一个名为 venv 的虚拟环境,这个命令的结果是在工程目录中创建了一个名为 venv 的子目录。再运行刚刚生成的目录里的 activate 脚本。这时,shell 的 prompt 会变成以 venv 开头: VirtualEnv 成功激活之后,

By Jon

JavaScript

JavaScript 对象模型

JavaScript 的对象模型是基于原型的,与C++、Java 中基于类的对象模型有着很大的区别,特别是在对象属性与方法的继承机制上。 基于类的对象模型中,两个最重要的概念是类(class)与实例(instance): * class 定义了类中的所有属性与方法,可以看做该类所有实例的一个集合。 * instance 是 class 的一个实例,该实例所具有的属性与方法由所属的类严格决定,不多不少。 而基于原型的对象模型中,没有 class 与 instance 的概念,所有东西都是 object。object 可以分为用作“模板”的 prototypical object,以及基于这些 prototypical object 使用 new 关键字创建的其他对象。对象的属性既可以在创建时指定,也可以在运行时指定。任何对象都可以作为其他对象的原型,让其他对象来“共享”该对象的属性。 1.JavaScript 的对象模型 类定义

By Jon

最近的几场发布会

先从最近的开始说 Google IO 当苹果开始宣传 iOS (从其他平台吸取的)的新功能时,Google 反倒推广起自己的设计理念。 Our goal is to reach the other 5 billion people in the world! -- Sundar Pichai WWDC 苹果终于为 iOS 增加了应用间通信这一 Android 平台的杀手级功能。 今年的 one more thing 可不是什么小事。苹果出乎大家的意料推出了一门新的编程语言 Swift。 Zealer 2.0 王自如 演讲中不可取细节 打击听众。当然,对于一部分狂热粉丝来说,这可能还会加深忠诚度,不过大部分人应该都难以接受。 相比锤子手机,Zealer

By Jon

Android

IntelHaxm 加速器引起的 Windows 8.1 蓝屏及解决方法

IntelHaxm 加速器引起的 Windows 8.1 蓝屏及解决方法 使用 Eclipse 或 ADT Bundle 进行 android 开发时,安卓模拟器的效率一直是个头疼的问题。为此,Intel 专门推出了针对 Intel 处理器的安卓模拟器加速程序 Intel Haxm (Hardware Accelerated Execution Manager)。 但是在 Windows 8.1 下安装了 IntelHaxm 模拟器加速应用之后,长时间运行 Android Emulator 会导致系统蓝屏。(ADT Bundle 版本20131030,64位 Windows 8.1) 新版的 IntelHaxm 已修复这一问题,可以到 IntelHaxm 下载页面

By Jon