개발 (6) 썸네일형 리스트형 [프로그래머스] 없는 숫자 더하기(Java) 지금까지 알고리즘 풀이를 python으로만 진행했는데, Java도 조금씩 연습하기로 했다 물론 업무의 대부분에서 Java를 사용하고 있지만, 다양한 툴 사용이 가능한 업무환경과 코딩테스트 환경은 다르기에 별도의 연습이 반드시 필요하다고 생각했다. 차근차근 환경에 익숙해지기 위해서 Java로 프로그래머스 레벨1 문제부터 다시 풀어보기로 했다. 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제의 출제의도 이 문제는 푸는 사람이 어떻게 접근하느냐에 따라 출제의도를 다르게 느낄 수 있는 문제였다 (배열을 이용한 풀이로 접근할 경우) 배열을 순회하며 .. Apache Avro를 이용한 Kafka Message Schema 관리(1) Apache Avro란? Apache Avro™ is a data serialization system - Apache Avro™ 1.11.0 Documentation Apache Avro는 데이터 직렬화에 관한 내용을 포괄하는 시스템이다. 다만 우리가 실제로 사용할 때는 이렇게 거창하게 생각할 필요는 없고 아래의 세 가지 기능을 제공하는 시스템이라고 생각하면 편하다. (실제 공식문서를 봐도 각 언어별로 사용하는 법 중심으로 간결하게 정리되어 있다) 1. 메시지 스키마를 제공해 준다 아래와 같이 Avro 스키마를 JSON으로 쉽게 정의할 수 있다. 파일의 확장자는 .avsc 로 저장하면 된다 {"namespace": "example.avro", "type": "record", "name": "User",.. Spring의 HandlerInterceptorAdapter는 왜 deprecated되었을까? 찾아보게 된 계기 Spring의 Interceptor 사용 방법을 찾기 위해 Spring 공식 문서를 찾아보고 있었다. 공식 문서에는 아래와 같이 HandlerInterceptorAdapter를 상속받으면 된다고 적혀 있다. public class TimeBasedAccessInterceptor extends HandlerInterceptorAdapter { private int openingTime; private int closingTime; public void setOpeningTime(int openingTime) { this.openingTime = openingTime; } public void setClosingTime(int closingTime) { this.closingTime = c.. java.time API의 다양한 시간 유형(Instant, LocalDateTime, OffsetDateTime, ZonedDateTime) Java Time API를 살펴보게 된 계기 개발을 하면 시간에 대한 로직을 처리할 때가 많은데, 이럴 땐 괜히 머리 아프게 직접 데이터타입을 만들거나 문자열로 처리하지 말고 언어별로 제공되는 시간 API를 사용하는 것이 가장 효율적으로 개발할 수 있다. 차세대 프로젝트에서 Java 1.6이하의 레거시 코드를 Java 11로 올리는 작업을 하게 되면서 기존에 String 혹은 Date API로 되어 있는 코드를 자연스럽게 Java 1.8부터 도입된 java.time API로 전환하게 되었다 java.time API에는 다양한 데이터타입들이 지원되는 것 같은데 그 중에서도 LocalDateTime을 가장 보편적으로 사용하고 있는 듯 하다 프로젝트에서도 이를 사용하긴 했으나 사실 명확하게 LocalDatet.. Java enum을 역방향 매핑(reverse mapping) 시켜보자 역방향 매핑(reverse mapping)이란? Java의 enum을 사용하면 멤버별로 숫자나 추가적인 코드를 매핑시킨 후, 멤버로부터 이를 꺼내 쓸 수 있다. 그런데 enum을 사용하다 보면, 반대로 숫자 혹은 코드가 있을 때 이에 해당하는 enum 멤버를 만들어 사용해야 하는 경우가 존재하는데, 이렇게 반대로 매핑하는 것을 역방향 매핑이라고 한다 TypeScript의 역방향 매핑과 Java에서의 구현 Typescript에서는 Numeric Enum인 경우 역방향으로 참조가 가능하도록 트랜스파일이 된다. 즉, TypeScript로 Enum을 만들면 아래와 같은 JavaScript 코드가 자동으로 생성된다. // TypeScript로 작성한 코드 enum MudoMemberBirthEnum { JAESE.. 쉽게 배우는 객체 지향 시리즈1: 객체지향을 공부하는 방법 들어가는 글: 객체지향이 어려운 이유 '객체지향' 어딘가의 면접장에서 주니어들을 고통스럽게 만들고 있을 개념 중 하나다 요즘이야 '기술면접 질문리스트' 같이 잘 정리된 곳도 많다 보니 외워서 답변할 수는 있지만, 개인적으로는 뭔가 찝찝했다 이걸 내가 진짜 잘 이해하고 있는건지, 아님 그냥 앵무새마냥 녹음해서 답변하는건지 확신이 없었기 때문이다 회사를 다니면서 몇번이나 다시 찾아보고 개발하며 느낀 점이 있는데 객체지향이 어려웠던 이유는 내가 너무 어렵게 공부했기 때문이다 객체지향이 맵긴 맵지만 사실은 까르보불닭정도인데 내가 공부를 잘못해서 틈새라면마냥 매워진 것이다 내가 공부하면서 잘못한 첫번째는 객체지향의 정의, 속성, 원칙을 정처기 외우듯이 달달달 외운 것이었다 CS 지식들이 그렇듯이 객체지향이라는 놈.. 이전 1 다음