ShowSpace2009/03/11 12:42
HTTP://WWW.SHOWSPACE.CO.KR



3월 09일 월요일에 아이렌 사무실로 한통의 전화가 걸려왔습니다. 나이가 많은 중년이라고 자신을 소개하신 분께서, 본인을 비롯한 동료들이 쇼스페이스를 정말 편리하게 사용하고 있다. 그런데 사진이 넘어가는 속도가 너무 빨라서 보기가 어렵다. 사진 속도를 늦춰주거나 속도를 조절하게 해줄 수 있으냐는 것이였습니다.

개발 당시 저희의 목표는 우리 아버지께 설명 한번 안드리고도 사용하실 수 있도록, 가장 쉽고 간편하게 만들자였습니다. 그래서 회원 가입을 비롯한 사진 올리기 등 모든 기능을 디자인적 화려함 보다는 사용하기 쉽게 만드는 것에 촛점을 맞추었습니다. 이분과 전화를 끊고, 그래도 어느정도는 목표를 달성했다는 것이 매우 기뻤습니다. 나이가 많으신 분들은 새로운 서비스를 이용하는데 소극적이고 어렵게 느끼실 것 이라고 생각했는데, 아직 잘 알려지지도 않은, 아직 한참 개발중인 쇼스페이스를 잘 사용하고 있으시다고 말씀해주시는 것에 미묘한 감동을 느꼈습니다. 그리고 적극적으로 사무실로 전화해주신 분께도 매우 감사드리고 있습니다.

전화를 받은 후 바로 수정에 들어가 재생 속도를 늦추었습니다. 예상했던 것과는 달리, 더욱 보기에 편해진것 같습니다. 앞으로 더욱 더 발전하는 쇼스페이스가 되도록 노력하겠습니다. 최근 업데이트가 별로 없는데, 더 나은 서비스를 제공해드리기 위해서 숨죽여 개발하고 있는 것이라고 해석해주시면 감사드리겠습니다.

곧 얻그레이드 된 모습으로 다시 찾아뵙겠습니다.

Posted by Getroot

Leave your greetings.

iPhone/강좌2009/03/10 17:37
Window는 컨텐츠를 출력하는 역할을 수행하고,  Views는 컨텐츠를 구성하고 그리는 역할을 수행합니다. Window는 MS Windows와 비교하였을 때 메인 다이얼로그, Views는 컨트롤이라고 생각해도 무방합니다. 일반적으로 아이폰 어플리케이션은 1개의 Window와 여러개의  Views로 구성됩니다. 어플리케이션이 생성될 때 UIWindow 클래스의 인스턴스가  아이폰 어플리케이션의 유일한 window가 되고, 그것에 하나 이상의 Views가 포함됩니다. 그 후 UIWindow는 포함된 Views를 출력하는 역할을 수행하게 됩니다. 아이폰 운영체제가 계층적인 windows를 지원하기는 하지만, 1개가 넘는 window를 생성하지 말라고 경고하고 있습니다.

UIWindow는 닫기 버튼이나 타이틀바와 같은 UI를 제공하지 않습니다. 모든 기능은 프로그래밍으로 정의하여 처리해야 합니다. 이것은 모든 아이폰 어플리케이션이 같은 UI 방법으로 시작과 종료를 하기 위한것으로 아이폰의 바탕화면에서 아이콘을 터치하여 프로그램을 시작하고, 홈 버튼을 눌러서 종료하는 것을 위한 것입니다.

어플리케이션을 생성할 때, window의 초기 사이즈는 화면 사이즈에 꽉 차게 생성됩니다. nid나 코드 모든것을 통해서 window는 화면 사이즈보다 작아질 수 없습니다. 화면 사이즈에 맞는 UIWindow는 다음과 같이 UIScreen 을 이용하여 다음과 같은 코드로 생성할 수 있습니다.

<code>
UIWindow * aWindow = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
</code>

