지방에서 일 하고 있어서 할 수 있는 개발 관련 스터디가 많이 없는데, 좋은 기회가 되어 온라인으로 책터디를 진행하게 되었습니다. 개발 관련 서적을 읽고, 간단하게 후기를 남기는 방식의 스터디였습니다. 적극적으로 이끌어주시는 리더님이 좋았고, 저를 포함한 팀원들의 읽고 난 다음에 책과 관련된 이야기를 나누는 것도 신선했습니다. 그리고 온라인으로 진행하는 스터디가 생각보다 큰 어려움이 없다는 것을 알 수 있게 되어 더 좋았습니다. 이번에 읽은 책은 클린 코드로, 첫 인상과 현재 느낌이 제일 다른 책이라고 말하고 싶습니다. 저는 기존 서비스를 유지보수하고, 새로운 기능을 추가하는 업무를 주로 맡고 있습니다. 남이 작성한 코드를 유지보수를 해야 할 때가 많았는데, 힘들었던 코드도 있었고, 비교적 수월하게 읽어..
순서는 읽고 있는 모던 C++ 입문 (저자 : 피터 고츠슐링) 의 목차를 따라 인상적인 내용을 기록하고 있습니다. 1. 변수타입 추론 - auto 1 2 3 4 5 int a = 0; int b = 1; auto c = a + b; printf("c = %d\n", c); cs 변수 타입을 추론할 수 있는 auto가 정말 괜찮습니다. 특히 stl 사용시 끝없이 길어지는 자료형은 auto 한번만 넣으면 깔끔하게 해결되서 특히 더 잘 사용하고 있습니다. 2. 범위 기반 for문 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include #include int main() { // std container에서 사용하는 범위 기반 for문 std::list multipleOfTwo = {1..
이전에 좋은 기회가 되서, C++ 세미나에 갔다올 기회가 있었습니다. 정말 좋은 기회였지만, 문제는 제가 모던 c++을 정말 모른다는 것.. 원래 얻을 수 있던거에 한 2 / 3정도 밖에 못 얻어온 느낌이였습니다. 사내에서 stl 사용을 지양해왔기에, 공부를 할 생각을 안했었는데, 하지만, 갔다오고 나서 느낀건, "모던 c++을 공부해야 한다..." 이 편한걸 왜 안쓰고 있었는지... 매일 매일 후회하며 요즘은 모던 c++을 공부하고 있습니다. 그래서 거창하게는 말고, 제가 여태껏 몰랐던 내용, 혹은 도움될 만한 내용들에 대해 정리를 해 보려고 합니다. 정리한 내용은 위 게시글에 링크로 남기도록 하겠습니다.
1. 템플릿 메소드 패턴오늘 포스팅하는 템플릿 메소드 패턴은 우리가 모르게 정말 많이 사용하고 있는 패턴입니다. 1) 정의메소드에서 알고리즘의 골격을 정의하는 패턴. 알고리즘의 여러 단계 중 일부는 서브 클래스에서 구현할 수 있다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브 클래스에서 특정 단계를 재정의할 수 있다. (출처 : 헤드퍼스트 디자인 패턴) 간단하게 말하면 알고리즘의 틀(Template)을 만들기 위한 것입니다.전체 틀은 동일하고, 바뀌는 부분만 서브클래스에서 재정의해준다면, 실제로 코드의 중복을 크게 줄일 수 있을 겁니다.이 템플릿 메소드 패턴의 가장 흔하고 간단한 예는, std::sort의 compare 함수입니다. sort를 기본 틀이 아닌 원하는 기준으로 하고 싶..
1. 퍼사드 패턴이란?클래스 라이브러리 같은 어떤 소프트웨어의 다른 커다란 코드 부분에 대한 간략화된 인터페이스를 제공하는 객체. (출처 : 위키백과) 일련의 사용 방법이 복잡한 클래스들을 묶어 단순화된 인터페이스를 구현해서 사용하기 쉽게 만들 수 있는 패턴입니다.실제로 구현을 해 놓은 것을 보면 확인할 수 있겠지만, 매우 단순한 패턴입니다. 하지만, 이 퍼사드 패턴의 특징으로 인해 서브시스템의 연결성이 줄어들 수 있고, 최소지식원칙을 지키는데 큰 도움이 됩니다.그림으로 보면 매우 쉽게 퍼사드 패턴에 대해 이해할 수 있습니다.복잡한 서브시스템 클래스를 퍼사드 클래스가 묶어 가지고 있어 클라이언트 쪽에서는 서브시스템들의 복잡한 동작을 생각할 필요 없이 퍼사드 클래스에 명령만 하면 원하는 동작을 실행시킬 수..
오늘은 어댑터패턴에 대해 포스팅 하겠습니다. 1. Adapter Pattern 이란?어댑터 패턴(Adapter Pattern)은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴이로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해 준다 (출처 : 위키백과) 간단하게 예를 들자면, 어댑터패턴은 돼지코입니다. 한국의 전자기기를 외국에서 사용해야 합니다. 물론 같은 국가도 있겠지만, 분명 전원 소켓이 다른 국가가 있고 여기에서 한국에 표준화된 전가기기를 사용하려면 반드시 돼지코가 있어야 합니다. 어댑터 패턴도 동일합니다. 기존에 사용하던 클래스가 있습니다. 고객이 제공한 클래스를 무조건 사용해야 한다고 요구를 받았을 때, 기존 클래스와 고객사에서 제공..
오늘은 커맨드 패턴에 대해 포스팅 하겠습니다. 1. Command 패턴이란?커맨드 패턴(Command pattern)이란 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 매서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴이다.- 출처 : 위키백과 command : 명령, 지휘라는 뜻을 가지고 있는 단어 입니다. 항상 디자인 패턴을 배울 때 마다 보는 단어가 캡슐화입니다. 매번 달라지는 부분을 클래스로 엮는데, 이번엔 요청(Command)이 바뀌어서 이 부분을 분리를 하는 패턴입니다.커맨드 패턴의 예시에 대해 먼저 이야기 해 보도록 하겠습니다. 고객사에게 리모컨의 API 디자인을 의뢰받았습니다. 각 버튼은 집 안의 선풍기, 에어컨, 거..
매일 개발환경 구축만 하다가 포스팅이 끝나는 것 같은 기분이 드는 건 저만 그런거겠죠?작년에 Anaconda를 이용한 개발환경 구축 포스팅으로 처음 글을 썼던 것 같은데, 1년 새에 제 개발환경이 많이 바뀌었습니다. 바로, 우분투 쓰면서 줄곧 써보고 싶던 맥북을 드디어 마련하게 되었습니다. 그렇게 얼마 전부터 모든 개발환경을 다시 구축하고 있는 중입니다. 그 중 Mac으로 파이썬 개발환경 구축하는 과정을 포스팅하려 합니다. 1. 패키지 관리자 설치유닉스, 리눅스 기반 OS의 장점 중 하나인 "한 줄로 프로그램 설치!!" 를 가능하게 해주는 고마운 친구입니다. 예전에 우분투에선 apt-get을 이용했었는데, 맥에선 homebrew를 이용한다고 합니다.https://brew.sh/index_kohomebre..
오늘은 싱글톤 패턴에 대해 소개해보려고 합니다.제가 제일 처음 접한 디자인패턴이라, 여러모로 특별한 의미를 가지는 디자인 패턴이고, 제가 생각하기엔, 가장 많이 활용되는 디자인패턴이 아닌가 싶습니다. 1. 싱글톤 패턴이란? Single, 즉, 단 하나밖에 없는 인스턴스입니다.특징은 생성자가 여러번 호출 되도 결국 이 인스턴스는 전체를 통틀어 단 하나밖에 없는 것이 특징입니다. 예를 들자면, 한 프로그램 통틀어서 필요한 기본설정 정보는 굳이 여러 개일 필요가 없습니다. 설정정보는 하나만 가지고 있고, 설정이 필요한 곳에서 설정 정보를 이 싱글톤으로 받아 쓰게 구현 하면, 중복을 줄일 수 있습니다.이 디자인의 특징적인 면은, 처음부터 전체 코드에 통틀어 한 객체 밖에 못 만들게 설계 되어 있다는 점에 있습니..
오늘은 두 번째 디자인 패턴인 옵저버패턴에 대해 포스팅 하려고 합니다. 1. 옵저버 패턴이란, 옵서버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 발행/구독 모델로 알려져 있기도 하다. - 출처 : 위키백과 간단하게 이야기 하면, 어떤 객체의 상태가 변하게 되면, 변한 객체가 그 밑의 관찰자들에게 변했다는 것을 알리는 디자인 패턴의 일종입니다. 헤드퍼스트 책의 예제를 활용하여 (동일하진 않고, 간결한 설명하기 위해 케이스를 줄였습니다) 옵저버패턴을 설명해 보겠습니다. ..