aiken's blog
  • home
  • archives
  • search
  • Aiken's Blog
  • home
  • posts
  • tags
  • categories
  • archives
  • about
  • search
  • linklog
Home

Posts

Whats DevOps?

在一个庞大的组织架构中,CI/CD 和 Devops 的概念是避不开的,了解它的工作原理和概念能帮助我们更好的与他人进行协作。 CI/CD 介绍 这是一个用来描绘 CI/CD 的示意图,其描绘了 CI/CD 的工作流和各自的一些职责,接下来本文分别对两者进行介绍。 CI (Continuous integration) 持续集成 持续集成是面向开发者(Developer)的环节。从上述的图也可以看出,整体的流程如下: Developer 基于给出的需求进行编码(code),完成 Feature 或者 Bug 修复后,提交(Commit)代码,然后平台会对这些需要(Merge Request)代码进行编译(Build),编译通过后,执行自动化的持续测试(Continuous Test),待测试通过后才会正式合并入主干。 也就是说,CI 工具在检测到代码变更后,自动对其执行编译和单元测试,验证其代码的正确性和可用性,以及是否适合与源代码进行集成,然后进行自动集成。 该流程有以下的优势: 能够避免不同开发环境带来的不一致问题 减少手动操作 清晰的版本管理和控制 降低人为操作的风险 CD (Continuous deployment)持续部署 持续部署则是面向 IT 运维技术人员(ops)的环节,整体流程如下: Devs 成功 发布代码(release) 后,CD 工具会自动 部署(deploy) 该 service 到服务器上,进行发布,直接部署到生产环境中,可供 操作(operate),并通过 监控(monitor) 来确保服务的正常运行,如果出现问题后,就即时 FeedBack 给开发者。 持续交付是一种软件开发实践,它与 CI 结合使用,可自动执行基础结构预配和应用程序发布过程。作为 CI 过程的一部分测试和构建代码后,CD 会在最后阶段接管,以确保它包含随时部署到任何环境所需的一切。CD 可以涵盖从调配基础结构到将应用程序部署到测试或生产环境的所有内容。使用 CD,软件的构建使其可以随时部署到生产环境。然后,可以手动触发部署或移动到持续部署,其中部署也是自动化的。 该流程提供了这样的能力: 确保随时随地能进行部署 确保更新能够正常执行 CT (Continuous Test) 持续测试 持续测试是一种软件测试实践,其中测试持续运行,以便在错误引入代码库后立即识别错误。在 CI/CD 管道中,持续测试通常是自动执行的,每次代码更改都会触发一系列测试,以确保应用程序仍按预期工作。 ...

March 25, 2023 · 1 min · 204 words · aikenhong ·  Devops
#Devops

折腾 Hexo 的 Icarus 主题

本文的博客页面基于 Hexo +Icarus 主题搭建,在使用过程中对该主题做了一些简单的配置,以适应自己的需求。这里介绍一下自己粗浅的方案。 十分推荐 Icarus 这个主题,功能支持十分全面而且作者的文档也较为详实,推荐大家去了解。 拓宽显示页面区域 include/style/base.styl 中定义了各种基本页面尺寸: js $gap ?= 64px $tablet ?= 769px $desktop ?= 1088px $widescreen ?= 1280px $fullhd ?= 1472px 可以在 include/style/responsive.styl 中定义 2 栏 3 栏情况下所使用的宽度: js +widescreen() .is-3-column .container max-width: $fullhd- $gap width: $fullhd - $gap .is-1-column .container, .is-2-column .container max-width: $widescreen - 2 * $gap width: $widescreen- 2 * $gap 移动端优化 该主题在移动端表现的时候,两侧的 widget 会自动挪到下方,这样每个文章看完的时候体验很差,所以我希望在移动端的时候能隐藏这些 widget。 ...

March 11, 2023 · 4 min · 650 words · aikenhong ·  Blog ·  Hexo
#Blog #Hexo

Count_Min Sketch算法

