このブログ投稿はリリース 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 ツールでの作業は楽しいので、とても好きでした。 2つ目のPRでは、lumenというプロジェクトを見つけました。 Lumen は インスタント AI Git コミット メッセージであり、CLI からの Git 変更概要。このプロジェクトに取り組むのは本当に楽しかったです!残念ながら、それほど多くの問題はありませんでしたが、幸運にも割り当てを受けることができました。さらに、このツールは Rust で書かれているため、知識を新たにする必要がありました。
Explain コマンドの STDIN サポートを追加するという問題が見つかりました。
このツールには次の方法で呼び出されるオプションの Explain があります:
lumen explain <sha>
このコマンドは、特定のコミットに関するすべて、変更内容とその理由を説明します。例:
かなり便利なツールですね?
私の実装では、このコマンドに機能を追加できるはずです:
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 つのファイルを変更した結果、次の結果が得られました。
現在、2 つのオプションがあります:
lumen explain <sha>
と
echo "HEAD" | lumen explain -
これらのオプションはどちらも機能しており、私の実装では新しい機能が追加されており、以前に実装されたものは保存されています。これが私の自己PRです。
ここ数週間は簡単ではありませんでしたが、楽しかったです。新しい言語 Go を学びました。オープンソース コミュニティとつながり、私が貢献したリポジトリの 1 つを見つけるのに役立ちました!
以上がオープンソース開発ってすごいですね!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。