2021-07-12-nodeRed 源码分析4- i18n NLS (national language suppor) 多国语言支持

i18n NLS (national language suppor) 多国语言支持#

所使用的库#

  • i18next
  • https://www.i18next.com/

    核心模块翻译数据#

    Component Namespace Location
    Runtime runtime runtime/locales/__lang__/runtime.json
    Editor editor editor-client/locales/__lang__/editor.json
    Core nodes node-red nodes/nodes/core/locales/__lang__/messages.json

代码解析#

默认 Lang#

阅读更多

2021-07-12-nodeRed 源码分析0-用例整理

用例整理#

%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#FFFFFF'}}}%%
graph LR;
    用例--> 用户登陆
    用户登陆-->用户验证
    用户登陆-->用户编辑

    用例--> 用户登出
    
    用例--> 节点模块操作
    节点模块操作-->节点模块安装
    节点模块操作-->节点模块卸载
    节点模块操作-->节点模块禁用
    节点模块操作-->节点模块启用
    节点模块操作-->节点模块更新

    用例--> 节点模板操作
    节点模板操作-->节点模板列表展示
    节点模板操作-->节点模板禁用
    节点模板操作-->节点模板启用
    节点模板操作-->节点模板部署
    节点模板操作-->节点模板信息展示
    
    用例--> 流程操作
    流程操作--> 所有流程展示
    流程操作--> 流程信息展示
    流程操作--> 增加流程
    流程操作--> 修改流程
    流程操作--> 删除流程
    流程操作--> 保存流程
    流程操作--> 查询流程
    流程操作--> 导出流程
    流程操作--> 导入流程
    流程操作--> 流程有效
    流程操作--> 流程无效

    用例--> 节点实例操作
    节点实例操作--> 节点实例信息展示
    节点实例操作--> 节点实例新增
    节点实例操作--> 节点实例删除
    节点实例操作--> 节点实例修改
    节点实例操作--> 节点实例查询
    节点实例操作--> 节点实例导出
    节点实例操作--> 节点实例导入
    节点实例操作--> 节点实例有效
    节点实例操作--> 节点实例无效
    
    用例--> 子流程模板操作
    子流程模板操作 --> 所有子流程模板展示
    子流程模板操作 --> 子流程模板信息展示
    子流程模板操作 --> 子流程模板新增
    子流程模板操作 --> 子流程模板修改
    子流程模板操作 --> 子流程模板删除
    子流程模板操作 --> 子流程模板查询
    
    用例--> 子流程实例操作
    子流程实例操作 --> 所有子流程实例展示
    子流程实例操作 --> 子流程实例信息展示
    子流程实例操作 --> 子流程实例新增
    子流程实例操作 --> 子流程实例修改
    子流程实例操作 --> 子流程实例删除
    子流程实例操作 --> 子流程实例查询

    用例--> 系统设置
    系统设置 --> 显示设置
    系统设置 --> 快捷键设置
    系统设置 --> 配置设置

2021-07-12-Linux下双网卡分配同一网段地址问题分析

