
SPARCS 해커톤 지원 회사 동료분이 같이 졸업 전 마지막 학부생 신분으로 지원가능한 해커톤에 지원하자고 연락이 왔다. 나도 올해 2월 졸업을 앞두고 있었기에 마지막 학부생 신분으로 해커톤에 참여해보고 싶어 참가를 결정하게 됐다. 그분과 나는 백엔드로 지원을 했고, 나는 큰 아이디어는 없지만 일단 리더로 직책을 맡고 진행을 했다. 총 5명의 팀원 (기획자, 디자이너, 프론트엔드, 백엔드)을 구성해야 했기에 Primer를 통해 팀원들을 구하기 위해 열심히 노션 페이지도 만들고 자기 PR을 하며 팀원들을 모집했다. 다행히도 능력 좋으신 디자이너, 기획자, 프론트 개발자 분들을 영입할 수 있었고 27일 해커톤 시작날 까지 퇴근 후에도 아이디어 결정을 위한 회의를 계속 진행하면서 시간을 보냈다. 해커톤 당일 ..

1. 마우스 패드 마우스 패드가 필요하다고 항상 느꼈는데 레이저의 마우스 패드가 가격은 사악해도 평이 너무 좋길래 구매해봤다. (17,500원...😭) 우리가 모두들 아는 마우스패드와 똑같이 생겼다... 하지만! 다른점은 매우매우 얇다는 점이다. 그리고 뒷편이 이런 필름이 붙어있는데, 이를 떼어내면 아주 쫀쫀한 젤 받침이 나온다. 진짜 좋을까란 기대를 하며 책상위에 탁 놓았는데 오... 아주 책상에 찰떡마냥 붙는게 아주 안정적이였다. 마우스 패드가 흔들린다라는 개념은 아예 없고 그냥 책상에 딱 붙는 느낌이였다. 그리고 젤이라서 그냥 저 레이저 이름표를 잡아서 들어올리면 다시 자유롭게 이동할 수 있었다. 새로 산 마우스를 올려보고 움직여보는 순간. 딱 느낄 수 있었다 너무 부드럽고 좋다라는 걸 ㅜㅜ 비싸긴..

기존에 사용하던 mx master 3x가 한 3년정도? 사용했더니 드래그가 잘안되는 경우도 생겨서 바꿔야지 하고 있었던 중 클릭 무소음 + 흰색의 mx master 3s가 눈에 확 들어와서 바로 구매하게 되었다 ㅎㅎ https://smartstore.naver.com/crtekshop/products/7271242545?NaPm=ct%3Dlbw7uw2f%7Cci%3Dcheckout%7Ctr%3Dppc%7Ctrx%3D%7Chk%3D940cbadbfe545ef6bac5770a80a03b4afbfe1a9f 로지텍코리아 MX Master 3S for Mac 애플 무선 블루투스 마우스 : 로지텍코리아 인증스토어 [로지텍코리아 인증스토어] 로지텍코리아 인증스토어 입니다. smartstore.naver.com 로지텍..
22년 6월 7일 ~ 12월 6일 6개월간의 카카오스타일 백엔드 인턴을 끝내고 마침내 정규직 전환 프로세스를 통과했다. 자바 백엔드 개발자라는 막연한 목표를 위해 다양한 프로젝트를 해오며 준비해왔는데 드디어 첫 결실을 맺었다는 사실이 너무 좋았다. 앞으로도 꾸준히 실력을 쌓아 올리면서 더 좋은 개발자가 되기 위해 노력해야겠다. 6개월을 전부 풀어내긴 어렵고 간단하게 정리해보고자 한다. 1. 입사 후 2주 사실 이때는 정말 아무것도 모르는 상태였다. 매일 들어가야 하는 팀 스크럼에서 리더와 팀원들의 대화는 하나도 못알아들었고 나는 계정신청, 맥북 세팅, 환경 세팅, 프로젝트 clone, 권한 세팅 등 세팅에 시간을 대부분 할애했었다. 특히 아무것도 모르겠는 대화속에 매일 참여하고 있는 건 꽤나 곤욕이였다...
이 포스팅 시리즈는 스프링 배치 - 스프링 부트 기반으로 개발하는 스프링 배치 강의를 듣고 정리하기 위해 작성했습니다. 배정된 부서에서 배치를 정말 많이 사용하길래 급하게나마 기본기 숙지를 위해 시작하게 되었다. 해당 강의는 Java 코드로 제공되지만 필자는 회사에서 코틀린으로 작업을 하기에 코틀린 기반으로 변경하여 작업할 것이다. 배치 핵심 패턴 Read: 데이터베이스, 파일, 큐에서 다량의 데이터 조회 Process: 특정 방법으로 데이터를 가공한다. Write: 데이터를 수정된 양식으로 다시 저장한다. 배치 시나리오 배치 프로세스를 주기적으로 커밋 동시 다발적인 Job의 배치 처리, 대용량 병렬 처리 실패 후 수동 또는 스케줄링에 의한 재시작 의존 관계가 있는 Step 여러개를 순차적으로 처리 조건..

