2011년 5월 29일 일요일

Loose Coupling

아래의 내용은 위키(http://en.wikipedia.org/wiki/Loose_coupling)의 내용을 번역 정리한 것입니다.
Loose coupling
일반적으로 컴퓨팅과 시스템 디자인에서 언급되는 "Loosely Coupled 시스템"은 해당 시스템이 사용하거나 가지고 있는 컴포넌트에 대해서 아주 적은 정보를 가지거나 아예 몰라도 사용가능하게 구현된 시스템을 의미한다. 정보가 적거나 모른다는 것은 상대 클래스의 캐슐화와 관련된 것이 아니고 클래스 자체에 대한 정보를 말하는 것이다.

2011년 5월 23일 월요일

직렬화(Serialization)

직렬화, 객체 직렬화(Serialization)란 객체 지향 프로그래밍에서 메모리 상의 객체의 인스턴스를 파일 혹은 네트워크를 통해 입/출력하는 방법을 의미한다.
일반적으로 시스템의 입장에서는 메모리 상의 객체가 어떻게 이루어 져 있는지 모르기 때문에 직렬화라는 작업을 통해 바이트 배열의 형태로 변경하고 이것을 파일 혹은 네트워크를 통해 출력한 다음 사용하는 곳에서 역직렬화(Unserialization)을 해 객체로 복원하는 것이다.

2011년 5월 11일 수요일

안드로이드 앳 홈(Android@home)

구글에서 다음 OS버전인 아이스크림 샌드위치를 내놓으면서 그 동안 장치의 종류(Smart Phone, 태블릿, Google TV)에 따라 몇개로 분리되었던 버전을 하나로 통합하겠다고 했단다.
그러면서 ADK(Accessory Development Kit)도 제공하겠다고...
아마도 가정 내 가전 및 디지털 장치들을 통합해 가정 내 유비쿼터스 환경을 만들겠다는 얘기인 것 같다.
국내외 통신사, 제조사에서 열심히 스마트폰을 팔아 기반을 닦아 놓았으니 구글을 씨만 뿌리면 되는 셈이군.
구글에서 발표하는 신기술을 접할 때 마다 드는 생각은 아무도 생각하지 못한 것을 만들어 냈다가 아닌 누구나 생각해 오던 것을 구체화 한다는 것이다.
먼저 청사진을 만들어 두고 꾸준히 그 실현을 향해서 나간다는 것이 참 대단하게도, 부럽게도 느껴진다.

2009년 4월 7일 화요일

Hudson + gTest에서의 결과파일(XML)문제점.

Hudson에서 gTest를 붙이기 위한 작업을 하는 중이다. 여러가지 문제가 있어 붙이기는 했으나 별로 깔끔하지 못해 java만큼은 아니지만 되도록 깔끔하게 붙여 보라는 지시가 있어 이것 저것 뒤지다보니 왠지 아래와 같이 3가지를 해결해야 할 것 같다. 1. Ant사용. 2. gTest 결과 파일(google mock도 포함)을 xml파일로 출력. 3. 결과로 나온 xml을 Hudson이 분석케 한다.(바라는 결과는 junit을 사용할 때와 같이 분석 그래프를 그려주기를...) 1.번은 배경지식이 없어 금방 되지 않을 것이므로 pass!! 2.번은 문제 발생 - Hudson군이 "None of the test reports contained any result" 라고 불만을 털어놓음. 3.번은 2번으로 인해 stuck in. 5시간 가까운 googling을 통해 답을 얻었음. http://groups.google.com/group/googletestframework/browse_thread/thread/3d5fb8373a3031b6 왕장용씨의 답이 걸작이다 "Hudson에게 해결해 달라고 해라"

2009년 4월 1일 수요일

Xerces에서 에러발생.

잘 사용하고 있던 Xerces를 넣은 class에 사용자 편의를 위해 class의 멤버변수로 집어넣은 XercesDOMParser 및 class 객체 생성부분에 Shared_ptr을 도입하기로 했다. 아래와 같이 소스 수정을 마치고 돌려보니... class DocumentBuilder{ ... m_pParser = boost::shared_ptr(new XercesDOMParser); ... } 호출부 boost::shared_ptr builder(xml::DocumentBuilderFactory::newDocumentBuilder()); 컴파일 에러는 나지 않았으나 런타임에서(소멸시)메모리 액세스 violation이 발생하는 것이 아닌가? 삽질의 예감이 강하게 다가왔다. 하루 종일 잡고 SangShow를 했는데도 원인을 알 수 없었다. 기껏 찾은 것이라곤 m_pParser을 저세상으로 보낼 때 문제가 발생하는 것 같다는 것 정도. 헛다리를 짚은지라 googling도 엄한 검색어로만 하고... 시간은 흘러가고... 아침일찍 나와 두시간을 더 이짓거리를 하다가 결국 찾았다. Xerces관련 게시판에서 보니 Xerces관련 객체들을 사용하려면 반드시 XMLPlatformUtils::Initialize(); 를 호출하고 사용후에는 XMLPlatformUtils::Terminate(); 을 호출해 주어야 한다. 예전 버전에서는 항상 쌍으로 그리고 단발성으로 밖에 호출이 안되었으나 최근 버전에는 여러번 호출도 가능하게 되었다고 한다. 실체로 여러번의 initialize()를 호출하니 terminate()를 호출해서 객체의 소멸에 아무 문제가 발생하지 않았다.