오픈소스에 처음 PR 을 올리기 전에
·
기타/잡동사니
Why오픈소스 기여는 왜 하는가?나의 기술력 향상을 위해소프트웨어 개선을 위해커리어 점프, 이력을 위해커뮤니티 가입을 위해What무슨 오픈소스에 기여할까?당신이 가장 자주쓰는 소프트웨어를 고르면 된다.나는 jackson-jq 프로젝트에 기여하기로 했다.HowOpen a issue버그 제보, 질문을 다음 내용을 담아 이슈로 제기할 수 있다.이슈에 담을 내용무엇을 시도했는가어느 단계에서 막혔는가유사한 이슈 링크 참조공개적으로 제안하라오픈소스는 만인에게 '공개'된 상태여야 소프트웨어의 발전이 있다는 믿음에서 출발했다.개인용 이메일로 이슈나 PR 을 보내지말라.Pull Request일찍 열어라작게 일찍 PR 을 올려 피드백을 주고받는 것이 거대한 PR 을 갑자기 날리는 것보다 낫다.문맥을 제공하라.무엇을 시도했..
Protobuf - DynamicMessage, Descriptor
·
기타/잡동사니
DynamicMessageWhatDescriptor를 런타임에 받아 아무 protobuf 메시지 타입이나 담을 수 있는 범용 Message 구현체다.생성 클래스(ConnectDefault1) 을 대체한다.public final class DynamicMessage extends AbstractMessage { DynamicMessage(Descriptor type, FieldSet fields, // 값이 여기 담긴다. FieldDescriptor[] oneOfCases, UnknownFieldSet unknownFields);}생성 클래스는 필드가 Java field 로 박혀 있지만DynamicMessage는 ..
File 을 읽고 쓸 때 `.tmp` 파일은 왜 필요할까
·
LINUX/Linux
요구사항애플리케이션에서 어떤 파일을 쓰고, 읽을 수 있어야한다.파일은 반드시 완결된 내용을 갖춰야한다.즉, "쓰는 중" 과 같은 상태는 허용하지 않는다.구현 방법/data/ |--- data.snapshot |--- data.snapshot.tmpdata.snapshot.tmp 파일에 데이터를 쓴다.data.snapshot.tmp 파일 쓰기를 완료한다.data.snapshot.tmp 파일을 data.snapshot 파일로 이름을 변경한다.data.snapshot 파일이 있는 경우, 덮어쓰기한다.이런 순서로 구현할 수 있다..tmp 는 왜 필요할까?.tmp 파일 이름은 temporary 임시파일로부터 왔다.그럼 '임시' 파일이란게 왜 필요한지를 생각해보자.파일의 완결성과 가시성파일에 데이터를 '쓰는 중'이..
[Docker] multiplatfom 이미지 빌드하고 푸시하기
·
기타/Docker
OSChip: Apple M4archituecture: arm64문제 상황private repository 에 architecture amd64 / arm64 모든 이미지를 넣고싶다.즉, DockerHub 에서 흔히 볼 수 있는 multiplatform image 를 빌드하고 관리하고 싶다. MultiPlatform image 란?여러 OS / architecture 를 지원하는 이미지라는 뜻이다.쉽게 생각하면, 내 운영체제가 linux / amd64 라면 linux / amd64 빌드 이미지를 사용하게 되고linux / arm64 라면 linux / arm64 이미지를 자동으로 받는다.$ podman pull adobe/s3mock:5.0# image $ podman inspcect adobe/s3mo..
Docker 대신 Podman 으로 이미지 업로드 하기
·
기타/Docker
문제 상황- OS: MacOS M4 CPU (arm64)- Docker version: v29.1.3# arm 대신 amd 아키텍처 이미지 다운로드$ docker pull --platform linux/amd64 eclipse-temurin:25-jdk# 다운로드 결과 확인시 `Architecture` 가 빈 값으로 출력됨$ docker inspect eclipse-temurin:25-jdk | grep Architecture"Architecture": "",로컬 PC 는 Mac arm 아키텍처고 서버 PC 는 amd64 아키텍처를 사용한다.따라서 사용할 이미지 아키텍처를 linux/amd64 로 지정했으나 정상적으로 pull 되지 않는 현상이 있다. Podman 설치 절차 (1) Podman Des..
2025년 개발 회고
·
기타/잡동사니
카프카 내부 소스를 뜯어보다.2025년 1월 1일 Kafka Topic Replication , Compact 원리를 파악하기 위해 소스를 뜯어봤다.머릿속에서 많이 휘발되긴 했지만이 경험이 카프카 기반 서비스를 운영하다가 발생한 이슈를 해결하는데 큰 도움이 되었다. JVM 멀티스레드 학습미뤄왔던 JVM 진영에서 비동기 프로그래밍에 사용되는 기술(Completable)Future APIJVM GC, Heap Memory LayoutMulti Thread / ThreadPool등등을 학습했다.부끄럽지만 JVM 기반지식은 텅 비어있었는데 동료들과의 간극을 조금이나마 채울 수 있었다.가장 행복할 때사람들이 나를 불러줄 때 내가 존재하고 있음을 느낀다고 했다.첫 회사를 퇴사한 이유도 내가 만든 서비스를 아무도 사..