아 이폰 어플리케이션에서 view는 대부분 UIView를 상속받아 만들어집니다. 이것은 사용자의 인터페이스를 출력하고, 인터페이스와 통신하는 중요한 두가지 역할을 수행합니다. 모든 view 오브젝트는 지정된 사각 영역 안에서 출력하고 인터페이스의 이벤트를 처리합니다.

하나의 view는 여러개의 sub view를 관리합니다. sub view의 관점에서 그것을 포함하고 있는 view는 superview 또는 parent view라고 불립니다.  sub view 또한 또 다른 sub view를 포함하여 superview가 되는 계층적 구조를 가지고 있습니다.

아이폰 운영체제는 UIKit 이라는 클래스를 제공합니다. UIKit은 UIView를 이용한  window와 각종 컨트롤(views)을 제공합니다. 정말 다양한 views를 제공하기 때문에 다른 운영체제에서 프로그래밍할 때와는 다르게 새로운 컨트롤을 제작할 일이 거의 없습니다. UI 디자인도 그 무엇보다 훌륭하여, 프로그래머가 디자인에 신경쓰지 않고 기본 컨트롤을 그대로 써도 멋진 프로그램이 될 정도입니다. 다른 운영체제(Window)에서는 그렇지 않았죠.

사용자 삽입 이미지

위 그림에서 보는 것과 같이, 정말 많은 컨트롤이 기본적으로 제공되고 있습니다. 각 컨트롤에 대한 자세한 내용은 각각의 컨트롤을 검색하여 사용해보시면 금방 숙지할 수 있습니다.

UIKit은 기본적으로 top-left 좌표계를 사용합니다. 왼쪽 상단이 0,0으로 아래, 오른쪽으로 갈 수록 숫자가 커지는 방식입니다. 다른 운영체제처럼 정수계를 사용하지 않고, floating 형식, 즉 실수계를 사용합니다. 이것은 더 정확히 위치를 잡을 수 있게 하는것에 많은 도움이 됩니다. 예를 들어 300, 300 사이즈를 1/4 로 줄였다가 다시 4배로 정확히 키울 수 있습니다. 다음 그림은 아이폰 스크린과 좌표계의 관계를 나타냅니다.

사용자 삽입 이미지
모든 View 객체는 크기와 위치 속성을 포함함니다. 크기와 위치를 결정하는 속성으로는 Frame과 Bounds라는 두 가지의 중요한 개념이 있습니다. Frame은 출력되는 화면 영역을 의미하고, Bounds는 출력할 데이트에서의 영역입니다. 아래 그림을 보면 이 개념을 확실하게 이해할 수 있습니다. 왼쪽에 있는 그림 데이터에서 사용할 영역을 지정한것이 Bounds 개념이고, 이 Bounds를 화면 영역의 어느 부분에 출력할 지 결정하는 좌표가 Frame 영역입니다.

사용자 삽입 이미지
또 한가지 속성에 Center 값이 있습니다. 이 값은 Frame 영역에서의 가운데 좌표(X, Y)를 의미합니다. Bounds 영역에서의 Center가 아니라는 점을 꼭 명심하고 있어야, 나중에 개발 할 때 헷갈림이 없을 것입니다.

View 객체가 생성될 때 위 세가지 (Bounds, Frame, Center) 속성이 다음과 같이 초기화 됩니다.
Bounds rectangle 의 원점(Top-Left)를 0, 0으로 설정하고, 가로, 세로를(Width, Height)를 Frame(화면 영역)과 같게 설정합니다. 그리고 Center 속성을 Frame의 width/2, height/2 즉 가운데로 설정합니다. 이 세가지의 속성은 각각을 수정해도 다른 두가지의 속성에 다음과 같이 영양을 끼칩니다.

* Frame 속성을 설정하면 Bounds가 Frame의 사이즈에 맞게 확장됩니다. 그리고 Center 속성이 새로운 Frame에 맞게 변화합니다.
* Center 속성을 설정하면 Frame 속성의 원점이 변경됩니다. 즉, Frame의 크기가 변경되는 것이 아니고 Frame의 가운데를 손가락으로 잡고 움직여서 Frame 자체를 움직이는 듯한 효과가 있습니다.
* Bounds의 사이즈를 변경하면 Frame이 그 크기에 맞춰서 변화합니다.
* Bounds의 원점은 두개의 속성(Frame, Center)의 변경 없이도 바꿀 수 있습니다. 아래 그림과 같이 Bounds의 원점을 대각선 아래로 변경하여 그림의 다른 부분을 똑같은 Frame 에 출력되도록 할 수 있습니다.

