Monthly Review 2016-01

  1. Web 前端面试了不少人,优秀的人才实在少。
  2. 面试别人的时候我就在想,如果现在让我去面试,我能不能行?比方说前端,半路出家不查文档就不会写的水平,如何说服对方?
  3. 在我看来,好的开发要有 扎实理论基础+描述问题的能力+解决问题的能力+快速学习的能力。
  4. 对接神策数据分析,接下来要用这个数据结果去辅助产品改进和运营。
  5. 房子交税-过户,由于价格上涨,业主有想违约,好在还算顺利的解决。
  6. 金钱面前,合同契约什么的还是脆弱。

[self review:2015];

工作

技术上,前端和 Golang 有学习产出。现在一个互联网产品从前端到后端整个流程都接触,广度上能有一些把控,但在深度上还不够,Swift 一直没有去学习储备,作为技术负责人只能算及格。

管理上,Q4 开始转型作为整体负责人,在产品和运营上的短板很明显,这也是一直以来自己做的不够的地方,来年还得努力。

生活

每个月回家一次的节奏,很奔波,但至少六六记得我们,而且也多了很多陪父母的时间,挺好。

暑假时候带六六和妈妈、妹妹来北京住了 40 天,幸福。

11 月份开始跑步锻炼,现在体重卡在 82 波动,目标是保持在 80 以下。

买了房。

Monthly Review 2015-11

  1. 代码产出依然是业务驱动。除了常规维护,一个展示型网站用 Go 模版做服务端渲染,挺好用。
  2. 主服务上了 HTTPS,这是第一步,后面跟进 HTTP/2。
  3. 带实习生,零基础,效果很差。
  4. 参加 OpenRestyConf,唯一收获是见了春哥真人,感受春哥的技术学习方法。
  5. 开发以外的工作增加,主要是运营管理安排。运营关键就是找对那个人。
  6. 周末回家,六六现在和妈妈亲。两天还是太赶,只能在家一晚上。
  7. 向阳也做爸爸了。
  8. 11.30,科比宣布赛季结束后退役。

Letter from Kobe

Dear Basketball
From the moment
I started rolling my dad’s tube socks
And shooting imaginary
Game-winning shots
In the Great Western Forum
I knew one thing was real:

I fell in love with you.

A love so deep I gave you my all —
From my mind & body
To my spirit & soul.

As a six-year-old boy
Deeply in love with you
I never saw the end of the tunnel.
I only saw myself
Running out of one.

And so I ran.
I ran up and down every court
After every loose ball for you.
You asked for my hustle
I gave you my heart
Because it came with so much more.

I played through the sweat and hurt
Not because challenge called me
But because YOU called me.
I did everything for YOU
Because that’s what you do
When someone makes you feel as
Alive as you’ve made me feel.

You gave a six-year-old boy his Laker dream
And I’ll always love you for it.
But I can’t love you obsessively for much longer.
This season is all I have left to give.
My heart can take the pounding
My mind can handle the grind
But my body knows it’s time to say goodbye.

And that’s OK.
I’m ready to let you go.
I want you to know now
So we both can savor every moment we have left together.
The good and the bad.
We have given each other
All that we have.

And we both know, no matter what I do next
I’ll always be that kid
With the rolled up socks
Garbage can in the corner
:05 seconds on the clock
Ball in my hands.
5 … 4 … 3 … 2 … 1

Love you always,
Kobe

Letter from Kobe

太用力的人跑不远

太用力的人跑不远

跑步如此,代码如此,人生亦是如此。

Linux 监控文件被什么进程修改

安装: apt-get install auditd.

  1. auditd 是后台守护进程,负责监控记录
  2. auditctl 配置规则的工具
  3. auditsearch 搜索查看
  4. aureport 根据监控记录生成报表

比如,监控 /root/.ssh/authorized_keys 文件是否被修改过:

aditctl -w /root/.ssh/authorized_keys -p war -k auth_key

  • -w 指明要监控的文件
  • -p awrx 要监控的操作类型,append, write, read, execute
  • -k 给当前这条监控规则起个名字,方便搜索过滤

查看修改纪录:ausearch -i -k auth_key,生成报表 aureport.

Redis Crack

http://www.antirez.com/news/96

昨天一服务器被黑,从 auth.log 发现有陌生 IP 居然可以通过 public key 登录,排查后发现是因为 Redis 不规范使用造成的:

  1. root 启动了 redis 实例,默认端口 6379,没有 bind IP,没有 auth 验证
  2. 被扫描到可以远程登录,config set dir /root/.ssh 修改数据保存路径,config set dbfilename "authorized_keys" 修改数据保存文件名
  3. 把 key 写入 redis,bgsave,即可用 key 登录

简单威力大。修复预防:

  1. 禁止 root 启动 redis
  2. Bind IP,本机+内网就可满足绝大数服务
  3. 修改默认端口
  4. 开启 auth 验证

ngx_lua vs Go

由于移动互联网的火爆,前后端分离的开发模式越来越流行:后端通过 API 提供数据,前端 native or web 做数据展示交互。那么谁能把吐数据这件事做的又快又好,谁就比较适合做服务端应用开发。

2011年我们开始用 OpenResty(ngx_lua) 作为服务端应用解决方案,最近一个项目换用 Go,简单做个对比:

ngx_lua:

  1. 快,和 nginx 简直绝配,尤其是分执行阶段进行操作
  2. 同步方式写异步非阻塞,相比 Node.js 回调,代码体验好
  3. 但还不够好,欠缺在开发效率,社区丰富程度,我们这些使用者也有责任
  4. Lua 语言非常棒,简单高效,但相较于其他语言这些年进步太慢
  5. LuaJIT 让性能爆表,但只兼容到 Lua 5.1,见过很多因为用错版本而引发错误。原开发者不再继续维护,转有 CloudFlare 接手,后续有一定不确定性 via
  6. nginScript 现在和 ngx_lua 完全没有可比性,未来很难说,毕竟有官方支持,加上 js 一统江湖的趋势
  7. nginx 本身主要处理 HTTP 业务,适用范围相对有限,不过现在有了 TCP Proxy,后面想象力也会很大。

Go:

  1. 静态语言
  2. 学院派看 Go 语言的设计有很多缺陷,但从工程的角度,简单,规范,标准库丰富
  3. 开发效率高,自测性能在 ngx_lua 70% 左右,大多数情况下完全够用
  4. goroutine + channel,同步方式写异步
  5. 方便的工具链,go fmt/doc/test/pprof
  6. 跨平台编译,单二进制文件,部署方便
  7. 虽然有 go get,但一开始没有原生包管理是很大的失败,现在社区已经分裂出 godep/govender/nut/gb/glide/gopkg.in 等等

Monthly Review 2015-10

  1. 新项目主要做管理后台的前端开发,发现我还挺喜欢写前端的。
  2. Web vs Native,由于微信网页应用的助力,web 已然赢了,作为代价,要接受 H5 这个叫法。
  3. 工作内容转变,除了开发,运营、管理都开始接手,加油。
  4. 把老张从杭州拉到北京,一起做事。
  5. 十一回家又醉酒一次。

vimdiff

vimdiff a.txt b.txt

  • ]c - 跳到下一个差异点
  • [c - 上一个差异点
  • dp - diff put, 将差异点的内容从当前文件复制到另一文件
  • do - diff get, 相反,从另一文件复制到当前文件