전체 글

JAVA 🎻

Collection과 Collections의 차이

작년 8월 스터디에서 제가 작성했던 이슈 내용을 가지고 왔습니다. https://github.com/JNU-econovation/Javs/issues/67 개발이나 알고리즘을 풀 때 collection을 상속한 List와 Set, Map는 많이 사용하지만 정작 collection에 대한 기본 지식은 부족한 것 같아 선정하게 되었습니다. 추가로 collections와의 차이점은 무엇일지에 대해 알고자 작성하게 되었습니다. Collection Collection Framework에서 최상위 인터페이스 Collection Framework란 뭘까 자료 구조를 바탕으로 객체, 데이터들을 효율적으로 관리할 수 있는 자료 구조들이 있는 라이브러리 컬렉션이라는 단어의 의미 -> 다수의 데이터(데이터 그룹) 그래서 제..

우아한테크코스 6기/1단계

List의 copyof()와 of()

블랙잭 미션을 하다가 List.copyof()를 사용했었는데, List.of()와의 차이점이 무엇인지에 대해 알고자 작성하게 되었다. copyOf() Returns an unmodifiable List containing the elements of the given Collection, in its iteration order. The given Collection must not be null, and it must not contain any null elements. If the given Collection is subsequently modified, the returned List will not reflect such modifications. 인자로 주어진 컬렉션의 요소를 순서대로 포함하..

우아한테크코스 6기/1단계

static final 변수는 항상 상수일까?

발단 시작은 바로 페드로가 보낸 슬랙의 메시지였다... 상수화된 인스턴스를 선언할 때 uppercase로 작성하는 것이 맞는 것인가?에 대한 문제였는데, 그동안 나도 인스턴스에 대해서는 uppercase로 적을 생각을 못해봤었는데 생각해보니, 인스턴스라도 상수라면 uppercase가 맞네? 라는 생각이 들었다. 추가로 하나의 질문을 더 던져주었는데, static final 변수는 항상 상수일까?에 대한 문제였다. 그렇다! 사실 내가 생각하기에 처음 문제는, 상수화된 인스턴스를 선언할 때 uppercase로 작성하는 것이 맞는 것인가가 아닌, 상수화된 인스턴스가 정말 상수로 볼 수 있는 것인가의 관점으로 봐야한다. 자 여기서 한번 생각해보자. 우리가 생각해볼 수 있는 것은 2가지이다. static fina..

우아한테크코스 6기/1단계

Junit5, AssertJ 새롭게 알게 된 내용들

Junit5 @Disabled @Disabled 애노테이션은 해당 테스트를 비활성화 테스트를 비활성화한다는 것은 해당 테스트를 실행하지 않겠다는 것 @Disabled @Test @DisplayName("항상 실패하는 테스트") void 항상_실패하는_테스트() { throw new RuntimeException("항상 실패한다."); } assertAll의 장점 // assertAll 미사용 assertEquals(1 + 2, 3); assertEquals(2 + 3, 5); assertEquals(7 * 3, 21); assertEquals(7 * 3 ^ 5, 32); assertEquals(7 * 3 / 5 + 33 / 21, 4); assertEquals(33 * 3 / 5 + 7 / 2, 22);..

독서📚

자바 모듈 시스템(+ module-info.java & setting.gradle)

자바 모듈 시스템 모던 자바인 액션을 읽고 정리한 내용과 읽으면서 궁금한 내용들을 작성하였습니다. 자바가 진화해야 한다는 여론으로 모듈시스템을 지원 시작 추론하기 위한 소프트웨어 자바 9에서 가장 많이 거론되는 새로운 기능이 모듈 시스템 그렇다면, 모듈화란 무엇인가, 모듈 시스템은 어떤 문제를 해결할 수 있는가 관심사 분리(SoC) 관심사분리는 컴퓨터 프로그램을 고유의 기능으로 나누는 동작을 권장하는 원칙 → 회계 어플리케이션이 있다면 파싱, 분석, 레포트 기능을 모듈이란 각각의 부분으로 분리 가능 장점 개별 기능을 따로 작업할 수 있으므로 팀이 쉽게 협업 가능 개별 부분을 재사용하기 쉬움 전체 시스템을 쉽게 유지보수 가능 정보 은닉 세부 구현을 숨기도록 장려하는 원칙 → 세부 구현을 숨김으로 프로그램의..

카테고리 없음

[우테코 6기] 최종 코딩 테스트 및 선발과정 후기와 회고 (🔥 합격 🔥)

최종 코딩 테스트를 준비하면서 ~ 마칠 때까지의 후기와 당일 코테 회고에 대한 내용을 작성하였습니다. 🐾  최종 코딩 테스트 후기준비 기간최종 코딩테스트 전까지의 시간동안 기존 기수들의 문제를 풀었습니다.1차 결과가 나오기 전에 이미 지하철 노선도와 페어매칭, 다리건너기를 미리 풀었던 상태였습니다! 결과가 나오고 나서는 최종 코테 환경과 동일하게 1~6시까지 남은 문제들을 풀이해보는 시간을 가졌습니다.숫자야구, 레이싱카, 로또 등은 이미 선발 과정 전에도 스터디나 혼자서 풀었었기 때문에 여러번 더 풀다보니 문제를 암기해버리게 되어서 자판기나 점메추 등 익숙하지 않은 문제들을 위주로 주어진 시간안에 요구사항을 충족할 수 있도록 하는 것을 중점으로 하였습니다. 미션을 하면서 재사용이 가능한 부분들은 템플릿..

에코노베이션 💙/TEAM.팀쿠키

[AWS ec2, RDB, Spring Boot] 혼돈의 배포 과정

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..

카테고리 없음

[Github Action] git@github.com: Permission denied (publickey) 해결

문제 상황 클라우드 타입에 배포 후 깃 액션을 통해 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********",..

카카오테크캠퍼스/3단계

Security JwtException 500이 발생한다..

문제의 시작 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 { // ... ..

Spring 🟢

[Spring] 시큐리티로 JWT 로그인 구현하기

jwt 로그인 TokenProvider 토큰 생성 및 검증 로그인() 비밀번번호 로그인 일치하면 토큰 생성 따로 인증 필터 두지 않기로 결정 필요성을 못느낌 JwtAuthenticationFilter extends BasicAuthenticationFilter 권한 확인 필터 권한이 필요한 요청이 들어왔을 때 실행 굳이 만들어줘야 하는 이유: 시큐리티엔 Jwt를 검증하는 필터가 없다 토큰이 유효하면 인증 객체 만들어서 시큐리티 컨텍스트에 저장 CustomUserDetails를 구현해줘야 하는 이유 내 이해: 시큐리티 컨텍스트에 넣어질 객체는 UserDetails 형태여야 하는데 (= 시큐리티가 관리하는 것) 인증된 객체의 정보를 내가 필요한 것을 구현 CustomUserDetailsService를 구현해..

minl741
홀리몰리 개발로그