ssh 会话重用

保持

新建文件~/.ssh/config并输入如下命令即可:
ServerAliveInterval 60
这样ssh会每60秒发送一个KeepAlive请求,保证终端不会因为超时空闲而断开连接。

重用

ssh提供了连接重用功能,这个功能的原理很简单,开一个ssh连接,以后再需要用ssh到同样的远程主机时,ssh会直接用这个连接的socket文件,不再创建新的连接了,同理,也不需要进行用户身份验证了,只需要新建文件~/.ssh/config并输 入如下命令即可:
Host *
ControlMaster auto
ControlPath ~/.ssh/session-sockets/%r@%h:%p
保存后,在终端ssh登录远程主机后,会在~/.ssh/session-sockets下留下很多username@hostname文件,退出登陆会话文件自动删除。

解决浏览器自动填充表单问题

Mozilla 官方文档建议

Mozilla developer documentation 建议使用表单设置属性 tautocomplete=”off” 来阻止浏览器从cache获取数据填充登录表单。

 <input type="text" name="foo" autocomplete="off" />

但是这种方案不兼容某些Chrome、Firefox。

兼容所有浏览器

最终决定使用使用隐藏input来接受浏览器自动填充,这样不会影响用户体验,也可以兼容所有浏览器。

  <input style="display:none"><!-- for disable autocomplete on chrome -->
  <input type="text" id="username"  name="username"  autocomplete="off">

但是实际上在Chrome上并没什么用,在FireFox上也只能阻止用户名自动填充。

接着搜索,又发现了个新东西

<input type="password"  autocomplete="new-password">

把password的autocomplete属性由off变成了new-password,发现Chrome不自动填充了,但是FireFox上仍然会填充用户名

再接着结合第一点尝试,最后结果是使用以下方式

 <input type="password" style="display: none;"/>
 <input type="text" autocomplete="off"/>

 <input class="form-control" type="password" name="tradePassword" id="txPassword" autocomplete="new-password"

这样在Chrome和FireFox上就都不会填充了。

参考:https://segmentfault.com/q/1010000006090445


					

Linux 信号详解

LINUX 信号概念详解

我们运行如下命令,可看到Linux支持的信号列表:

# kill -l
1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     17) SIGCHLD
18) SIGCONT     19) SIGSTOP     20) SIGTSTP     21) SIGTTIN
22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO
30) SIGPWR      31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1
36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4  39) SIGRTMIN+5
40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8  43) SIGRTMIN+9
44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6  59) SIGRTMAX-5
60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2  63) SIGRTMAX-1
64) SIGRTMAX

编号为1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的),编号为32 ~ 63的信号是后来扩充的,称做可靠信号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。

下面我们对编号小于SIGRTMIN的信号进行讨论。
继续阅读

php在线更新svn

如果没有服务器权限,比如前端开发人员,可以用PHP做一个从svn上线的http接口。

    function svnupAction()
    {
        $encoding = 'export LC_ALL=en_US.UTF-8;export LANG=en_US.UTF-8;export LANGUAGE=en_US.UTF-8;';
        $out = '<pre>';
        $dir = Application::app()->getAppDirectory() . '/../data/svn/default';
        $path = Application::app()->getAppDirectory() . '/../public';
        $p = $this->getRequest()->getQuery('path', '');
        if (! empty($p)) {
            $path .= '/' . $p;
        }
        $out .= shell_exec(
            $encoding . '/usr/bin/svn up --config-dir=' . $dir . ' ' . $path .
                 ' 2>&1');
        $out .= '</pre>';
        echo $out;
        return false;
    }

需要提前在对应目录生成记住密码的svn配置

sudo -u apache export LC_ALL=en_US.UTF-8;export LANG=en_US.UTF-8;export LANGUAGE=en_US.UTF-8;/usr/bin/svn up --config-dir=/srv/www/xxx/app/../data/svn/default /srv/www/xxx/app/../public 2>&1