'기억보단 기억을' 블로그를 참고하여 작성하였습니다. 해당 프로젝트는 Java로 작성되어있으나 필자는 Kotlin 방식으로 작성하였습니다. 스프링 배치 메타 데이터 테이블 구조 각 테이블이 어떠한 역할을 하고 어떠한 데이터를 갖고 있는지 설명해본다. 1. BATCH_JOB_INSTANCE 해당 테이블에 쿼리를 보내보면 하나의 로우가 조회된다. JOB_INSTANCE_ID `BATCH_JOB_INSTANCE 테이블`의 PK JOB_NAME 수행한 Batch Job 이름 실제로 방금 실행했던 batchJob의 이름이 들어있다. 이때, BATCH_JOB_INSTANCE 테이블은 Job Parameter에 따라 생성되는 테이블이다. 이 Job Parameter는 생소한 부분인데, Sprint Batch가 실행될..

'기억보단 기억을' 블로그를 참고하여 작성하였습니다. 해당 프로젝트는 Java로 작성되어있으나 필자는 Kotlin 방식으로 작성하였습니다. 1. 프로젝트 생성 start.spring.io를 통해 생성 Kotlin Gradle Spring Boot 2.7.1 Java 17 라이브러리 spring data jpa spring batch h2 DB lombok mysql 이렇게 애플리케이션을 생성하면 아래와 같은 build.gradle 파일이 생성된다. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.springframework.boot") version "2.7.1" id("io.spring.dependency-manageme..

현재 Flow 정리 JwtAuthenticationFilter 클래스 Login 요청이 오면 JwtAuthenticationFilter에서 attemptAuthentication()를 호출하여 인증을 처리한다. Username&Password가 정상이면 -> AuthenticationToken을 발급한다. 인증토큰 객체를 이용해서 UserDetailsService의 loadUserByUsername()을 호출하여 회원 존재 여부를 검증 한다. UserDetails 객체로 반환된 객체에 대해서 PasswordEncoder를 통해 패스워드를 검증한다. 제대로 검증이 됐다면 인증토큰 객체를 반환하여 시큐리티_세션에 저장한다. 검증 결과에 따라 successfulAuthentication() 또는 unsucc..

Username, Password를 이용한 검증은 완료된 상태로 다음 수행될 successfulAuthenticaiton() 메서드에서 JWT토큰을 발급해보도록 하겠다. JwtAuthenticaitnoFilter 클래스 @Slf4j @RequiredArgsConstructor public class JwtAuthenticationFilter extends UsernamePasswordAuthenticationFilter { private final AuthenticationManager authenticationManager; // login 요청을 하면 로그인 시도를 위해서 실행되는 함수 @Override public Authentication attemptAuthentication(HttpServle..

GraphQL을 사용하면 기존의 REST 엔드 포인트의 집합이 아니라 타입 집합으로 API가 보이게 된다. 따라서 GraphQL API를 만들기 전에는 우선적으로 API에서 반환할 데이터 타입에 대해 생각하고 정의해야 한다. 이러한 데이터 타입의 집합을 스키마(Schema)라고 부른다. GraphQL은 스키마 정의를 위해 SDL(Shema Definition Language)를 지원한다. 이 스키마 문서는 애플리케이션에서 사용할 타입을 정의해 둔 텍스트 문서이다. 여기서 정의한 타입은 나중에 클라이언트-서버 통신 시 GraphQL 요청에 대한 유효성 검사에서 사용된다. 사진 공유 애플리케이션 사진 공유 애플리케이션을 만들어 보면서 GraphQL 타입과 스키마를 공부해보자. 사진 공유 애플리케이션은 깃허브..

이전 포스팅에서 정리한 내용을 기반으로 로직을 작성해겠다. 회원 로그인을 검증하기 위한 UsernamePasswordAuthenticationFilter를 상속받아 로그인 검증을 하고 토큰을 발급받는 JwtAthenticationFilter 클래스를 구현해본다. 로그인 검증 로직 로그인 요청 (username, password) UsernamePasswordAuthenticationFilter에서 [username, password]를 이용해서 정상적인 로그인 여부를 검증 DI로 받은 AuthenticationManager 객체를 통해 로그인을 시도한다. UserDetailsService를 상속받은 PrincipalDetailsService 클래스가 호출되고 loadUserByUsername() 메소드가..

GraphQL이 한글패치해서 제공하는 공식 튜토리얼이 있다. 잘 정리해서 알려주고 있어 매우 도움이 되니 참고하자. https://graphql-kr.github.io/learn/ GraphQL: API를 위한 쿼리 언어 GraphQL은 API에 있는 데이터에 대한 완벽하고 이해하기 쉬운 설명을 제공하고 클라이언트에게 필요한 것을 정확하게 요청할 수 있는 기능을 제공하며 시간이 지남에 따라 API를 쉽게 진화시키고 graphql-kr.github.io 회사에 들어가니 REST API가 아닌 GraphQL을 사용한다고해서 급하게 공부하게 됐다. 학부 4년 내내 공부 및 플젝을 하면서 서버-클라이언트 통신 구조에서 REST를 사용하지 않는 경우는 배워본적도 들어본적도 없었지만 이는 매우 우물한 개구리에 불과..
- Total
- Today
- Yesterday