ホームページ > バックエンド開発 > Golang > オープンソース開発ってすごいですね!

オープンソース開発ってすごいですね!

Barbara Streisand
リリース: 2024-11-28 11:01:12
オリジナル
822 人が閲覧しました

目次

  • はじめに
  • 最初の悪い問題
    • どのように修正しようとしましたか?
  • お互いに助け合おう!
  • マターモスト
    • 問題
    • 問題の目的
  • CLI に戻る
    • 問題の説明
    • それはどういう意味ですか?
    • 実装
    • 結果
  • 結論

導入

このブログ投稿はリリース 0.3 に関するものです。まずは簡単な紹介から始めて、良い問題を見つけるのがいかに難しかったかを説明したいと思います。前回のリリース 0.2 では、大規模な JavaFX プロジェクトにすべての時間を費やしましたが、数日以内に 2 つの問題を見つけてクローズする必要があったため、まったく満足できませんでした。今回も同じ問題に陥りそうになりましたが、最後にはできる限りの対応をすることができました。タイムラインを追って説明しましょう。

最初の悪い問題

最初に、macOS ユーザーのためにアプリのアイコンをドックからトレイに移動する必要があるという問題を発見しました。とてもシンプルに聞こえます。ただし、プロジェクトは Go で書かれており、これまで使用したことはありませんでした。私のブログをよく読んでいる読者なら、私がどのくらいの頻度で新しいプログラミング言語を学習しているかをご存知でしょう。今後はGo langを一から勉強することにしました。

このプロジェクトが何であるかを簡単に説明しましょう。これは、Windows、macOS、Linux 向けのシンプルで無料、効率的な広告ブロッカーおよびプライバシー ガードです。

systray - 最初の試行

幸いなことに、Go は学ぶのがとても簡単なので、アイコンをドックからトレイに移動する試みに進んでみましょう。

最初の試みとして、Objective-C で書かれた systray ライブラリを使用して実装してみました。 macOS システム UI を操作し、アプリケーションをドックからトレイに移動するのに役立ちます。ドキュメントを使用して 2 時間以内にコードを書きましたが、とても満足でした。ただし、同じく Objective-C で書かれた UI の実装に役立つ wails と呼ばれる他のライブラリに関連する問題があります。最終的に、これら 2 つのライブラリが同じ名前を使用しているために競合するという理由で、プロジェクトのビルドは失敗しました。先に進んで、別のライブラリ/メソッドを試す必要がありました。

トレイホスト - 2 回目の試行

基本的に、このライブラリは systray と同じように動作しますが、私も同じ問題を抱えていました。

これを行う他のライブラリも同じように動作するため、私はスタックしてしまいました。

どのように修正しようとしたのでしょうか?

systray プロジェクトをフォークし、競合の原因となった名前を変更しました。 Go では git-url を使用して直接インポートできるため、フォークをインポートしました。
残念ながら、まったく効果がありませんでした...

私のフォークをチェックして変更を確認してください:クリックしてください:D

Objective-C - 3 回目の試行

今回は、Objective-C と Go lang を使用してコードを書いてみました。しばらくして解決策を思いつきましたが、次のエラーが発生しました:

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

お互いに助け合おう!

オープンソース コミュニティは、人々が互いに助け合う傾向があるため、素晴らしいものです。仕上げるまでに 1 週​​間しかなかったので、友人の Theo に助けを求めました。彼は自分が取り組んだリポジトリをいくつか私に送ってくれたので、私はそれらに取り組むことにしました。

マターモスト

MatterMost は、ソフトウェア開発ライフサイクル全体にわたる安全なコラボレーションのためのオープンソース プラットフォームです。これは非常に人気のあるプラットフォームであり、問​​題が山ほどあり、ユーザーにとっても開発者にとっても膨大なドキュメントがあります。このプロジェクトに貢献するのは難しいことではありませんでした。

問題

今回は私の現在のスキルレベルに合わせたものを撮りました、そして私は足を撃ちません。それは、最初に述べた事柄の中で見つかった単純な問題でした。

発行の目的

この問題の目的は、ファイルの 1 つのリンター エラーを修正することです。私はプロジェクトを立ち上げ、それに取り組み始めました。

まず最初に、リンターを実行してすべてのエラーを確認する必要がありました。問題が発生した行を確認し、すべてすぐに修正しました。結局、PRを開設しました。

CLI に戻る

CLI ツールでの作業は楽しいので、とても好きでした。 2つ目のPRでは、lumenというプロジェクトを見つけました。 Lumen は インスタント AI Git コミット メッセージであり、CLI からの Git 変更概要。このプロジェクトに取り組むのは本当に楽しかったです!残念ながら、それほど多くの問題はありませんでしたが、幸運にも割り当てを受けることができました。さらに、このツールは Rust で書かれているため、知識を新たにする必要がありました。

問題の説明

Explain コマンドの STDIN サポートを追加するという問題が見つかりました。

それはどういう意味ですか?

このツールには次の方法で呼び出されるオプションの Explain があります:

lumen explain <sha>
ログイン後にコピー
ログイン後にコピー

このコマンドは、特定のコミットに関するすべて、変更内容とその理由を説明します。例:

Open-Source Development is Amazing!

かなり便利なツールですね?

私の実装では、このコマンドに機能を追加できるはずです:

echo "HEAD" | lumen explain -
ログイン後にコピー
ログイン後にコピー

つまり、エコーから STDIN 値を取得し、この例では HEAD を取得し、 - をその HEAD 値に置き換えます。

実装

実装方法が分かりました。 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!

現在、2 つのオプションがあります:

lumen explain <sha>
ログイン後にコピー
ログイン後にコピー


echo "HEAD" | lumen explain -
ログイン後にコピー
ログイン後にコピー

これらのオプションはどちらも機能しており、私の実装では新しい機能が追加されており、以前に実装されたものは保存されています。これが私の自己PRです。

結論

ここ数週間は簡単ではありませんでしたが、楽しかったです。新しい言語 Go を学びました。オープンソース コミュニティとつながり、私が貢献したリポジトリの 1 つを見つけるのに役立ちました!

以上がオープンソース開発ってすごいですね!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート