Docker로 healthcheck하기 (Docker Compose)
내가 해냄2024. 10. 21. 16:12Docker로 healthcheck하기 (Docker Compose)

Docker를 사용해서 서버를 돌리게 되면서 healthcheck 스크립트를 Docker용으로 다시 작성해야했다. (기존에는 window 스케쥴러를 등록하여 1분마다 해당 스크립트를 돌리도록 했음) 코드 자체는 매우 간단했지만 docker에 대해 알아가면서 짜다보니 시간을 많이 잡아먹었다.서버로 api요청을 보낸 후 응답이 비정상적일 경우 컨테이너를 종료하고 다시 시작하는 healthcheck 스크립트를 작성하였다. healthcheck_docker.sh#!/bin/bash LOG_FILE="/app/healthcheck.log" TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") HEALTH_CHECK_URLS=( "헬스체크 endpoint" ) echo "$TIMESTAMP - St..

[백준-1926] 그림
코테2024. 7. 18. 14:30[백준-1926] 그림

인트로백준은 js로 입력 받는 게 불편하여 파이썬을 사용하여 풀었습니다.알고리즘 공부를 안한지 꽤 되어 다시 천천히 시작해보려고 합니다.문제실버1 : https://www.acmicpc.net/problem/1926나의 풀이from collections import dequegraph = []visited = set([])cnt = 0max = 0def dfs(start_x, start_y, graph): global cnt global visited dx = [1,0,-1,0] dy = [0,1,0,-1] size = 1 cnt += 1 visited.add((start_x, start_y)) queue = deque([(start_x, start_y)]) ..

[mqtt.js, mosquitto] WebSocket connection to failed
삽질노트2024. 1. 26. 14:20[mqtt.js, mosquitto] WebSocket connection to failed

무슨 일이 있었나요?mqtt 통신을 해야할 일이 있어 mqtt.js를 사용하여 mqtt 통신을 시도했음.처음에 EMQX에서 제공하는 public broker에 연결했을 때 subscribe, publish 모두 잘되는 것을  확인한 후 OK 되는구나하고 넘겼는데다른분이 mosquitto로 구축하신 broker와 연결했더니 나를 반기는 에러...WebSocket connection to failed 열심히 삽질을 하다가 MQTTX를 쓰면서 힌트를 얻었는데.. MQTTX에서 broker와 연결할 때 ws:로 했을 때는 안됐는데 mqtt: 로 설정하니 잘되는 것.. 이때 슬슬 집나간 눈치가 돌아왔고 다른 블로그를 통해서 mosquitto는 웹소켓 통신을 하기 위해서 추가 설정이 필요한걸 알았음..  결론알고보..

웹 성능 최적화(1)
내가 해냄2023. 11. 30. 17:40웹 성능 최적화(1)

Light House (before) : Loading Properly size images : 이미지를 적절한 사이즈로 압축하여 로드 타임 최적화 ㄴ 실제 사용되는 너비보다 2배 큰 사이즈로 width, height를 지정하는 것이 적절함 ex) 사진이 차지하는 픽셀이 120x120이라면 240으로 지정 how to solve? CDN(Contents Delivery Network) : 소비자와 가까운 곳에 컨텐츠 서버를 두는 기술 Image CDN(image processing CDN) : CDN + 이미지를 가공해서(처리 과정을 거침) 사용자에게 전해줌 > imgIX라는 이미지 CDN 서비스를 사용할 수 있음 > unsplash같은 사이트에서 사진을 가져올 경우 파라미터 width, height 조..

덧칠하기
코테2023. 9. 18. 18:05덧칠하기

인트로레벨 1 javascript 문제 다풀려고 노력 중..문제덧칠하기https://school.programmers.co.kr/learn/courses/30/lessons/161989나의 풀이function solution(n, m, section) { let lastPaintIndex = section[0]+m-1; let cnt = 1; section.map((el) => { if(el > lastPaintIndex) { cnt+=1; lastPaintIndex=el+m-1; while(lastPaintIndex > n) { lastPaintIndex-=1; } ..

[하루메이트] Custom Hook으로 리팩토링하기
일단하면됨2023. 8. 31. 22:24[하루메이트] Custom Hook으로 리팩토링하기

useEnterPage 로그인이 필요한 페이지에서 사용하는 훅입니다. 다음과 같은 동작을 합니다. 1. 로그인 상태를 확인하고 로그인 상태가 아닐 경우 메인으로 보내고 로그인 모달을 켭니다. 2. 적절하게 진입했을 경우 페이지의 스크롤을 0으로 초기화합니다. import { useEffect } from 'react'; import useValidEnter from './useValidEnter'; import scrollToTop from '../utils/scrollToTop'; const useEnterPage = () => { const checkValidEnter = useValidEnter(); useEffect(() => { checkValidEnter(); scrollToTop(); }, ..

[하루메이트] Clean Code 적용하기
일단하면됨2023. 8. 16. 22:59[하루메이트] Clean Code 적용하기

프로젝트가 끝난 후 자유시간도 충분히 즐겼고 이제 리팩토링만 남았습니다. 자유시간 동안 클린 코드(Clean Code)라는 책을 읽었는데 이 책을 기반으로 리팩토링을 진행하려고 합니다. 책에서 프로그래머들의 말을 빌려 깨끗한 코드(Clean Code)가 무엇인지 이야기합니다. 깨끗한 코드는 보기에 즐거워야하며(우아한) 효율적이어야 한다. 또한 가독성이 좋아야한다. 깨끗한 코드일 때 다른 사람이 고치기 쉽다.(여기서 읽기 쉬운 코드와 고치기 쉬운 코드는 다름) TDD를 중요하게 이야기하는데 테스트 케이스가 없는 코드는 깨끗한 코드가 아니다.라고 적혀있을 정도입니다. 중복이 없어야 한다. 등등 정말 많은 내용이 있었습니다.. 리팩토링을 하다 보면 항상 느끼는 거지만 첫 리팩토링에 클린 코드의 모든 조건을 만..

[하루메이트] 회고
일단하면됨2023. 7. 26. 17:04[하루메이트] 회고

배포 후 hotfix까지 진행하고 메인프로젝트가 어느 정도 마무리가 되었습니다. 물론 아직 가장 큰 산인 리팩토링이 남아있지만... 프로젝트가 끝낼 때까지 왜 아무 글이 없냐고 한다면... 회고 나중에 해야지...해야지.. 미루다가 까먹어버린 우매한 자신 때문입니다. 지금 회고를 작성하면서 가장 먼저 떠오른 생각은 회고는 그때 그때 작성하자입니다.. 프로젝트 진행하면서는 시간이 너무 없고 기능 구현이 우선이라고 생각해서 따로 쓸 거리만 정리해 두었는데 그러다 보니 끝나고 나서 기억이 잘 나지 않더라고요.. 어떻게 떠듬떠듬 기억해 보면서 쓰겠지만 당시에 작성했더라면 더 좋은 회고가 되었을 텐데 라는 생각이 듭니다. 간단한 프로젝트 소개 본격적으로 회고에 들어가기 앞서 간단하게 프로젝트와 제가 맡은 파트를 ..

image