전체 글

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

카테고리 없음

[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********",..

JAVA 🎻

[Java] StackTrace란

StackTrace 스택 추적(스택 트레이스)란 프로그램이 시작된 시점부터 현재 위치까지의 메서드 호출 목록으로 어디서 예외가 발생했는지 추적하여 알려주는 역할 예외의 유형과 메시지, 예외가 발생했을 때 진행 중이던 모든 메서드 호출 목록 첫 번째 프레임은 JVM이 스택 추적을 생성하는 실행 지점 가장 먼저 실행된 메서드가 스택 추적의 마지막 스택 프레임이 되고 마지막에 실행된 메서드가 스택 추적의 첫 번째 스택 프레임 어떻게 생성? JVM은 예외가 발생하면 자동으로 Stack Trace를 생성 Stack Trace에서 각 요소는 메서드 호출부를 나타내 예외가 발생한 위치를 추적 Stack Trace → 예외 → call stack에 있는 메소드 리스트를 저장 Throwable 클래스에서는 콘솔에서 St..

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

클린 코드와 TDD 특강 정리

우테코 박재성(Jason)님의 특강이였다. 개인적으로 라이브 코딩을 통해 강의해주신 부분이, 어떤 플로우로 테스트 코드를 작성하면 좋을지를 파악하는데 너무 좋아서 만족했던 강의였다. 최고! 테스트 남들에게 실행 시키기 전에 수동 테스트 해봤던 경험이 있을 것 내가 원하는 방식으로 작동이 되는지 확인하기 위해 테스트의 진화 언어별, 국가별, 장치별 테스트를 모두 수동으로 할 수 있을까? QA 조직의 등장테스트 자동화된 테스트 자동화된 테스트의 필요성은 사람에 따라 다를 수 있음 못 느낄 수도 버그를 잡는 것은 테스트 해야 하는 많은 이유 중 하나일 뿐 소프트웨어의 변화를 지원하는 역할이란 것을 이해하자 네카라 같은 기업들은 지속적으로 코드를 개선한다 자동화된 테스트는 실수를 발견해주고 자신있게 코드를 작성..

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

설계 및 API 특강

설계 및 API 특강 해당 특강은 DDD Start! 등의 저서를 작성한 최범균 강사님께서 강의해주셨다 설계란 그렇다면 설계 시 고려해야할 것은? 구조, 데이터 모델, 알고리즘, 인터페이스 소프트웨어에서 실제로 사용할 모델, 물리적인 저장소에서 사용할 모델 -> 분리해서 사용할수도 설계시 고려할 사항으로는 데이터의 규모와 요구하는 응답 시간이 있다. 인터페이스 시스템 간 데이터를 주고 받는 연동방식, 규약 정의 프론트 백엔드간(Http), 백엔드간 API(TCP, GRP 등)이 잇다. 요구사항 설계는 요구사항이 무엇이냐에 따라 바뀐다. 즉, 요구사항은 설계의 출발점이라고 할 수 있다. 구성 요소 크기 3개의 그림의 차이(ListComp) 구성요소를 정말 작게 할수도 있고 아닐수도 다양함 그렇다면 기준으로..

JAVA 🎻

Function Interface과 Lambda Expression

Function Interface @FunctionalInterface public interface Function { R apply(T t); } 위에서 Funtion 인터페이스가 의미하는 것 T라는 Input Type을 받아 R이라는 Output Type을 반환하는 것 함수를 객체 형태로 만들기 public class Adder implements Function { @Override public Integer apply(Integer x) { return x + 10; } } Function 인터페이스를 구현하기 apply 메서드를 오버라이딩하여 원하는 함수를 구현하기 해당 함수를 사용 시에는 아래와 같이 사용할 수 있다. import chapter3.util.Adder; import java.u..

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

[카카오테크캠퍼스] 2단계 회고

저번주, 약 6주간의 카카오테크캠퍼스 1기의 2단계가 종료되었다. 1단계(9주차)에 비해 조금 더 짧은 기간이었지만, 2단계 기간은 방학 + 매일 그리고 주차별로 진행해야 할 과제, 특강, 데일리 스크럼이 있었기에 1단계에 비해 훨씬 성장을 많이 한 것 같은,,, 개인적인 느낌이 들었다. 아무튼! 2단계도 무사히 수료하였기 때문에 회고 겸 3단계를 위한 준비차 글을 작성한다! 2단계 회고 - KPT Keep(유지할 것) 과제 및 특강, 데일리 스크럼에 성실히 참여하였다. 과제 수행 시 최대한 요구사항을 충족하기 위해 노력하였다. 실시간 강의 시간에 최대한 집중하여 효율적으로 학습하려 했다. 깃허브 과제 제출 시 궁금한 점들을 질문하였다. 틈틈히 블로깅을 통해 과정 중 있었던 일들을 기록하려 하였다. Pr..

Spring 🟢

filter와 Interceptor

패스트캠퍼스 남궁성님 강의 보고 정리하였습니다 filter란? 공통적인 요청 전처리와 응답 후처리에 사용됨(로깅, 인코딩 등) 여러 서블릿들에서 위의 그림처럼, 공통적으로 발생하는 전처리, 후처리를 필터를 통해 중복 제거가 가능 따라서 서블릿들에서는 본래의 맡은 처리만 즉 하나의 책임만 가질 수 있게 됨 filter의 처리 과정 아래의 과정을 거쳐 요청이 처리된다고 할때 ( ->) 처리되는 과정은 다음과 같다. 요청이 오면 처음 filter1의 전처리 진행 filter2 호출 filter2 전처리 서블릿 호출 후 메서드 처리 filter2 후처리 filter1 후처리 filter의 사용 예시 아래와 같은 서블릿이 있을 때, 전처리, 후처리 등 분리해야 할 코드가 보인다. ExampleServlet.jav..

minl741
홀리몰리 개발로그