사용자 삽입 이미지
이로서 아이폰의 윈도우, 뷰, 좌표계의 개요를 마무리 하겠습니다. 다음 강좌에서는 각 좌표를 변환(회전, 이동, 확대, 축소)등을 수행할 수 있는 방법을 소개하고 실질적으로 실습하는 모습을 보여드리겠습니다.

Posted by Getroot

Leave your greetings.

iPhone/팁&태크2009/03/07 05:35

   안녕하세요. 써드파티어플 소개, 그 세 번째 시간입니다. 오늘 소개해 드릴 써드파티어플은 유틸리티가 아닌 게임입니다. 써드파티어플이라고 해서 유틸리티만 있는건 아닙니다. 다양하게 즐길거리가 있는데요. 그 중 하나인 Osu 라는 게임을 소개하도록 하겠습니다. Osu는 닌텐도의 리듬히어로라는 게임을 떠올리게 합니다. 쉬운 게임 조작법으로 처음 사용하는 사람도 쉽게 게임을 즐길 수가 있습니다. 그럼 설치와 함께 게임을 즐겨보도록 하겠습니다.

   다음 그림과 같이 Cydia에서 Osu를 설치합니다.


사용자 삽입 이미지


   Osu를 실행시키면 먼저 게임을 할 노래를 다운로드 받아야 합니다. 게임 안에서 이것을 지원하고 있다는 것을 아래 그림을 통해 확인할 수 있습니다. 단 무선랜이 연결되어 있는 상태에서만 다운로드를 받을 수 있습니다.


사용자 삽입 이미지


   노래를 다운로드 받기 위해 Newest로 이동했습니다. 노래를 찾던 중 낯이 익은 노래제목이 보이길래 확인해보니 Wonder Girls의 So Hot 이었습니다. 노래를 선택해주면 바로 다운로드 받는 것을 확인할 수 있습니다. 아래 그림처럼 다운로드를 받은 후에는 현재 보유중인 노래가 목록으로 보여집니다. 그럼 노래를 실행시켜보겠습니다.


사용자 삽입 이미지


   노래를 선택하면 아래 그림과 같이 난이도에 따라 분류가 되어 있는 것을 볼 수 있습니다. 하나를 선택 후 다시 한 번 터치해주거나 Osu를 터치해주면 게임이 시작됩니다.



사용자 삽입 이미지


   아래는 제가 노래를 끝내고 나서 얻은 점수입니다. 가장 쉬운 난이도의 노래를 했음에도 불구하고 저는 C를 받았습니다. 물론 노래가 다 어려운것만 있는 것은 아닙니다. 적당히 즐길 정도의 난이도를 가진 노래도 많습니다.



사용자 삽입 이미지


   다른 여러가지 노래를 들으면서 게임도 할 수 있어서 재밌는 게임이라고 생각합니다. 다만 단점이 있다면 어느 어플리케이션이나 마찬가지겠지만 무선랜이 연결되어 있는 상태에서만 노래를 다운로드 받을 수 있다는 것입니다. 하지만 다른 여러가지 노래들도 다운로드받아서 즐겨보니 기다리는 시간이나 전철을 타고 이동할 때 등 시간을 때우기에 좋은 게임 같았습니다. 노래의 종류로는 pop, Jpop을 포함해서 보아, 클래지콰이 같은 한국가요도 다수 찾아 볼 수 있었습니다. 저 같은 경우에는 모르는 노래보다 알고 있는 노래로 게임을 하니 더욱 재미있었습니다. 닌텐도의 리듬히어로를 부러워 하는 분들이 계셨다면, 저는 그런분들께 Osu를 추천하고 싶습니다. 감사합니다.
Posted by 뽀뎅

Leave your greetings.