일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링
- 알고리즘정렬
- 카카오 면접
- 코딩테스트
- 엘라스틱서치
- 티스토리챌린지
- 이펙티브 자바
- Effective Java 3
- effectivejava
- java
- Effective Java
- 이펙티브자바
- 스프링핵심원리
- JavaScript
- 자바스크립트
- 오블완
- ElasticSearch
- 클린아키텍처
- 자바
- 스프링부트
- k8s
- kubernetes
- 스프링 핵심원리
- 알고리즘
- 카카오
- Sort
- Spring
- 이차전지관련주
- 예제로 배우는 스프링 입문
- 김영한
- Today
- Total
목록분류 전체보기 (153)
Kim-Baek 개발자 이야기
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 지난번에 새로운 할인 정책을 만들어서 테스트까지 했으니 이제 실제 코드에 적용을 해보는 시간이다. public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); } FixDicountPolicy를 RateDiscountPolicy 를 위와같이 적용하면 된다. 이 코드는 어떤 상태라고 생각이 될까? 역할과 구현을 분리한 것은 ..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 지금까지 할인 정책은 얼마를 주문하던 1000원을 할인해주는 정액 할인 정책이였다. 하지만 맨 처음 기획을 보면 이 정책은 언제든지 바뀔 수 있는 것이였다. 기획자가 이제 1000원이 아니라 주문 금액의 10%를 할인해주는 정률 할인 정책으로 변경해달라는 요구가 들어왔다. 그렇다면 개발자인 우리는 이것을 변경해서 적용해볼 수 있도록 하자 . 기획자는 애자일 소프트웨어 개발 선언에 따라서 계획을 따르기보다는 변화에 대응하라는 말을 한다. 열받는 말이지만 우리도 이 말에 맞게 대응을 해볼 수 있도로 한다. package core.order.discount; import core.order.member.Grade; impo..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 주문과 할인 도메인을 만들었으니 이제 제대로 동작하는지 테스트를 해볼 차례이다. package core.order; import core.order.member.*; import core.order.member.MemberService; import core.order.member.MemberServiceImpl; import core.order.order.Order; import core.order.order.OrderService; import core.order.order.OrderServiceImpl; public class OrderApp { public static void main(String[] args..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 주문과 할인 도메인에 대한 설계를 끝냈으니, 개발을 진행해보도록 하겠다. 이전과 마찬가지로 깃헙에 브랜치를 새로 따서 매 단계마다 올리고 있으니, 필요하신 분은 아래에 링크를 둘테니 확인하면 된다. package core.order.discount; import core.order.member.Member; public interface DiscountPolicy { /** * * @return 할인 대상 금액 */ int discount(Member member, int price); } 먼저 할인 정책 인터페이스이다. 할인 대상 금액을 리턴해주는 메소드 하나만 가진다. package core.order.discou..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 이전에 작성한 내용까지 해서 회원 도메인에 대한 개발이 완료되었다. 하지만 회원만 있다고 서비스가 만들어지는 것은 아니고, 다른 도메인이 필요하다. 그래서 이번에는 주문과 할인 도메인에 대해서 설계를 해보겠다. 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정) 주문과 할인 정책의 요구사항은..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 지난번에 만든 회원도메인에 대해서 실행을 해보고 테스트를 해볼 수 있도록 하자. package core.order; import core.order.member.*; import core.order.member.MemberService; import core.order.member.MemberServiceImpl; public class MemberApp { public static void main(String[] args) { MemberService memberService = new MemberServiceImpl(); Member member = new Member(1L, "memberA", Grade.VIP..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 회원 도메인의 설계까지 이전 강의에서 완료를 했으니 이제 실제로 코딩을 하는 단계이다. 코딩한 모든 내용은 깃허브에 올려두었고, 맨 아래에 링크를 첨부해두었다. package core.order.member; public enum Grade { BASIC, VIP } 먼저 회원 등급인 Grade를 Enum으로 만들어준다. package core.order.member; public class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade) { this.id =..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 이전에 요구사항을 확인했고, 이번에는 회원 도메인에 대해서 설계를 해보도록 하겠다. 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 회원 서비스는 이런 요구사항을 가지고 있었다. 요구사항을 토대로 도메인 간 협력 관계를 그려보면 이렇게 나온다. 클라이언트와 화원 서비스, 회원 저장소는 역할이라고 보면된다. 회원 저장소 역할은 이전에도 봤듯이 구현이 변경이 될 수 있어서, 실제 구현은 메모리 회원 저장소, DB 회원 저장소, 외부 시스템 연동 회원 저장소 세 개가 있다. 이것을 구현 레벨, 즉 코드..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 지난번에는 스프링 프로젝트를 세팅하는 것까지 완료를 했다. 이제 어떤 프로젝트를 만들면서 객체 지향을 익혀나갈 것인지 살펴보도록 하자. 만들 프로젝트의 요구사항에 대해서 보도록 하자. 기본적으로 배달의 민족 서비스처럼 주문 배달 서비스이다. 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) 할..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 이제부터는 실제로 코딩을 하면서 강의를 따라가게 된다. 먼저 프로젝트를 만들어야 되는데, 만드는 방법은 여러가지가 있을 수 있겠다. https://start.spring.io/ Spring initailizr 로 기본 프로젝트를 생성할 수 있고, intellij 와 같은 IDE에서도 바로 만들어도 상관이 없다. 강의를 따라서 스프링 이니셜라이져를 통해서 한번 만들어 볼 수 있도록 하겠다. 프로젝트는 Maven, Gradle 중 고르면 되는데 Gradle을 사용하도록 한다. 기능적인 차이는 없고, Dependency 추가하는 방식 같은 것이 조금 달라지는 거라서 상관없다. 언어는 자바를 선택하도록 한다. 다른 언어는 사..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 지금까지 강의에서는 스프링의 이야기가 아니라 객체 지향에 대한 이야기만 하고 있었다. 그렇다면 스프링관는 어떤 관계가 있어서 이런 이야기를 강의를 통해서 계속 했는지 궁금할 수 밖에 없다. 스프링과 객체 지향 설계 OCP DIP 이전 글에서 정리한 것 처럼 객체 지향 5대 원칙 중, OCP와 DIP는 순수하게 자바로 작성하면 제대로 지켜지지 않는 한계가 있었다. 스프링이 OCP, DIP 원칙을 지원하고, 추가적으로 다형성까지 제공해주는 프레임워크가 되는 것이다. DI ( Dependency Injection ) : 의존관계, 의존성 주입 DI 컨테이너 제공 위의 두 가지 기능을 제공하면서, 객체 지향 원칙을 지킬 수 ..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 이전 포스팅에서는 좋은 객체 지향 프로그래밍이 어떤 것인지에 대해서 알아보았다. 말로만 좋은 객체 지향을 하라고 하면 어렵기 때문에 이미 여러 뛰어난 개발자가 만들어놓은 좋은 객체 지향 설계의 원칙이 있다. 앞글자를 따서 SOLID 라고도 불리는데, 대학생 때 공부를 했던 기억이 나는데, 중요한 내용이 만큼 잘 알아두면 좋다. 클린 코드라는 책을 쓴 유명한 로버트 마틴이 정리한 내용이다. 로버트 마틴이라는 분은 클린 코드도 그렇고 코드를 보기좋고 깔끔하게 작성하는 것을 굉장히 강조하는 것 같다. SRP 단일 책임 원칙 말 그대로 하나의 클래스에서는 하나의 책임만을 가져야 한다는 것이다. 사실 상당히 애매한 말일 수 있..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 지난번 강의에서 스프링은 결국 객체지향을 잘 할 수 있게 만들어주는 프레임워크라는 것까지 내용이 나왔다. 그렇다면 이것을 알기 전에 객체 지향이란 것이 뭔지 잘 알아야지 스프링을 더 잘 이해할 수 있을 것이다. 객체 지향의 특징에는 추상화, 캡슐화, 상속, 다형성이 있다. 이 중에서 다형성을 가장 중요한 핵심개념이라고 설명한다. 그렇다면 우선 객체 지향의 정의는 무엇일까? 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지 를 주고받고, 데이터를 처리할 수 있다. (협력) 객체 지향 프로그래밍은..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 이전 글에서 스프링이 나오기 전 어떤 역사가 있었는 지를 알아봤다. 그렇다면 이제 스프링이 어떤 것인지 알아볼 차례인 것 같다. 스프링은 지금 하나의 오픈소스 프로젝트를 말하는 것이 아니다. 되게 다양한 프로젝트들이 모여서 스프링이라는 것을 구성하고 있다고 볼 수 있다. https://spring.io/projects 에 들어가보면 스프링을 구성하는 프로젝트들이 나열되어 있다. 그 중에서 스프링 부트와 스프링 프레임워크가 필수적으로 사용되는 프로젝트이다. 그리고 수 많은 프로젝트들이 더 많이 있다. 프로젝트 이름을 보면 어떤 기능을 제공하는 것인지 대충 유추가 가능한데, 스프링 클라우드는 클라우드 환경에 맞는 기능을 ..
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅 지금의 스프링이 나오기 전에 자바 진영에서 가장 많이 사용하고, 표준이라고 정해져 사용되었던 기술은 바로 EJB이다. EJB가 어떤 줄임말이냐 하냐면 바로, Enterprise JavaBeans 이다. 이름만 들어도 알 수 있겠지만, 기업용의 애플리케이션을 만들기 위해서 사용되는 기술이다. EJB는 말 그래로 종합선물세트와 같은 기술이였다. Spring 과 같은 기능, 분산 처리, 트랙잭션, ORM 인 Entity Bean 까지 정말 다양한 기능을 제공하는 시스템이였다. 말로만 들어서는 정말 좋을 것 같은데, 문제가 뭐였을까? 먼저 가격적인 부분이다. 지금이야 오픈소스가 활발하고 다들 사용하는 거에 익숙해져 있지만, ..
안녕하세요. 2022 카카오 신입 개발자 공채를 현재 모집하고 있습니다. 대기업들이 공채를 점점 안하고 있는 시점에 정말 반가운 채용 소식인 거 같아요. 카카오는 특이하게 처음에 서류전형이 따로 없습니다. 맨 처음 전형이 코딩테스트이고, 이걸 통과한 사람들에 한해서 입사지원서를 작성하고 제출하게 되는 구조입니다. 지원하는 모든 사람이 코딩테스트에 응시하기 때문에, 그 만큼 난이도가 어렵기로 유명하고, 또 카카오에서도 엄청 중요하게 생각하고 있다는 뜻으로 보입니다. 카카오 코딩테스트는 9월 11일에 시작되는데, 얼마남지 않은 기간동안 어떤 거를 공부해야 되는지를 모르는 분들이 많은 것 같아서 카카오 코딩테스트를 분석해보고자 합니다. 예전에 수능공부를 해보셨다면, 기출문제를 분석하고 풀어보는게 정말 중요하잖..
2020 신입 개발자 블라인드 채용 @카카오 의 채용이 시작되었네요! 2021.08~2021.09.06 까지 지원이니 다음주 일요일에 마감! 본격적으로 하반기 공개채용이 시작된 것 같아요 채용 절차 이번 카카오 신입 채용 절차 역시 이전 채용절차와 크게 다르지 않습니다. 모집회사 카카오 뿐만 아니라 카카오게임즈, 모빌리티, 엔터테이먼트, 엔터프라이즈, 커머스, 페이 총 7개의 회사에서 채용을 하네요! 특히 이번 채용은 OOO 명 3자리수 채용을 한다고하는데요! 전형 일정 2017년부터 시작한 블라인드 채용으로 학력, 전공, 나이, 성별 등 정보를 적지 않는 블라인드 채용 방식입니다! 직무(분야) 카카오의 경우 Programming, Infra/DB/보안 분야를 나눠서 모집하고 있네요 1. Programm..
NextStep 이라는 교육 플랫폼에서 TDD, Clean Code With Java 라는 수업을 들으면서 정말로 많은 것들을 배우고 있다. 내가 자바를 제대로 쓰고 있었던게 맞나...? 라는 의문이 들정도로 내가 고쳐야될 것이 정말 많다는 것을 느끼는 중이다. 이 과정을 통해서 배우는 것들을 정리하고, 계속 봐야겠다는 생각을 하며 포스팅을 해보고자 한다 :) 객체지향 생활 체조 원칙? 소트웍스 앤솔러지라는 책에서 나오는 9가지 원칙이라고 한다. 클린코드를 위한 원칙이라고 생각하면 되는데, 상당히 구체적인 내용이라서 이해하기가 쉽다. 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기(indent)만 한다. 규칙 2: else 예약어를 쓰지 않는다. 규칙 3: 모든 원시값과 문자열을 포장한다. 규칙 4: 한..
오늘은 대학생때 IT기업 취업 준비를 하면서 실제로 했던 꿀팁을 공유하려고 합니다. 실제 많은 IT회사에 면접을 보거나 자기소개서 양식을 작성 할 때, Github 이나 블로그 링크를 첨부하는 곳들이 많이 있습니다. 하지만, 저 같은 경우는 대학생시절.... 학교에서 Github이라는 오픈소스 플랫폼을 사용해보적이 1번도 없었던 저에게 너무나도 생소했었죠... (개발 프로젝트를 하면서 *.zip 파일을 카톡으로 서로 공유했던 기억이...ㅠㅠㅠ) 물론 좋은 프로젝트 기회와 대학생때 대외활동으로 Git / Github을 사용하는 선후배 들도 있었지만, 대부분의 제 동기들과 주변 친구들은 Gitgub과 Git을 쓰는 방법을 몰랐어요. 하지만, 현업에서 일을 해보니 거의 Github이라는 플랫폼은 필수적인걸 느..
오늘은 지금 가장 핫한 오픈소스를 알아보는 저만의 Tip을 공유해드릴까해요. 개발 면접을 하다보면, 지금 관심있는 기술 / 트랜드에 대한 질문을 종종 받곤 하는데요. 지금 내가 회사에서 사용하고 있는 기술 셋, 관심 있는 기술 셋도 중요하지만 가장 핫하고 다른 사람들이 사용하고 관심있는 오픈소스는 무엇일까요? 개인적으로 Github 을 정말 많이 사용하는데요! 일반적인 버전 형상관리, 코드, 이슈 관리 이외에 모든 오픈소스 코드들이 거의 실시간으로 계속 update 되고 있어요. 그렇다면, 지금 가장 핫한! github 오픈소스 프로젝트는 무엇일까요?? 저는 Github Trending Repository 기능을 추천드려요! 구글에 "trending repositories github" 을 검색해서 gi..