일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링으로하는마이크로서비스구축
- Be
- Solid
- 클린코드
- docker
- 자식객체
- GC
- testdrivendevelopment
- 완벽이해
- G1GC
- M:N
- KPT
- Java 22
- 마이크로서비스디자인패턴
- Runtime Area
- Self Descript Message
- hateoas
- pair programming
- ATDD
- 부모객체
- java
- 도커
- 미니미프로젝트
- RESAPI
- ComponentScan
- Execution Engine
- DB
- 트랜잭션 격리 수준
- TDD
- Spring/JAVA 서적
- Today
- Total
목록전체 글 (35)
Programming Summary
1:1과 1:N과 M:N1:11대 1 관계란 어느 엔티티 쪽에서 상대 엔티티와 반드시 단 하나의 관계를 가지는 것을 말한다.예시) Student : Seat왜 1대 1인가?한 명의 학생이 한 개의 자리만 소유할 수 있고, 한 자리는 여러 명의 학생이 소유할 수 없기 때문.1:N1:N 관계는 한 쪽 엔티티가 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있는 것을 의미한다.예시) Student : ProjectTeam왜 1대 N인가?팀도 별도의 테이블로 분리해야 하고, 하나의 팀에는 여러명의 Student가 속하고, 하나의 Student는 단 하나의 팀에만 속하기 때문.N:MN:M 관계는 관계를 가진 양쪽 엔티티 모두에서 1:N 관계를 가지는 것을 말한다.예시) Student : StudyGroup왜 M대..
DTO란 무엇일까?DTO(Data Transfer Object)는 프로세스 혹은 모듈 간에 데이터를 전달하는 객체이다. DAO, VO랑 같이 얘기가 많아 나오는데 사실 그 둘과 큰 관련이 없다고 생각한다.Entity 자체를 주고 받는 것은 왜 위험한가?클라이언트와 서버가 데이터를 주고 받을 때, Entity를 사용하는 것은 유지보수적으로나, 보안적으로나 안좋다.(개발자는 편하다) MVC 패턴으로 만들어진 서버와 클라이언트가 통신할 때를 생각해보자. 그리고 DB의 스키마가 변경되어 Entity가 변경된다고 가정하자. 그러면 Entity에 따라 클라이언트에서 주는 Request Body의 형식이 변경되어야 하는가? 만약 그렇다면 너무 대공사이지 않을까? 이번엔 Response 쪽에서 살펴보자. User를 그..
build.gradle이란?build.gradle은 공식 문서에 다음과 같이 써져있다.Gradle Build Tool is a fast, dependable, and adaptable open-source build automation tool with an elegant and extensible declarative build language.Gradle 빌드 도구는 우아하고 확장 가능한 선언적 빌드 언어를 갖춘 빠르고 신뢰할 수 있으며 적응력 있는 오픈 소스 빌드 자동화 도구입니다...라고 한다. 요점은 빌드 자동화 도구라는 것이다.Gradle 핵심 개념다음은 Gradle Core 구조도이다.프로젝트(Project)Gradle의 프로젝트는 애플리케이션이나 라이브러리와 같이 빌드할 수 있는 소프트웨어..
스프링은 프레임워크가 맞을까?아무도 스프링이 프레임워크가 아니다라고 한 적이 없는데 왠 쌩뚱 맞은 질문인가 할 수 있다. 하지만 프레임워크의 정의에 대해 한번 더 살펴보고 스프링은 이에 해당하는가를 고민하는 것에 의의가 있다고 생각한다.프레임워크란?프레임워크란 무엇인가? 제어의 흐름을 스스로 주도하는 구현체들의 집합을 의미한다. 즉, IOC(Inversion Of Control)를 제공하면 프레임워크라고 할 수 있겠다.스프링에서 IOC를 제공해주는 것은?@Component다음 내용은 Spring Wiki에서 @Component에 관해 정의된 내용이다.@Component is a generic stereotype for any Spring-managed component. Any component anno..
WebServer와 WASWeb Server란?Web Server는 하드웨어 적으로는 Web 서버가 설치되어 있는 컴퓨터를 뜻하고 소프트웨어 적으로는 정적인 컨텐츠를 WAS를 통하지 않고 바로 제공하거나 동적인 컨텐츠를 WAS에게 보내는 역할을 담당한다. 대표적으로 Apache Server와 Nginx 등이 있다.WAS(Web Application Server)란?WAS는 DB 조회나 다양한 로직 처리를 위해 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server이다. 과거 웹 서버의 기능들을 분리하여 처리하고자 하는 목적으로 제시되었으나, 현재는 속도가 빨라져 WAS에서 Web Server 기능을 수행해도 성능 저하가 심하지 않다. 그래서 기존 WAS 부분이 Web Container ..
SOLID 원칙이란?SOLID 원칙은 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍의 다섯가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것이다.S(SRP : 단일 책임의 원칙)클래스는 하나의 책임을 가져야한다. 이는 조금 추상적인 말이다. 이를 조금 더 구체적으로 말해보자면, 클래스가 변경되어야 하는 이유는 하나여야 한다는 것이다. 이는 해당 모듈이 여러 대상 또는 액터들에 대해 책임을 가져서는 안되고, 오직 하나의 액터에 대해서만 책임을 져야 한다는 것이다. 일 어떤 모듈이 여러 액터에 대해 책임을 가지고 있다면 여러 액터들로부터 변경에 대한 요구가 올 수 있으므로 해당 모듈을 수정해야 하는 이유 역시 여러 개가 될 수 있다.여기서 모듈이라 함은 클래스 혹은 클래스의 모음으..
프로젝트 링크강사님께서 자바에 익숙해지라는 목적으로 우리만의 배달의 민족을 만드는 미니미 프로젝트를 4일간 진행하였다. 해당 프로젝트의 KPT 회고를 진행하려한다.Keep"자바에 익숙해진다” 라는 프로젝트 목표에 맞춰 학습을 중점에 두고 프로젝트를 진행하였다.스프링의 MVC 구조를 참조하여 MVC 분리를 잘했다.재구성하는데 있어 확실한 근거가 있었다.Problem자바가 안익숙한 팀원들도 있어, Spring MVC 구조를 구현하기에는 너무 높은 난이도가 높은 설계였다.재시작한 프로젝트의 구조 설계를 잡기 어려워 Bottom-Up 방식으로 구현 후 설계를 하는 식으로 구현하였다.Try다음부터는 팀원들의 수준을 고려해서 설계를 하도록 하자.테스트 코드를 잘 작성하자.예외 처리를 잘하자.TDD를 연습해보자.
들어가기 전에일단 난 TDD를 할 능력도 안되고, 사수 개발자가 Test를 먼저 짜주어도 그걸 구현할지도 미지수이다.(우테캠 2차 과제테스트때 거의 구현하지 못했다) 그래도 나에게 TDD를 구현할 능력이 충분히 있다면 그때 TDD를 적용시킬 지에 대한 토론을 진행해보고자 한다.TDD 찬성!선배 개발자가 이끌어주기 좋아!잘하는 선배 개발자가 테스트를 만들어주면, 후배 개발자는 이 테스트를 다 통과하는 코드만 작성하면 된다. 바로 알고리즘 구현 문제가 되버리는 거다. 난이도가 아주 높겠지만..테스터의 입장까지 고려해볼 수 있어!코드를 먼저 짜고 테스트를 작성한다면 코더의 입장으로 작성할 수 밖에 없다. 그러나 테스트를 먼저 작성하면 테스터의 입장으로 작성할 수 있어, 더 많은 테스트 케이스를 고려해볼 수 있..
여러분이 가장 좋아하는 언어는?여러분이 제일 좋아하는 언어는 무엇인가. 한국어라고 대답한 사람들은 내 블로그에서 나가주길 바란다.. 농담이다.다만 우리가 주로 사용하는 언어를 왜 사용하고 왜 선택했는지에 대해 고민하면 좋을 것 같다.자바에 절여졌다.나는 자바가 제일 좋다. 왜 자바일까? 사실 자바에 절여진 것 같다. 전엔 자바가 제일 싫었는데.. 일단 print문부터 역겹지 않은가?public static void main(String[] args) { System.out.println("Hello World");}세상에서 제일 길다. 첫인상은 제일 최악인 언어였다. 어쩌다가 자바를 좋아하게 됐을까?왜 난 자바를 좋아하게 됐을까?모든게 객체다.너는 내가 불렀을 때 비로소 객체가 되었다. 옆에 친구..
클린 코드(Clean Code)란? 클린 코드란 무엇일까? Wiktionary에는 다음과 같이 정의 되어 있다. Non-redundant software code comprising of focused task-specific modules and functions, written in a systematic manner so that another coder can easily interpret or modify it.다른 코더가 쉽게 해석하거나 수정할 수 있도록 체계적으로 작성된, 특정 작업에 초점을 맞춘 모듈과 함수들로 구성된 비중복 소프트웨어 코드.쉽게 말하면, 모두가 봐도 쉽게 이해할 수 있는 코드를 뜻한다.왜 클린 코드를 해야 할까?위 그림을 보면 나쁜 코드의 경우, 초반에 빠르게 개발 될지라..