shubuzuo
shubuzuo

述而不作

后端 后端


readFile 为例 nodejs 如何实现

本文通过分析 `readFileSync` 和 `readFile` 的内部实现机制,探讨了 Node.js 如何处理文件读取操作。同步方法 `readFileSync` 直接调用系统调用,而异步方法 `readFile` 则借助回调函数与事件循环实现非阻塞 IO。两者均最终通过 libuv 库的 `uv_fs_read` 函数执行实际的文件读取操作。文章详细阐述了从高层 API 到底层实现的技术细节,并强调了内部抽象机制的重要性,这些机制为 Node.js 平台提供了高效的文件处理能力。--DeepSeek

study daily source-code nodejs v8 c++ 2025 libuv javascript

v8 build linux 平台

本文详细描述了在尝试将V8嵌入到项目时遇到的挑战及其解决过程。首先,构建静态库时出现了“unknown architecture”错误,通过改用lld链接器解决了该问题。随后,程序因Undefined reference to `v8::platform::NewDefaultPlatform`而失败。为了解决这一问题,进行了多次配置尝试,包括调整目标CPU和OS、调试模式、组件构建、单体库设置以及禁用自定义libc++等参数。最终,在启用调试模式并禁用自定义libcxx后,成功编译并运行了示例程序。整个过程强调了V8文档的不足,并指出了详细配置说明的重要性,以减少用户在探索和调试过程中所需的时间和精力。--DeepSeek

study daily v8 c++ linux 2025

nestjs pg 模板

文章介绍了构建 NestJS 项目的关键步骤,包括使用 TypeORM 进行数据迁移、安装必要的开发依赖如 Winston 和 Dayjs 以实现日志管理和日期处理功能。文中还详细说明了如何通过 Swagger 文档生成 API 文档,并借助 OpenAPI SDK 工具进行代码生成。此外,文章强调了代码质量的重要性,介绍了 Linting 工具的使用以及遵循提交规范来维护代码仓库的整洁性和可追溯性。整个过程涵盖了从项目初始化到功能开发、文档编写和持续集成等多个方面,为开发者提供了一个完整的 NestJS 项目构建指南。--DeepSeek

node pgsql daily 2024 nest typeorm

node 后端 dockerFile 示例

这篇文章主要介绍了如何通过Dockerfile来构建一个多阶段的节点应用容器,涵盖了从开发环境到生产环境的完整流程。文中详细描述了各个阶段的配置步骤,包括节点环境的初始化、依赖包的安装与缓存优化、Python相关工具链的配置以及中文字体的支持设置。同时,文章还提到了如何通过健康检查确保服务正常运行,并提供了具体的Docker构建和运行命令示例。--DeepSeek

devops node docker ci-cd dockerfile nodejs python multistage-build web-service fonts

mongoose 类型问题

在使用 `NestJS/Mongoose` 进行系统重构时,作者遇到了一些与 `Mongoose` 类型相关的问题。具体来说,在构建查询过滤器时,期望能够通过类型检查来限制和约束过滤条件的字段类型,但在实际代码中发现并没有严格的类型限制,甚至可以随意添加不存在的字段而不引发编译错误。 使用 `TypeScript` 的一个重要目的就是通过静态类型检查减少编码错误,提高开发效率。然而在构建查询条件这一重要环节上,无论是 `NestJS/Mongoose` 还是之前的 `Typegoose` 实现,都未能提供令人满意的类型安全性和约束能力。这引发了对当前ORM选择的思考:是否需要更换ORM框架?比如 `Prisma` 是否能解决这个问题?或者继续使用 `TypeOrm` 但接受其在 MongoDB 支持上的局限性? 核心问题其实源于 `Mongoose` 本身的类型处理机制。作者认为,尽管可以通过调整 ORM 框架来改善体验,但在根本上这仍然是一个需要面对的技术挑战。 那么你是否也在使用 `Mongoose` 或其他 ORM 遇到了类似的类型安全问题?你会如何权衡框架的便利性与开发体验的重要性?又会选择哪一种解决方案来实现更好的类型安全保障呢?这些问题值得每一位开发者深入思考。--DeepSeek

