About

欢迎来到 About Page,我将在这里为你介绍我自己。我的经历十分复杂,我很难完全解释清楚,但我会尽可能的让你明白。

简介

我是 AHdark,一个蒟蒻全栈开发。出生于 2007 年,在 2012 年拥有了自己的第一台电脑并开始了解计算机,2014 年开始学习计算机程序设计(C++),2020 年开始接触 Web 全栈开发。大约 2017 年开始学习 OI 内容,并参加算法竞赛。

主要活动于 GitHub1,个人开源了部分项目,同时广泛参与社区维护。目前在 GitHub 上有 100+ 个仓库,主要集中在 Web 开发和 workflow 工具链等方面。2

曾在数家公司任职,主要负责开发和 DevOps 工作。经过数年学习,当前已经基本具备对于中小型企业 Web 应用的架构能力。

技能

在数年的学习中,我积累了一定的技能,主要集中在 Web 开发、后端开发、DevOps 等方面。

前端开发

前端方面,主要以 React 为主,亦对 Vue3、Angular 等框架有所了解。熟悉 TypeScript 与 JSDoc,广泛使用其辅助项目开发。Monorepo 架构的项目开发经验丰富,主要使用 pnpm workspace 与 TurboRepo 进行项目管理。

UI 框架上,我曾经长期使用 MUI,目前主要使用 TailwindCss 与 Radix Headless UI 进行项目开发。目前我的状态管理方案主要使用 Redux Toolkit,同时也有使用过 Zustand、Mobx 等方案。在开发过程中,我趋向于使用较为严格的代码风格,同时使用 ESLint、Prettier 等工具进行代码风格的自动化管理。

当前 GitHub 已统计的 TypeScript 代码行数为 24k+。3

近期主要作品:

  • GFWBoard User: 当前闭源,预计开源 Next.js 重构前的版本。实现了对于 V2Board User 部分的重构,使用 MUI 仿照 Ant Design 风格实现了与原版 V2B 相似的样式,但显著提高了渲染性能,减小了对于单一 JS 文件的加载依赖性,同时对于 Webpack 进行了优化,减小了打包体积。同时,使用了 Formik 与 Yup 进行表单管理,使用 Redux Toolkit 进行状态管理,使用 I18next 进行国际化。4
  • Bridge Core Console (New Version): 对 Kinh 下 Bridge Core 的 Console 面板重构,基于 Next.js App Router。此项目提供了 AHdark Blog 的技术验证。5
  • AHdark Blog: 当前闭源,暂无开源计划,预览地址如当前网页。具体技术可参考文章 使用 Next.js 与 Hexo 重构博客系统

后端开发

后端方面,主要使用 Go 进行开发,同时也有使用过 Node.js、Python、C++ 20、Kotlin 等语言进行开发。由于我的 Go 代码行数已达 130k+ 行3,因此我在本段落1️以 Go 为主。

我是 Uber Go Fx 的深度使用者,目前已经积累了约 2 年的 Fx 使用经验。目前在最新的应用中,不论是单体还是微服务,我都会使用 Fx 进行全局依赖注入。6

我曾经大量使用 Gin,目前主要使用 Hertz。Hertz 提供了更为优秀的微服务一体化框架解决方案,尤其是在链路追踪、Prometheus 集成等方面,同时具有良好的对 Gin 的兼容性。7 对于微服务框架,我比较喜欢 Cloudwego 的 Kitex。作为字节跳动的开源产品,Kitex 在性能上有着极大的优势,同时在使用上也较为友好,侵入性较低。8

我主要使用 MariaDB、Postgres 等作为关系型数据库,同时也有使用过 MySQL、SQLite 等。在非关系型数据库上,我主要使用 Redis、Memcached、ElasticSearch、Cassandra 等。在数据库 ORM 上,我主要使用 GORM,同时也有使用过 Xorm 等。我通常在 Gorm 基础上使用 Gorm Gen,以避免 reflector 带来的性能折损和开发上容易犯的错误。9

