Go 언어를 활용한 WebSocket 통신 구현 가이드
WebSocket은 하나의 TCP 연결을 통해 클라이언트와 서버 사이의 양방향 통신을 가능하게 하는 프로토콜입니다. 기존의 HTTP 방식이 클라이언트의 요청이 있어야만 서버가 응답할 수 있는 단방향 구조였다면, WebSocket은 서버가 클라이언트에게 실시간으로 데이터를 푸시할 수 있는 전이중 통신(Full-duplex) 환경을 제공합니다.
과거에는 실시간 데이터를 처리하기 위해 ...
7월 26일 15:21에 게시됨
Go 언어 수신자 및 뮤텍스 주의사항
Go 언어에서 메서드 수신자(receiver)와 뮤텍스(mutex)를 사용할 때 유의해야 할 몇 가지 중요한 사항이 있습니다.
1. 메서드 수신자: 값 vs. 포인터
객체의 상태를 변경해야 하는 경우에는 포인터 수신자를 사용하고, 객체의 상태를 변경할 필요가 없는 경우에는 값 수신자를 사용하는 것이 좋습니다.
예제 코드
package main
import (
"fmt"
)
type Person struct { ...
7월 22일 11:39에 게시됨
Docker SDK를 활용한 Go 컨테이너 리소스 제한
컨테이너 생성 시 리소스 제한
package main
import (
"context"
"log"
"os"
docker "github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/mount"
"github.com/docker/docker/client"
"github.com/docker/go-connections/nat"
)
func main() {
dockerHost ...
7월 20일 21:46에 게시됨
Go와 gRPC-Gateway(V2)로 구현하는 소형 프로그램 인증 서비스: 데이터 영속화 및 테스트
MongoDB 기반 데이터 영속화
Docker로 로컬 MongoDB 구축
MongoDB 4.4.5 이미지를 받아 컨테이너로 실행합니다.
docker pull mongo:4.4.5
docker run -p 27017:27017 -d mongo:4.4.5
호스트의 27017 포트가 컨테이너의 MongoDB 서비스와 연결되었는지 docker ps로 확인합니다.
VS Code용 MongoDB 확장
개발 환경에서 VS Code를 사용한다면 MongoDB 확장을 설치하면 ...
7월 18일 21:19에 게시됨
Redis GeoHash 데이터 구조: 효율적인 지리 공간 데이터 처리
Redis GeoHash 데이터 구조: 효율적인 지리 공간 데이터 처리
오늘날 디지털 환경에서 지리 공간 데이터는 다양한 서비스의 핵심입니다. 차량 호출 앱에서 가장 가까운 운전자를 찾거나, 배달 앱에서 주변 식당을 검색하고, 소셜 미디어에서 가까운 사람들을 확인하는 등 이 모든 기능은 고성능 지리 공간 데이터 처리 기술에 의존합니다. 강력한 인메모리 데이터베이스인 ...
7월 18일 06:05에 게시됨
Go에서 TCP Keepalive 설정 구현
TCP Keepalive 개요
Go의 net 패키지는 TCP keepalive의 유휴 시간, 프로빙 간격, 시도 횟수를 직접 설정하는 기능을 제공하지 않습니다. 이러한 설정을 구현하기 위해 서드파티 패키지를 활용할 수 있습니다.
패키지 설치
go get github.com/felixge/tcpkeepalive
서버 구현 예제
클라이언트 연결 수락 후 keepalive 매개변수 설정:
유휴 시간(Idle): 10초
프로빙 ...
7월 17일 03:48에 게시됨
Go 언어로 구현하는 데코레이터 패턴: 유연한 기능 확장을 위한 설계
데코레이터 패턴이란?
데코레이터 패턴(Decorator Pattern)은 객체의 기능을 동적으로 확장할 수 있도록 해주는 구조적 디자인 패턴입니다. 상속을 사용하지 않고도, 기존 코드를 수정하지 않으면서 새로운 행동을 추가할 수 있습니다. 이는 "상속보다 조합(composition)을 우선하라"는 객체 지향 원칙과 일치합니다.
특히 다음 상황에서 유용하게 사용됩니다:
클래스 ...
7월 14일 21:54에 게시됨
Go 언어에서 ql 데이터베이스와 database/sql 통합 활용 가이드
ql을 활용한 고성능 데이터 저장 시스템 구축
ql은 경량이고 빠른 내장형 데이터베이스로, Go 언어 생태계에서 데이터 처리에 이상적인 선택입니다. 특히 database/sql 표준 인터페이스와 완전히 호환되며, 기업용 애플리케이션 개발 시 확장성과 안정성을 동시에 제공합니다. 이 문서에서는 실무 중심의 설정부터 고급 최적화까지 단계별로 설명합니다.
환경 구성: 의존성 ...
7월 11일 01:32에 게시됨
Logrange 오픈소스 프로젝트 가이드
Logrange 프로젝트 구조 분석
1. 디렉토리 구성 및 설명
프로젝트의 주요 폴더 구조는 다음과 같습니다:
logrange/
├── api/
├── assets/
├── build/
├── client/
├── cmd/
├── doc/
├── examples/
├── pkg/
├── server/
├── .gitignore
├── .travis.yml
├── LICENSE
├── Makefile
├── README.md
├── go.mod
├── go.sum
├── install
└── version.go
주요 폴더 설명:
api ...
7월 11일 01:29에 게시됨
Go 언어를 위한 임베디드 시맨틱 검색 솔루션
소규모 및 중규모 프로젝트를 위해 설계된 시맨틱 검색 라이브러리는 내장형 벡터 검색 및 의미론적 임베딩 기능을 제공합니다. 이 라이브러리는 복잡한 기존 검색 시스템의 번거로움 없이 강력한 의미 검색 기능이 필요한 프로젝트에 특히 적합합니다. GGUF BERT 모델을 지원하여 복잡한 임베딩 기술을 활용하면서도 시스템의 복잡성을 최소화할 수 있다는 것이 ...
7월 10일 17:28에 게시됨