본문 바로가기
반응형

분류 전체보기96

[스프링] @PostMapping 의 속성 알아보기 (headers, produces) 회사에서 코드리뷰를 하다가 @PostMapping 의 파라미터로 headers 와 produces 가 포함된 코드를 확인한 적이 있습니다. 얼핏 알기로는 headers 는 전달받는 headers 에 대한 정보를 담고 있고, produces 는 응답값의 타입을 정의하기 위해 사용한다고 알고 있습니다. 정확하지가 않아 이번 기회에 한번 알아보고자 합니다. HTTP 메시지 구조 @PostMapping 은 HTTP 통신에 있어 필요한 어노테이션이기 때문에 먼저 HTTP 메시지 구조에 대해 알아보자. HTTP 메시지는 클라이언트와 서버 사이에서 데이터가 교환되는 방식을 의미하며, 요청 (Request) 과 응답 (Response) 의 두 가지 유형이 존재한다. 요청과 응답은 Start line, Http head.. 2023. 2. 27.
[자바] 메소드 시그니쳐 (method signature) 메소드 시그니쳐 메소드 시그니쳐 = 메소드의 이름 + 메소드의 파라미터 컴파일을 할 때, 메소드의 시그니처를 기준으로 메소드를 구분하기 때문에 필요하다. 아래 코드에서 getInteger 와 인풋 파라미터 int x 를 합쳐서 하나의 시그니처로 표현한다. public int getInteger(int x) { return x; } 반환 타입은 포함되지 않음. 따라서 반환 타입만 다른 경우 (메소드의 이름과 파라미터은 같음)에는 컴파일 에러가 발생한다. (이미 같은 시그니처의 메소드가 존재하기 때문) public int getInteger(int x) { return x; } public double getInteger(int x) { // 2023. 2. 25.
UUID 로 설계한 댓가 예전에 신규 프로젝트를 맡아 설계부터 진행한 적이 있다. DB 테이블 설계를 할 때 평소같았으면 PK 값을 기본 Integer 를 사용했을텐데, 새로운 방식을 사용해보고 싶어서 UUID 로 적용해보고자 했다. 그 땐 몰랐지만 운영을 해오며 겪었던 문제점과 힘들었던 점에 대해 정리하고자 한다. PK 를 UUID 로 설정한 이유 당시 생성해야 했던 테이블이 7개 정도 되었고, 각 테이블의 PK 를 UUID 로 설정했다. 보안상의 이유가 가장 큰 부분을 차지했는데, 이 서비스가 외부로 노출이 되어야 했기 때문인데, PK 가 Auto-increment 하게 설정되어 있으면 외부로 데이터가 쉽게 노출될 리스크가 크다. 트렌비 홈 화면에 노출될 데이터였기 때문에 좀 더 보안에 신경을 쓰려고 했다. 괜히 ID 값이 .. 2023. 2. 23.
[후기] 2023년 카카오뱅크 서버 개발자 직군 (수시) 지원 후기 2023년 1월 말에 카카오뱅크의 서버 개발자 직군에 지원한 후기입니다. 서류 지원부터 처우 협상까지 약 2달정도의 시간이 소요되었고 결과는 최종 합격 했습니다. (대규모 채용 아니고 수시 채용입니다.)나중에 다시 돌아보기 위해서 기록용으로 작성해두려고 합니다. 요약전체적으로 채용 프로세스가 상당히 빨라서 매우 만족했다. (처우 협상 제외)단계 1. 서류 전형 - 이 단계에서 작성한 이력서와 자기소개서가 꽤나 중요한 느낌이었다.단계 2. 코딩 과제 - 기간 내 과제를 수행하는 형식이었고, 개인적으로는 시간이 많이 소요되었다.단계 3. 실무진 면접 - 코드 리뷰 형식의 면접이었고 상당히 디테일하게 물어보셔서 어려웠다.단계 4. 경영진 면접 - 프로젝트, 협업, 개인의 성장 등 다양한 방면에서 질문하셨다.단.. 2023. 2. 23.
[스프링] AOP 와 @RestControllerAdvice 지금 회사에 들어오면서 처음 봤던 코드 중 하나가 @RestControllerAdvice 였습니다. 이전 회사에서는 예외 처리를 가장 앞단의 try-catch 로 묶어서 했었는데, 여기서는 Advice 를 적극적으로 활용하고 있어 이에 대해 정리해두고자 합니다. 스프링 AOP AOP 는 Aspect-Oriented Programming 의 약자로 관점 지향 프로그래밍이다. 처음에 관점 지향 프로그래밍? 이라고 하길래 객체 지향 프로그래밍, 절차 지향 프로그래밍 등 뭔 그놈의 지향이 많은지 싶었다. 평소에 잘 작성하지 않는 메커니즘으로 구현하는 방식이다 보니 잘 와닿지 않았고, 이해하는데도 시간이 좀 걸렸었다. AOP 을 통해 이루고자 하는 것은 관심사의 분리이다. 위 그림처럼 "사용자 정보 관리", "주.. 2023. 2. 22.
[데이터] 우리 팀은 일을 어떻게 하고 있는가? - 엑셀을 활용한 JIRA 데이터 분석하기 작년 연말, 2022년을 마무리하는 팀 회고를 준비하고 있었습니다. (저희 팀은 각 스프린트마다 회고 담당자가 정해져있고 돌아가며 회고를 준비합니다.) 어떤 내용을 준비할지 고민을 하다가 2022년 저희 팀은 어떤 일을, 어떻게 해왔는지가 궁금해졌습니다. 과연 데이터에는 저희 팀의 업무 방식이 어떻게 기록되어 있을지 JIRA 데이터를 기반으로 분석해보고 팀에게 공유했던 과정을 정리하려고 합니다. Note JIRA 는 Atlassian 에서 제공하는 프로젝트 관리 및 업무 협업 툴로써 애자일 기반의 업무 방식을 지향하는 회사에서 주로 사용하는 서비스입니다. 아래 내용은 JIRA 가 어떤 서비스인지 알고 있다는 전제 하에 작성되었습니다. 분석 목적 아래 분석 목적을 이뤄보고자 데이터를 분석했다. 2022년도.. 2023. 2. 21.
[Gradle] Kotlin DSL 과 buildSrc 를 통한 버전 관리 Gradle 빌드 스크립트를 작성할 때 Groovy 언어로 많이 작성을 했었는데, Kotlin 으로도 작성할 수 있다는 것을 알게 되어 관련 내용을 정리해보고자 한다. 그리고 buildSrc 모듈을 활용해서 버전 관리를 하는 방법에 대해서도 같이 정리하려고 한다. Gradle 빌드 스크립트 Gradle 은 빌드 스크립트 작성을 위해 Groovy 기반 또는 Kotlin 기반의 DSL (Domain-Specific Language) 을 지원한다. Gradle 5.0 버전부터 지원한다. (릴리즈 노트) DSL 이란 "도메인 전용 언어"로써 특정 목적을 달성하기 위해 사용되며 코드의 내부 로직을 숨기고 재사용성을 높여주는 장점이 있다. Kotlin DSL vs. Groovy DSL Kotlin DSL 은 Gro.. 2023. 2. 20.
[회고] 신입 개발자의 성장기 - 쿠팡에서의 3년 2021년 12월에 광운대학교 박규동 교수님의 "웹서비스 설계 및 구현" 수업에서 "신입 개발자의 성장기 - 쿠팡에서의 3년" 이라는 주제로 비대면 온라인 특강 세미나를 약 1시간동안 진행했습니다. 쿠팡과 소속 팀이었던 리테일 시스템즈 엔지니어링 팀에 대한 소개를 진행했고, 주니어 개발자로 겪었던 시행착오와 다양한 경험들을 대학생들에게 최대한 많이 전달해주고자 했습니다. 발표 자료 세미나에 대한 소감문 세미나 이후 학생들이 직접 작성한 소감문을 전달받았습니다. 현업자의 시선에서 공부의 방향성을 제시해 주셔서 직접적으로 도움이 많이 된 것 같다. 현재 인턴으로 근무하 면서 현업과 학과 공부 사이의 연결점에 대해 고민 중이었는데, 연사님이 말씀하신 토이 프로젝트에서 실마리 를 찾은 것 같다 2023. 2. 17.
반응형