DevOps の旅を始めるための Go-lang プロジェクトの引用
? 導入
DevOps の世界へようこそ! ?今日は、DevOps タスクの実践的なプログラミングをさらに深く掘り下げるのに役立つ、別の刺激的なブログに戻ってきました。前回のブログでは、DevOps 自動化の基礎を築く 3 つの Python プロジェクトについて説明しました。
さあ、ギアを変えて、Go-lang のパワーを探ってみましょう!このブログでは、実用的で初心者にも優しい 3 つの Go-lang プロジェクトの構築について説明します。
- ストレージ統計を追跡するための ディスク使用量の監視 ツール。
- HTTP サーバー を使用して履歴書 Web サイトをホストしています。
- DevOps ツールを管理するための RESTful API プログラム。
それでは、お気に入りのコード エディターを入手して、始めましょう! ?
?前提条件
これらのプロジェクトの構築に入る前に、環境がセットアップされ、準備ができていることを確認してください。必要なものは次のとおりです:
1. Go (Golang)
Go をシステムにインストールする必要があります。オペレーティング システムに基づいて次の手順に従ってください:
Windows
- 公式 Web サイトから最新の Go インストーラーをダウンロードします。
- インストーラーを実行し、画面上の指示に従います。
- コマンド プロンプトまたは PowerShell を開いて次のように入力して、インストールを確認します。
go version
Ubuntu
- ターミナルを開いて次を実行します。
sudo apt update sudo apt install -y golang
- インストールを確認します:
go version
macOS
- Homebrew を使用して Go をインストールします。走る:
brew install go
- インストールを確認します:
go version
2. Go の基本的な理解
専門家である必要はありませんが、変数、関数、構造体などの Go の概念を基本的に理解していると、スムーズに進めることができます。 Go を初めて使用する場合は、Go ツアーを参照して簡単に紹介することをお勧めします。
これらの前提条件が満たされていれば、これらの素晴らしい Go-lang プロジェクトの構築を開始する準備が整いました。 ?
?ディスク使用量を監視するアプリ
最初のプロジェクトであるディスク使用量監視ツールから旅を始めましょう。このプログラムは、システム上の指定されたディレクトリのディスク使用量を分析するのに役立ちます。
ソース コードは私の GitHub リポジトリにあります。まず、disk_usage.go という名前のファイルを作成し、次のコードを追加します。
package main import ( "fmt" "os" "syscall" ) func getDiskUsage(path string) { var stat syscall.Statfs_t err := syscall.Statfs(path, &stat) if err != nil { fmt.Println("Error Fetching Disk Usage:", err) return } total := stat.Blocks * uint64(stat.Bsize) free := stat.Bfree * uint64(stat.Bsize) used := total - free percentUsed := float64(used) / float64(total) * 100 fmt.Printf("Disk usage of %s:\n", path) fmt.Printf("Total: %d GB\n", total/1e9) fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed) fmt.Printf("Free: %d GB\n", free/1e9) } func main() { path := "/" if len(os.Args) > 1 { path = os.Args[1] } _, err := os.Stat(path) if os.IsNotExist(err) { fmt.Printf("Error: '%s' Path doesn't exist.\n", path) return } else if err != nil { fmt.Printf("Error occurred while accessing path %s: %v \n", path, err) return } getDiskUsage(path) }
プログラムの仕組み:
- プログラムは syscall.Statfs 関数を使用して、合計スペース、使用済みスペース、空きスペースなどのディスク統計を取得します。
- 使用されているディスク容量の割合を計算し、使いやすい方法で出力をフォーマットします。
- 指定されたパスが存在するかどうか、またはそのパスへのアクセスに問題があるかどうかを確認するために、エラー処理が実装されています。
プログラムの実行
プログラムを実行するには、次のコマンドを使用します:
- 特定のディレクトリのディスク使用量を確認します。
go version
- パスが指定されていない場合、プログラムはデフォルトでルート ディレクトリ (/) に設定されます。
sudo apt update sudo apt install -y golang
パーティションが 1 つあるため、異なるパスを指定しても同じ結果が得られます。
このプロジェクトは、Go がシステムの基盤となる API とどのように対話できるかを示し、システム監視タスクの優れた出発点となります。 ?
? HTTP サーバー プログラム: ポートフォリオ Web サイトのホスティング
2 番目のプロジェクトには、ポートフォリオ Web サイトをホストする HTTP サーバーを Go で作成することが含まれます。このプロジェクトでは、監視用のヘルス チェック エンドポイントを組み込みながら、静的 Web サイトを構築して提供する方法を示します。
ソース コードは私の GitHub リポジトリにあります。
HTTP サーバーを構築する手順
- http_server.go という名前のファイルを作成し、次のコードを追加します。
go version
仕組み
- 静的ファイル サーバー: http.FileServer 関数は、./static ディレクトリからファイルを提供します。
- ヘルス チェック エンドポイント: /health ルートは、単純なヘルス チェック メトリックを提供するために定義されています。
- サーバーのセットアップ: サーバーはデフォルトでポート 8090 をリッスンし、起動中のエラーはすべてログに記録されます。
ポートフォリオ Web サイトの作成
-
構造: 静的フォルダー内に以下を作成します:
- index.html
- スタイル.css
- profile.jpeg という名前のプロフィール写真を含む、images という名前のフォルダー。
次のコンテンツをファイルに追加します:
index.html:
brew install go
プログラムの実行
- 次のコマンドを使用して HTTP サーバーを起動します。
go version
- あなたのポートフォリオ Web サイトは次の場所から利用できるようになります。 ローカルホスト:8090
ヘルスチェックへのアクセス
サーバーの状態を確認するには、
にアクセスしてください。
package main import ( "fmt" "os" "syscall" ) func getDiskUsage(path string) { var stat syscall.Statfs_t err := syscall.Statfs(path, &stat) if err != nil { fmt.Println("Error Fetching Disk Usage:", err) return } total := stat.Blocks * uint64(stat.Bsize) free := stat.Bfree * uint64(stat.Bsize) used := total - free percentUsed := float64(used) / float64(total) * 100 fmt.Printf("Disk usage of %s:\n", path) fmt.Printf("Total: %d GB\n", total/1e9) fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed) fmt.Printf("Free: %d GB\n", free/1e9) } func main() { path := "/" if len(os.Args) > 1 { path = os.Args[1] } _, err := os.Stat(path) if os.IsNotExist(err) { fmt.Printf("Error: '%s' Path doesn't exist.\n", path) return } else if err != nil { fmt.Printf("Error occurred while accessing path %s: %v \n", path, err) return } getDiskUsage(path) }
このプロジェクトでは、Go-lang を使用して静的コンテンツをホストする機能的な Web サーバーを作成し、ヘルス チェック エンドポイントによる追加の監視を行う方法を紹介します。 ?
? RESTful API プロジェクト: DevOps ツールの管理
このブログの最後のプロジェクトでは、DevOps ツールのリストを管理できる RESTful API を作成します。このプログラムは、Go の net/http パッケージを使用して RESTful ルートを処理し、データを管理する方法を示します。
完全なソース コードは私の GitHub リポジトリで入手できます。
RESTful API の構築
ステップ 1: メインプログラム
main.go という名前のファイルを作成し、次のコードを追加します:
go version
ステップ 2: データの処理
tools ディレクトリに、data.go という名前のファイルを作成し、以下を追加します:
sudo apt update sudo apt install -y golang
ステップ 3: ハンドラー
tools ディレクトリに、handler.go という名前の別のファイルを作成し、以下を追加します:
go version
モジュールの初期化
プログラムを実行する前に、Go モジュールを初期化します。
brew install go
これにより、プロジェクトで project/tools パッケージを使用できるようになります。
プログラムの実行
次のコマンドを実行してサーバーを起動します:
go version
API のテスト
- すべてのツールをリストする ツールのリストを取得するには、次を使用します。
package main import ( "fmt" "os" "syscall" ) func getDiskUsage(path string) { var stat syscall.Statfs_t err := syscall.Statfs(path, &stat) if err != nil { fmt.Println("Error Fetching Disk Usage:", err) return } total := stat.Blocks * uint64(stat.Bsize) free := stat.Bfree * uint64(stat.Bsize) used := total - free percentUsed := float64(used) / float64(total) * 100 fmt.Printf("Disk usage of %s:\n", path) fmt.Printf("Total: %d GB\n", total/1e9) fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed) fmt.Printf("Free: %d GB\n", free/1e9) } func main() { path := "/" if len(os.Args) > 1 { path = os.Args[1] } _, err := os.Stat(path) if os.IsNotExist(err) { fmt.Printf("Error: '%s' Path doesn't exist.\n", path) return } else if err != nil { fmt.Printf("Error occurred while accessing path %s: %v \n", path, err) return } getDiskUsage(path) }
出力:
go run disk_usage.go /path/to/directory
- 新しいツールを追加する 新しいツールを追加するには、次を使用します。
go run disk_usage.go
出力:
package main import ( "fmt" "net/http" ) func healthCheckHandler(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) w.Write([]byte("OK")) } func main() { fs := http.FileServer(http.Dir("./static")) http.Handle("/", fs) http.HandleFunc("/health", healthCheckHandler) port := "8090" fmt.Printf("Starting server on port %s....", port) err := http.ListenAndServe(":"+port, nil) if err != nil { fmt.Println("Error starting server:", err) } }
- フェッチツールの詳細 特定のツールの詳細を取得するには、次を使用します。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pravesh Sudha - Portfolio</title> <link rel="stylesheet" href="style.css"> </head> <body> <header> <div> <p><strong>style.css:</strong><br> </p> <pre class="brush:php;toolbar:false">body { font-family: Arial, sans-serif; margin: 0; padding: 0; line-height: 1.6; color: #333; background-color: #f9f9f9; } header { background: #4caf50; color: #fff; padding: 20px 0; text-align: center; } header .profile-picture { width: 150px; height: 150px; border-radius: 50%; margin-bottom: 15px; } header h1 { font-size: 2.5em; margin: 0; } header .subtitle { font-size: 1.2em; margin: 0; } main { padding: 20px; max-width: 800px; margin: 20px auto; background: #fff; border-radius: 8px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); } main .about, main .links { margin-bottom: 20px; } main .links ul { list-style: none; padding: 0; } main .links li { margin: 10px 0; } main .links a { color: #4caf50; text-decoration: none; font-weight: bold; } main .links a:hover { text-decoration: underline; } footer { text-align: center; padding: 10px 0; background: #333; color: #fff; }
出力:
go run http_server.go
?結論
このブログでは、ソフトウェア開発のさまざまな側面を実際に体験するのに役立つ 3 つの実践的な Go プロジェクトを検討してきました。ディスク使用量の監視から、シンプルな HTTP サーバーの構築、ポートフォリオ Web サイトのホスティング、そして最後に DevOps ツールを管理するための RESTful API の作成に至るまで、これらのプロジェクトは、Go プログラミング スキルを磨きたい人にとって強固な基盤を提供します。
- ディスク使用量監視アプリケーションでは、Go でのシステム コールと基本的なファイル処理について紹介し、マシンのファイル システムと対話する方法について説明しました。
- HTTP サーバー プロジェクトでは、静的ファイルの提供方法と基本的なヘルスチェック エンドポイントの処理方法を学習でき、Go で Web 開発を始めるのに役立ちます。
- RESTful API プロジェクトは、API を構造化し、同時実行制御でデータを管理し、POST リクエストと GET リクエストを通じてアプリケーションをインタラクティブにする方法を示しました。
これらの各プロジェクトは、実際のアプリケーションに合わせて拡張できる構成要素です。システムの監視、Web アプリケーションの開発、API の構築に興味がある場合でも、Go は効率的な開発に必要なシンプルさとパワーを提供します。
?さらに有益なブログについては、Hashnode、X(Twitter)、LinkedIn でフォローしてください。
それまで、ハッピーコーディング!!
楽しく学習してください! ?
以上がDevOps の旅を始めるための Go-lang プロジェクトの引用の詳細内容です。詳細については、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)

ホットトピック











Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

goisidealforforbeginnersandsutable forcloudnetworkservicesduetoitssimplicity、andconcurrencyfeatures.1)installgofromtheofficialwebsiteandverify with'goversion'.2)

Golangは迅速な発展と同時シナリオに適しており、Cは極端なパフォーマンスと低レベルの制御が必要なシナリオに適しています。 1)Golangは、ごみ収集と並行機関のメカニズムを通じてパフォーマンスを向上させ、高配列Webサービス開発に適しています。 2)Cは、手動のメモリ管理とコンパイラの最適化を通じて究極のパフォーマンスを実現し、埋め込みシステム開発に適しています。

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

GolangisidealforBuildingsCalables Systemsduetoitsefficiency andConcurrency、Whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityand vastecosystem.golang'ssignencouragesclean、readisinediteNeditinesinedinediseNabletinedinedinedisedisedioncourase
