2022年1月

https://medium.com/1milliondevs/compilererror-stack-too-deep-try-removing-local-variables-solved-a6bcecc16231

If you get this error it probably means you have too many function arguments, local variables or return values in your function.

Instead of declaring 6 local variables it declares a single local variable that is a struct holding the 6 variables. Here’s a snippet:

struct SlotInfo {
  uint originalSelectorSlotsLength;
  bytes32 selectorSlot;
  uint oldSelectorSlotsIndex;
  uint oldSelectorSlotIndex;
  bytes32 oldSelectorSlot;
  bool newSlot;
}
// Using the struct to avoid Stack too deep error
function diamondCut(bytes[] memory _diamondCut) public override {
  SlotInfo memory slot;
  slot.originalSelectorSlotsLength = $selectorSlotsLength; 
  ... code omitted 
  if(selectorSlotLength > 0) {
    slot.selectorSlot = $selectorSlots[selectorSlotsLength];
  }
  ... code omitted for simplicity

Ubuntu安装和管理NodeJS版本(兼容ARM版)

  1. 根据nmv官网(https://github.com/nvm-sh/nvm)的脚本安装nvm,例如

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

    建议根据官网去使用最新版本号

    安装完成可能需要配置环境变量,在安装完成的界面会有提示:

    运行 nvm -v 可查看版本号

  2. 用nvm命令行安装node:

    nvm install node # "node" is an alias for the latest version
    nvm install 14.18.2 # or 16.3.0, 12.22.1, etc

    nvm会根据你的系统是x86还是ARM安装对应版本,node官网列出了所有可用版本号:https://nodejs.org/en/download/releases/

    安装后查看版本,如果版本号不对,运行 nvm use node 使刚安装的版本生效。

  3. 安装完成后,运行 node -p process.arch 可以查看安装版本是x86还是ARM

以上就是全部教程。你可以在任何时候运行nvm命令安装其它版本的node并切换版本

  1. 运行ssh-keygen创建密钥对,可以一路默认值回车或者根据自身需求填写参数,然后就会在/Users/username/.ssh文件夹里生成id_rsaid_rsa.pub两个文件,文件名请勿做任何修改。这个密钥对不仅可以用在gitlab,也可以用在任何需要密钥对的地方
  2. id_rsa.pub里的内容黏贴到https://gitlab.com/-/profile/keys
  3. 这样就可以用git clone ssh_uri命令了,无需再输入账号密码

# 首先安装mvn
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

# 安装后可能会提示你设置环境变量,按照提示运行去设置即可
# 如果网络无法连接,可能需要export一下proxy

# 然后用nvm安装node
nvm install 14.18.2

# 然后启用刚安装的版本
nvm use node

# 查看版本
node -v