R·ex / Zeng


音游狗、安全狗、攻城狮、业余设计师、段子手、苦学日语的少年。 MUGer, hacker, developer, amateur UI designer, punster, Japanese learner.

利用 Trie 树的变种优化带参数路由的匹配

背景我目前负责的平台需要做一个转发功能,大概的需求如下:把前端发过来的某些 URL 直接转发到第三方系统;需要在转发过程中添加带有用户和国家信息的 JWT header 以供第三方系统使用;需要在我的平台上为不同 URL 做鉴权,例如 URL a 需要 rule 的读权限,URL b 需要 rate 的写权限;第三方系统的管理员可以在我的平台上自由配置转发规则,例如把 /admin 转发到他们的 /user/admin;URL 需要支持带参数,例如 /admin/:email 可以转发到 ...

一次对 Chromium 源码分析的经历

问题起因前几天,我们组的 Leader 在准备内部技术分享的 PPT,是关于 Chrome 底层的一些内容。然而在准备的过程中,发现了 Chrome 在某些情况下会重复请求服务器资源。这是明显不合理的设计,因为 Chrome 并不知道每个请求是否符合幂等性,代替开发者自动重新请求可能会导致不可预知的问题,于是 Leader 便开始寻找问题所在。刚好被我看到了,于是便过去帮一下忙(当了一个小时的小黄鸭),最终我们发现了问题所在。回家后,我觉得很有必要完全靠自己把这个问题仔细研究一下,毕竟我看...

对于地址库需求的优化

背景作为一个电商平台,我们需要有一个统一的地址库,对这个库的配置页面,就落到了我负责的运营平台中了。对于这个库来说,大概的几个需求如下:以 Entity 维度来区分,例如 Malaysia 和 Taiwan 的数据是不互通的;每个 Entity 中的数据都是一棵树,一共有四层,分别代表 State、City、District、Street;需要支持如下操作:给定一个点,需要能找到从它到根节点的所有点,例如粤海街道上面是南山区、深圳市、广东省;给定一个点,需要能找到它的所有子孙后代,例如广东...

Docker for Windows 无法共享磁盘的问题

TL;DR: 解决方案在 文章末尾。之前为了开发方便,我一直在用 Docker for Windows 作为我的开发环境。但突然有一天,Docker 突然无法在 Shared Drives 里面共享磁盘了,会报一句这样的提示:A firewall is blocking file Sharing between Windows and the containers. See documentation for more info.看起来是防火墙的问题。我知道 Docker for Wind...

搭建付费的 MXroute 并了解邮件相关的域名记录

本文并非为匿名人士所编写,第三方服务一般都会有审查机制,因此无法保证敏感数据的安全。背景之前我的域名邮箱 [email protected] 一直用的是国内的某个服务,最近觉得国内服务的限制比较多,于是打算将其迁移到国外服务。必要的要求有:不暴露自己服务器的真实 IP价格不要特别贵不会被常见邮箱识别为垃圾邮件界面尽量美观,需要支持 IMAP(或 POP3) 和 SMTP其它条件类似时,SaaS >= PaaS >= IaaS问了几个人,自己也搜了一圈,对比下来发现 MXroute ...

2018 回顾与展望

时间过得真快啊,回想起跨年的时候,仿佛就在前天。(……不管怎么说,2018 年已经过去了,还是要稍微总结一下的。技术作为一个程序员,看到自己去年的技术总结,如果觉得里面的内容特别水,说明这一年的长进还是很大的。今年除了学到了更多新知识,还对两个比较著名的开源项目做了一点微小的贡献。由于发现前端的内容基本是以抄 API 为主(只有听没听说过,没有会不会),于是我开始追求一些更深入的东西,例如 Babel、代码高亮、不可变数据结构、性能优化。前端方向首先要提的就是:把整个网站的样式重写了一遍,...

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

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

【多图预警】香港初见

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

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

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

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

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

由于 gin-cors 而带来的 Bug

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

SUCTF 2018 招新赛 Writeup

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

这是我们共同度过的

第 2686 天