关于我的 Hugo 博客 (教程)

重新搭建我的博客(静态) 冤大头回来了 … 太难了这次,准备简历的时候,发现我的博客没了,我最亲爱的,陪伴了一年的,备受好评的博客 nsddd.top 牺牲了 呜呜呜呜 别急别急,吸取教训,第一件事是什么,坚决不用动态博客了,从大一的第一代博客使用 workpress, 那时候用的服务器管理工具是 著名顶顶的 宝塔 , 虽然现在我还在用,哈哈哈,不过以后绝对绝对不会再用了 。第二代博客还记得吗 ,第二代博客就是我刚刚牺牲掉的博客,使用 docker 搭建,存活了两年(大二到大三),服务器中途都换了一次,不过得益于 Docker 优雅的移植性haha,所以我的博客得以存活。 那这次为啥挂了??? 挂的时间是 2023 年 9 月 1 日。原因是 Java 出现故障,发现 swtich 空间不足,然后,准备移植的,修复的,实在是觉得无力维护,我希望我的博客可以长久生存几年,十几年,甚至是几十年上百年。 所以,从头开始 !!! 选择合适的博客模板 之前用过 vuepress 做笔记,vuepress 相对来说不是特别合适我现在做的,因为已经有视觉疲惫了哈哈哈,看着很不舒服,所以用我很喜欢的一个开源项目,大家很多人也耳熟能详的顶级开源项目:hugo , GitHub 地址是:https://github.com/gohugoio/hugo 接下来就是选择合适的主题了,我参考了几个热门的 theme 选择了 https://github.com/adityatelange/hugo-PaperMod 安装 Hugo 我热衷于源码,可以随时改代码,提 PR ,于是用源码构建: ❯ git clone https://github.com/cubxxw/hugo.git ❯ cd hugo ❯ go build ❯ mv hugo /usr/bin 部署主题 选择我们使用的主题: ❯ git clone https://github....

九月 12, 2023 · 9 分钟 · 1876 字 · 熊鑫伟,我

如何安装和使用自主人工智能工具Auto-GPT

前言 🔮 在我的 Slack 工作区中,集成了多个 AI,分别有 ChatGPT 4、ChatGPT 3.5、Claude …… 我们可以通过 Slack 免费并且无限制的和 AI 交互,欢迎大家加入到 Slack,这里是 链接: https://join.slack.com/t/kubecub/shared_invite/zt-1se0k2bae-lkYzz0_T~BYh3rjkvlcUqQ 介绍 很早之前就了解到了 Auto-GPT,作为 GitHub 上近期增长速度最快的项目(没有之一),Auto-GPT 在开源社区可谓是人尽皆知,甚至 star 已经很快就超过 Kubernetes,目前有 125k star。 得益于 Auto-GPT 的出色技术,可以高精度和高效率地自动执行许多任务。 它利用了 GPT-4 强大的自然语言处理功能。 我们甚至可以通过它来实现更多的自动化的工作,比如说前一节 在 Sealos 上开发一款 AI 自动云原生化项目自动上线工具 什么是 AutoGPT 它的 GitHub 地址: GitHub 从本质上讲,Auto-GPT 利用 OpenAI 最新人工智能模型的多功能性与软件和服务进行在线互动,使其能够 “自主 “执行X和Y等任务。但正如我们在大型语言模型方面的学习,这种能力似乎像海洋一样宽广,但却像水坑一样深。 AutoGPT 是一个由人工智能驱动的应用程序,利用 GPT-4 等 LLM 的强大功能自主创建和处理各种工作。通过使用 Auto GPT,组织和个人可以简化报告创作、内容创建和数据分析等流程,以节省时间并减少错误。 AutoGPT 改变了任务自动化的游戏规则,使组织和个人能够专注于其他关键任务,同时将重复和琐碎的工作留给程序。 随着 LLM 的不断发展,我们可以期待看到像 Auto GPT 这样功能越来越强大的软件能够执行越来越复杂的任务。 就人工智能驱动的技术将如何改变我们未来的操作方式和与人工智能系统的互动方式而言,AutoGPT 提供了一个新方向。...

七月 16, 2023 · 2 分钟 · 411 字 · 熊鑫伟,我

Go 调试测试以及调试工具 dlv 学习

调试Go工程 ::: tip prepare: vscode golang 1.92 ::: demo go mod init test In main.go file package main import ( "fmt" ) // Swap functions func swap(x, y *string) (string, string) { //XOR exchange *x, *y = *y, *x } func main() { fmt.Println("Hello, world!") //Swap functions for i := 0; i < 10; i++ { a := "a" b := "b" swap(&a, &b) fmt.Println(a, b) } } vscode一键生成测试 >gotest for package/function ::: tip 分别是为包生成测试单元,为函数生成测试单元。 :::...

