穿墙术

安装(使用 Nodejs npm 进行安装,不建议全局安装)

npm install shadowsocks

修改 node_modules/shadowsocks/config.json

{
  "server":"my_server_ip",
  "server_port":8388,
  "local_port":1080,
  "password":"barfoo!",
  "timeout":600,
  "method":"table",
  "local_address":"127.0.0.1"
}

启动, 建议使用 pm2 进行守护启动

pm2 start node_modules/shadowsocks/bin/ssserver

更多 shadowsocks-nodejs 移步到 https://github.com/clowwindy/shadowsocks-nodejs

客户端配置和服务器 shadowsocks 配置差不多,不过建议客户端使用 cow 更好, 支持智能PAC
智能学习被屏蔽的网址,那些直连,基本上不用手工设置,如果有多个代理服务器,
可以进行简单的负载均衡。cow是golang开发,安装很简单,项目地址:https://github.com/cyfdecyf/cow

online develop

后记:
国内也发现了一个比较好的在线平台,功能一样强大,界面OK
https://coding.net


推荐2个比较不错的在线开发平台

都比较不错, 相比Nitrous, Koding界面更漂亮一些。
他们都支持多语言环境,PHP/Ruby/Node.js/Java/Go;

提供一个仿真的VPS,可登录,并且有外网端口,可以调试程序,
但不能关闭网页,关闭后一段时间,仿真VPS就被关闭了,
要持续运行,需要花钱。

老树逢春-光驱变硬盘

自己动手把我的 MacBook Pro 之前拆掉的 SATA 硬盘重新装回去,已解决日益紧张的 SSD 硬盘的紧张
局面。再亚马逊上买了硬盘支架,参考教程http://bbs.feng.com/read-htm-tid-4265042.html
完美把光驱位变成硬盘。

我的这个陪伴了我3年多的家伙,一直不忍心换新设备,廉颇不老,看来缝缝补补还能使用上三年,哈哈!

后记:
变身历史,SATA硬盘->SSD 硬盘->硬盘换光驱->…
下一步计划把4G内存升8G,看来再用三年未尝不可。)

backbone.vm begining

正在开发一个MVVM Module, 基于Backbone, 名称:backbone.vm
实现 Backbone.Model 和 HTML DOM的双向数据绑定;兼容Chrome*/IE6+/Safari…

1. Why New MVVM?

为什么要开发一个MVVM? 原因很简单,眼馋Angular.js的方便,但讨厌其复杂规则,冗余
的功能设计,不可控性高,性能低,且在国内不支持老浏览器(虽然可以经过特殊的手段可以支持,但…)

实际工作中Backbone的使用最广泛,且比较灵活,考察了一下国内外MVVM库,
暂无比较好用的解决方案(angular.js/backbone.stickit/avalon.js/Knockback.js)考虑过
是基于现有的轮子再造轮子,还是造一个新轮子,avalon.js从零造了一个新轮子,成本较高也较复杂。
如果是现有的基础上,省去了很多问题,但也带来了别的问题,如依赖多。

功能的实际上,简单,实用就够了。 对于节点属性选择上,只增加一个节点属性vm=”val:username”,
不提供xx-controller, xx-html等标记,所有的都放到vm属性里,对于控制器(或VM的作用范围)
在定义VM类时指定,VM类初始化的时候,进行扫描节点, 建立DOM VIEW和MODEL的双向映射关系。

不使用对象监听属性变化,直接使用Backbone.Model来存储VM, 好处是不用做兼容,现成的。

这样,简单、高效、上手快、兼容多浏览器,不是难事儿!

2. Feature List

  1. 视图和数据的双向绑定
  2. 兼容性 Chrome*/IE6+/Safari
  3. 操作方法直接使用jQuery关键字,html, val, text…
  4. 依赖库可使用jQuery/Zepto, Underscore/lodash替换

3. Timeline

  • 基本功能开发(进行中)
  • 兼容性检查
  • 代码优化
  • 文档完善
  • 功能示例完善
  • 发布到spm
  • 修改BUG
  • 功能增强
  • 迭代

相关链接:

