근래에 있었던 스터디와 세미나 2건

2008. 11. 13. 14:44

최근에 osxdev 에서 한건의 세미나와 한건의 스터디가 있었다. 이 세미나와 스터디의 특징은 역시나 수용님이 촬영해주시는 동영상!! 이 백미가 아닐까. 이건 애플 WWDC 와는 다르게 인코딩 되는대로 ㅠㅠ 공유를 해주시니 참석하지 못한 분들도 현장의 분위기와 세미나 내용에 대해서 공유 받을 수 있다.

 

 

하나

Simulator.jpg

먼저 아이폰 개발 스터디! 이제 첫발을 떼었다고 볼 수 있는 스터디인데 아직 출간이 되지 않은 베타 상태의 책 (iphone sdk development) 를 가지고 진행하는 것이 이색적이다. 아직 그만큼 나와있는 괜찮은 책이 전무하단 얘기라고도 볼 수 있겠다. 첫 번째 모임이라 가볍게 시작될 줄 알았다면 오산인 듯.. 첫 모임부터 7시부터 10시30분을 찍는 세미나가 연속적으로 진행되었다. 식사는 빵으로 대충 해치우고 열정을 가지고 참여하는 모습들이 반갑게 느껴졌던 모임이었다는 생각이 든다. 세미나 내용이나 스터디일정 에 공개가 되어있다. 이미 참여를 하지 못한 분들은 위에서 말했듯이 아쉬워 할 필요가 없는 것이 1차 세미나사진 이나 동영상 및 세미나 자료까지 공개가 되니 역시나 참여하는 분들에게 고마울 따름이다.

 

참고 (아이폰 스터디 일정)

1차 아이폰 개발 기초 다듬기 (기간: 2008.10.24 ~ 2008.12.17)
주제 일정 발표자
0. iPhone Developer Program 2008.11.5 mocona
1. Hello iPhone 2008.11.5 kimty8074
2. View Controllers 2008.11.5 jasonpa
3. Table Views 2008.11.5 jenix
4. Navigation 2008.11.19 idiel
5. Tab Bar Controller 2008.11.19 godrm
6. File I/O 2008.11.19 mocona
7. Preference 2008.12.3 wangsy
8. The SQLite Database 2008.12.3 tokasia
9. Network I/O 2008.12.3 beanpole
10. Multi Touch and Gestures 2008.12.17 withsage
11. Core Animation 2008.12.17 wookay

Osxdev_seminar.jpg

OSXDev 세미나는 대략 한달에 한번씩 정기적으로 지원하는 분들이 세미나를 주도적으로 진행해 나가는 것이 특징이다. 11/12일 수요일에는 Jenix 군이 두번째 세미나를 진행해 주었는데 아직 자료등이 올라온 상태는 아니므로 해당 위키페이지를 주시하고 있어야 할 듯.

어쨌든 참여한 사람들역시 반가운 얼굴들이 많았는데, 이번에는 일본에서 참석한 분! 도 있었다는 사실! 일본에 있는 아이폰 애플리케이션 개발 회사(Mobilis Solutions, Inc) 에 다니고 있는 분이었는데 사장님이 한국분이지만 직원들은 다국적인 특이한 회사인것 같았다. 요기도 관심을 가지고 지켜봐야 할 것 같다.

 

마지막

여하튼 최근에 일련의 일들이 나의 흥미를 끌게끔 해주는 일들이 조금씩 다시 생기는 것 같다. 개인적으로 열심히 "무술" 도 하고 있고 (이건 사범이 목표다 ㅡㅡ;;), 다시 애플쪽 개발에 손가락 하나쯤은 담그게 된 것 같고, 여름에 WWDC 에서 시작된 좋은 인연들을 계속 이어가는 것 같아서 그나마 다행이라는 생각이 든다. 앞으로가 더 기대되는 요즘이다.

이 글은 스프링노트에서 작성되었습니다.

'재미' 카테고리의 다른 글

