IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:GitHub

共 18 篇相关文章

IT 累计浏览 67

在 Github 中通过创建 issue 来唤醒 claude 工作

本文详细介绍了如何通过 GitHub Actions 将 Claude AI 集成到代码仓库中,以实现通过创建或评论 issue 来触发 AI 交互的功能。实现分为两种主要路径:一是安装官方的 Claude App,操作快捷;二是创建自定义的 GitHub App,适用于组织策略限制或需要更精细权限控制的场景。核心配置步骤包括在仓库设置中添加用于认证的 Secrets(如 ANTHROPIC_API_KEY),以及创建特定的 Workflow 文件(如 claude.yml)。Workflow 文件定义了触发条件(如 issue 评论或 PR 审查中包含 @claude),并设置了严格的权限控制和安全机制,例如限定触发用户身份、对 Bash 工具使用命令前缀白名单等。文章特别强调了安全配置清单,包括使用 actor 白名单进行双重验证、最小化 permissions 授权、以及妥善管理 API 密钥,以防止未授权访问和权限滥用。最后,通过在 issue 中输入 @claude 进行验证即可确认配置是否生效。

IT 累计浏览 70

如何在本地打包 StarRocks 发行版

本文针对 StarRocks 用户在等待官方版本发布周期时,需要快速应用修复 PR(如物化视图重启导致全量刷新、excluded_refresh_tables 参数跨数据库失效等)的场景,介绍了本地打包发行版的完整流程。核心方法是利用社区提供的统一 Docker 镜像(starrocks/dev-env-ubuntu)简化构建环境,避免复杂的本地环境配置。具体步骤包括:拉取对应版本的 Docker 镜像,克隆 StarRocks 仓库并手动合并修复代码到分支,将宿主机源码目录挂载到容器中运行构建脚本(build.sh)生成前端(FE)和后端(BE)的产物。构建完成后,推荐使用更稳妥的方式替换镜像:以官方 FE 镜像为基础,仅替换新生成的 starrocks-fe.jar 文件来构建修复版本的 Docker 镜像,从而确保运行时的兼容性和最小化镜像修改。整个过程依赖官方文档和 GitHub 资源,适用于需要紧急部署定制修复版本的运维和开发场景。

IT 累计浏览 59

我的 CodeReview 实战经验

背景

Code Review 是大家日常开发过程中很常见的流程,当然也不排除一些团队为了快速上线,只要功能测试没问题就直接省去了 Code Review。

我个人觉得再忙的团队 Code Review 还是很有必要的(甚至可以事后再 Review),好处很多:

  • 跳出个人开发的思维误区,更容易发现问题
  • 增进团队交流,提高整体的技术氛围
  • 团队水平检测器,不管是审核者还是被审核的,review 几次后大概就知道是什么水平了

通常 Code Review 有两种场景,一种是公司内部,还有就是开源社区。

开源社区

先说开源社区,最近也在做 cim 项目里做 Review,同时也在 Pulsar、OpenTelemetry、StarRocks 这些项目里做过 Reviewer。

以下是一些我参与 Code Review 的一些经验:

先提 issue

在提交 PR 进行 Code Review 之前最好先提交一个 issue 和社区讨论下,你的这个改动社区是否接受。

我见过一些事前没有提前沟通,然后提交了一个很复杂的 PR,会导致维护者很难 Review,同时也会打击参与者的积极性。

所以强烈建议一些复杂的修改一定先要提前和社区沟通,除非这是一些十拿九稳的问题。

个人 CI

一些大型项目往往都有完善的 CI 流程来保证代码质量,通常都有以下的校验:

  • 各种测试流程(单元测试、集成测试)
  • 代码 Code Style 检测
  • 安全、依赖检测等

如果一个 PR 连 CI 都没跑过,其实也没有提前 Review 的必要了,所以在提 PR 之前都建议先在自己的 repo 里将主要的 CI 都跑过再提交 PR。

这个在 Pulsar 的官方贡献流程里也有单独提到。

同时在 PR 模板里也有提到,建议先在自己的 fork 的 repo 里完成 CI 之后再提交到 upstream

这个其实也很简单,我们只要给自己的 repo 提交一个 PR,然后在 repo 设置中开启 Action,之后就会触发 CI 了。

如果自己的 PR 还需要频繁的提交修改,那建议可以先修改为 draft,这样可以提醒维护者稍后再做 Review。

同时也不建议提交一个过大的 PR,尽量控制在 500 行改动以内,这样才方便 Review。

Review 代码

Github 有提供代码对比页面,但也只是简单的代码高亮,没法像 IDE 这样提供函数跳转等功能。

所以对于 Reviewer 来说,最好是在本地 IDE 中添加 PR 的 repo,这样就可以直接切换到 PR 的分支,然后再本地跟代码,也更好调试。

有相关的修改建议可以直接在 github 页面上进行评论,这样两者结合起来 Review,效率会更高。

Review 代码其实不比写代码轻松,所以对免费帮你做 Review 的要多保持一些瑞思拜。

AI Review

现在 Github 已经支持 copilot 自动 Review 了,它可以帮我们总结变更,同时对一些参加的错误提供修改建议。

使用它还是可以帮我们省不少事情,推荐开启。

企业内部

在企业内部做 Code Review 流程上要简单许多,毕竟沟通成本要低一些,往往都是达成一致之后才会开始开发,所以重点就是 Review 的过程了。

既然是在公司内部,那就要发挥线下沟通的优势了;当然在开始前还是建议在内部的代码工具里比如说 gitlab 中提交一个 MR,先让参会人员都提前看看大概修改了哪些内容,最好是提前在 gitlab 中评论,带着问题开会讨论。

实际 Review 过程应该尽量关注业务逻辑与设计,而不是代码风格、格式等细枝末节的问题。

提出修改意见的时候也要对事不对人,我见过好几次在 Review 现场吵起来的场景,就是代入了一些主观情绪,被 Review 的觉得自己能力被质疑,从而产生了一些冲突。

Code Review 做得好的话整个团队都会一起进步,对个人来说参与一些优质开源项目的 Code Review 也会学到很多东西。

IT 累计浏览 3,213

初学者指南:在 Ubuntu Linux 上安装和使用 Git 和 GitHub

对于刚开始接触 Linux 和版本控制的开发者来说,如何将本地代码可靠地同步到云端协作平台,往往是迈向开源世界的第一道坎。这篇文章就为 Ubuntu 用户提供了一份清晰、可操作的入门路线图。 它没有停留在抽象概念,而是直接从终端命令开始,手把手演示了在 Ubuntu 系统上完成 Git 安装、GitHub 账户配置、创建本地仓库、添加文件、提交更改,直至最终将整个项目推送到 GitHub 远程仓库的全过程。文章特别强调了几个关键步骤的实际操作:例如使用 `sudo apt-get install git` 进行安装,通过 `git config` 命令绑定你的用户名与邮箱,以及用 `git add` 和 `git commit` 来管理文件变更。这些步骤都配有具体的命令示例和效果截图,让读者能逐一对照执行。 整篇指南面向已注册 GitHub 账号、但对 Git 工作流尚不熟悉的 Linux 初学者。它省略了复杂的理论铺陈,聚焦于“如何让它跑起来”,非常适合想要立刻动手实践、将自己的第一个小项目托管到 GitHub 上的新手开发者。

IT 累计浏览 2,566

关于开源,关于 GitHub, 关于 Android

这篇讲的是作者从Android与GitHub的并行增长出发,对开源生态与实践的思考。他通过两组2007-2013年的增长曲线,直观展示了移动设备爆发与GitHub繁荣的潜在联系,并调侃Android开发者因开源而更“幸福”。 基于此,作者重点分享了如何“用好”开源项目。他提出了一个针对Android库的协作分析项目,并给出了具体的选型标准:必须谨慎对待GPL协议,理解库的实现原理是使用前提,同时需考察功能、文档、稳定性与扩展性。对于源码修改,他强调应尽量采用包装方式,若必须修改则务必回馈社区,让代码保持在开源的“大陆”上,而非变成“孤岛”。 文章最后还总结了一个优质开源项目应具备的要素,如规范的README、清晰的协议声明和便捷的联系方式等。整体上,这不是一篇空谈理论的文章,而是一位实战派开发者关于如何选择、使用乃至回馈开源项目的经验谈。

IT 累计浏览 1,373

开源项目的那点事

作者从近期重构CppJieba、发布NodeJieba的实践出发,分享了自己在开源社区中的几点切身感受与学习开源项目的方法。 他强调,一个重视用户体验的开源项目,往往从“简陋”但无依赖的轻量版本开始,例如他早期的CppJieba和ideawu的SSDB,都坚持不依赖第三方库以实现即装即用。在学习上,他建议开发者善于积累自己的代码片段,将小实验逐步组合成项目;同时也要“站在前人的肩膀上”,优先参考现有分析文档再阅读源码,避免低效硬啃。 作者提出了一个颇具启发性的观点:开源项目的学习价值并非由star数决定,而在于其与学习者当前工作的相关性及代码的可读性。他认为,阅读与自己领域相近、核心逻辑清晰的源码,更能带来实际灵感;而一味追求明星项目或高性能代码,有时反而因牺牲可读性而难以深入。 最后,他呼吁回归开源初衷——即知识的分享与传播,而非过分功利化。整篇文章将个人开发经历与开源学习心得紧密结合,对初入社区或希望提升源码阅读能力的开发者都有切实的参考意义。

IT 累计浏览 5,589

GitHub中的README.MD文件编写语法

这篇讲的是如何用Markdown语法快速上手编写GitHub项目的README文件。文章开篇点明了README采用Markdown格式的最大优势:语法简洁,学习成本低,因此被WordPress、Joomla等众多内容管理平台和博客系统广泛支持。 文章主体并非泛泛而谈,而是聚焦于编写README时最常用、最实用的语法。它详细演示了如何设置大、中、小各级标题,使用星号或下划线实现斜体与加粗。对于展示代码片段,介绍了通过制表符缩进形成单行或多行文本框的方法。此外,还讲解了用大于号实现层级引用,以及灵活创建无序和有序列表的方式。文末也触及了行内式和参考式超链接的基本写法。 对于想快速为项目添加一份清晰、美观说明文档的开发者而言,这篇文章提供了直接可用的语法速查和入门指引,能帮助新手在短时间内掌握README的核心编写技巧。

IT 累计浏览 20,261

我的git笔记

这篇讲的是作者从 SVN 转向 Git 并深度使用后,沉淀下来的一份实用命令手册。作者从两年前通过《GotGitHub》入门 GitHub 讲起,分享了自己从最初使用 GitHub for Windows 图形客户端被自动换行符问题困扰,到后来通过学习《Git详解》系列文章转入命令行的进阶过程。 如今作者已在 GitHub 上开源了 60 多个项目,为了在这些项目间高效穿梭,也为了自己“用时能快速查阅”,他系统地梳理了 Git 的常用命令。文章按使用场景分类,涵盖了安装配置、新建与克隆仓库、本地文件增删改查、分支的创建合并与变基、远端操作、多源管理以及标签管理等方方面面。 特别值得一提的是,作者不仅列出了核心命令,还补充了像 `git revert` 和 `git stash` 这样实用但容易记混的操作细节,并在最后附上了包括《Pro Git》、《图解Git》在内的八份经典参考资料。整篇文章就像一个经验丰富的开发者在跟你分享他的“私人笔记”,对于需要快速回顾或查询 Git 命令的读者来说,是一份非常顺手的速查指南。

IT 累计浏览 4,782

github 上 Fork 别人的项目后的常用的操作指南

作者从自己Fork Mojo项目的亲身经历说起,分享了在GitHub上协作开发时几个非常实用的操作。如果你Fork项目后直接push代码遇到403权限错误,文章指出了关键症结:需要在本地的.git/config文件中,将远程URL格式修改为包含你GitHub用户名的形式(如`https://用户名@github.com/用户/项目`),通过HTTP认证解决权限问题,无需折腾SSH密钥。 针对如何将修改贡献给原作者,文章详细演示了在GitHub界面发起Pull Request的流程。重点在于清晰地描述你的修改意图和内容,方便原作者理解和评估合并。 最后,文章解答了如何与上游原项目保持同步的问题。通过在本地添加原作者的远程仓库地址(git remote add),然后执行fetch和merge操作,即可将原项目的最新代码合并到自己的本地分支,之后再推送到自己的GitHub仓库。整篇文章聚焦于解决实际协作中的具体痛点,步骤清晰,对想参与开源项目的开发者来说是一份不错的入门指引。

IT 累计浏览 2,662

GitHub 是怎么火起来的

这篇讲的是GitHub的早期发展史与技术传播逻辑。作者从2009年Ruby大会的亲身经历切入,指出GitHub在获得巨额融资引发大众关注前,早已在Ruby社区奠定了坚实基础。 文章的核心观点在于,Git和GitHub的爆发是技术需求驱动社区自然演进的结果。Ruby/Rails框架虽开发高效,但多人协作时面临传统版本控制系统(如CVN/SVN)的冲突痛点。Git的分布式与分支管理特性完美契合了这一场景,使得Ruby社区几乎全员迁移至Git生态。而GitHub正是诞生于这一浪潮,由湾区Ruby开发者为解决Git托管需求而创造。 更深层的传播链条清晰可见:Rails项目率先迁移到GitHub形成示范,社区内包管理工具Gem的全面接入形成网络效应,最终带动了关系紧密的JavaScript与iOS开发社区跟进。作者强调,这种由核心开发者社区向外扩散的“涟漪效应”,是GitHub增长的关键动力,而其高估值则更多源于云计算SaaS平台的商业模式。文章为我们提供了一个观察技术如何通过解决具体痛点、依托社区凝聚力实现指数级增长的经典案例。

IT 累计浏览 4,536

代码审查:ThoughtBot官方给出的代码审查指导原则

这篇讲的是如何让代码审查变得更高效、更友好。作者从 ThoughtBot 的官方指南出发,总结了在 GitHub 上进行代码审查时,审查者和被审查者双方都应遵循的一系列核心原则。 文章为审查者提供了具体的沟通心法:要记住编程主张常是个人观点,因此应多提问少命令、请求说明而非指责、避免代码归属之争,并且绝不能人身攻击。审查评论应清晰谦逊,避免使用“总是”“从不”等夸张修辞。如果讨论过于深入,可以转到线下进行。 而对于被审查的代码作者,文章建议要主动感谢建议、理解对事不对人、解释代码背后的思考,并在一个独立的 push 提交中集中处理反馈。关键流程包括:基于反馈更新代码、注明审查链接、等待所有审查者退出后再合并,并确保持续集成测试通过。 此外,文章还提倡建立统一的代码风格指南。当出现分歧时,应在指南仓库中发起讨论,而非在审查评论中争论。这些具体而微的实践,旨在将代码审查从一场潜在的技术辩论,转变为一次促进团队学习和代码质量提升的协作。

IT 累计浏览 3,607

Travis CI:专为开源项目打造的持续集成环境

这篇讲的是如何为GitHub上的开源项目接入Travis CI持续集成环境。作者以Java项目Moco为例,详细演示了从创建配置文件到最终在README中添加状态标识的全流程。 核心步骤非常清晰:首先在项目根目录添加`.travis.yml`文件,指定语言(如java)和需要测试的JDK版本(如Oracle JDK 7和OpenJDK 6/7)。Travis CI会自动识别如Gradle这样的构建工具,并执行标准的检查任务。接着,用GitHub账号登录Travis CI并同步项目,开启对应项目的构建钩子。这样,每次提交代码到GitHub,Travis CI就会自动在多个JDK环境下运行测试,确保兼容性。 文章还指出了一个实用技巧:可以在项目的README文件中嵌入Travis CI的构建状态徽章,让其他开发者一目了然地看到项目的构建状态。对于使用标准工具链的项目来说,整个配置过程确实“简单得一塌糊涂”,是开源项目实现自动化测试与集成的一个高效选择。

IT 累计浏览 3,478

脚本语言ymd:介绍

这篇文章介绍了一个叫ymd的新脚本语言,其名字来源于“Year-Month-Day”的缩写,暗示了它与结构化数据处理的紧密关联。 与追求通用性或高性能的传统脚本语言不同,ymd的设计哲学非常明确:它专为“数据处理”这一特定任务而生。作者从现实开发中大量重复的数据清洗、转换和聚合任务出发,剖析了通用语言(如Python、JavaScript)在处理表格或JSON等结构化数据时,虽然功能强大,但语法和库函数往往显得笨重和冗余。ymd的目标就是提供一个更简洁、更贴合数据处理心智模型的环境。 文章详细展示了ymd的核心特点:它拥有一个极简的语法核心,提供了大量针对数据列操作的内置谓词和管道式语法。这意味着你可以像用SQL一样,通过一连串清晰的步骤来描述数据变换流程,例如“筛选-分组-聚合”,而无需编写繁琐的循环和临时变量。此外,ymd对大数据集的惰性求值和内存优化也有特别考量。对于需要快速处理日志、CSV或API返回的JSON数据,又不想引入重型框架的开发者而言,ymd提供了一种更轻量、更专注的选择。

IT 累计浏览 4,282

如何为PHP贡献代码

想给PHP官方提交代码?现在有个更直接的路径了。这篇文章介绍了PHP源代码管理的一个重要变化:项目已将主仓库迁移至Git,并在GitHub上建立了官方镜像。 过去,为PHP贡献代码可能存在一定门槛。而如今,代码仓库正式托管在GitHub后,整个流程变得更加直观和开放。文章指出,开发者可以像参与众多开源项目一样,直接在GitHub上Fork代码,通过PR(Pull Request)机制来提交、评审代码,这极大降低了参与核心开发的协作成本。 对于广大PHP开发者而言,这意味着一个更便捷、更透明的协作大门已经敞开。无论你是想修复一个棘手的Bug,还是提交一项新特性,现在的流程都与你在GitHub上熟悉的协作方式无缝衔接。