本文介绍计算大规模数据流中的元素出现频次的方法 CMS,以及其简单改进Count-Mean-Min-Sketch Intro & Scene 在大数据场景下,比如网页的 TopK 问题,爬虫的是否访问过的问题,都是一种出现频次相关的问题,那么在系统设计的时候,如何选择策略和数据结构去存储相关的数据是最高效合适的呢? 计算元素的出现频次,如果出现与普通的场景下,简单的方案就是用 hashmap 来记录元素出现的次数: cpp std::unordered_map<std::string, int> freq; for(const auto& e: elements){ if (freq.find(e) == freq.end()){ freq[e] = 1; }else{ freq[e] += 1; } } 但是这种方式在大量数据流的情况下,如果存在大量唯一元素的情况下,会占用大量的内存,导致其无法应对大数据场景,因此在"时间换空间"like 的策略选择中,这里就需要考虑通过时间,或者准确率等其他的因素来换空间。 通常来说,针对大数据场景,会无限扩张的数据结构显然是不适用的,所以希望能用固定的空间来进行计数的管理,同时希望尽量不要影响到运行的时间,换言之,可以牺牲掉一定的准确性,来实现节省空间的效果。 基于上述需求,我们可以想到 Hash 算法:将无限大的空间映射到固定的 size 的输出上;而大数据场景下的 Hash 会遇到冲突会被无限放大的问题,如何解决冲突是最核心的问题 基于概率数据结构实现的 Blomm Filter 算法采取多 Hash 的方法来减少冲突 而其衍生出来的 CMS 算法以同样的思想,基于不同的设计,更为适应这种计数场景 下面介绍该方法的具体实现 CMS 的具体实现 首先第一点,通过 hash 来实现数值空间的转换,通过哈希函数 H 将输入元素 x 映射到一维数组上,通过该 index 的值来判断元素的 Count(是否存在) ...

March 10, 2023 · 2 min · 416 words · aikenhong ·  Matching
#Matching

Python00 Conda 与 Pip

@Aikenhong 的旧笔记翻新完善 1.0 Python 的灵活和广泛应用场景来自于众多的第三方库,由于强大的可拓展性和众多的库,使得 Python 的使用简单灵活,且应用面极广。 但是不同库之间的相互依赖关系,对版本的不同要求等等因素,使得"环境配置"成为了开发者闻之变色的一词,对一个新的库和项目环境的配置尝尝会花去大量的时间,这可能也是 Docker、Venv(虚拟环境)必须存在的原因之一。 这里不对 Docker 及其相关技术,进行说明,会另开章节进行学习。 才疏学浅的本菜鸡希望从 python 开发者避不开的 conda 和 pip 出发介绍一下关于库安装的一些事情,以及这两个 CLI 的关系。 Anaconda MiniConda 和 Conda anaconda 是一个针对数据科学的 Python 发行版,其包含了一下三个方面的内容: 完整的 python,ipython numpy、Script 等常用的数据科学库 包管理器 Conda 和 pip 软件发行版是在系统上提前编译和配置好的软件包集合, 装好了后就可以直接用 miniconda 是 conda 的发行版,其包含了 conda 本体和其所需的所有环境,安装了 miniconda 后就可以正常使用 conda,由于其不包含 python 和诸多第三方包,所以会比 anaconda 纯净得多,我们可以基于其从零开始搭建一个完整的环境。 而 conda 只是一个包(lib、package)和环境(env)的管理工具,其用于自动安装,升级,(也可分析包之间的相互依赖关系)的工具。 Conda 和 Pip 的关联和区别 conda 是通用(语言无关且跨平台)的包管理器,它发源于 python 的 pydata 社区,但他不仅适用于 python 包的管理,还适用于任何语言写的包和依赖,但是我们应该大多数时候只用来做 python 管理。 其只能在 conda 环境中安装包,但是可以安装各种语言和各种类型的包。 pip(pip install package) 是 python 官方认证的 python 包通用管理器,只能管理 python 包,安装发布于 python package index(pypi)上的所有包,均由 python 官方管理。 ...

