일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코딩교육봉사
- 백준
- softeer
- 스프링
- SW봉사
- 코딩봉사
- SQL
- java
- 코틀린
- MYSQL
- 자바
- 시나공
- 파이썬
- 프로그래머스
- BFS
- C++
- python
- 회고
- 알고리즘
- 소프티어
- CJ UNIT
- 문제풀이
- 백준알고리즘
- programmers
- 백준 알고리즘
- kotlin
- 데이터베이스
- 1과목
- 공부일지
- 정보처리산업기사
- Today
- Total
목록백엔드/이슈, 트러블슈팅 (19)
JIE0025
. ✅ 개요 이전에 아래와 같은 상황이 발생했었는데... https://jie0025.tistory.com/618 한 트랜잭션에서 동일한 데이터를 조회하면? (MyBatis의 캐싱전략과 localCacheScope 설정하기)✅ 가정 학생이 존재한다. 학생은 학년별로 성적표를 출력할 수 있다. 학년당 2학기가 존재하고, 성적표 또한 학기별로 출력된다. 위의 이미지는 2학년 성적표를 조회하는 상황이다. 1학기, 2학jie0025.tistory.com 정리하자면 한 요청상황에서 (동일 트랜잭션) 파라미터까지 똑같은 쿼리를 할 경우MyBatis 는 내부 캐싱을 사용하고,이에 따라 쿼리와 쿼리사이에서 해당 엔티티의 값이 변경될 경우이후 쿼리 상황에서 바뀐 값으로 출력된다. 이 문제가 Local에서만..
✅ 가정 학생이 존재한다.학생은 학년별로 성적표를 출력할 수 있다.학년당 2학기가 존재하고, 성적표 또한 학기별로 출력된다. 위의 이미지는 2학년 성적표를 조회하는 상황이다. 1학기, 2학기 성적표를 둘다 체크하여 한번에 요청하면한번에 성적표 2개가 보인다. * 1학기 성적표 한개만 체크하면 성적표 1개만 보인다. ✅ 상황한번에 2학년 1학기, 2학기를 성적표를 조회하는 과정은 한 트랜잭션에서 일어난다. 💻 수도코드성적표 객체 생성출력해야하는 개수만큼 반복 학생을 조회한다. 학생의 개인정보가 존재한다면 복호화한다. 해당 학기에 무슨 과목을 들었는지 리스트 생성 Database에서 학생의 성적데이터를 가져오는..
✅ 개요클론 프로젝트의 첫 배포 당시, 빌드를 실패했었고 이번에 새로 배포를 하면서 이 문제를 아주 간단한 방법으로 해결했다. 상황은 다음과 같다. 📆 2월 배포 상황t2-micro 프리티어를 사용했다. 빌드 중 58% --> ASCIIDOC 빌드에서 fail이 났다. 당시에뭐가 문제인지 알지 못해서 프리티어 사용을 포기하고 t2-small로 업데이트 해봤는데, 빌드가 성공했다. 프리티어를 사용하지 않아서 발생하는 요금이 생각보다 커서, EC2 인스턴스를 제거해버렸다. 결국 t2-micro와 t2-small의 차이점에서 발생하는 성능상 이점 때문에 가능했다고 판단만 해둔 상태>> t2-micro의 RAM은 1GB이다 >> t2-small의 RAM은 2GB이다 📆 6월 재배포 상황 재배포하는 상황에서도 5..
이 글에서 도출된 결론은 제가 마주한 개발 상황에서 겪은 과정에 따른 것이며 개발 상황에 따라 달라질 수 있습니다. ✅ 선행 개념 당연히 보이어무어의 동작원리를 알고 와야한다. 보이어무어는 2가지 작동방식이 존재하고, 아래 2개의 링크를 첨부한다. 추가적으로 KMP와 함께 성능을 비교했고, 어떤점이 다른지 명확히 이해하고 싶다면 KMP알고리즘도 확인하자 1️⃣ Boyer Moore - 나쁜 문자 이동 방식 https://jie0025.tistory.com/537 [문자열 매칭] 보이어무어(Boyer-Moore) - Bad Character Heuristic ✅ 개요 어제 문자열 매칭 알고리즘 중 KMP에 대해 알아보았다. [알고리즘] 문자열 매칭 KMP (동작방식,수도코드) ✅ 개요 문자열 매칭 알고..
✅ 개요 대체 왜 우리 서비스의 ELB 도메인에 접속하면 이런 링크가 뜨는걸까? 라는 생각을 지속적으로 해왔다. 왜 401이지 ? 그냥 접속해서 그런가? 두번째로 궁금했던건 로드밸런서의 대상그룹을 통해 EC2 애플리케이션에 연결되는데 이 애플리케이션에서 상태 또한 unhealthy 한 상태라고 보여주고 있었다. 둘다 401을 반환하기 때문에 비슷한 이슈로 묶을 수 있을것이라 생각했었다. 그리고 오늘 이 unhealthy 이슈에 대해 해결방법을 찾아보았고, 조만간 처리할 목적으로 이 글을 적는다. ✅ health Check란? ELB가 여러대의 서버로 요청을 분산할 수 있는데, 이때 서버가 정상적으로 활동중인지 확인하기 위해 Health Check과정이 일어난다. 🤔 서버가 정상적인지 확인하는 이유는? E..
✅ 개요 친구가 에러를 만났는데 도통 해결할 수 없다해서 도움을 요청했다. 나도 처음 만나본 에러메세지였는데 해결 방법을 떠올리는 과정에서 역시 어떤 기술을 공부할때엔 동작원리부터 공부해야한다는 것을 다시 한번 느끼게 되어서 이 글을 작성한다. ✅ 에러메세지 Hibernate: select b1_0.id, b1_0.created_at, b1_0.post_content, b1_0.post_image, b1_0.post_purpose, b1_0.post_title, b1_0.user_id from board b1_0 2023-04-26T00:39:40.857+09:00 ERROR 9968 --- [nio-8080-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servl..
✅ 목적 특정 키워드를 검색하기 위해 DB에 데이터를 조회하게 되면 LIKE %keyword% 이런식으로 접근하는데.... 게시물 본문과 같은 경우 글이 너무 많은 경우 그 안에서 키워드를 찾기란 쉽지 않다. 이런 경우에 검색 성능을 높이기 위해 고려할 수 있는것들이 존재한다. 쿼리 최적화와 더불어 인덱싱을 사용함으로써 성능개선에 도전해보게 되었다. ✅ 어떤 상황이었는가? (이전 설계의 상태 : ERD와 MySQL) 게시글(BulletinPost)와 장소(Amenity)는 뗄레야 뗄 수 없는 관계이다. ⏺ ERD BulletinPost와 Amenity는 다음과 같은 관계이다. 게시글 1개는 장소 1개를 가질수 있다. 장소 1개는 게시글 N개에 태그될 수 있다. ⏺ 요청 해당 API가 사용되기까지 과정은..
DTO를 생성하는 방법은 2가지가 있다. 1. 모든 요청/응답에 대한 파일을 분리하여 생성하는 방법 2. 한개의 파일을 정의하고, 내부클래스로 생성하는 방법 오늘 이야기할 DTO에서 추상클래스를 정의하는 것은 2번 한개의 파일을 정의하고, 내부클래스로 생성하는 방법에서 해당되는 이야기이니 참고 바란다)) ✅ 개요장소(Amenity) 데이터의 입력이 게시글(BulletinPost)작성시 Body로 들어오도록 설계되었다. 따라서 입력 데이터 역시 BulletinPostDto내부에 들어오게 되는데, 이때 Create와 Patch 클래스의 내부 필드가 유사함에 따라 DTO에 추상클래스를 만들어보는것에 대한 쟁점이 생겼다. ⏺ 원래 DTOpublic class BulletinPostDto { private sta..
✅ 이메일 전송 구현 이메일 전송에 사용가능한 서비스는 여러가지가 있다. 대표적으로는 AWS Email Service도 존재하지만 이번 마이버디 프로젝트에서는 Spring boot 내부의 SMTP를 도입하였다. ✅ Why SMTP ? 왜 Spring boot의 SMTP를 사용했는가? 내부 SMTP는 애플리케이션에서 이메일을 보낼 수 있는 가장 간단한 방법이다. Spring boot에서는 JavaMailSender인터페이스가 존재한다. 이 인터페이스를 통해 이메일 전송에 기본적인 설정이 되어 있고, SMTP 서버를 통해 이메일이 전송된다. SMTP의 장점 1. 안정성 : 이메일 전송을 위한 표준 프로토콜이라서 안정성이 높다. 2. 보안 : 이메일 전송에 TLS/SSL과 같은암호화 기술을 적용이 가능, 데이..
✅ 의문 FE가 API 요청 응답 기능테스트를 진행하며 발생하는 로그를 확인했는데, GET '/api/v1/amenities?state=%EA%B2%BD%EA%B8%B0 이렇게 로그가 찍힌걸 확인되었다. POSTMAN으로 테스트했을 때에도 나는한글로 GET '/api/v1/amenities?state=경기 이렇게 보냈었기 떄문에 로그에서도 한글로 나올 줄 알았는데, 전혀 다른 문자열이 들어오고 있어서 잘 들어오고 있는게 맞는지 체크가 필요했다. 알아보니 해당 문자열은 한글이 인코딩된 값이었다. ✅ 인코딩 ?URL 인코딩, URL 디코딩은 컴퓨터에 여러 언어를 사용하다보니 생긴 문제를 해결하기 위해서 나온 것 인코딩된 값을 통해 컴퓨터가 더 명확히, 편하게 읽는다고 한다. param으로 한글을 보내고 있는..