六月 19, 2023 · 10 分钟 · 1938 字 · 熊鑫伟,我

Github Actions 的高级使用技巧

创建 actions actions 是可以联合收割机以创建作业和自定义工作流的单个任务。您可以创建自己的操作,或使用和自定义GitHub社区共享的操作。 可以通过编写自定义代码来创建操作,这些代码可以以您喜欢的任何方式与您的存储库进行交互,包括与GitHub的API和任何公开可用的第三方API集成。 可以编写自己的操作以在工作流中使用,或与GitHub社区共享您构建的操作。要与所有人共享您构建的操作,您的存储库必须是公共的。 操作可以直接在机器上或Docker容器中运行。您可以定义操作的输入、输出和环境变量。 可以构建Docker容器、JavaScript和复合操作。操作需要一个元数据文件来定义操作的输入、输出和主入口点。元数据文件名必须为 action.yml 或 action.yaml 。有关更多信息,请参阅“GitHub操作的元数据语法。“ docker 容器操作 Docker容器用GitHub Actions代码打包环境。这创建了一个更加一致和可靠的工作单元,因为操作的使用者不需要担心工具或依赖项。 Docker容器允许您使用特定版本的操作系统、依赖项、工具和代码。对于必须在特定环境配置中运行的操作,Docker是理想的选择,因为您可以自定义操作系统和工具。 对操作进行发布管理 如果您正在开发供其他人使用的操作,我们建议使用发布管理来控制分发更新的方式。 用户可以期望操作的修补程序版本包括必要的关键修复程序和安全修补程序,同时仍与其现有工作流保持兼容。每当您的更改影响兼容性时,您应该考虑发布新的主版本。 在这种发布管理方法下,用户不应该引用操作的默认分支,因为它可能包含最新的代码,因此可能不稳定。 相反,您可以建议用户在使用您的操作时指定一个主要版本,并且仅在遇到问题时才将他们引导到更具体的版本。 要使用特定的操作版本,用户可以配置他们的GitHub操作工作流,以针对标签,提交的SHA或以发布命名的分支。 使用标签进行发布管理 我们建议使用标签进行操作发布管理。使用此方法,您的用户可以轻松区分主版本和次版本: 在创建发布标签(例如 v1.0.2 )之前,在发布分支(例如 release/v1 )上创建并验证发布。 使用语义版本控制创建发布 文件列表的右侧,单击Releases 页面顶部,单击草拟新版本。 要为发布选择标签,请选择选择标签下拉菜单。 如果您创建了一个新标签,请选择目标下拉菜单,然后单击包含您要发布的项目的分支。 在“描述此版本”字段中,为您的版本键入描述。如果您在描述中 @mention 任何人,发布的版本将包含一个贡献者部分,其中包含所有提及用户的头像列表。或者,您可以通过单击生成发行说明自动生成发行说明。 或者,要在您的版本中包含二进制文件(例如已编译的程序),请在二进制文件框中拖放或手动选择文件 或者,选择设置为最新版本。如果不选择此选项,将根据语义版本控制自动分配最新版本标签。 如果您准备好发布您的版本,请单击发布版本。要稍后处理该版本,请单击保存草稿。然后,您可以在存储库的发布提要中查看已发布或草稿的发布。有关详细信息,请参阅“查看存储库的版本和标签”。 移动major version标签(例如 v1 、 v2 ),指向当前版本的Git ref。例如: git tag -a v1.4 -m "my version 1.4" 引入新的主要版本标记( v2 ),用于将破坏现有工作流的更改。例如,更改操作的输入将是一个突破性的更改。 主要版本最初可以使用 beta 标签发布,以指示其状态,例如 v2-beta 。 -beta 标签可以在准备好时移除。 带有查询参数的发布表单自动化 要通过使用自定义信息自动填充新发布表单来快速创建发布,您可以将查询参数添加到发布表单页面的 URL。 查询参数是 URL 的可选部分,您可以自定义以共享特定网页视图,例如搜索筛选结果、问题模板或 GitHub 上的发布表单页面。要创建自己的查询参数,您必须匹配键值对。...

六月 14, 2023 · 13 分钟 · 2663 字 · 熊鑫伟,我

从理论到实践的项目管理打通