IT 累计浏览 4,670

nodejs教程:配置nodejs.exe的windows目录结构

这篇讲的是如何在Windows环境下直接配置nodejs.exe来搭建开发环境。作者从很多开发者觉得Cygwin配置不爽的实际痛点出发,提出了一种更简单的替代方案:直接使用官方nodejs.exe配合GitHub管理插件。 文章具体介绍了两个关键步骤。首先是PATH配置,作者提供了两种方法:把exe复制到Windows系统文件夹,或者在环境变量中手动添加路径。其次是插件管理,由于当时npm在Windows下不支持,作者推荐通过GitHub客户端下载插件,统一存放在node_modules文件夹中,并在代码中通过require直接引用。 整个方案思路清晰,操作步骤具体。作者还附上了自己的目录结构截图作为参考。对于早期在Windows上折腾Node.js的开发者来说,这种避开复杂环境依赖的“土办法”反而显得直接有效,尤其适合想快速跑起服务但不想被环境问题困扰的场景。

IT 累计浏览 6,092

给年轻程序员的几句话

这篇文章是从一篇经典的英文博客《Letter to a Young Developer》翻译而来,属于一位资深开发者写给新人的职业观点与感悟。作者并没有罗列具体的技术框架或速成技巧,而是从更本质的层面,探讨了“程序员”这份工作的核心。 这篇讲的是,编程的本质不在于你掌握了多少语法或工具,而在于清晰地理解问题、并找到解决方案的能力。作者从自己的经验出发,建议年轻程序员不要过度沉迷于技术栈的“新旧之争”,而应该把精力花在理解问题域本身——你到底在为谁、解决什么问题。此外,文章还触及了行业文化,比如开源社区中有时存在的“精英主义”现象,提醒新人保持开放和谦逊。 它像一次炉边谈话,没有高深的理论,却点出了成长路上容易忽略的盲区:技术能力很重要,但沟通、同理心以及对软件服务对象的理解,同样决定着你能走多远。这篇文章的价值,在于它不提供速成的“法则”,而是分享了关于技术、关于人、关于社区的深层思考。

IT 累计浏览 5,642

注释里的诅咒:哪种语言遭受最多的咒骂?

作者从代码仓库的提交记录和代码注释入手,做了一项有趣的研究:对比不同编程语言的开发者在协作时,究竟谁在代码里“骂得最凶”。研究发现,Ruby开发者堪称“口吐芬芳”的冠军,其代码库中的咒骂用语密度远超其他语言。PHP、Python、Java和C++紧随其后,各有独特的“脏话风格”。 这项对比不仅揭示了不同语言社区的亚文化差异,更巧妙地指向了编程体验与情绪关联的深层问题。比如,Ruby的高表达性可能放大了开发中的挫折感,而PHP的争议性则可能直接反映在开发者的吐槽里。C++因其复杂性,其注释中的“诅咒”往往更具体、更具技术针对性。 因此,这篇文章并非只是猎奇。它从一个意想不到的侧面,为我们理解开发者生态、语言设计哲学及其带来的实际编码感受,提供了一份带着“人味”的数据报告。下次当你在代码中写下一句抱怨时,你可能正在参与一项有趣的全球文化统计。

IT 累计浏览 2,392

对TokyoTyrant的一个简单的patch,以支持列出所有的Key

这篇文章讲的是,作者发现TokyoTyrant(一个基于Tokyo Cabinet的K-V数据库)默认不支持像Redis那样列出所有的Key,这在某些运维或调试场景下不太方便。于是,作者直接从源码入手,动手写了一个简单的补丁来解决这个问题。 核心思路是利用TokyoCabinet已有的遍历游标功能。作者在TokyoTyrant的服务端,新增了一个特定的命令来触发这个操作:当收到该命令时,服务端会创建一个数据库游标,从头到尾遍历所有记录,并将遍历到的Key逐一返回给客户端。实现上虽然直接,但作者也指出了关键点:对于数据量巨大的数据库,这种全量遍历会带来显著的性能开销,因此更适合作为管理工具在非高峰时段使用。 这个案例很实际,它展示了如何通过对开源工具的轻量级定制来弥补功能短板,满足特定需求。虽然补丁简单,但思路清晰,对于想自己动手修改数据库源码的开发者来说,是个不错的入门参考。