본문 바로가기

분류 전체보기

UIView의 초기화 루틴 Overriding 프로그래밍을 하다보면 뷰가 생성될 때 맴버변수 초기화나 쓰래드 생성 처럼 초기화 과정이 필요한 경우가 자주 있습니다. 이를 위하여 UIView에서는 initWithCoder 와 initWithFrame 메소드를 제공합니다. 전자는 Interface Builder의 nib파일에서 생성되는 뷰를 위한 초기화 메소드이고 후자는 프로그램 소스에서 생성하는 뷰를 위한 초기화 메소드입니다. // nib에서 생성되는 뷰를 위한 초기화 루틴입니다. - (id)initWithCoder:(NSCoder *)coder { if (self = [super initWithCoder:coder]) { // 여기에 초기화 루틴을 구현합니다. } return self; } // 프로그래밍 소스에서 생성되는 뷰의 초기화 루틴입니다. .. 더보기
Xcode Console Debugging 프로그래밍을 하다보면 사용자의 연속적인 입력이나 연속적으로 발생되는 이벤트 과정에서의 디버깅을 해야할 필요가 있습니다. 이 경우 Breakpoint를 활용한 디버깅으로는 한계가 있습니다. 이 때 주로 사용하는 것이 콘솔을 활용한 디버깅입니다. Visual Studio에는 Output 콘솔과 TRACE 또는 DbgPrint 함수를 이용하여 콘솔 디버깅이 가능합니다. Xcode에서도 Debugger Console과 NSLog 함수를 이용하여 콘솔디버깅이 가능합니다. Xcode에서 Run메뉴의 Console 랑목을 선택하여 Debugger Console을 띄운 다음 소스에서 디버깅을 원하는 위치에서 NSLog 함수를 사용하면 됩니다. NSLog(@"pnt.x = %f, pnt.x = %f", pnt.x, pn.. 더보기
Excel 파일을 SQLite로 변환 1. 엑셀에서 유니코드 택스트 형식으로 저장합니다. (Tab Separated 형식으로 저장됩니다.) 2. Visual Studio에서 1의 텍스트 파일을 엽니다. 3. Replace 메뉴로 \t를 | 로 모무 변경합니다. (Regular expressions 를 사용하면 \t 를 변경할 수 있습니다. 4. Advanced Save Option 메뉴를 선택하여 Encoding을 Unicode (UTF-8 without signature) - Codepage 65001로 선택하고 Line endings를 Windows (CR LF)로 선택한 다음 저장합니다. 5. SQLite 커맨드 명령어 .import를 이용하여 택스트 파일을 디비로 임포팅합니다. (물론 엑셀 데이터 스키마에 맞는 테이블이 생성되어 있어.. 더보기
iPhone Developer Program 가입 후기 iPhone Developer Program 가입에서 iPod에서 필자가 만든 프로그램을 돌려보기까지 딱 3주 정도 걸렸네요 등록 신청을 위한 기간이 한 2주 걸렸는데 잘만 하면 일주일 이내에 모든 절차를 완료할 수도 있을 것 같습니다. 대략 3주전, 필자가 iPod 구매 몇일 후 iPhone Developer Program에 가입을 신청하였습니다. http://developer.apple.com/iphone/ 정식 유료 가입을 하지 않아도 iPhone SDK 다운로드 설치와 iPhone Simulator를 이용한 테스트는 가능하지만 자신이 가진 실제 iPhone / iPod 디바이스에서 테스트를 하려면 반드시 유료 가입을 해야 합니다. 프로그램 종류로는 개인을 위한 Stadard Indivisual과 .. 더보기
iPhone Developer Program 가입부터 기기 연결까지!! (By 웅이님 - KIDG 펌) 0-1. 아이폰이나 아이팟 터치를 최신 버젼으로 업그레이드를 합니다. 0-2. 맥의 소프트웨어 업그레이드를 수행 합니다. 1-1. http://developer.apple.com 에서 아이디를 만듭니다. 1-2. http://developer.apple.com/iphone/ 에서 로그인을 한 후에 iPhone SDK 최신 버젼을 다운 받습니다. 2. http://developer.apple.com/iphone/program/apply.html 로 가서 apply 버튼을 누르고 개인 사용자로 등록을 한 후에 국가를 한국으로 선택 합니다. 3. 한국 애플 스토어로 이동을 한 후에 장바구니에 Standard Program 이 들어 있는 것을 확인 할 수 있습니다. 이제 구매를 합니다. 4. 대략 하루정도 기다.. 더보기
미니덤프를 이용하여 디버깅하기 불측정 다수가 사용하는 소프트웨어를 개발하다 보면 그 환경이 너무나도 다양해서 예상치 못한 에러들이 많이 발생하곤 합니다. 이러한 에러 중 try... catch... 로도 잡아내지 못하는 메모리 포인트 오류가 발생했을 때 미니덤프 파일을 생성시켜 이 파일을 이용하여 어디서 프로그램이 오류가 났는지 알 수 있으며 상황에 따라 다르겠지만 Call Stack 과 변수값까지도 알 수 있습니다. 예기치 않은 메모리 오류 발생시 다음의 코드로 미니 덤프를 생성하도록 할 수 있습니다. #include LONG __stdcall Exception_Minidump(_EXCEPTION_POINTERS* pExceptionInfo) { TCHAR fileName[MAX_PATH] = {0,}; _tcscpy(fileNam.. 더보기
ObjectiveC 초간단 훑어보기 생업에 종사하다 보니 모든 우선순위가 현재 제가 맡은 개발 업무에만 집중되고 있습니다. 그러다보니 스터디도 더디고, 그에 따라 카페만 만들어 놓고 강좌도 못올리고 ㅠㅠ 오늘은 Xcode에서 새로운 프로젝트를 만들 때 자동으로 생성해 주는 소스를 분석하는 방법으로 iPhone 어플리케이션의 개발 언어인 ObjectiveC를 간단하게 살펴보았습니다. 보다 체계적이고 상세한 공부를 위해서는 ObjectiveC 전문 서적으로 스터디해야 하겠지만,… 필자가 C/C++ 개발자이다 보니 C/C++과 하는 방법도 이용했으며, 일부 iPhone SDK의 내용도 다루었습니다. 여기에서 사용된 프로젝트는 View Based Application이며 그 이름을 VBApp로 명명하였습니다. Xcode를 이용해 만들어진 프로젝트.. 더보기
IWebBrower의 DocumentComplete 이벤트에서 마지막 호출인지 검사하기 void CDlgWebPopup::DocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT* URL) { IUnknown* pUnk; LPDISPATCH lpWBDisp; pUnk = m_cWebBrowser.GetControlUnknown(); pUnk->QueryInterface(IID_IDispatch, (void**)&lpWBDisp); if(pDisp == lpWBDisp) { // 마지막 이벤트 } lpWBDisp->Release(); } 보통의 웹페이지는 프레임을 포함하고 있기 때문에 페이지 로딩시 DocumentComplete가 여러 번 호출됩니다. DocumentComplete 이벤트는 최상위의 웹브라우저 윈도우에 대해 마지막으로 호출됩니다. IWebB.. 더보기
맥에서 윈도우를 원격제어 해봅시다. 맥에서 윈도우를 원격제어 가능합니다. 물론 비스타도 가능합니다. Microsoft Remote Desktop Connection Client for Mac 2 라는 프로그램을 맥에 설치하여 실행하면 됩니다. http://www.microsoft.com/downloads/details.aspx?FamilyID=803f9438-8df3-490f-92c6-0e0f92787db8&DisplayLang=en 아래는 제 맥에서 다른 피씨의 비스타로 접속한 화면입니다. 더보기
Window와 View iPhone App는 Window와 View를 통하여 컨텐츠를 표시하고 사용자의 입력을 받습니다. 오늘은 이 Window와 View의 개념에 대해 공부하였습니다. [ Window ] 1. Window는 시각적인 요소를 제공하지 않으며 이벤트의 연결 통로로만 사용됩니다. (시각적인 요소는 View를 통해서만 구현합니다.) 2. 하나의 Application은 하나의 Window만 가져야 합니다. View를 변경하는 방식으로 다중 컨텐츠를 제공해야 합니다. 3. Window는 상속될 수 없으며 override 함수 또한 구현될 수 없습니다. delegate를 이용해야 합니다. [ View ] 1. View 는 실제 컨텐츠들을 표시하고 사용자의 입력을 받는 사각 공간입니다. 2. View 는 SubView를 가.. 더보기