[AWS 오류 해결] EC2에서 애플리케이션 로그 확인하기
·
프로젝트/짠모아
테스트 코드 contextLoads() FAILED 오류 해결하기 를 통해서 로컬 자바 애플리케이션에서는 오류가 발생하지 않았지만, 서버에 배포된 애플리케이션에서는 오류가 발생할 수 있다는 점을 깨달았다.EC2 인스턴스에 올라간 애플리케이션의 실행 로그를 확인하는 방법이 중요하다는 생각이 들어서EC2에서 애플리케이션 로그를 확인하는 과정을 정리해 보았다. 😁 EC2에서 애플리케이션 빌드 및 실행 과정1. 애플리케이션 빌드./gradlew build먼저 애플리케이션을 빌드한다.이 명령어는 Gradle을 사용하여 프로젝트를 빌드한다. build 태스크는 소스 코드를 컴파일하고, 테스트를 실행하며, 최종적으로 배포 가능한 JAR 파일을 생성한다.2. 빌드된 JAR 파일이 위치한 디렉토리로 이동cd build..
[AWS 오류 해결] 테스트 코드 contextLoads() FAILED 오류 해결하기
·
프로젝트/짠모아
문제 원인테스트 코드 contextLoads() FAILEDEC2로 gradlew 빌드하는 과정에서 다음과 같은 오류가 발생했다.ZzanmoaApplicationTests > contextLoads() FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:180 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1786 Caused by: jakarta.persistence.PersistenceException at Abst..
[AWS 오류 해결] swap 파일로 메모리 할당하기
·
프로젝트/짠모아
EC2 인스턴스에서 서버 파일을 git clone한 후, 서버에 접속하면 무한 로딩이 생겼다.그리고 CPU 사용량을 보니 90%을 찍은 흔적도 있었다. 문제 원인무한 로딩 문제는 메모리 부족으로 인해 발생할 수 있다는 것을 알게 되었다.EC2 프리티어에서 제공하는 t2.micro 인스턴스는 RAM이 1GB에 불과하여메모리 과부하로 인해 빌드가 진행되지 않는 것으로 보였다. 💡 해결 방법: Swap 메모리 사용Swap 메모리는 RAM이 부족할 때 리눅스에서 HDD 공간을 RAM처럼 사용하는 방법이다.이를 통해 부족한 RAM을 보완하여 시스템이 정상적으로 작동할 수 있도록 한다.1. swap 메모리 할당sudo dd if=/dev/zero of=/swapfile bs=128M count=162. swap ..
[AWS 오류 해결] CodeDeploy 로그 확인하기
·
프로젝트/짠모아
서울 공공데이터 활용 경진대회의 참가 조건이개발 결과물(앱스토어/웹 서비스 URL)을 등록 완료한 링크를 제출하는 것이었다. 그래서 AWS를 이용해 서비스 서버를 구축해야만 했다.하지만.. 약 2주간 EC2 Public 주소에 접근하지 못했다. 이를 해결해 나간 과정을 차례대로 작성할 예정이다. 먼저, EC2 인스턴스 터미널에 접속하자 !!! 👀 CodeDeploy 로그 확인하기로그 확인 명령어less /var/log/aws/codedeploy-agent/codedeploy-agent.log로그 내용2024-04-18T05:55:05 ERROR [codedeploy-agent(30886)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Error..
[백준] 17135. 캐슬 디펜스 (시뮬레이션/Java)
·
코딩 테스트/Baekjoon
[BOJ] 17135. 캐슬 디펜스 📌 풀이 과정캐슬 디펜스 문제 조건각 궁수는 공격 범위 내에서 가장 가까운 적을 공격하며, 동일한 거리의 적이 여러 명일 경우 가장 왼쪽의 적을 선택한다.매 턴마다 모든 궁수가 동시에 공격하고, 공격받은 적은 제거된다. 공격 후, 살아남은 적은 한 칸 아래로 이동한다.적이 성에 도달하면 게임에서 제외된다. 문제 설계하기1. 적의 위치를 리스트에 저장해, 공격할 대상을 관리한다.2. 3명의 궁수를 성이 있는 칸에 배치하는 조합을 만든다.3. 배치 완료된 각 궁수의 위치에 대해 가능한 적을 탐색한다.적의 위치와 궁수의 거리 계산 → 맨해튼 거리가장 가까운 적을 찾고, 동일한 거리에 여러 적이 있다면 가장 왼쪽 열에 있는 적을 선택한다.4. 적 제거 및 이동하기궁수들이 선..
[서울시 공공데이터 경진대회] 최우수상 수상 프로젝트 - 짠모아
·
프로젝트/짠모아
짠모아 Github Repository[서울 열린데이터광장] 공공데이터 활용 창업경진대회 역대 수상작 확인하기 🏆 소비 절약 플랫폼 "짠모아" 프로젝트서비스명 : 짠모아팀명 : 짠돌이 (UI 디자이너(1), FrontEnd(2), BackEnd(2))약 2~3개월간 개발 진행 최근 고물가와 고금리로 인해 소비자들의 절약과 현명한 소비에 대한 관심이 커지고 있다. 이에 따라 소비자들은 더 나은 가격에 물품을 구매할 방법을 찾고 있으며, ‘거지방’, ‘무지출 챌린지’, ‘현금 챌린지’와 같은 새로운 절약 문화가 확산되고 있다. 이러한 흐름은 소비자들이 자신의 소비 패턴을 점검하고, 불필요한 지출을 줄여 저축을 늘리는 데 중점을 두고 있음을 보여준다. 이러한 배경에서 소비자들이 보다 쉽고 효과적으로 물가 정..
[백준] 3055. 탈출 (그래프 탐색 / Java)
·
코딩 테스트/Baekjoon
[백준] 3055. 탈출 📌 풀이 과정고슴도치(S)가 홍수가 난 티떱숲에서 비버의 굴(D)로 이동할 수 있는 가장 빠른 시간을 구하는 문제다.매 분마다 물을 먼저 확장시켜, 고슴도치가 이동할 수 있는지 확인해야 하기에물의 확장과 고슴도치의 이동을 각각의 큐에서 따로 관리 해야한다. 물의 큐(waterQ)물이 퍼지는 모든 좌표를 저장하고, 매 턴마다 물이 퍼지는 과정을 먼저 처리한다. 고슴도치의 큐(hedgehogQ)고슴도치가 이동하는 모든 좌표를 저장하고, 물이 퍼진 후 그 상태에서 고슴도치가 이동할 수 있는지를 확인한다. 💡 동작 흐름1. 매 턴마다 물이 먼저 확장한다.물의 큐에서 모든 물의 좌표를 하나씩 꺼내서 네 방향으로 확장 시킨다.2. 물 확장 후 고슴도치 이동물이 확장된 후 고슴도치가 갈 ..
[백준] 1194. 달이 차오른다, 가자. (그래프 탐색/Java)
·
코딩 테스트/Baekjoon
[BOJ] 1194. 달이 차오른다, 가자 📌 풀이 과정이 문제도 백준의 1600. 말이 되고픈 원숭이 문제처럼 3차원 방문 배열 아이디어를 떠올려야 한다. 각 좌표에서 민식이가 어떤 키를 가지고 있는지 관리해야 하기 때문에민식이가 열쇠와 문을 사용하는 상태를 관리하려면, 3차원 방문 배열이 필요하다.즉, (x, y) 위치에서 열쇠를 가지고 있는 상태에 따라서로 다른 경로로 이동할 수 있으므로 열쇠 상태를 포함한 방문 체크가 필요하다. visited[x][y][key]로, (x, y) 좌표에서 특정한 key 상태로 방문한 적이 있는지를 기록한다.key 상태는 이진수로 표현하여, 열쇠의 소지 여부를 6비트로 나타낸다. 💡 비트로 키 관리하기문제에서 키는 a, b, c, d, e, f로 총 6개다.6개의..
[백준] 1600. 말이 되고픈 원숭이 (그래프 탐색/Java)
·
코딩 테스트/Baekjoon
[BOJ] 1600. 말이 되고픈 원숭이 📌 풀이 과정이 문제의 핵심은 3차원 방문 배열을 사용하는 것이다.BFS 탐색 시 좌표뿐만 아니라 말 찬스 사용 여부를 모두 포함해서 상태 관리를 해야 한다. 💡 BFS에서 상태를 관리하는 방법보통 BFS는 2차원 좌표 (x, y)만을 다룰 때 자주 사용한다. 하지만 이 문제에서처럼 좌표 외에도 말 찬스를 사용한 횟수(chance)와 같은 다른 상태를 포함해야 하는 경우도 있다. 이때 좌표와 chance를 하나의 상태로 묶어서 BFS 탐색을 진행해야 한다.즉, 하나의 상태(state)가 (x, y, chance)로 표현된다. 이 상태에서 chance는 말처럼 이동하는 기회를 사용한 횟수를 나타내며, 같은 좌표 (x, y)라 하더라도 말 찬스를 얼마나 사용했는지..
[백준] 14712. 넴모넴모 (백트래킹/Java)
·
코딩 테스트/Baekjoon
[백준] 14712. 넴모넴모 (Easy) 📌 풀이 과정주어진 격자판에서 나올 수 있는, “넴모”들이 올라간 칸이2 × 2 사각형을 이루지 않는 모든 배치의 가짓수를 출력해야한다. 각 칸을 순차적으로 선택하거나 선택하지 않으면서 모든 경우의 수를 탐색한다.즉, 각 칸에 두가지 경우가 존재한다.1. 넴모를 놓는 경우 (해당 칸 선택 O)2. 넴모를 놓지 않는 경우 (해당 칸 선택 X) (x, y) 좌표 탐색 중일 때, 이미 선택된 칸(x,y 좌표의 좌상단 3칸)들이2 × 2 사각형이 만들어지는 경우 ➡️ 해당 탐색 칸은 선택하지 않는다.아닌 경우 ➡️ 해당 칸을 선택한 경우와 선택하지 않은 경우 모두에 대해 탐색한다.모든 칸을 탐색했을 때 (cnt == N * M), 경우의 수를 증가키고 종료한다. 💡..