Hackintosh Hackintosh  (2) 2009.02.25
Rails2.2 New Features  (2) 2008.11.27
[iPhone SDK Development] chapter02-ViewControllers  (0) 2008.11.06
My Brain Sex ID  (0) 2008.09.02
루비 여섯번째 세미나와 발표자료  (0) 2008.09.02
,

[iPhone SDK Development] chapter02-ViewControllers

2008. 11. 6. 13:36

개요

뷰 컨트롤러는 아이폰 개발에서 중심이 되는 부분이며, 모든 뷰 컨트롤러는 UIViewController 의 인스턴스이다.

 

컨트롤러는 일반적으로 MVC(Model-View-Controller) 패턴 중에서 중심 역할을 한다. BL(Business Logic)이 담겨있는 Model, 실제 인터페이스를 표현하는 뷰, 그리고 이런 뷰와 가장 밀접하게 관계된 곳이 Controller 다. 때문에 컨트롤러는 가장 자주 다루게 되는 부분이다.

1장의 예에서 처럼 뷰를 기술하는데 인터페이스 빌더를 통해서 nib 파일을 생성한 것이 전부이다. 간단한 애플리케이션에서는 모델이 존재하지 않을 수 있다. 하지만! 뷰 컨트롤러는 만들었다. 아이폰 애플리케이션이라면 적어도 뷰 컨트롤러 하나는 있어야 된다. 그만큼 뷰 컨트롤러가 가장 핵심이라는 말씀.

 

아이폰 애플리케이션에서도 컨트롤러는 유저가 UI에 반응하거나, 디바이스가 회전하는 등의 이벤트가 발생할 때 애플리케이션이 어떻게 반응해야 하는지를 다룬다.

 

뷰 컨트롤러에는 세가지 특수한 타입이 있다.

  • TableView
  • Navigation
  • TabController

 

2.1 첫번째 뷰컨트롤러 (first-iteration)

예제) 스크린을 건드리면 버튼이 상단 또는 하단으로 이동하는 애플리케이션

 

프로젝트생성

  1. xib 파일을 열어서 Interface Builder 실행 (뷰와 뷰컨트롤러 연결)

    1. 인터페이스 빌더한테 버튼이 클릭될 때 어떤 메소드가 수행되어야 하는지 버튼과 뷰컨트롤러를 연결시켜준다

      1. nib 도큐먼트 윈도우에서 File's Owner 오브젝트의 Identity Inspector 를 불러온다.
      2. class actions 에 buttonClieked: 액션을 추가한다.  (ButtonViewController 가 buttonClicked: 라는 메소드를 갖는다는 의미)

        Picture_2.png Picture_3.png

      3. 즉, Controller 에 action 을 추가하고 UI 오브젝트가 이벤트 발생시 어떤 컨트롤러의 어떤 액션에 연결되는지 지정하는 것임.
  2. XCode 에서 컨트롤러 코드 생성

    1. header(.h) 에 declaration 추가
    2. 구현코드 작성 (.m)

2.2 멀티 뷰컨트롤러

2.3 아웃렛 생성과 연결

[개념/용어1] "forward declaration"

@class 라는 directive(지시자) 를 가리키는 말인데, 헤더에서 또다른 헤더를 include 하는 것 대신 사용한다.

Picture_4.jpg

[개념/용어2]"outlets and actions"

보통 인터페이스 빌더에서 버튼같은 컨트롤이 활성화 되었을 때 응답하기 위한 오브젝트에 연결하기위한 용도로 사용한다.

컨트롤(source)을 드래깅 해서 오브젝트의 액션(destinnation)과 연결하게 된다.

2.4 뷰컨트롤러 생성

모달뷰를 다루는 뷰컨트롤러를 추가해보자.

[개념/용어3] "delegation"

다른 오브젝트에게 책임을 위임한다는 개념. 이 것은 위임 받은 오브젝트(second object)가 first object 와는 별도로 작성될 수 있다는 걸 의미한다. (? second object / first object)

[개념/용어4] "@properties" directive   

컴파일러에게 해당 인스턴스 변수에 대한 get/set 메소드를 구현하라는 선언임.

[개념/용어5] "@synthesize" directive    

헤더에 선언된 @properties 필드에 대해서 구현에서는 get/set 메소드를 생성하기 위해 @synthesize directive 를 사용한다 (?)

Configuring the Text Field

[개념/용어6] "first responder" object    

"first responder"가 된다 라는 표현을 쓴다. 특정 이벤트 타입을 얻어내는 최초의 인라인 오브젝트(function, code?), 모든 Cocoa Touch 의 텍스트 관련 컨트롤들은 first responder 되면 키보드가 나타난다.

 

TextField 등을 사용할 때 사용자가 어떻게 사용하길 바라는지 주의 깊게 고려해야한다. 두가지 설정 실험 "Capitalize"(correction 설정), "Return Key"(편집종료로 터치 하도록) 설정.

키보드를 나타나게 했을 경우 몇가지 고려해야할 사항

  • 텍스트에 일반적이지 않은 단어가 있으면 Correction을 Off 한다.
  • 텍스트가 이름과 같은 형식이면 각 단어를 Capitalize 한다.
  • 텍스트가 전화번호이거나 이메일주소 또는 URL 이라면 알맞은 키보드 타입을 사용한다.
  • 유저가 편집 종료시 어떻게하길 기대하는 가에 따라서 (특정 URL 로 이동, Google 에서 검색, 데이타를 저장 ) 알맞은 "Return" key 타이틀을 선택 한다.

 

"Text entry 가 얼마나 애플리케이션의 일부로서 적절하고 자연스럽게 느껴지느냐에 공을 들이면 들일수록 인기있는 애플리케이션이 될 것이다"

 

유저에게 단서가 되는 Placeholder text (입력 필드의 디폴트 안내문구 같은 것)를 적절하게 사용해야 한다. 이는 유저가 컨텍스트를 잃어버리지 않고 유지하는데 도움을 준다.

 

UITextFieldDelegate protocol 의 두가지 메소드

  • textFieldShouldReturn:    유저가 편집을 끝냈다는 것을 나타낼 때 text field 에 의해서 호출된다.

    • [YES|NO] YES => validation 을 원할 때, NO=> resign 으로부터 text field 를 first responder 상태로 유지하고 싶을 때.
  • textFieldDidEndEditing:   text field 가 편집이 끝날 때 마다 호출된다.  (ex. 셈플 예제에서 model view 를 animate out 시킬 적절한 포인트다)  

Picture_8.png

 

[개념/용어7] "resignFirstResponder"

text field 에 대한 first responder 상태를 resign

2.5 두번째 뷰컨트롤러

presentModalViewController:animated 메소드

Picture_5.jpg    Picture_7.png

셈플코드 제작 후기

  • Compile Error

    • StarterViewController.h 파일에서 아웃렛을 작성할 때 오타가 있었다.
        IBOutlet EditorViewController *EditorViewController;    // 이것 때문에 한참 삽질함.
  • 빌드가 제대로 된 이후에 시뮬레이터에서 애플리케이션이 실행이 안되고 계속 종료되는 문제 발생. (EXC_BAD_INSTRUCTION) 등등등의 에러 메시지...

    • 콘솔 로그를 살펴보니 EditorViewController 를 못찾았다. 위에서 오타난 상태로 IB 에서 연결시켰던 것이 문제였음.
    • 다시금 IB 에서 연결을 새로한 다음 -> 다시 클래스로 저장해주었더니 정상적으로 실행되었다.
    • IB 꼬졌다 ㅡㅡ;; 변경이 바로 반영 안되더라.

 

셈플코드첨부 : Button.zip , Starter.zip

실행후 Capitalize 등이 제대로 동작하는지 함 보자.

 

디버깅 삽질을 도와준 jenix, humbroll tanks.

 

이 글은 스프링노트에서 작성되었습니다.

'재미' 카테고리의 다른 글

Rails2.2 New Features  (2) 2008.11.27
근래에 있었던 스터디와 세미나 2건  (0) 2008.11.13
My Brain Sex ID  (0) 2008.09.02
루비 여섯번째 세미나와 발표자료  (0) 2008.09.02
업그레이드된 재선 SHOW  (0) 2007.12.31
,

본격적인 WWDC08 강행군의 시작

2008. 6. 27. 17:03

첫째날 세션이 끝나고 컨퍼런스 참가자에게 메일이 한통 왔습니다. 메일 내용중에서 특이한 것은 그날 발표한 세션중에서 인기 있는 세션을 다음날 저녁에 다시 해준다는 내용이 포함되어있었습니다. 일명 "앙코르 세션"Encore_Session_Mon.png! 월요일 앙코르 세션으로 선정된 것은 옆에 그림에서 보는 것 처럼 Mac & iPhone 개발에 대한 소개 세션이었습니다. 다행하게도 제가 듣지 않은 세션이라 이걸 듣게 되면 좀 더 많은 세션을 듣게되는 효과를 누릴 수 있습니다. 때문에 화요일부터 듣고 싶은 세션 선정에 있어서 급 수정에 들어갔습니다. 사람들이 정말 많이 몰릴 것 같은 세션은 살포시 빼주는 센쓰! 를 발휘하면 다음날 또 앙코르 세션에서 들을 수 있으니 혼자서 더 많은 세션을 듣기 위한 전략으로 괜찮은 선택 같습니다. 그리고 보통 WWDC 가 끝나게 되면 일정 시간(보통 9월까지는 나온다고 osxdev 의 LingoStar님이 얘기해주었습니다)이 지난 후에, 세션에 대한 동영상을 다운로드 받을 수 있기 때문에 일반적인 튜토리얼성 세션에 대해서는 바로 컨퍼런스 기간중에 집중해서 들을 필요는 없을 수도 있겠습니다.

여하튼 둘째날 부터는 이제 애플 개발자들과 IT Administrator 들이 관심가질 만한 세션들이 시작됩니다. 모든 세션들은 대체로 연계가 되는 편이라 주초에 시작된 세션의 심화 주제가 주 후반부 세션까지 이어지게 됩니다. 어떤 줄기를 잡고 주욱 따라가는 것이죠. 이번에는 3G iPhone 출시가 한국에서 늦어질 것이라는 키노트의 내용에 따라서 첨에는 iPhone 위주의 세션을 따라가려 했지만, 이것은 추후에 동영상으로 대체하기로 하고 다른 세션들 사냥에 나서게 되었습니다.

사냥 결과! 오늘은 앙코르 세션을 포함해서 도합 6개의 세션을 듣는 강행군을 했습니다. 아 집중력에 한계를 느끼게 되는군요. 그래도 정리 할만한 것들을 추려서 정리해보도록 하겠습니다. 

(팁 하나, 앙코르 세션의 경우에는 경험해보니 직접 과외 받는 듣한 착각이 들 정도로 소수의 인원이 집중력있게 들을 수 있어서 추천할만 합니다)

Integration Your Organization's First Macs

이 세션에서는 여러가지 내용이 있었지만 모바일 서비스를 준비하는 사람들에게 어떤 점을 중점적으로 고려해서 모바일 애플리케이션을 만들어야 하는지에 대한 내용과 그 셈플 사이트들을 소개해주었습니다. 특히 기존에 서비스를 보유하고 있는 회사가 어떻게 효과적으로 모바일로도 서비스 할 수 있는지에 대한 내용이 인상적이었습니다. 

훌륭한 iPhone 애플리케이션이 갖추어야할 덕목중 일부를 소개하면 :

  • Focused : 모두 표현하려하지 말고 서비스의 일부 기능또는 내용을 서머라이즈 하는 등의 컨텐츠에 집중에서 보여줘야 한다는 내용이었습니다.
  • Fast : 당연히 속도가 중요한데 잘 Focused 하면 속도가 빨라질 것이다는 것이죠.
  • Formatted : 이 항목은 이왕이면 패닝이나 줌 같은 것이 없도록 하는 것이 좋다고 하였습니다. 그냥 웹을 축소만 해놓고 계속 확대해서 본다면 정말 짜증나는 일일겁니다.
  • Familiar UI / Nav : 이건 꼭 모바일용 애플리케이션이 아니어도 고려해야 하는 내용입니다.
  • Intuitively Integrated : 기존에 있는 애플리케이션들하고 잘 통합하는 것도 중요하다고 꼽았습니다.

