跳转至

札记

Components

Components are the units of deployment. They are the smallest entities that can be deployed as part of a system. In Java, they are jar files. In Ruby, they are gem files. In .Net, they are DLLs. In compiled languages, they are aggregations of binary files. In interpreted languages, they are aggregations of source files. In all languages, they are the granule of deployment.

Components can be linked together into a single executable. Or they can be aggregated together into a single archive, such as a .war file. Or they can be independently deployed as separate dynamically loaded plugins, such as.jar or .dll or .exe files. Regardless of how they are eventually deployed, well-designed components always retain the ability to be independently deployable and, therefore, independently developable.


编辑于 2025-03-31

2025-03-23 有感

绕着困难走的人永远不会成为成功的人。一个成功的人,他是主动迎接挑战的人,因为他要开辟新赛道,他如同走在沙漠当中一样,这是任正非的话。

因为没有人会给你指明未来的方向,需要你去开辟新赛道,引领未来发展的方向,这才是伟大的成功者。

所以人呐,是否能成为一个对社会有贡献的人,一是要有信念,二是要有情怀,要敢于面对挑战,迎接挑战。人往往是在迎接挑战的时候,你的才能才会得到极大的释放。

共勉!

当时只道是寻常

浣溪沙 纳兰容若

谁念西风独自凉,萧萧黄叶闭疏窗,沉思往事立残阳。

被酒莫惊春睡重,赌书消得泼茶香,当时只道是寻常。

那些我们习以为常的日子,那些眼前的普通人,可能在某一天,都是你人生回忆里的美好,所以朋友啊,珍稀当下,珍惜眼前人。

使用 Shell 脚本管理 OpenVPN 守护进程

这篇技术博客涵盖了使用 Shell 脚本管理 OpenVPN 守护进程的完整过程,解释了每个关键步骤,并提供了代码示例。如果你有任何问题或想要进一步探讨,欢迎留言讨论!

版本管理:追溯数据的生长链

版本管理这个词,听起来是不是就很酷?想到版本管理,大家第一反应肯定是 Git!毕竟,它是专业的版本管理工具,功能强大得能把一堆数据的变动历史精确到秒。但别着急,我们的需求可不需要这么复杂的操作。经过简单分析,我发现,版本管理的核心其实就是 条件和状态,就像一个老派的分支决策题:你选择左边还是右边?

而且说到版本管理,我脑袋里立马浮现的图景是:一棵小树苗,每次更新就长高一点点,最终茁壮成参天大树,穿越时间的洪流,经历岁月的洗礼... 就是这个感觉!🌱

版本规则:看我怎么将小树苗养成大树

我们要给每条数据生成一个版本号,每次编辑后还能选择是否更新,从而追溯数据的“成长过程”。就像一棵小树苗的成长路线图。

版本号规则

  1. 版本号有两个部分:主版本(major)次版本(minor)
  2. 主版本从 A 开始,每次更新递增,比如:A → B → C → ...,主版本部分升得飞快!
  3. 当主版本到达 Z 时,我们不怕,因为...主版本会变成 A0,然后继续递增!这就是成长的奇迹!
  4. 次版本从 0 开始,每次递增 1,简简单单,循序渐进。
  5. 版本初始化为 A.0,并有两种更新方式:普通更新和归档更新。
  6. 普通更新:就像一个持续进化的过程,A.0 → A.1 → A.2...,每天进步一点点。
  7. 归档更新:让版本变得更加历史悠久,A.n → A(A.n) → B.0 → Z.n → Z(Z.n) → Z1.0 → ...,每一个版本都像是“宝贵的历史文物”!

这个版本更新规则,就像是给数据安排了人生路线图,每个版本都是它成长的一个节点。

版本更新映射关系:就像数据的身世档案

通过以下表格,我们可以看到不同版本更新方式的生动映射:

更新方式 当前版本 主版本 次版本 更新后版本
普通更新_0 A.0 A → A 0 → 0 + 1 A.1
归档更新(送审) A.1 A 1 A(A.1)
普通更新_1 A(A.1) A → B 1 → 0 B.0

看嘛!每个版本就像一个人类的成长记录,普通更新就像升级打怪,归档更新则像是“送审”的过程——你升级后得去展示自己,给大家看看你多厉害!

云办公最佳实践_Code Server

这是一个可以运行在任何设备的 Vscode 解决方案,我认为应该是现有所有产品中最好的没有之一。

记得去年只有 Vscode 官方的 for web,部署起来略显复杂,没想到不到一年,有人才已经对其作了进一步封装。

个人用来还不错,比如读者正在浏览的博客,正是我在平板上使用 code server 远程部署迁移的。还是很激动的,毕竟闲置多时的平板得以再次利用,以后出门不用背笔记本了,哈哈!闲话不多说,进入正题哈。

Developing and publishing modules

你可以收集相关的包放到自己的模块中,推送到远程仓库方便其他开发者使用。这篇文章介绍了如何开发和推送模块。

关于非侵入式架构

在工作中,很多项目并不像我们学习时所遇到的那样,不论是大型项目还是小型项目,它们都有同样令人头疼的问题——技术债务。

我们不能逃避,但是需求不会等着我们把这些问题解决之后再继续跟进。我们需要更加优雅的解决方案,这就是非侵入式架构,其在自动化运维领域很受欢迎。

在 Go 中实现非侵入式架构的关键是通过接口和组合来实现松耦合。以下是一些实现非侵入式架构的技巧: