Dev 21

Base64 인코딩에서 RawStdEncoding과 StdEncoding 차이점

Base64 인코딩에서 RawStdEncoding과 StdEncoding의 주요 차이점은 패딩(padding) 문자인 '=' 의 사용 여부입니다:StdEncoding표준 Base64 인코딩을 사용출력 길이가 4의 배수가 되도록 '=' 패딩을 추가예시: "Hello" -> "SGVsbG8="RawStdEncoding패딩 문자('=')를 사용하지 않음더 짧은 출력 문자열 생성예시: "Hello" -> "SGVsbG8"실제 예시로 비교해보면:text := "Hello"std := b64.StdEncoding.EncodeToString([]byte(text)) // "SGVsbG8="raw := b64.RawStdEncoding.EncodeToString([]byte(text)) // "SGVsbG8" 두..

Dev/GO 2024.12.05

tls: failed to verify certificate: x509: certificate has expired or is not yet valid

Failed to load live state: failed to get cluster info for "https://127.0.0.1:6443": error synchronizing cache state : Get "https://127.0.0.1:6443/version?timeout=32s": tls: failed to verify certificate: x509: certificate has expired or is not yet valid: current time 2024-11-29T05:30:58Z is after 2024-11-29T00:51:47Z 에러 메시지를 분석해보면 인증서 만료가 원인인 것으로 보입니다.1. 에러 발생 시점: 2024-11-29T05:30:58Z2. 인증서 만료 시점..

Dev/KUBERNETES 2024.12.05

맥에 Homebrew로 Flutter 설치 환경설정

먼저 Mac에 Homebrew를 설치해야 합니다. Homebrew는 macOS용 패키지 관리자입니다. Homebrew 설치터미널을 열고 다음 명령어를 실행합니다:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Homebrew 설치 후 환경변수 설정M1/M2 Mac의 경우 다음 명령어들을 순서대로 실행:# Homebrew 경로를 환경변수에 추가echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc# 환경변수 적용source ~/.zshrcHomebrew 설치 확인brew --version이제 Flutter 설치brew install ..

Dev/FLUTTER 2024.11.04

Docker 컨테이너에서 실행 시 127.0.0.1:3000으로 접속되지 않는 문제 해결

문제 발생 원인Docker 컨테이너 내부에서 Golang 애플리케이션을 실행하고, 호스트 시스템에서 127.0.0.1:3000으로 접속하려 할 때 연결이 되지 않는 문제는 다양한 원인이 있을 수 있습니다. 대표적인 원인은 다음과 같습니다.포트 바인딩 오류: 컨테이너 내부의 포트와 호스트 시스템의 포트가 제대로 연결되지 않았습니다.네트워크 설정 문제: Docker 네트워크 설정에 문제가 있어 컨테이너와 호스트 시스템 간의 통신이 원활하지 않습니다.애플리케이션 오류: Golang 애플리케이션 자체에 문제가 있어 특정 포트에서 리스닝하지 않거나, 예상치 못한 에러가 발생하고 있습니다.방화벽 설정: 호스트 시스템 또는 컨테이너 내부의 방화벽 설정이 문제가 되어 연결이 차단될 수 있습니다.해결 방법Dockerfi..

Dev/GO 2024.08.28

쿠버네티스에서 애플리케이션의 PID가 1번일 때 그레이스풀 셧다운 과정

쿠버네티스에서 애플리케이션의 PID가 1번일 때 그레이스풀 셧다운 과정은 다음과 같이 진행됩니다:신호 처리:쿠버네티스는 파드를 종료할 때 먼저 SIGTERM 신호를 보냅니다.PID 1 프로세스는 기본적으로 SIGTERM을 무시하므로, 애플리케이션에서 이 신호를 명시적으로 처리해야 합니다.그레이스 기간:쿠버네티스는 SIGTERM 신호를 보낸 후 기본적으로 30초(설정 가능)의 그레이스 기간을 제공합니다.이 기간 동안 애플리케이션은 그레이스풀 셧다운을 수행해야 합니다.애플리케이션의 책임:신호 캐치: SIGTERM 신호를 캐치하고 처리하는 로직이 필요합니다.셧다운 로직 실행: 진행 중인 작업 완료, 리소스 정리 등을 수행합니다.적시에 종료: 그레이스 기간 내에 종료되어야 합니다.SIGKILL 처리:그레이스 기..

Dev/KUBERNETES 2024.08.27

OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown

