R·ex / Zeng


音游狗、安全狗、攻城狮、业余设计师、段子手、苦学日语的少年。

2018 回顾与展望

时间过得真快啊,回想起跨年的时候,仿佛就在前天。(…… 不管怎么说,2018 年已经过去了,还是要稍微总结一下的。 技术 作为一个程序员,看到自己去年的技术总结,如果觉得里面的内容特别水,说明这一年的长进还是很大的。 今年除了学到了更多新知识,还对两个比较著名的开源项目做了一点微小的贡献。由于发现前端的内容基本是以抄 API 为主(只有听没听说过,没有会不会),于是我开始追求一些更深入的...

Go 如何优雅的验证前端请求体

背景 从开始写 Go 到现在也过了两个月了。我现在负责的是两个新系统的后端项目,很多功能还没有搭起来,例如对 Request Body 的合法性检验。目前的校验规则都是手动写在业务代码中的,既复杂又不容易扩展。我觉得,在我用过的前端的框架中,Element UI 的验证规则是最优雅的,于是就想在后端也实现这么一套验证规则。 调研 Element UI 的表单验证使用了 async-val...

【多图预警】香港初见

“去香港”,这是让我落户深圳的最主要的理由。当我历经艰难险阻终于拿到了港澳通行证后,便开始跟朋友提早规划好了行动路线。然而朋友的公司似乎比较坑,周六突然临时加班……经过了一番思想斗争,我决定一个人去转一转。由于是一个人,所以我没打算去一些著名景点,只是想把香港的一小片地方走的熟一点,顺便感受一下资本主义的气息,23333。 过境 由于我比较晕车,于是决定走福田口岸。其实之前来过一次福田口岸,...

从排查 Go CAT Client 的错误中学到的

背景 一个月前,我们仓库的操作人员感觉系统的响应太慢,点击一个按钮需要等待十几秒才能出结果,于是给我们加了个前端监控的需求,也就是监控 API 的响应时间。我跟同事借用了漫威宇宙中的观察者 Uatu 的名字,给项目的前后端分别命名为 uatu-lib 和 uatu-service 。后来项目经过几次修改,已经可以在前端监控 DNS、TCP、响应时间,还有前端的一些未被捕获的报错(包括 V...

一次不到两个月的深圳落户小记(招工)

引言 来了深圳好几个月了,期间认识了很多有趣的人,也慢慢激发了我想经常去香港的念头。但是查了一下发现,去香港需要港澳通行证,而且一年多次的签注仅针对深圳户口开放,于是我就决定落户了。 (全程无图) 先说一下自己的情况: 我在深圳这儿没有任何亲属 我不是党员,没有复杂的党组织关系 我是本科毕业,因此无需研究生博士生的步骤 我毕业没多久,但先在其它城市工作了一段时间,于是我的报到证和...

由于 gin-cors 而带来的 Bug

我最近在写一个管理系统的后端项目,用的是 Go,使用了 gin 来写服务器。跟前端本地联调的时候一直是没问题的,但直到有一天前后端部署到了 Test 环境开始测试,发现所有的 GET 请求都没问题,但所有的 POST 和 PUT 请求都 403 了。 我再三检查了一下 Request Authorizor Middleware,确认了并没问题(不然前端本地访问也不会正常),而且如果确实因为...

SUCTF 2018 招新赛 Writeup

前几天偶然在群里看到了 SUCTF 的比赛链接,心想自己好久没有做过安全的东西了,这博客也好久没有写过正儿八经的安全文章了,于是就参加了一下。下面就写一写我过的那些题吧! 题目是按照在比赛中的顺序,而不是难度顺序。 REV basic re 运行程序发现输出了 flag format: SUCTF{xxxxxxxxxxxxxxx} ,拖进 IDA 发现该字符串在 sub_140012...

由于浏览器的优化导致的 Bug 们

按理说,随着时间的发展,浏览器会做各种各样的优化来提升网页浏览的性能,但不是所有优化都能起到积极的效果,有的优化甚至属于“智障”级别。下面我就分享三个我遇到或听说的、由于浏览器自身的优化导致的一些 Bug。 Passive Event Listeners 我之所以知道了这个东西,是因为昨天邻居向我抱怨的一个问题,他的移动端页面使用了一个日期选择器,但在上下滑动选择日期的时候,Console ...

Babel 如何转换 async-await 至 ES5

背景 中午吃饭的时候跟同事讨论起了 async-await ,我认为 async-await 是 Promise 的语法糖,但同事认为更贴近 Generator。于是趁下午摸鱼的时间查了一下资料,并自己用简单的例子对比了一下转换前后的代码,大概有了一定的了解。 讲真,在刚看到转换结果的时候我整个人是懵逼的(虽然很早以前就看过了,毕竟每次 async-await 函数报错的时候调试器...

从前端性能监控发现的 Chrome Bug:eval、onerror 与同源策略

背景 最近在做公司的一个前端监控项目,有一个需求是需要捕获前端错误并上报。这个需求其实很简单,使用 window.onerror 或者 window.addEventListener('error', ...) 就可以捕获异常数据,MDN 的 这篇文章 讲述了具体的用法,AlloyTeam 的 这篇文章 也讲了一些例子,以及针对触发了同源策略的应对方案。 ...

在 VSCode 中配置 Go 调试环境

前期准备 作为一个 Go 开发者,首先需要把系统中的 Go 的环境配好(包括环境变量和包管理器),具体怎么配这儿就不说了。不过 Go 的项目似乎都需要跑在 $GOPATH/src 下面,感觉有点反人类。Go 最推荐的调试器就是 Delve,安装和使用方法这儿也不说了,正确安装后应该可以在命令行中直接运行 dlv 命令。 想看结果的同学,可以直接跳到文章末尾,那儿有可以运行的配置。 ...

雪碧图的应用场景 & 一种生成算法

CSS 雪碧图 相信上古时期搞过前端的同学都知道,可以通过合并一些小图片、使用 CSS 控制 background-position 的方式来减少 HTTP 请求次数,从而优化网页加载时间,这就是 CSS 雪碧图(Spritesmith)。不过自从 HTTP/2 出来之后,这个用途就已经没什么意义了。当然,它也可以避免当正常状态与 hover 状态使用不同的图片时,首次 Hover 要...

这是我们共同度过的

第 3164 天