shubuzuo
shubuzuo

述而不作

All Posts


文档编辑版本追踪的一些思考

文档编辑版本追踪的一些思考 最近帮老师整理一些文档,考虑到多人参与编辑,我决定将文档转换为在线云文档,选择使用飞书云文档。然而,在使用过程中遇到了一些问题。本文将讨论这些问题,并提出了一种解决方案,即使用Markdown进行版本管理。 飞书云文档可以追踪版本,每个变更都有对应的副本,类似于redis、rdb和Windows系统镜像,实现了完整回退的功能。然而,目前飞书云文档不支持变更说明,只能进行版本比对,无法为变更提供说明。这就导致了一个问题,当变更历史很多时,很难回溯到目标版本。我认为这个功能非常重要,可以大大提高文档的管理能力。目前飞书云文档的数据保存应该是富文本格式,不像Word那样有自己的文件格式和编码。如果飞书文档数据是二进制的,要进行变更内容的对比将变得复杂。如果是富文本,则比较容易实现,只需要解析不同文件格式,转换为飞书云文档支持的格式即可。 与Word、EPUB和PDF等文件不同,Markdown更适合文本编辑,尤其是对于只关注内容而不关注格式的情况。很多代码仓库都使用Markdown来进行仓库说明,也有很多文章使用Markdown进行创作。因此,我考虑使用Markdown管理文档内容,使用飞书云文档管理文档格式,同时使用飞书进行文档之间的沟通和消息交流。这样做有很多好处,比如只关注文档内容的改动而不关注格式,解决目录问题,低成本转换为网页展示内容,以及方便添加样式等。 预期行为: 我希望展示一本文档从原始的Word到多人协作的整个过程。首先,将Word文档去除格式,转换为Markdown格式存储到Git仓库中。然后将Markdown文件导入飞书云文档,大家可以针对文档提出意见和疑问,进行校订。这些校订内容以评论的形式进行,通过后进行内容更改,不通过则进行讨论。经过讨论后,与老师商议决定是否进行内容更改。每天将变更同步到Markdown仓库,并提交相关变更说明,完成细粒度变更的追踪。 如果想要生成两个目录,一个是初始讲习目录,一个是按照讲习内容制定的目录,可以基于主分支创建不同的分支,分别对应不同的目录,通过合并主分支的最新内容来更新目录。 如果想要将所有的文章发布到网站上,可以使用喜欢的UI框架,如Hexo、Hugo、VuePress或VitePress,将Markdown文件转换为网页并部署到服务器上进行展示。 如果群友想看到最...--GPT 4

daily

nestjs pg 模板

nestjs-pg模板是一个基于NestJS和PostgreSQL开发的应用模板。该模板提供了一些常见功能的模块,如缓存、数据库连接和ORM、用户身份验证和权限管理等。博客介绍了模板中各个模块的实现和用法,并提供了相关的代码示例和提交记录。 其中,模板中使用了Docker Compose来启动和管理PostgreSQL和Redis容器。通过配置文件和卷的映射,实现了数据的持久化和容器的重启。 在数据库连接和ORM方面,模板使用了TypeORM库,并提供了一些基本的实体和迁移功能。通过生成迁移文件、运行迁移和回滚迁移,可以方便地管理数据库结构的变更。 在用户身份验证和权限管理方面,模板使用了bcrypt、Passport和JWT等库。通过生成用户、角色和权限相关的模块,实现了用户注册、登录和RBAC(Role-Based Access Control)功能。 另外,模板还介绍了如何使用OpenAPI规范生成API文档和客户端SDK,并使用dayjs和winston等库实现了日志记录功能。 最后,博客提供了一些提交代码的规范和命令,以及一些常用的TypeORM命令,如生成迁移、运行迁移、回滚迁移和同步实体等。 通过阅读这篇博客,你可以了解到nestjs-pg模板的基本功能和用法,并可以根据自己的需求进行定制和扩展。如果你对该模板感兴趣,可以查看相关的提交记录和代码库,进一步了解和使用。同时,你也可以思考一些问题,如如何实现更复杂的RBAC功能、如何优化数据库性能等,来深入探索和应用这个模板。 摘要长度:386字。--GPT 4

node pgsql daily 2024 nest typeorm

node 后端 dockerFile 示例

这篇博客介绍了一个使用Node.js后端的Dockerfile示例,旨在实现最小化的镜像大小。博文首先提供了一个简单的示例,展示了如何在不同的阶段构建镜像,并使用多个阶段来实现更高效的构建过程。然后,博文展示了一个稍微复杂的Dockerfile示例,介绍了如何处理特定的依赖环境,如canvas和python,以及相关的依赖包和字体安装。博文还提供了一些有用的命令和技巧,如使用国内镜像源和安装中文字体。最后,博文展示了如何在生产环境中构建和运行应用程序,并包含了健康检查和端口暴露等功能。通过阅读这篇博客,读者可以学习如何优化和管理Node.js后端的Docker镜像,以及如何处理特定的依赖环境和相关的配置。博文提出了一些有趣的问题,如如何使用pyenv来更好地管理python依赖,以及如何处理时区时间等问题,激发了读者的思考和进一步的探索。--GPT 4

devops node docker ci-cd

gitlab 流水线钉钉通知

# gitlab Pipeline DingTalk Notification This blog post discusses the implementation of a DingTalk notification for GitLab pipelines. The author starts by introducing the desired effect, which includes an image preview. They then explain the setup of a basic repository called "share/gitlab-ci" that contains a "dingtalk.yml" file. This file uses curl to send notifications to DingTalk when triggered by GitLab hooks. The blog post also provides a sample pipeline YAML file that includes the "dingtalk.yml" file from the previous repository. It defines stages such as "check," "build," "build_tag," "deploy_test," and "deploy_production." Each stage extends the "dingtalk" template, which sends notifications to DingTalk at different stages of the pipeline. The author concludes by encouraging readers to think about how they can customize the DingTalk notifications to suit their needs and suggests exploring the possibilities of integrating other messaging platforms. They leave readers with the ...--GPT 4

