macvscode更新失败:Permissiondenied解决办法
场景 – mac vscode不能安装更新
Could not create temporary directory: Permission denied
原因分析
mac下/Users/username/Library/Caches/
用户文件不一样,root和username
导致
drwxr-xr-x 6 username staff 204B Jan 17 20:33 com.microsoft.VSCode drwxr–r– 2 root staff 68B Dec 17 13:51 com.microsoft.VSCode.ShipIt
解决方案
1 | // 1. 关闭vscode |
重新安装更新 完成😁
Mac版本下的Chrome,双击html文件打不开
原因其实是因为在Mac OS系统下,在Finder(访达)中做任何操作,文件都会不可避免的被附加上一个特有的拓展属性(extend attributes),可以通过终端命令ls -l查看,这些文件通常都会有@作为标记,因此,由于产品的原型是由Axure来制作的,然后导出了tar的压缩包,因此我们解压之后,通常都不能直接在浏览器打开!
怎么解决这种问题呢?
我们可以清除掉这个属性(extend attributes)!
可以针对单个文件做清除操作(filename就是要文件名,例如:index.html)
1
xattr -c filename
也可以针对整个目录做清除操作(directory就是目录名,例如:content)
1
xattr -rc directory
重启电池smc
1 | 将 Mac 关机。 |
TypeScript 中,interface 和 type 的区别
interface是接口,type是类型,本身就是两个概念。只是碰巧表现上比较相似。希望定义一个变量类型,就用type,如果希望是能够继承并约束的,就 用interface。如果你不知道该用哪个,说明你只是想定义一个类型而非接口,所以应该用type。
在 TypeScript
中,interface
和 type
主要用于类型的声明,它们的相同点以及区别如下:
react源码解析系列二(React Render)
创建更新的方式
- render || hydrate
- setState
- forceUpdate
render的步骤
- 创建 ReactRoot
- 创建FiberRoot RootFiber
- 创建更新
后续的是进入调度后,由调度器进行管理
超详细的TypeScript教程
typescript
TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。
区别
TypeScript | JavaScript |
---|---|
JavaScript 的超集用于解决大型项目的代码复杂性 | 一种脚本语言,用于创建动态网页 |
可以在编译期间发现并纠正错误 | 作为一种解释型语言,只能在运行时发现错误 |
强类型,支持静态和动态类型 | 弱类型,没有静态类型选项 |
最终被编译成 JavaScript 代码,使浏览器可以理解 | 可以直接在浏览器中使用 |
支持模块、泛型和接口 | 不支持模块,泛型或接口 |
支持 ES3,ES4,ES5 和 ES6 等 | 不支持编译其他 ES3,ES4,ES5 或 ES6 功能 |
社区的支持仍在增长,而且还不是很大 | 大量的社区支持以及大量文档和解决问题的支持 |
安装
1 | npm install -g typescript |
编译
1 | tsc helloworld.ts |
常见排序的JS实现
https://github.com/damonare/Sorts 这位大兄弟♂总结的很好,快去看看吧!
【Mac 终端配置】iTerm2 + oh-my-zsh
安装iterm2
- 官网下载 下载完,拖到应用程序里即可
iterm2配置配色方案
保存为文件SolarizedDarkHigherContrast.itermcolors,双击安装
打开 iTerm2 终端,依次在菜单栏选择:iTerm2 –> Preferences –> Profiles –> Colors –> Colors Presets –> SolarizedDarkHigherContrast
恢复iterm2默认设置
1 | defaults delete com.googlecode.iterm2 |
前置校验
1 | # 1、默认已安装 Homebrew、iTerm2 |
Docker
Docker,是一款现在最流行的 软件容器平台,提供了软件运行时所依赖的环境。
物理机
硬件环境,真实的 计算机实体,包含了例如物理内存,硬盘等等硬件;
虚拟机:
在物理机上 模拟出一套硬件环境和操作系统,应用软件可以运行于其中,并且毫无感知,是一套隔离的完整环境。本质上,它只是物理机上的一份运行文件。
为什么需要虚拟机?
环境配置与迁移
在软件开发和运行中,环境依赖一直是一个很头疼的难题,比如你想运行 node 应用,那至少环境得安装 node 吧,而且不同版本,不同系统都会影响运行。解决的办法就是我们的包装包中直接包含运行环境的安装,让同一份环境可以快速复制到任意一台物理机上。
资源利用率与隔离
通过硬件模拟,并包含一套完整的操作系统,应用可以独立运行在虚拟机中,与外界隔离。并且可以在同一台物理机上,开启多个不同的虚拟机启动服务,即一台服务器,提供多套服务,且资源完全相互隔离,互不影响。不仅能更好提高资源利用率率,降低成本,而且也有利于服务的稳定性。
传统虚拟机的缺点
资源占用大
由于虚拟机是模拟出一套完整系统,包含众多系统级别的文件和库,运行也需要占用一部分资源,单单启动一个空的虚拟机,可能就要占用 100+MB 的内存了。
启动缓慢
同样是由于完整系统,在启动过程中就需要运行各种系统应用和步骤,也就是跟我们平时启动电脑一样的耗时。
冗余步骤多
系统有许多内置的系统操作,例如用户登录,系统检查等等,有些场景其实我们要的只是一个隔离的环境,其实也就是说,虚拟机对部分需求痛点来说,其实是有点过重的。
Linux 容器
Linux 中的一项虚拟化技术,称为 Linux 容器技术(LXC)。它在进程层面模拟出一套隔离的环境配置,但并没有模拟硬件和完整的操作系统。因此它完全规避了传统虚拟机的缺点,在启动速度,资源利用上远远优于虚拟机;