? 소개
DevOps의 세계에 오신 것을 환영합니다! ? 오늘 저는 DevOps 작업을 위한 실용적인 프로그래밍에 대해 더 자세히 알아볼 수 있도록 또 다른 흥미로운 블로그로 돌아왔습니다. 이전 블로그에서는 DevOps 자동화의 기반을 마련한 3가지 Python 프로젝트를 살펴보았습니다.
이제 방향을 바꿔 Go-lang의 힘을 살펴보겠습니다! 이 블로그는 실용적이고 초보자에게 친숙한 3가지 Go-lang 프로젝트를 구축하는 방법을 안내합니다.
- 스토리지 통계를 추적하기 위한 디스크 사용량 모니터링 도구입니다.
- HTTP 서버를 사용하여 이력서 웹사이트를 호스팅합니다.
- DevOps 도구를 관리하기 위한 RESTful API 프로그램
좋아하는 코드 편집기를 선택하고 시작해 보세요! ?
? 사전 요구 사항
이러한 프로젝트를 구축하기 전에 환경이 설정되어 있고 준비가 되었는지 확인하세요. 필요한 것은 다음과 같습니다.
1. 고(고랑)
시스템에 Go가 설치되어 있어야 합니다. 운영 체제에 따라 다음 단계를 따르세요.
윈도우
- 공식 홈페이지에서 최신 Go 설치 프로그램을 다운로드하세요.
- 설치 프로그램을 실행하고 화면의 지시를 따릅니다.
- 명령 프롬프트 또는 PowerShell을 열고 다음을 입력하여 설치를 확인합니다.
go version
우분투
- 터미널을 열고 다음을 실행하세요.
sudo apt update sudo apt install -y golang
- 설치 확인:
go version
macOS
- Homebrew를 사용하여 Go를 설치하세요. 달리다:
brew install go
- 설치 확인:
go version
2. 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
파티션이 하나이기 때문에 다른 경로를 제공해도 같은 결과가 나옵니다.
이 프로젝트는 Go가 시스템의 기본 API와 어떻게 상호작용하여 시스템 모니터링 작업을 위한 훌륭한 출발점이 될 수 있는지 보여줍니다. ?
? HTTP 서버 프로그램: 포트폴리오 웹사이트 호스팅
두 번째 프로젝트는 Go에서 포트폴리오 웹사이트를 호스팅하는 HTTP 서버를 만드는 것입니다. 이 프로젝트는 모니터링을 위해 상태 확인 엔드포인트를 통합하면서 정적 웹사이트를 구축하고 제공하는 방법을 보여줍니다.
내 GitHub 저장소에서 소스 코드를 찾을 수 있습니다.
HTTP 서버 구축 단계
- http_server.go라는 파일을 만들고 다음 코드를 추가합니다.
go version
작동 방식
- 정적 파일 서버: http.FileServer 함수는 ./static 디렉토리의 파일을 제공합니다.
- 상태 확인 엔드포인트: 간단한 상태 확인 지표를 제공하기 위해 /health 경로가 정의됩니다.
- 서버 설정: 서버는 기본적으로 포트 8090에서 수신 대기하며 시작 중 오류가 모두 기록됩니다.
포트폴리오 홈페이지 제작
-
구조: static 폴더 내에서 다음을 생성합니다:
- index.html
- style.css
- profile.jpeg라는 이름의 프로필 사진이 포함된 이미지라는 폴더입니다.
파일에 다음 콘텐츠를 추가하세요.
index.html:
brew install go
프로그램 운영
- 다음 명령을 사용하여 HTTP 서버를 시작합니다.
go version
- 귀하의 포트폴리오 웹사이트는 이제 다음에서 이용 가능합니다: 로컬호스트: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을 사용하여 상태 확인 엔드포인트를 통한 추가 모니터링과 함께 정적 콘텐츠 호스팅을 위한 기능적인 웹 서버를 만드는 방법을 보여줍니다. ?
? RESTful API 프로젝트: DevOps 도구 관리
이 블로그의 마지막 프로젝트에서는 DevOps 도구 목록을 관리할 수 있는 RESTful API를 만들겠습니다. 이 프로그램은 Go의 net/http 패키지를 사용하여 RESTful 경로를 처리하고 데이터를 관리하는 방법을 보여줍니다.
전체 소스 코드는 내 GitHub 저장소에서 확인할 수 있습니다.
RESTful API 구축
1단계: 메인 프로그램
main.go라는 파일을 만들고 다음 코드를 추가하세요.
go version
2단계: 데이터 처리
도구 디렉터리에서 data.go라는 파일을 만들고 다음을 추가합니다.
sudo apt update sudo apt install -y golang
3단계: 처리기
도구 디렉터리에서 handler.go라는 이름의 다른 파일을 만들고 다음을 추가합니다.
go version
모듈 초기화
프로그램을 실행하기 전에 Go 모듈을 초기화하세요.
brew install go
이렇게 하면 프로젝트에서 프로젝트/도구 패키지를 사용할 수 있습니다.
프로그램 운영
다음을 실행하여 서버를 시작하세요.
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) } }
- 가져오기 도구 세부정보 특정 도구의 세부정보를 가져오려면 다음을 사용하세요.
<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"> <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
? 결론
이 블로그에서는 소프트웨어 개발의 다양한 측면을 직접 경험하는 데 도움이 되는 세 가지 실용적인 Go 프로젝트를 살펴보았습니다. 디스크 사용량 모니터링부터 간단한 HTTP 서버 구축, 포트폴리오 웹사이트 호스팅, 마지막으로 DevOps 도구 관리를 위한 RESTful API 생성에 이르기까지 이러한 프로젝트는 Go 프로그래밍 기술을 연마하려는 모든 사람에게 견고한 기반을 제공합니다.
- 디스크 사용량 모니터링 애플리케이션에서는 Go의 시스템 호출과 기본 파일 처리 방법을 소개하여 머신의 파일 시스템과 상호 작용하는 방법에 대한 통찰력을 제공합니다.
- HTTP 서버 프로젝트를 통해 정적 파일을 제공하고 기본적인 상태 확인 엔드포인트를 처리하는 방법을 배울 수 있었고 Go에서 웹 개발을 시작하는 데 도움이 되었습니다.
- RESTful API 프로젝트에서는 API를 구성하고, 동시성 제어를 통해 데이터를 관리하고, POST 및 GET 요청을 통해 애플리케이션을 대화형으로 만드는 방법을 시연했습니다.
이러한 각 프로젝트는 실제 애플리케이션에 맞게 확장할 수 있는 구성 요소입니다. 시스템 모니터링, 웹 애플리케이션 개발, API 구축에 관심이 있다면 Go는 효율적인 개발에 필요한 단순성과 성능을 제공합니다.
? 더 많은 정보를 제공하는 블로그를 원하시면 Hashnode, X(Twitter) 및 LinkedIn에서 저를 팔로우하세요.
그때까지 즐거운 코딩하세요!!
즐거운 배움! ?
위 내용은 DevOps 여정을 시작하기 위해 Go-lang 프로젝트를 소개합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

