前言
最近想给gopeed
的文档网站添加一个统计用户的访问量的功能,所以就想到了 firebase 的 analytics,但是在 vuepress 中整合 firebase 的 analytics 并不是很简单,所以就有了这篇文章。
在 Go 中,可以通过传递指针来改变函数外部变量的值,例如:
1 | func main() { |
但是在某些情况下,我们可能需要传递interface{}
来接收任意的指针变量,这时候就会遇到一个问题,interface{}
类型声明的变量是不能直接赋值指针的,例如:
1 | func main() { |
最近碰到一个神奇的网站,在浏览器可以打开,但是通过 curl 或者 代码访问就直接 403,我估摸着这肯定是做了UA校验
,于是请求的时候把浏览器的 UA 给带上,然后访问发现还是 403,不过这也难不倒我,肯定是还有校验其它的请求头,直接浏览器打开 network,把所有的请求头复制过来并且带上,确保我和浏览器在 http 协议层面的请求完全一样,这样不可能会失败了吧,然而运行完发现还是 403。
放个地址: https://pixabay.com
// TODO
为了开发公司的一些效率工具 UI,我选择了 Vuetify,它是一个基于 Vue 的 UI 框架,它提供了一个简单的组件库,可以让我们快速开发出一些简单并且好看的 material design 的 UI。
但是通过官方脚手架生成的项目,默认是通过引入外网 cdn 的方式导入图标以及字体文件,然而国内的网络访问这些资源比较慢,所以就想把这些资源放到本地,提高访问速度。
由于公司内部所有服务都是跑在阿里云 k8s 上的,然后 dubbo 提供者默认向注册中心上报的 IP 都是Pod IP
,这意味着在 k8s 集群外的网络环境是调用不了 dubbo 服务的,如果本地开发需要访问 k8s 内的 dubbo 提供者服务的话,需要手动把服务暴露到外网,我们的做法是针对每一个提供者服务暴露一个SLB IP+自定义端口
,并且通过 dubbo 提供的DUBBO_IP_TO_REGISTRY
和DUBBO_PORT_TO_REGISTRY
环境变量来把对应的SLB IP+自定义端口
注册到注册中心里,这样就实现了本地网络和 k8s dubbo 服务的打通,但是这种方式管理起来非常麻烦,每个服务都得自定义一个端口,而且每个服务之间端口还不能冲突,当服务多起来之后非常难以管理。
于是我就在想能不能像nginx ingress
一样实现一个七层代理+虚拟域名
来复用一个端口,通过目标 dubbo 提供者的application.name
来做对应的转发,这样的话所有的服务只需要注册同一个SLB IP+端口
就可以了,大大的提升便利性,一方调研之后发现可行就开撸了!