컨테이너에 쉘이 없다는 오류가 나온다면, 다음과 같은 해결 방법을 시도해볼 수 있습니다:다른 쉘 사용:'/bin/bash' 대신 다른 쉘을 시도해보세요. 예를 들어:docker exec -it [컨테이너ID 또는 이름] /bin/sh또는docker exec -it [컨테이너ID 또는 이름] ash컨테이너 진입 없이 명령 실행:쉘에 진입하지 않고 직접 명령을 실행할 수 있습니다:docker exec [컨테이너ID 또는 이름] [명령어]예: docker exec mycontainer ls /이미지 확인:사용 중인 베이스 이미지를 확인하세요. 일부 최소화된 이미지(예: Alpine)는 기본 쉘이 다를 수 있습니다.Dockerfile 수정:컨테이너를 직접 만들었다면, Dockerfile에 쉘을 설치하는 명령을 ..

Dev/DOCKER 2024.08.27

Docker 오류: "failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/usr/bin/dumb-init": stat /usr/bin/dumb-init: no such file or directory: unknown" 해결 방법

Docker 오류: "failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/usr/bin/dumb-init": stat /usr/bin/dumb-init: no such file or directory: unknown" 해결 방법오류 분석이 오류는 Docker 컨테이너를 실행할 때 dumb-init라는 실행 가능한 파일을 찾을 수 없다는 것을 나타냅니다. dumb-init는 일반적으로 컨테이너의 프로세스 관리에 사용되는 도구입니다.해결 방법dumb-init 설치기본 이미지 변경: 사용하는 기본 이미지에 dumb-init이 포함되어 있는지 확인합니다...

Dev/DOCKER 2024.08.27

fiber 파라미터 처리 Queries()와 QueryParser() 차이점은?

c.Queries()와 c.QueryParser()는 Fiber에서 URL 쿼리 파라미터를 처리하는 두 가지 다른 방법입니다. 각각의 특징과 차이점을 설명해 드리겠습니다:c.Queries():반환 타입: map[string]string모든 쿼리 파라미터를 키-값 쌍의 맵으로 반환합니다.간단하고 직관적이며, 모든 쿼리 파라미터에 쉽게 접근할 수 있습니다.각 파라미터의 첫 번째 값만 반환합니다 (같은 키의 여러 값이 있을 경우).예시:queries := c.Queries()name := queries["name"]age := queries["age"]c.QueryParser():구조체에 쿼리 파라미터를 직접 바인딩합니다.태그를 사용하여 쿼리 파라미터 이름과 구조체 필드를 매핑할 수 있습니다.자동으로 타입 변..

Dev/GO 2024.08.26

missing go.sum entry for module providing package github.com/tinylib/msgp/msgp (imported by github.com/gofiber/fiber/v2/middleware/limiter); to add:해결방법은?

이 오류는 go.sum 파일에 필요한 의존성 정보가 누락되었을 때 발생합니다. github.com/tinylib/msgp/msgp 패키지가 go.mod 파일에는 있지만 go.sum에 없는 경우입니다. 이를 해결하는 방법은 다음과 같습니다:의존성 다운로드 및 검증:프로젝트 루트 디렉토리에서 다음 명령을 실행합니다:go mod tidy이 명령은 누락된 의존성을 다운로드하고 go.sum 파일을 업데이트합니다.특정 패키지 다운로드:만약 go mod tidy로 해결되지 않는다면, 특정 패키지를 직접 다운로드할 수 있습니다:go get github.com/tinylib/msgp/msgp캐시 정리:때로는 Go 모듈 캐시에 문제가 있을 수 있습니다. 이 경우 캐시를 정리하고 다시 시도해보세요:go clean -modc..

Dev/GO 2024.08.26

[Mysql] DataGrip Select문으로 조회 후 데이터 수정 안되는 이유

DataGrip에서 SELECT 문으로 몇 개의 컬럼만 조회했을 때 수정이 안 되는 문제가 발생했다. your_table 테이블에서select 문으로 column1, column2 를 조회했다. SELECT column1, column2 FROM your_table;조회 후 column2 값 200을 500으로 수정 후 커밋 버튼을 눌렀다.한데 업데이트가 되지 않고 렉이 걸렸다.락 걸린 테이블에 update문을 실행한 것처럼 커밋이 되지 않았다. 한데select * from your_table;로 조회 후 column2값을 수정하면 커밋이 된다. 이에 대한 몇 가지 이유와 해결 방법이 있다고 한다.테이블 전체 조회가 아닌 경우:SELECT 문으로 일부 컬럼만 조회했을 경우, DataGrip은 해당 결과를..

Dev/DB 2024.08.13