the bytespackageisessentialformanipulatingBySeffectial

Tousethe "Encoding/Binary"Package OrencodinganddecodingBinaryData, followthesesteps : 1) importThepackAgeAndCreateBuffer.2) useBinary.writeToencodedAtaintoTheBuffer, theEndianness.3) useBinary.ReadTodeCodedataFromthebuffer, 다시 Spepeci

인코딩/이진 패키지는 이진 데이터를 처리하는 통합 된 방법을 제공합니다. 1) BAINSERD 및 BINARY.READ.READ 기능을 사용하여 정수 및 부동 소수점 번호와 같은 다양한 데이터 유형을 인코딩하고 디코딩하십시오. 2) BAINID.BAINSORDERODER 인터페이스를 구현하여 사용자 정의 유형을 처리 할 수 있습니다. 3) 데이터의 정확성과 효율성을 보장하기 위해 엔지니네스 선택, 데이터 정렬 및 오류 처리에주의를 기울이십시오.

GO의 문자열 패키지는 모든 사용 사례에 적합하지 않습니다. 가장 일반적인 문자열 작업에서 작동하지만 복잡한 NLP 작업, 정규 표현식 및 특정 형식 구문 분석에는 타사 라이브러리가 필요할 수 있습니다.

GO의 문자열 패키지에는 많은 수의 문자열 작업을 처리 할 때 성능 및 메모리 사용 제한이 있습니다. 1) 성능 문제 : 예를 들어, strings.replace 및 strings.replaceall은 대규모 문자열 교체를 처리 할 때 덜 효율적입니다. 2) 메모리 사용 : 문자열이 불변이기 때문에 모든 작업이 발생하여 새로운 객체가 생성되어 메모리 소비가 증가합니다. 3) 유니 코드 처리 : 복잡한 유니 코드 규칙을 처리 할 때 충분히 유연하지 않으며 다른 패키지 또는 라이브러리의 도움이 필요할 수 있습니다.

GO 언어로 문자열 패키지를 마스터하면 텍스트 처리 기능과 개발 효율성이 향상 될 수 있습니다. 1) 함유 기능을 사용하여 하위 문자열을 확인하십시오. 2) 인덱스 기능을 사용하여 하위 문자열 위치를 찾으십시오. 빈 문자열을 확인하지 않고 큰 문자열 작동 성능 문제와 같은 일반적인 오류를 피하기 위해주의하십시오.

문자열 조작을 단순화하고 코드를보다 명확하고 효율적으로 만들 수 있기 때문에 이동중인 문자열 패키지에주의해야합니다. 1) strings.join을 사용하여 줄을 효율적으로 스플 라이스; 2) strings.fields를 사용하여 빈 문자로 문자열을 나눕니다. 3) 문자열을 통해 기판 위치를 찾으십시오. 4) 문자열을 대체하려면 strings.replaceall을 사용하십시오. 5) 현악기를 효율적으로 스플 라이스로 사용하여 strings.builder를 사용하십시오. 6) 예상치 못한 결과를 피하기 위해 항상 입력을 확인하십시오.

thestringspackageoisessentialponderfficientstringmanipulation.1) itofferssimpleyetpowerfultionsfortaskslikecheckingsubstringsandjoiningstrings.2) ithandlesunicodewell, withFunctionsLikestrings.fieldsforwhitespace-separatedValues.3) forperformance, st


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

드림위버 CS6
시각적 웹 개발 도구