my study.

전체 글 88

[디자인 패턴] 전략(Strategy) 패턴

헤드 퍼스트 디자인 패턴 - 교보문고 14가지 GoF 필살 패턴! | 경력과 세대를 넘어 오랫동안 객체지향 개발자의 성장을 도와준 디자인 패턴 교과서의 화려한 귀환! 》 2005년부터 디자인 패턴 도서 분야 부동의 1위 》 디자인 패턴의 고 www.kyobobook.co.kr 전략(Strategy) 패턴이란? 전략 패턴이란 특정한 계열의 알고리즘들을 정의하고 각각을 캡슐화하여 사용할 수 있도록 만드는 패턴을 말합니다. 이를 활용하면 이 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있게 됩니다. 예제 다양한 오리를 등록해야하는 오리 시뮬레이션 게임의 오리 클래스 Duck을 예제로 예시를 적어보도록 하겠습니다. Duck.java public abstract class Duck { Fly..

[독서] 실용주의 프로그래머 정리 - 05

실용주의 프로그래머 - 교보문고The Pragmatic Programmer숙련공에서 마스터로프로그래밍은 대체로 머리로 하는 일이지만 한편으로는 몸에 새겨져야 하고 때로는 그 이상의 통찰을 발휘해야 하는 상황에 맞닥뜨리게 되는 복합적인www.kyobobook.co.kr구부러지거나 부러지거나26. 결합도 줄이기와 디미터 법칙  이전 글에서 '부끄럼 타는' 코드를 작성하는 것이 이롭다고 설명했습니다. 이때 '부끄럼 타는' 이란 자신의 모든 것을 드러내지 않고, 너무 많은 사람과 상호작용을 하지 않는다는 두 가지의 의미를 가지고 있습니다. 코딩을 하며 어떤 모듈들을 만들 때 각 모듈 간의 상호작용을 제한해야 합니다. 그러면 한 모듈이 변경되거나 교체된다 하더라도 다른 모듈들은 변경 없이 수행될 수 있을 것입니다..

Book 2022.04.24

[독서] 실용주의 프로그래머 정리 - 04

실용주의 프로그래머 - 교보문고The Pragmatic Programmer숙련공에서 마스터로프로그래밍은 대체로 머리로 하는 일이지만 한편으로는 몸에 새겨져야 하고 때로는 그 이상의 통찰을 발휘해야 하는 상황에 맞닥뜨리게 되는 복합적인www.kyobobook.co.kr 실용주의 편집증완벽한 소프트웨어는 만들 수 없다.위의 말은 사실입니다. 완벽한 소프트웨어는 존재하지 않기 때문입니다. 그리고 이것을 기정 사실로 받아들이지 않는다면, 불가능한 꿈을 뒤쫓으며 시간과 노력을 낭비하게 될 것입니다. 그래서 우리는 방어적으로 코딩해야합니다. 코딩을 하는 도중 조금이라도 의심가는 부분이 있다면 주어진 모든 정보를 확인해야 합니다.  21. 계약에 의한 설계  계약에 의한 설계란 단순하지만 강력한 기법으로, 프로그램의..

Book 2022.04.15

[독서] 실용주의 프로그래머 정리 - 03

실용주의 프로그래머 - 교보문고The Pragmatic Programmer숙련공에서 마스터로프로그래밍은 대체로 머리로 하는 일이지만 한편으로는 몸에 새겨져야 하고 때로는 그 이상의 통찰을 발휘해야 하는 상황에 맞닥뜨리게 되는 복합적인www.kyobobook.co.kr3장 기본적인 도구14. 일반 텍스트의 힘  일반 텍스트는 사람이 직접 읽고 이해할 수 있는 형태의 인쇄가능한 문자로 이루어진 텍스트를 말합니다. 예를 들면 'Field19=773h26saa' 에서 733h26saa를 보고 무슨 의미인지 떠올릴 수 있는 사람은 없을 것 입니다. 그렇기 때문에 'UserId=haha123' 과 같이 인간이 이해할 수 있는 텍스트로 만드는 것이 더 나은 선택입니다. 물론 일반 텍스트로 작성하는 것은 압축된 이진 ..

Book 2022.04.11

[독서] 실용주의 프로그래머 정리 - 02

실용주의 프로그래머 - 교보문고The Pragmatic Programmer숙련공에서 마스터로프로그래밍은 대체로 머리로 하는 일이지만 한편으로는 몸에 새겨져야 하고 때로는 그 이상의 통찰을 발휘해야 하는 상황에 맞닥뜨리게 되는 복합적인www.kyobobook.co.kr2장 실용주의 접근법 7. 중복의 해악  이번에는 DRY 원칙에 대하여 설명합니다. DRY란 'Don't  Repeat Yourself' 반복하지 말아라 라는 뜻입니다. 개발자들은 개발의 시작부터 끝까지 항상 유지보수의 과정에 놓여 있다고 해도 과언이 아닙니다. 그리고 이 유지보수를 피곤하게 만드는 것 중의 하나가 중복된 코드입니다. 중복된 코드가 많으면 많을수록 해당 부분에 대한 수정은 피로해질 것이기 때문이죠. 이 중복이 생기는 이유는 대..

Book 2022.04.08

[독서] 실용주의 프로그래머 정리 - 01

구매한 지 조금 시간이 지난 책을 요즘 읽고 있습니다. 실용주의 프로그래머라는 책입니다. 이전에도 읽어보려 했는데 읽을수록 어렵다는 느낌이 들어 읽는 것을 멈추었습니다. 하지만 지금은 읽어도 좋을 것 같다는 느낌이 들어 읽기 시작했습니다. 책을 읽으며 내용을 복습할 겸 정리해보고자 합니다.  실용주의 프로그래머 - 교보문고The Pragmatic Programmer숙련공에서 마스터로프로그래밍은 대체로 머리로 하는 일이지만 한편으로는 몸에 새겨져야 하고 때로는 그 이상의 통찰을 발휘해야 하는 상황에 맞닥뜨리게 되는 복합적인www.kyobobook.co.kr0장 서문  서문에서도 좋은 부분이 있었습니다. 실용주의 프로그래머가 되려면 자신의 기술에 관심과 애정을 가지고 자신이 무슨 일을 하고 있는지 생각을 하..

Book 2022.04.06

[Spring] Spring WebMvcTest 작성법

개요 Spring Boot의 WebMvcTest를 이용한 단위테스트를 작성하면서 헤매었던 부분들을 기록해보고자 합니다. 내용 1. API요청 방식에 따른 테스트 작성 방법 PathVariable ( 주소에 데이터를 입력 받는 방식 ) - 주로 @GetMapping 에서 사용되는 Path에 요청 값을 받는 방식입니다. 위처럼 PathVariable 방식의 입력이 있을 때에는 RestDocumentationRequestBuilders 를 추가해준뒤 actions을 작성해 주어야 합니다. RequestParam ( Param을 이용해서 입력을 받는 방식 ) - 적은 수( 1개 ~ 2개 정도? )의 데이터를 받을 때에 주로 사용하고 있는 RequestParam 방식입니다. 이전의 PathVariable 때의 R..

Study/Spring 2022.04.03

[Spring] Spring rest docs generated-snippets adoc 안 생김 문제

개요 Spring rest docs 에서 테스트 코드를 작성한 뒤 테스트 케이스를 실행했는데 특정 케이스만 adoc이 생성되지 않는 상황이 발생했습니다. 따로 어떤 에러도 발생하지 않았기에 원인을 찾는데 조금의 시간을 소요했습니다. 해결 문제는 간단하게 해결되었습니다. 저의 경우 deleteUser() 요청의 adoc이 생성이 안되고 있었는데 천천히 살펴보니 테스트를 복사해서 수정하는 형식으로 작성을 할 때에 document 이름을 변경을 하지 않았기 때문이었습니다. 각 테스트 케이스마다 고유의 document 이름으로( 테스트 기능 이름과 같이 하면 될듯 합니다. ) 수정해주어 문제를 해결 했고, 이후 테스트를 실행하니 모든 adoc 들이 잘 생성이 되었습니다. 복사를 이용해서 개발을 할 때에는 조금 ..

Study/Spring 2022.04.03

[Java] java에서 동기, 비동기란 무엇인가?

요즘 자료구조를 공부하는데 계속해서 나타나는 단어가 있습니다. 그게 바로 동기화 라는 단어인데 굉장히 유사한 기능을 가진 두 가지의 자료구조간의 차이점이 무엇인가 라고 찾아보았을 때 동기화 지원여부가 차이점인 경우가 종종 있었습니다. 여기에 포함되는 것이 ArrayList와 Vector, StringBuffer와 StringBuilder, HashMap과 HashTable의 경우가 제가 동기화 라는 단어를 접한 경우입니다. 각각의 차이점이 동기화 지원 여부라는 것은 이해를 하겠는데 그 동기화라는 것이 뭔지에 대해서 확실하게 이해를 하고 있지 않으니 자꾸 찝찝한 기분이 들었습니다. 그래서 정리를 해보려고 글을 써보기 시작했습니다. 일단 동기화를 이해하기 위해서는 쓰레드(Thread)라는 단어를 알아야 합니..

Study/Java 2022.03.23

[자료구조] 스택이란? (Stack)

자료구조에 대해서 어느 정도 알고있다고 생각하지만, 하나씩 정리하며 기억을 단단히 해보고자 합니다. '자료구조와 함께 배우는 알고리즘 입문'을 참고하여 정리하고 있습니다. 스택이란? 스택이란 데이터를 일시적으로 저장하기 위한 자료구조로, 데이터의 입력과 출력의 순서는 후입선출(LIFO, Last In First Out)입니다. 후입선출이란 'Last In' 마지막에 들어간 데이터가 'First Out' 처음에 나오는 형식을 말합니다. 스택에 데이터를 넣는 작업을 푸시(push)라 하고, 스택에서 데이터를 꺼내는 작업을 팝(pop)이라고 합니다. 그리고 푸시와 팝이 이루어지는 위치를 꼭대기(top)라 하고, 스택의 가장 아랫부분을 바닥(bottom)이라고 합니다. Java 프로그램에서 메서드를 호출하고 실..

Study 2022.03.20