본문 바로가기

Develop Study161

(24.08.28) 코딩테스트 알고리즘 정리(구현:누적합,유클리드,에라토스테네스의체, 구간탐색:이분탐색,슬라이딩윈도우, Greedy:동전교환 알고리즘) 이전까지는 거의 코드 카타를 맨땅에 헤딩하듯이 풀어서다시 살펴보니, 간단하게 알고리즘으로 풀수 있는 로직을 굳이 O(N^2) 시간 복잡도로 하나씩 대조하거나 하는 식의 로직이 많았기 때문에,필수 알고리즘 기초부터 다시 정리를 하기 시작했다. 검색을 통해 정리를 하고, 스스로 코드를 적으면서 정리를 한 뒤, 응용된 문제들을 푸는 방식으로 진행을 해야여러 알고리즘이 섞인 코딩테스트 문제도 해결할 수 있을 것이라고 판단해서 블로그 TIL과 Notion에 정리를 하도록 한다.  누적합 Prefix Sum더보기특정 배열 등의 자료 구조 구간의 누적된 합, 즉 계속 지속적으로 더하는 알고리즘배열의 여러 구간에 대해 부분합을 빠르게 계산“ 이전까지의 누적합을 다음 누적합에 사용한다” 라는 알고리즘이기 때문에 항상 누.. 2024. 8. 28.
(24.08.26) 코딩테스트 - 알고리즘 준비 Sparta Coding Club의 내일배움캠프를 최종 프로젝트를 끝으로 종료가 되어이제부터는 이력서, 포트폴리오 작성과 취업을 취한 대비를 본격적으로 진행을 해야한다. 무조건적으로 내 스스로가 준비를 해야하는 것이기 때문에내배캠에서 잠시 최종 프로젝트를 진행하면서 잠시 멈췄던 Code Kata의 연장선으로 코딩테스트 공부를 시작한다. 알고리즘, 그리고 관련 정보는 블로그, Notion에 정리를 하고,기존에 TIL에 정리를 했던 것들도 다시 한번 살펴보면서 알고리즘 기준으로 정리를 할 계획 관련 코딩테스트관련한 강의와 여러 자료를 찾아보면서 환경 구성과 어떻게 진행을 해야할지 잠시 오늘 정리를 하고,내일부터 본격적으로 코딩테스트에 도전을 할 계획이다. 테스트코드 알고리즘 유형 분석구현 유형특정 알고리즘이.. 2024. 8. 26.
(24.08.13)[18주차] GitHub Actions 환경에서의 CI 테스트코드 이슈 트러블슈팅 프로젝트 작성하면서 테스트코드를 작성하면서 검증을 계속 진행하고 있었지만,기획단이 없이 개발자들끼리 진행한 프로젝트로 인해서,계속 기능에 대해 비지니스 로직의 업데이트 및 수정으로 검증 테스트코드 과정이 조금 딜레이가 된 상태였다. 따라서, GitHub Repository와 Develop 브랜치와 Main 브랜치에 Push 시, GitHub Actions 를 통한 테스트코드 실행의 CI 검증을 구축하려고 하면서 테스트코드에서의 예기치못한 예외 발생 이슈가 발생을 했고, 개인적으로 지금까지의 Java Spring Boot환경에서의 이슈와 다른 결이므로트러블슈팅을 기록  GitHub Actions에서 CI 중에서의 테스트코드 예외발생 이슈 해당 관련해서 GitHub Actions 중 Step중에서 Gradl.. 2024. 8. 13.
(24.08.12)[18주차] AWS 의 CloudWatch를 통한 Monitoring & Logging CI/CD 파이프라인에 있어서 실시간으로 그 과정을 보고 해당 사항을 기록으로 남기기 위한 Monitoring 과 Logging, 그리고 해당 로그를 분석, 추적, 개선하면서 DevOps 환경을 구축하면서최종적으로 서비스 제품의 보증을 완벽하게 구현해 내는 것이 필요하다. 따라서 자동화 CI/CD 환경에서 코드의 품질을 높일 수 있고, 이번 최종 프로젝트 기간 CD의 목표까지 했으나,관련하여 Monitoring과 Logging도 구축 계획을 세우면서 관련하여 정리하고 나름대로 Pipeline에 추가했다. 기존의 파이프라인과 배포환경 모두 AWS의 EC2, RDS, S3를 사용한 것이므로 AWS CloudWatch를 사용해 빠르게 통합할 수 있다. 여러곳에서 공부하고 한번 테스트 해보면서 이론에 대해 먼저.. 2024. 8. 12.
(24.08.09)[17주차] WebSocket과 실시간 메시지 구조 프로젝트를 진행하면서 사용자의 화면단과 서버의 데이터 요청응답이 필요한 기능을 사용이 필요했다.특히, 사용자가 포함된 그룹에서 그룹내 실시간 채팅 기능 구현이 필요해지면서 WebSocket을 사용해서 구현을 했다. 관련해서 코드 구현방향은 해당 담당자의 개발로 진행이 되었지만, 관련해서 내가 부족할 수 있는 이론과 작동 방식에 대해서 한번더 짚고 넘어가기 위해 정리WebSocket웹을 통한 클라이언트(브라우저) - 서버 간 실시간으로 양방향 통신을 가능하게 하는 기술즉, Stateless HTTP 통신과 달리 Stateful 프로토콜클라이언트HTTP가 Request-Response 의 단방향 통신 방식임에 반해 WebSocket을 통해 한번의 연결로 클라이언트-서버 간 지속적인 양방향 통신이 가능따라서,.. 2024. 8. 9.
(24.08.07)[17주차] Spring Batch와 스케쥴링 - 활용 및 정리 (24.08.06)[17주차] Spring Batch와 스케쥴링 이전의 글에서 Spring Batch의 정의와 구성 요소 및 기능, 그리고 Quartz를 사용해서 어떻게 작동시킬 수 있을 지에 대한 내용을 정리를 했다. 하지만, 최신버전의 Spring Boot 에 따라 기존의 Spring Batch에서 많이 사용하는 Factory들이 Deprecated  됨에 따라서 패턴이 달라졌기 때문에, 최신버전의 Spring Batch 5 기준으로 코드를 직접 작성하고, 이를 분석하면서 활용에 대비하도록 한다. Spring Batch 기본 활용환경 설정Gradle Dependency 추가implementation 'org.springframework.boot:spring-boot-starter-batch'(Appl.. 2024. 8. 7.
(24.08.06)[17주차] Spring Batch와 스케쥴링 프로젝트에서 특정 시간마다 코드 챌린지의 순위의 갱신, 그리고 Top 검색어의 30분마다의 갱신의 주기적인 작업이 필요했다. 이로써 본인의 로직은 아니지만, 담당 팀원의 구현으로 Spring Batch 의 스케쥴 기능을 사용함으로 일련의 기능들이 구현을 완성했고, 대용량 데이터 처리에 관련해서 SpringBatch를 사용 하면서 참고할 시간이 없었기에 관련되어 학습하고 정리를 하려고 한다.Spring Batch대량의 데이터를 처리하기 위한 FrameworkSpring Framework 기반의 서브 프로젝트로깅, 트랜잭션 관리, 리소스 관리 기반으로 대규모 데이터를 일괄적으로 반복 처리, 데이터 변환 및 집계, 배치 작업, 주기적인 처리를 안정적으로 자동화 작업 시행복잡한 대용량 및 고성능 일괄 작업을 효.. 2024. 8. 6.