Dev 91

JAVA 8 에서 케이크 패턴(Cake Pattern)을 사용해보자

지난 글에서 의존성 주입(Dependency Injection)에 대한 이야기를 했었다. 이번 글에서는 다른 방식의 의존성 주입인 케이크 패턴을 소개한다. 스칼라의 케이크 패턴에 대한 자세한 내용은 여기를 참고 바란다.케이크 패턴스칼라의 케이크 패턴을 자바에서 사용해보자. 케이크 패턴은 의존성 주입의 한 방법이다. 자바 8에서는 인터페이스가 구현 코드를 담은 디폴트 메소드를 가질 수 있게 되었다. 이 디폴트 메소드를 이용하면 스칼라의 trait 와 비슷해진다. 비록 trait 의 셀프 타입을 사용할 수는 없지만, 어차피 자바는 스칼라처럼 with 를 사용하여 객체 생성 단계에 와이어링을 할 수 없으니 상관없다.공통 구성로그 기록을 담당하는 Logger, 설정 로딩을 담당하는 Configuration 가 ..

Dev 2018.04.01

Setting ZeroMQ for MacOS

Mac 에서 개발 환경을 설정하던 중에 ZeroMQ 에 종속성을 가진 프레임워크를 사용할 일이 생겼다.이거 하나 때문에 윈도를 다시 개발 환경으로 사용하고 싶지는 않아서 ZeroMQ 를 Mac 에서 사용할 수 있도록 설정하는 방법을 찾았고 아래에 정리했다. ------------------------------------------------------------------------------------------1. brew 설치https://brew.sh/index_ko.html 2. jzmq 빌드에 필요한 툴들 설치brew install autoconfbrew install automakebrew install lib toolbrew install pkg-configbrew install zero..

Dev 2018.01.12

Source Tree for Mac 에서 password reset

회사에서 enterprise github 서비스를 사용하고 있는데 주기적으로 암호가 변경된다.최근 1년간 업무적으로는 다시 windows 만 사용해와서 source tree for mac 으로 enterprise github 서비스를 처음 사용해봤다. 문제는 git 암호를 변경하니 source tree 에서 pull, push 모두 실패한다.암호가 틀리다고... 틀리겠지 바꿨으니까!그럼 다시 입력하라고 나와야 하는 게 순서 아니야?계속 삽질을 하다가 해결했다. mac 에서 key chain app 실행하고 github.nhnent.com Access Key for xxxxxxx 항목을 찾아서 삭제하면 해결된다.위 항목을 삭제하고 source tree 에서 pull 을 해보면 드디어 암호를 다시 물어봐주신다.

Dev 2017.12.28

Google Mock 사용을 위한 간단한 정리

앞서 포스팅했던 단위 테스트 관련 글들에 이어서 이번에는 C++ 에서 단위 테스트를 사용하기 위한 프레임웍으로 Google Test와 Google Mock을 간단히 소개하겠다. Google Test : https://github.com/google/googletestGoogle Mock : https://github.com/google/googletest/tree/master/googlemock 세부적인 Assertions 함수들은 아래 문서를 참조하자.https://github.com/google/googletest/blob/master/googletest/docs/Primer.md 여기서는 Mocking 을 어떻게 구성하는지 간단한 Sample Project 를 가지고 설명한다.https://gith..

Dev 2017.08.10

테스트 용이성(Testability) 향상을 위한 DI(Dependency Injection)

이전 포스팅 BDD(Behaviour-Driven Development)에 대한 간략한 정리에서 같이 다루려고 했던 내용이다. 테스트 용이성이랑 말 그대로 테스트 대상을 얼마나 테스트하기 쉬운가에 대한 척도이다.테스트 대상이 얼마나 복잡한가? 얼마나 결합도가 높은가? 등 몇 가지 내용이 있지만 여기서는 테스트 용이성에서 결합도와 Mocking 에 대한 내용만을 간단히 다룬다.최대한 코드를 배제하겠다. 이 글에서 Mocking 은 Mocking 객체를 의미하며 이를 간단히 말하면 실제 객체를 흉내내는 가짜 객체를 하나 만드는 것이다. 실제 클래스와 동일한 인터페이스를 가지고 있어서 외부에서 볼 때는 가짜인지 모르고 사용할 수 있도록 설계된 클래스를 인스턴스화 한 것을 말한다. 이야기 진행을 위해서 테스트 ..

Dev 2017.06.19

BDD (Behaviour-Driven Development)에 대한 간략한 정리

BDD와 테스트 용이성에 대해서 간단히 정리가 필요해서 하는 김에 포스팅으로 올린다.한 번에 하려고 했는데 생각보다 양이 많아서 우선 BDD에 대해서만 정리한다. BDD가 TDD만큼 유명세를 타지는 않은 거 같은데 현업에서 두 가지 모두 사용해본 경험상 BDD를 선호한다.여기서 BDD는 Behaviour-Driven Development의 약자고 TDD는 Test-Driven Development의 약자다.어차피 BDD가 TDD에 기반을 두고 있다고 하는 만큼 둘이 엄청난 차이를 보이지는 않는다.다른 xDD도 많이 있겠지만 내가 사용해본 게 이 두 가지밖에 없어서 언급할 수가 없다. 흔히 알려진 것처럼 TDD는 테스트를 먼저 작성하고 그 테스트를 통과시키는 코드를 작성하는 흐름을 기본으로 한다.게다가 테..

Dev 2017.04.16

non-blocking socket에 OpenSSL 적용하기

정말 오랜만에 포스팅한다. 이 문서에서 사용하는 OpenSSL 버전은 1.0.1u 이다.하트블리드 취약점을 피하려면 1.0.1g 이상을 사용해야 한다. 공식 OpenSSL 페이지 : https://www.openssl.org/공식 문서 : https://www.openssl.org/docs/man1.0.1/ssl/ 이 문서에서 OpenSSL의 빌드, 프로젝트에 설정하는 방법 그리고 자세한 에러 처리는 생략한다.이제 개발에 필요한 내용만 정리해보자. 아래 내용이면 바로 non-blocking socket에 SSL을 적용할 수 있을 것이다. 이 문서에서 필요한 헤더 파일은 아래와 같다. ssh.hbio.herr.hengine.hconf.h 사설 인증서 생성테스트를 위해서 인증서가 필요하므로 사설 인증서를 하..

Dev 2016.12.15

하스켈로 배우는 프로그래밍 도서 후기

스칼라를 공부하면서 언어는 스칼라를 사용하면서 구현을 fp가 아닌 oop로해서 fp를 더 공부해볼 요량으로 하스켈 책을 하나 보려고 찾아보니 스칼라 처럼 달랑 한권의 번역서만 나와있는데...이건 그나마 절판!2009년에 나온 책이 왜 벌써 절판인가 했는데...아무리 국내에서 하스켈이 인기가 없다지만, 이 책은 번역과 편집이 엉망이라 안팔린거 같다. 펼치자마자 나오는 어색한 용어들...'객체지향 언어'을 '물건 중심 언어'라고 하고 '다형성'을 '여러모양새'라고 하는...처음에는 무슨 소리인가 했다.이건 좀 너무하잖아....이상하게 번역한 용어가 한두개가 아니다.업계 보편적인 용어를 왜 억지로 한글화 하려는지 이해하기 어렵다.아마 서점에서 미리 펼쳐봤으면 구매하지 않았을 것이다. 책의 편집은 8~90년대 ..

Dev 2013.11.19
반응형