目次
- はじめに
-
最初の悪い問題
- どのように修正しようとしましたか?
- お互いに助け合おう!
-
マターモスト
- 問題
- 問題の目的
-
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> </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> </sha>
と
echo "HEAD" | lumen explain -
これらのオプションはどちらも機能しており、私の実装では新しい機能が追加されており、以前に実装されたものは保存されています。これが私の自己PRです。
結論
ここ数週間は簡単ではありませんでしたが、楽しかったです。新しい言語 Go を学びました。オープンソース コミュニティとつながり、私が貢献したリポジトリの 1 つを見つけるのに役立ちました!
以上がオープンソース開発ってすごいですね!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

GOのコア機能には、ガベージコレクション、静的リンク、並行性サポートが含まれます。 1. GO言語の並行性モデルは、GoroutineとChannelを通じて効率的な同時プログラミングを実現します。 2.インターフェイスと多型は、インターフェイスメソッドを介して実装されているため、異なるタイプを統一された方法で処理できます。 3.基本的な使用法は、関数定義と呼び出しの効率を示しています。 4。高度な使用法では、スライスは動的なサイズ変更の強力な機能を提供します。 5.人種条件などの一般的なエラーは、Getest Raceを通じて検出および解決できます。 6.パフォーマンス最適化Sync.Poolを通じてオブジェクトを再利用して、ゴミ収集圧力を軽減します。

GO言語は、効率的でスケーラブルなシステムの構築においてうまく機能します。その利点には次のものがあります。1。高性能:マシンコードにコンパイルされ、速度速度が速い。 2。同時プログラミング:ゴルチンとチャネルを介してマルチタスクを簡素化します。 3。シンプルさ:簡潔な構文、学習コストとメンテナンスコストの削減。 4。クロスプラットフォーム:クロスプラットフォームのコンパイル、簡単な展開をサポートします。

SQLクエリの結果の並べ替えについて混乱しています。 SQLを学習する過程で、しばしば混乱する問題に遭遇します。最近、著者は「Mick-SQL Basics」を読んでいます...

テクノロジースタックの収束とテクノロジーの選択の関係ソフトウェア開発におけるテクノロジーの選択、テクノロジースタックの選択と管理は非常に重要な問題です。最近、一部の読者が提案しています...

ゴーラン...

GO言語で3つの構造を比較および処理する方法。 GOプログラミングでは、2つの構造の違いを比較し、これらの違いを...

Goでグローバルにインストールされたパッケージを表示する方法は? GO言語で開発する過程で、GOはしばしば使用します...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1
使いやすく無料のコードエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ホットトピック



