React 全局状态库选型
背景 目前老项目使用的 redux 性能较差且难上手/代码复杂,useContext 虽然使用上简单但性能较差,需要选型一个易上手/性能好/组件化的三方库,以下是 redux/useContext 在处理复杂业务时的缺点 组件间的状态共享只能通过将 state 提升至它们的公共祖先来实现,但这样做可能导致重新渲染一颗巨大的组件树(管理成本和子组件意外渲染问题) Context… »
女王控的博客
背景 目前老项目使用的 redux 性能较差且难上手/代码复杂,useContext 虽然使用上简单但性能较差,需要选型一个易上手/性能好/组件化的三方库,以下是 redux/useContext 在处理复杂业务时的缺点 组件间的状态共享只能通过将 state 提升至它们的公共祖先来实现,但这样做可能导致重新渲染一颗巨大的组件树(管理成本和子组件意外渲染问题) Context… »
前端远程调试 背景 由于有些时候不方便到用户实地/远程桌面复现 bug,需要远程查看对方网页的控制台,经过预研发现远程调试工具 page-spy-web 比较合适 实现 在开发机(由于开发只能完全控制开发机,同时要保证此开发机能被下面的前端服务器访问)上部署一个 docker 镜像 通过特定域名(可以自定义域名后缀,配合下面的前端服务器),配置 nginx 转发到此开发机 由于前端服务器需要能访问到开发机,所以需要在前端服务器对应的 nginx… »
背景 针对 postgres 某个表里面的 labels 字段(labels 字段是一维数组类型)做复杂查询,要求支持常见的且,或,非等等功能 原来的业务逻辑已实现了且,或,非功能,但不支持括号来提高运算符的优先级 方案 显而易见的方案就是实现一个 python 版本的语法解析器来支持各种语法,有以下方案 ply 语法简单易懂,上手有一定难度 pyparsing 语义结构化比较好,比 ply 上手难度要高 综上,采用方案 1 实现 由于后端使用的 django… »
背景 在线上部署期间,或者用户长时间没有访问网页等等各种情况,有一定概率会出现以下形式的报错,导致网页白屏 原因与方案 由于现代前端工具链打包出来的,尤其是 webpack 的项目,其主入口默认不缓存,其他文件长期缓存,缓存的文件通过改变文件名(一般是 hash)来更新 所以在部署期间或者用户没有长时间打开网页,可能会请求已被删除的对应的 chunk 或者 chunk… »
背景 python 的 django 后端在刚启动时内存占用上升很快,导致对应的 pod 内存溢出,很多接口响应慢 方案 需要找到哪行代码导致的内存泄漏,有以下方案 pympler scalene (python3.8 以上,不符合) memray (python3.7 以上,不符合) 使用 python 内置的 tracemalloc 库 由于项目用的是 python 3.6 的版本,所以采用方案 1 和… »