이런 항목을 잘 적용해서 구현한 소개된 셈플로 소개된 서비스들은 Fandango, Directory 등이 있었습니다. 애플의 사례에서는 Salse Report 같은 경우를 iPhone 용으로 서비스를 하는 단계에서 Focused 항목에 맞추어 복잡한 표를 단순히 컬럼만 줄이는데 그치는 것이 아니라. 완전히 새로운 개념으로 UI 디자인을 새로 했다고 합니다. 없던 그래프 까지 넣어가면서 ...  같은 내용도 받아들여서 소화하는 능력에 따라서 완전히 새롭고 신선한 접근이 가능하다는 것을 애플이 잘 보여주는 것 같습니다.

iPhone 애플리케이션 종류와 사용특징

iPhone 애플리케이션은 Native Apps와 Web Apps 의 두가지로 나뉘는데 업데이트와 사용빈도 측면에서 비교를 해보면 :

  Native Apps Web Apps
업데이트 빈도 낮다 높다
사용빈도 높다 낮다

와 같이 비교를 하였습니다. 이런 두가지 애플리케이션의 활용에 대한 경계 영역을 일종의 Hot Spot 으로 분류하고 이 경계를 잘 활용해서 애플리케이션의 특성에 따라서 어떤 형태의 애플리케이션으로 개발할 것인지 결정해야 한다고 하였습니다. iPhone 용 애플리케이션 개발에 있어서 Native 로 가야하나 아니면 Web 버젼으로 가야하나 고민이 되는 사람에게는 약간의 참고가 될 수 있겠습니다. 한국 개발자들에게는 아직 시간적인 여유? 가 본의 아니게 생겨서 앞으로 나오게될 애플리케이션들을 주시해 보는 것도 좋은 전략이 될 수 있겠습니다.

이어지는 세션들... 세션들...

이어지는 세션에서는 MacOS의 주요 개발툴에 대한 사용방법과 메인 프레임웍인 Cocoa 그리고 이 프레임웍을 이루고 있는 Objective-C  의 장점이나 주요 구성요소들에 대해서도 찬찬히 설명을 해주는데 이 내용들은 대부분 애플 개발자 사이트에서 참고 자료로 충분히 구할 수 있는 것들이라고 생각되었습니다.

Objective-C 와 함께 코코아 홀짝 거리기

이중에서 역시나 개발자이다 보니 어쩔 수 없이 Objective-C 언어에 관심이 가지 않을 수 없었는데요, 한국 루비계의 큰산!인  deepblue 님이 이 언어를 좋아라 하는 이유들에 대해서 조금은 알 수 있었습니다.

여러가지 feature 들이 있겠지만 몇가지를 추려보면 :

  • Target-Action : 타겟은 오브젝트의 인스턴스이고 액션은 콜할 메소드이다. (명쾌한 말입니다 - Cocoa 프로그래밍을 할 때 헷갈리는 것중에 하나인데 어떤걸 Target 으로 하고 어떤걸 Action으로 해야하는지 모호하 다고 느낄 때가 많았는데 이렇게 단순하게 정리해놓고 나서 생각하면 좋을 것 같습니다)
  • Delegation : 이 개념은 구현을 위해서 항상 subclassing 을 하지 않고 delegate 해줄 수 있으니 (예를 들어서 윈도우 오브젝트에게 delegation 오브젝트를 따로 만들어서 윈도우 내에 어떠어떠한 객체들에게서 이벤트가 발생하면 변화를 알려줘 라고 설정만 해주면 되는 것이죠 - 이런 설정의 핵심에 인터페이스 빌더 라는 걸출한 개발툴이 자리잡고 있습니다). 이렇게 개발자의 수고를 덜어주고 간결해질 수 있어서 좋았던 것 같습니다. 다이내믹 하면서도 Static 한 feature 들을 두루 가지고 있는 Objective-C 는 기존에 C 언어들의 강력한 라이브러리들을 같은 코드내에서 그냥 바로 쓸 수 있기에 더욱 강력해 지는 것 같습니다.
  • 메모리 관리 측면에서도 두가지가 현재는 병행 지원된다고 볼 수 있는데요 :

    • Reference counting : MacOSX 전 버젼과 iPhone 에서 사용되고 있음
    • Garbage collection : MacOSX 10.5 이후 버젼에서 사용되나 iPhone 에서는 지원안함

    이런 두가지가 모두 지원되고 있었습니다. 앞으로 메모리 관리에 대한 변화의 방향이 보이네요.

 

등등 여러가지 수많은 이야기들을 하였지만 제 기억 용량의 한계로 여기까지만.. 여하튼 너무너무나 많은 강력한 라이브러리들의 탑재로 살펴볼 것이 산더미 같네요. 이건 차차 파해쳐 나가야 겠습니다. Cocoa 프레임웍이 개발된지가 20년이 되었다니 생각보다 나이가 많죠?

 

이 뿐만이 아니라 Cocoa 프레임웍을 사용하게되면 지원해주는 것들이 정말 많았는데 놀랐습니다. 예를들면 Cocoa 프레임웍 중에서 NSDocument 클래스를 사용하게 되면 개발자들은 별도의 노력 없이도 1) 지역화된 에러 리포팅 2) 지역화된 윈도우 타이틀 3) 저장, 다른이름으로 저장, 되돌리기 등의 기능 4) 최근 열어본 파일 5) 자동저장 등등의 많은 기능들을 갖도록 해주었습니다. 정말 강력합니다.

앙코르 세션

Deric Horn 이라는 애플의 기술 애반젤리트스가 메인 발표자 였습니다. 역시 애반젤리스트라서 그런지 몰라도 너무 말을 잘하더군요. 여기서 발표한 내용은 이번 WWDC08 의 전체 세션에 대한 아젠다 같은 성격을 갖고 있다고 봐도 될 것 같았습니다. 어떻게 접근해야 할지 머릿속에 맵을 그려주는 훌륭한 세션이었습니다. 전체적인 아키텍처와 Cocoa, Cocoa Touch, 개발툴 (Xcode, Interface Builder), Objective-C, Design Pattern, Cocoa 에 적용된 기술들, Cocoa Touch 의 View 에대해서.. 등등 (이부분은 http://hannibal.tistory.com/

후기

오늘 하루도 정말 치열하게 지나가는 것 같습니다. 내일은 본격적으로  Lab 세션들이 시작되는 날인데요. 저 같은 경우는 직접 만든 Cocoa 애플리케이션이 없다보니  Bring Your Code 라는 모토에 전혀 맞지 않아서 어떻게 될진 모르겠지만 함께 하고 있는 osxdev 개발자 분들을 응원이라도 해야겠네요. 정말 궁금합니다. 애플 개발자들을 직접 만나서 옆에서 페어를 하는 기분이 어떨런지 ~~~

어쨌든 둘째날 부터 사진이 거의 없다는 것을 느끼실 수 있을 겁니다. 역시나 세션에서 공유되는 내용에 대해서 사진을 찍어서 올려서는 안된다는 그런 정책 때문에 약간 조심해 하면서 글을 쓰고 있습니다.

그럼 내일 새로운 소식을 가지고 또 애플의 세계로 ~~ 제가 애플 직원인지 오픈마루 직원인지 모르겠네요. 왜이리 애플 홍보를 하는 것인지... 주변 소식을 나열하다보니 그렇게 된 것이라 널이 양해 바랍니다.

 

이 글은 스프링노트에서 작성되었습니다.

'소식' 카테고리의 다른 글

두개의 초대  (0) 2008.06.27
애플 디자인 어워드의 날  (0) 2008.06.27
가장 매력적인 개발자모임 WWDC  (0) 2008.06.27
New perspective needed  (2) 2008.01.14
누굴선택하나  (0) 2007.12.31
,