본문 바로가기

개발49

goto 대신에 do { ... } while (false)를 사용한 에러처리 C/C++ 코딩을 하다보면 흔히 아래와 같은 에러처리 코드를 만나게 된다. ... if (!condition1) goto cleanup; ... if (!condition2) goto cleanup; ... if (!condition3) goto cleanup; ... if (!condition4) goto cleanup; ... cleanup: // 메모리 해제등의 정리 작업 고급 언어에서는 goto를 사용하지 말라고 많이 하고 실제 goto의 사용이 스파게티 코드를 만드는 경우가 많기 때문에 사용하지 않는 것이 좋지만 C/C++에서는 finally를 지원하지 않기 때문에 위와 같은 코드는 묵인해주는 경우가 많다. 그래도 goto를 피하고 싶기 때문에 아래처럼 하기도 한다. ... if (!condit.. 2010. 3. 25.
Windows Phone 7 SDK 공개 마이크로소프트가 MIX10에서 Windows Phone 7 SDK를 공개했습니다. 설치해서 잠깐 사용해봤는데 쉽게 Windows Phone 7 애플리케이션을 만들 수 있도록 되어 있습니다. Windows 7에서만 설치할 수 있고 아래 URL에서 다운로드할 수 있습니다. http://developer.windowsphone.com/ http://go.microsoft.com/?linkid=9713250 http://www.microsoft.com/downloads/details.aspx?FamilyID=2338b5d1-79d8-46af-b828-380b0f854203&displaylang=en 아직 CTP 버전이긴 하지만 기본적인 Windows Phone 7의 모습을 살펴 볼 수 있었고 예상대로 C# 기반.. 2010. 3. 19.
Flex Image에서 리사이즈 화질 문제 Flex에서 이미지를 리사이징해서 보여 주는 경우 부드럽게 안 나오고 깨져 보이는 현상이 있다. 해결 방법을 찾아보니 의외로 그렇게 간단하지 않았다. 1. BlurFilter를 이용해 적당히 블러를 준다. 2. Image content(Bitmap)의 smoothing Property를 true로 변경한다. 3. 별도의 인터폴레이션 알고리즘을 구현하거나 구현한 라이브러리를 사용한다. 위의 이미지가 왼쪽부터 각각 그냥 이미지를 리사이징한 경우, BlurFilter를 사용한 경우, smoothing Property를 사용한 경우이다. 3번은 알고리즘을 구현하거나 라이브러리를 사용하는 것은 꼭 필요한 경우가 아니라면 별로 사용하고 싶지 않아서 테스트해보지 않았다. 1번 BlurFilter를 사용하는 경우 어떤.. 2009. 5. 20.
Flex Builder로 AIR 어플리케이션 만들기 AIR 도움말에 있는 Flex Builder로 간단한 Hello World를 만드는 예제를 직접 따라해봤다. Flex Builder를 실행해 AIR 프로젝트 만들기 1. Flex Builder 3를 실행한다. 2. 메뉴에서 File > New > Flex Project를 선택한다. 3. Project name을 AIRHelloWorld로 입력한다. 4. Application type을 Desktop Application으로 선택한다. 5. Finish를 눌러 완료한다. 코드 작성하기 1. WindowedApplication 컴포넌트의 title 속성을 "Hello World"로 입력한다. 2. Label 컴포넌트를 추가하고 text 속성을 "Hello AIR"로 설정하고 가운데 정렬로 배치한다. 3. 아.. 2009. 5. 14.
IE 보호 모드에서 비보호 모드 프로세스 실행 UAC 환경(Windows Vista, Windows 7)의 IE7, IE8 보호모드에서 동작하는 ActiveX에서 실행 파일을 실행할 경우(브로커 프로세스) 비보호 모드로 열린다는 보안 경고창이 나온다. 이 문제를 해결하려면 아래와 같이 자동 권한 상승 정책을 레지스트리에 등록해주어야 한다. {347DAD60-9849-4921-89B6-16FA1B7936CC}는 임의의 GUID값이다. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Low Rights\ElevationPolicy\{347DAD60-9849-4921-89B6-16FA1B7936CC}] "AppName"="실행 파일명" "AppPath"="실행 파일 위치(디렉토리)" "Policy"=d.. 2009. 5. 13.
Local PC의 IP 리스트 얻기 Local PC의 IP를 얻기 위해서 WinSock의 gethostbyname을 사용하는 경우 "localhost"를 파라미터로 주면 원하는 실제 IP가 아닌 127.0.0.1이 나온다. PC의 실제 IP를 얻으려면 실제 호스트 이름을 사용해야 하는데 아래와 같은 방법으로 가능하다. char hostname[512]; gethostname(hostname, 512); hostent* host = gethostbyname(hostname); 또는 "localhost"로 gethostbyname을 하면 실제 호스트이름을 알 수 있기 때문에 아래처럼 할 수도 있다. hostent* localhost = gethostbyname("localhost"); hostent* host = gethostbyname(lo.. 2009. 4. 24.