saltstack pillar 维护

默认情况下,pillar信息是维护在文件中的,虽然方便,如果要自动化的话,就不太方便,如果能存到数据库会方便维护一些。

相关salt模块:https://docs.saltstack.com/en/latest/ref/pillar/all/index.html

将pillar信息存入mysql:

https://docs.saltstack.com/en/latest/ref/pillar/all/salt.pillar.mysql.html

其实,还有现成的模块可以将pillar信息存储mongodb、ldap、redis等

https://docs.saltstack.com/en/latest/ref/pillar/all/salt.pillar.pillar_ldap.html

 

https://docs.saltstack.com/en/latest/ref/pillar/all/salt.pillar.redismod.html

 

https://docs.saltstack.com/en/latest/ref/pillar/all/salt.pillar.postgres.html

https://docs.saltstack.com/en/latest/ref/pillar/all/salt.pillar.git_pillar.html

持续构建之maven + Jenkins + Nexus

一般来讲,maven deploy时要部署到Nexus,需要在pom.xml 中添加如下类似的东东:

如此的话,该pom.xml 就不便于分享,还有人喜欢deploy到自己的Nexus呢;

其实,还可以在mvn deploy 时通过参数的方式来指定,如:

这样的话,不管snapshot还是release都会deploy到相同位置; 正确的姿势为分别设置snapshot和release的位置,如下:

参考:https://maven.apache.org/plugins/maven-deploy-plugin/deploy-mojo.html

xfire 代理设置

xfire 可以通过如下方式设置代理:

需要注意的是,该代理配置并不作用于下载wsdl

java问题

java 用很多内存,占用全部的cpu:

 

golang 中的只读变量

示例:

上面是 golang.org/x/net/proxy/direct.go 里面的代码

  1. 我们显然是可以在proxy包外访问到Direct变量的
  2. 我们显然是无法在proxy包外new 一个 direct 结构变量的
  3. 由于2,而且我们无法改变Direct的变量类型,所以,我们做不到给Direct进行重新赋值

sproxy开发体验

曾经为了让所有服务不允许随便访问公网,要访问公网则必须走代理,于是就需要一个非常NB的代理,能应对各种复杂的需求,于是自己写了一个sproxy(Supper Proxy),支持http 隧道代理、https隧道代理、sni代理。

现在,为了一些特殊的需要,需要在代理之后再转发到一个socket5代理,这样就可以与所有的socket5代理(比如: shadowsocks)实现对接,查了一下资料,其实,修改非常简单,我可以只修改两行代码就能搞定,借助golang.org/x/net/proxy 中的socket5代理,至于如何配置是否走代理,简单通过设置环境变量来实现了,如:

尽管只有两行代码,还是学到了不少东西:

  1. 想让mac上的IDE调试那个需要listen 443的程序,默认IDE不是root启动的,没有权限listen 1024以下的端口,于是通过查资料发现,可以通过端口重定向实现,让需要调试的程序listen 1443, 通过 (http://www.cnblogs.com/fullstack-yang/p/6223960.html ) 提到的方法将443的数据包重定向到 1443, 相关参考: http://www.cnblogs.com/fullstack-yang/p/6224050.html
  2. socks5不仅可以支持ip地址,还支持域名,可以在socks5之前解析域名,也可以在socks5之后解析域名;原本程序是在socks5之前解析域名的,程序偶尔会调试不通,因为socks5之前通过 114.114.114.114 解析到的 www.google.com 的ip地址是被篡改过的,有时候是Twitter的,有时候是facebook的,还有不知道是谁家的,这种情况就需要把解析域名的事情放到socks5之后做了
  3. 关于域名被篡改的情况,还可以通过dnscrypt-proxy 来解决,只是,这个需要部署dnscrypt-server,不过也有很多公开的dnscrypt-server,稍微麻烦一些,没尝试
  4. 或许可以有一种dns-proxy,可以把dns请求转发到socket5,也是挺好的,注意: golang.org/x/net/proxy 中的socks5尚不支持udp  (https://github.com/better0332/myproxy/blob/master/proxy/socks5.go) 这里有人实现过,不过star好少
  5. 也可以自己实现一个dns-server
  6. 单步调试golang时,提示找不到lldb-server, 解决办法: