Latest

GIS

GeoServer 发布大型影像数据

手头有一个 8.7GB 的 GeoTiff 高清航空影像,需要用 GeoServer 发布成地图服务。使用默认的 GeoTiff 方式时,WMS服务效率非常低,已经影响正常使用。为了改善地图服务的效率,可以为影像建立金字塔,再通过 GeoServer 的 Image Pyramid 扩展来发布。 用 FWTools 建立影像金字塔 首先,下载 FWTools 并安装。安装完成后需要修改 bin 目录下的gdal_retile.py(Windows 版),用编辑器打开bin/gdal_retile.py,把第273行修改成: print("Building internal Index for %d tile(s)

By 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