项目管理从理论到实践 理论介绍 瀑布模型: 敏捷模型: Scrum框架: 传统和敏捷差异 传统项目管理方法通常按照线性流程进行,通过预先制定的计划、监督和控制来实现项目目标。敏捷项目管理方法则更加灵活,通过迭代和持续的改进来实现项目目标。敏捷方法强调团队合作、适应变化、快速交付价值。 项目管理十大知识领域 项目管理的十大知识领域包括: 项目范围管理:确定项目的目标和边界,并确保项目在进行过程中不会超出这些范围。 项目时间管理:确定项目的时间计划,并确保项目按时完成。 项目成本管理:确定项目的预算,并确保项目在预算范围内完成。 项目质量管理:确保项目产品、服务或结果符合质量标准。 项目资源管理:确定项目所需的人员、设备和材料,并确保这些资源得到有效利用。 项目沟通管理:确定项目的信息需求,并确保项目信息得到有效传递。 项目风险管理:识别、评估和应对项目中的风险。 项目采购管理:确定项目所需的外部产品、服务或结果,并确保这些外部要素得到有效管理。 项目合同管理:管理项目中的合同,包括签订合同、监督合同履行和结束合同。 项目结项管理: 记录项目成果,并对项目进行评估,以确定未来项目的改进点。 项目管理的五大过程组 项目管理的五大过程组是: 开始过程组:在项目启动之前进行的活动,包括项目的范围、目标、预算和资源的确定。 规划过程组:为项目的成功制定计划,包括项目时间、成本、质量、资源、沟通、风险、采购和合同管理计划。 执行过程组:将计划转化为具体行动,通过项目团队的协作来完成项目的任务。 监控和控制过程组:监督项目的进展,并对变化做出反应,以确保项目按照计划完成。 关闭过程组:完成项目并归档项目文件。 监控负责产品项目的整个生命周期。 启动:项目如何高效启动 项目启动 上面我们看到项目管理的五大过程:启动、规划、执行、监控和收尾,毫无疑问的是,如何高效启动项目的重要性不容置疑~ 先看一下贯穿始终的一个表: 我们针对启动过程中的两个关键过程: 制定项目章程 识别干系人 应用 ⚠️ 项目启动阶段应该要做的事情包括: 确定项目目标:明确项目的目的、范围和成果,确保项目与组织的战略目标一致。 组建项目团队:确定项目团队的成员,并建立合适的团队沟通和协作结构。 制定项目章程:明确项目的责任和权限,并制定项目章程,确保项目运作有序。 确定项目预算:根据项目的范围和目标制定项目预算,并确定项目的资金来源。 确定项目时间表:根据项目的范围和目标制定项目时间表,并确定项目的里程碑。 评估风险: 评估项目中可能存在的风险,并制定风险应对策略。 获取资源: 确定项目所需的人员、设备和材料,并获取这些资源。 审批启动文件: 审批并签署项目启动文件,确保项目有了正式的许可开始进行. 沟通计划:制定项目沟通计划,确保项目中的信息得到有效传递。 合同管理:管理项目中的合同,包括签订合同、监督合同履行和结束合同。 项目管理计划:制定项目管理计划,确保项目管理过程有序、高效。 开始执行项目:根据项目管理计划和项目章程开始项目执行。 持续监控项目的进展,进行调整和控制,确保项目按计划进行。 定事 💡简单的一个案例如下: 定人 💡简单的一个案例如下: 概念认证(POC) 中文维基百科~ 概念验证(英语:Proof of concept,简称POC)是对某些想法的一个较短而不完整的实现,以证明其可行性,示范其原理,其目的是为了验证一些概念或理论。概念验证通常被认为是一个有里程碑意义的实现的原型 。 在项目生命周期中,POC 通常出现在项目的规划阶段或开始阶段。 在项目的规划阶段中,POC 可用于评估新技术的可行性和成本效益,以确定是否在项目中使用。 如果 POC 结果表明新技术是可行的并符合项目需求,那么就可以在项目的开始阶段中进行更全面的实施。...

五月 7, 2023 · 3 分钟 · 624 字 · Xinwei Xiong, Me

在AI时代 - 精益团队的企业文化和远程工作指南 v2.0

