目录
- 简介
-
第一个坏问题
- 我如何尝试修复它?
- 互相帮助!
-
最重要
- 问题
- 问题的目的
-
返回 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> </sha>
此命令解释了有关某些提交的所有内容、更改的内容以及原因。示例:
非常有用的工具,不是吗?
我的实现应该允许向此命令添加功能:
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个文件后,我得到了结果:
现在有两个选项:
lumen explain <sha> </sha>
和
echo "HEAD" | lumen explain -
这两个选项都有效,我的实现添加了新功能,并保存了之前实现的功能!这是我的公关。
结论
过去几周并不简单,但很有趣。我学习了新语言 Go。与开源社区联系,这帮助我找到了我贡献的存储库之一!
以上是开源开发太棒了!的详细内容。更多信息请关注PHP中文网其他相关文章!

在Go编程中,有效管理错误的方法包括:1)使用错误值而非异常,2)采用错误包装技术,3)定义自定义错误类型,4)复用错误值以提高性能,5)谨慎使用panic和recover,6)确保错误消息清晰且一致,7)记录错误处理策略,8)将错误视为一等公民,9)使用错误通道处理异步错误。这些做法和模式有助于编写更健壮、可维护和高效的代码。

在Go中实现并发可以通过使用goroutines和channels来实现。1)使用goroutines来并行执行任务,如示例中同时享受音乐和观察朋友。2)通过channels在goroutines之间安全传递数据,如生产者和消费者模式。3)避免过度使用goroutines和死锁,合理设计系统以优化并发程序。

Gooffersmultipleapproachesforbuildingconcurrentdatastructures,includingmutexes,channels,andatomicoperations.1)Mutexesprovidesimplethreadsafetybutcancauseperformancebottlenecks.2)Channelsofferscalabilitybutmayblockiffullorempty.3)Atomicoperationsareef

go'serrorhandlingisexplicit,治疗eRROSASRETRATERTHANEXCEPTIONS,与pythonandjava.1)go'sapphifeensuresererrawaresserrorawarenessbutcanleadtoverbosecode.2)pythonandjavauseexeexceptionseforforforforforcleanerCodebutmaymobisserrors.3)

whentestinggocodewithinitfunctions,useexplicitseTupfunctionsorseParateTestFileSteSteTepteTementDippedDependendendencyOnInItfunctionsIdeFunctionSideFunctionsEffect.1)useexplicitsetupfunctionStocontrolglobalvaribalization.2)createSepEpontrolglobalvarialization

go'serrorhandlingurturnserrorsasvalues,与Javaandpythonwhichuseexceptions.1)go'smethodensursexplitirorhanderling,propertingrobustcodebutincreasingverbosity.2)

AnefactiveInterfaceoisminimal,clear and promotesloosecoupling.1)minimizeTheInterfaceForflexibility andeaseofimplementation.2)useInterInterfaceForeabStractionTosWapImplementations withCallingCallingCode.3)

集中式错误处理在Go语言中可以提升代码的可读性和可维护性。其实现方式和优势包括:1.将错误处理逻辑从业务逻辑中分离,简化代码。2.通过集中处理错误,确保错误处理的一致性。3.使用defer和recover来捕获和处理panic,增强程序健壮性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

记事本++7.3.1
好用且免费的代码编辑器