オープンソース開発ってすごいですね!
目次
- はじめに
-
最初の悪い問題
- どのように修正しようとしましたか?
- お互いに助け合おう!
-
マターモスト
- 問題
- 問題の目的
-
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>
このコマンドは、特定のコミットに関するすべて、変更内容とその理由を説明します。例:
かなり便利なツールですね?
私の実装では、このコマンドに機能を追加できるはずです:
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

Beegoormフレームワークでは、モデルに関連付けられているデータベースを指定する方法は?多くのBEEGOプロジェクトでは、複数のデータベースを同時に操作する必要があります。 Beegoを使用する場合...

バックエンド学習パス:フロントエンドからバックエンドへの探査の旅は、フロントエンド開発から変わるバックエンド初心者として、すでにNodeJSの基盤を持っています...

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

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

この記事では、自動拡張を実現するためにDebianシステムでMongodbを構成する方法を紹介します。主な手順には、Mongodbレプリカセットとディスクスペース監視のセットアップが含まれます。 1。MongoDBのインストール最初に、MongoDBがDebianシステムにインストールされていることを確認してください。次のコマンドを使用してインストールします。sudoaptupdatesudoaptinstinstall-yymongodb-org2。mongodbレプリカセットMongodbレプリカセットの構成により、自動容量拡張を達成するための基礎となる高可用性とデータ冗長性が保証されます。 Mongodbサービスを開始:Sudosystemctlstartmongodsudosys
