Maison développement back-end Golang Des projets Go-lang passionnants pour démarrer votre parcours DevOps

Des projets Go-lang passionnants pour démarrer votre parcours DevOps

Dec 12, 2024 pm 02:21 PM

? Introduction

Bienvenue dans le monde du DevOps ! ? Aujourd'hui, je suis de retour avec un autre blog passionnant pour vous aider à approfondir la programmation pratique pour les tâches DevOps. Dans mon blog précédent, nous avons exploré 3 projets Python qui ont jeté les bases de l'automatisation DevOps.

Maintenant, changeons de sujet et explorons la puissance du Go-lang ! Ce blog vous guidera dans la construction de 3 projets Go-lang à la fois pratiques et adaptés aux débutants :

  • Un outil Surveiller l'utilisation du disque pour suivre les statistiques de stockage.
  • Hébergement d'un site Web de CV à l'aide d'un serveur HTTP.
  • Un programme API RESTful pour gérer les outils DevOps.

Alors, prenez votre éditeur de code préféré et commençons ! ?


? Pré-requis

Avant de nous lancer dans la construction de ces projets, assurons-nous que votre environnement est configuré et prêt à fonctionner. Voici ce dont vous avez besoin :

1. Allez (Golang)
Vous devrez avoir Go installé sur votre système. Suivez ces étapes en fonction de votre système d'exploitation :

Windows

  • Téléchargez le dernier programme d'installation de Go sur le site officiel.
  • Exécutez le programme d'installation et suivez les instructions à l'écran.
  • Vérifiez l'installation en ouvrant l'invite de commande ou PowerShell et en tapant :
go version
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ubuntu

  • Ouvrez un terminal et exécutez :
sudo apt update  
sudo apt install -y golang
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Vérifiez l'installation :
go version
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

macOS

  • Utilisez Homebrew pour installer Go. Courir:
brew install go
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Vérifiez l'installation :
go version
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

2. Compréhension de base de Go

Bien que vous n'ayez pas besoin d'être un expert, avoir une compréhension fondamentale des concepts Go tels que les variables, les fonctions et les structures vous aidera à suivre en douceur. Si vous êtes nouveau sur Go, je vous recommande d'explorer le Go Tour pour une introduction rapide.

Une fois ces conditions préalables remplies, vous êtes prêt à commencer à construire ces superbes projets Go-lang ! ?


? Application de surveillance de l'utilisation du disque

Commençons notre voyage avec le premier projet : un outil de surveillance de l'utilisation du disque. Ce programme vous aidera à analyser l'utilisation du disque pour n'importe quel répertoire spécifié sur votre système.

Vous pouvez trouver le code source dans mon référentiel GitHub. Commençons par créer un fichier nommé disk_usage.go et ajoutons le code suivant :

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)
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

Comment fonctionne le programme :

  • Le programme utilise la fonction syscall.Statfs pour récupérer les statistiques du disque, y compris l'espace total, utilisé et libre.
  • Il calcule le pourcentage d'espace disque utilisé et formate la sortie de manière conviviale.
  • La gestion des erreurs est implémentée pour vérifier si le chemin fourni existe ou s'il y a un problème pour y accéder.

Exécuter le programme
Pour exécuter le programme, utilisez les commandes suivantes :

  • Vérifiez l'utilisation du disque d'un répertoire spécifique :
go version
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Si aucun chemin n'est spécifié, le programme utilise par défaut le répertoire racine (/) :
sudo apt update  
sudo apt install -y golang
Copier après la connexion
Copier après la connexion
Copier après la connexion

xciting Go-lang Projects to Kickstart Your DevOps Journey

Comme j'ai une seule partition, j'obtiendrai le même résultat si je fournis des chemins différents.

Ce projet montre comment Go peut interagir avec les API sous-jacentes de votre système, ce qui en fait un excellent point de départ pour les tâches de surveillance du système. ?


? Programme de serveur HTTP : hébergement d'un site Web Portfolio

Le deuxième projet consiste à créer un serveur HTTP dans Go qui héberge un site Web de portfolio. Ce projet montre comment vous pouvez créer et servir des sites Web statiques tout en incorporant un point de terminaison de vérification de l'état pour la surveillance.

Vous pouvez trouver le code source dans mon référentiel GitHub.