RabbitMQ 是我目前主要使用的消息队列。但在大多数情况下,我不会将其作为微服务的通信方式,而是将其作为异步任务的执行方式。同时我还有使用 Etcd 等作为应用的配置中心,使用 Consul 等作为服务发现与注册中心。

作为云原生的坚定拥护者,我通常会对应用进行容器化,因此对于 Dockerfile 的编写有着丰富的经验。同时,我也持有一个 Kubernetes 集群,我偏好使用 GKE(Google Kubernetes Engine)作为 Kubernetes 的托管平台。10 我通常使用 GitHub Actions 提供 CI/CD 支持。从个人角度讲,我并不喜欢 Jenkins。

近期主要作品:

  • epay-cli: 实现了对于易支付协议系统的基本测试,同时提供了对于易支付协议的基本封装。11

我所撰写的 Go 应用多为商业项目,因此不便于开源。但我会尽可能的将一些工具类项目开源。

Kubernetes

我持有一个 Kubernetes 集群,在先前曾负责两个 Kubernetes 集群的运维工作。我通常使用 GKE 作为 Kubernetes 的托管平台。

KubeSphere 是我目前主要使用的 Kubernetes 管理平台,在包管理方面我使用 Helm,在生产环境的部署上我更偏好 Kustomize 和 Istio。

DevOps

DevOps 方面,我主要使用 GitHub Actions 作为 CI/CD 工具,曾经对于一个微服务项目配置了完整的 CI/CD 流程。当然,这些内容不适合个人,所以我更想讲一些在开源社区好用的工具。

  • GoReleaser: 一个用于发布 Go 项目的工具,可以自动化生成各种平台的二进制文件、Dockerfile、RPM、Debian 等。12
  • NilAway: 一个静态分析工具,可以在编译时检查空指针,避免空指针异常。13

任职经历

我从初二与人合伙创立第一个小型公司后,便不断的在提高自己的人际关系和业务能力。

  • 2020.7 - 2021.6: 圆云科技 CTO,主要负责开发工作,同时参与运营方针的制定。
  • 2021.6 - 2022.8: 云骏时代首席架构官,主要负责运维与架构工作。当前留职,作为顾问参与一定程度的讨论。
  • 2022.8 - 2023.5: 任职于 Star Horizon Corp.,主要负责开发工作,职称为 Technical Director。
  • 2023.5 - 2023.8: 原公司重组,更名为 Scalar Investment Corp.
  • 2023.8 - 2023.10: 任职于 VV Network,主要负责开发与运维工作。
  • 2023.10 至今:任职于 Saturney Limited.,Technical Director。

自 2023 年 10 月起,我基本停止了在公司的长期任职,转而成为半自由职业者。对于公司的时间投入显著减少。 步入高二,我需要用更多的时间专注于学业,同时也需要更多的时间进行自我提升。

未来计划

我将在未来的数年内,继续提高自己的能力。我将在 2025 年参加高考,希望能够考入一所理想的大学。

同时,我认为如果持续进行技术工作,不改变当前的生产方式,是难以实现阶级跨越的。我也希望能够在未来的数年内能够进一步发展自己的产业,改变生产方式,提高生产效率。

当然,作为一个永远的技术爱好者,我会不断学习,无限进步。

Footnotes

  1. GitHub 个人主页:AH-dark

  2. GitHub 仓库数量统计于 2023 年 1 月。

  3. GitHub 代码行数统计于 2023 年 1 月。 2

  4. 预览:果酱 Cloud (声明:该站点非 AHdark 参与运营,仅供样式预览)

  5. 预览:Bridge Core Console 由于 Bridge Core 项目 V1 版本已经停止维护,该项目无法正常运行。

  6. GitHub: uber-go/fx

  7. GitHub: gin-gonic/gincloudwego/hertz

  8. GitHub: cloudwego/kitex

  9. 官网: gormgorm-gen

  10. 官网: Google Kubernetes Engine

  11. GitHub: AH-dark/epay-cli

  12. 官网: goreleaser

  13. GitHub: uber-go/nilaway

Comments

Send Comments

Markdown supported. Please keep comments clean.