devops ci-cd daily gitlab

mongoose 类型问题

# Mongoose Type Issues Recently, I have been working on a system refactoring project using MongoDB as the database and `nestjs/mongoose` as the ORM. Previously, I was using `typegoose`, but I switched to `nestjs/mongoose` for certain reasons, which I will discuss in this article. Here, I will address some type issues with `mongoose`. ## Building Query or Filter Related issue: [nestjs/mongoose](https://github.com/nestjs/mongoose/issues/2200) Expectation: ```ts public toFilter() { const filter: FilterQuery<SampleTypeDocument> = {}; if (this.code) filter.code = this.code; // filter.code has type if (this.category) filter.category = this.category; // same below if (this.storageType) filter.storageType = this.storageType; // same below if (this.name) filter.name = this.name; // same below // has ts error filter.xxx = {}; return filter; } ``` Reality: ```ts public toFilter() { const filter: FilterQuery<SampleTypeDocument> = {}; if (this.code) ...--GPT 4

study work 2024 mongoose orm typescript

nginx 密码套件安全排查

nginx密码套件安全排查的博客中,作者记录了一个关于密码套件安全问题的排查过程。作者使用nmap工具来嗅探出https服务器的所有密码套件,并探讨了密码套件协商的原理以及嗅探结果的意义。作者发现公司的http服务器是nginx,并尝试通过更改nginx配置来解决安全问题,但配置生效后仍然存在问题。作者怀疑nginx之前可能存在其他中间件,经过询问和排查,最终发现问题是由于WAF配置的问题导致的。在整个排查过程中,作者不断定位问题范围,从大范围到小范围,最终确定了问题的来源并解决了安全问题。作者对排查过程进行了反思,并提出了一些思考,强调了在排查问题时要有明确的思路和步骤,并要注意理论与实践的结合。--GPT 4

2023 nginx docker centos work security cloud

因明入正理论 立论梳理

因明入正理论 立论梳理 本文主要讨论了因明入正理论的立论梳理。文章首先介绍了量法门展转相似的概念,即因果相似的法则。接着讨论了异类和现量的概念,并详细解释了现量的四种类型。文章还讨论了非已思应思现量和非错乱境界现量的两种类型。然后,文章介绍了比量的五种类型,包括相比量、体比量、业比量、法比量和因果比量。接下来,文章讨论了正教量的三种类型,以及论庄严、论堕负、论出离等不同的立论方式。最后,文章总结了论多所作法的三种类型,包括善自他宗、勇猛无畏和辩才无竭。通过这些讨论,文章试图打开读者的思想,引发读者对立论的思考,并提出了一些问题来吸引读者进一步阅读和思考。--GPT 4

zhongzhe study weishi 2024

丐版 mongodb 全文搜索

# 丐版 mongodb 全文搜索 这篇博客介绍了如何在社区版的 MongoDB 中实现全文搜索。作者使用了 NestJS 作为后端框架,Mongoose 作为 ORM,MongoDB 作为数据库。作者提供了一个 GitHub 仓库地址供读者参考。 文章首先介绍了如何在本地使用 Docker 部署 MongoDB,包括相关的配置和命令。接着,作者详细介绍了如何使用 NestJS 创建项目,并使用 monorepo 和 lib 功能进行模块化开发。作者还提及了使用 Mongoose 进行数据库操作和使用 ts-migrate-mongoose 进行数据迁移的方法。 在实现全文搜索的过程中,作者使用了 @node-rs/jieba 这个中文分词库。作者还创建了一个 sub-mongo-change 模块来监听数据的回写操作。最后,作者进行了简单的测试查询,并讨论了一些其他考虑,如值对象、分词算法、同数据源回写等。 本文内容丰富,详细介绍了实现全文搜索的步骤和相关技术。读者可以通过阅读全文来深入了解如何在丐版 MongoDB 中实现全文搜索,并思考在不同场景下的一些抉择。--GPT 4

mongodb study node docker work nest fulltext search

openapi client 生成

自动生成 OpenAPI SDK 的过程中,作者尝试了几种生成工具,包括 `autorest`、官方的 `swagger-codegen-cli`,最终选择了 `@hey-api/openapi-ts`。文章首先讨论了为什么需要自动生成 SDK,以及生成 SDK 的好处。作者指出,通过生成 SDK 可以减少前端的开发成本,提高效率,并且可以实现类型复用。然后,作者介绍了 `@hey-api/openapi-ts` 的使用体验,并提供了相关的配置过程和使用过程。在最后,作者分享了使用自动生成的 SDK 的经验,包括在 NestJS 和 Vue.js 中的使用。整体而言,自动生成 OpenAPI SDK 可以提高开发效率和代码质量,是一个值得尝试的工具。 问题:你是否尝试过自动生成 OpenAPI SDK?使用自动生成的 SDK 有哪些好处?--GPT 4

study vue github ci-cd work 2024 openapi swagger

ts 严格模式配置,舒服

这篇博客讨论了 TypeScript 的严格模式配置。摘要简要介绍了如何配置 TypeScript 的严格模式,以及严格模式的好处。同时,摘要提出了一些有趣的问题,例如为什么严格模式会让人感觉舒服,以及严格模式对代码的影响。摘要试图打开读者的思想,让他们对严格模式的作用进行畅想并阅读全文。最后,摘要提出了一个问题,即为什么严格模式会让人感觉舒服,以引发读者自己的思考和寻找答案。--GPT 4

study ts daily config