리팩토링: Avoid return statement with value if you can.

영어로 제목을 쓰려던 것은 아니었으나, “Catch me if you can”을 의식하다보니, 이런 제목이 되었습니다. 사실 영어는 종종 의도를 드러내는데 유리하기도 하구요. 🙂 프로그래밍 언어에서 return문은 아주 중요한 역할을 합니다. 프로그래밍을 수학적 모델로 표현하는데 있어서, 함수라는 개념은 핵심적인 역할을 하고 있으며,

디버깅: 누가 나의 this를 옮겼을까? #1. 아이디어.

C++ 컴파일러들은 아주아주 훌륭합니다. 최적화를 켜면 이리저리 쿵짝쿵짝 뭔가 대단해보이는걸 해치워서 코드를 빠르게 만들죠. 요런류의 최적화중 중요한 한가지 기법이 특정 변수를 register를 사용하게 만드는 겁니다. 넵. 대단합니다. 멋지죠. DRAM보다는 Cache가 빠르고 Cache보다는 Register가 빠르니까요. 빠른게 최고인겁니다. 하지만, 디버깅 과정에서는 재앙입니다.

디버깅: 마음가짐.

전 사실, 대학에서 공학을 전공했습니다. 그것도, 산업공학이란 시스템을 다루는 공학을 전공했지요. 대학시절이 제게 남긴 가장 큰 가르침은 시스템에 대한 정의와 공학적 문제 해결 방법입니다. 시스템에 대한 정의는 언젠가 설계와 관련한 글을 쓸때 써먹게 될 것이고, 오늘 이야기할 디버깅은 공학적 문제

Zero-configuration: automatic lookup

Zero Configuration: Simple is best는 어렵다.에서 언급한 바와 같이, 현재 제작중인 소프트웨어의 모듈/시스템수는 엄청나게 증가해버렸다. 서로 연동해야하는 모듈이 많으니 이리저리 입력해야하는 네트워크 정보(각 노드의 IP와 Port)가 매우 많다. (제어UI에는 8개정도지만, 세밀하게 조정에 들어가면 셀수 없이 많다.) 이런 상황에서 각 노드들을

XML, XPath 그리고 소프트웨어 테스팅

보통 TDD(Test-driven development)는 잘 짜여진 테스팅 케이스를 이용해 소프트웨어의 수행 결과를 점검하는 형태로 이루어진다. 문제는, 이 방식의 접근은 처음부터 TDD를 하지 않으면 적용하기 힘들다는 거다! 게다가 최근 TDD가 없이는 개발이 불가능한 상황에 봉착했다. 입력 데이터의 종류는 수없이 많고, 이 데이터의

Zero-configuration: Simple is Best는 어렵다.

Zero-configuration이란 말을 처음 접했던 건, 한국에서 널리 사용되는 자막 파일인 SMI에 대한 지원을 Mac OS X용 통합 코덱(?)인 Perian에 넣을 수 없다는 애플포럼의 한 쓰레드 때문이었다. 요지는, SMI를 지원하기 위해서 자막의 인코딩 셋업같은 별도의 세팅이 필요하기 마련인데, 이게 Zero-configuration에 위배되기

XMLCC: XML생성을 위한 C++ 라이브러리

어쩌다 이름이 XMLCC가 되었는지는 모릅니다. 그냥 손가락에서 저렇게 나왔어요. 신의 뜻이라 생각하고 넘어갑니다. 씨익- 사건의 발단은 회사에서 XML을 생성해서 서버에 전송해야 하는 일이 생겨서 std::stringstream을 이용해 XML을 생성하다 보니 코드가 너무 지저분해지는 겁니다. 후.. 이런저런 고민을 한 끝에 좀 깔끔하게

XML에 대한… 고찰?!!

XML을 처음 접하고 사용하기 시작한게 2000년 경이었을테니, 얼추 7년정도 사용한듯 하다. 2000년에는 XML문서버젼관리 시스템 프로젝트를 했었고, 그 뒤에는 PlayAction이란 사이트 겸 CMS를 만드는데도 사용했었고, 회사다니면서는 각종 설정파일, 유틸리티, 메타정보등을 생성/관리하는데 사용해왔다. 그리고, C++로 xml pulling parser방식의 인터페이스를 가진 라이브러리도 고민했었다.

C++ Native AOP의 가능성.

Aspected Oriented Programming(AOP)을 가장 잘 지원하고 있는 언어를 꼽으라면, 숨도 쉬지않고 Java를 선택할 수 있겠다. Java의 경우에는 주로, VM코드를 직접 수정하는 방식으로 구현하는 모양인데, C++에서 기계어를 고치고 있을 수는 없는 것 아닌가.. 상상만 해도 우울하다.

표준안을 지키잣!

이전까지 쓰던 STLPort는 5.0.1이었습니다. 뭐 큰 문제도 없고 해서 그냥그냥 쓰고 있었는데, 5.1.0이 나온걸 보고 업그레이드를 결심. 다운로드후 컴파일하고 프로젝트의 세팅을 전부 변경한 뒤에, 빌드를 시작했지요. (시켜놓고 회식갔다가 오늘 아침에 봤습니다.) 빌드에 오류가 났습니다. 흐음. 5.0.1에서는 오류가 없었는데, 5.1.0에서는 오류가