上一页 1 2 3 4 5 6 7 ··· 14 下一页
摘要: ## 现状: 冗余 在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 阅读(5701) 评论(23) 推荐(5) 编辑
摘要: 你是否在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 阅读(1723) 评论(3) 推荐(1) 编辑
摘要: 如何确定一个连接?这是一个很有价值而又让人无法一下子得出答案的问题:答:原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 阅读(919) 评论(2) 推荐(0) 编辑
摘要: 来自百度?想必你搜索看到此文章,一定是遇到了和我一样的问题。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 阅读(3573) 评论(0) 推荐(1) 编辑
摘要: 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 阅读(13467) 评论(4) 推荐(2) 编辑
摘要: nodejs最近好红火,我也趁寒冷天气在nodejs的火炉边取暖一下。思路非常简单:httpserver获取需要还原的url;使用httpclient递归请求这个url,直到发现http status not in (302, 301)为止。返回还原的原url。好吧,代码如下:var net = require('net'), http = require('http'), url = require('url'), fs = require('fs');var DEFAULT_PORTS = { 'http:': 阅读全文
posted @ 2010-12-27 19:22 MK2 阅读(1712) 评论(0) 推荐(2) 编辑
摘要: 虽然Cookie的标准是不允许:冒号出现在key里面的,但是我们的开发人员是很可爱的,常常会让我们意想不到。为了做好兼容性,只能选择兼容:冒号。很简单,修改一下Cookie.Morsel#!/usr/bin/python# -*- coding: utf-8 -*-"""MorselHookfix Cookie.CookieError: Illegal key value: ys-tab:entrance:e"""import Cookieimport string_Morsel = Cookie.Morselclass Morsel 阅读全文
posted @ 2010-11-19 15:54 MK2 阅读(1090) 评论(0) 推荐(1) 编辑
摘要: 最近拿到了搜狐微博(t.sohu.com)的oauth开发key,本想做个oauth登录的,可是发现在发中文微博的时候,总是提示401认证不通过:{"code":401,"error":"This method requires authentication.", "request":"/statuses/upload.json"}。然后我试着发全ASCII码的微博,竟然可以发成功。这样就定位到有可能是我用的utf-8编码有问题,于是尝试了个种中文编码gb2312, gbk 还有更多其他编码,都 阅读全文
posted @ 2010-11-03 09:50 MK2 阅读(1632) 评论(1) 推荐(2) 编辑
摘要: python2.6+ 自带的json模块,不支持datetime的json encode,每次都需要手动转为字符串,很累人,我们可以自己封装一个简单的方法处理此问题.实现代码如下:import jsonfrom datetime import date, datetimedef __default(obj): if isinstance(obj, datetime): return obj.strftime('%Y-%m-%dT%H:%M:%S') elif isinstance(obj, date): return obj.strftime('%Y-%m-%d' 阅读全文
posted @ 2010-10-23 18:20 MK2 阅读(2757) 评论(0) 推荐(1) 编辑
摘要: 最近将网站和新浪微博进行了整合,思路很简单,就是将页面内容和新浪微博联系起来,一个独立内容的页面对于一条微博,自然评论系统只需要使用微博的评论即可。然后,用户需要发表评论的话,肯定要接入oauth,不可能让用户登录你的网站来发评论吧?没有谁会将自己的账号和密码告诉你的。查看了新浪微博的授权机制,然后下载了python版的sdk,就可以在django上接入oauth了。对于oauth很陌生的同学,请先查看OAUTH协议简介其实流程很简单:getrequesttoken -> createauthurl -> [user_login: 跳转到新浪登录页面,用户登陆后会跳转回来] -&g 阅读全文
posted @ 2010-09-27 17:51 MK2 阅读(6286) 评论(2) 推荐(4) 编辑
摘要: 最新需要用到RSA对称密钥加密,所以需要用到M2Crypto,可怜的我发现编译这东西一点都不容易,以下是我的杯具经验总结。服务器环境$ lsb_release -aLSB Version::core-3.0-ia32:core-3.0-noarch:graphics-3.0-ia32:graphics-3.0-noarchDistributor ID:RedHatEnterpriseASDescription:Red Hat Enterprise Linux AS release 4 (Nahant Update 4)Release:4Codename:NahantUpdate4下载M2Cry 阅读全文
posted @ 2010-09-21 17:47 MK2 阅读(7295) 评论(0) 推荐(2) 编辑
摘要: tornado 是一个纯python 实现的非阻塞web服务器,自带了异步httpclient,可以异步请求http网络资源。在实际应用中,我们常常需要访问memcached等资源,发现官方并没有具体实现memcache异步客户端,但是tornado留出了ioloop让我们很容易就可以实现异步的socket网络访问。于是参照memcache的通信协议,我简单实现了一个异步socket的memcache客户端。使用示例源代码下载: async_memcache.pyif __name__ == '__main__': client = MemcacheClient('lo 阅读全文
posted @ 2010-09-16 00:02 MK2 阅读(1374) 评论(0) 推荐(1) 编辑
摘要: $ vi ~/.bashrc# enable programmable completion features # (you don't need to enable this, if it's already enabled in # /etc/bash.bashrc and /etc/profile# sources /etc/bash.bashrc).if [ -f /etc/bash_completion ]; then . /etc/bash_completionfi若发现/etc/bash_completion文件不存在, 则安装bash-completion$ s 阅读全文
posted @ 2010-08-22 17:01 MK2 阅读(2964) 评论(0) 推荐(1) 编辑
摘要: iPhone用起来太多东西要记,免得以后刷机都走错路,就在这里记下一些痕迹吧。我的是美版有锁的iPhone 3GS,所以第一步是越狱,然后解锁。威锋网的源 http://app.weiphone.com/cydia/, Sinful源 http://www.sinfuliphonerepo.com/UCWEB源 http://uc.cn/cydia/安装install0us,这样就可以抛弃iTunes直接在iPhone上安装ipa了,install0us的ipa存放目录: /var/mobile/Downloads/使用ifunbox上传ipa文件到iPhone.deb文件安装方式,有以下2种 阅读全文
posted @ 2010-06-24 00:53 MK2 阅读(1876) 评论(0) 推荐(2) 编辑
摘要: 添加以下代码到你的博客中: (呵呵,抄袭至lulu Studio http://s8.hk/0itw)<script type="text/javascript"> $(function(){ c_url = 'http://s8.hk:8088/s8/s?format=text&longUrl='; c_url += document.location.href; c_url... 阅读全文
posted @ 2010-01-15 15:51 MK2 阅读(627) 评论(0) 推荐(1) 编辑
上一页 1 2 3 4 5 6 7 ··· 14 下一页