首页 > 后端开发 > Golang > 开源开发太棒了!

开源开发太棒了!

Barbara Streisand
发布: 2024-11-28 11:01:12
原创
823 人浏览过

目录

  • 简介
  • 第一个坏问题
    • 我如何尝试修复它?
  • 互相帮助!
  • 最重要
    • 问题
    • 问题的目的
  • 返回 CLI
    • 问题描述
    • 这是什么意思?
    • 实施
    • 结果
  • 结论

介绍

这篇博文是关于版本 0.3 的。我想首先做一些介绍,解释找到一个好问题是多么困难。对于上一个版本 0.2,我把所有的时间都花在了巨大的 JavaFX 项目上,我一点也不满意,因为我必须在几天内找到并解决两个问题。这次我几乎也遇到了同样的问题,但最终我尽力了。让我带您回顾一下时间线。

第一个坏问题

一开始,我发现了一个问题,我应该将 macOS 用户的应用程序图标从 Dock 移动到托盘。听起来很简单。然而,项目是用 Go 编写的,我以前从未使用过。如果您是熟悉我博客的读者,您肯定知道我学习新编程语言的频率。展望未来,我决定从头开始学习 Go lang。

让我快速解释一下这个项目的内容。这是适用于 Windows、macOS 和 Linux 的简单、免费且高效的广告拦截器和隐私卫士。

系统托盘 - 第一次尝试

幸运的是,Go 非常容易学习,所以让我们继续尝试将图标从 Dock 移动到 Tray。

第一次尝试时,我尝试使用用 Objective-C 编写的 systray 库来实现。它有助于操作 macOS 系统 UI 并将应用程序从 Dock 移动到托盘。我在 2 小时内就使用文档编写了代码,非常高兴。然而,我遇到了一个与另一个名为 wails 的库相关的问题,该库有助于实现同样用 Objective-C 编写的 UI。最终,构建项目失败了,因为这两个库使用相同的命名而发生冲突。我必须继续前进并尝试不同的库/方法。

trayhost - 第二次尝试

基本上,这个库的工作方式与系统托盘相同,我也遇到了同样的问题。

任何其他库都可以以同样的方式执行此操作,所以我很困惑。

我如何尝试修复它?

我分叉了 systray 项目并更改了导致冲突的命名。导入了我的 fork,因为 Go 允许使用 git-url 直接导入。
不幸的是,它根本不起作用...

您可以检查我的分叉并查看更改:点击我:D

Objective-C - 第三次尝试

这次我尝试使用 Objective-C 和 Go 语言编写代码。一段时间后,我想出了解决方案,但我得到了这个错误:

r0      0x0
r1      0x0
r2      0x0
r3      0x0
r4      0x18fef62cb
r5      0x16d28db00
r6      0x6e
r7      0x0
r8      0x1e844b5b5be91e5a
r9      0x1e844b5a36c1ee5a
r10     0x200
r11     0xb
r12     0x0
r13     0x1ff800
r14     0x7fb
r15     0xd3c1205a
r16     0x148
r17     0x202129928
r18     0x0
r19     0x6
r20     0x16d28f000
r21     0x1003
r22     0x16d28f0e0
r23     0x2
r24     0x0
r25     0x16d28ecc0
r26     0x1f9a37000
r27     0x828
r28     0x140001021c0
r29     0x16d28da70
lr      0x18ff3ac20
sp      0x16d28da50
pc      0x18ff02a60
fault   0x18ff02a60
登录后复制
登录后复制

错误消息表明您正在尝试在主线程之外初始化 NSWindow 实例,这在 macOS 应用程序中是不允许的。这是一个很大的问题,因为我无法在主线程中执行此操作,因为其余功能无法工作。

第一个坏问题的结论

维护者和我进行了一次闲聊,我解释了一切。最终,他同意以当前的项目结构不可能实现...我没有完成它,并且没有 PR :c

互相帮助!

开源社区非常出色,因为人们倾向于互相帮助。我只有一周的时间来完成,所以我向我的朋友西奥寻求帮助。他给我发了几个他开发的代码库,我决定对它们进行研究。

最重要

MatterMost 是一个开源平台,用于在整个软件开发生命周期中进行安全协作。它是一个非常受欢迎的平台,并且有大量的问题,对于用户和开发人员来说都有大量的文档。为这个项目做出贡献并不难。

问题

这次我拍的是符合我现在技术水平的东西,我不拍脚。这是前面提到的最简单的问题。

发行目的

该问题的目的是修复其中一个文件的 linter 错误。我建立了这个项目,并开始研究它。

首先,我必须运行 linter 并查看所有错误。我检查了发生问题的线路,并很快修复了它们。最终,开了一个PR。

返回 CLI

我真的很喜欢使用 CLI 工具,因为这对我来说很有趣。对于第二个 PR,我找到了一个名为 lumen 的项目。 Lumen 是即时 AI Git 提交消息,来自 CLI 的 Git 更改摘要。我真的很喜欢参与这个项目!不幸的是,他们没有那么多问题,但我很幸运能够被分配。另外,这个工具是用 Rust 编写的,所以我必须刷新一下我的知识。

问题描述

我发现了一个问题:为解释命令添加 STDIN 支持。

这是什么意思?

该工具有一个选项解释,可以通过以下方式调用:

lumen explain <sha>
登录后复制
登录后复制

此命令解释了有关某些提交的所有内容、更改的内容以及原因。示例:

Open-Source Development is Amazing!

非常有用的工具,不是吗?

我的实现应该允许向此命令添加功能:

echo "HEAD" | lumen explain -
登录后复制
登录后复制

因此,在我的示例 HEAD 中,它从 echo 获取 STDIN 值,并将 - 替换为该 HEAD 值。

执行

我知道了如何实现它。创建条件来检查 if - 而不是 sha。

r0      0x0
r1      0x0
r2      0x0
r3      0x0
r4      0x18fef62cb
r5      0x16d28db00
r6      0x6e
r7      0x0
r8      0x1e844b5b5be91e5a
r9      0x1e844b5a36c1ee5a
r10     0x200
r11     0xb
r12     0x0
r13     0x1ff800
r14     0x7fb
r15     0xd3c1205a
r16     0x148
r17     0x202129928
r18     0x0
r19     0x6
r20     0x16d28f000
r21     0x1003
r22     0x16d28f0e0
r23     0x2
r24     0x0
r25     0x16d28ecc0
r26     0x1f9a37000
r27     0x828
r28     0x140001021c0
r29     0x16d28da70
lr      0x18ff3ac20
sp      0x16d28da50
pc      0x18ff02a60
fault   0x18ff02a60
登录后复制
登录后复制

结果

更改了5个文件后,我得到了结果:

Open-Source Development is Amazing!

现在有两个选项:

lumen explain <sha>
登录后复制
登录后复制


echo "HEAD" | lumen explain -
登录后复制
登录后复制

这两个选项都有效,我的实现添加了新功能,并保存了之前实现的功能!这是我的公关。

结论

过去几周并不简单,但很有趣。我学习了新语言 Go。与开源社区联系,这帮助我找到了我贡献的存储库之一!

以上是开源开发太棒了!的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板