프로그래밍
옵저버 패턴 [Observer Pattern] : 정보는 뿌릴태니 알아서 들으렴!
2017. 5. 29.오랜만에 다시 디자인 패턴을 포스팅하는 것 같다. 마찬가지로 C++가 아닌 C#이나 Javascript, Python을 이용하여 프로그래밍하다가 C++을 하려니 간단한 예제인데도 포인터로 실수 좀 했다 ㅎㅎ... 이번 패턴은 옵저버 패턴이다. 직역하면 관찰자, 감시자 정도일 것 같은데 이름만 들어서는 감시하는 객체가 빡시게 일할 것 같지만 사실 감시당하는 객체 쪽에서 열심히 일해주어야 한다. (처음 배울 때 관찰당하는 객체와 하는 객체의 역할이 헷갈려서 고생 좀 했었지...) 기본적인 메커니즘은 '관찰하고 싶은 객체'가 '관찰당하고 싶은 객체'에게 "나 널 관찰하고 싶어!"라고 알려주면, '관찰 당하고 싶은 객체'가 기억해 두었다가 특정 사건이나 변화가 일어날 때 '관찰하고 싶은 객체'에게 찾아가 알려주..
MPU-9250 DMP 라이브러리와 사용법
2017. 5. 23.이번 학기 동안 거의 영상 편집이랑 요양 위주로 생활을 했기 때문에 다소 프로그래밍 감이 떨어졌다. 다시 프로그래밍 감을 살려보기 위해 평소에 만들어 보고 싶었던 DIY VR 컨트롤러를 만들기로 했다. 마침 저번 해커톤 때 사용하고 남은 아두이노와 조이스틱, HC-06이 남아있어서 활용해보기로 했다. 기울기와 위치를 측정해줄 IMU 센서가 없었기 때문에 아두이노 쇼핑몰에서 'MPU-9250'와 추가 '조이스틱'을 구매했고, 장착할 센서가 많기 때문에 편리하게 GND와 VCC를 확장할 수 있는 '아두이노 센서 확장 실드 5.0'을 구매해서 사용하였다. 문제가 발생?! 센서를 보다 쉽게 다루기 위해 MPU-9250관련 라이브러리들을 살펴보았다. 아두이노에 사용되는 센서 라이브러 중 가장 유명한 'I2Cdev..
React와 Redux에 관한 공부 자료
2017. 2. 14.옛날에 React Native를 사용하여 모바일 앱을 개발한 적이 있다. 지금도 나오고 있는 물건이고, 첫 모바일 개발 경험치고 썩 나쁘지 않은 물건이였기 때문에 여유가 된다면 계속 공부해보고 싶은 물건중 하나이다. 하지만, 사실 모바일 개발은 커녕 게임 개발도 쉬엄쉬엄하고 있는 터라 React를 다시 공부하고 있지는 않지만 친구가 React 관련 좋은 공부자료를 공유해서 간단하게 React와 Redux에 관하여 공부할 거리를 정리 & 공유하는 포스팅을 작성해보려한다. 침고할만한 자료네이버 D2 블로그 포스팅 - React 적용 가이드웹 개발에 관련된 것들은 네이버 D2 포스팅에 정말 양질의 글들이 많이 올라오는 편이다. 아무래도 네이버에서 주력으로 개발하고 있는 분야이기 때문인것같다. 블로그 포스팅 전..
git을 배우는 방법
2016. 9. 27.SW 마에스트로 과정을 밟으면서 가장 실용적으로 배운 기술 중 하나가 바로 Git이다. 나는 Git을 배우기 전에는 소스코드를 파일 형태로 관리했다. 아마 다른 학부생들도 아래와 같이 관리했을 것이라고 생각한다. (혹은 관리하지 않거나...) 파일 별로 관리하게 되면 아래와 같은 상황이 벌어진다. 사실 이렇게 관리하는 방법은 우리들이 직관적으로 사용해왔다. 내 경우에는 중학교 때부터 PPT 따위를 파일명으로 관리했던것같은데 중학생 조차 생각해 낼 수 있을 정도로 간단하고 직관적인 방법이다. 무엇이 문제일까?단순하게 생각나는 점을 보면, 일단 이렇게 관리하게되면 각 버전마다 내가 무엇을 고쳤는지 알 수 없다. 만약 20가지 정도의 파일로 버전을 관리했다고한다면 "이부분은 지금 것말고 예에에전에 만들었던 것..
프로토타입 패턴 [Prototype Pattern] : 복사하여 인스턴스 만들기
2016. 8. 4.이번에 다룰 패턴은 Prototype 패턴이다. 이 패턴은 인스턴스를 생성할 때 사용하는 패턴 중 하나인데, 객체를 복사하는 방식으로 인스턴스를 생성해 낸다. 마치 만화 나루토에서 나오는 그림자 분신술 같은 느낌이다. 일단 UML을 한번 살펴보자 UML Prototype을 상속받아 createClone() 메소드를 구현하는 ConcretePrototype으로 UML이 구성되어있다. 상당히 심플한 느낌의 UML이다. 원형을 하나 들고 있고, 들고있는 원형이 Prototype을 상속받아 createClone() 메소드를 구현한 상태라면 Client에서 원할 때 원형으로 클론을 만들어 사용할 수 있다. 왜 사용하나? 사실 인스턴스를 만드는 방법은 익히 일고있듯이 new Somthing() 을 이용하여 인스턴스..
싱글톤 패턴 [Singleton Pattern] : 유일한 하나의 인스턴스 만들기
2016. 8. 4.Singleton은 내가 처음 접한 디자인 패턴이기도 하고, 잘 사용하면 정말 편리하게 사용할 수 있는 패턴이다. 프로그래밍을 하다 보면 객체 인스턴스가 유일하게 존재해야 하는 경우가 있다. 가령 게임에서는 특정 데이터나 상태를 Managing 할 때, 예를 들어 게임의 전반적인 상태를 관리해주는 GameManager같은 경우에는 누구나 쉽게 인스턴스에 접근할 수 있으면 좋지만, 여러 개 생겨나면 안된다. 이런 경우 Singleton 패턴을 사용하게 된다. UML 먼저 간단하게 UML을 살펴보자. Singleton의 UML은 조금 독특하게 생겼다. 일단 노드가 하나이다. 노드가 하나인 것도 이상한데, 자기 자신을 가지고 있다…. 뭔가 독특한 형태의 UML이다. 이번 패턴은 UML보다는 소스 코드가 더 중..
유니티 Mono Editor대신 VS Code 사용하기
2016. 8. 4.Window에서 유니티(Unity)로 게임을 개발하는 분들은 신의 IDE라고 불리는 Visual Studio로 개발을 하게 되지만 Mac에서는 Visual Studio를 사용할 수 없다. 특히, Unity의 Mono Editor를 사용할 때면 정말 VS가 그리워지는데, 모노가 생각보다 좋은 개발 경험을 주지 않기 때문이다. 대략 단점을 정리해보자면 1. 느리다. 여러가지 기능이 재공되지만 기능에 비해 많이 느리다는 느낌을 준다.2. 잘 죽는다. 왜 크래시가 나는지 모르겠지만, 엄청 자주 죽는다. 이때 오토 세이브가 없었다면....3. UI 커스텀이 제한적이다. UI 테마 커스텀이 너무 제한적이다. (Xcode도 마찬가지...)4. 한글을 쓸 수 없다. 간단하게 주석을 달거나 유니코드 문자열을 간단하게 이..
팩토리 메소드 패턴 [Factory Method] : 자식 클래스에서 인스턴스 생성하기
2016. 8. 4.Template Method 패턴에서 부모 클래스에서 알고리즘의 레이아웃을 정하고 자식 클래스에서 구체적인 구현을 하였다. Template Method 인스턴스 생성에 적용한 패턴이 바로 Factory Method 패턴이다. 이전에 Template Method 패턴과 연계하여 공부하면 좀 더 빠르게 이해할 수 있을 것이다. 어디에 사용되나? 목적과 의도를 먼저 말하자면, Template Method와 비슷하다. Template Methode에서 어떤 알고리즘의 레이아웃을 정하고 자식 클래스에서 구체적인 구현을 하였다면, Factory Method는 부모 클래스에서 객체가 어떻게 생성되는지 구체적인 레이아웃을 잡고 자식클래스에서 구체적으로 구현하는 방법이다. 주로 인스턴스 생성 시퀸스가 비슷하면서 복잡한 ..
템플릿 메소드 패턴 [Template Method] : 자식 클래스에서 구체적으로 처리하기
2016. 8. 3.책에서도 있는 내용이지만, 템플릿 메소드 패턴은 문자 모양을 따라 구멍이 뚫려있는 얇은 플라스틱판에 비유되곤 한다. 전체적인 골격을 잡아두고, 그것을 연필로 쓰면 연필로 만든 문자, 붓으로 쓰면 붓으로 만든 문자가 된다는 식의 비유다. 사실 처음에는 이런 비유가 확 와 닿지는 않았다. (사실 지금도 적절한 비유인지 잘 모르겠다.) 하여튼 템플릿 메소드 패턴은 "전체적인 메소드(알고리즘)의 흐름(레이아웃)을 부모 클래스에서 정해두고, 자식 클래스에서 자세한 내용을 구현하여 처리하는 패턴"이라고 할 수 있다. UML 개인적으로 앞에서 책에서 설명했던 비유나 말로는 이 패턴의 의도를 파악하기 조금 그랬기 때문에, 이번에는 먼저 코드를 보고 설명을 하고자 한다. (사실 다른 것도 이렇게 하는 게 맞긴 한데) 먼..
어댑터 패턴 [Adapter Pattern] : 바꿔서 다시 이용하기
2016. 8. 3.어댑터는 우리가 일상생활 속에서 잘 사용하고 있는 물건중 하나이다. 예를 들어 HDMI 케이블에 MiniHDMI 어댑터를 사용하여 HDMI to MiniHDMI 처럼 사용한다든지, 110V짜리 플러그를 어댑터를 사용하여 220V에 연결하는데 사용하고 있다. 어댑터는 이처럼 "제공되고 있는 것과 필요한 것 사이를 연결해주는 역할"을 하고 있다. Adapter 패턴은 왜 사용할까?! 앞서 언급했듯이 어댑터는 제공되고 있는 것과 필요한 것 사이를 연결해주는 역할을 한다. 그러면 Adapter 패턴은 왜 사용해야 할까? 우리는 항상 처음부터 프로그래밍한다고 할 수 없다. 분명, 오픈소스 라이브러리를 사용하거나 프로젝트 중간에 합류해서 작업해야 하는 경우가 생긴다. 이럴 경우에 기존에 작업하던 코드들을 Adapt..
이터레이터 패턴 [Iterator] : 순서대로 처리하자
2016. 8. 2.이라는 책을 가지고 복습하는 것이기 때문에 책에 나와 있는 패턴을 순서대로 공부해보려고 한다. 좀 멀리 떨어져 있더라도 비슷한 모양이나 역할의 패턴들이 있기는 하지만, 글 내부에 관련 패턴 형식으로 정리하면 될 것 같다. 다른 학교는 처음에 어떤 언어를 배울지는 모르겠다. 내가 알기로는 H 대학교는 파이썬을 배우고, K 대학교에서는 C를 먼저 배운다고 알고 있다. 하지만 인하대학교에서는 OOP라는 명목으로 C++를 가르치고 있고 다른 학교도 OOP라는 이름으로 Java를 가르칠 것이라고 생각한다. 그 두 개를 배워서 써본 사람이라면 를 어디서 쓰지는 않아도 들어봤을 것으로 생각한다. iterator?! C++의 그것?맞다. 여러분이 C++ 에서 사용하는 iterator다. 반복 자라 고도하는데 다음 코드..
리액트 네이티브(React Native) 시작하기
2016. 7. 29.소프트웨어 마에스트로 과정에 참여하면서 게임 외에 가장 관심이 생겼던 분야는 모바일과 머신러닝이었다. 게임은 이매진컵이나 기타 개인 프로젝트로 진행해봤었지만, 흔히 하는 안드로이드나 iOS는 만들어 본 적이 없었기 때문에 간단한 앱을 척척 만들어 내는 주위 동기들을 보면 신기할 따름이었다. (반대로 동기들이 내가 게임 만드는 걸 신기해하더라….) iOS?! Android?!아무튼, 내가 이전에 해보지 않았던 새로운 분야였기 때문에 이것저것 많이 시도해보았다. 처음에는 Swift를 이용하여 iOS를 좀 만져봤고, 다음에는 안드로이드를 살짝 만져보았지만, 자바를 좋아하는 편이 아니라 금방 싫증이 났다. 좀 더 다른 방법들을 찾아보다가 FUSE Tool을 사용해 보았는데, 안 하던 분야 + 야매학습 덕분인지 ..