〉 笔者之前在参与 OpenIM 前,去过一些开源的社区和公司学习协作过,发现了一些好的文化,于是记录在这里,最开始的标题是 “一篇适用远程工作的约定指南: OpenIM 远程工作团队协作协议 v1.3”,后面我从 OpenIM 离职了,去了一家日企,学习到了外企的新的文化精髓,再到毕业后创业,开始组件和打磨团队,有了一些新的思考。团队以及领导人的决策力是最重要的两个因素,所以我把标题改为了:“在AI时代 - 精益团队的企业文化和远程工作指南 v2.0” Principles 0)Ownership & Leadership 如果看到团队或是项目有问题的时候,不要等,也不忍,请马上说出来,并给出相应的方案, 自己跳出来召集开会,及时调整。不要闷在那里,自己憋! “每个团队成员都承担Owner和Leader的角色。发现问题时,勇于指出并提供解决方案,不要等待或沉默。” 1)Initiative 每人个都必需是主动的,都需要自己发起要做的事,或是自己要认领要做的事,如果发现自己没有事情了, 需要学会主动发现问题,主动找到可以improve的地方,创新来源于此。没有路要学会自己造路! “为团队创新和改进提供动力。” 2)Objectives Oriented 每个人都是产品经理,也都是项目经理,每个人都必需把自己的工作和我们大的目标连接在一起,知道什么是重点,重点的东西就是两件事:一)从用户的角度出发,二)从产品的角度出发。 这意味着我们要随时观察整个产品的样子,而不只是自己这一块东西 。 “始终保持用户和产品的双重视角,确保工作与总体目标一致。” 3)Insists on High Standard 举法其上,得乎其中,举法其中,得乎其下,举法其下,法不得也。我们要坚持用高的标准要求自己,对于高标准的目标不妥协,但是在实施路径和策略上可以妥协。 “始终坚持高标准,确保质量。在实施过程中可以灵活,但对于高标准的最终目标绝不妥协。” Practices 0)Online 工作的时候必需在线。如果不在线了,需要说一下不在线的时长, 目前我们工作的事宜在通讯工具采用Slack, 如果需要请假的情况,如果不是紧急情况,需要提前一天 在 OpenIM 的Slack #random 频道中提前说明。如果是紧急情况,也需要提前在insider频道中告知大家。 “工作时,请确保在线。若需离线,务必在Slack #insider 频道提前通知。” 1) Documentation Driven 面对面交谈、电话语音、微信、Slack虽然是比较实时的反馈工具,但是只有文档是可以把重要信息给结构化的,而且写文档其实是比起前面的方式来说是更为深度的思考,因为会让你自己审视自己的想法。所以,对于一些重要 “功能”、“流程”、“业务逻辑” 、“设计”、“问题”,以及“想法”,最好都以文档化的方式进行。请使用Github的 wiki、project、issue这些工具或是使用Google Doc. “确保关键信息持久化和可追溯。” 2)Design Review 对于一些重要的问题或是工作(每个人都能够判断什么是关键问题和工作), 需要先把自己的想法share出来,而不是先实现 。 一个好的 Design 文档需要包括如下项: Background。交待这个事的背景、需求和要解决问题。 Objectives。说明这个事的目标和意义。 Alternative Solutions...

三月 29, 2023 · 1 分钟 · 171 字 · 熊鑫伟,我

跨平台以及多架构编译设计

前言 https://github.com/OpenIMSDK/Open-IM-Server/issues/432 现在很多地方都对服务的国产化适配有所要求,一般的国产化平台都提供arm版本的linux云环境供我们进行服务部署,因此需要构建arm版本的镜像。 构建方案 在上面的 issue 中我们描述了大致的构建思路和解决的步骤,我们来看一下构建的方案,我们以最常用的 amd 机器为例,来编译 arm。对于构建镜像的ARM版本,有如下两种方式: 在ARM机器上使用 docker build 进行构建; 在X86/AMD64 的机器上使用 docker buildx 进行交叉构建; ⚠️注意: 交叉构建和交叉运行的方式会有一些无法预知的问题,建议简单的构建步骤(如只是下载解压对应架构的文件)可考虑在x86下交叉构建,复杂的(如需要编译的)则直接在arm机器上进行构建; 实际测试发现,使用qemu方式在x86平台下运行arm版本的镜像时,执行简单的命令可以成功(如arch),执行某些复杂的程序时(如启动java虚拟机),会无响应,所以镜像的验证工作应尽量放置到arm机器上进行; 上面第二点按如下方式测试: docker run --rm --platform=linux/arm64 openjdk:8u212-jre-alpine arch 可正常输出; docker run --rm --platform=linux/arm64 openjdk:8u212-jre-alpine java -version 则会 卡住,且需要使用docker stop停止容器才可以退出容器; 启用试验性功能 💡 注意:buildx 仅支持 docker19.03 及以上docker版本 如需使用 buildx,需要开启docker的实验功能后,才可以使用,开启方式: 编辑 /etc/docker/daemon.json ,添加: { "experimental": true } 编辑 ~/.docker/config.json 添加: "experimental" : "enabled" 重启Docker使生效: sudo systemctl daemon-reload sudo systemctl restart docker 确认是否开启:...

二月 13, 2023 · 6 分钟 · 1108 字 · 熊鑫伟,我

