分类 技术 下的文章

nginx/tengine开启 ssl 后不支持 TLS1.2解决办法

准备把我之前的一个 web 应用弄成微信小程序时遇到了 TLS1.2的问题,翻遍了Google,重新编译安装了最新的 openssl,tengine等各种库,即使开启了 TLS1.2,可是请求时仍然响应的是 TLS1.0。折腾了一个通宵,最终发现果然是自己傻逼了,把自己坑得产不忍赌。

最后问题原来是曾经有一个被废弃的主机箱配置过 ssl,当初配置该主机只设置了支持 TLS1.0。而如果 nginx需要支持 TLS1.2,那么需要将所有主机的 ssl 配置都改为支持 TLS1.2。泪奔~~~

记录在这里,希望能给相同问题的哥们儿有所帮助~~~

glide get/update时报Error looking for testing解决方案

在使用glide管理go项目依赖包时,一旦我写了测试用例,再使用glide update/glide get xxx时就会出现下面的错误:

[WARN]  Unable to checkout testing
[ERROR] Error looking for testing: Cannot detect VCS
[ERROR] Failed to retrieve a list of test dependencies: Error resolving imports

很纳闷,testing包难道不是官方包?怎么还会说找不到呢?在Github上发现我并不孤单,于是在相关的issue下面回复了下, 后来发现原来是我自己的$GOPATH下面有一个testing的包,而这个包是我几年前初学golang时直接建立的文件夹,bingo,把testing这个文件夹重命名了一下,问题解决. 附上issue上的解决方案:

  1. check GOROOT before GOPATH in dependence.FindPkg (related to issue #577 )
    If there is "testing" project in GOPATH, pkg "testing" will be found in GOPATH success, "testing" and will be inserted into fetching list.
  2. only deal with first path on GOPATH, skip others
    If GOPATH has more than one paths, "GOPATH=/opt/gopkg:/home/someone/goprj" for example, trying to fetch own private project in goprj is strange. We should only fetch and vendor pkgs in first path of GOPATH.

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