new Array(8).map(i=>[])这种声明二维数组的方式会报错
改成 new Array(8).fill().map(i=>[])即可
报错的原因是 new Array 产生的数组比较特殊 有length 但是没有内容,所以无法迭代
不过我一般用 Array.form({length:8},i=>[])这么初始化
new Array(8).map(i=>[])这种声明二维数组的方式会报错
改成 new Array(8).fill().map(i=>[])即可
报错的原因是 new Array 产生的数组比较特殊 有length 但是没有内容,所以无法迭代
不过我一般用 Array.form({length:8},i=>[])这么初始化
includes find,Promsie等实现@babel/polifill 这个垫片是babel官方提供的,相当于全量引入了长期支持的API,以及使用了的部分API1 | import "@babel/polyfill"; |
@babel/preset-env根据使用的API动态的使用垫片,项目中没用过的就不用垫了。core-js是一个专门的垫片仓库@babel/preset-env 的配置项 useBuiltIns有entry 与 usage两个选项,默认值是false,全量引入,体积最大。entry需要手动在代码入口加上 import '@babel/polyfill',表示按照目标兼容浏览器版本全量加载,体积小一些。usage表示根据API按需加载,体积最小。@babel/preset-env的配置项 corejs:2默认是2.x,如果需要使用core-js@3需要修改这个配置项corejs:3core-js的垫片会直接修改API 的原型与全局方法@babel/plugin-transform-runtime插件会做两件事,第一辅助函数一次性引入,防止重复。第二,垫片作为闭包方法调用,防止全局污染npm i @babel/core、@babel/preset-env @babel/runtime-corejs3 @babel/plugin-transform-runtime
1 | { |
core-js 是一个通用的垫片仓库,babel的垫片相关功能依赖core-js
A组: 维护一个UI组件库
B组: 维护一个单页APP,内部有很多公共函数库,业务相关组件
C组: 新建一个单页APP,需要用到A组的UI组件库,B组项目的公共函数库,部分业务组件
A组将UI库发布到npm仓库,B组将公共函数库作为单独的npm包发布,业务组件拷贝一份到C组的代码库
函数库与业务组件都打成umd模块放到静态资源服务器上,C组以script标签动态引入,以AMD模块的使用方式从window作用域下使用
ModuleFederationPlugin 插件配置成共享模块1 | // 假设B组的页面部署到 www.baidu.com/businessB/ |
ModuleFederationPlugin 插件配置配置B组发布到环境上的远程模块假设C组的页面部署到 www.baidu.com/businessC/
1 | const config = { |
1 | <head> |
1 | (async function(){ |
1 | <script> |
https://www.npmjs.com/package/external-remotes-plugin
1 | const config = { |
1 | window.app2Url = "//localhost:3002"; // Whatever the url/logic to determine your remote module is |
页面跳转的时候,处于异步请求的接口会自动被去取消掉,但是单页应用没有这种机制。我们需要手动实现。
axios是基于Promise的。本身对外暴露了一个 cancelToken的配置项用于取消,实际开发中需要在路由跳转的钩子中使用。
1 | const CancelToken = axios.CancelToken; |
底层实现主要依靠
xhr abort
https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/abort
AbortController与fetch
https://developer.mozilla.org/zh-CN/docs/Web/API/AbortController
原文: https://owasp.org/Top10/zh_TW/
使用三方CDN,不安全的CI/CD管道,但是三方依赖被修改了,使用数字签名来避免
npm Maven 使用受信赖的源
使用软件供应链安全工具 OWASP CycloneDX
代码检查
CI/CD过程的权限控制,隔离控制,比如特定程序才有执行权限,目录权限
未被签名或者未被加密的序列化数据发送到不受信任的客户端(比如使用了云服务的静态资源托管,上传完成后应该把文件签名保存下来,下载之前应该比对签名后,再发送到客户端)
确保所有登录、访问控制和服务器端输入验证失败都可以使用足够的用户上下文进行记录,以识别可疑或恶意帐户,并保留足够的时间以允许延迟取证分析。
确保以日志管理解决方案可以轻松使用的格式生成日志。
确保对日志数据进行正确编码,以防止对日志记录或监视系统进行注入或攻击。
确保高价值事务具有具有完整性控制的审计跟踪,以防止篡改或删除,例如仅追加数据库表或类似内容。
DevSecOps 团队应建立有效的监视和警报,以便快速检测和响应可疑活动。
建立或采用事件响应和恢复计划,例如美国国家标准与技术研究院 (NIST) 800-61r2 或更高版本。
服务器A与服务器B在内网连接,服务器A对外提供服务,且有SSRF漏洞,攻击者通过服务器A获取服务器B的相关信息。
file协议: 只能读取当前被攻击机的文件,内网机器文件不能读取
dict协议:泄露安装软件版本信息,查看端口,操作内网redis服务等
gopher协议:gopher支持发出GET、POST请求。可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell
http/s协议:探测内网主机存活
next的极简风我还是挺喜欢的,但是不喜欢这个黑白主题,死气沉沉的,我想给他换个色调。
1 | custom_file_path: |
source/_data/variables.styl1 | :root { |
修改后面这个文件就行了,但是我还没想好合适的颜色
1 | $body-bg-color = #BEE7E9 |
妹妹经常外出做音乐表演,需要伴奏,但是从酷狗下载的音乐很多都没有纯伴奏版本,全民K歌这种软件也没有这种伴奏下载的功能。
作为一个程序员哥哥,妹妹的请求总不能说不会搞吧!!也不想花钱买,于是找了下资源。
网上找了这两个可以用来分离原声与伴奏。
开源音频分轨 Python https://github.com/deezer/spleeter
在线分轨网站(推荐) https://ezstems.com/ 这个应该是用上面的技术搞得,本来还有个网站的,收藏夹没找到,下次找到了再分享出来!!
https://baijiahao.baidu.com/s?id=1714115486438973511&wfr=spider&for=pc
编译时前端框架,拥有SSR的性能,但是不需要服务器,编译结果仍然是纯粹的静态资源。
vue的petite-vue项目也值得关注下,我觉得也够用了。由于web component 标准慢慢被主流浏览器支持,后面的趋势应该是各种框架都编译成 web component,进行发布。
用于快速构建API,完全兼容 openAPI Python项目
作为企业数据收集与展示仓库,支持很多图表,开箱即用。突然发现里面的功能很多跟三朵云里面数据集的功能一致呀!我们SE在这上面找设计灵感??
监控软件,应该跟打点埋码相关吧,另外推荐个异常监控系统 哨兵 sentry
剩下的都是些 AI 深度学习 集群 分布式 数据管理相关的开源项目了。