一、技术知识
《降低软件复杂性一般原则和方法》
简介:
本篇文章是围绕着“降低复杂性”这个主题展开的,很多重要的结论来源于John Ousterhout的著作《A Philosophy of Software Design》,作者觉得很有共鸣,就做了一些相关话题的延伸、补充了一些实例。虽说是”一般原则“,也不意味着是绝对的真理,整理出来,只是为了引发大家对软件设计的思考。
读后心得
现代系统复杂性解决原则
- 由于互联网的变化过快,系统是无法一次性满足的,都是通过一个个功能模块衍生迭代,系统才会逐步成型;
- 专业化分工和代码复用是促成了软件生产率的提升的准则,由专业的人负责专业的事;
- 分模块是从垂直方向来分解系统,如:微服务。分模块降低了单模块的复杂性,但是也会引入新的复杂性,例如模块与模块的交互;
- 完善文档和注释,因为代码能够描述程序的工作流程和结果,却很难描述开发人员的思路。
好的注释能够帮助解决软件复杂性问题,尤其是认知负担和不可知问题(Unknown Unknowns)。
设计技术方案前的两个问题
- 其一,为什么该方案可行?
- 其二,在已有资源限制下,为什么该方案是最优的?
- 为了回答第一个问题,我们需要在技术方案里补充架构图、接口设计和时间人力估算。
- 而要回答第二个问题,需要我们在关键点或争议处提供二到三种方案,并给出建议方案,这样才有说服力。
技术方案设计原则
- 复杂系统最好的设计原则就是严格分层——内部的层只对相邻的层次可见,这样就可以将一个复杂问题分解成增量步骤序列,分层系统最有名的实例是TCP/IP网络模型。
- 复杂性下沉,永远对用户友好的设计就是好设计。
- 异常错误处理原则就是:尽可能减少需要处理异常的可能性。而最佳实践就是确保错误终结,例如删除一个并不存在的文件,与其上报文件不存在的异常,不如什么都不做。确保文件不存在就好了。
阅读时间:15~20分钟
其他更多关于软件设计原则可以前往:
https://tech.meituan.com/2019/09/19/common-method-of-reduce-complexity.html
十大 npm 最佳安全指南,教你如何避免安全漏洞!
简介:
你重视 npm 漏洞吗?无论是前端还是后端开发人员,都应该重视 npm 的安全性最佳实践。开源代码的安全审查是提升安全性的关键所在,其中 npm 包的安全性应该是首要考虑因素,因为我们发现即使是官方的 npm 命令行工具也很容易受到攻击。
本文提供的这份备忘列表中,我们将列出针对开源维护人员和开发人员的十大最佳安全实践和生产力提示。
快速阅读
十大安全指南
- 不要把秘密发布到 npm 存储库上
- 强制锁文件
- 忽略运行脚本,最小化攻击面
- 评估 npm 项目的健康状况
- 审核开源依赖项中的漏洞(使用 Snyk 扫描安全漏洞)
- 使用本地 npm 代理
- 负责任地披露安全漏洞
- 启用 2FA
- 使用 npm 作者令牌
- 了解模块命名约定和域名仿冒攻击
喜欢阅读或者对安全更加注意,请点击下方链接前往阅读:
把网站升级到http/2
二、一周新闻
Vue 3.0 最新进展,Composition API
本文主要分以下几个主题讨论最新的Composition API:
- reactive API
- ref API
- watch API变化
- computed API变化
- 生命周期钩子变化
- TypeScript和JSX支持
Composition API 可谓是修复了 Function API 诸多问题而提供的最新“修正案”,下面来看比起之前的vue-function-api,究竟修改了些什么呢?请前往阅读:
三、玩遍前端
小tips: 元素focus页面不滚动不定位的JS处理
全新的API参数preventScroll,感觉请阅读原文:
https://www.zhangxinxu.com/wordpress/2019/09/js-focus-preventscroll/
浏览器的一些“滚动”行为鉴赏
应该你遇到所有的“滚动”事件的相关问题和现象都可以在这篇文章里找到了:
- 本文作者: qborfy
- 本文链接: https://qborfy.com/2019/09/24/wx/20190924/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!