Shadowsocks Sock5 代理配置-服务端篇

| 评论

0.废话不说,直接上,哦不是,直接用ssh连上服务器
1.检查python的版本,需要2.6或者2.7,3.0以上没有测试过

1
2
python --version
# Python 2.7.3

2.安装所需要的python库以及pip

1
2
# 之前可以先 sudo apt-get update
sudo apt-get install python-gevent python-m2crypto python-pip

3.安装shadowsocks

1
sudo pip install shadowsocks

4.用你喜欢的编辑器创建config.json

1
2
3
4
5
6
7
8
{
    "server":"你的服务器ip", // 你的服务器ip
    "server_port":8388,    // shadowsocks监听的端口,建议修改,如果服务器有防火墙记得打洞
    "local_port":1080,     // 服务端不重要
    "password":"barfoo!",  // 加密的密码
    "timeout":600,
    "method":"aes-256-cfb" // 加密方式,前面已经安装了python-m2crypto,这里可以选择这个
}

无注释版

1
2
3
4
5
6
7
8
{
    "server":"你的服务器ip",
    "server_port":8388,
    "local_port":1080,
    "password":"barfoo!",
    "timeout":600,
    "method":"aes-256-cfb"
}

5.开个screen,开启shadowsocks

1
2
3
screen -S s
# 注意有3个s
ssserver -c config.json

Ruby 小技巧

| 评论

Iterrator 有时需要index,那就加入with_index,如下

1
2
3
4
f = File.open("testfile")
f.each.with_index do |line, index|
  puts "Line #{index} is: #{line}"
end

在Rails的migration中添加字段(add_column)option的limit说设置的值 是添加字段类型的默认值,limit就不会出现在db/schema.rb中的相应位置。

为什么我痛恨Mac

| 评论

我爱Mac,但Mac满满的都是槽点 1. 我的是rMBP,USB接口少的可怜,才有两个,外接一个机械键盘,外接一个鼠标就没有了(不要告诉用蓝牙的,我也知道)
2. 全局输入法切换,写代码的时候和朋友聊天,回到写代码的时候太难受,何况我用的还是vim(是我不懂Mac啊,改个设置就可以了啊)
3. 如果光标在输入框内捏合进入Launchpad是还是输入的光标而不是指针,会看不见
4. 玩游戏不过瘾啊不过瘾

我喜欢Mac的几个原因

| 评论

用了Mac还没有几天,就彻底的爱上Mac了
1. 电源线,非常柔软,不会硬邦邦的戳到改变Mac和插板的位置
2. 不用重启,就算重启,重启以后可以自动回到重启之前的状态
3. 不用关机,开机,盖上盖子就好,这个直接影响了我的习惯,原来用电脑的时候要先开机,然后去做别的事情 很久很久之后才能使用,关机也是。
4. TrackPad 我从来没有想过触摸板会这么好用,好用到可以完全不用鼠标了
5. 超级快,安装个Ubuntu的虚拟机只要5分钟windows只要6分钟
6. 终端和系统配合的特别好,这对于码农来说实在是太好了
7. 安静,平时使用的时候几乎听不到任何风扇的声音,话说我的大Y随便用用就好比的轰炸机飞过
8. 和iOS设备配合的特别好,iTunes似乎也没有那么难用了
9. 截图功能非常不错
10. 背光键盘,这让我在晚上能够关着灯使用Mac
11. 有超级好用的文档工具Dash
12. command+, 几乎是每个软件Preferences的快捷键
13. 不插电的情况下Safari中的插件不会自动运行。
14. 通知中心和免打扰,工作时不会受到打扰。
15. 字体,让我义无反顾。
16. 下载的zip可以自动解压。

使用through关联时访问关系的属性

| 评论

0.有下面三个 model 关联,使用 through 来简化对 Ownership 的访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class User < ActiveRecord::Base
  # association
  has_many :ownerships, dependent: :destroy
  has_many :shops, through: :ownerships
end

class Ownership < ActiveRecord::Base
  belongs_to :user
  belongs_to :shop
end

class Shop < ActiveRecord::Base
  # association
  has_one  :ownership, dependent: :destroy
  has_one  :user, through: :ownership
end

1.此时无法在Shop中在 after_create 来访问 ownership 的 user_id 属性,因为这时 owership 还未创建。当事务 commit 以后 owership 被创建,同时拥有 user_id 属性。这时就可以获得 user_id 从而进行相关操作

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
class Shop < ActiveRecord::Base
  after_commit :get_attr_after_destroy, on: [:destroy]
  after_commit :get_attr_after_create,  on: [:create]

  after_create :get_attr_in_after_create

  # association
  has_one  :ownership, dependent: :destroy
  has_one  :user, through: :ownership

  private
    def get_attr_after_destroy
      user_id = self.ownership.user_id
    end

    def get_attr_after_create
      user_id = self.ownership.user_id
    end

    def get_attr_in_after_create
      # self.ownership is nil
      # NoMethodError: undefined method `user_id' for nil:NilClass
      user_id = self.ownership.user_id
    end
end

Rails 小提示

| 评论

  • 重写activerecord 的 method_missing 不是一个好的主意 #rails

在ubuntu上安装较新版本的nodejs

| 评论

1
2
3
4
5
sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository -y ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

因为用到 add-apt-repository 可能需要安装 software-properties-common

1
sudo apt-get install software-properties-common

来源:Installing Node.js via package manager

在Ubuntu上使用nginx官方源安装nginx

| 评论

0.添加key

1
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62

1.添加到nginx官方源到 /etc/apt/sources.list

1
deb http://nginx.org/packages/ubuntu/ precise nginx

2.如果原来安装过nginx,备份相关配置文件后删除nginx及其相关组件

1
sudo apt-get purge nginx*

3.安装nginx

1
2
sudo apt-get update
sudo apt-get install nginx

4.安装成功后可以用-v查看ningx版本

1
2
nginx -v
#nginx version: nginx/1.4.4

来源:How to Setup Rails App With Puma and NGINX

修改git Push 后的commit Message

| 评论

背景:手快把一个有拼写错误的commit message给push了
如何:

1
2
git commit --amend #修改commit message
git push -f #强制提交,如果不强制提交会被拒绝