March 6, 2023 · 2 min · 318 words · aikenhong ·  Python ·  Conda ·  Pip
#Python #Conda #Pip

Windows Powershell 00 Install and Config

Update:@20230214 shift+右键: 在此处打开 powershell. PowerShell ,这里的 PowerShell 和 windows 的已经不是同一个东西了,可能要更先进一些,通过 msi 进行安装,安装完后重启 terminal 就会自动的添加配置,后续的配置在这个 new shell 中进行会更好一些 Basic Setting Setting & Cancel Proxy 设置代理如下: powershell netsh winhttp set proxy 127.0.0.1:8890 # 查看代理设置情况 netsh winhttp show proxy 取消代理设置使用: shell netsh winhttp reset proxy Setting Policy 如果 powershell 中禁止运行脚本运行: ...

March 5, 2023 · 3 min · 582 words · aikenhong ·  Windows ·  Powershell
#Windows #Powershell

Bash Notebook 01

整理脚本编写的一些最基本语法,包括参数传递,赋值,循环等基本语句,方便后续的脚本编写和改动。 语句注释 单行注释:# ,多行注释: bash :' 多行注释用冒号加单引号即可 ' echo 'legal' 命令行参数传递 命令行传递参数的方式极其简单, $1 … $ 9 可分别代表输入的 9 个参数,第 10 个参数则使用 ${10} 表示,可以将其赋予变量后便于使用。 一些特殊参数: $0 脚本本身的名称 $# 输入参数的数量 $$ 进程 ID $* | $ @ 所有参数(从第一个开始 $(PWD) | `pwd` 都能输出当前的工作路径 举个脚本例子如下: ...

January 25, 2023 · 5 min · 854 words · aikenhong ·  Bash
#Bash

Windows Configuration04 Dual-System-Ubuntu

该文介绍基于 Windows11 系统的双系统安装和删除,安装的双系统选择 Ubuntu(开发还是比较推荐使用 WSL2 即可) Install Dual System 参考资料:全面解决各种问题 双系统安装 Windows+Ubuntu20.04双系统安装教程 1. 安装 u 盘制作 这里推荐 ventoy 来做启动盘,ventoy 可以同时将很多系统的镜像放到一个 u 盘中,最最重要的是:干净简洁,可以参考其官方文档 来制作盘,制作后将镜像文件放到指定目录即可。 2. 硬盘分区 win+s 搜索创建并格式化分区,找一块空闲空间较大的硬盘,右键压缩卷,设定好预留给 Linux 的空间即可(记住该大小,方便后续辨认,可以将各个盘的大小拍照记录下来,安装的时候别把 windows 覆盖了)。 ...

January 22, 2023 · 1 min · 193 words · aikenhong ·  DualSystem ·  Windows
#DualSystem #Windows

Github Profile 个人主页

Reference 本文介绍如何配置自己的 Github 的个人资料界面,同时会介绍相关美化个人资料的一些资源网站和项目,并简单介绍其用法。最终结果如下(还有许多优化的空间): 创建同名仓库 Github 中创建用户名的同名仓库,该仓库的 README.md 将会在个人的资料页进行展示。(附上官方的说明如下) AikenH/AikenH is a special repository. Its README.md will appear on your public profile. 创建该仓库之后,我们对 Readme 的改动将会实时的同步到我们的个人界面,后续我们就只需要专注于编写和修改该 Readme 即可。 相关资源推荐 由于大家的审美和风格不同,这里不做设计上的推荐,仅推荐一些用于美化个人界面的资源和部分项目的用法(以本人的 blog 为例)。 名字部分,简单文字转图片随便找一个工具箱 或者网站生成即可,不在赘述; 这里是一个工具和推荐仓库的大全集:abhisheknaiidu/awesome-github-profile-readme 这里是一些优秀的 readme profile 动态字幕 介绍使用的动态字幕效果实现:DenverCoder1/readme-typing-svg ,进入其 Demo Site ,设定想要的样式和文字即可生成对应的 markdown 和 html 代码。 ...