Étapes pour créer le serveur HTTP

  • Créez un fichier nommé http_server.go et ajoutez le code suivant :
go version
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Comment ça marche

  • Serveur de fichiers statique : la fonction http.FileServer sert les fichiers du répertoire ./static.
  • Point de terminaison du contrôle de santé : une route /health est définie pour fournir une métrique de contrôle de santé simple.
  • Configuration du serveur : le serveur écoute sur le port 8090 par défaut et toutes les erreurs lors du démarrage sont enregistrées.

Création du site Web Portfolio

  1. Structure : Dans le dossier statique, créez :

    • index.html
    • style.css
    • Un dossier nommé images avec une photo de profil nommée profile.jpeg.
  2. Ajoutez le contenu suivant à vos fichiers :

index.html :

brew install go
Copier après la connexion
Copier après la connexion
Copier après la connexion

Exécuter le programme

  • Démarrez le serveur HTTP avec la commande suivante :
go version
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Le site Web de votre portfolio sera désormais disponible à l'adresse : hôte local : 8090

Accéder au bilan de santé
Pour vérifier la santé du serveur, visitez :

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)
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

xciting Go-lang Projects to Kickstart Your DevOps Journey

Ce projet montre comment utiliser Go-lang pour créer un serveur Web fonctionnel pour héberger du contenu statique, avec une surveillance supplémentaire via un point de terminaison de vérification de l'état. ?


? Projet API RESTful : gestion des outils DevOps

Dans le projet final de ce blog, nous créerons une API RESTful qui vous permettra de gérer une liste d'outils DevOps. Ce programme démontre l'utilisation du package net/http de Go pour gérer les routes RESTful et gérer les données.

Le code source complet est disponible sur mon dépôt GitHub.

Création de l'API RESTful
Étape 1 : Programme principal
Créez un fichier nommé main.go et ajoutez le code suivant :

go version
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Étape 2 : Traitement des données
Dans le répertoire tools, créez un fichier nommé data.go et ajoutez :

sudo apt update  
sudo apt install -y golang
Copier après la connexion
Copier après la connexion
Copier après la connexion

Étape 3 : Gestionnaires
Dans le répertoire tools, créez un autre fichier nommé handler.go et ajoutez :

go version
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Initialisation du module

Avant d'exécuter le programme, initialisez le module Go :

brew install go
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cela garantit que le projet peut utiliser le package projet/outils.

Exécuter le programme
Démarrez le serveur en exécutant :

go version
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Test de l'API

  1. Liste de tous les outils Pour récupérer la liste des outils, utilisez :
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)
}
Copier après la connexion
Copier après la connexion
Copier après la connexion

xciting Go-lang Projects to Kickstart Your DevOps Journey

Sortie :

go run disk_usage.go /path/to/directory
Copier après la connexion
  1. Ajouter un nouvel outil Pour ajouter un nouvel outil, utilisez :
go run disk_usage.go
Copier après la connexion

xciting Go-lang Projects to Kickstart Your DevOps Journey

Sortie :

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)
    }
}
Copier après la connexion
  1. Récupérer les détails de l'outil Pour récupérer les détails d'un outil spécifique, utilisez :
<!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;
}
Copier après la connexion

Sortie :

go run http_server.go
Copier après la connexion

xciting Go-lang Projects to Kickstart Your DevOps Journey


? Conclusion

Dans ce blog, nous avons exploré trois projets Go pratiques qui vous aident à acquérir une expérience pratique de différents aspects du développement logiciel. De la surveillance de l'utilisation du disque à la création d'un simple serveur HTTP en passant par l'hébergement d'un site Web de portefeuille et enfin la création d'une API RESTful pour gérer les outils DevOps, ces projets constituent une base solide pour tous ceux qui cherchent à perfectionner leurs compétences en programmation Go.

  • L'application de surveillance de l'utilisation du disque vous a présenté les appels système et la gestion de base des fichiers dans Go, vous donnant un aperçu de la façon dont vous pouvez interagir avec le système de fichiers d'une machine.
  • Le projet de serveur HTTP vous a permis d'apprendre à servir des fichiers statiques et à gérer les points de terminaison de base de vérification de l'état, vous aidant ainsi à vous lancer dans le développement Web dans Go.
  • Le Projet API RESTful a montré comment structurer une API, gérer les données avec contrôle de concurrence et rendre votre application interactive via les requêtes POST et GET.