拼音输入法

在v2ex上听人说Mac自带拼音输入法还可以,尝试将他作为首选输入法,用了2个礼拜,基本上能满足日常的需求。
有一点实在是无法忍受,中文状态下不能输入英文大写,caps lock 键功能是切换中英文,要输入
英文大写只能按住shift一个个的输入,我在工作中提交git,要输入英文大写关键字,
这样的设计别扭至极。

国内的输入法: 百度输入法,搜狗输入法,QQ输入法,这几个都使用过,最好用的要数百度输入法,
算是百度为数不多的几个好产品吧,哈哈。但是国内的输入法有个通病,功能冗余,很多功能没必要的
就不要添加,或者做成插件的形式,可以手工的选择,产品经理们请控制好你们的产品,
功能多,未必是好事儿。

Golang包版本管理

一直Golang缺少版本管理工具,go get 按照包只能从有限的几个源下载包,且包没有版本号,
如果项目中使用老的包,就没法了,一直再想go get如果有版本号多好。

终于发现了一个管理工具:gpmgvp

gpm是依赖包下载工具,gvp是改变$GOPATH工具,工具类似Python virtualenv

一、使用方法:

1、在根目录定义一个 Godeps 文件

1
2
3
4
5
$ cat Godeps
github.com/nu7hatch/gotrail v0.0.2
github.com/replicon/fast-archiver v1.02
launchpad.net/gocheck r2013.03.03 # Bazaar repositories are supported
code.google.com/p/go.example/hello/... ae081cd1d6cc # And so are Mercurial ones

2、下载依赖包 gopm install

3、设置$GOPATH

1
2
3
4
# in
source gvp in
# out
source gvp out

然后执行一下 go env 看一下环境变量。

二、Install on Mac OS X

1
2
sudo brew install gpm
sudo brew install gvp

其他系统的安装,参考下面的参考网站。

三、其他

gpm、gvp 如果是一个命令就更好了,分成了2个项目。
还有就是,如果能改变命令提示符的前缀$PS1就更好了(类似virtualenv)这样可以直接看到
已经进入新的gopath下,退出后,在进入之前的gopath。

四、参考网站

国内CDN公共库

本文收集了一些国内大厂提供的CDN加速服务,
供大家在需要的时候使用。

nginx proxy cache

因为网站使用jekyll托管在github pages上,迁移到国内后使用nginx proxy的方式,
但是速度还是很慢,后发现可以使用nginx_cache的来解决。

nginx_cache早已经内置在nginx的稳定版中,只要在配置的时候,指定就行了。
具体步骤:

第一步:在server外配置

1
2
3
4
5
6
# 注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
proxy_temp_path /data0/proxy_temp_dir;
# 设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,
# 1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=5g;

第二步:在server内指定proxy_cache 和 proxy_cache_key

1
2
3
4
5
6
7
8
9
10
11
12
13
14
location / {
proxy_pass http://wangxian.me/;
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Cookie $http_cookie;
# ... 其他代理的配置
}

这样在浏览的的时候,nginx就会缓存。
如果更新了网站要清理缓存,需要去/data0/proxy_cache_dir目录删除所有缓存,
那能不能按照URL去更新呢?答案是肯定的,这个第三方的模块叫 ngx_cache_purge

安装 ngx_cache_purge

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1. 下载:
wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
2. 解压
3. 配置
./configure --user=www --group=www --prefix=/usr/local/nginx \
--with-http_stub_status_module --with-http_ssl_module \
--with-http_gzip_static_module \
--with-ipv6 --add-module=../ngx_cache_purge-2.1 \
4. 安装
make && make install
5. 配置nginx
# 用于清除缓存
# 如果清理 http://wangxian.me/archive.html 缓存,
# 访问 http://wangxian.me/purge/archive.html 就可以清理缓存了
location ~ /purge(/.*) {
# 设置只允许指定的IP或IP段才可以清除URL缓存。
allow 127.0.0.1;
allow 192.168.0.0/16;
deny all;
proxy_cache_purge cache_one host$1$is_args$args;
}

是不是觉得速度快多了。

参考网站