전체 글

· Algorithm
문제 설명요약하면, 주어진 삼각형 구조의 꼭대기부터 시작하여, 아래로 내려갈 때 대각선 왼쪽 또는 오른쪽으로만 이동 가능하다는 조건 하에, 경로상의 숫자 합 중 최댓값을 구하는 문제이다. https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이 과정 삼각형의 각 칸은 자신의 좌측 상단 혹은 우측 상단들의 값에 영향을 받는다. 따라서, 반복문을 진행하며 삼각형 각 칸의 값을 최댓값으로 업데이트해나가는 DP 로 풀이하였다. 아래와 같이 삼각형의 형태를 직각삼각형 형태로 생각하면 로직을 구현하기 편..
· Study
문제 상황로컬(Mac M1)에서 Docker로 만든 이미지는 정상 실행됐음.하지만 docker save로 저장 후 다른 서버에 옮겨서 docker load를 하자 다음과 같은 오류 발생:해결과정1. tar 파일 깨짐 의심에러메시지를 구글링 해봤을 때, 가장 많이 나오는 원인은 ASCII 모드 전송으로 파일이 깨지는 경우이고, 추천 해결 방법은 아래와 같음.https://stackoverflow.com/questions/40622162/docker-load-and-save-archive-tar-invalid-tar-header 하지만 나는 -o, -i 옵션 사용했고, binary 모드 전송도 확인했기 때문에 해당 문제 아니었음 2. 런타임 환경변수 주입 실패Dockerfile의 FROM 절에 들어가는 기본..
· Algorithm
문제 설명장르별로 가장 많이 재생된 노래들을 최대 2개씩 골라 전체 재생수가 높은 장르 순으로 정렬해서 베스트 앨범을 만드는 문제이다.세부적인 조건은 아래와 같다. 장르 전체 재생 수가 많은 순서대로 장르 정렬각 장르 안에서는:재생 수가 높은 노래 먼저재생 수가 같으면 고유번호가 낮은 노래 먼저각 장르에서 최대 2곡까지만 수록 https://school.programmers.co.kr/learn/courses/30/lessons/42579# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이 과정장르명이 문자열로 주어지고 노래를 장르명을 바탕으로 묶고 연산을 수행해야 한다.따라서, 편의를 위해 아래와..
· Study
카카오 로그인 과정3단계로 이루어져 있다.https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#request-code카카오 인증 서버에서 제공해주는 토큰을 사용하는 것은 토큰 만료 기간 설정에 제약이 있어 자체 jwt 구현 및 운용 추천 Step1, Step2는 클라이언트에서 처리할 수 있음백엔드에서는 클라이언트에서 넘겨주는 토큰을 가지고 인증 및 로그인 처리를 구현하면 되는데, Step1,2를 거치지 않으면 Step3도 구현할 수 없기 때문에 테스트할 수 있는 방법에 대해 정리했다.Step1 & 2Kakao Developers 사이트에서 애플리케이션을 만들고 발급받은 restapiKey 와 지정한 redirectUrl 값을 잘 가져와서,아래 ..
· Study/JAVA
STOMPSimple Text Orientated Messaging Protocol의 약자Web Socket 위에서 동작하며 서버를 거쳐 클라이언트 간의 비동기 양방향 통신을 지원하는 프로토콜이다.서버와 클라이언트가 통신할 주체인 메시지의 유형, 형식, 내용들을 정의한다.이름에서 알 수 있듯이 Text 기반의 메시지 형식을 사용한다.pub/sub 형태의 통신이다.PUB(Publish) : 특정 토픽을 구독 중인 모든 클라이언트에게 메시지 발행SUB(Subscribe) : 특정 토픽을 클라이언트가 구독STOMP를 사용한다는 말이 메시지 브로커를 사용한다는 말과 동치는 아니지만, 대부분의 경우, STOMP를 통한 통신은 메시지 브로커와 함께 사용된다. STOMP 사용 이점메시지의 형식을 정의할 수 있기 때문..
· Study/Spring
문제상황 GET API에 대해서 포스트맨이나 크롬에서 확인해 봤을 때에는 응답 시간이 0.1초 이내로 짧았는데, 스웨거에서 테스트했을 때는 10초 이상 걸리는 상황. 해당 API는 db의 5000개 가량의 데이터를 조회하는 GET API 문제 접근 포스트맨이나 크롬에서 테스트했을 때는 문제가 없었기 때문에 스웨거 관련 세팅을 잘못했을 것이다. 그래도 혹시 모르니 아래와 같이 로그를 찍어보았는데, 스웨거로 실행했을 때에도 포스트맨과 동일하게 ‘요청받은 시각’과 ‘응답 시각’ 차이가 0.1초 이내였다. 즉, 조회 결과를 스웨거 화면상에서 보여줄 때 지연이 발생한다는 것이었다. log.info("요청 받은 시각 : " + new SimpleDateFormat("YYYY. MM. DD HH:mm:ss.SSS")..
· Knowledge
Release란? 소프트웨어를 빌드한 결과물을 쉽게 배포할 수 있도록 도와주는 기능이다. 구체적으로, 프로젝트의 버전을 마킹하고, 버전별 변경 사항, 릴리스 노트, 그리고 해당 소스 코드 및 바이너리 파일을 제공하는 데 사용할 수 있다. 언제 사용? 새로운 기능을 추가하거나 기존 기능을 업데이트한 후, 해당 변경 사항을 반영한 소프트웨어의 배포 버전 관리 시 사용. 배포 전략으로 활용할 수 있으며, 프로젝트를 특정 시점으로 롤백할 때 유용하게 사용할 수 있다. Tag Tag는 Commit에 붙일 수 있는 꼬리표로, Commit에 Release 버전을 명시할 수 있다. 예시 상황으로, 기존의 어떤 기능을 업데이트하고 push했는데 해당 기능에 버그가 있어 원래대로 되돌려야 할 때 업데이트 전 커밋의 태그를..