원격 조명 제어 유스케이스 개요 원세종 군은 하루 일과를 마친 후 지친 몸을 이끌고 집으로 귀가했다. 집에 혼자 살고 있기 때문에 귀가했을 때 집 안에 있는 불은 모두 꺼져있는 상황이다. oneM2M 사물 인터넷 서비스를 사용하지 않았던 한달 전까지만 해도, 원세종 군은 귀가 후에 거실, 주방, 화장실 등의 불을 일일이 켜고, 취침 전에는 다시 ...
1. oneM2M 기술규격 및 기술문서 소개
개요 oneM2M은 에너지, 교통, 국방, 공공서비스 등 산업별로 종속적이고 폐쇄적으로 운영되는, 파편화된 서비스 플랫폼 개발 구조를 벗어나 응용서비스 인프라(플랫폼) 환경을 통합하고 공유하기 위한 사물인터넷 공통서비스 플랫폼 개발을 위해 발족된 사실상 표준화 단체이다. 전세계 지역별 표준 개발 기구인 TTA(한국), ETSI(유럽), ATIS...
[WPF] 팝업 알림창 MVVM 패턴으로 구현하기
WPF 앱에서 특정 이벤트 발생시 화면 구석에 Popup Notification이 띄워지도록 해봅시다. 소스는 Growl Alike WPF Notifications 글을 참고해 만들었습니다. MVVM 패턴에 맞도록 변환했고, 앱 전역에서 호출할 수 있도록 정적 Singleton Wrapper 클래스를 정의하였으며, 외부에서 메시지 창 출력 요청시 메시...
[Git] 분산 환경에서 프로젝트에 기여하기
기여하는 방식에 영향을 끼치는 변수가 다음과 같이 몇 가지 있다. 활발히 기여하는 개발자의 수가 몇인지 선택한 워크플로가 무엇인지 각 개발자에게 접근 권한을 어떻게 부여했는지 외부에서도 기여할 수 있는지 (접근 권한) 첫 번째로 살펴볼 변수는 활발히 활동하는 개발자의 수이다. 이 활발한 개발자에 대한 기준은 얼마나 잦은 빈도로 코...
[Git] Centralized, Integration-Manager and Benevolent dictator workflow
이번 글에서는 프로젝트 기여자 또는 수정사항을 취합하는 관리자의 관점에서 작업물을 프로젝트에 어떻게 포함시킬지와 수많은 개발자가 수행한 일을 취합하고 프로젝트를 운영하는 방법을 배운다. 분산 환경에서의 워크플로 중앙집중형 버전 관리 시스템과는 달리 Git은 분산형이다. Git은 구조가 매우 유연하기 때문에 여러 개발자가 협업하는 과정을 더 다양...
[Git] Rebase 기초
한 브랜치에서 다른 브랜치를 합치는 방법으로는 두 가지가 있다. 하나는 Merge 이고 다른 하나는 Rebase 이다. 이 절에서는 Rebase가 무엇인지, 어떻게 사용하는지, 좋은 점은 무엇인지, 어떤 상황에서 사용하고 어떤 상황에서는 사용하지 말아야 하는지 알아 본다. 앞에서 설명한 “Merge 기초” 절에서 살펴본 예제로 다시 돌아가 보자. 두...
[Git] 리모트 브랜치
리모트 브랜치 리모트의 Refs는 리모트 저장소에 있는 포인터이자 레퍼런스이며 리모트 저장소에 있는 브랜치, 태그 등등을 의미한다. git ls-remote <remote-name> 명령으로 특정 리모트 혹은 모든 리모트 Refs를 조회할 수 있다. git remote show <remote-name> 명령은 특정 혹은 모든...
[Git] 브랜치 워크플로
브랜치 워크플로 브랜치를 생성하고 Merge 하는 것을 어디에 써먹어야 할까. 이 절에서는 유용한 몇 가지 워크플로를 살펴본다. 여기서 설명하는 워크플로를 개발에 적용하면 많은 도움이 될 것이다. Long-Running 브랜치 Git은 꼼꼼하게 3-way Merge를 사용하기 때문에 장기간에 걸쳐서 한 브랜치를 다른 브랜치와 여러 번 Merg...
[Git] 브랜치 관리
어떻게 충돌을 해결했고 좀 더 확인해야 하는 부분은 무엇이고 왜 그렇게 해결했는지에 대해서 자세하게 기록한다. 자세한 기록은 나중에 이 Merge 커밋을 이해하는데 도움을 준다. 브랜치 관리 지금까지 브랜치를 만들고, Merge 하고, 삭제하는 방법에 대해서 살펴봤다. 브랜치를 관리하는 데 필요한 다른 명령도 살펴보자. git branch 명...
[Git] 브랜치와 Merge 기초
실제 개발환경에서 겪을 만한 예제를 하나 살펴보자. 브랜치와 Merge는 보통 이런 식으로 진행한다. 작업 중인 웹사이트가 있다. 새로운 이슈를 처리할 새 Branch를 하나 생성한다. 새로 만든 Branch에서 작업을 진행한다. 이때 어떤 문제가 생겨서 그것을 해결하는 Hotfix 브랜치를 먼저 만들어야 한다. 그러면 아래와 같이 ...