자바 모듈 시스템 모던 자바인 액션을 읽고 정리한 내용과 읽으면서 궁금한 내용들을 작성하였습니다. 자바가 진화해야 한다는 여론으로 모듈시스템을 지원 시작 추론하기 위한 소프트웨어 자바 9에서 가장 많이 거론되는 새로운 기능이 모듈 시스템 그렇다면, 모듈화란 무엇인가, 모듈 시스템은 어떤 문제를 해결할 수 있는가 관심사 분리(SoC) 관심사분리는 컴퓨터 프로그램을 고유의 기능으로 나누는 동작을 권장하는 원칙 → 회계 어플리케이션이 있다면 파싱, 분석, 레포트 기능을 모듈이란 각각의 부분으로 분리 가능 장점 개별 기능을 따로 작업할 수 있으므로 팀이 쉽게 협업 가능 개별 부분을 재사용하기 쉬움 전체 시스템을 쉽게 유지보수 가능 정보 은닉 세부 구현을 숨기도록 장려하는 원칙 → 세부 구현을 숨김으로 프로그램의..
최종 코딩 테스트를 준비하면서 ~ 마칠 때까지의 후기와 당일 코테 회고에 대한 내용을 작성하였습니다. 🐾 최종 코딩 테스트 후기준비 기간최종 코딩테스트 전까지의 시간동안 기존 기수들의 문제를 풀었습니다.1차 결과가 나오기 전에 이미 지하철 노선도와 페어매칭, 다리건너기를 미리 풀었던 상태였습니다! 결과가 나오고 나서는 최종 코테 환경과 동일하게 1~6시까지 남은 문제들을 풀이해보는 시간을 가졌습니다.숫자야구, 레이싱카, 로또 등은 이미 선발 과정 전에도 스터디나 혼자서 풀었었기 때문에 여러번 더 풀다보니 문제를 암기해버리게 되어서 자판기나 점메추 등 익숙하지 않은 문제들을 위주로 주어진 시간안에 요구사항을 충족할 수 있도록 하는 것을 중점으로 하였습니다. 미션을 하면서 재사용이 가능한 부분들은 템플릿..
5시간을 날린 배포 과정을 정리합니다... 전반적인 과정 우선 전반적인 과정은 아래 글을 참고하여 배포하였다. 굉장히 잘나와있어서 전반적인 흐름은 아래 글을 참고하면 좋을 것 같고, 하지만 따라하면서 생긴 여러 이슈들을 추가로 작성할테니 다음에 배포할 때 같은 문제들을 참고하자 [AWS] AWS EC2를 이용해 배포하기 - EC2에 MySQL 서버 구축 [AWS] AWS EC2를 이용해 배포하기 (2) - EC2에 MySQL 서버 구축 EC2에 MySQL 서버를 구축하기 위해선 먼저 AWS RDS MySQL 인스턴스를 생성해야한다. 1. AWS RDS 란? AWS RDS(Relational Database Service)는 AWS에서 제공하는 데이터베이스 서비스다. *AWS RDS 데이터베이스 엔진 RD..
문제 상황 클라우드 타입에 배포 후 깃 액션을 통해 CD 설정을 했다. (클라우드 타입 깃액션 CI/CD 설정하기는 옆 글을 참고) 위처럼 성공적으로 워크플로가 작동했기 때문에 당연히 배포가 성공적으로 되었을 거라 생각했는데... 😭 어라라 그러나 클라우드 타입 배포 내역을 확인해보니 아래 처럼 오류 두가지가 발생했다. (11시간 전은 워크 플로 파일을 업데이트해서, 10시간 전 내역은 새 pr을 머지해서 발생한 것) 원인을 찾고자 빌드 로그를 확인했다. Connecting to "클라우드타입 스페이스" ... 🏂 Build runner(sel-4) is starting... ├ Build type is dockerfile └ Build env is {"JWT_SECRET_KEY":"t********",..
문제의 시작 Jwt의 인증을 처리하는 필터(JwtAuthenticationFilter)를 커스텀하여 시큐리티 필터체인에 등록을 해놨는데, 이때 Jwt를 검증하는 과정에서 에러가 발생할 시 JwtException이 발생한다. @Slf4j public class JwtAuthenticationFilter extends BasicAuthenticationFilter { // ... 생략 @Override protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) throws IOException, ServletException { // ... ..
jwt 로그인 TokenProvider 토큰 생성 및 검증 로그인() 비밀번번호 로그인 일치하면 토큰 생성 따로 인증 필터 두지 않기로 결정 필요성을 못느낌 JwtAuthenticationFilter extends BasicAuthenticationFilter 권한 확인 필터 권한이 필요한 요청이 들어왔을 때 실행 굳이 만들어줘야 하는 이유: 시큐리티엔 Jwt를 검증하는 필터가 없다 토큰이 유효하면 인증 객체 만들어서 시큐리티 컨텍스트에 저장 CustomUserDetails를 구현해줘야 하는 이유 내 이해: 시큐리티 컨텍스트에 넣어질 객체는 UserDetails 형태여야 하는데 (= 시큐리티가 관리하는 것) 인증된 객체의 정보를 내가 필요한 것을 구현 CustomUserDetailsService를 구현해..
StackTrace 스택 추적(스택 트레이스)란 프로그램이 시작된 시점부터 현재 위치까지의 메서드 호출 목록으로 어디서 예외가 발생했는지 추적하여 알려주는 역할 예외의 유형과 메시지, 예외가 발생했을 때 진행 중이던 모든 메서드 호출 목록 첫 번째 프레임은 JVM이 스택 추적을 생성하는 실행 지점 가장 먼저 실행된 메서드가 스택 추적의 마지막 스택 프레임이 되고 마지막에 실행된 메서드가 스택 추적의 첫 번째 스택 프레임 어떻게 생성? JVM은 예외가 발생하면 자동으로 Stack Trace를 생성 Stack Trace에서 각 요소는 메서드 호출부를 나타내 예외가 발생한 위치를 추적 Stack Trace → 예외 → call stack에 있는 메소드 리스트를 저장 Throwable 클래스에서는 콘솔에서 St..
우테코 박재성(Jason)님의 특강이였다. 개인적으로 라이브 코딩을 통해 강의해주신 부분이, 어떤 플로우로 테스트 코드를 작성하면 좋을지를 파악하는데 너무 좋아서 만족했던 강의였다. 최고! 테스트 남들에게 실행 시키기 전에 수동 테스트 해봤던 경험이 있을 것 내가 원하는 방식으로 작동이 되는지 확인하기 위해 테스트의 진화 언어별, 국가별, 장치별 테스트를 모두 수동으로 할 수 있을까? QA 조직의 등장테스트 자동화된 테스트 자동화된 테스트의 필요성은 사람에 따라 다를 수 있음 못 느낄 수도 버그를 잡는 것은 테스트 해야 하는 많은 이유 중 하나일 뿐 소프트웨어의 변화를 지원하는 역할이란 것을 이해하자 네카라 같은 기업들은 지속적으로 코드를 개선한다 자동화된 테스트는 실수를 발견해주고 자신있게 코드를 작성..
설계 및 API 특강 해당 특강은 DDD Start! 등의 저서를 작성한 최범균 강사님께서 강의해주셨다 설계란 그렇다면 설계 시 고려해야할 것은? 구조, 데이터 모델, 알고리즘, 인터페이스 소프트웨어에서 실제로 사용할 모델, 물리적인 저장소에서 사용할 모델 -> 분리해서 사용할수도 설계시 고려할 사항으로는 데이터의 규모와 요구하는 응답 시간이 있다. 인터페이스 시스템 간 데이터를 주고 받는 연동방식, 규약 정의 프론트 백엔드간(Http), 백엔드간 API(TCP, GRP 등)이 잇다. 요구사항 설계는 요구사항이 무엇이냐에 따라 바뀐다. 즉, 요구사항은 설계의 출발점이라고 할 수 있다. 구성 요소 크기 3개의 그림의 차이(ListComp) 구성요소를 정말 작게 할수도 있고 아닐수도 다양함 그렇다면 기준으로..
인덱스란 정렬된 자료구조로 탐색 범위를 최적화 인덱스도 테이블이다 쿼리가 들어오면 인덱스를 조회한 후 찾은 곳으로 이동 인덱스의 자료구조 HashMap 단검 검색 속도 O(N) 범위 탐색은 O(N) 전방 일치 탐색이 불가능함 -> key를 하나하나 꺼내서 확인해야 하기에 List 정렬되지 않은 리스트의 탐색 O(N) 정렬된 리스트의 탐색 O(logN) 정렬되지 않은 리스트의 정렬 시간 복잡도는 O(N) ~ O(N*logN) 삽입/삭제 비용이 매우 높음 Tree 트리 높이에 따라 시간 복잡도가 결정 트리의 높이 최소화하는 것이 중요함 한쪽으로 노드가 치우치지 않도록 균형을 잡아주는 트리 사용 B+ Tree 삽입 삭제 시 항상 균형 하나의 노드가 여러 개의 자식 노드를 가질 수 있음 리프노드에만 데이터가 존..