28.3. 프로그램언어 고(Go)의 뮤텍스(Mutex) 활용법

프로그램언어 고(Go)에서의 뮤텍스 기본 사용법 제가 고(Go)언어에서 뮤텍스의 기본 사용법에 대해 설명 드리겠습니다. package main import ( “fmt” “sync” ) var count int var mutex sync.Mutex func main() { var wg sync.WaitGroup for i := 0; i < 1000; i++ { wg.Add(1) go func() { mutex.Lock() count++ mutex.Unlock() wg.Done() }() } wg.Wait() fmt.Println(count) } 위의 ... Read more

28.1. 프로그램언어 고(Go)의 고루틴(Goroutines) 활용법

프로그램언어 고(Go)에서의 기본 고루틴 사용법 고(Go)언어에서 고루틴(goroutine)은 가벼운 스레드와 비슷한 개념입니다. 고루틴을 사용하면 병렬 처리가 가능한 코드를 쉽고 효율적으로 작성할 수 있습니다. package main import ( “fmt” “time” ) func say(s string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond) fmt.Println(s) } } func main() { go say("world") // 고루틴 ... Read more

27.3. 프로그램언어 고(Go)의 API 보안 준수 방법

프로그램언어 고(Go)에서의 HTTPS 사용 방법 고(Go)언어에서 HTTPS를 사용하는 방법에 대해 설명드리겠습니다. HTTPS는 HTTP에 SSL/TLS 기술을 적용하여 데이터를 암호화하여 전송하는 보안이 강화된 HTTP 프로토콜입니다. 고(Go)언어에서도 기본 http 패키지를 사용하여 손쉽게 HTTPS를 사용할 수 있습니다. import ( “crypto/tls” “net/http” ) func main() { // TLS 설정 tlsConfig := &tls.Config{ MinVersion: tls.VersionTLS12, CurvePreferences: []tls.CurveID{tls.CurveP521, tls.CurveP384, tls.CurveP256}, PreferServerCipherSuites: true, … Read more

27.2. 프로그램언어 고(Go)의 GraphQL API 개발 방법

프로그램언어 고(Go)에서의 GraphQL 스키마 정의 방법 Go언어에서 GraphQL 스키마를 정의하는 방법은 주로 gqlgen이라는 라이브러리를 사용합니다. import “github.com/99designs/gqlgen” type User { id: ID! name: String! age: Int } type Query { users: [User!]! } schema { query: Query } 위 예제코드에서 보시다시피, Go언어 내부에서 직접 User, Query 등의 타입을 정의하고 schema블록 안에서 query 타입을 연결합니다. gqlgen … Read more

27.1. 프로그램언어 고(Go)의 REST API 개발 방법

프로그램언어 고(Go)에서의 Handler 함수 생성하기 프로그램언어 고(Go)에서 Handler 함수를 생성하는 방법에 대해 최대한 친절하고 쉽게 설명드리겠습니다. Go언어에서 핸들러 함수는 HTTP 요청을 처리하는 함수입니다. 웹 애플리케이션에서 클라이언트의 요청을 받아서 응답을 보내주는 서버 로직을 구현할 때 사용합니다. 핸들러 함수는 아래와 같은 규칙을 따릅니다. func (t *T) ServeHTTP(w http.ResponseWriter, r *http.Request) { // … } – ServeHTTP 라는 … Read more

26.3. 프로그램언어 고(Go)의 ORM 사용법

프로그램언어 고(Go)의 ORM 환경 설정 Go 언어에서 ORM(Object-Relational Mapping)을 사용하기 위해서는 먼저 ORM 패키지를 설치해야 합니다. 대표적인 Go ORM 패키지로 GORM이 있습니다. GORM 설치는 go get 명령을 사용하여 쉽게 설치할 수 있습니다. go get -u github.com/jinzhu/gorm 위와 같이 명령을 입력하면 GORM 패키지가 자동으로 다운로드 및 설치됩니다. 그 다음 데이터베이스 연결을 설정합니다. 보통는 MySQL이 많이 사용됩니다. … Read more

26.2. 프로그램언어 고(Go)의 NoSQL 연동 방법

프로그램언어 고(Go)의 NoSQL 연동 환경 설정 Go언어에서 NoSQL 데이터베이스를 연동하기 위한 환경 설정 방법을 소개드리겠습니다. Go언어에서 가장 많이 사용되는 NoSQL 데이터베이스는 MongoDB입니다. MongoDB 연동을 위해서는 “go.mongodb.org/mongo-driver” 패키지를 이용합니다. 먼저 아래의 명령으로 mongo-driver 패키지를 설치합니다. go get go.mongodb.org/mongo-driver 그리고 아래와 같이 MongoDB 접속 정보를 설정합니다. import ( “context” “fmt” “go.mongodb.org/mongo-driver/mongo” “go.mongodb.org/mongo-driver/mongo/options” ) // MongoDB 접속 clientOptions … Read more

26.1. 프로그램언어 고(Go)의 SQL 연동 방법

프로그램언어 고(Go)의 SQL 연동 환경 설정 Go언어에서 SQL연동을 하기 위해서는 database/sql 패키지를 import하세요. import ( “database/sql” ) 그리고 선택한 데이터베이스에 맞는 드라이버를 import합니다. MySQL의 경우 다음과 같이 합니다. import ( “database/sql” _ “github.com/go-sql-driver/mysql” ) 주의할 점은 mysql 드라이버 import 문 앞에 밑줄(_)이 있다는 것입니다. 이는 드라이버를 initialize하기 위한 것입니다. 그 다음으로 데이터베이스 연결을 위한 정보를 … Read more

25.3. 프로그램언어 고(Go)의 소켓 프로그래밍

프로그램언어 고(Go)의 소켓 생성과 관리 고(Go) 프로그래밍 언어의 소켓 생성과 관리에 대해 친절하고 상세하게 설명드리겠습니다. // 서버 소켓 생성 listen, err := net.Listen(“tcp”, “:8080”) if err != nil { log.Fatal(err) } // 클라이언트 접속 대기 for { conn, err := listen.Accept() if err != nil { log.Fatal(err) } // 소켓 처리 goroutine 시작 go handle(conn) … Read more