분류 전체보기 250

Enum 조회 성능 높여보기 - HashMap을 이용해서 빠르게 조회해보자

Enum 조회 성능 높여보기 자바의 Enum 에서 매핑을 할 때 find 메서드를 정의해서 알맞는 enum 을 찾는 로직을 많이 구현해본적이 있을 것 같아요. 다음과 같은 코드가 익숙하실텐테요. 저도 이런식으로 하다가 어느 날 친구가 인사이트를 주어 개선할 부분이 있는 것 같아 실험을 해보았습니다. 먼저 간단한 AccountStatus enum을 보겠습니다. package com.jaytech.codepractice; import java.util.stream.Stream; import lombok.Getter; @Getter public enum AccountStatus { INUSE("사용중"), UNUSED("미사용"), DELETED("삭제"), UNKNOWN("알수없음"); private fin..

0년차 예비 개발자의 2019년 회고 - 우아한테크코스 1기를 마무리하며

2019년에는 많은 일들이 있었다. 아마 내 인생에서 전환점이 되는 사건들이 많아서 그런 것 같기도 하다. 내가 처음으로 서비스를 만들어 보는 경험도 해보고 길고 긴 대학생활을 끝내는 해기도 하고 한국에서 처음으로 취업을 하게 되는 해였다. 보람찬 일도 많았고 아쉬운 일도 많았다. 2019년 중에서 하나를 뽑으라고 한다면 우아한테크코스가 아닐까. 봄에 시작해서 12월 겨울에 끝이 났으니 2019년을 지배한 건 자명한 사실이다. 지금부터 크고 작은 일들에 대한 회고를 해보려고 한다. 2019년 한일 서비스 출시 연초에 it 동아리에서 처음으로 서비스를 출시 해보았다. 내가 서버 개발로 진로를 정하게 된 확실한 계기가 아니었나 한다. 대학생 때 이것저것 시도해보았던 탓일까. 서버 개발이 제일 맘에 들었다. ..

우아한테크코스 레벨4 - 프로젝트 1주차 팀빌딩 아이디어 선정 및 개발 후기

우아한테크코스의 마지막 레벨인 4단계에서는 팀프로젝트를 진행한다. 기획부터 직접하기 때문에 재밌는 프로젝트를 기획해서 해볼 수 있다. 45명이 각자 아이디어를 내서 상위 9개의 아이디어가 선정 된 후 5명씩 팀을 지어서 하게 된다. 운이 좋게 내가 제안한 아이디어가 선출이 되어서 시작하게 되었다. 아이디어를 선택한 팀원 들도 매우 좋은 사람들이어서 훌륭한 환경 속에서 진행하게 되었다. 서비스이름은 개장모(개발자 장비모임)로 개발자들이 자신의 개발환경과 장비를 소개하고 공유하는 플랫폼이다. 본격적으로 시작하기에 앞서 기획을 조금 더 구체화 해보았다. 생각보다 기획을 매우 축소시켜야 정해진 기간안에 출시할 수 있기 때문에 최소한으로 진행하려고 노력했다. 추후 서비스 기능 추가를 하는것으로! Planning ..

Spring Cloud Config를 활용하여 설정값(properties), 비밀번호 숨겨서 배포하기

Spring Cloud Config Server 구축하기 Spring Cloud Config 를 사용하여 비밀번호나 민감한 key들을 숨겨서 관리하는 방법을 알아보겠습니다. 전체적인 구상도는 다음과 같습니다. 깃허브 private 저장소에 yml 파일을 업로드합니다. 이 yml 파일안에는 민감 정보가 들어있기 때문에 private에 업로드 하였습니다. 그리고 Spring Cloud Config 서버를 만들고 이 서버가 private 저장소에서 파일을 읽어오게 해야합니다. 그렇기 때문에 서버의 공개키를 깃허브 저장소에 등록을 시켜놓아야 합니다. 자세한 내용은 밑에서 보겠습니다. Spring Cloud Server 구축 implementation 'org.springframework.cloud:spring-..

Maven 저장소에 오픈소스 배포하기 - bintray를 통한 배포

모듈 배포하기 이 부분에서 도메인 지식이 하나도 없어서 처음 공부해보면서 정리한 내용입니다. JCenter와 MavenCentral 차이점 스택 오버플로우의 답변을 참고하세요. Jcenter vs. mavenCentral jcenter() and mavenCentral() is a repository for the Gradle plugin in Android Studio Earlier versions of Android Studio used mavenCentral(), and after some time, it switched to jcenter. This is because jcenter() is superior to mavenCentral() in terms of performance and memo..

Pivotal Summit 2019 Seoul 참가기

화요일에 Pivotal Summit 2019 Seoul에 다녀왔다. https://connect.pivotal.io/summit_2019_seoul Pivotal Summit 2019 Pivotal Summit 2019 is coming to APJ! Join us for valuable facetime with expert Pivotal speakers and industry thought leaders in both traditional presentation and informal conversations. We'll discuss the latest developments in DevOps, CI/CD, application d connect.pivotal.io 왼쪽부터 폴 자코스키, 나, 마크 ..

REST API 에러 핸들링 best practice - 에러를 어떻게 내려 주어야 할까

이 글은 baeldung의 'Best Practice For Rest API Error Handling'를 번역하고 실습해본 내용입니다. Best Practice For Rest API Error Handling 소개 REST는 stateless(상태가 없는) 아키텍쳐이며 클라이언트가 서버의 자원에 접근하고 조작할 수 있습니다. 일반적으로, REST는 HTTP를 이용하여 클라이언트가 자원을 얻거나 상태를 바꾸는 API를 제공합니다. 이 튜토리얼에서는 REST API 에러에 대해 best practice를 배워봅니다. HTTP 상태 코드 클라이언트가 서버에 HTTP 요청을 보내면, 그리고 서버가 그 요청을 잘 받았다면, 서버는 반드시 클라이언트에게 그 요청이 성공적으로 처리됐는지 아닌지 알려주어야 합니다...

모던 자바 인 액션 스터디 - 스트림 활용법과 문제 풀어보기

4장 스트림 스트림은 자바 8 API에 새로 추가된 기능입니다. 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있습니다. 여기서 선언형이란 데이터를 처리하는 임시 구현 코드 대신 질의로 표현하는 것을 말합니다. 또한 스트림을 사용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있습니다. 한마디로 정의하면 스트림이란 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소(Sequence of elements)입니다. 말이 너무 어렵나요? 용어를 하나씩 살펴봅시다. 연속된 요소: 컬렉션과 마찬가지로 스트림은 특정 요소 형식으로 이루어진 연속된 값을 제공합니다. ArrayList와 같은 컬렉션의 주제는 데이터이고 스트림의 주제는 계산식입니다. 소스: 스트림은 소스로부터 ..

모던 자바 인 액션 스터디 - 동작 파라미터, 람다 표현식

2장 동작 파라미터화 코드 전달하기 어떤 상황에서든지 요구사항은 바뀔 수 있습니다. 이에 따라 자바에서는 동작 파라미터라는 것을 이용하여 자주 바뀌는 요구사항에 효과적으로 대응할 수 있습니다. 다음과 같이 동작을 추상화해서 변화하는 요구사항에 대응할 수 있는 코드를 구현하는 방법을 살펴볼까요. public static void main(String[] args) { List inventory = Arrays.asList( new Apple(80, FilteringApples.Color.GREEN), new Apple(155, FilteringApples.Color.GREEN), new Apple(120, FilteringApples.Color.RED)); prettyPrintApple(inventory,..

모던 자바 인 액션 스터디 - 자바 8 의 변화

1장 자바 8, 9, 10, 11 객체지향은 90년대에 각광을 받았습니다. 하나는 캡슐화 덕분에 C에 비해 소프트웨어 엔지니어링적인 문제가 훨씬 적었고 다른 하나는 객체지향 패러다임 덕에 윈도우 95 및 다른 프로그래밍 모델에 쉽게 대응할 수 있었기 때문입니다. 이 패러다임은 '모든 것은 객체다' 라고 요약이 가능합니다. 하지만 프로그래밍 언어 생태계에 변화의 바람이 불기 시작했습니다. 빅데이터라는 도전에 직면하면서 멀티코어 컴퓨터나 컴퓨팅 클러스터를 이용해서 데이터를 효과적으로 처리할 필요성이 생겼습니다. 이에 따라 자바 8에서는 새로운 개념이 추가되었습니다. 자바 함수 프로그래밍 언어에서 함수(function)는 메서드(method)라는 의미로 사용됩니다. 자바의 함수는 이에 더해 수학적인 함수처럼 ..

반응형