如何rsync同步非标准SSH接口

一般情况下,我们用rsync可以很容易的同步一个远程目录.

$ rsync -avzh --progress --delete \
    name@remote_host:source_dir target_dir

这样就把远程的一个目录同步回来了.

但是现在问题来了,当 port 为非标准的 22 端口时, 我们应该怎样加参数呢?比如有时候我们会 NAT 到 2222 端口.

(more…)

SELinux 配置文件属性

所谓测不准定理是说,两个相关的物理变量,你对变量A要求越精密,那变量B的精度越差.反之,若对B要求越精密,那变量A精度就越无法测准. 安全也是这种屎一样的节奏,安全越高的东西,那么它往往越发的麻烦,反之,若你想把事情变得简单,那么安全往往会变屎.

SELinux是一个不错的权限管理系统.在公网跑的机器上,为了保证不会没事被人攻进来耍一波,还是被迫稍微用点心配置一下. (more…)

bower unable to connect to github.com

bower install 遇到错误如下:

bower angular-scenario#>=1.2.*          resolve git://github.com/angular/bower-angular-scenario.git#>=1.2.*
bower bootstrap#~3.1.1                  ECMDERR Failed to execute "git ls-remote --tags --heads git://github.com/twbs/bootstrap.git", exit code of #128

Additional error details:
fatal: unable to connect to github.com:

(more…)

Trie树

有一堆key-value的数据,有人输入一个key的子串,我们希望很容易的得到前面那个key-value中所有key包含该子串的pairs.Trie树是一个不错的解决方案.

如名字所示,Trie树是一个字典树,它的大致方向是构造一个如下图所示的字典树:

Trie

它被用来存储to,tea,ted,ten,A,in,inn等若干字符串. (more…)

vi如何退出

vi编辑完文件需要保存文件和退出。一般是esc,然后:wq或者:x来退出.但是两者还是有一些不同的.

  • :wq 的逻辑是"保存文件并退出"
  • :x 的逻辑是"检查是否有更新若有更新则保存并退出否则直接退出"

前者最后的效果是你无论是否对文件是否做出改动,文件在系统中的timestamp都会更新,而后者只会在你有改动后才会更新. (more…)

重载中括号操作符, 执行复杂操作

C++可以重载运算符, 其中中括号 "[]", 通常在其它地方用于表示下标的操作符, 重载自然也是用于"获得或者设置某个属性"这么个功能.

最简单的莫过于返回一个地址, 做的操作自然都被看光了.

class Opol {
 public:
    Opol() {
        memset(a,0,10);
    }

    int & operator [] (int k) {
        return a[k];
    }
 private:
    int a[10];
}

(more…)

修改普通用户的最大文件打开数

使用到mongo,redis等数据库的时候,往往会遇到这样一个坑。某mongo跑着跑着突然没了,某redis启动先给个warning,仔细一看log说最大文件打开数不够..

# You requested maxclients of 10000 requiring at least 10032 
# max file descriptors.
# Redis can't set maximum open files to 10032 because of OS error: 
# Operation not permitted.
# Current maximum open files is 1024. 
# maxclients has been reduced to 4064 
# to compensate for low ulimit. 
# If you need higher maxclients increase 'ulimit -n'.

(more…)

格式化MongoDB的输出

通过mongo自带的命令行进入后,db.coll_name.findOne(),可以发现mongo返回的数据是被format过的,看起来各种爽。但若你抽一下,改用db.coll_name.find(),瞬间弥漫而来的是各种unformatted数据,根本没法看。其实我们很容易就可以调整让它显示地更加漂亮。 现在有两种方法可以做到这点。 (more…)