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

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

Nov 28, 2024 am 11:01 AM

目次

  • はじめに
  • 最初の悪い問題
    • どのように修正しようとしましたか?
  • お互いに助け合おう!
  • マターモスト
    • 問題
    • 問題の目的
  • 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Debian OpenSSLの脆弱性は何ですか Debian OpenSSLの脆弱性は何ですか Apr 02, 2025 am 07:30 AM

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

Beego ormのモデルに関連付けられているデータベースを指定する方法は? Beego ormのモデルに関連付けられているデータベースを指定する方法は? Apr 02, 2025 pm 03:54 PM

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

フロントエンドからバックエンドの開発に変身すると、JavaやGolangを学ぶことはより有望ですか? フロントエンドからバックエンドの開発に変身すると、JavaやGolangを学ぶことはより有望ですか? Apr 02, 2025 am 09:12 AM

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

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか? Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか? Apr 02, 2025 pm 05:09 PM

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

Redisストリームを使用してGO言語でメッセージキューを実装する場合、user_idタイプの変換の問題を解決する方法は? Redisストリームを使用してGO言語でメッセージキューを実装する場合、user_idタイプの変換の問題を解決する方法は? Apr 02, 2025 pm 04:54 PM

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

GOの浮動小数点番号操作に使用されるライブラリは何ですか? GOの浮動小数点番号操作に使用されるライブラリは何ですか? Apr 02, 2025 pm 02:06 PM

GO言語の浮動小数点数操作に使用されるライブラリは、精度を確保する方法を紹介します...

Go's Crawler Collyのキュースレッドの問題は何ですか? Go's Crawler Collyのキュースレッドの問題は何ですか? Apr 02, 2025 pm 02:09 PM

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

DebianでMongoDB自動拡張を構成する方法 DebianでMongoDB自動拡張を構成する方法 Apr 02, 2025 am 07:36 AM

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

See all articles