之前使用的修改host的方式,体验下来还是不行。很多梯子也解决不了。
现在有很多平台提供免费github加速服务,比如UC浏览器和有道云笔记都有教育资源加速服务,也很不错,尤其是有道云笔记的教育资源加速,我正在用。
然后今天发现了个很nb的方式。就是使用steam++,不但能加速github还能加速steam的商店,但是也不稳定。
Stay Hungry Stay Foolish
之前使用的修改host的方式,体验下来还是不行。很多梯子也解决不了。
现在有很多平台提供免费github加速服务,比如UC浏览器和有道云笔记都有教育资源加速服务,也很不错,尤其是有道云笔记的教育资源加速,我正在用。
然后今天发现了个很nb的方式。就是使用steam++,不但能加速github还能加速steam的商店,但是也不稳定。
症状:vscode使用vim插件后很卡,尤其是中英文切换的时候
根因:Bracket Pairs Colorizer 2 等等 绘图效果插件 会重制图,导致卡
解决方法:禁用 Bracket Pairs Colorizer 2 , rainbow indent等插件
安装到项目中
npm install eslint --save-dev
生成一个配置文件
npx eslint --init
参考下列选项,注意第一条选择第3个To check syntax, find problems, and enforce code style,可以检查代码风格问题
✔ How would you like to use ESLint? · style ✔ What type of modules does your project use? · esm ✔ Which framework does your project use? · react ✔ Does your project use TypeScript? · No / Yes ✔ Where does your code run? · browser ✔ How would you like to define a style for your project? · guide ✔ Which style guide do you want to follow? · standard ✔ What format do you want your config file to be in? · JavaScript
vscode中开启保存时自动修复,
1 安装ESlint扩展 2 打开vscode的配置文件,添加下面的配置 // #每次保存的时候将代码按eslint格式进行修复 "editor.codeActionsOnSave": { "source.fixAll.eslint": true },
常用规则
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', // allow console during development 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', // allow debugger during development // 以下为该项目自定义部分 // indent: [2, 4], // 缩进风格 - 开启缩进4格 'no-spaced-func': 2, // 函数调用时 函数名与()之间不能有空格 - 开启 'no-const-assign': 2, // 禁止修改const声明的变量 - 开启 'space-before-function-paren': [0, 'always'], // 函数定义时括号前面要有空格 - 关闭 'eol-last': 0, // 文件以单一的换行符结束 - 关闭 camelcase: 0, // 强制驼峰法命名 - 关闭 'no-undef': 0, // 不能有未定义的变量 - 关闭 'no-alert': 0, // 禁止使用alert confirm prompt - 关闭 'arrow-parens': 0 // 箭头函数用小括号括起来 - 关闭
默认端口
8080
默认的配置文件地址
/opt/homebrew/etc/nginx/nginx.conf
默认的WEB根目录
/opt/homebrew/var/www
如果要指定你启动的NGINX.CONF文件
nginx -c /路径
停止NGINX
nginx -s stop
重启NGINX
nginx -s reload
/bin/zsh -c "$(curl -fsSL https://gitee.com/huwei1024/HomebrewCN/raw/master/Homebrew.sh)"
参考结果
开始执行Brew自动安装程序 [cunkai.wang@foxmail.com] [2021-07-07 13:48:08][11.2] https://zhuanlan.zhihu.com/p/111014448 请选择一个下载镜像,例如中科大,输入1回车。 源有时候不稳定,如果git克隆报错重新运行脚本选择源。cask非必须,有部分人需要。 1、中科大下载源 2、清华大学下载源 3、北京外国语大学下载源 4、腾讯下载源(不显示下载进度) 5、阿里巴巴下载源(缺少cask源) 请输入序号: 1 你选择了中国科学技术大学下载源 !!!此脚本将要删除之前的brew(包括它下载的软件),请自行备份。 ->是否现在开始执行脚本(N/Y)y --> 脚本开始执行 ==> 通过命令删除之前的brew、创建一个新的Homebrew文件夹 (设置开机密码:在左上角苹果图标->系统偏好设置->"用户与群组"->更改密码) (如果提示This incident will be reported. 在"用户与群组"中查看是否管理员) 请输入开机密码,输入过程不显示,输入完后回车 Password: 开始执行 -> 创建文件夹 /opt/homebrew/Homebrew 此步骤成功 ---备份要删除的文件夹到系统桌面.... ---/Users/liuxiaofan/Library/Caches/Homebrew/ 备份完成 ---备份要删除的文件夹到系统桌面.... ---/opt/homebrew/Caskroom 备份完成 -> 创建文件夹 /opt/homebrew/Caskroom 此步骤成功 ---备份要删除的文件夹到系统桌面.... ---/opt/homebrew/Cellar 备份完成 -> 创建文件夹 /opt/homebrew/Cellar 此步骤成功 ---备份要删除的文件夹到系统桌面.... ---/opt/homebrew/var/homebrew 备份完成 -> 创建文件夹 /opt/homebrew/var/homebrew 此步骤成功 -> 创建文件夹 /opt/homebrew/var/homebrew/linked 此步骤成功 git version 2.30.1 (Apple Git-130) 下载速度觉得慢可以ctrl+c或control+c重新运行脚本选择下载源 ==> 克隆Homebrew基本文件(32M+) 未发现Git代理(属于正常状态) Cloning into '/opt/homebrew/Homebrew'... remote: Enumerating objects: 194316, done. remote: Total 194316 (delta 0), reused 0 (delta 0) Receiving objects: 100% (194316/194316), 49.91 MiB | 4.71 MiB/s, done. Resolving deltas: 100% (145009/145009), done. 此步骤成功 ==> 创建brew的替身 此步骤成功 ==> 克隆Homebrew Core(224M+) 此处如果显示Password表示需要再次输入开机密码,输入完后回车 Cloning into '/opt/homebrew/Homebrew/Library/Taps/homebrew/homebrew-core'... remote: Enumerating objects: 989892, done. remote: Total 989892 (delta 0), reused 0 (delta 0) Receiving objects: 100% (989892/989892), 396.10 MiB | 2.89 MiB/s, done. Resolving deltas: 100% (682362/682362), done. 此步骤成功 ==> 克隆Homebrew Cask(248M+) 类似AppStore 此处如果显示Password表示需要再次输入开机密码,输入完后回车 Cloning into '/opt/homebrew/Homebrew/Library/Taps/homebrew/homebrew-cask'... remote: Enumerating objects: 632124, done. remote: Total 632124 (delta 0), reused 0 (delta 0)B | 1.82 MiB/s Receiving objects: 100% (632124/632124), 265.04 MiB | 981.00 KiB/s, done. Resolving deltas: 100% (451506/451506), done. 此步骤成功 ==> 配置国内镜像源HOMEBREW BOTTLE 此步骤成功 ==> 安装完成,brew版本 11.2 brew -v zsh:363: command not found: brew 失败 查看下面文章第二部分的常见错误 https://zhuanlan.zhihu.com/p/111014448 如果没有解决,把运行脚本过程截图发到 cunkai.wang@foxmail.com --end
目前市面上有两种工具可以切换Node版本,我强烈推荐使用n,因为安装和使用更方便。
sudo npm install -g n
或者
brew install n
安装最新的node版本
sudo n latest
安装指定的node版本,例如12.18.2
sudo n 12.18.2
切换,控制台输入n然后选择要切换的版本即可
sudo n
网上搜索package-lock.json的作用,有大把的文章介绍,我这里就不详细介绍了。
我要说的这个文件要解决什么问题?
当我们clone下来一个项目的时候,在执行了npm install之后发现各种报错,项目跑不起来,有没有?是不是装完依赖包之后发现版本都变高了?
那么怎么锁住版本呢?
package-lock.json就是用来锁依赖包版本用的。
如果项目中有这个文件,那么执行npm install 时改为 npm install –no-save 就不会升级版本了。
Mac系统,在用npm安装依赖包的时候总会报这个错误:gyp: No Xcode or CLT version detected!
原因是Xcode命令行工具有问题,需要删掉重装。
1 查看安装路径
xcode-select --print-path
默认的路径应该是/Library/Developer/CommandLineTools
2 删除
sudo rm -r -f /Library/Developer/CommandLineTools
3 重新安装
xcode-select --install
这个工具包大小400多m很快就能装完
本文的目的就是让读者对webpack快速的有一个整体的认识,了解其主要的功能。如果对其中某一项感兴趣,详细的使用方式建议查阅webpack官网文档。
gulp:强调流程,通过配置一系列的task,定义task处理的事物(例如文件压缩合并、雪碧图、启动server、 版本控制等),然后定义执行顺序,来让gulp执行task,从而构建前端项目的流程。
webpack:是一个前端模块化方案,侧重模块打包,把开发中的所有资源(图片、js文件、css文件等)都看成模块,通过loader(加载器)和plugins(插件)对资源进行处理,打包成符合生产环境部署的前端资源。
可以文件合并与压缩(css)
虽然都是前端自动化构建工具,但看他们的定位就知道不是对等的。
gulp严格上讲,模块化不是他强调的东西,他旨在规范前端开发流程。
webpack更是明显强调模块化开发,而那些文件压缩合并、预处理等功能,不过是他附带的功能。
自动编译,自动打开浏览器,自动刷新
优化打包构建速度 – HMR
优化代码调式 – sourceMap(压缩后的js文件可以映射到源文件,快速找到代码行)
打包速度
代码运行的性能 – oneOf、缓存、tree shanking、代码分割、懒加载、PWA、多进程打包、external、dll。
监听细微变化进行局部更新
devServer:{
hot:ture
}
rules配置项下面把所有的loader都放到oneOf数组里面,性能更好
只编译代码改变了的模块,其他模块开启babel缓存
rules下的babel-loader配置cacheDirectory:true
文件资源缓存,根据chunk生成hash值
content hash:根据文件的内容生成hash值
去除那些没有使用的代码
前提:
entry里面配置多个入口,单页面还是多页面。如果所有的文件都在一个bundle里面的话bundle体积就会非常大。所以要把bundle拆开多个小文件。
optimization:{
splitChunks:{
chunks:’all'
}
}
先进行代码分割,再把要加载的文件import的时候加上webpackChunkName 标识
预加载的标识为 webpackPrefetch:ture
import(/* webpackChunkName:’test’, webpackPrefetch:true */ ‘.test’).then(({mul}) = > {
console.log(mul(4, 5))
})
npm i thread-loader -D
在babel-loader外面套一个thread-loader
缺点:进程启动大概为600ms,进程开销比较大。
适用于工作消耗时间比较长的编译loader,比如编译js的babel-loader相对css就比较耗时。
忽略一些包被打包进来,注意如果要使用这个库就要在html文件里面的script标签里面引用
externals:{
jquery:’jQuery'
}
和externals类似,可以将某些第三方依赖包统一打包到dll文件中。
把一些固有的库都先打包到dll文件里面。这样打包1次后面就不用每次都打包了。可以让第2次打包的过程变快。提升构建速度。
1.报文(message)
我们将位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。
2.报文段(segment)
通常是指起始点和目的地都是传输层的信息单元。
3.分组/包(packet)
分组是在网络中传输的二进制格式的单元,为了提供通信性能和可靠性,每个用户发送的数据会被分成多个更小的部分。在每个部分的前面加上一些必要的控制信息组成的首部,有时也会加上尾部,就构成了一个分组。它的起始和目的地是网络层。
4.数据报(datagram)
面向无连接的数据传输,其工作过程类似于报文交换。采用数据报方式传输时,被传输的分组称为数据报。通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。
5.帧(frame)
帧是数据链路层的传输单元。它将上层传入的数据添加一个头部和尾部,组成了帧。它的起始点和目的点都是数据链路层。
6.数据单元(data unit)
指许多信息单元。常用的数据单元有服务数据单元(SDU)、协议数据单元(PDU)。
SDU是在同一机器上的两层之间传送信息。PDU是发送机器上每层的信息发送到接收机器上的相应层(同等层间交流用的)。
下面是网络模型中每一层对应的信息情况
应用层——报文(message)
传输层——数据段/报文段(segment) (注:TCP叫TCP报文段,UDP叫UDP数据报,也有人叫UDP段)
网络层——分组、数据包(packet)
链路层——帧(frame)
物理层——P-PDU(bit)