Docker-Ubuntu环境搭建开发
author:zzh
在Docker中运行一个Ubuntu20.04桌面并安装playwright搭建自动化获取html环境第一次打包镜像—添加root权限
123456789101112131415161718### https://hub.docker.com/r/kasmweb/ubuntu-focal-desktop### docker build -t zzh/ubuntu-focal-desktop:1.12.0 .### 启动镜像的命令:sudo docker run -it --name=zzh_ubuntu-focal-desktop --shm-size=512m -p 26901:6901 -e VNC_PW=password zzh/ubuntu-focal-desktop:1.12.0### 访问地址: https://IP_OF_SERVER:6901### User : kasm_user### Password: passwordFROM kasmweb/ubuntu-focal-desktop:1.12.0USER rootRUN sed -i &q ...
React基本使用
React简介是什么用于构建用户界面的JavaScript库
以前编写页面的流程
发送请求获取数据
处理数据(过滤、整理格式等)
操作DOM呈现页面
React核心:将数据渲染成HTML视图
谁开发的由Facebook开发,且开源
起初由Facebook的软件工程师Jordan Walke创建
于2011年部署于Facebook的newsfeed
随后在2012年部署于Instagram
2013年5月宣布开源
…
为什么要学
原生JS操作DOM繁琐、效率低(DOM-API操作UI)
使用原生JS直接操作DOM,浏览器会进行大量的重绘重排
原生JS没有组件化编码方案,代码复用率低
React特点
采用组件化模式、声明式编码,提高开发效率及组件复用率
在React Native中可以使用React语法进行移动端开发
使用虚拟DOM+优秀的Diffing算法,尽量减少与真实DOM的交互
前置知识
判断this指向
class
ESNext
npm
原型与原型链
数组常用API
模块化
React入门官网英文官网:https://reactjs.org/
中文官网:https: ...
Express基础
Vue+Express+Mysql 全栈初体验 - 掘金 (juejin.cn)
Express是什么Express是一个快速、简单、极简的Node.js web应用开发框架。通过它,可以轻松的构建各种web应用。例如
接口服务
传统的web网站
开发工具集成等
…
Express本身是极简的,仅仅提供了web开发的基础功能,但是它通过中间件的方式继承了许许多多的外部插件来处理http请求
body-parse:解析HTTP请求体
compression:压缩HTTP响应
cookie-parser:解析cookie数据
cors:处理跨域资源请求
morgan:HTTP请求日志记录
…
Express中间件的特性固然强大,但是它所提供的灵活性是一把双刃剑。
它让Express本身变得更加灵活和简单
缺点在于虽然有一些中间件包可以解决几乎所有问题和需求,但是挑选合适的包有时也会成为一个挑战
由此延伸出的另外的问题时,如果没有选择合适的包,在某些问题的处理上,就会有很多坑,需要付出额外的时间和精力
因此对于不用场景下中间件的选择和认知,是要有的
Express不对Nod ...
mock
常用的MOCK方案说明https://juejin.cn/post/7026165301255340045
方案①:代码侵入 (实际开发中最常用,但不推荐)
特点:直接在代码中写死 Mock 数据,或者请求本地的 JSON 文件优点:无缺点:
和其他方案比 Mock 效果不好
与真实 Server 环境的切换非常麻烦,一切需要侵入代码切换环境的行为都是不好的
定义json文件,填充需要的字段:https://blog.csdn.net/qq_41138191/article/details/126856929
在代码汇总引入即可
方案④:请求拦截[MOCKJS]代表:Mock.js (mockjs.com)
特点:
通过拦截特定的AJAX请求,并生成给定的数据类型的随机数,以此来模拟后端同学提供的接口。
使用数据模板定义,随机生成定义数据的自由度大。使用MockJS的Random工具类的方法定义,这种方式自由度小,只能随机出MockJS提供的数据类型。
一般配合其它库使用或单独在项目中使用或者通过反向代理来实现。
优点:
与前端代码分离
可生成随机数据 缺点:
数据都是动态生 ...
后台管理系统
https://baijiahao.baidu.com/s?id=1739860971728254417&wfr=spider&for=pc
vue-element-admin
vue3-composition-admin
基于Vue3,typescript,vuex和element-plus来实现,项目都是使用composition api 风格编写,提供不少组件,比如导出导入Excel表格,导出Zip,拖动元素组件。这个项目还使用Echarts.js来展示图表,使用vue-i18n来国际化,还提供文档。
github地址:https://github.com/RainManGO/vue3-composition-admin
ruoyi-vue3
https://github.com/RainManGO/RuoYi-Vue3
vue3-antd-admin基于 vue-cli5.x / vite2.x + vue3.x + antd-design-vue3.x + typescript4.x 的后台管理系统模板。这个项目提供了vue-cli和vi ...
文件资源管理平台详设
背景大批量的excel、txt、压缩包等文件,要进行实现文件管理。
核心需求:需要能够对每一次标注(或其他)任务,提供以下信息
任务背景,描述大致情况,说明为啥要做这件事
任务规则,说明标注规则,每个标注要素的具体含义,或者数据处理的依据
任务问题,说明在当下的规则下,可能会遇到的问题,以及是否有对应措施。
任务迭代,子任务可能存在时间周期跨度较久问题,直接以新任务建文件夹,注明依赖项任务
任务输入与输出文件,对于标注来说,注明每个表字段的具体含义,语料的具体特征,如原始语料问题、某个字段大量为空,越具体越好。对于输出文件,注明处理逻辑。
现状:以语料为例,不同语料的标注规则各有不同,语料的格式不一(excel、doc、pdf、json、txt等),存储的硬件环境不一(本地、外网的不同服务器上、内网的不同服务器上、制品库等)
需求:算法需要某一份标注数据,需要经历如下步骤:回忆在哪=>查找手工记录的归档文件(如果有)=>登录服务器(包含切换网络)=>进入资源目录
上面的流程有一点麻烦,但并不是大问题,重要的不能保证找到的那一份数据文 ...
运维最佳实践
监测与告警依赖部署完接口后,要监测接口服务器的可访问性
要监测接口服务器硬件资源状态
如果依赖的服务器是公司的其他部门管理,必定有防火墙,要(持续)监测是否被意外加入黑名单
告警如果服务不可用,应立即告警
应该有备用服务(ms级事件容灾)
依赖如果服务停止(如假期服务器断点),应用要有完备的服务运行依赖,包含不同服务的依赖检测,确保自启成功
常见的依赖项有
硬件
磁盘目录挂载
…
软件
redis、pg、mysql等数据库
kafka等消息队列
nginx等服务器
…
Compass
https://blog.csdn.net/drawlessonsfrom/article/details/115425204
Compass是一个基于SASS的类库,它帮助了我们预定义好了很多常用的Mixin和Function。
Compass的组成模块:
CSS3:将CSS3的带有属性前缀的兼容代码组合成Mixin。
Reset:用于清除浏览器自带样式,保证不同浏览器下显示的一致性。
Utilities:对一些常用的CSS样式进行简化。
Helpers:提供一些常用的函数。
Layout:提供栅格系统和一些简单的布局样式。
CSS预处理语言
聊聊CSS预处理语言 - 掘金 (juejin.cn)
前言Css 作为一门标记性语言,语法相对简单,对使用者的要求较低,但同时也带来一些问题
需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤其对于非前端开发工程师来讲,往往会因为缺少 Css 编写经验而很难写出组织良好且易于维护的 Css 代码
Css预处理器便是针对上述问题的解决方案
预处理语言扩充了 Css 语言,增加了诸如变量、混合(mixin)、函数等功能,让 Css 更易维护、方便
本质上,预处理是Css的超集
包含一套自定义的语法及一个解析器,根据这些语法定义自己的样式规则,这些规则最终会通过解析器,编译生成对应的 Css 文件
CSS预处理语言有哪些Css预编译语言在前端里面有三大优秀的预编处理器,分别是:
sass
less
stylus
sass2007 年诞生,最早也是最成熟的 Css预处理器,拥有 Ruby 社区的支持和 Compass 这一最强大的 Css框架,目前受 LESS 影响,已经进化到了全面兼容 Css 的 Scss
文件后缀名为.sass与scss,可以严格按照 sass 的缩进 ...
JS设计模式
观察者模式
观察者模式一种设计模式。
观察者模式定义了对象间的一种 一对多 的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并自动更新。
基本逻辑观察者(Observer)直接订阅(Subscribe)主题(Subject),而当主题被激活的时候,会触发(Fire Event)观察者里的事件
被观察者需要有状态
1234// 定义主题 Subjectfunction Subject() { this.state = '开心'}
可以有多个观察者
12345// 定义观察者 Observerfunction Observer(name) { // 可以有多个观察者 this.name = name}
Observer要做到可以观察Subject的状态,需要将Observer放在Subject的身上
Subject中定义一个数组,并向外暴露一个attach方法,接收Observer实例作为attach实参,存到数组里
123456789101112131415161718 ...