본문 바로가기

Weekly I Learnd

[W.I.L]CommandLineRunner, ApplictionRunner 작업을 호출하지 않고 모든 로직을 수행하는 어플리케이션을 만들기 위해서 공부하다가 알게 되었다. application실행 시에 동작을 할 수 있는 것이 ApplictionRunner와 CommandLineRunner 두가지가 있다. 차이점은 ApplicationRunner는 단순 인자의 스트링 배열을 포함한 추상화한 ApplicationArguments 타입의 객체가 Run()메소드의 인자로 넘어오고 CommandLineRunner는 기본적인 Array 형태로 argument가 Run()메소드의 인자로 넘어온다. CommandLineRunner란? 특정 Bean을 Application 실행 후 실행하도록 하는 인터페이스이다. 이는 ApplicationRunner도 같다. 클래스로 구현해서 사용해야 한다...
[W.I.L]ThreadPoolExecutor ThreadPool 이란? 생성 가능한 최대 스레드의 갯수를 정해 놓고 작업 큐에 저장 되는 작업들을 하나씩 쓰레드 풀에 존재하는 쓰레드가 처리하도록 하는 방법이다 . 직접 쓰레드를 관리하고 싶다면 ThreadPoolExecutor 클래스의 인스턴스를 생성자로 생성하여 사용하면 된다. ThreadPoolExecutor는 생성자를 사용하여 corePoolExecutor, maximumPoolSize, keepAliveTime, workQueue등을 설정할 수 있다. 생성된 쓰레드들은 main 쓰레드가 종료 되더라도 작업을 마칠 때 까지 Runnable 상태에 남아 있게 된다. 따라서 프로세스를 종료 시키려면 쓰레드 풀의 쓰레드 들이 모두 Terminated 상태가 되도록 유도 해야 한다. ThreadPoo..
[WIL] test code /spring webflux /가짜 중복,진짜 중복 [test code 하면서 겪은 생각] 처음에 테스트 코드를 작성할 때 1. 서비스 로직에서 예외처리가 되어 있는 부분과 데이터 입력이 잘못 되었을 때 생길 수 있는 부분이 잘 작동하는지 위주로 작성 2. 각 클래스별로 해당 되는 메소드로 테스트 코드 작성 이렇게 생각하고 테스트 코드를 작성했다. 테스트 코드를 작성하면서 같은 예외처리인데 중복되는 부분이 있는 것을 보고 궁금해졌다. 1. 그저 데이터를 찾아오는 부분인데 메소드로 정리해야할까? 2. 추가적인 기능들을 구현하면 같은 예외처리를 하는 코드가 여러 군데에서 중복이 되기도 할텐데 메세지를 변경해야하는 상황이 오게 되면 하나하나 수정하는게 불편할 수 있으니 그럼 차라리 처음에 만들때 메소드로 만들어야하지 않을까? 고민을 하다가 앞으로 계속 기능을 ..
[W.I.L] 개인공부 [기간] 6/21 ~ 6/26 [한 일] Jwt, 운영체제 느낀점 - 나는 누구, 여긴 어디... [운영체제]운영체제 개념 및 컴퓨터 시스템 구조 운영체제 : 컴퓨터 시스템의 자원을 효율적으로 관리 (프로세서, 기억장치, 입출력 장치) -한정된 cpu를 가지고 메모리 공간을 적절히 분배 커널 - 메모리에 상주하는 부분 광의의 운영체제 - 메모 leaphigher20.tistory.com [운영체제] 시스템 구조 동기식 입출력은 1개의 요청이 다 끝날 때 까지 다른 작업을 하지 않고 기다리는 것 작동방식 1) 1개의 요청이 다 끝날때 까지 다른 작업을 하지 않는다 2) 1개의 요청을 하고 CPU를 사용하지 않을 leaphigher20.tistory.com
[W.I.L] 15주차 모의면접 주차(feat. 항해99 마지막 주차) 기간 : 5 / 28 ~ 6 / 4 목표 : 실전 면접을 위한 준비 (모의 면접) 느낀점 : 처음으로 이력서와 자소서 포트폴리오를 준비하느라 재미있었다. 처음으로 작성을 하다 보니 어떻게 작성을 해야 할지 몰라서 방향을 잡는데 시간이 많이 걸렸다. 모의 면접을 준비하면서 개발 기간이 짧아서 내가 사용한 코드들과 기능들에 대한 싶은 이해도가 없이 사용 했다는 것을 깨달았다. 나름 공부를 많이 한다고 했는데 내가 사용하는 언어인 자바에 대한 이해도가 많이 부족함을 느꼈다... 그래도 모르는걸 알아간다는 건 재미가 있다 알아야 할게 산더미라는게 문제이기는 하지만ㅎㅎ 이번에 항해를 하면서 시간이 어떻게 흘러가는지 모르게 하루 하루를 보냈던 것 같다. 처음에 파이썬으로 프로젝트를 하면서 첫 팀플을 경험해 봤고 그..
[W.I.L]13주차 (실전프로젝트 5주차)(feat.항해99) 이번주 목표 : 유저 피드백 반영 및 업데이트 나의 목표 : 유저 트래픽 증가를 고려하여 부하분산에 대비하여 준비 [일정] 5/24 5/25일 - 5/26일 - '핵클'과 '이큐브랩'의 협력사 발표가 진행 5/27일 - 리허설 준비 5/28일 - 05/28 14:00~14:30 : 자가리허설 (마이크 테스트 등) - 05/28 15:00~17:00 : 협력사 초청 발표회 - 05/28 ~23:59 : 발표영상 + 발표자료 최종제출 5/29일 -취업준비 특강 w/산타토익 박현준 튜터님 강의 -토스 개발자 김동석님 특강 지난주에 많이 고민 했던 일대일 채팅 구현을 끝내고 엔진엑스로 적용을 시키는데 에러가 upstream http? 이런 에러가 났었다 알고 보니 엔진엑스가 중간에서 요청을 전달을 해주는 역할을..
[W.I.L]12주차 (실전프로젝트 4주차)(feat.항해99) 이번주 목표 : 채팅 기능 완성하기 / 배포 신청하기 이번주는 일단 모든 목표를 달성 했다 우선, 채팅은 websocket으로 채팅을 구현했고 ws에 연결이 되면 두 유저가 서로를 구독하게 만들어서 서로 채팅을 할 수 있도록 구현을 했다. 너무 길고 오랜 과정이었다... 소켓을 연결시켜 두 유저를 구독하게 만들고 두 유저가 보내는 채팅 내용을 채팅방에 띄워주는 기능을 구현하는 로직을 짜는데 어려웠고 많은 시간이 걸렸다.. 아직 완벽하게 이해하진 못해서 계속 공부 중이다. 배포 신청은 했는데 아직 결과는 나오지 않았다. 배포 신청을 하고 매일 진행 상황을 보고 있는데 우리가 원하는 시간 내에 나오지 않을 수 있을 것 같아서 아마도 apk를 구워서 따로 마케팅을 해야 하지 않을까 싶다. 월요일에는 본격적으로..
[W.I.L]11주차 (실전프로젝트 3주차)(feat.항해99) 이번주 목표 : nginx 적용하기 / 1차 스콥 만들어서 배포 느낀점 : 무중단 배포 공부를 시작했다. 서버 코드를 수정후 다시 서버를 올리는데 시간이 걸리는데 개발만 할때는 상관이 없는데 유저가 생기면 유저가 서비스를 사용하는 도중에 서비스를 업데이트를 해야 하면 서버를 껐다 켜야 하는데 그 사이에 유저가 사용하는데 불편함을 느낄 수 있어서 시간이 오래 걸리지 않게 할 수 있는 방법이 뭐가 있을까 하다가 nginx를 알게 되었다. 환경설정과 스크립트 작성과 터미널 명령어 등 생소하고 낯설은 내용들을 많이 접했다. 하지만 이번에는 새로운 문제들을 접하면서 내가 꼭 해결해내고 싶다는 생각이 들었다. 새롭고 낯설었지만 재미있었다. 우리가 하고 있는 서비스에 적용을 시키기까지 많은 에러들을 겪었지만 에러들을..