银行网点转型

招行的银行卡到期换卡,最近忙到没有时间,新卡片制好了收到短信通知后,都拖了将近一个月没去取。感谢支付宝和微信,现在真的是不需要现金了。于是周末专门花了半天时间去了北三环的招行换卡,首先是坐地铁,然后再换共享单车骑行一会儿。我本以为银行人不多,只是取一张卡而已,可以很快办完,谁知竟然花了40多分钟。

首先,现在这家招行的网点居然没有取号机了,而是要求我用招行网银App扫一个二维码取号。我在想这分明是为了推广网银App,要是我没用智能手机怎么办?要是我没有安装网银,还得当场下一个不成?取了一个B开头的号之后就开始等了。银行里人的确不多,一个诺大的网点其实只有三、四个客户,开了两个普通高柜窗口,两[……]

继续阅读

Shell 中 grep 的副作用

最近在 Jenkins 中编写项目的 Build 脚本时碰到一个关于 grep 的副作用的问题,让人感觉挺费解,解决时需要用一点小技巧,因此在这里记录一下。

先描述一下所碰到的问题的现象,我需要用 Jenkins Shell script 将为我们的项目部署到 Kubernetes cluster 上,在部署之前会进行一些权限的检查和设置,因此在脚本中直接使用了 kubectl 查询资源并结合 grep 的方式来判断资源是否已经创建出来了,例如:

当 Jenkins Job 开始运行时,虽然 service account 并不存在,但是该 Job 却莫名其妙失败了,并没有看到[……]

继续阅读

Go 语言中的超时处理

最近在项目里用 Go 语言对一些微服务进行重构,由于 Go 对我来说仍然算是一种新语言,因此在项目过程中碰到的一些比较不同一些写法,将会以 Tips 的方式记录在这里。今天想记录的是 Go 语言里的超时处理。

超时在一些业务场景里非常普遍,例如:

– 数据库访问操作,进行网络连接时通常都有超时时间。
– 本地客户端用阻塞方式异步访问远程,等待一段时间之后,如果远程没有返回结果,则认为超时。
– 微服务在启动时,需要初始化某些数据,例如等待服务注册表返回的总线密码等等,如果在规定的时间内未获得需要的内容,则认为超时,服务启动失败。

在 Java 等传统语言里,通常会首先记录当前时间[……]

继续阅读

新项目

八月底一位资深的同事离职,他手上的一个新项目交给我来带,简单的交接后同事就离职了。九月初开始上手这个项目,由于这个项目实际上是后台从老项目迁移,前端重新开发,其中使用到的技术基于微服务架构非常繁杂,简单列举一下:

后端:

  • 开发语言:Golang, Ruby, Shell
  • 开发框架:Sinatra (Ruby), Beego (Go)

前端:

  • 开发语言:Javascript (ES6)
  • 开发框架:React, Redux, Saga
  • 编译工具:Babel
  • 打包工具:Webpack
  • 包管理器:npm

基础架构部分:

职场麻辣烫

在职场混迹十几年了,个中酸甜苦辣,冷暖自知。时下微信朋友圈里职场的心灵鸡汤仍然算是流行,只是在大多数时刻鸡汤并非良药,看完也就看完了,你可能当时心中掀起一点涟漪,连波澜都算不上,甚至连小小的改变都很难。相反,所谓告诉你真相的心灵毒药却少之又少,而往往是这些“毒药”才能够刺激到你,或者会幡然醒悟作出改变也未可知。

努力了未必成功

举个例子:很多鸡汤都鼓励你要成长,你想升职,必须先努力训练自己的能力,做到能取代你的老板,自然就会升职了。但实际情况往往大相径庭。在大公司,关键还是看有没有空出的位置让你升,老板升了,你才有机会。在小公司大概会好一点。所以,努力大概是必要条件,但不是充分条件。你努力[……]

继续阅读