0%

1. 问题#

在做 Nestjs 开发时,会涉及开发环境、生产环境等切换,可以通过nestjs-config进行配置文件统一管理,通过向启动命令传参的方式运行不同环境下的 Nest 应用。

2. 解决思路 1#

2.1. 使用 nest-cli 搭建脚手架#

阅读全文 »

1. 问题#

在做 NodeJS 开发的过程中,碰到一个棘手的问题:已建立好的 TCP 连接,在网络异常情况下(拔网线),客户端无法及时的响应(close 或 error),这会影响到业务应用的。

查了不少资料,从 Linux 网络模型到 Nodejs 手册再到内核,一步步走来,算是找到了解决问题的方法,这里总结一下。

2. 解决思路#

阅读全文 »

1. 这个功能是什么#

NodeJS 中有两种模块加载方式:CommonJS,ECMAScript modules;前者为 NodeJS 内部实现,ES Modules 为 JS 标准加载方式。

1.1. CommonJS#

在 Node.js 模块系统中,每个文件都被视为一个单独的模块。

阅读全文 »

博客迁移:不恰饭的小站
https://blog.buqia.fun/2022/03/28/2022-03-28-Git%20detach%20head%20%E5%88%86%E6%9E%90/

1. Git detached head 的含义#

detached head 是一种 HEAD 指针指向了某一个具体的 commit id,而不是分支名称(master、…)的情况。

2. Git detached head 的产生、操作与消亡#

阅读全文 »

1. 此模块的意义#

NodeRed Library 模块是一组前后端配合使用的模块。它可将运行数据序列化到磁盘,实现数据共享。

2. NodeRed 此模块功能#

当前 NodeRed 提供了两个默认的 Library 模块:example 和 local,分别实现了例子文件的读写和流程导入导出。前端提供操作界面,通过 NodeRed 提供的 Restful 接口调用后端,后端根据参数实现功能。

阅读全文 »

1. 此模块的意义#

NodeRed context 模块是运行期做数据保存及共享的一种机制。当节点间有相同内容时,可以考虑将相同的内容放入 context 以实现共享,既减少了空间,也有利于修改。

2. NodeRed 此模块功能#

context 有三类:global、flow、node,其中 global 是随着 context 模块初始化时创建,全局唯一;flow context 以 flowId 为标识,为所有具有相同 flowId 的节点做记录;node context 以 flow:id 为标识。三者作用域不相同:全局、流、节点,不同流 context 数据不共享,不同节点 context 数据不共享。

阅读全文 »

NodeRed 日志模块是基础的模块,负责运行期的信息打印,支持日志等级,同时提供了扩展机制,支持远程打印,打印另存等功能

1. 日志系统的意义#

让我们回到计算机世界的远古时期或者我们刚刚接触计算机世界的时期,那个时候我们有两种调试程序的办法:1)单步调试,一步步地跟踪,查看代码中变量的值。2) 是 printf 大法 —— 在特定的地方打印日志, 通过日志的输出,帮助快速定位。
单步调试方法费时费力,但能准确定位问题。printf 大法简单粗暴,需要尝试,大部分情况能快速找到问题。单步调试和 printf 方法搭配使用,相得益彰。但是单步调试止步于 gdb 等调试工具,而 printf 大法最终发展出了一系列的日志系统。原因就在于单步调试在程序员调试才能用,而 printf 大法可以在调试和生产线上都能用,并且输出的日志被各方面的人利用和解读。

printf 大法是很简陋的。在调试过程中,有可能日志打到很细粒度,比如每条数据的第三个字段是什么都打印出来了,但是真正运行又要把这些细粒度的日志删除。等到下次调试,我们又要知道每条数据的第三个字段是什么了。为此,我们希望日志打印是智能:调试或者线上出问题的时候,各种细粒度的日志全部打印出来,正常运行的时候输出一些最简单的信息就可以了。

阅读全文 »

NodeRed 系统相关的配置文件会以 JONS 格式存储在本地,同时也提供了插件机制实现系统数据的自定义存储,本文从 Storage 模块出发,从源码分析下如何以插件形式实现自定义存储,也对这种方式的可能的用途进行分析。

1. NodeRed 系统数据有哪些#

文件名称 说明
package.json nodered npm 信息
.sessions.json 维护会话信息,每一个建立的会话都会记录
flows_[hostname].json NodeRed 流程文件
flows_[hostname]_cred.json 用以保存节点中以.credentials 保存的信息,加密与否可使用配置文件中 credentialSecret 参数配置
.config.runtime.json 运行时配置
.config.users.json 用户配置
.config.nodes.json 节点配置
.config.projects.json Git 配置

2. NodeRed 中系统数据存储机制#

阅读全文 »

NodeRed 提供了一个 Hook 模块,此模块向消息生命周期的节点注册,控制消息的流转。

1. 消息路由是什么? 有几种实现方式 ?#

消息路由即通过路由规则动态规划消息的传输路径,使消息按照过滤条件,从消息源路由到目标节点。通过消息路由,可实现对数据路由的灵活控制和提高数据安全性。

主要有两种方式:

阅读全文 »