전체 글(333)
-
[Java] java 기초 자료구조 (Map, Set, Queue)
Mapjava에서 Map 인터페이스를 구현한 클래스들은 key, value 형식으로 데이터를 하나의 쌍으로 저장한다**.**요소의 순서를 유지하지 않는다.key의 중복을 허용하지 않는다.HashMapHashMap은 Map 인터페이스의 구현체이고 해싱(hashing)을 사용한다. 해싱(hashing) : 해시 함수를 사용하여 입력 값을 고정된 크기의 문자열로 만든다. 순차적 접근 방식을 사용한다면 O(N)의 시간 복잡도가 필요하다. 만약 배열을 사용하여 인덱스로 접근을 한다면 O(1)의 시간 복잡도가 필요하다. HashMap에 들어온 key 값을 해시 함수로 정수로 바꾸어서 배열의 인덱스로 사용한다면 O(1) 시간 복잡도로 값을 찾을 수 있다. 해시 함수로 변환한 정수의 값이 너무 클 경우 배열의 크기가 ..
2025.02.01 -
[Nest] Nest 기초 사용법
nest js 세팅Nest CLI를 설치한다.npm i -g @nestjs/cli 새로운 nest 프로젝트를 생성한다.nest new [프로젝트 이름] 사용할 패키지 매니저를 선택한다. (npm 선택)npm run start 명령어로 서버를 실행할 수 있다.npm run startDependency Injection (의존성 주입)DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴이다. 예를 들어 A 객체에서 B 객체를 사용한다고 하면 A 객체에서 직접 B 객체를 생성하지 않고 외부에서 B 객체를 생성해서 넣어주는 것이 DI라고 할 수 있다. nest js에서는 B 객체처럼 다른 객체에 주입할 객체들을 Provider라고 한다. nest 기본 프로젝트를 보면 DI를 적용하는 방식을 알 수 있다...
2025.01.31 -
[ubuntu] node, yarn 버전 이슈
node, yarn 버전 충돌NCloud 서버(ubuntu)에서 nest 서버를 배포하기 위한 환경을 마련하던 도중 버전 충돌 이슈가 있었습니다. 우선 nodejs를 설치하는 과정입니다.apt updateapt install nodejsnode -v nodejs를 설치하고 버전을 출력해보면 12버전이 나옵니다. 2024년 11월 14일 기준으로 버전이 22.11.0인 것을 확인하면 상당히 낮은 버전입니다. 일단 yarn을 설치합니다. yarn을 설치하기 위해 npm을 설치해주고 yarn을 글로벌로 설치합니다.apt updateapt install nodejsnode -v yarn 명령어를 입력했을 때 다음과 같은 오류가 뜬다면 원격 서버에 재접속 해줍니다. 이제 yarn install을 해준다면 다음과..
2025.01.26 -
[Node][Docker] image build 할 때 패키지 변경 사항이 있어도 이전 패키지 다시 사용하기
개요https://growth-coder.tistory.com/320 [docker] docker 이미지 간 node 패키지 공유하여 이미지 용량 최적화문제 상황열심히 개발을 하고 배포를 하던 중에 원격 서버에서 문제가 발생했습니다. 원격 서버에 패키지를 설치하던 중 디스크 용량 부족으로 인해 패키지 설치가 제대로 이루어지지 않았습growth-coder.tistory.com이전 포스팅에서 패키지만 존재하는 이미지를 빌드해서 이 이미지를 base로 여러 workspace 이미지를 빌드했습니다. 그리고 docker를 활용한 자동 배포 구축을 완료한 뒤 main 브랜치에 merge 될 때마다 배포가 자동으로 잘 되었습니다. 하지만 github action CI 서버에서 이미지 빌드 후 docker hub에 업..
2025.01.20 -
[docker][Nest] 모노레포 환경에서 docker 배포 환경 최적화
문제 상황docker를 사용하는 가장 큰 이유는 무엇일까요? 아마 대부분 외부 환경에 영향 받지 않고 서버를 정상적으로 운영하기 위해서 docker를 사용할 것입니다. docker를 사용하면 독립적인 container를 띄워서 외부 호스트에서 별도의 환경을 구축할 필요 없이 바로 원하는 서버를 띄울 수 있습니다. docker를 활용하여 서버를 구축할 때 docker image만 가지고 있으면 환경이 바뀌더라도 항상 동일한 서버 운영을 보장할 때 가장 이상적일 것입니다. 그에 비해 저희 서버는 docker를 제대로 활용하지 못 한다는 느낌을 받았습니다. 아래는 기존 저희 서버의 구조입니다. 중복 패키지를 방지하기 위해 docker volume을 사용하여 backend, websocket 컨테이너에 연결했습..
2025.01.15 -
[docker] docker 이미지 간 node 패키지 공유하여 이미지 용량 최적화
문제 상황열심히 개발을 하고 배포를 하던 중에 원격 서버에서 문제가 발생했습니다. 원격 서버에 패키지를 설치하던 중 디스크 용량 부족으로 인해 패키지 설치가 제대로 이루어지지 않았습니다. 당시 저희 팀은 크레딧을 아끼기 위해 최대한 낮은 스펙의 원격 서버를 사용했는데 디스크의 용량이 10GB밖에 되지 않았습니다. 이러한 환경에서 docker 배포를 위한 여러가지 방법을 시도하다 정리하지 않은 layer들이 너무 쌓인 것이 원인이었습니다.root@pub-server:/var/lib# du -sh /var/lib/docker/*22M /var/lib/docker/buildkit432K /var/lib/docker/containers4.0K /var/lib/docker/engine-id7.7..
2025.01.14