03 2011 档案

nodejs: 真正的一份代码,到处运行
摘要:## 现状: 冗余 在web开发中,我们是否常常会使用不同的编程语言实现相同的功能? 如一个文件上传功能,需要对上传文件进行文件格式限制。我们通常会使用后缀名做限制。 ### 导致这样重复工作的原因是为什么? 1. 前端永远不可信; 2. 前端和后端使用不同的编程语言; ### 这样的冗余会带来什么代价? 1. 修改业务逻辑,需要重复做2次:如突然发现少支持了 *docx* 文件类型,需要同时修改javascript代码和python代码 2. 增加确保javascript代码和python代码业务逻辑一致的代价。需要分别写2种测试,unit test跑多一倍。 ## nodejs时代:DRY Use [nodejs](http://nodejs.org) no more [DRY](http://c2.com/cgi/wiki?DontRepeatYourself) ! 阅读全文

posted @ 2011-03-30 12:00 MK2 阅读(5723) 评论(23) 推荐(5)

Google Appengine 的自动部署脚本
摘要:你是否在appengine上注册了N个应用?每次代码更新都很痛苦?!在我痛苦了很久后,总算找到一种可以自动部署方式,并写成了脚本,共大家分享deploy.py#!/usr/bin/env python# -*- coding: utf-8 -*-# 将 {project_name} 替换成你的项目目录# 将 {password} 替换成你的密码文件# 将 {email} 替换成你的emailimport sysimport osimport urllib2def deploy(no): tpl = open('app.yaml', 'rb') try: tpl_ 阅读全文

posted @ 2011-03-26 02:15 MK2 阅读(1729) 评论(3) 推荐(1)

web旺旺技术变迁的一些笔记痕迹
摘要:如何确定一个连接?这是一个很有价值而又让人无法一下子得出答案的问题:答:原ip,原端口,目的ip,目的端口。TCP状态结合TCP各个状态的转换图,来看看Linux的TCP调优参数及说明:Linux的TCP调优参数及说明//向外连接可用端口范围echo “1024 65535” > /proc/sys/net/ipv4/ip_local_port_range//time_wait连接重用echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse //快速回收time_wait连接echo 1 > /proc/sys/net/ipv4/tcp_tw_recy 阅读全文

posted @ 2011-03-17 10:33 MK2 阅读(936) 评论(2) 推荐(0)

nodejs: 修复express的res.download 下载被取消导致的 “Can't remove headers after they are sent” 异常
摘要:来自百度?想必你搜索看到此文章,一定是遇到了和我一样的问题。express 中如果我们使用res.download处理文件下载,中途被取消下载,就会出现以下异常node.js:116 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: Can't remove headers after they are sent. at ServerResponse.removeHeader (http.js:537:11) at Socket. (/usr/local/lib/nod 阅读全文

posted @ 2011-03-16 18:15 MK2 阅读(3633) 评论(0) 推荐(1)

nodejs: mkdirs 递归创建目录
摘要:nodejs里面的所有文件操作我们很显然地都会选择异步方式。nodejs对于文件的基本操作果然是很基本的。例如我们想创建一个二级目录:/abc/def,使用fs.mkdir必须先判断/abc,存在,才继续创建/abc/def。这样几个一层层的callback,必要会影响代码的美观性(^_^,写代码也是一门艺术)。于是乎有了一下通过递归对fs.mkdir和path.exists的封装,得到的目录创建 辅助函数:mkdirs// 创建所有目录var mkdirs = module.exports.mkdirs = function(dirpath, mode, callback) { path.e 阅读全文

posted @ 2011-03-10 20:21 MK2 阅读(13511) 评论(4) 推荐(2)