개발자 기록22 [쿠링] Multi thread를 활용한 공지 조회속도 개선 (feat 동기화) 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 도입 배경쿠링에서는 학교의 전체 공지를 주기적으로 scrap해와야 한다.하지만 이를 동기 처리 하다 보니 특정 학과의 scrap 속도가 늦어지면, 자연스럽게 전체 작업 속도가 늦어지는 문제가 발생하였다. 문제는 학교의 API를 사용하는 방식이 아니라, 직접 scrap을 통해 정보를 긁어오는 형식이기 때문에 주기적으로 신규 공지를 확인해줘야 하는데, 단일 코어상의 싱글 스레드로 처리하기에는 작업이 너무나 오래 걸렸다. 내가 생각한 공지 확인 간격보다, 한번 업데이트하는 시간이 더 길어지는 문제가 발생한 것이다!나는 이를 해결하기 위해 Multi Thread를 도입한 비동기 처리를 해야겠다 생각하게 되었다! 2. 사전에 예상되는 문제.. BackEnd/쿠링 2023. 4. 28. [쿠링] 형상관리를 위한 Flyway 도입기 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 도입 배경 이번 쿠링 전 학과별 공지 지원 과정에서 기존의 Notice 테이블이 아닌, DepartmentNotice가 추가적을 발생하게 되었다. 새로운 테이블을 기존의 Notice테이블에 Dtype으로 구분하기 시작하면서, 추가된 속성들이 있고, 새로운 값들이 추가되었다. 물론 나야 내가 변경했으니 해당 의미들 을 빠르게 파악 가능하지만, 과연 다른 이가 봐도 이를 빠르게 이해할 수 있을까? 란 의문이 들었다. 또한 서로 다른 환경(local, test, prod)간에 통일된 스키마를 가지기 위해서 많은 리소스가 사용된다. 그러한 과정 속에서 다음 3가지 목표가 생기게 되었다. 업데이트마다 운영 DDL과 개발 DDL을 하나하나 .. BackEnd/쿠링 2023. 3. 31. [TIL] 일일 회고 2023/01/15 (짧은 2022회고 포함) 요즘 한 일 아 요즘 한일이 너무너무 많다 ㅋㅋㅋㅋ 1. 백기선님의 리팩토링 강의 완강 예전에 구매하고 다 듣지 못했던 기선님의 강의를 완강하게 되었다!! 기선님이 좋은 이야기를 많이 해주셨지만, 사실상 새롭게 알게 된 내용은 딱 3개 정도였다? 개발을 시작하지 얼마 안 됐을 때, 이 강자를 들었다면 모르는 내용이 많았겠지만, 2년 넘게 하다보니 어느덧 지나간 경험들이나 다른 책으로부터 채화된 내용들이었다. 여하튼, 연초부터 TODO list에서 하나 완료해서 너무 기쁘다!! 2. Nexters 앱 개발! 요즘 22기로 활동 중인 Nexters에서 Nexters 동아리를 대표할 출석체크 앱을 만들게 되었다!! 넥터에서의 첫 프로젝트이지만, 온 힘을 다해서 기간 안에 성공적으로 출석체크 기능을 만들어야겠다.. Life/회고록 2023. 1. 15. [유스콘] 유스콘 2022 후기 후 신청자가 200명이 넘어서 추첨으로 된 것 같다. 다행히 이번에는 당첨돼서 참여할 수 있었다. 같이 할수 있었던, Ader, 후 에게도 감사의 말을 전하고 싶다! 1. 진행 세션 이번 세션에서 기술 세션들에 관심이 많았다. 민규님의 introduce to clean Architecture를 시작으로 Java 17 vs Kotlin 1.7 Unit Test Puzzler 토비의 스프링 같이 읽기 Flyway 순으로 들을 생각이었다. 다만 중간에 망나니 개발자 님과 소통하는 시간이 잡혀서 Unit Test Puzzler은 듣지 못하게 되어 조금 아쉽다. 대신 ㅎㅎ 망나니 개발자 님과 대화를 나눌 수 있어서 좋았던 시간이다. 2. 한줄 세션 후기 기술 내용 정리보다는 기억에 남는 한 줄 요약! 들으면서 타.. Life/컨퍼런스 2023. 1. 1. [OS] Process Synchronization - 3 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 이번 시간에는 Process 동기화와 관련된 고전적인 3가지 문제에 대하여 학습해보자! 3. Bounded-Buffer-Problem (Producer-Consumer Problem) 생상자, 소비자 문제에 대하여 알아보자. 공유 데이터 buffer 자체 및 buffer 조작 변수 (empty / full buffer의 시작 위치) Producer (생산자) 생산자는 여러개가 있을 수 있다. 하는 역할은 공유 Buffer에 데이터를 삽입하는 역할을 한다. Empty 버퍼가 있는지 확인한다. (없으면 기다림) 공유 데이터에 lock을 건다. Empty 버퍼에 데이터를 입력하고 버퍼를 조작한다. lock을 푼다. Full 버퍼가 하나 증가.. CS/OS (2022-1) 2022. 11. 28. [TIL] 일일 회고 2022/11/21 계속 회고를 저녁에 쓰려하니 까먹게 되는 것 같아 아침에 작성해본다! 요즘 한 일 1. 프로젝트 중간 마감 술술 이라는 이름의 지역 기반 애플리케이션을 만드는 중인데, 중간 점검 겸 간단하게 의견도 나누고, 지금까지 만든 상황을 기반으로 짧은 영상을 만들었다. 아직 많이 부족 하기는 한데... 대략 한 20% 정도 구현된 느낌?? 생각보다 아직도 구현할 사항들이 많다. 어찌됬던 팀원들과 최종 마감일을 정해두었기 때문에 일단 무조건 구현하고(테스트는 병행하고 있음) 추후 다시 부족했거나, slow query 부분들을 개선해 나가야 할 것 같다. 앞으로 일주일간 더 프로젝트에 힘을 집중하여, 일주일안에 기능 구현은 거의 마무리 하려 한다!! 2. 운영체제 복습 시작 사실 운영체제 자체를 처음 학습하는 것은 .. Life/회고록 2022. 11. 21. [TIL] 일일 회고 2022/11/10 최근 회고할 점들을 모아서 작성해볼까 한다. 요즘 한 일 1. 코드스쿼드 코코아 멘토 2주의 끝 멘토 기간이 총 4주로, 2주씩 2번 진행하는데, 이번을 마지막으로 다음 주부터는 담당하는 멤버들이 바뀌게 된다 ㅠ,ㅠ 어느덧 나름(?) 정들었던 3, 4조....(설마 나만?)를 떠나보내려니 아쉬운 마음이 가득하다... 특히나 마지막날 3조와 인사하지 못하고 끝나버린 점이 매우 아쉽다...... 2주간 정말 모두 수고 많으셨고, 나머지 2주도 하던 페이스 그대로 유지만 하셔도 엄청 성장하실 분들이다! 아! "로이"가 내 블로그를 홍보해주셨는뎈ㅋㅋㅋㅋ 아 진짜 부끄럽습니다 ㅋㅋㅋㅋㅋ 이게 뭐랄까 잘못된건 아닌데 그...? 약간 발가 벗겨지는 듯한? 그런 느낌적인 느낌 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 그리고 "파이"가.. Life/회고록 2022. 11. 10. [TIL] 일일 회고 2022/09/13 요즘 한 일 1. JPA 오류 해결하기 수정중이던 Issue Tracker에서 문제가 발생하는 부분이 있었다. 해당 부분을 수정하면서 JPA의 지연로딩에 대하여 다시한번 경각심을 가지게 되었다. https://blogshine.tistory.com/548 HTML 삽입 미리보기할 수 없는 소스 Issue 와 Comment 는 1:N의 관계이다. 따라서 Comment의 코드를 보면 다음과 같이 Lazy 로딩이 걸려있다. ▶ Comment @Getter @Enti.." data-og-host="blogshine.tistory.com" data-og-source-url="https://blogshine.tistory.com/548" data-og-url="https://blogshine.tistory.com/.. Life/회고록 2022. 9. 13. [TIL] 일일 회고 2022/08/31 요즘 한 일 1. 인프콘2022 참여 지난주 금요일에 인프콘2022에 갔다왔다. 간만에 코엑스에서 열리는 대규모 컨퍼런스였다. https://blogshine.tistory.com/534 [인프콘] INFCON 2022 후기 1. 참석 전 가서 뭘 들을지 많이 고민했었던 것 같다. 순서는 일단 다음과 같이 정하긴 했었다. 13:45 105호 (이력서) 14:40 102호 (테스트 코드) 15:35 103호 (코드 리뷰 전략) 16:10 103호 (aws 아키텍처 진화) blogshine.tistory.com 사실 나같은 경우 인프콘에 당첨되지 못했었는데.... 어찌저찌 양도를 받아서 겨우 참여할수 있게 되었다. 컨퍼런스에 가서 여러 연사분들의 강의도 듣고, 상품도 얻었으며 2022 현재 대한민국에 개발에.. Life/회고록 2022. 8. 31. [TIL] 일일 회고 2022/08/12 요즘 한 일 1. 리뷰 정리 https://blogshine.tistory.com/502 [Review] ATDD 4주차 1차 PR 최홍준 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) 인수테스트 작성과 문서 작성 우선 ATDD 사이클에 의하여 인수테스트 작성 RestDocs 작성 순서로 진행하게 되었습니다. 다만 인수테스트 blogshine.tistory.com https://blogshine.tistory.com/508 [Review] ATDD 4주차 2차 PR 최홍준 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 리뷰 정리 1-1) 최단 경로 구하는 로직 원래 Service에서 최단 경로를 구하는 로직은 다음과 같았습니다. public PathResponse findShortestPa.. NEXT STEP/회고록 2022. 8. 12. [Review] ATDD 4주차 1차 PR 최홍준 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) 인수테스트 작성과 문서 작성 우선 ATDD 사이클에 의하여 인수테스트 작성 RestDocs 작성 순서로 진행하게 되었습니다. 다만 인수테스트를 작성했을때 최단 시간으로 경로를 찾는 인수테스트가 통과를 하지는 못하는 상황 이였습니다. @DisplayName("두 역의 최단 시간 경로를 조회한다.") @Test void findPathByTime() { // when ExtractableResponse response = 두_역의_최단_시간_경로_조회를_요청(교대역, 양재역); // then assertThat(response.jsonPath().getList("stations.id", Long.class)).containsExactly(교.. NEXT STEP/Review 정리 2022. 8. 8. [TIL] 일일 회고 2022/08/06 요즘 한 일 1. 리뷰 정리 https://blogshine.tistory.com/492 [Review] ATDD 3주차 2차 PR 권승철 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) 공통의 테스트를 만들었어야 하는가? 미션중 TokenAuthenticationInterceptor와 UsernamePasswordAuthenticationFilter 를 추상화 하는 단계에서는,.. blogshine.tistory.com https://blogshine.tistory.com/496 [Review] ATDD 3주차 3차 PR 권승철 리뷰어 님께 감사의 말을 전하고 싶다!! 1. 질문 1-1) Bearer 인증방식에서 권한이 없을 경우 public abstract class Authenticat.. NEXT STEP/회고록 2022. 8. 6. 이전 1 2 다음