作者归档:wenbin

服务器 ssh 自动断开问题

有好几种解决方案
1、最不好的一种,设置终端超时自动输入字符。对 iTerm 而言 Profile 的 Session tab 里面可以设置。缺点很明显,超时时会自动输入字符影响使用。
2、客户端 ssh 配置定时保持连接,方法是修改 ~/.ssh/config 文件,加入
Host *
ServerAliveInterval=60
这样每 60 秒给服务器发送一个 no-op 包用来保持连接。
3、对单次连接可以使用 ssh -o ServerAliveInterval=30 user@host 命令来传递 ServerAliveInterval 参数
4、服务端 ssh 配置,方法是修改 /etc/ssh/sshd_config 文件,取消
TCPKeepAlive yes
ClientAliveInterval 30
ClientAliveCountMax 3
5、行代码的注释开启定时发包保持连接的功能。记得重启 ssh 服务激活配置。
6、当然还有更高级的技术。可以试试 mosh,除了保持连接外,还可以实现自动连接。需要分别在服务器和客户端安装软件。
2018-03-08 15:31:14
既然讲到了 mosh,讲下怎么安装吧。三行命令,以 debian 服务器,mac 客户机为例:
1、服务端安装 apt-get install mosh
2、配置语言 vim ~/.bashrc 添加 export LC_ALL="en_US.UTF-8",source ~/.bashrc
3、客户端 brew install mosh
下面就可以使用了
mosh user@host

wordpress 不建议给has_cap传入一个参数问题修复

装了几个插件发现 wordpress 后台报了下面的错误:
不建议给has_cap传入一个参数!用户级别已被废弃,请改用能力。 in /usr/share/wordpress/wp-includes/functions.php on line 4031
检查发现是 baidu sitemap 插件引起的,将
add_options_page("Baidu-Sitemap","Baidu-Sitemap", 8, FILE, ‘baidu_sitemap_optionpage’);
里的 8 改成 ‘manage_options’ 就可以修复问题
add_options_page("Baidu-Sitemap","Baidu-Sitemap", ‘manage_options’, FILE, ‘baidu_sitemap_optionpage’);

h5py FutureWarning 问题修复

h5py/init.py:36: FutureWarning: Conversion of the second argument of issubdtype from float to np.floating is deprecated. In future, it will be treated as np.float64 == np.dtype(float).type.
from ._conv import register_converters as _register_converters
h5py 和 numpy 版本冲突,h5py 官方已修复合并到 master 分支,但是还没发新版,在发版之前可以用降级 numpy 的方法跳过这个问题。降级命令如下:
pip install numpy==1.13.0
referece:
https://stackoverflow.com/questions/48340392/futurewarning-conversion-of-the-second-argument-of-issubdtype-from-float-to

sklearn cross_validation 过时问题解决

网上看的有些教程比较老,有跑起来报如下错误的:
/usr/local/Cellar/python/3.6.4_3/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
"This module will be removed in 0.20.", DeprecationWarning)
问题修复
将 from sklearn.cross_validation import train_test_split
改成 from sklearn.model_selection import train_test_split
即可

matplotlib python is not installed as a framework 问题修复

python import matplotlib.pyplot as plt 的时候报如下错误
RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of ‘python’ with ‘pythonw’. See ‘Working with Matplotlib on OSX’ in the Matplotlib FAQ for more information.
解决方法是 在 ~/.matplotlib/matplotlibrc 中加入 backend: TkAgg
reference:
https://stackoverflow.com/questions/21784641/installation-issue-with-matplotlib-python

mac 安装 tensorflow

1、打开终端
2、sudo easy_install pip,有可能会报错 ImportError: cannot import name ContextualZipFile,原因大概是 setuptools 有问题。需要调整 setuptools 版本。我的机子装过 pip,通过 sudo python -m pip install –upgrade –force pip 命令强制升级到最新版。
3、pip install –upgrade virtualenv 安装虚拟环境
4、创建虚拟环境,mac 下默认 python 为2.x 版本,创建2.x 虚拟环境用 virtualenv –system-site-packages targetDirectory 命令。如果想安装 3.x 虚拟环境,需要先安装 python3。可以使用 brew install python 安装 python3.然后再执行 virtualenv –system-site-packages -p python3 targetDirectory 创建 python3 的虚拟环境。targetDirectory 可以使用官方推荐的 ~/tensorflow ,也可以自己定义。
5、进入 targetDirectory 目录 cd targetDirectory,执行 source ./bin/activate 激活虚拟目录。如果用的是 csh or tcsh ,命令为 source ./bin/activate.csh。
6、虚拟环境里安装和升级 pip easy_install -U pip,保证 pip 版本大于8.1。
7、安装和升级 tensorflow 。pip install –upgrade tensorflow,如果创建的是 python3虚拟环境,pip 和 pip3其实都是指向 pip3 的,所以不需要像官方文档里一样执行 pip3 install –upgrade tensorflow。
8、如果上面安装 tensorflow 执行失败,可以通过 pip3 install –upgrade tensorflow path 安装。tensorflow path 通过 https://www.tensorflow.org/install/install_mac#the_url_of_the_tensorflow_python_package 查找。
9、到这里已经安装完成啦,开始愉快的使用 tensorflow 吧
10、使用完后 执行 deactivate 退出虚拟环境。
11、如果想卸载的话可以使用 rm -r ~/tensorflow 。
看上面的过程是不是有点繁琐。所以建议使用 docker 来使用 tensorflow。比较简单,只有一个步骤。
1、docker run -it -p 8888:8888 tensorflow/tensorflow bash
不过为了保证这行命令的执行。还需要一波的操作来安装 docker,并配置好加速服务等。好在都是值得的,学会用 docker 好处多多。

vue for 循环中使用 input 无法连续输入问题

vue 的 for 循环中如果使用了 input,input 的值又为循环对象中的值,那么修改 input 的值的时候,会重新刷新 for 循环节点,导致 input 输入框失去焦点。处理方法也比较简单,在 input 的 change 事件里,添加 vue.$nextTick 注册下次刷新的时候重新获取 input 焦点即可。

nginx 代理超时时间设置

在公司维护的一个系统内部有提供接口代理转发功能。今天有使用方找过来说自己有个接口,由于依赖的服务有问题,且暂时性的无法修复,返回数据非常慢,要一两分钟才能返回。现在这个接口在我的系统里做转发,每次请求超过一分钟就会提示接口超时。
首先先了下转发逻辑,转发逻辑底层使用 Nodejs 的 http.request,默认没有超时时间。
再看了下 Nodejs Server 的默认超时时间是 120 秒。
加断点看了下,服务内部已经拿到了转发数据,但是在拿到转发数据之前,浏览器中就显示了超时。这样子看起来不是应用逻辑的问题。
上网搜了下 nginx 的默认超时,发现 nignx 好多不同的超时设置,并且默认都是 1 分钟。
看起来问题就在这里。找公司运维重新配置了下超时时间。在对应 nginx 代理设置中加入

proxy_connect_timeout 120s;
proxy_read_timeout 120s;
proxy_send_timeout 120s;

问题完美解决。

[翻译] wordpress reference/hooks/login_link_separator

apply_filters( ‘login_link_separator’, string $login_link_separator )
描述:
修改登陆表格跳转链接之间的分隔符
参数:
$login_link_separator
(字符串) 分隔符
源码:
文件 wp-login.php
版本:
4.9.0 引入