Chacun de ces projets est un élément de base qui peut être étendu pour s'adapter à des applications du monde réel. Que vous soyez intéressé par la surveillance de systèmes, le développement d'applications Web ou la création d'API, Go offre la simplicité et la puissance nécessaires à un développement efficace.

? Pour un blog plus informatif, suivez-moi sur Hashnode, X(Twitter) et LinkedIn.

En attendant, bon codage !!

Bon apprentissage ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
4 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1677
14
Tutoriel PHP
1278
29
Tutoriel C#
1257
24
Golang vs Python: performance et évolutivité Golang vs Python: performance et évolutivité Apr 19, 2025 am 12:18 AM

Golang est meilleur que Python en termes de performances et d'évolutivité. 1) Les caractéristiques de type compilation de Golang et le modèle de concurrence efficace le font bien fonctionner dans des scénarios de concurrence élevés. 2) Python, en tant que langue interprétée, s'exécute lentement, mais peut optimiser les performances via des outils tels que Cython.

Golang et C: concurrence vs vitesse brute Golang et C: concurrence vs vitesse brute Apr 21, 2025 am 12:16 AM

Golang est meilleur que C en concurrence, tandis que C est meilleur que Golang en vitesse brute. 1) Golang obtient une concurrence efficace par le goroutine et le canal, ce qui convient à la gestion d'un grand nombre de tâches simultanées. 2) C Grâce à l'optimisation du compilateur et à la bibliothèque standard, il offre des performances élevées près du matériel, adaptées aux applications qui nécessitent une optimisation extrême.

Partage avec Go: un guide du débutant Partage avec Go: un guide du débutant Apr 26, 2025 am 12:21 AM

GOISIDEALFORBEGINNERNERS et combinant pour pourcloudandNetWorkServicesDuetOtssimplicity, Efficiency, andCurrencyFeatures.1) InstallgofromTheofficialwebsiteandverifywith'goversion'..2)

Golang vs C: Performance et comparaison de la vitesse Golang vs C: Performance et comparaison de la vitesse Apr 21, 2025 am 12:13 AM

Golang convient au développement rapide et aux scénarios simultanés, et C convient aux scénarios où des performances extrêmes et un contrôle de bas niveau sont nécessaires. 1) Golang améliore les performances grâce à des mécanismes de collecte et de concurrence des ordures, et convient au développement de services Web à haute concurrence. 2) C réalise les performances ultimes grâce à la gestion manuelle de la mémoire et à l'optimisation du compilateur, et convient au développement du système intégré.

Golang vs Python: différences et similitudes clés Golang vs Python: différences et similitudes clés Apr 17, 2025 am 12:15 AM

Golang et Python ont chacun leurs propres avantages: Golang convient aux performances élevées et à la programmation simultanée, tandis que Python convient à la science des données et au développement Web. Golang est connu pour son modèle de concurrence et ses performances efficaces, tandis que Python est connu pour sa syntaxe concise et son écosystème de bibliothèque riche.

Golang et C: les compromis en performance Golang et C: les compromis en performance Apr 17, 2025 am 12:18 AM

Les différences de performance entre Golang et C se reflètent principalement dans la gestion de la mémoire, l'optimisation de la compilation et l'efficacité du temps d'exécution. 1) Le mécanisme de collecte des ordures de Golang est pratique mais peut affecter les performances, 2) la gestion manuelle de C et l'optimisation du compilateur sont plus efficaces dans l'informatique récursive.

La course de performance: Golang vs C La course de performance: Golang vs C Apr 16, 2025 am 12:07 AM

Golang et C ont chacun leurs propres avantages dans les compétitions de performance: 1) Golang convient à une concurrence élevée et à un développement rapide, et 2) C fournit des performances plus élevées et un contrôle fin. La sélection doit être basée sur les exigences du projet et la pile de technologie d'équipe.

Golang contre Python: les avantages et les inconvénients Golang contre Python: les avantages et les inconvénients Apr 21, 2025 am 12:17 AM

GolangisidealforBuildingsCalableSystemsDuetoitSefficiency and Concurrency, tandis que les Implicites de l'Indrecosystem et le Golang'sDesignenCourageSlecElNCORES

See all articles