리눅스 특정 디렉토리 내부 파일을 상위로 이동

개발/Linux 2022. 6. 2. 03:18

mv 필요한 디렉토리/* . 해당 명령어를 통해 리눅스에서 디렉토리 내부 파일을 상위 디렉토리로 이동이 가능하다.

M1 환경에서 docker로 cadVisor 구동 시 Failed to create a manager 이슈 발생

개발/DevOps 2022. 5. 17. 02:50

기존에 디스코드 봇 서비스르 discord bot 게이트웨이와 nestjs 서버를 따로 pm2를 붙여서 우분투 환경의 개인 서버에서 구동하고 있었는데 개인 서버다 보니 AWS cloudwatch와 같은 모니터링툴이 없었다. 모니터링의 부재로 인해 서버 리소스 모니터링 및 장애 알림의 부재로 매번 직접 ssh로 접근해서 glances를 통해 서버 리소스를 체크해야해서 불편하였다. 그래서 모니터링툴(그라파나, 프로메테우스)을 연동할 겸 dockerize해서 docker-compose로 관리하려는 의도로 dockerize를 진행하였다. 그라파나와 프로메테우스를 사용하면서 리소스를 체크하기 위해 시스템 메트릭 수집하는 node-exporter와 Docker 컨테이너 리소스를 체크하는 cadVisor를 docke..

Article Thumbnail
Docker-compose로 db 구성 시, Error: connect ECONNREFUSED 127.0.0.1:5432 at TCPConnectWrap.afterConnect 발생

개발/Docker 2022. 5. 13. 04:12

$ Docker-compose up을 실행할 때, NestJS에서 Error: connect ECONNREFUSED 127.0.0.1:3301로 데이터베이스와 연동이 되지않는 이슈가 발생했다. Postgresql 연동 에러인데 에러 로그의 포트 번호가 3301 인 이유는 Docker-compose.yml 파일에서 아래와 같이 5432에서 3301로 포트 포워딩을 했기 때문이다. postgresql: container_name: db image: postgres:latest networks: - app-tier volumes: - ./postgresql/db:/var/lib/postgresql/data/ environment: // 환경변수 값 ports: - "3301:5432" restart: alwa..

Article Thumbnail
Docker 환경 변수 설정

개발/Docker 2022. 5. 11. 08:20

Docker로 postgres 와 NestJs로 서버를 띄웠는데 NestJs 부분의 DockerFile 내부에 환경 변수를 따로 선언하지 않아 위와 같이 환경 변수를 잡아오지 못하는 이슈가 발생하였다. DockerFile 내부에 ENV를 사용하여 아래와 같은 방법으로 환경 변수를 추가할 수 있다. 1. 한 번의 ENV에 모든 환경 변수를 선언하는 방법 FROM node:14 RUN mkdir -p /app/src WORKDIR /app COPY ./server ./ RUN npm install ENV DB_HOST=localhost \ DB_PORT=3301 \ DB_USERNAME=postgres \ DB_PASSWORD=test1234 \ DB_DATABASE=test_db EXPOSE 8001 CM..

Article Thumbnail
Ably.io 사용 시, 유저 로그인 상태 확인하기

개발/ReactJS 2022. 5. 1. 14:31

Ably.io로 채팅 기능을 구현하다보면 유저가 메세지를 읽었는지의 유무에 대해 체크해봐야하는 상황이 있다. Ably가 웹 소켓을 사용해서 채팅을 쉽게 구현하게 해주는 서비스이므로 유저가 소켓에 접속해있는지 아닌지 체크할 방법이 있을 것이라고 생각하고 공식 문서를 확인해봤는데 다행히 있었다. Presence / REST / Docs | Ably Realtime Presence events provide clients with information about the status of other clients 'present' on a channel ably.com 공식 문서에서 볼 수 있듯이 presence를 통해 현재 channel에 참여하고 있는 client들의 상태에 대해 체크할 수 있다. Prese..

Article Thumbnail
IntelliJ IDEA low memory analyzed 메모리 설정하기

개발 2022. 4. 22. 08:20

IntelliJ IDEA 사용 중 IDE 창 자체가 느려지고, Low memory 얼럿이 떳다. 맨처음에 저걸 보고 느낀 감정은 "???...... 형이 거기서 왜 나와???" 당혹감 그 자체였다. 인텔 맥 16인치 16기가 짜리를 사용할 때도 발생하지 않았던 이슈가 32기가 짜리를 사용하고 있는 상황에서 발생하니 어이가 없었다.ㅋㅋㅋㅋㅋ 차라리 메모리 자체라도 실제로 부족해서 그런거라면 이해가 되겠지만, 넉넉하게 남아있는 상황이라 더 어이가 없었던 거 같다. 구글링을 해보니 IntelliJ 자체에 할당된 메모리 디폴트 설정이 750메가여서 발생하는 이슈였다. Window 옆에 거의 들어갈 일이 없는 Help창 아래에서 4번째에 Change Memory Settings에 들어가면 아래처럼 팝업이 뜬다. ..

Article Thumbnail
Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension. 발생 시

개발/TypeScript 2022. 4. 11. 08:20

node src/~.ts를 실행했을 때 아래와 같이 Warning과 함께 SyntaxError: Cannot use import statement outside a module과 같이 에러가 발생하였다. package.json에 type이 "module"로 지정되어 있지 않아서 node로 src안의 ts 파일을 개별 실행시킬시 때 위와 같이 출력되었다. 위와 같이 package.json에 type: module을 추가하고 ts 파일을 실행 시 정상적으로 실행되었다.

Article Thumbnail
org.hibernate.tool.schema.spi.CommandAcception.... Error executing DDL 에러 발생 시

개발/Spring 2022. 4. 4. 08:20

Spring Application을 실행시켰을 때, $ org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL 와 같은 에러가 발생하였다. 해당 에러는 사용하는 DataBase의 예약어와 엔티티의 이름이 겹쳐서 발생하는 예외이다. 위처럼 @Table 어노테이션안에 테이블의 이름을 직접 지정하는 것을 통해 해당 에러를 해결하였다.

Article Thumbnail
토크 vs 코드

생각정리 2022. 3. 27. 23:56

내가 좋아하는? 했던? 문구가 있다. Talk is cheap, Show me the code. - Linus Torvalds - 프로그래밍 관련된 명언 또는 밈(meme)에 빠지지 않고 등장하는 리눅스 토르발즈의 문구이다. 개발 공부 시작 초기에는 저 명언처럼 말로 하는 것보다 코드로 보여주는 것이 좋은 것이고, 개발자라면 당연히 더 좋은 코드 퀄리티에 대해서만 고민하는 것으로 생각했었다. 그런데 저 명언이 그대로 적용이 가능한 분야는 오픈소스처럼 한정적인 분야에서만 가능하다는 것을 회사에 다니면서 알게 되었다. (심지어 오픈소스도 소통은 한다.) 물론 그렇다고 개발 실력이 없어도 된다는 건 아니다. 단지 저 명언대로 하면 1시간에 끝날 일을 10시간 혹은 그 이상의 시간을 투자해야 할 가능성이 있을 ..

Article Thumbnail
[NestJS & React] 유저 동접 방지 구현

개발/NestJS 2022. 3. 24. 08:20

유저 동시 접속 방지 기능을 개발이 완료된 서비스에 추가하는 방식으로 구현해야될 일이 생겼다. 해당 서비스의 경우, 로그인, 유저 관리를 세션/쿠키 방식이 아닌 JWT 방식으로 관리하고 있었기 때문에 동시 접속 방지를 websocket을 활용하여 구현하였다. 대략 어떻게 동시접속 방지를 구현할지에 대해 생각해보면 순서가 다음처럼 되었다. 유저가 로그인할 때, 토큰을 프론트로 전송함과 동시에 socket connection을 연다. 해당 유저가 로그아웃 할때까지 connection을 유지한다. 다른 클라이언트에서 해당 유저가 접속하면 기존의 connection을 끊고, 새로 접속된 클라이언트에서만 로그인시킨다. 위와 같은 방식으로 큰 틀을 잡고 구현하였다. 기존의 사용하던 NestJS가 v7이고 socke..