Kubernetes一篇快速入门的文章

正片开始~ Kubernetes 是 Google 团队发起的一个开源项目,它的目标是管理跨多个主机的容器,用于自动部署、扩展和管理容器化的应用程序,主要实现语言为 Go 语言。Kubernetes 的组件和架构还是相对较复杂的。要慢慢学习~ 我们急需编排一个容器~ 为什么 kubernetes 弃用了 docker ::: tip 很意外 听到 Kubernetes 从 Kubernetes 版本 1.20 开始弃用对 Docker 作为容器运行时的支持,这似乎有点令人震惊。 Kubernetes 正在删除对 Docker 作为容器运行时的支持。Kubernetes 实际上并不处理在机器上运行容器的过程。相反,它依赖于另一个称为容器运行时的软件。. ::: docker 比 kubernetes 发行的早 docker本身不兼容 CRI 接口。Kubernetes 适用于所有实现称为容器运行时接口 (CRI) 标准的容器运行时。这本质上是 Kubernetes 和容器运行时之间通信的标准方式,任何支持此标准的运行时都会自动与 Kubernetes 配合使用。 Docker 不实现容器运行时接口 (CRI)。过去,容器运行时没有那么多好的选择,Kubernetes 实现了 Docker shim,这是一个额外的层,用作 Kubernetes 和 Docker 之间的接口。然而,现在有很多运行时可以实现 CRI,Kubernetes 维护对 Docker 的特殊支持不再有意义。 ::: warning 弃用的意义 虽然移除了 docker ,但是还是保留了以前的 dockershim,如果你愿意,你依旧可以使用 docker 容器化引擎提供容器化支持。 除了docker,还有 containerd、CRI-O...

四月 28, 2022 · 3 分钟 · 504 字 · 熊鑫伟,我

参与我们的区块链学习平台项目

参与本项目 ⚡ 前言 欢迎来到我们的项目!本项目旨在建立一个基于区块链的全民学习平台,通过集体的智慧和努力,推动技术和知识的普及。无论你是初学者还是经验丰富的开发者,你的贡献都将对项目产生积极影响。 💡 关于本项目(先看❗) 本项目由一个热衷于区块链和软件开发的团队发起。我们致力于创建一个开源、去中心化的学习环境,让每个人都能够访问和分享知识。 🌐 联系方式 Website Blog Telegram 🔍 项目背景 我们相信,通过集体智慧和技术的力量,可以打造一个更加开放和包容的学习环境。这个项目不仅是一个技术挑战,也是社区合作的成果。 🌟 如何参与 不论你的技能水平如何,都有多种方式可以参与本项目: 提交问题和功能建议。 参与代码编写和文档撰写。 在社区中提供帮助和支持。 我们都是这个仓库未来很有潜力的客户,或者是贡献者,谢谢你选择了加入C-UB社区,我们将会一起合作,未来我们将会考虑以区块链为底层搭建一个全民学习平台,我们每一个人都将会是这个社区的构建着,将会推动c-universal blockchain(链学) 社区的发展和进步~ 如果你对本项目有任何建议或发现文中内容有误的,欢迎提交 issues 进行指正。 对于文中我没有涉及到知识点,欢迎提交 PR。 或许我们会很疑惑? 在我们参与贡献的时候,如果克隆了**🧷 cs-awesome-Block_Chain项目,但是每次获取上游代码很麻烦怎么办?如何提交有意思的代码?这篇文章将会解决这个问题~⬇️ ** ⚡提前需要你… 你需要学会使用markdown🖱️ 你需要学会使用git 你的代码符合Google代码规范 排版 笔记内容按照 中文文案排版指北 进行排版,以保证内容的可读性。 不使用 ![]() 这种方式来引用图片,而是用 <img> 标签。一方面是为了能够控制图片以合适的大小显示,另一方面是因为 GFM 不支持 <center> ![]() </center> 这种方法让图片居中显示,只能使用 <div align="center"> <img src=""/> </div> 达到居中的效果。 在线排版工具:Text-Typesetting。 在线的公式:LaTex 在线表格转换工具:tableconvert 谷歌代码规范 🧷 谷歌代码规范可以说是公认的规范,也是目前大多数企业都以为标准~ 对于大型程序,我们需要对 🔥软件工程有一定的了解 协议许可 所有内容遵循CC-BY-SA 3.0协议(署名-相同方式共享)© ⚡贡献步骤 我们的fork,如何保证实时的同步上游?🧷这篇教会你 保持自己github的forks自动和上游仓库同步并推送到 gitee...

二月 1, 2022 · 1 分钟 · 160 字 · 熊鑫伟,我