疯子的自留地

当我老了,也一样写代码.不为别的,只为爱好!

Linux/Mac下设置SSH跳板机

需求

当我们需要登录某一个服务器集群下的某些内网机器时,需要通过该内网中某一个具有外网权限的机器来做跳板机,实现登录到该内网机中.

阅读全文

API返回值设计的一些想法

背景

在用golang做一个mockhttp工具的时候模拟请求公司项目的api时发现用golang将请求结果值解析到struct并通过不同的返回值来判断是否请求成功,比如请求某接口成功时返回值:

{
   "name":"Scofield Peng",
   "age":18
}

失败时返回:

{
   "errcode":200001,
   "errmsg":"server error"
}

咋一看觉得很容易处理嘛,解析成相应的struct,看有没有值,omg,不觉得很累?很麻烦?尤其是像golang的json.UnMarshal()函数,如果接口返回错误时用正确时返回值得struct去解析,你还得判断struct是否为空,如果为空,再用错误时的struct去解析下. 太麻烦了好么!!!

阅读全文

阿里云主机通过Docker安装L2TP

背景

公司业务对接某第三方服务的需要,因为对方服务器白名单机制,需要一个固定IP. 而悲催的是由于公司网络环境无法提供公网IP,只好在外网测试机上面部署一个vpn来进行中转.PPTP因为安全原因现在osx和windows10好像都废弃了,那就直接上l2tp吧!想起以前搭建vpn那累死人的重复劳动,果断使用Docker集装箱.

阅读全文

Linux下查看系统版本号信息的方法

查看Linux内核版本命令:

  1. cat /proc/version
  2. uname -a

查看Linux系统版本的命令:

  1. lsb_release -a,即可列出所有版本信息. 这个命令适用于所有的Linux发行版,包括Redhat、SuSE、Debian…等发行版。
  2. cat /etc/redhat-release, 这种方法只适合Redhat系的Linux:
  3. cat /etc/issue, 此命令也适用于所有的Linux发行版。

Linux修改用户名

killall -u old_name
id old_name
usermod -l new_name old_name
groupmod -n new_name old_name
usermod -d /home/new_name -m new_name
usermod -c "New Full Name" new_name
id new_name

Ubuntu install cairo-dock

sudo add-apt-repository ppa:cairo-dock-team/ppa 
sudo apt-get update

Then if Cairo-Dock is already installed:

sudo apt-get dist-upgrade

else:

sudo apt-get install cairo-dock cairo-dock-plug-ins

ubuntu install synapse

To install synapse in Ubuntu 14.04, open terminal and type

sudo add-apt-repository ppa:synapse-core/ppa 
sudo apt-get update
sudo apt-get install synapse
It should install synapse in your system.

synapse is now available in Ubuntu Universe repository (See here). To install it you need to enable the universe repository . Enable it using

sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install synapse