January 21, 2023 · 1 min · 151 words · aikenhong ·  Github
#Github

Nodejs、yarn、npm关系辨析

@AikenH 2022 Node-JS-Chapter1 参考:包管理工具npm、yarn以及nvm简介及简单使用 Concept 概念 对 Node,NPM,JS,Yarn,NVM 的概念和作用进行一个辨析和介绍,了解各自的含义和职责,进而理解我们使用的到底是什么,环境怎么管理,怎么自定义和进行改动等。 JS在 1995 年诞生,Nodejs 在 2009 年诞生,在此之前 JS 只能在浏览器中使用(google 开发的 chrome 的 V8 引擎),NodeJS(第三方作者想直接在计算机运行 JS,让其脱离浏览器)相当于提供的一个 JS 的运行环境,用来支持 JS 的执行,也就是 JS 的一个 runtime system。 由此,JS 除了 web 前端编程,又可以支持后台开发、GUI 开发、APP 开发和 CLI 工具开发 Nodejs和 JS 的概念已经在上述清楚了,这里说一下 nodejs 组成: V8 引擎将 JS 编译成机器码,提高运行速度; 本地模块:使用 C/C++实现的一些高性能开源库; 标准库:封装 C/C++的一些本地模块的接口,转换为 JS 接口,就是 Nodejs 的标准库,其良好的设计也赋予 Nodejs 强大的生命力; NPM 是随 NodeJS 一起安装的包管理工具(提供下载,版本校验,兼容性校验等功能),就像 pip、conda 帮助 Nodejs 管理并解决本地部署的问题。 允许下载别人写好的第三方包到本地使用; 允许下载安装别人编写的命令行程序; 允许上传包或命令行程序给别人使用; Yarn:由 Facebook、Google、Exponent 和 Tilde 联合推出的 JS 包管理工具,和 NPM 就像是 pip 和 conda 的关系,其仍然使用 NPM 的 registry,不过提供了全新的 CLI 来进行管理(也就是管理包的代码和逻辑有区别) ...

October 9, 2022 · 3 min · 469 words · aikenhong ·  NodeJS
#NodeJS

一次基于Vue和Django的前后端开发实践

文章的部分内容被密码保护: --- DON'T MODIFY THIS LINE --- @Aikenhong 2022 介绍基于Tdesign和Django的界面安装和前后端联调,ubuntu version, 该文章首先介绍如何配置环境,后续基于现有项目来介绍如何从零来构建基本的网页和后端服务。 基本信息 (已完成)下载编写好的网页压缩包:web-design,里面包含了vue和django模块。 路径两种方式打开: (命令行) cd ~/workspace/web_design_group10/ (资源管理器)主目录下的workspace/web_design_group10 编辑代码方式: 使用vscode打开该文件夹进行编辑 启动服务 (以下的操作都分别基于web_design_group10路径)完整的网页启动需要分别启动前后端的服务,并均保持开启状态,所以需要使用两个终端窗口来分别启动。 前端服务:在view-design路径下使用命令:npm run dev,可参考VUE启动 后端服务:在vuebackend页面使用命令: bash python manager.py runserver (python版本需要是3以上) 数据库服务:数据库安装后好像是默认启动的,如果发现有数据库的错误,按照ubuntu 启动mysql执行。 在启动服务之前,有一些环境需要配置,接下来我们将描述初始的环境准备。 环境配置(Ubuntu) 配置主要有几个部分组成:配置前端环境(vue、node)、配置数据库(mysql)、配置后端(python包),我们首先描述前端环境的配置。 ...

October 2, 2022 · 7 min · 1487 words · aikenhong ·  Vue ·  Django ·  Mysql
#Vue #Django #Mysql
<< « Prev 7/17 Next 9/17 » >>
© 2025 aiken's blog Licensed under CC BY-NC 4.0 · Powered by Hugo & PaperMod Visitors: Views: