kitlau
kitlau

kitlau's blog

All Posts


Linux Docker 的 root 和 rootless 模式

Rootless Docker 和 Root Docker 在配置文件和目录结构上有显著差异,主要体现在 Docker 主配置文件的位置、运行时套接字路径、存储目录及日志目录等方面。Root Docker 的配置文件位于 `/etc/docker/daemon.json`,而 Rootless Docker 则使用用户主目录下的 `~/.config/docker/daemon.json`。两者在存储结构上也有所不同,Root Docker 使用全局的 `/var/lib/ docker` 目录,而 Rootless Docker 将数据存储在用户主目录中的 `~/.local/ share/docker`。此外,Root Docker 的运行时套接字位于系统级路径 `/var/run/ docker. sock`,而 Rootless Docker 的套接字则在 `$XDG_ RUNTIME_DIR/ docker. sock` 下。这种设计确保了两种模式能够独立运行且互不干扰,同时支持通过单独的配置文件和环境变量管理各自的实例。--DeepSeek

AnduinOS Docker rootless-docker docker-containerization linux-containers security-best-practices configuration-management comparison-analysis

为 AnduinOS 找到属于你的剪贴板助手

这篇文章详细记录了一位从 Windows 转向 AnduinOS 的用户在寻找高效剪贴板工具过程中的经历。作者通过 Google 找到了一款名为 clipboard-indicator 的 GNOME 扩展,并一步步完成了从下载到安装再到配置的全过程。文章不仅介绍了该扩展的功能和使用方法,还分享了个人体验和小技巧(例如如何设置快捷键),最终解决了用户在 AnduinOS 上的“生产力焦虑”。如果你也对跨平台工具迁移感兴趣,或者正在寻找提升编码效率的方法,不妨看看这篇文章——或许它能为你提供一些启发。--DeepSeek

AnduinOS clipboard GNOME extensions Windows alternative terminal productivity tool

如何使用 AnduinOS 愉快的开发 .NET

本文详细介绍了如何通过VSCode在AnduinOS上愉快地开发.NET应用,并分享了一些实用插件的配置经验。文章从C# Dev Kit、Roslynator等核心插件的功能与使用限制谈起,探讨了微软许可证政策对开发者的影响,同时对比了Jetbrains Rider的部分功能。此外,还介绍了C# XML Documentation Comments和C# Namespace Autocompletion等提升编码效率的小工具,并提到GitHub Copilot的订阅价格问题。最后,作者总结了自己的配置经验,并邀请读者分享更多建议。--DeepSeek

.NET C# VSCode AnduinOS dotnet vscode-plugins github-copilot development-environment

反思软件开发中的设计模式

本文探讨了软件开发中选择工具和方法的重要性,强调应根据实际需求而非盲目追求“最佳实践”。作者认为JavaScript因其灵活性和强大的生态系统,在前端和后端开发中均有广泛应用。文章还介绍了一本名为《JavaScript:从入门到脱线》的简明教程,旨在帮助已有编程经验的人快速掌握JavaScript的基础与高级特性。作者分享了编写此书的过程,希望通过这本书让学习者在掌握JavaScript时更加轻松高效。--DeepSeek

JavaScript programming web-development high-concurrency rapid-development beginner-tutorial

如何在 5 分钟内开发一个大语言模型聊天机器人

本文介绍了如何基于Gradio框架和llama3模型快速搭建一个功能强大的聊天机器人,并展示了完整的实现过程。文章首先说明了项目的依赖环境配置,接着详细讲解了聊天机器人的核心实现逻辑,包括用户输入的处理、llama3模型推理调用以及流式返回结果等关键步骤。代码部分展示了如何通过Gradio框架构建友好的交互界面,并提供了具体的使用示例和运行效果展示。实测结果显示,基于llama3-70b模型的聊天机器人能够准确理解并解答复杂的中文问题,同时支持上下文理解和多轮对话,展现出强大的自然语言处理能力。--DeepSeek

AI poetry gradio llama3 70b chatbot stream chat

你可能正在写内存泄漏的 .NET 代码!

这篇文章探讨了在C#/.NET开发中常见的内存泄漏问题及解决策略。文中指出,内存泄漏主要源于对象引用未被清除、集合未适当管理、缓存机制不当使用、委托或事件订阅未取消以及非托管资源未正确释放等。作者建议采用只读接口限制可变集合的修改、利用内置缓存组件以替代手动维护的缓存结构、确保及时解除事件订阅以防闭包捕获导致的对象保留、避免滥用静态变量并考虑弱引用、使用`using`语句强制释放非托管资源,并强调减少对终结器的依赖以提升性能。同时,对于涉及unsafe代码或低级内存操作时需格外谨慎。总结来看,内存泄漏的防治需要开发者在编码习惯和设计模式上多加注意,合理利用.NET框架提供的工具和特性来确保程序的稳定性和高效性。--DeepSeek

.NET Memory Leaks Closure Issues Unmanaged Resources Circular Dependencies Memory Caching Issues

5 分钟 .NET 单元测试极简入门

本文介绍了为.NET项目创建单元测试的基本步骤,包括使用Visual Studio或dotnet命令行工具创建xUnit测试项目,并添加必要的依赖包如NSubstitute和Moq。通过示例展示了如何编写单元测试,利用Arrange-Act-Assert模式验证业务逻辑功能,同时演示了NSubstitute的用法,用于模拟依赖对象并测试与外部系统的交互。文章还提供了多个实际场景下的测试案例,如书籍检索、年份过滤等,并讲解了如何配置模拟返回值和验证调用是否正确发生。最后,介绍了在IDE中运行和调试单元测试的方法,以及通过dotnet test命令执行测试的能力,总结了单元测试的重要性,并提到了未来可能涉及的集成测试内容,同时附上了作者寻求工作机会的信息。--DeepSeek

.NET Test xunit unit testing nsubstitute tdd

借 Moq 事件谈一谈单元测试的重要性

这篇文章讨论了开源软件安全性和单元测试的重要性。作者提到最近GitHub上发生的一个关于恶意NuGet包的事件,强调审查和测试第三方库的必要性。随后,文章转向单元测试,解释其在提高代码质量和确保功能正确方面的作用,并列举不写单元测试带来的问题,如降低代码可维护性和项目健康度,以及在未来开发中增加难度。作者还用一个恶性循环图展示了忽视单元测试的危害,并呼吁国内开发者和公司更重视单元测试。最后,文章附上了一则求职广告,希望寻找青岛base或远程工作的机会。--DeepSeek

.NET Test unit testing Software Development Code Quality Software Development Methodology

如何 3 分钟搭建图片转文本工具

本文介绍了如何利用LAF(一个基于Node.js的开发平台)快速构建一个图像识别系统。前端部分通过HTML、CSS和JavaScript实现了图片上传界面和结果显示功能,用户可以选择本地图片并预览;后端则使用Node.js处理图片文件,并通过调用AI图像识别API获取结果并返回给前端。文章还提到可以通过替换不同的AI模型(如支持中文的模型)来提升识别效果或实现多语言支持,同时强调了前后端分离设计的优势和开发流程的基本框架。--DeepSeek

AI LafStack Image Processing Computer Vision Frontend Development API Integration

如何使用 Optional 模式解决 C# 中的烦人的空引用问题

文章讨论了在C#中处理null值的两种方法:Optional模式和Nullable特性。作者通过示例代码展示了这两种方法的特点,并强调了Optional模式的优势,包括避免显式的null检查、减少NullReferenceException的风险以及在编译时就能发现潜在问题。与Nullable特性相比,Optional模式虽然可能让代码稍显复杂,但它通过函数式编程的概念提供了一种更安全和简洁的方式来处理可能为空的值。作者总结指出,在选择使用哪种方法时,可以根据项目的规模和团队成员的技术水平来决定,但两种方法都是有效的null引用解决方案。--DeepSeek

C# Null Handling Null Safety Optional Pattern Functional Programming Type System