太用力的人跑不远

太用力的人跑不远

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

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, 相反,从另一文件复制到当前文件

Monthly Review 2015-09

  1. 新项目管理后台开发,依然是 Angular+Material,npm+browsersync+jshint+tern,这套组合目前很对我的胃口,开发效率不错。
  2. 感叹前端的飞速发展,一下发现新东西,比如 tern,tsd,再一下发现在用的东西已经过时,比如最近在流行 React+Alt+Flux,Angular 2 再不出来真的连汤都没了。
  3. 社区项目维护开发,居然也有小 30 commits,服务性能上有一些提升。
  4. 苹果出新手机,然并卵,毕竟穷。电脑升级新系统,看起来可以再战一年,如果不开 XCode 的话。
  5. 十一回家,最高兴的是,刚到家的时候六六自己跑过来抱抱,那一刻心都化了。

Growth hacking

Growth hacking 是市场运营通过技术形式获取用户的方法,包括数据分析,社交网站,EDM 等,据说 Facebook 还有专门的 Growth Team。今天见识了这种方法的力量。

起因是乌云的这篇文章:XCode编译器里有鬼 – XCodeGhost样本分析,Xcode 被挂马,网易云音乐中招,看后顺手测了自己常用的应用,发现另外几个中招,在群里吐槽后就没再继续关注,之后又看见微博有人在转,就发了 Twitter:

通过 Charles 抓包,会向 http://init.icloud-analysis.com 发请求的有网易云音乐,中信银行动卡空间,12306,滴滴打车 #XcodeGhost 13:41

发之前就在想这个肯定会爆掉,但没想到有这么火爆:

  1. 迅速被 RT,涨 fo。
  2. 约十五分钟后被转发到微博,包括 @Fenng,@onevcat 等大 V 二次转发。
  3. V2EX,知乎,36kr,iApps,虎嗅等科技网站发帖,有引用 Twitter 链接/截图 1 2 3 4 5
  4. 15:10 腾讯科技 App Store遭病毒入侵 网易云音乐等中招,而且他们应该是有通过 Linkedin 查看我的工作信息,之后该文被其他多家引用。

根据 Tweet Activity 统计,原推一共 impressions 14000+,engagements 1300+,RT 170+,followers 增长 100+,考虑到访问 Twitter 的困难,这个数据还是非常恐怖的。微博的量应该更大。

这是 Growth hacking 的一次直观感受,如果产品推广也能有这样的效果该多好 :D


作为开发者,#XcodeGhost 要引起重视:

  1. 正当渠道下载应用,不限于 Xcode,检查签名/checksum。
  2. 用到的第三方 SDK 也要检查来源,设想微信 SDK 被调包?!
  3. 重视安全,一旦被人发现没穿裤子,负面信息足以摧毁一个产品。

Conway's Law

M.Conway:

organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.

软件系统的架构反映了公司内部的组织结构、团队间的通讯结构。

Go Big or Go Home

Go Big or Go Home