일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- kotlin spring
- Linux
- 코틀린 코루틴의 정석
- AI
- 정보처리기사실기 기출문제
- 오블완
- IntelliJ
- kotlin querydsl
- kotlin
- mysql 튜닝
- CKA
- Spring
- CloudWatch
- PETERICA
- 기록으로 실력을 쌓자
- Elasticsearch
- 정보처리기사 실기
- APM
- 정보처리기사 실기 기출문제
- minikube
- MySQL
- AWS EKS
- kotlin coroutine
- Pinpoint
- CKA 기출문제
- aws
- Kubernetes
- 공부
- Java
- 티스토리챌린지
- Today
- Total
목록전체 글 (815)
피터의 개발이야기
ㅁ 들어가며ㅇ fsnotify는 Go 언어에서 파일 및 디렉토리의 변경 사항을 실시간으로 감지할 수 있도록 도와주는 라이브러리이다. fsnotify의 주요 기능과 사용법을 정리하였다. ㅁ fsnotify란? fsnotify는 Windows, Linux, macOS 등 다양한 운영체제에서 동작하는 크로스 플랫폼 파일 시스템 감시 라이브러리이다. 이 라이브러리를 사용하면 파일 생성, 삭제, 수정, 권한 변경 등의 이벤트를 실시간으로 감지할 수 있다. ㅁ 감지 이벤트이벤트설명fsnotify.Create파일 또는 디렉토리 생성fsnotify.Remove파일 또는 디렉토리 삭제fsnotify.Write파일 내용 수정fsnotify.Rename파일 또는 디렉토리 이름 변경snotify.Chmod파일 또는 디렉토리 ..
ㅁ 들어가며ㅇ Go 언어의 sync.Map은 동시성 안전한 맵 구현을 제공한다. 일반 map과 달리 여러 고루틴에서 동시에 안전하게 사용할 수 있다. sync.Map의 초기화 및 기본적 사용법을 정리하였다. ㅁ sync.Map 초기화sync.Map은 별도의 초기화가 필요 없었다.var m sync.Map ㅁ주요 메서드Store(key, value interface{})m.Store("key", "value")ㅇ 맵에 키-값 쌍을 저장 Load(key interface{}) (value interface{}, ok bool)value, ok := m.Load("key")if ok { fmt.Println("Value:", value)}ㅇ 키에 해당하는 값을 조회 Delete(key interfa..
ㅁ 들어가며 이 글에서는 Golang을 사용하여 Linux 명령어를 실행하고, 실행된 프로세스를 sync.Map으로 관리한 후 종료하는 방법에 대해 정리하였다. ㅁ 필요한 패키지 importpackage mainimport ( "fmt" "os/exec" "sync" "syscall")ㅇ 먼저 필요한 패키지들을 import 한다. ㅁ 명령어 실행 및 관리 함수 작성var processMap sync.Mapfunc runCommand(name string, args ...string) (*exec.Cmd, error) { cmd := exec.Command(name, args...) err := cmd.Start() if err != nil { retur..
ㅁ 들어가며 이전에 [GO] Go 언어에서의 "fatal error: concurrent map read and map write" 해결하기에서 동시성으로 인한 오류를 해결하는 과정에서 이를 예방할 수 있는 Race Detector를 알게 되었다. Go 언어는 동시성 프로그래밍을 위한 강력한 기능을 제공하지만, 이와 함께 데이터 레이스(data race)와 같은 동시성 버그의 위험도 존재한다. 이러한 문제를 해결하기 위해 Go는 내장 Race Detector를 제공한다. ㅁ Race Detector란? Go의 Race Detector는 프로그램 실행 중 발생할 수 있는 데이터 레이스 조건을 감지하는 도구이다. Go 프로그램을 실행시키면 deadlock이나 data race condition이 발..
ㅁ 들어가며ㅇ Go 개발자라면 한 번쯤 마주칠 수 있는 "fatal error: concurrent map read and map write" 오류에 대해 정리하였다. 이 오류는 동시성 프로그래밍에서 흔히 발생하는 문제로, 여러 고루틴이 동시에 맵을 읽고 쓰려고 할 때 발생한다. 또한, -race 플래그를 사용하면 Go의 레이스 디텍터로 프로그램을 테스트하면 이러한 동시성 문제를 사전에 발견하는 데 도움이 될 수 있다. 이 부분은 [GO] Go Race Detector: 동시성 버그를 잡아내는 강력한 도구에 정리하였다. ㅁ 오류의 원인 이 오류는 Go의 맵이 기본적으로 동시성에 안전하지 않기 때문에 발생한다. 여러 고루틴이 동시에 같은 맵에 접근하여 읽기와 쓰기 작업을 수행할 때, Go 런타임은 이를 감..
ㅁ 들어가며ㅇ 함께 일하는 쿠루와 이야기 하면서 대용량 파일 업로드 시 OOME을 줄이는 방법에 대해서 고민하게 되었다. 관련 내용을 찾고 공부하면서 Spring에서 제공하는 MultipartFile.transferTo() 메서드에 대해서 알게 되었다. 이 메서드는 파일 업로드 처리를 간단하고 효율적으로 만들어주는 강력한 도구였다. ㅁ transferTo() 메서드란?transferTo() 메서드는 MultipartFile 인터페이스에서 제공하는 메서드로, 업로드된 파일을 서버의 지정된 위치로 저장하는 역할을 한다. 이 메서드는 파일 데이터를 메모리에 로드하지 않고 직접 디스크로 전송하여 대용량 파일 처리에도 효율적이다. ㅁ 주요 특징간편한 사용: 단 한 줄의 코드로 파일 저장이 가능합니다.메모리 효율성..
ㅁ 들어가며ㅇ 젠킨스 빌드환경을 구성하면서 이전에 빌드되었던 이미지들과 컨테이너들이 있었다. 도커 시스템에서 사용하지 않는 리소스를 쉽게 정리하는 방법을 정리해 보았다. ㅁ docker system prune이란?docker system prune은 도커 시스템에서 사용하지 않는 리소스를 한 번에 정리해준다. 중지된 모든 컨테이너최소 하나의 컨테이너에서 사용되지 않는 모든 네트워크매달려 있는(dangling) 모든 이미지모든 빌드 캐시 ㅁ 사용 방법docker system pruneㅇ 이 명령어를 실행하면 경고 메시지와 함께 삭제될 항목들이 나열된다. 계속 진행하려면 'y'를 입력한다.ㅇ 20GB의 리소스가 정리되었다. ㅁ 추가 옵션기본적으로 볼륨은 삭제되지 않는다. 볼륨도 함께 삭제하려면 --volum..
ㅁ 들어가며 Go 언어로 개발된 애플리케이션에서 메모리 사용량이 지속적으로 증가하는 문제는 흔히 발생할 수 있다. 이 글에서는 Go GC를 너무 믿지 마세요 - 메모리 누수 탐지와 GC 주기 조절이란 글을 읽고 메모리 문제의 원인을 분석하고 해결하는 데 도움이 되는 정보와 방법을 정리해 보았다. ㅁ 문제 정의 Go 애플리케이션의 메모리 사용량이 시간이 지남에 따라 점진적으로 증가하는 현상은, GC가 있는 Go 언어에서도 발생할 수 있다. 이는 애플리케이션의 안정성과 성능에 영향을 미칠 수 있으므로, 문제 해결을 위한 체계적인 접근이 필요하다. ㅁ 원인 분석ㅇ cgo 관련 메모리 누수: cgo를 사용하여 C 코드를 Go에서 호출하는 경우, C 코드에서 메모리 누수가 발생할 수 있다.ㅇ GC 성능: GC..
ㅁ 들어가며ㅇ Netty TcpClient를 설정하는 방법을 정리하였다. 알람 개선을 위해 TcpClient 소스를 분석하면서 알게된 내용을 정리해보았다.ㅇ RequestTimeout이 너무 짧으면 오류에 대한 알람이 자주 발생하고, 그만큼의 side-effect가 발생한다. 하지만 너무 길게 설정하면 리소스 자원의 낭비가 발생할 수 있다. ㅇ tcpClient가 동시에 처리할 수 있는 pool의 유휴자원을 확보하고 알람의 적절한 발생을 컨트롤 하기 위해 MSA구조에서 각 레벨에서의 적절한 수준의 timeout 설정은 필수이다. ㅁ 기본 설정 ㅇ TcpClient 인스턴스 생성TcpClient tcpClient = TcpClient.create(); ㅇ 호스트 및 포트 설정tcpClient = tcpCl..
ㅁ 들어가며Docker Hub의 사용 정책이 2025년 3월 1일부터 변경되어 사용에 제한이 주어진다. 서비스 품질 유지를 위해 제한을 두거나 추가 요금을 부과할 수 있게 하였다. ㅁDocker Hub 계정 유형별 제한 사항Docker Hub는 사용자 유형에 따라 다양한 제한을 두고 있다.계정 유형월간 Pull 횟수시간당 Pull 제한공개 저장소비공개 저장소비공개 저장소 용량Business100만무제한무제한무제한최대 500 GBTeam10만무제한무제한무제한최대 50 GBPro2.5만무제한무제한무제한최대 5 GBPersonal해당 없음40무제한최대 1개최대 2 GB비인증 사용자해당 없음IP당 10해당 없음해당 없음해당 없음 ㅁ 공정 사용 정책 Docker는 플랫폼의 안정적인 운영을 위해 '공정 사용 정책..
ㅁ 들어가며ㅇ git의 비밀번호를 수정하면서 Sourcetree에 인증오류가 발생하였다. 이를 해결하는 과정을 정리하였다. ㅁ sourcetree 에러 확인git --no-optional-locks -c color.branch=false -c color.diff=false -c color.status=false -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree fetch origin remote: Invalid username or password.fatal: Authentication failed for 'https://github.mycorp.com/platform/media-live.git/' ㅁ ..
ㅁ 들어가며 Ubuntu는 정기적으로 새로운 버전을 출시하며, 각 버전은 특정 기간 동안만 지원된다. 이 글에서는 Ubuntu의 주요 버전과 해당 버전의 EOL(End of Life) 날짜를 정리해 보았다. 이를 통해 어떤 버전을 사용해야 하는지, 업그레이드가 필요한 시점을 파악할 수 있다. ㅁ Ubuntu 버전 지원 정책Ubuntu는 두 가지 유형의 지원 정책을 제공된다.일반 지원 (Standard Support)출시 후 5년 동안 지원보안 업데이트 및 주요 버그 수정이 제공확장 지원 (Extended Security Maintenance, ESM)일반 지원 종료 후 추가로 5년간 지원ESM 기간 동안은 중요한 보안 업데이트만 제공Ubuntu Pro 구독을 통해 이용 가능함 ㅁ Ubuntu 버전 및..
ㅁ 들어가며Jenkins에서 원격 서버에 안전하게 접속하여 명령어를 실행하기 위해 SSH Agent를 사용하는 방법을 정리하였다.사전에 젠킨스를 설치되어 있어야 한다. ㅁ SSH Agent란? SSH Agent는 SSH 키를 관리하고, 원격 서버에 대한 인증을 자동화하는 도구이다. Jenkins에서는 SSH Agent 플러그인을 통해 Pipeline에서 SSH 키를 안전하게 사용할 수 있다. 이를 통해 원격 서버에 접속하여 명령어를 실행하거나 파일을 전송하는 등의 작업을 자동화할 수 있다. ㅁ Test를 위한 젠킨스 설치로컬에서 테스트를 위해 [Jenkins] Docker 기반 Jenkins quick start examples을 참조하여 빠르게 구축하였다.# git clone$ git clone ht..
ㅁ 들어가며 Docker와 Docker Compose를 더 쉽고 효율적으로 관리하는 방법을 찾고 있었다. Lazydocker가 바로 그 해답이었다. 이 강력한 터미널 UI 도구를 통해 Docker 컨테이너, 이미지, 볼륨을 한눈에 관리할 수 있다. ㅁ 설치 방법# macbrew install lazydocker# Binary 설치curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bashㅇ 자세한 lasydocker 설치 설명ㅇ Linux 사용자라면 curl로 쉽게 설치할 수 있다. ㅁ 기본 사용법lazydockerㅇ 터미널에서 위 명령어를 실행한다. ㅇ 실행된 화면..
ㅁ 들어가며ㅇ ffmpeg을 이용한 스트림 서비스 개발 작업을 하면서 ffmpeg 관련 프로세스를 모두 종료해야 할 때가 있다.ㅇ ps 명령어와 kill 명령어를 조합하는 방법과 pkill, killall 명령어를 사용하는 방법으로 ffmpeg 프로스세를 일괄종료하는 스크립트를 작성해 보았다. ㅁ ps와 kill 명령어ffmpeg 프로세스 확인 및 종료# ffmpeg 프로세스 확인ps -ef | grep ffmpeg# 종료kill -9 ㅇ 가장 기본적인 방법은 ps 명령어로 프로세스를 찾고 kill 명령어로 종료하는 것이다.ㅇ 이 방법은 프로세스 ID(PID)를 직접 확인하고 종료할 수 있어 정확하지만, 여러 프로세스를 종료할 때는 번거로울 수 있다. kill, grep, awk 명령어로 프로세스 종료..