전체 글
-
[알고리즘] 로봇청소기 - bfs알고리즘 2024. 3. 7. 20:20
문제 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 생각할 점 [ 문제풀이 ] 1. 처음 주워지는 방향을 통해서 반시계 방향으로 회전시키는 것 주의 ( 방향 전환이 어려울 수 있음 ) 2. 전진하지 못하는 경우 주의 [ can_go 메소드 보기 ] 3. 만약에 4가지 방향 ( 반시계 방향 )으로 전부 돌았지만 청소한 영역이 없다면 후진할텐데, 주의할점은 처음에 후진하는 공간이 범위 내에 있나를..
-
[Error] 수정한 코드가 운영서버에 적용이 안됩니다!T-note 2024. 3. 7. 17:39
문제 상황 서버측에서 코드를 수정해서 배포서버에 푸시를 했는데도 불구하고 postman의 운영 도메인, 프론트 모두에서 코드가 적용이 되지 않는 문제가 생겼습니다. 저희는 code deploy에도 배포가 성공 한걸 확인하고, ec2 내부에서 수정된 코드가 적혀 있는 것을 보고 CICD 부분은 확실히 되었다고 생각을 하여, 테스트하고 있는 API ( 저희는 token 관련 API )에서 문제를 찾으려고 고생을 하였습니다 ㅜ... 그러다가 배포할때 deploy.log 파일을 찍어 보려고 log 파일을 여는 순간 문제를 찾았습니다. 현재 날짜가 3/7인데 2월 20일이 마지막으로 로그가 찍혀 있음을 알았다. 결국 배포가 잘 되지 않았다는 증거이다. 그렇다면 왜 배포가 잘 되지 않았을까? 고민을 하며 docke..
-
[알고리즘 팁] x=y 대칭되는 값들을 찾아보자!알고리즘 2024. 3. 6. 17:02
알고리즘을 풀다보면 x=y 대칭되는 값들을 얻어야 했었는데, 해당 값을 얻기 위한 중간 과정팁을 공유하고자 포스팅합니다 n = int(input()) arr = [ list(map(int,input().split())) for _ in range(n) ] 보통 알고리즘 문제에서 처음에 이런식으로 2차원 배열을 입력 받습니다 4 0 1 2 3 4 0 5 6 7 1 0 2 3 4 5 0 이렇게 받았다고 가정을 해보면 저희는 zip 메소드를 사용해서 구해보겠습니다. 참고로 내장함수 zip 메소드는 데이터 개수가 같은 자료형 여러 개를, 같은 인덱스의 데이터끼리 튜플(tuple)로 결합해 주는 함수입니다. 리스트 응용 사례를 보여드리면, 아래와 같이 출력됩니다. fruit = ['사과', '바나나', '파인애플..
-
무한스크롤 도입Health-Genie 2024. 3. 2. 11:31
기존에는 트레이너 프로필 조회하는 기능을 offset을 통한 페이징 처리를 하였습니다. 하지만 데이터 양이 많을때 offset 방식의 문제점은 아래와 같이 존재 하였습니다 - 맨뒤의 페이지는 모든 데이터를 조회한 후에 마지막 페이지를 조회하기 때문에 뒤로 갈수록 조회가 느려집니다. thalals님의 자료를 보면 특정 페이지의 데이터를 읽을 때와 맨 뒤의 페이지를 읽을 때 성능 차이를 알 수 있습니다. offset 방식 [ 7만건의 데이터 중 ] - 첫번째 페이지를 읽을 때 : 0.738 - 마지막 페이지를 읽을 때 : 2785.614 -> 0.984 [ 모든 데이터 조회 -> 특정 페이지 조회 ] no offset 방식 [ 7만건의 데이터 중 ] - 첫번째 페이지를 읽을 때 : 0.032 - 마지막 페이..
-
[1] OAuth심층분석 2024. 2. 26. 15:43
OAuth OAuth는 결국 구글 / 인스타와 같은 다양한 플랫폼의 특정한 사용자가 데이터에 접근하기 위해서 제3자 클라이언트 ( 우리의 서비스 가 사용자의 접근 권한을 위임받을 수 있는 프로토콜이다. 정리하면, 서비스를 이용하는 유저의 타사 플랫폼 정보 접근하기 위해 타사 플랫폼으로부터 위임 받는것이다 OAuth2.0 사용자가 다른 웹 사이트의 자신의 정보를 웹이나 애플리케이션에 접근 권한을 부여할 수 있는 개방형 표준이다. OAuth는 로그인뿐만 아니라 데이터 접근 권한도 포함하기에 "인증" 뿐만 아니라 "인가" 도 포함하고 있다. 구글링을 하다보면 여러 flow를 볼 수 있는데, 개인적으로 용어에 대해서 혼동이 있었다. 그래서 먼저 용어에 대해서 정리를 하겠다. 더보기 용어 [ 용어 정리 ] 1. ..
-
[tnote] 포트넘버 트러블 이슈T-note 2024. 2. 22. 19:11
문제 상황 외부에서 구입한 도메인에 uri로 접속을 할때 포트넘버를 uri에 작성하지 않으면 접속이 되지 않았습니다 ( 예시 : http://{도메인}:8080 ) 이렇게 연결하면 접속이 되었는데 ( 예시 : http://{도메인} ) 이렇게 연결하면 접속이 되지 않았습니다. Postman을 통해서 API 테스트를 진행했을때 접속이 가능했지만, 카카오 로그인 부분은 접속이 불가능했습니다. 처음에는 이유가 포트넘버를 숨기지 않아서 발생했던 문제라고 생각했어서 포트 넘버를 숨겼지만, 에러가 해결되지 않았습니다. 포트 넘버 숨기는게 특별히 문제 해결에 원인이 아니였습니다. ( 중간중간에 무한 로딩이 걸리면 ec2 인스턴스를 중지 했다가 켜보시면 됩니다 ) 문제 원인 스프링의 기본 포트가 80인데, docker..
-
[error] org.hibernate.dialect.MySQL57DialectT-note 2024. 2. 21. 10:50
현재 상황 현재 프로젝트를 진행하는 중에 스프링 부트 버전은 3.2.0 -> 3.2.1 버전으로 업그레이드 했다 버전하고 배포하였는데 ec2에서 아래와 같은 에러가 발생했다. 문제 원인 문제의 원인은 Spring Boot 3.2.1 버전 부터 명시적인 Dialect 설정을 했을 시 발생하게 되는 문제이다. Spring Boot는 JPA Provider가 적절한 Dialect를 찾아내게 하는 책임을 가지도록 하였으나, 이를 명시적으로 지정하게 되면서 발생하게 된 것이다. 따라서 yml을 수정하면 될것 같다 해결 방안 yml 파일에 가서 spring.jpa.database 부분에 명시적으로 설정했는지 확인하고 얘를 지운다. 결과 스프링이 제대로 빌드됩니다