study work 2024 mongoose orm typescript

丐版 mongodb 全文搜索

本文探讨了如何在社区版 MongoDB 上实现中文全文搜索功能,通过结合 NestJS 和 Mongoose 开发环境,详细介绍了从 Docker 部署 MongoDB 环境到技术实现的全过程。文章分析了在没有企业版或 Atlas Search 支持的情况下,如何利用 `@node-rs/jieba` 分词工具完成中文分词处理,并通过回写机制实现搜索功能。文中还讨论了技术选型中的权衡取舍,包括分词算法选择、数据源回写策略以及与 Elasticsearch 的对比等关键问题。文章最后提出了一个值得思考的问题:在现有解决方案的基础上,是否可以通过扩展或优化进一步提升性能和用户体验?--DeepSeek

mongodb study node docker work nest fulltext search

openapi client 生成

本文详细介绍了如何通过特定的包生成优雅的API客户端并与Vue项目集成。文章涵盖了服务端配置、GitHub Actions自动化流程、前端代码封装以及Pinia状态管理等技术细节,并分享了开发过程中遇到的问题和解决方案,强调了整体体验的优雅性。--DeepSeek

study vue github ci-cd work 2024 openapi swagger

ts 严格模式配置,舒服

本文通过一段具体的tsconfig.json配置展示了TypeScript严格模式的使用,并以“严格模式真舒服啊”为主题,探讨了严格模式为开发带来的诸多好处。文章不仅呈现了一种经过实践验证的有效配置方案,更引发了对代码质量与开发者体验之间平衡的思考:在享受严格模式带来的规范性提升的同时,如何避免过度约束导致的效率下降?通过合理的配置调整,是否可以在保持代码严谨性的同时,保留一定的灵活性?这种平衡艺术不仅是技术层面的问题,更是开发团队在项目管理中需要深思的关键点。--DeepSeek

study ts daily config typescript typescript compiler

gitlab 部署与钉钉集成

本文介绍了如何使用Docker部署GitLab,并详细说明了如何配置SMTP邮件功能、集成钉钉SSO(单点登录)以及设置钉钉机器人进行项目通知。文章首先指导用户安装和配置Docker环境,包括必要的端口映射和存储卷设置。接着,详细描述了编辑GitLab配置文件以启用SMTP邮件服务的过程,并强调了测试邮件发送的重要性。然后,分步说明了如何在钉钉企业后台获取SSO相关信息,并将其集成到GitLab中,确保单点登录功能正常工作。此外,文章还介绍了如何创建钉钉机器人并生成Webhook URL,以及如何在GitLab中配置系统钩子以实现项目事件通知的自动化。最后,通过实际操作验证了整个流程的正确性和可靠性,帮助用户顺利完成从部署到集成的全过程。--DeepSeek

devops sso docker k8s gitlab DingTalk SSO

使用 k8s 搭建 minio,以及简单使用

本文详细介绍了如何在 Kubernetes(k8s)环境中搭建 MinIO 并进行简单使用。文章首先讲解了两种常用的 k8s 环境搭建工具——minikube 和 MicroK8s 的安装与配置方法,并提供了相应的命令示例。接着,文章重点描述了如何通过 Kubernetes 部署 MinIO 服务,包括创建和应用相关的 YAML 文件、检查 Pod 和服务状态、端口转发以及获取初始账号密码等操作步骤。最后,文章还展示了如何通过简单的测试使用 MinIO 存储服务。整篇文章以实际操作命令为核心,帮助读者快速上手 k8s 环境下的 MinIO 部署与使用。 值得注意的是,在实际部署过程中可能会遇到网络配置、权限设置等问题,这些问题需要根据具体环境进行调整和优化。此外,MinIO 在高并发场景下的性能表现如何?在多节点环境下如何实现负载均衡与数据一致性?这些问题值得进一步探索与实践。--DeepSeek

devops docker k8s microK8s minio Kubernetes