需求#

  • 物联网网关操作系统:Debian 8.3.0;
  • 主板自带两个网口,IP分别为192.168.50.51(eth1)、192.168.50.52(eth0);网关为192.168.50.254;
  • 要求:物联网两个网口与2台设备(192.168.50.129)可以同时通信。

    问题#

    目前的情况为:
  1. 使用路由表如下:

    1
    2
    3
    4
    5
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    default 192.168.50.254 0.0.0.0 UG 0 0 0 eth1
    192.168.50.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
    192.168.50.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

    eth1能Ping通192.168.50.129,eth0不能192.168.50.129; 192.168.50.129可以同时Ping通192.168.50.51(eth1)、192.168.50.52(eth0), 但拔掉eth1网线,则都无法Ping通

  2. 搜索网络资料 linux下双网卡能不能设置同一网段?[1],按照以下操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.default.accept_source_route = 0
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.default.arp_ignore = 1
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.eth0.arp_announce = 2
    net.ipv4.conf.eth0.arp_ignore = 1
    net.ipv4.conf.eth1.arp_announce = 2
    net.ipv4.conf.eth1.arp_ignore = 1

    作者:袁昊洋
    链接:https://www.zhihu.com/question/41331151/answer/169574975
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    eth1能Ping通192.168.50.129,eth0不能192.168.50.129; 192.168.50.129可以能Ping通192.168.50.51(eth1),无法Ping通192.168.50.52(eth0)

  3. 查找多路由表相关资料

    1
    2
    3
    4
    5
    6
    ip route add 192.168.50.0/24 dev eth0 src 192.168.50.51 table eth0table 
    ip route add 192.168.50.0/24 dev eth1 src 192.168.50.52 table eth1table
    ip route add default dev eth0 via 192.168.50.254 table eth0table
    ip route add default dev eth1 via 192.168.50.254 table eth1table
    ip rule add from 192.168.50.51 table eth0table
    ip rule add from 192.168.50.52 table eth1table

    在执行此指令后

    1
    ip rule add from 192.168.50.51 table eth0table 

    系统报错误

    1
    RTNETLINK answers: Operation not supported

    查找相关ip rule资料,4.8. Routing Tables[2],需要内核开启 CONFIG_IP_MULTIPLE_TABLES=y配置;查看内核配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    zcat /proc/config.gz

    输出:
    #
    # Automatically generated file; DO NOT EDIT.
    # Linux/arm64 4.19.59 Kernel Configuration
    #
    ...
    # CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set
    # CONFIG_DEBUG_WX is not set
    # CONFIG_DEBUG_ALIGN_RODATA is not set
    # CONFIG_ARM64_RELOC_TEST is not set
    # CONFIG_CORESIGHT is not set
    ...

    没有 CONFIG_IP_MULTIPLE_TABLES配置项,若要开启需要编译内核,工作量较大,不再尝试

解决办法#

阅读更多

2021-07-12-linux下使用nvm安装Nodejs指定版本

手动方式安装(使用github镜像站)#

1
2
3
4
5
export NVM_DIR="$HOME/.nvm" && (
git clone https://gitee.com/lxmuyu/nvm.git "$NVM_DIR"
cd "$NVM_DIR"
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)`
) && \. "$NVM_DIR/nvm.sh"

增加启动项#

1
2
3
4
#向 ~/.bashrc 中添加启动项

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

安装NodeJs指定版本(12.22.1)#

阅读更多

2021-07-12-Jenkins在Linux下安装

安装#

  1. sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

  2. sudo rpm –import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

  3. sudo yum install jenkins

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    jenkins/primary_db                                                                                                                                                              |  36 kB  00:00:00     
    Resolving Dependencies
    --> Running transaction check
    ---> Package jenkins.noarch 0:2.277.1-1.1 will be installed
    --> Finished Dependency Resolution

    Dependencies Resolved

    ==============================================================================================================================================================================================================
    Package Arch Version Repository Size
    ==============================================================================================================================================================================================================
    Installing:
    jenkins noarch 2.277.1-1.1 jenkins 67 M

    Transaction Summary
    ==============================================================================================================================================================================================================
    Install 1 Package
  4. sudo yum install jenkins java-1.8.0-openjdk-devel

安装JDK

  1. java -version

    1
    2
    3
    openjdk version "1.8.0_282"
    OpenJDK Runtime Environment (build 1.8.0_282-b08)
    OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)
  2. sudo systemctl daemon-reload
    加载新的unit 配置文件

2021-07-12-Iot2040和Iot2050 修改串口参数

IOT2040 串口表示#

Linux将所有UARTs表示为ttyS,其中 x = 0, 1 对应内部设备,2, 3对应外部设备

修改指令#

IOT2040

1
2
3
4
5
6
7
8
9
10
指令:switchserialmode

Usage: switchserialmode DEVICE [MODE [-t|--terminate]]

DEVICE The device for which you want to switch the mode.
MODE The mode you want to use: rs232, rs485, or rs422.
If omitted, the current mode will be printed.

Optional arguments:
-t, --terminate Terminate the RS422 or RS485 bus.
阅读更多