跳至主要內容
常用多版本工具

常用多版本工具

日常开发、调试中经常遇到不同项目依赖的版本不一致。

nvm

node多版本管理/切换

nrm

npm源管理/切换

pyenv

python多版本管理/切换

sdkman

jdk 多版本管理/切换

不仅仅支持jdk,更多详见官网


devversiondockernvmnodenrmnpmsdkmanjdkpyenvpythondbnginmysqlredis小于 1 分钟约 143 字
pyenv管理python

pyenv管理python

通过 pyenv 管理 python 版本

1. 通过 homebrew 安装 pyenv

如果没有安装 xcode-select 需要先运行 xcode-select --install

brew update 
brew install pyenv

devpyenvpython小于 1 分钟约 226 字
记一次http@421状态码的排查情况

记一次http@421状态码的排查情况

  1. 后台返回421状态码时,浏览器底层会自动重发一次相同的请求
  2. F12查看只有一次请求,前端请求的返回也只有一条
  3. 通过抓包软件或者ng后台日志可以确认浏览器确认发了2条相同的请求

1. 过程

一次日常版本测试中,测试同事反馈某一场景下后台日志收到:接口A有2条相同的请求日志,而接口B只有一条请求日志。

1.1. 排查

  1. 是不是对应的请求输出日志有两条
    1. 不是
  2. 是不是接口A跨域的option请求
    1. 不是,这个接口虽然跨域,但是因为是简单请求,所以没有option请求。
  3. 是不是前端代码逻辑问题
    1. 不是,通过F12调试看网络请求只有一个请求。对应的业务代码也只收到一次回调。
    2. 通过抓包软件查看,确实有两次相同的接口A请求
  4. 该接口http@200成功时的日志情况
    1. 接口A只有一条请求记录。
    2. 查看http规范中421状态码的说明,同时找后台同事切换到其他错误码423验证,只有一条请求记录。
  5. 老机型的部分浏览器验证
    1. http@421只发了一次请求。

devstatus@421http大约 1 分钟约 416 字
vscode

vscode

轻量编辑器,丰富的插件

插件

  • EditorConfig for VS Code
  • ESLint
  • prettier
  • Material Icon Theme
  • markdownlint
  • Markdown All in One

devvscodemarkdownlint小于 1 分钟约 36 字
adbKit 调试

adbKit 调试

基础用法

  • cat: 读取文件到控制台。
  • grep: 搜索包含对应字符串的文件数据。
    • 可以加参数控制

1. demos

const webviewInfo = ({tcpPort = 4000, prefix = 'webview', filter = d => d} = {}) => {

    if (prefix === '*') {
        prefix = '.+';
    }
    let re = new RegExp('@(' + prefix + '_devtools_remote(?:_\\d+)?)', 'gi');

    return getDeviceId().then(deviceId => {
        // 
        return adbKit.shell(deviceId, 'cat /proc/net/unix | grep _devtools_remote')
            .then(adb.util.readAll)
            .then(output => {
                let remotePorts = new Set();
                output.toString().replace(re, (_, port) => {
                    remotePorts.add(port);
                });
                if (remotePorts.size) {
                    return [...remotePorts];
                } else {
                    throw new Error('没有启动 webview');
                }
            })
            .then(ports => getForwardPortInfo({deviceId, ports, tcpPort, filter}))
    });

};

devadbadbkitdebug小于 1 分钟约 130 字