
경력직 공고에 쌩신입으로 지원하여 서류를 통과하고, 프리인터뷰와 1차 실무 면접까지 진행했다.사실 서류 통과조차 기대하지 않았기에, 그 자체로 신기하고 감사한 경험이었다. 지원서를 낸 건 2월 초였고, 결과는 4월 24일에 받았다. 약 3개월 가까이의 기다림 끝에 결국 탈락 통보를 받았지만,그 시간을 헛되이 보내지 않았다. 긴장 속에서 CS, 기술 복기 등을 꾸준히 하며 스스로 많이 성장했음을 느낄 수 있었다. 이번 회고에서는 그 경험을 바탕으로 얻은 교훈과 앞으로의 계획을 정리하고자 한다. 1. 한 곳에만 집중한 것의 아쉬움네이버웹툰에 너무 마음이 쏠려 다른 기회를 놓쳤다. 서류 합격과 면접 경험에 들떠, 중요한 공고들을 제대로 챙기지 못하고 면접 준비에만 집중했다. 물론 그 준비가 헛된 건 아니었지만..

개발을 하면서, 효율적인 SQL을 작성하기에 앞서 SQL 에 대해 더 친근해지고자!!예전에 프로그래머스에 있는 SQL 문제를 모두 풀었습니다.저만 알기보다, 각 게시글을 Lv 1에서 5까지하여 모든 문제의 답을 공유하고자합니다.(참고로 기본적인 데이터베이스 지식과 함께 SQL을 공부한다면,따로 SQLD를 학습하지 않아도 쉽게 따실 수 있습니다!! 따로 준비 안하고 땄습니듯! ) 상품을 구매한 회원 비율 구하기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT DATE_FORMAT(O.SALES_DATE, '%Y') AS YEAR, DATE_FORMAT(O.SALES_DATE, '..

개발을 하면서, 효율적인 SQL을 작성하기에 앞서 SQL 에 대해 더 친근해지고자!!예전에 프로그래머스에 있는 SQL 문제를 모두 풀었습니다.저만 알기보다, 각 게시글을 Lv 1에서 5까지하여 모든 문제의 답을 공유하고자합니다.(참고로 기본적인 데이터베이스 지식과 함께 SQL을 공부한다면,따로 SQLD를 학습하지 않아도 쉽게 따실 수 있습니다!! 따로 준비 안하고 땄습니듯! ) 보호소에서 중성화한 동물 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAMEFROM ANIMAL_INS AS IJOIN ANIMAL_OUTS AS OUSING..

반가워요 SQL!개발을 하면서, 효율적인 SQL을 작성하기에 앞서 SQL 에 대해 더 친근해지고자!!예전에 프로그래머스에 있는 SQL 문제를 모두 풀었습니다.저만 알기보다, 각 게시글을 Lv 1에서 5까지하여 모든 문제의 답을 공유하고자합니다.(참고로 기본적인 데이터베이스 지식과 함께 SQL을 공부한다면,따로 SQLD를 학습하지 않아도 쉽게 따실 수 있습니다!! 따로 준비 안하고 땄습니듯! ) 없어진 기록 찾기 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr SELECT O.ANIMAL_ID, O.NAME FROM ANIMAL_OUTS AS O LEFT JOIN ANIMAL_INS AS ION I.A..

문제상황프로젝트에서 하나, 둘 씩 테스트가 늘어가며 문제점이 발생!1분 이하였던 테스트들이 4분을 넘어가기 시작했다.(실제로는 실행시간에 포함되지 않는 과정까지 영상으로 확인했을때 5분 정도 되었다) 테스트는 기능을 추가하고 수정하며 빠른 피드백을 얻기 위함이었는데깃허브 액션 환경에서는 20분이 걸리기도하고.. 여러모로 협업 효율을 낮춘다고 생각이 들었다.개선 해봐야지라는 생각으로 로그를 살펴봤다. 크게 보이는 문제는 2가지였는데첫번째는 각 테스트마다의 컨텍스트 빌드에 시간이 많이 걸린다는 점 그리고 두번째는 데이터베이스의 쿼리문이 테스트 시간의 대부분을 차지한다는 점이었다. 1. 컨텍스트 환경 통합시키기 이전에 Mockbean을 사용하며, 테스트 환경 캐싱으로 인한 충돌로 테스트가 실패를 했던 경험이..

알아두기 - HTTP와 웹소켓의 인증과정에서의 차이점HTTP 통신은 요청-응답 패러다임에 기반을 두고 있으며, 각 요청 후 연결이 종료됩니다. 따라서 매 요청 마다 새롭게 AccessToken을 검증해야 합니다. 이를 두고 Stateless 라고 합니다. 반면, 웹소켓은 최초 연결시에만 HTTP 요청을 사용하며, 연결이 맺어진 후에는 지속적인 데이터 교환을 제공하기에 추가적인 AccessToken 검증이 불필요해지게 됩니다. 이를 두고 Stateful이라고 하며, 웹소켓이 연결된 동안 인증과 관련된 정보를 웹소켓 세션에 유지 시켜 활용할 수 있게 됩니다. Overview - 채팅 인증 절차위 그림을 크게 두 가지 요청으로 나누어 설명드리겠습니다!CONNECT 요청 - 연결 요청 가장 먼저 웹소켓 연결 요..

💥 기존 : 초기에 개발되어 있던 형태 매칭 로직 동작에 걸렸던 시간 : 513초처음엔 프로젝트 마감 시간에 쫓겨, 평범하고 빠르게 만들었습니다. 만들고 나서 300명을 대상으로 테스트 했더니, 예상보다 성능이 너무 안나왔고 완성된 코드에서도 만족스럽지 않았습니다.저희 앱은 이전 회차의 매칭이 마감되고 다시 신청자들을 매칭 시키는데 2시간이라는 은행 점검시간 개념의 매칭 점검 시간을 갖습니다.팀 내에서는 점검 시간이 있기 때문에 매칭 로직이 조금 느려도 상관없다고 했지만, 저는 이것이 프로젝트의 장기적인 지속을 위해, 더 나은 방법이 있을지 항상 고민했습니다.그래서 조금 더 시간을 내어, 알고리즘의 병목 지점을 식별하고, 데이터 처리 방식을 최적화하여, 제가 할 수 있는 범위 안에서 성능을 향상시킬 ..
개요데이터베이스 시스템에서는 다수의 테이블 간 복잡한 의존성이 존재하며, 이러한 의존성은 데이터 삭제 시 정확한 순서를 요구합니다. 이 문서에서는 Spring Framework와 JPA를 활용하여 데이터베이스의 의존성을 자동으로 관리하고, 일괄적으로 데이터를 삭제하는 방법을 설명하고자합니다.문제 정의프로젝트의 데이터베이스에서 여러 엔티티 간에 복잡한 참조 관계가 존재할 경우, 단순한 순차적 삭제 작업(deleteAll())은 외래 키 제약조건으로 인해 실패한 적이 있었습니다.예를 들어, memberInfoRepository, memberRepository, memberImageRepository, boardRepository와 같이 서로 참조하는 테이블들의 데이터를 삭제할 때, 참조 순서에 맞지 않으면 ..