0%

管理包依赖时有依赖和开发依赖。针对安装的第三方包本身也存在依赖和开发依赖。这些包依赖的安装logic需要明确下。

npm i

本地开发时,一般是指行npm i ,这样针对直接依赖和直接开发依赖都会进行安装,但针对第三方包是不安装开发依赖的。关于这点也好理解,包本身都是publish出去的,算是属于包本身的生产模式,因此没必要安装开发依赖。

当然针对依赖和间接依赖+包版本,存在同一个包的多版本并存,这个也要注意。

– production

npm i在指行安装时,可以明确模式,生产模式下是不安装开发依赖的,这个主要是在node服务生产部署时,往往不需要开发状态的一些包,比如TS等。这样可以进一步的提升部署速度。

最近在支持webshell的上传下载,做了sz/rz的调研开发,这里总结下

使用说明

  1. sz支持多文件下载

  2. rz支持多文件上传,上传目标目录为当前命中执行目录,

  3. rz不支持文件夹上传

  4. rz上传针对重名文件,不会执行上传也不报错

  5. 针对体积大小,无法传输大于 4G 的文件

  6. 下载中/上传中并不能直接取消,但如果想实现,断掉连接之后在重新连接是个办法

SZ/RZ支持问题

  1. 服务器默认是没有安装 lrzsz 工具的,需要手动安装
  2. 不是所有工具都支持 rz 与 sz,必须支持 ZModem 协议才行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Centos
yum -y install lrzsz
# 卸载
yum -y remove lrzsz

# Ubuntu
apt install -y lrzsz
# 卸载
apt remove -y lrzsz

# MacOS
brew install lrzsz
# 卸载
brew remove lrzsz

判断命令是否安装可以使用which

FGasper/xterm.js demo运行

为了保证demo正常运行,需要以下操作

  1. demo地址:https://github.com/FGasper/xterm.js/tree/zmodem
  2. node版本切换到v8重新执行npm i
  3. 启动后访问http://127.0.0.1:3000/

demo

webshell支持大概操作如下

1
npm i zmodem.js

有价值的资料

  1. https://juejin.cn/post/6935621453400244260
  2. https://wsgzao.github.io/post/lrzsz/
  3. https://qa.1r1g.com/sf/ask/672770031/

JetBrains家的浏览器插件可以实现一键 checkout repo 到打开 JB家IDE,但不支持国内Git服务,比如Gitee和工蜂。了解到插件本身代码开源,因此决定拓展支持下。

效果

https://static.1991421.cn/2022/2022-05-17-224737.gif

下载地址:戳这里

原理

这里简单说明下插件基本原理,感兴趣具体源码的查看repo即可

  1. JB IDE本身提供了URL Schema方式来唤起动作,比如这里的checkout。但官方没有提供完整的动作列表,这里根据源码收录了部分,整理在jetbrains-url-schemes
  2. 插件在命中目标git web网页时执行一些动作
    1. 根据URL获取到repo,user等信息,从而确定clone repo的地址
    2. 通过单独API或网页中部分信息分析出repo设涉及的编程语言,进而通过语言加占比权重,确定应该使用的IDE
    3. 在目标位置追加按钮
    4. 用户点击按钮时实现URL Schema跳转

写在最后

通过这里的拓展支持,也可以无缝体验插件到IDE的便利性了。

平时遇到的技术/非技术问题,除了博客总结外,我经常会写到GitHub repo的issue里,目前主要是alanhg/others-notealanhg/coding-note两个repo。很多时候想去搜下以前记的这些问题,发现这种跨repo搜索效率很低,于是想到Telegram Bot来解决issue检索问题。按照这个需求,简单查了下,发现网上并没有,于是自己动手实现了下。

当前效果

通过repoadd命令添加目标仓库,之后就可以输入任意关键词进行多repo issue检索了。效果如下

https://static.1991421.cn/2022/2022-05-04-114501.gif

使用地址:GitHub Issue Bot

bot开发

针对bot开发也踩了些坑,这里总结下

  1. bot创建联系@BotFather机器人,一番交互操作下即可

    • bot名称/头像,命令列表等,均是在该机器人下操作设置

    • 注意保存好bot_token,唯一决定哪个bot,及收发消息

    • 针对bot如果需要创建命令列表,也是联系@BotFather,选择目标bot编辑,其中就有编辑命令。命令编辑这里有个细节点

      • 命令不要有中线

      • 命令开始不要有/,这个是具体命令触发时需要的固定前缀,命令本身不需要再手动添加

        https://static.1991421.cn/2022/2022-05-04-115842.jpeg

  2. bot开发有很多现成的类库辅助起步

    • nodejs下就可以使用node-telegram-bot-api
  3. bot发送消息支持markdown/html几种格式,这样很方便解决消息排版问题

  4. bot发送消息,比如提示用户搜索中,之后搜索结果有了,想更新该消息为结果列表,使用bot.editMessageText,参数中明确message_id及chat_id即可

  5. bot有时候想关注用户基于某条消息的回复,使用bot.onReplyToMessage

  6. bot服务部署需要在外网环境下,测试阶段也需要解决代理问题

写在最后

有了这个bot,以后只需要输入关键词检索是否有类似issue了。

相关文档

查询一个命令工具参数经常使用--help,比如rsync --help。另外也可以使用man命令,比如man rsync 。那两者区别是什么,又该怎么选择呢

区别

  1. man命令是针对系统中存在的所有命令提供的全面使用说明手册,Linux/Mac下均支持

    • 非系统命令基本上都不可用,比如man java
    • man是manual的缩写即帮助文档
  2. --help是每个命令自身提供的参数,用于打印输出命令使用说明,但存在部分命令没提供的情况,比如ssh

    ssh这里还有一点特殊是,命令本身提供的参数说明很粗,比如t参数等没有具体说明,而man下描述很清晰

https://static.1991421.cn/2022/2022-05-03-005726.jpeg

https://static.1991421.cn/2022/2022-05-03-010520.jpeg

使用建议

  • 如果是系统命令,优先使用man来查看

  • 如果是非系统命令,使用命令本身的说明--help