<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://rss.egloos.com/style/blog.xsl" type="text/xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<title>IT 프로를 향한 조건?</title>
	<link>http://neojjang.egloos.com</link>
	<description>프로는 그저 자신의 실수를 어떻게 만회할지 알 뿐이다.(제프밀러) 
항상 배워야만 살아남을 수 있는 세상에서 얼마나 더 버틸 수 있을런지...
</description>
	<language>ko</language>
	<pubDate>Sun, 15 Nov 2009 16:38:22 GMT</pubDate>
	<generator>Egloos</generator>
	<image>
		<title>IT 프로를 향한 조건?</title>
		<url>http://pds8.egloos.com/logo/200807/16/23/a0012723.jpg</url>
		<link>http://neojjang.egloos.com</link>
		<width>80</width>
		<height>109</height>
		<description>프로는 그저 자신의 실수를 어떻게 만회할지 알 뿐이다.(제프밀러) 
항상 배워야만 살아남을 수 있는 세상에서 얼마나 더 버틸 수 있을런지...
</description>
	</image>
  	<item>
		<title><![CDATA[ FlashLite로 게임에 도전~ ]]> </title>
		<link>http://neojjang.egloos.com/1968528</link>
		<guid>http://neojjang.egloos.com/1968528</guid>
		<description>
			<![CDATA[ 
  일본의 휴대폰 환경에서 Flash의 활용은 일반화 되어 있다.<br />
<br />
다운로드 되어 실행되는 형태부터 웹 페이지 상에서 실행 되는 형태까지 활용의 폭이 넓다.<br />
한국은 자바 위주 였던 것으로 기억하는데 일본은 핸드폰(모바일) 상에서 Flash의 발전이 상당히 빠르게 진행되고 있다.<br />
최근엔 FlashLite2.0 이상 버젼을 내장한 핸드폰이 출시 되고 있으니 말이다.<br />
PC에서 실행되는 Flash의 축소 버젼이라고 생각하면 편하다. 개발툴은 같으니 말이다.<br />
<br />
올해 100엔 이상의 매출이 예상되는 그리(Gree)라는 회사도 모바일에서 Flash를 기반으로한 무료 게임으로 성장을 주도 하고 있다. <br />
<br />
평소 Flash에 적응이 안되어 멀리 하고 있었는데, 저번주부터 모바일에서 게임을 만들어 보라는 주문이 떨어졌다. 기획부터 개발까지 혼자서 해야 하는 상황이 벌어진 것이다. <br />
<br />
Flash와 친하지도 않은데, 모바일용 게임을 만들어야 한다니 과연 잘 될까 걱정이 앞선다. <br />
<br />
어디서 끝이 날런지 가보자. <br />
<br/><br/>tag : <a href="/tag/FlashLite" rel="tag">FlashLite</a>,&nbsp;<a href="/tag/일본" rel="tag">일본</a>,&nbsp;<a href="/tag/모바일" rel="tag">모바일</a>,&nbsp;<a href="/tag/모바일게임" rel="tag">모바일게임</a>			 ]]> 
		</description>
		<category>그냥 일상</category>
		<category>FlashLite</category>
		<category>일본</category>
		<category>모바일</category>
		<category>모바일게임</category>

		<comments>http://neojjang.egloos.com/1968528#comments</comments>
		<pubDate>Sun, 15 Nov 2009 16:37:03 GMT</pubDate>
		<dc:creator>연서아빠</dc:creator>
	</item>
	<item>
		<title><![CDATA[ [iPhone][MonoTouch] 여섯번째 예제 : Reaction Time ]]> </title>
		<link>http://neojjang.egloos.com/1965734</link>
		<guid>http://neojjang.egloos.com/1965734</guid>
		<description>
			<![CDATA[ 
  이번 예제는 너무 늦었습니다. 구현은 저번 달에 해 놓고 오늘에서야 올립니다. <br />
<br />
오늘은 AppsAmuck의 6일째 예제인 ReactionTime을 MonoTouch로 구현해 보겠습니다. 이번 예제는 순발력을 측정하는 간단한 게임이라고 할 수 있습니다. 응용에 따라서 다양한 게임 형태가 나올 수 있겠습니다.<br />
<br />
1. "ReactionTime" 이름으로 새 솔루션을 만듭니다. 솔루션의 타입은 "iPhone MonoTouch Project"를 선택하는 것을 잊으면 안됩니다.<br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b1e997d7.png" width="365" height="280" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b1e997d7.png');" /></div>2. 앞의 예제와 같이 세개의 UIViewController를 사용하도록 하겠습니다. 먼저 뷰 컨트롤러를 넣어 둘 폴더를 "ViewController"이름으로 생성합니다. 첫번째로 어플리케이션의 기본 뷰 컨트롤러로서 역할을 담당할 "RootViewController"를 "View Interface Definition with Controller"유형으로 추가합니다. <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b2a4de62.png" width="365" height="254" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b2a4de62.png');" /></div>메인 화면을 담당할 "MainViewContoller"이름으로 추가합니다. <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b353a4f4.png" width="365" height="255" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b353a4f4.png');" /></div>도움말 화면 뷰를 관리할 "FlipsideViewController"를 추가 합니다. 추가한 세 컨트롤러는 모두 "View Interface Definition Controller"유형으로 하는 것을 잊지 않도록 합니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b3f86a4e.png" width="368" height="256" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b3f86a4e.png');" /></div>추가 한 후의 솔루션 화면은 아래와 같습니다. "View Interface Definition With Controller"유형으로 생성된 UIViewController는 *.xib파일과 *.xib.cs, *.xib.designer.cs 세가지 파일을 생성해 줍니다. <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b4bbd55f.png" width="229" height="216" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b4bbd55f.png');" /></div>3. MainWindow.xib파일을 IB(Interface Builder)를 이용하여 열고 "Window"항목 아래에 앞서 추가한 "RootViewController"이름으로 ViewController를 추가합니다. <br />
<img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91b58b12ff.png" width="202" height="388" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91b58b12ff.png');" align="left" /><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91b6461e82.png" width="369" height="259" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91b6461e82.png');" /></div><br />
IB의 Library윈도우에서 "View Controller"를 드래그앤드롭으로 객체 윈도우에 가져나 놓으면 됩니다. <br />
<br />
이름을 "RootViewController"로 지정하는 것이 중요합니다.<br />
<br />
<br />
<br />
<br />
4. "RootViewController.xib"의 뷰에는 화면 전환을 위해 이용되는 Info버튼을 위치 시킵니다. 우선 Library창에서 "Round Rect Button"을 드래그앤드롭으로 뷰의 적당한 위치에 가져다 놓습니다. 예제에선 우측 하단 부분입니다.<br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/29/23/a0012723_4ae91b705f55d.png" width="236" height="453" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/29/23/a0012723_4ae91b705f55d.png');" /></div>버튼의 속성창에서 타입을 "Info Light"로 변경해 주면 화면과 같은 모양의 버튼을 자동으로 생성해 줍니다. <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91b7adf41d.png" width="238" height="183" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91b7adf41d.png');" /></div>버튼이 놓여진 뷰의 화면과 객체창 입니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b89888cc.png" width="258" height="376" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91b89888cc.png');" /></div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/29/23/a0012723_4ae91b98b709e.png" width="313" height="211" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/29/23/a0012723_4ae91b98b709e.png');" /></div>"Root View Controller"의 Identity창을 열고 버튼을 참조하기 위한 Outlet과 Action을 추가합니다. Action이름은 "toggleView"로 지정합니다. Outlet은 "infoButton"이름으로 추가합니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91ba2c90af.png" width="227" height="478" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91ba2c90af.png');" /></div>추가한 Outlet을 버튼 객체와 연결합니다. Action "toggleView"는 버튼의 "Touch Up Inside"이벤트에 연결합니다. 정상적으로 연결을 했다면 아래와 같은 결과가 나와야 합니다. <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91bac82446.png" width="447" height="182" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91bac82446.png');" /></div>MainWindow.xib의 "App Delegate" Identity창을 선택합니다. 뷰를 연결하기 위해 Outlet에 "rootViewController"를 추가합니다. 타입은 "RootViewController"로 합니다. <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91bcc5a738.png" width="189" height="398" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91bcc5a738.png');" /></div>추가한 Outlet "rootViewController"를 실 객체에 연결합니다. 화면과 같습니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/29/23/a0012723_4ae91bbcb27b7.png" width="445" height="197" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/29/23/a0012723_4ae91bbcb27b7.png');" /></div><br />
5. 어플리케이션에 필요한 이미를 솔루션의 리소스로 추가합니다. 아래 이미지들을 다운 받습니다.<br />
<img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200911/06/23/a0012723_4af2f011eaafa.png" width="63" height="73" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200911/06/23/a0012723_4af2f011eaafa.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200911/06/23/a0012723_4af2f0331400a.png" width="33" height="65" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200911/06/23/a0012723_4af2f0331400a.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200911/06/23/a0012723_4af2f04d285c9.png" width="63" height="73" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200911/06/23/a0012723_4af2f04d285c9.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200911/06/23/a0012723_4af2f05fc0e73.png" width="9" height="32" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200911/06/23/a0012723_4af2f05fc0e73.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200911/06/23/a0012723_4af2f0698ee8b.png" width="63" height="73" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200911/06/23/a0012723_4af2f0698ee8b.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200911/06/23/a0012723_4af3ab7269ddb.png" width="51" height="77" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200911/06/23/a0012723_4af3ab7269ddb.png');" align="left" />파일 이름은 왼쪽부터 각각 "greenLightSmall.png", "gasPedalSmall.png", "redLightSmall.png", "stopLightCable.png", "yellowLightSmall.png", 그리고 배경이 되는 "road.png" 입니다.<br />
<br />
<br />
<br />
<br />
컴파일 시에 어플리케이션 디렉토리에 함께 복사 되도록 설정을 변경 해야 합니다. 방법은 각 이미지에서 오른쪽 버튼을 클릭 후에 나오는 메뉴의 "Build Action" 항목 중 "Content"를 설정 하는 것으로 간단히 끝납니다.<br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91bdac84e8.png" width="364" height="238" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91bdac84e8.png');" /></div>6. MainViewController와는 별도로 UIView를 상속한 클래스를 만들어서 개발을 하겠습니다. 파일 추가 메뉴를 이용하여 빈 클래스 파일을 "MainView"이름으로 추가합니다. MainView.cs파일이 생성 됩니다. 코드에 대해선 다음에 자세히 설명 합니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91beb43325.png" width="369" height="257" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/29/23/a0012723_4ae91beb43325.png');" /></div>꾸며야 할 결과 화면입니다. 참고하여 화면을 구성합니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91bf8172e7.png" width="234" height="329" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91bf8172e7.png');" /></div>실제 IB에서 작업 하는 경우는 이미지의 경로가 IB와 연동이 안되어 아래와 같이 보입니다. 당황하지 말고 컴파일 옵션 설정이 틀리지 않았다면 실행 시에 정상적으로 보입니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200911/06/23/a0012723_4af2f6dee9f88.png" width="192" height="281" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200911/06/23/a0012723_4af2f6dee9f88.png');" /></div>MainViewController.xib파일을 IB로 열고 화면 설계를 합니다. 뷰(View)의 클래스를 UIView에서 추가한 MainView로 지정해 줍니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/29/23/a0012723_4ae91c0931d52.png" width="367" height="235" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/29/23/a0012723_4ae91c0931d52.png');" /></div>뷰의 객체로서 UIImageView 객체 3개와 버튼 객체 1개를 뷰에 가져다 놓고 세부 위치와 크기를 조정합니다. 위치와 좌표는 아래 표를 참고 하세요.<br />
<div><table style="width: 677px; height: 215px;" border="1"><tbody><tr><td>이미지이름</td><td>X</td><td>Y</td><td>Width</td><td>Height</td><td>기타정보</td></tr><tr><td>road.png</td><td>0</td><td>0</td><td>320</td><td>460</td><td>&nbsp;</td></tr><tr><td>stopLightCable.png</td><td>150</td><td>0</td><td>9</td><td>32</td><td>&nbsp;</td></tr><tr><td>yellowLightSmall.png</td><td>59</td><td>20</td><td>190</td><td>219</td><td>&nbsp;</td></tr><tr><td>CustomButton</td><td>237</td><td>317<br />
</td><td>63</td><td>123</td><td>&nbsp;type=Custom<br />
&nbsp;Image=gasPedalSmall.png<br />
</td></tr><tr><td><br />
</td><td><br />
</td><td><br />
</td><td><br />
</td><td><br />
</td><td><br />
</td></tr></tbody></table></div><br />
"MainViewController.xib"의 Identity창을 열고 Outlet과 Action을 추가합니다. Outlet "stopLight"은 타이머에 맞게 이미지 변경을 하기 위해 사용할 UIImageView객체입니다. Action "gasPedalPressed"는 사용자의 액션을 받기 위해 버튼의 이벤트를 처리할 함수입니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91c1759e73.png" width="224" height="472" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91c1759e73.png');" /></div>추가한 각 Outlet과 Action을 실제 객체와 연결을 해 줍니다. Action의 이벤트는 "Touch Up Inside"를 연결했습니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91c24ecc5e.png" width="436" height="194" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/29/23/a0012723_4ae91c24ecc5e.png');" /></div><br />
7. 이번엔 간단한 FlipsideViewController의 뷰를 디자인 합니다. 주의할 사항은 화면에 보시는 것처럼 화면 상단에 "Navigation Bar"가 있다고 가정하고 작업을 해야 합니다. 이를 위해서 뷰의 속성 창을 보시면 "Simulated Interface Elements"항목이 있습니다. 이 속성은 화면 디자인을 위해 미리 특정 요소가 있다는 것을 가정하고 작업할 수 있도록 도와 줍니다. 이번 작업에서는 "Top Bar" 위치에 "Navigation Bar"를 선택합니다. 뷰 화면 상단에 파란색의 "Navigation Bar"가 자리 잡고 있는 것을 확인 할 수 있습니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/29/23/a0012723_4ae91c732eb6c.png" width="388" height="404" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/29/23/a0012723_4ae91c732eb6c.png');" /></div>화면 디자인에 들어가는 요소는 UILabel 2개와 UITextView 1개 입니다. 각각을 표와 같이 작업 합니다. <br />
<div><table style="width: 720px; height: 240px;" border="1"><tbody><tr><td>뷰 객체 <br />
</td><td>X</td><td>Y</td><td>Width</td><td>Height</td><td>속성정보</td></tr><tr><td>UILabel</td><td>20</td><td>20</td><td>280</td><td>21</td><td>&nbsp;Text=iPhone Apps of C# &amp; MonoTouch<br />
&nbsp;Layout-Alignment=Center<br />
</td></tr><tr><td>UILabel</td><td>20</td><td>49</td><td>280</td><td>21</td><td>&nbsp;Text=6번째 예제 : Reaction Time<br />
&nbsp;Layout-Alignment=Center<br />
</td></tr><tr><td>UITextView</td><td>20</td><td>78</td><td>280</td><td>308</td><td>&nbsp;Text=<br />
"AppsAmuck의 iPhone App예제를 MonoTouch로 구현하는 프로젝트.<br />
1. Minutes to Midnight, <br />
2. Bonfire, <br />
3. OpenURL, <br />
4. What is My IP?, <br />
5. Count Me In, <br />
6. Reaction Time<br />
<br />
http://neojjang.egloos.com 블로그를 방문 해 주세요."<br />
&nbsp;<br />
</td></tr></tbody></table></div><br />
여기까지 필요한 파일들과 화면 디자인을 끝냈습니다. 필요한 코드를 하나씩 작업해 보겠습니다.<br />
<br />
8. RootViewController를 메인 윈도우의 서브뷰로서 등록합니다. 이 작업이 없으면 어플리케이션 화면에 아무것도 표시 되지 않습니다. 솔루션 창에서 Main.cs파일을 편집창으로 불러 옵니다. 어플리케이션이 실행된 후에 호출되는 함수 "FinishedLaunching"을 찾아 뷰를 등록합니다.&nbsp; window.AddSubview(UIView view) 함수가 등록하는 역할을 해 줍니다. <br />
<div style="background-color: rgb(239, 239, 255);"><pre><code>...<br />
                // This method is invoked when the application has loaded its UI and its ready to run<br />
		public override bool <span style="text-decoration: underline;">FinishedLaunching</span> (UIApplication app, NSDictionary options)<br />
		{<br />
			// If you have defined a view, add it here:<br />
			<span style="text-decoration: underline;">window.AddSubview (rootViewController.View);</span><br />
			<br />
			window.MakeKeyAndVisible ();<br />
			<br />
			return true;<br />
		}<br />
...<br />
</code></pre></div>"rootViewController"는 화면 설계시에 Outlet으로 등록한 이름으로 코드에서 직접 참조가 가능합니다. "rootViewController.View"는 뷰 컨트롤러의 뷰를 나타내는 변수 입니다.&nbsp; 서브 뷰로서 등록을 했기 때문에 실행 시에 메인 화면에 RootViewController의 뷰를 표시 하게 됩니다.<br />
<br />
9. RootViewController.xib.cs에 Action(toggleView)구현 하겠습니다. 역할은 info버튼을 클릭 했을 때 MainViewController와 FlipsideViewController를 화면 전환하는 것입니다. 다른 예제들과 같은 내용입니다. <div style="background-color: rgb(239, 239, 255);"><pre><code>...<br />
	public partial class RootViewController : UIViewController<br />
	{<br />
		<span style="text-decoration: underline;">MainViewController mainViewController;</span><br />
		<span style="text-decoration: underline;">FlipsideViewController flipsideViewController;</span><br />
		<span style="text-decoration: underline;">UINavigationBar flipsideNavigationBar;</span><br />
..<br />
</code></pre></div> 멤버 변수로 앞에서 추가한 뷰 컨트롤러와 flipsideNavigationBar(UINavigationBar )를 추가합니다.<br />
	<br />
FlipsideViewController는 실행 초기에는 객체로 생성되어 있지 않기 때문에 toggleView에서 null인지 검사하여 객체를 생성 시켜 주는 "loadFlipsideViewController()"함수를 호출합니다. 이 함수의 역할은 FlipsideViewController를 생성하고 NavigationBar와 필요한 버튼 객체를 추가하는 것입니다. <div style="background-color: rgb(239, 239, 255);"><pre><code>...<br />
		public void <span style="text-decoration: underline;">loadFlipsideViewController</span>() <br />
		{<br />
			flipsideViewController = new FlipsideViewController();<br />
			<br />
			flipsideViewController.View.Frame = <span style="text-decoration: underline;">new RectangleF(0.0f, 44.0f,</span> // ←①<br />
			                                                   flipsideViewController.View.Frame.Width,<br />
			                                                   flipsideViewController.View.Frame.Height);<br />
			flipsideNavigationBar = <span style="text-decoration: underline;">new UINavigationBar(new RectangleF(0.0f, 0.0f, 320.0f, 44.0f));</span><br />
			flipsideNavigationBar.BarStyle = UIBarStyle.Black;<br />
			<br />
			UIBarButtonItem buttonItem = new UIBarButtonItem(UIBarButtonSystemItem.Done, <span style="text-decoration: underline;">delegate{ toggleView(null); }</span>);  // ←②<br />
			UINavigationItem navigationItem = new UINavigationItem("ReactionTime");<br />
			navigationItem.RightBarButtonItem = buttonItem;<br />
			<br />
			<span style="text-decoration: underline;">flipsideNavigationBar.PushNavigationItem(navigationItem, false);</span><br />
		}<br />
...<br />
</code></pre></div> flipsideViewController 뷰의 위치를 NavigationBar 만큼 조정하는 것이<code>(①</code>) 필요합니다.<code></code> 화면 디자인 할때 "Navigation Bar"가 있는 것을 가정하고 작업을 했지만, MonoDevelop에서 적용이 안되는 버그(?)가 있습니다. 그래서 뷰를 생성할 때 위치를 조정해 주지 않으면 안됩니다. <br />
<br />
"Navigation Bar"에 MainViewController로 전환하기 위해 버튼(UIBarButtonItem)을 추가했습니다. 버튼이 클릭 되었을 때 호출되는 이벤트 정의를 위해서 delegate를 사용하고 있는 것을(<code>②</code>) 기억해 둡니다. 많이 사용됩니다. <br />
<br />
Action "partial void toggleView (UIButton sender)"에서는 화면 전환에 필요한 UIView 애니메이션 처리를 합니다.<br />
<div style="background-color: rgb(239, 239, 255);"><pre><code>...<br />
		partial void toggleView (UIButton sender)<br />
		{<br />
			Console.WriteLine("toggleView");<br />
 			// flipsideViewController생성<br />
			if(flipsideViewController == null) loadFlipsideViewController();<br />
			<br />
			UIView mainView = mainViewController.View;<br />
			UIView flipsideView = flipsideViewController.View;<br />
			<br />
			// UIView의 애니메이션 시작을 알립니다.<br />
			UIView.BeginAnimations(null);<br />
			// 애니메이션은 1초간 이루어집니다.<br />
			UIView.SetAnimationDuration(1.0);<br />
			// 화면 전환 애니메이션의 방향을 설정합니다. 좌우상하를 지정할 수 있습니다.<br />
			UIViewAnimationTransition transition = (mainView.Superview != null) ? UIViewAnimationTransition.FlipFromRight : UIViewAnimationTransition.FlipFromLeft;<br />
			UIView.SetAnimationTransition(transition, this.View, true);<br />
			<br />
			// 현재 어떤 뷰가 활성 상태인지에 따라서 보여질 뷰를 결정하는 부분입니다.<br />
			if(mainView.Superview != null) <br />
			{<br />
				// MainView가 활성 상태였기 때문에 flipsideView가 나타날 것을 지정합니다.<br />
				flipsideViewController.ViewWillAppear(true);<br />
				// MainView는 사라지는 것으로 지정합니다.<br />
				mainViewController.ViewWillDisappear(true);<br />
				<br />
				// MainView와 infoButton을 현재 서브 뷰에서 제거합니다.<br />
				mainView.RemoveFromSuperview();<br />
				infoButton.RemoveFromSuperview();<br />
				<br />
				// FlipsideView와 NavigationBar를 메인 뷰의 서브 뷰로서 등록합니다.<br />
				this.View.AddSubview(flipsideView);<br />
				// NavigationBar를 순서상 flipsideView의 앞으로 지정합니다. <br />
				this.View.InsertSubviewAbove(flipsideNavigationBar, flipsideView);<br />
				<br />
				// 필요한 처리가 끝나고 각 뷰의 상태를 지정합니다.<br />
				mainViewController.ViewDidDisappear(true);<br />
				flipsideViewController.ViewDidAppear(true);<br />
			} else <br />
			{<br />
				// MainView가 나타날 것을 지정합니다.<br />
				mainViewController.ViewWillAppear(true);<br />
				flipsideViewController.ViewWillDisappear(true);<br />
				<br />
    				// flipsideView와 NavigationBar를 제거합니다.<br />
				flipsideView.RemoveFromSuperview();<br />
				flipsideNavigationBar.RemoveFromSuperview();<br />
				<br />
				// MainView 와 info버튼을 서브 뷰에 등록합니다.<br />
				this.View.AddSubview(mainView);<br />
				// info버튼이 순서상 위로 오도록 등록합니다.<br />
				this.View.InsertSubviewAbove(infoButton, mainView);<br />
				<br />
				// 필요한 처리가 끝나고 뷰의 상태를 지정합니다.<br />
				flipsideViewController.ViewDidDisappear(true);<br />
				mainViewController.ViewDidAppear(true);<br />
			}<br />
			<br />
			// 뷰의 애니메이션을 시작합니다.<br />
			UIView.CommitAnimations();<br />
		}<br />
...<br />
</code></pre></div>info버튼과 NavigationBar의 "back"버튼을 통해 화면 전환 애니메이션 처리를 해 봤습니다. 앞에서 다뤘던 예제들과 다른게 없는 내용입니다. <br />
<br />
10. 이제 실제 내용에 해당하는 MainView.cs에 작업을 해 보겠습니다.&nbsp; "UIAlertView"와 "NSTimer"의 사용 방법과 "Selector"등에 대해서 배울 수 있습니다. 코드를 보겠습니다. <br />
<br />
"UIAlertView"를 이용하기 위해 버튼이 눌렸을 때의 이벤트를 처리하기 위해 "UIAlertViewDelegate"를 상속받은 "ClickedAlert" 클래스를 생성했습니다. "Dismissed"이벤트에서 MainView의 "Dismissed"를 호출하도록 되어 있습니다.<br />
<div style="background-color: rgb(239, 239, 255);"><pre><code>...<br />
	public class ClickedAlert : UIAlertViewDelegate<br />
	{<br />
		MainView _view;<br />
		public ClickedAlert(MainView view)<br />
		{<br />
			_view = view;<br />
		}<br />
		<br />
		public override void Dismissed (UIAlertView alertView, int buttonIndex)<br />
		{<br />
			Console.WriteLine("ClickedAlert::Dismissed");<br />
			//base.Dismissed (alertView, buttonIndex);<br />
</code><code>			// MainView의 Dismissed함수를 호출합니다.</code><br />
<code>			_view.Dismissed(alertView, buttonIndex);<br />
		}<br />
<br />
	}<br />
...<br />
</code></pre></div>	MainView입니다. "UIView"에서 상속 받았습니다. 뷰에서 처리할 내용은 타이머가 임의 시간으로 지정되어 동작을 하도록 하고 그때 마다 호출되는 함수에서 화면의 이미지 교체를 합니다. 그리고 사용자로부터 버튼의 터치 이벤트를 받아서 흘러간 시간을 체크하고 "UIAlertView"를 이용하여 메시지를 출력하는 것입니다. 설명은 코드에 첨가한 주석으로 대체합니다.<br />
<div style="background-color: rgb(239, 239, 255);"><pre><code>...<br />
	public partial class MainView : UIView<br />
	{<br />
		int greenLightOn = 0;<br />
</code><code>		// 측정 시작 시간을 저장하기 위한 멤버 변수입니다. <br />
</code><code>		// </code><code>DateTime은 C#에서 제공하는 클래스입니다.</code><br />
<code>		DateTime startDate;<br />
		<br />
</code><code>		// 각 타이머에 의해서 호출될 함수를 위한 Selector를 정의 했습니다. </code><br />
<code>		private static Selector yellowSelector = new Selector("onYellowLightTimer");<br />
		private static Selector redSelector = new Selector("onRedLightTimer");<br />
		<br />
		public MainView ()<br />
		{<br />
			Console.WriteLine("MainView");<br />
			Initialize();<br />
		}<br />
		<br />
		public MainView(IntPtr handle) : base(handle)<br />
		{<br />
			Initialize();<br />
		}<br />
		<br />
		public MainView(NSCoder coder) : base(coder)<br />
		{<br />
			Initialize();<br />
		}<br />
		<br />
		public void Initialize() <br />
		{<br />
		}<br />
		<br />
</code><code>		// 이 함수는 리소스로부터 로딩이 완료 되었을 때 호출 되는 것으로 알고 있습니다.<br />
</code><code>		// 화면에 모든 이미지가 표시 된 후에 UIAlertView의 메시지 창이 실행 됩니다.</code><br />
<code>		public override void AwakeFromNib ()<br />
		{<br />
			Console.WriteLine("AwakeFromNib");<br />
			base.AwakeFromNib ();<br />
			UIAlertView alert = new UIAlertView("Reaction Time: 준비"<br />
			                                    , "녹색 등이 켜진 후 가능한 빨리 발바닥 패달을 터치해 주세요."<br />
			                                    , new ClickedAlert(this)<br />
			                                    , "Play"<br />
			                                    , null);<br />
			<br />
			alert.Show();	<br />
		}<br />
<br />
</code><code>		// ClickedAlert(UIAlertViewDelegate)에 의해서 호출되는 함수입니다. <br />
</code><code>		// 역할은 내부 상태를 초기화 하는 것입니다. </code><br />
<code>		public void Dismissed(UIAlertView alertView, int buttonIndex) <br />
		{<br />
			Console.WriteLine("Dismissed");<br />
</code><code>		</code>        //  화면 신호등 <br />
<code>			stopLight.Image = UIImage.FromFile("yellowLightSmall.png");<br />
			greenLightOn = 0;<br />
			<br />
			// NSTimer를 설정합니다. C#에선 Objective-C와 다르게 아래의 4가지 함수를 용도에 맞게 제공하고 있습니다.</code><code></code><br />
<code>			// - NSTimer.CreateRepeatingScheduledTimer<br />
			// - NSTimer.CreateRepeatingTimer<br />
			// - NSTimer.CreateScheduledTimer<br />
			// - NSTimer.CreateTimer<br />
</code><code>			// </code><code>예제에서는 NSTimer.CreateScheduledTimer를 사용하여 1회성 타이머를 구동합니다.</code><br />
<code>			// 타이머에 의해 호출되는 것은 yellowSelector로서 </code>"<code>onYellowLightTimer"함수가 호출됩니다.<br />
</code><code>&nbsp;</code><code>			</code><code>NSTimer.CreateScheduledTimer(3.0f, this, yellowSelector, null, false);<br />
		}<br />
		<br />
</code><code>		// 발모양의 이미지 버튼을 터치 했을 때 호출되는 함수로 Action으로서 등록 했습니다.</code><br />
<code>		partial void gasPedalPressed (UIButton sender)<br />
		{<br />
			Console.WriteLine("gasPedalPressed");<br />
			<br />
</code><code>			// 현재 시간에서 시작 시간을 뺀 시간을 밀리초로 환산하는 부분입니다.<br />
</code><code>			// C#의 TimeSpan 클래스를 사용했습니다.</code><br />
<code>			TimeSpan period = DateTime.Now.Subtract(startDate);<br />
			double noSeconds = (double)(period.TotalMilliseconds);<br />
			<br />
			String reactionTime = String.Format("   반응 시간은  {0:0.} milliseconds. 더 빨리 눌러 보셔~", noSeconds);<br />
			<br />
			if(greenLightOn == 0) reactionTime = "녹색 등이 켜질 때까지 기다리기! 성격이 급하긴...";<br />
			<br />
</code><code>			// 메시지만 다른 UIAlertView입니다.</code><br />
<code>			UIAlertView alert = new UIAlertView("ReactionTime", reactionTime, new ClickedAlert(this), "OK", null);<br />
			alert.Show();<br />
		}<br />
<br />
</code><code>		// Selector를 정의하는 방법입니다. [Export("함수명")] 방식으로 지시합니다. </code><br />
<code>		[Export("onYellowLightTimer")]<br />
		public void onYellowLightTimer()<br />
		{<br />
			Console.WriteLine("onYellowLightTimer");<br />
</code><code>			// 신호등 이미지를 빨간색 이미지로 변경합니다.</code><br />
<code>			stopLight.Image = UIImage.FromFile("redLightSmall.png");<br />
			<br />
</code><code>			// 랜덤 클래스를 이용하여 임의 난수를 발생 시킵니다.</code><code></code><br />
<code>			// C#에서 제공하는 랜덤 클래스를 참고 하시면 됩니다.</code><br />
<code>			Random rand = new Random();<br />
			int delay = (rand.Next() % 7) + 1;<br />
			Console.WriteLine("   delay = {0}", delay);<br />
<br />
</code><code>			// 타이머를 정의하여 지정된 시간 후에 redSelector(onRedLightTimer)가 호출 되도록 합니다.</code><br />
<code>			NSTimer.CreateScheduledTimer((3.0+delay), this, redSelector, null, false);<br />
		}<br />
		<br />
</code><code>		</code><code>// Selector를 정의하는 방법입니다. [Export("함수명")] 방식으로 지시합니다. </code><br />
<code>		[Export("onRedLightTimer")]<br />
		public void onRedLightTimer() <br />
		{<br />
			Console.WriteLine("onRedLightTimer");<br />
</code><code>			// </code>화면의 신호등을 녹색등 이미지로 교체 합니다.<br />
<code>			stopLight.Image = UIImage.FromFile("greenLightSmall.png");<br />
			<br />
			greenLightOn = 1;<br />
</code><code>			// 현재 시간을 저장합니다.</code><br />
<code>			startDate = DateTime.Now;<br />
		}<br />
	}<br />
...<br />
</code></pre></div>여기까지입니다.&nbsp; 컴파일 하고 실행 시켜 봅니다. 아래 화면은 각 실행 화면을 캡쳐한 것입니다. 녹색불이 켜졌을 때 발 모양의 패달을 얼마나 빨리 누르는 것으로 순발력 테스트(?)를 해 보실 수 있습니다. 마지막 그림은 info버튼를 눌렀을 때 전환되는 화면입니다.<br />
<img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200911/06/23/a0012723_4af3e2de4441c.png" width="117" height="219" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200911/06/23/a0012723_4af3e2de4441c.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200911/06/23/a0012723_4af3e2e69be2f.png" width="117" height="218" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200911/06/23/a0012723_4af3e2e69be2f.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200911/06/23/a0012723_4af3e2ed70716.png" width="117" height="218" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200911/06/23/a0012723_4af3e2ed70716.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200911/06/23/a0012723_4af3e2f55aef3.png" width="117" height="218" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200911/06/23/a0012723_4af3e2f55aef3.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200911/06/23/a0012723_4af3e2fe47175.png" width="117" height="217" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200911/06/23/a0012723_4af3e2fe47175.png');" align="left" /><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
최근 버젼은 MonoDevelop에서 디버깅을 할 수 있게 되었습니다. 점점 개발이 편하게 되어 가는 군요. 좋은 현상입니다. <br />
<br />
다음은 Appsamuck의 7번째 예제에 도전 해 보겠습니다.<br />
<br/><br/>tag : <a href="/tag/아이폰" rel="tag">아이폰</a>,&nbsp;<a href="/tag/MonoTouch" rel="tag">MonoTouch</a>,&nbsp;<a href="/tag/MonoDevelop" rel="tag">MonoDevelop</a>,&nbsp;<a href="/tag/AppsAmuck" rel="tag">AppsAmuck</a>,&nbsp;<a href="/tag/ReactionTime" rel="tag">ReactionTime</a>,&nbsp;<a href="/tag/InterfaceBuilder" rel="tag">InterfaceBuilder</a>			 ]]> 
		</description>
		<category>iPhone</category>
		<category>아이폰</category>
		<category>MonoTouch</category>
		<category>MonoDevelop</category>
		<category>AppsAmuck</category>
		<category>ReactionTime</category>
		<category>InterfaceBuilder</category>

		<comments>http://neojjang.egloos.com/1965734#comments</comments>
		<pubDate>Fri, 06 Nov 2009 08:55:37 GMT</pubDate>
		<dc:creator>연서아빠</dc:creator>
	</item>
	<item>
		<title><![CDATA[ [트위터] 트위터 전용 모바일 단말기 등장 : TwitterPeek ]]> </title>
		<link>http://neojjang.egloos.com/1965326</link>
		<guid>http://neojjang.egloos.com/1965326</guid>
		<description>
			<![CDATA[ 
  정작 저장해 놓은 글은 마무리를 안하고, 기사를 올리는 군요.<br />
<br />
모바일 단말기 회사인 미국의 Peek사에서 트위터 전용 모바일 단말기를 출시 했다고 합니다. (뉴스기사 → <a target="_blank" href="http://www.itmedia.co.jp/enterprise/articles/0911/04/news025.html">ITmedia</a>) <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200911/05/23/a0012723_4af22bec3dc9a.jpg" width="500" height="252.542372881" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200911/05/23/a0012723_4af22bec3dc9a.jpg');" /></div>상당히 제한적인 단말기 인데요, 기능은 트위터를 이용하기 위한 것으로 한정되어 있다고 합니다. 어차피 무선 인터넷을 이용하는 단말기인데 트위터 이외의 웹 페이지에 접근하는 것은 안된다고 하는데, 외부 링크가 걸린 글의 경우는 어떻게 처리하고 있는지 무척 궁금합니다.&nbsp; <br />
Peek사가 운영하는 무선망에 접속을 하는 것이 기본이지만 WiFi는 이용할 수 없습니다. 가격에 무선 요금이 별도로 책정되어 있는 이유이기도 하겠지요.<br />
<br />
기사에 나온 사양은 2.5인치 화면에 QWERTY키보드를 장착했습니다. 메모리는 8MB(요즘 세상에 너무 작지 않나요?)이고, 전체 무게는 363g, 배터리는 통상적인 사용인 경우 4일~5일을 버틸 수 있다고 하네요. <br />
<br />
결정적으로 제가 생각하기에 가격이 너무 비쌉니다.&nbsp; 기계 가격만 $99.99입니다. 무선망 사용료는 별도이구요. 트위터만을 바라보고 만든 단말기로서는 비싼 것이 아닌가 합니다.<br />
<br />
자체 무선망을 활용하기 위한 아이템으로서 기획이 된 것은 아닌가 하는 생각이 듭니다. 오히려 e-북 단말기가 더 좋지 않았을까 하는 생각을 해 봅니다. <br />
<br />
설마 SKT나 KT, LGT가 이런 이상한 단말기를 만들어 팔지는 않겠죠? ㅎㅎ<br />
<br />
<br />
<br/><br/>tag : <a href="/tag/트위터" rel="tag">트위터</a>,&nbsp;<a href="/tag/TwitterPeek" rel="tag">TwitterPeek</a>,&nbsp;<a href="/tag/Peek사" rel="tag">Peek사</a>,&nbsp;<a href="/tag/전용단말기" rel="tag">전용단말기</a>,&nbsp;<a href="/tag/Twitter전용단말기" rel="tag">Twitter전용단말기</a>			 ]]> 
		</description>
		<category>자료</category>
		<category>트위터</category>
		<category>TwitterPeek</category>
		<category>Peek사</category>
		<category>전용단말기</category>
		<category>Twitter전용단말기</category>

		<comments>http://neojjang.egloos.com/1965326#comments</comments>
		<pubDate>Thu, 05 Nov 2009 01:48:16 GMT</pubDate>
		<dc:creator>연서아빠</dc:creator>
	</item>
	<item>
		<title><![CDATA[ [트위터] Twib - 트위터에서 인기있는 사이트는? ]]> </title>
		<link>http://neojjang.egloos.com/1962371</link>
		<guid>http://neojjang.egloos.com/1962371</guid>
		<description>
			<![CDATA[ 
  자체 서비스를 플랫폼으로 개방하여 다양한 관련 서비스들이 생겨나는 기반 역할을 하는 것이 하나의 대세인 세상입니다.<br />
<br />
오늘 소개해 드리는 서비스도 트위터를 활용(?)한 서비스입니다. <br />
<br />
트위터에서 블로그나 서비스들을 홍보하는 경우가 많이 있습니다. RT등을 통해 반복적으로 트윗되는 경우도 상당히 많죠. 그러나 어떤 사이트가 트위터 이용자들 사이에서 인기가 있는지 궁금한 경우가 있습니다. 여기서 착안하여 트윗팅된 URL들을 검색하여 인기 순위를 매기는 서비스가 등장했습니다. <br />
<br />
<a target="_blank" href="http://twib.jp">http://twib.jp</a><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/26/23/a0012723_4ae576df1f808.png" width="500" height="444.963655244" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/26/23/a0012723_4ae576df1f808.png');" /></div><a href="http://twib.jp">트윕(Twib)</a>이라는 서비스인데요. 매일 투고된 글들 중에서 URL이 포함된 글을 자동으로 수집하여 인기 순위를 결정한다고 합니다. 하루에 3만건정 이상 등록이 된다고 설명을 하고 있습니다. 북마킹 서비스를 자동화 한 서비스라고도 생각 됩니다. (인기 순위는 아마도 투고된 글의 갯수가 아닌가 싶습니다만...) <br />
<br />
서비스는 메인에는 현재 인기있는 URL들의 인기순으로 나열하고 있습니다. 하단의 "tweets"를 클릭하면 소개된 URL과 관련하여 투고된 글들을 볼 수 있도록 구성되어 있습니다. 상단 메뉴의 분류는 어떻게 하고 있는 것인지 궁금합니다. 사진 링크를 구별하거나 유투브를 구별하여 분류하는 등 재미있습니다. <br />
<br />
자체 API의 제공과 아이폰용 전용 페이지까지 준비하는 등 세부적인 부분까지 신경 쓰는 등 상당히 잘 만들어져 있습니다. 개발 일기도 있군요.<br />
<br />
운영은 개인이 하고 있는데 서비스에 대해서 의견이 있으신 분은 <a target="_blank" href="http://twitter.com/yusukebe">@yusukebe</a> 로 보내시면 됩니다. <br />
(절대로 악의적인 글은 쓰지 맙시다. 부탁드립니다.)<br />
<br />
지속적으로 트위터를 활용한 서비스들이 등장을 하는데, 트위터를 이용하여 만들 수 있는 서비스는 정말 끝이 없는 듯 싶습니다.<br />
<br />
그런데 아직 제대로 된 수익을 내지 못하고 있는 것이 신기합니다. <br />
<br />
 <br/><br/>tag : <a href="/tag/트위터" rel="tag">트위터</a>,&nbsp;<a href="/tag/트윕" rel="tag">트윕</a>,&nbsp;<a href="/tag/Twib" rel="tag">Twib</a>			 ]]> 
		</description>
		<category>여기는 일본</category>
		<category>트위터</category>
		<category>트윕</category>
		<category>Twib</category>

		<comments>http://neojjang.egloos.com/1962371#comments</comments>
		<pubDate>Mon, 26 Oct 2009 10:32:19 GMT</pubDate>
		<dc:creator>연서아빠</dc:creator>
	</item>
	<item>
		<title><![CDATA[ [일본] 자신의 오타쿠 이력서를 작성해 보자~~~, 오타쿠 레쥬메 ]]> </title>
		<link>http://neojjang.egloos.com/1960978</link>
		<guid>http://neojjang.egloos.com/1960978</guid>
		<description>
			<![CDATA[ 
  일본은 특이한(?) 서비스들이 많습니다. 오늘은 <a href="%20%C3%AC%C2%98%C2%A4%C3%AD%C2%83%C2%80%C3%AC%C2%BF%C2%A0%28%C3%AC%C2%9D%C2%BC%C3%AB%C2%B3%C2%B8%20%C3%AC%C2%96%C2%B4:%20%C3%A3%C2%81%C2%8A%C3%A3%C2%81%C2%9F%C3%A3%C2%81%C2%8F,%20%C3%A3%C2%82%C2%AA%C3%A3%C2%82%C2%BF%C3%A3%C2%82%C2%AF,%20%C3%A3%C2%83%C2%B2%C3%A3%C2%82%C2%BF%C3%A3%C2%82%C2%AF.%20%C3%AC%C2%9D%C2%BC%C3%AB%C2%B0%C2%98%C3%AC%C2%A0%C2%81%C3%AC%C2%9C%C2%BC%C3%AB%C2%A1%C2%9C%20%C3%AA%C2%B0%C2%80%C3%AD%C2%83%C2%80%C3%AC%C2%B9%C2%B4%C3%AB%C2%82%C2%98%28%C3%A3%C2%82%C2%AA%C3%A3%C2%82%C2%BF%C3%A3%C2%82%C2%AF%29%C3%AB%C2%A1%C2%9C%20%C3%AD%C2%91%C2%9C%C3%AA%C2%B8%C2%B0%29%C3%AB%C2%8A%C2%94%20%C3%AC%C2%A3%C2%BC%C3%AB%C2%A1%C2%9C%20%C3%AD%C2%8A%C2%B9%C3%AC%C2%A0%C2%95%20%C3%AB%C2%B6%C2%84%C3%AC%C2%95%C2%BC%C3%AB%C2%82%C2%98%20%C3%AC%C2%B7%C2%A8%C3%AB%C2%AF%C2%B8%C3%AC%C2%97%C2%90%20%C3%AC%C2%97%C2%B4%C3%AC%C2%A4%C2%91%C3%AD%C2%95%C2%B4%20%C3%AC%C2%9E%C2%88%C3%AB%C2%8A%C2%94%20%C3%AC%C2%82%C2%AC%C3%AB%C2%9E%C2%8C%C3%AC%C2%9D%C2%84%20%C3%AA%C2%B0%C2%80%C3%AB%C2%A6%C2%AC%C3%AD%C2%82%C2%A4%C3%AB%C2%8A%C2%94%20%C3%AC%C2%9D%C2%BC%C3%AB%C2%B3%C2%B8%C3%AC%C2%96%C2%B4%C3%AC%C2%9D%C2%B4%C3%AB%C2%8B%C2%A4.%20%C3%AC%C2%A0%C2%91%C3%AB%C2%AF%C2%B8%C3%AC%C2%82%C2%AC%C3%AB%C2%A1%C2%9C%C3%AB%C2%8F%C2%84%20%C3%AC%C2%93%C2%B0%C3%AC%C2%97%C2%AC%20%C3%AC%C2%97%C2%B4%C3%AC%C2%A4%C2%91%C3%AD%C2%95%C2%B4%20%C3%AC%C2%9E%C2%88%C3%AB%C2%8A%C2%94%20%C3%AC%C2%86%C2%8C%C3%AC%C2%9E%C2%AC%C3%AC%C2%97%C2%90%20%C3%AC%C2%9D%C2%B4%C3%AC%C2%96%C2%B4%20%27%C3%A2%C2%97%C2%8B%C3%A2%C2%97%C2%8B%C3%AC%C2%98%C2%A4%C3%AD%C2%83%C2%80%27%20%C3%AC%C2%8B%C2%9D%C3%AC%C2%9C%C2%BC%C3%AB%C2%A1%C2%9C%20%C3%AC%C2%93%C2%B0%C3%AA%C2%B8%C2%B0%C3%AB%C2%8F%C2%84%20%C3%AD%C2%95%C2%9C%C3%AB%C2%8B%C2%A4.%28%C3%AC%C2%98%C2%88%20:%20%C3%AA%C2%B1%C2%B4%C3%AC%C2%98%C2%A4%C3%AD%C2%83%C2%80%28%C3%A3%C2%82%C2%AC%C3%A3%C2%83%C2%B3%C3%A3%C2%82%C2%AA%C3%A3%C2%82%C2%BF,%20%C3%A3%C2%82%C2%AC%C3%A3%C2%83%C2%8E%C3%A3%C2%82%C2%BF,%20%C3%AA%C2%B0%C2%84%C3%AC%C2%98%C2%A4%C3%AD%C2%83%C2%80,%20%C3%AA%C2%B0%C2%80%C3%AB%C2%85%C2%B8%C3%AD%C2%83%C2%80%29%C3%A2%C2%86%C2%90%C3%AA%C2%B1%C2%B4%C3%AB%C2%8B%C2%B4%20%C3%AC%C2%98%C2%A4%C3%AD%C2%83%C2%80%C3%AC%C2%BF%C2%A0%29%20%C3%AD%C2%95%C2%9C%C3%AA%C2%B5%C2%AD%C3%AC%C2%97%C2%90%C3%AC%C2%84%C2%A0%20%C3%AB%C2%B9%C2%84%C3%AC%C2%8A%C2%B7%C3%AD%C2%95%C2%9C%20%C3%AB%C2%B0%C2%9C%C3%AC%C2%83%C2%81%C3%AA%C2%B3%C2%BC%20%C3%AD%C2%91%C2%9C%C3%AD%C2%98%C2%84%C3%AC%C2%9C%C2%BC%C3%AB%C2%A1%C2%9C%20%27%C3%A2%C2%97%C2%8B%C3%AB%C2%8D%C2%95%27,%20%27%C3%A2%C2%97%C2%8B%C3%AB%C2%8D%C2%95%C3%AD%C2%9B%C2%84%27[1]%20%C3%AB%C2%93%C2%B1%C3%AC%C2%9D%C2%98%20%C3%AD%C2%91%C2%9C%C3%AD%C2%98%C2%84%C3%AC%C2%9D%C2%84%20%C3%AC%C2%A3%C2%BC%C3%AB%C2%A1%C2%9C%20%C3%AC%C2%82%C2%AC%C3%AC%C2%9A%C2%A9%C3%AD%C2%95%C2%9C%C3%AB%C2%8B%C2%A4.%20%28%C3%AC%C2%B6%C2%9C%C3%AC%C2%B2%C2%98%20:%20%C3%AD%C2%95%C2%9C%C3%AA%C2%B5%C2%AD%C3%AC%C2%96%C2%B4%20%C3%AC%C2%9C%C2%84%C3%AD%C2%82%C2%A4%C3%AD%C2%94%C2%BC%C3%AB%C2%94%C2%94%C3%AC%C2%95%C2%84%20http://ko.wikipedia.org/wiki/%EC%98%A4%ED%83%80%EC%BF%A0%20%29">오타쿠</a>들을 위해 <span style="color: rgb(204, 0, 0); font-weight: bold;">오타쿠 이력서</span>를 작성하는 서비스를 소개 합니다. <br />
<br />
<a target="_blank" href="http://resume.otakuma.net/">http://resume.otakuma.net/</a><br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/22/23/a0012723_4adfb4e268bad.png" width="500" height="417.857142857" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/22/23/a0012723_4adfb4e268bad.png');" /></div><br />
비회원제로 누구나 참가가 가능한 서비스입니다.&nbsp; 보통 이력서와 비슷한 양식에 언제 어떤 것에 빠졌었는지를 기록하는 형식입니다. 물론 자기의 오타쿠 이력서를 공개 하여 다른 사람들이 볼 수도 있습니다. 보고 있는 이력서를 <a target="_blank" href="http://twitter.com">트위터</a>를 포함하여 다양한 SNS에 투고하는 기능도 있습니다.(트위터 연동은 거의 필수가 되어 가는 듯 싶습니다.)  <br />
<br />
저도 써 볼게 뭐가 있을까 생각해 봐는데 오타쿠라고 할 만한게 전혀 없네요. <br />
----<br />
<span style="color: rgb(51, 51, 255); font-weight: bold;">오타쿠</span>(일본어: おたく, オタク, ヲタク. 일반적으로 가타카나(オタク)로 표기)는 주로 특정 분야나 취미에 열중해 있는 사람을 가리키는일본어이다. 접미사로도 쓰여 열중해 있는 소재에 이어 '○○오타' 식으로 쓰기도 한다.(예 : 건오타(ガンオタ, ガノタ,간오타, 가노타)←건담 오타쿠) 한국에선 비슷한 발상과 표현으로 '○덕', '○덕후'[1] 등의 표현을 주로 사용한다.<br />
(출처 : 한국어 위키피디아 <a target="_blank" href="http://ko.wikipedia.org/wiki/%EC%98%A4%ED%83%80%EC%BF%A0">http://ko.wikipedia.org/wiki/%EC%98%A4%ED%83%80%EC%BF%A0</a> )<br />
<br/><br/>tag : <a href="/tag/오타쿠" rel="tag">오타쿠</a>,&nbsp;<a href="/tag/오타쿠이력서" rel="tag">오타쿠이력서</a>,&nbsp;<a href="/tag/이력서" rel="tag">이력서</a>,&nbsp;<a href="/tag/일본" rel="tag">일본</a>,&nbsp;<a href="/tag/트위터" rel="tag">트위터</a>			 ]]> 
		</description>
		<category>여기는 일본</category>
		<category>오타쿠</category>
		<category>오타쿠이력서</category>
		<category>이력서</category>
		<category>일본</category>
		<category>트위터</category>

		<comments>http://neojjang.egloos.com/1960978#comments</comments>
		<pubDate>Thu, 22 Oct 2009 01:34:11 GMT</pubDate>
		<dc:creator>연서아빠</dc:creator>
	</item>
	<item>
		<title><![CDATA[ [트위터][일본] Girls Log : 젊은 여성을 상대로 하는 트위터 서비스, 걸스로그? ]]> </title>
		<link>http://neojjang.egloos.com/1960652</link>
		<guid>http://neojjang.egloos.com/1960652</guid>
		<description>
			<![CDATA[ 
  일본에서도 <a target="_blank" href="http://twitter.com">트위터</a>가 인기가 있다보니 재미있는(?) 서비스들을 많이 만들어 냅니다. 그만큼 아이디어를 짜내는 능력이 탁월하다고 할까요. <br />
<br />
"<a target="_blank" href="http://girlslog.jp/">GirlsLog</a>"도 트위터를 플랫폼으로 활용한 서비스로 타겟층이 젊은 여성들입니다. 모델등이 포함된 20대 전후의 젊은 여성들의 트위터에 투고한 글들만을 모아서 보여줍니다. 서비스를 만든 회사는 F1층(20~34살 사이의 여성층)을 위한 광고 매체로서 키워 나갈 것이라고 합니다. (F1층이란 용어도 처음 알았습니다. )<br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/21/23/a0012723_4ade6cbf82775.png" width="500" height="340.319361277" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/21/23/a0012723_4ade6cbf82775.png');" /></div>투고는 전문 투고진을 운영합니다. 현재는 모델등이 포함된 8명이 활동을 하는데, 앞으로 더 늘릴 것이라는 군요.<br />
<br />
이 서비스도 광고가 수익모델인데요, 광고를 적용하는 방법들은 참고를 해 볼 필요가 있을 듯 합니다. 사이트 광고나 링크의 이동시 광고를 보여주거나 하는 것과, 해당 기업에 대한 광고로서 직접 투고하는 것등이 있습니다. 또한 트위터의 배경을 기업 이미지로 바꿔 주는 것도 하나의 수익을 내는 방법이군요.<br />
<br />
"걸스로그 GirlsLog" 유행에 민감한 여성이 대상이기 때문에 광고 효과는 꽤 있지 않을까 싶네요. <br />
<br />
트위터를 어떻게 활용하면 좋을까에 대한 예제가 되지 않을까 싶습니다.<br />
<br />
미투데이로는 이런 서비스를 만들 수 있나요?<br />
<br/><br/>tag : <a href="/tag/트위터" rel="tag">트위터</a>,&nbsp;<a href="/tag/걸스로그" rel="tag">걸스로그</a>,&nbsp;<a href="/tag/GirlsLog" rel="tag">GirlsLog</a>,&nbsp;<a href="/tag/광고매체" rel="tag">광고매체</a>,&nbsp;<a href="/tag/광고" rel="tag">광고</a>,&nbsp;<a href="/tag/젊은여성" rel="tag">젊은여성</a>,&nbsp;<a href="/tag/F1층" rel="tag">F1층</a>,&nbsp;<a href="/tag/twitter" rel="tag">twitter</a>,&nbsp;<a href="/tag/미투데이" rel="tag">미투데이</a>			 ]]> 
		</description>
		<category>여기는 일본</category>
		<category>트위터</category>
		<category>걸스로그</category>
		<category>GirlsLog</category>
		<category>광고매체</category>
		<category>광고</category>
		<category>젊은여성</category>
		<category>F1층</category>
		<category>twitter</category>
		<category>미투데이</category>

		<comments>http://neojjang.egloos.com/1960652#comments</comments>
		<pubDate>Wed, 21 Oct 2009 02:37:29 GMT</pubDate>
		<dc:creator>연서아빠</dc:creator>
	</item>
	<item>
		<title><![CDATA[ [iPhone] 애플이 무료 어플에서 컨텐츠 판매를 지원하기 시작했습니다. In App Purchase 시작 ]]> </title>
		<link>http://neojjang.egloos.com/1959123</link>
		<guid>http://neojjang.egloos.com/1959123</guid>
		<description>
			<![CDATA[ 
  <div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/16/23/a0012723_4ad7afbea8dc9.png" width="500" height="476.148409894" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/16/23/a0012723_4ad7afbea8dc9.png');" /></div><span class="Apple-style-span" style="font-family: 'Lucida Grande',Geneva,Arial,Verdana,sans-serif; line-height: 18px; color: rgb(51, 51, 51);"></span><div>무료 어플리케이션에서 컨텐츠 판매를 할 수 있도록 애플이 In App Purchase 프로그램을 시작했습니다. <div><br />
</div><div>Store Kit 프레임워크를 사용하더라도 자체 결제 시스템을 구축하지 않으면 안된다고 했었던 것으로 알고 있는데, &nbsp;그런 고민을 덜게 되었습니다. 설명을 보니 iTunes Store를 경유해서 결제가 이루어지도록 되어 있네요. <br />
</div><div><br />
예를 들어 잡지사의 정기 구독 무료 어플리케이션 같은 것이 가능하지 않을까 싶네요. 네이버의 웹툰도 만화를 판매할 수 있겠습니다. <br />
<br />
아래 사이트를 방문하시면 더 자세한 정보를 얻으실 수 있습니다. <br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/16/23/a0012723_4ad7c5f01eb98.png" width="500" height="110.488798371" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/16/23/a0012723_4ad7c5f01eb98.png');" /></div>link : <a target="_blank" href="https://developer.apple.com/iphone/appstore/inapppurchase.html">https://developer.apple.com/iphone/appstore/inapppurchase.html</a><br />
<br />
<br />
<br />
</div><div><br />
</div></div><br/><br/>tag : <a href="/tag/아이폰" rel="tag">아이폰</a>,&nbsp;<a href="/tag/iPhone" rel="tag">iPhone</a>,&nbsp;<a href="/tag/InAppPurchase" rel="tag">InAppPurchase</a>,&nbsp;<a href="/tag/컨텐츠" rel="tag">컨텐츠</a>,&nbsp;<a href="/tag/결제" rel="tag">결제</a>,&nbsp;<a href="/tag/iTunes" rel="tag">iTunes</a>,&nbsp;<a href="/tag/앱스토어" rel="tag">앱스토어</a>,&nbsp;<a href="/tag/AppStore" rel="tag">AppStore</a>			 ]]> 
		</description>
		<category>iPhone</category>
		<category>아이폰</category>
		<category>iPhone</category>
		<category>InAppPurchase</category>
		<category>컨텐츠</category>
		<category>결제</category>
		<category>iTunes</category>
		<category>앱스토어</category>
		<category>AppStore</category>

		<comments>http://neojjang.egloos.com/1959123#comments</comments>
		<pubDate>Fri, 16 Oct 2009 01:04:01 GMT</pubDate>
		<dc:creator>연서아빠</dc:creator>
	</item>
	<item>
		<title><![CDATA[ [iPhone][MonoTouch] 다섯번째 샘플 : Count Me In (2) ]]> </title>
		<link>http://neojjang.egloos.com/1958663</link>
		<guid>http://neojjang.egloos.com/1958663</guid>
		<description>
			<![CDATA[ 
  지난 설명에 이어서 마무리 해 봅니다.<div><span class="Apple-style-span" style="font-family: 돋움, sans-serif; font-size: 14px; line-height: normal; white-space: pre; "><a href="http://neojjang.egloos.com/1957431" target="_blank">[iPhone][MonoTouch] 다섯번째 샘플 : Count Me In (1)</a></span><br />
<div><br />
</div><div><br />
</div><div>7. FlipsideViewController.xib파일을 Interface Builder로 열고 화면 설계를 하죠. 간단한 안내 페이지라고 생각하면 됩니다. &nbsp;</div><div>아이폰의 화면에서 상태바나 네비게이션바, 하부 툴바가 있는 상황을 고려하여 설계를 할 수 있도록 제공하고 있습니다. &nbsp;뷰의 속성 윈도우의 "Simulated User Interface Elements" 항목 입니다. 3가지 조건이 "None"의 경우는 화면 전체를 사용하는 경우가 됩니다. 이번 예제에서는 "Top Bar"에 "Navigation Bar"가 있는 경우를 설정하고 화면 설계를 하겠습니다.</div><div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/14/23/a0012723_4ad5d81e28eac.png" width="301" height="585" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/14/23/a0012723_4ad5d81e28eac.png');" /></div>Top Bar설정을 하면 뷰의 화면에 네비게이션 바의 공간에 네비게이션 바가 있는 것처럼 화면이 바뀌어 있는 것을 확인 할 수 있습니다. 다른 항목도 같습니다. 뷰에 대한 설정은 다른 속성은 변경할 것이 없고 배경색만 회색으로 설정합니다. 뷰의 각 객체를 다음과 같이 추가합니다.&nbsp;</div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/14/23/a0012723_4ad5debe7a295.png" width="400" height="582" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/14/23/a0012723_4ad5debe7a295.png');" /></div>노란색의 번호는 각 객체를 구별하기 위헤 추가했습니다. 실제 화면과는 관계가 없습니다.&nbsp;</div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/14/23/a0012723_4ad5dee844c66.png" width="500" height="246.478873239" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/14/23/a0012723_4ad5dee844c66.png');" /></div><span class="Apple-style-span" style="font-family: dotum, 돋움, verdana, AppleGothic, helvetica, sans-serif; line-height: 19px; color: rgb(102, 102, 102); "><table align="center" width="500" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td width="100">Objects</td><td width="400">속성</td></tr><tr><td>1.<br />
UILabel</td><td>Text : MonoTouch 31 예제<br />
Layout: Alignment = center<br />
Size : x=20, y=20, width=280, height=29</td></tr><tr><td>2.<br />
UILabel</td><td>Text :&nbsp;예제 5: Count Me In<br />
Layout: Alignment = center<br />
Size : x=20, y=57, width=280, height=29</td></tr><tr><td>3.<br />
UITextView</td><td>Text : (화면에 보이는 것처럼 넣어 주세요)<br />
Size : x=20, y=850, width=280, height=311</td></tr></tbody></table></span><br />
<div>완료한 내용을 저장하고 Interface Builder를 종료합니다. &nbsp;이번 화면 설계에서는 Outlet이나 Action을 추가하지 않았기 때문에 FlipsideViewController.xib.designer.cs파일을 편집기로 보면 "view" 이외에 추가된 내용이 없습니다.&nbsp;</div><div><br />
</div><div>8. infoButton을 터치했을 때 앞에서 설계한 뷰로 전환 되도록 코드를 추가합니다. infoButton의 이벤트를 처리하는 RootViewController.xib.cs파일을 편집기로 불러 들입니다. &nbsp;FlipsideViewController를 생성하는 함수와 이벤트 처리 Action의 내용을 다음 소스를 참고하여 추가 합니다.&nbsp;</div><div>함수 loadFlipsideViewController()를 작성합니다. 이 함수의 역할은 FlipsideViewController객체 생성과 네비게이션바 생성입니다.&nbsp;<br />
<pre style="background-color:#e0e0ff"><code>		<span class="Apple-style-span" style="text-decoration: underline;">public void loadFlipsideViewController() </span><br />
		{<br />
			flipsideViewController = new FlipsideViewController();<br />
			<br />
			flipsideViewController.View.Frame = new RectangleF(0.0f, 44.0f, // 뷰의 Y좌표를 네비게이션바의 위치를 고려하여 지정합니다.<br />
			                                                   flipsideViewController.View.Frame.Width,<br />
			                                                   flipsideViewController.View.Frame.Height);<br />
			navigationBar = new UINavigationBar(new RectangleF(0.0f, 0.0f, 320.0f, 44.0f));<br />
			navigationBar.BarStyle = UIBarStyle.Black;<br />
			<br />
			UIBarButtonItem buttonItem = new UIBarButtonItem(UIBarButtonSystemItem.Done, <font class="Apple-style-span" color="#FF6666"><b>delegate {<br />
				toggleView(null);<br />
			}</b></font> );<br />
			UINavigationItem navigationItem = new UINavigationItem("CountMeIn");<br />
			navigationItem.RightBarButtonItem = buttonItem;<br />
			<br />
			navigationBar.PushNavigationItem(navigationItem, false);<br />
			<br />
		}</code></pre></div>다음은 이벤트 Action함수 toogleView()를 작성합니다. &nbsp;함수의 역할은 infoButton을 터치했을 때 MainViewController와 FlipsideViewController사이의 화면(뷰) 전환 애니메이션등을 처리를 합니다.&nbsp;<pre style="background-color:#e0e0ff"><code>		<span class="Apple-style-span" style="text-decoration: underline;">partial void toggleView (UIButton sender)</span><br />
		{<br />
			Console.WriteLine("toggleView");<br />
			if(flipsideViewController == null) <span class="Apple-style-span" style="text-decoration: underline;">loadFlipsideViewController()</span>;<br />
			<br />
			UIView mainView = mainViewController.View;<br />
			UIView flipsideView = flipsideViewController.View;<br />
			<br />
			UIView.BeginAnimations(null); // 뷰 애니메이션 준비<br />
			UIView.SetAnimationDuration(1.0); // 애니메이션 전환 간격을 1.0초로 지정 <br />
			UIViewAnimationTransition transition = (mainView.Superview != null)?UIViewAnimationTransition.FlipFromRight : UIViewAnimationTransition.FlipFromLeft;<br />
			UIView.SetAnimationTransition(transition, this.View, true); // 뷰 전환 방향과 현재 뷰에 대해서 실행 함을 지정<br />
			<br />
			if(mainView.Superview != null)<br />
			{ <b>// <span class="Apple-style-span" style="background-color: rgb(0, 0, 0);"><font class="Apple-style-span" color="#FFFFFF">1. MainViewController → FlipsideViewController</font></span></b><br />
				flipsideViewController.ViewWillAppear(true);<br />
				mainViewController.ViewWillDisappear(true);<br />
				<br />
				mainView.RemoveFromSuperview();<br />
				infoButton.RemoveFromSuperview();<br />
				<br />
				this.View.AddSubview(flipsideView);<br />
				this.View.InsertSubviewAbove(navigationBar, flipsideView);<br />
				<br />
				mainViewController.ViewDidDisappear(true);<br />
				flipsideViewController.ViewDidAppear(true);<br />
			} else <br />
			{ /<b>/ <span class="Apple-style-span" style="background-color: rgb(0, 0, 0);"><font class="Apple-style-span" color="#FFFFFF">2. FlipsideViewController → MainViewController</font></span></b><br />
				mainViewController.ViewWillAppear(true); // 화면에 나타날 뷰 지정<br />
				flipsideViewController.ViewWillDisappear(true); // 화면에서 사라질 뷰 지정<br />
				<br />
				flipsideView.RemoveFromSuperview(); // 서브뷰로 등록 한 것을 삭제<br />
				navigationBar.RemoveFromSuperview(); // 서브뷰로 등록 한 것을 삭제<br />
				<br />
				this.View.AddSubview(mainView); // 보여질 뷰를 서브뷰로 등록<br />
				this.View.InsertSubviewAbove(infoButton, mainView); // infoButton을 추가한 서브뷰 앞으로 추가<br />
				<br />
				flipsideViewController.ViewDidDisappear(true); // 사라짐을 지정<br />
				mainViewController.ViewDidAppear(true); // 나타남을 지정<br />
			}<br />
			<br />
			UIView.CommitAnimations(); // 애니메이션 실행<br />
		}</code></pre><div>UIView.BeginAnimations()와 UIView.CommitAnimations() 사이의 처리 내용은 자주 사용되는 코드입니다. &nbsp;flipsideViewController가 null인 경우 앞에서 정의한 함수를 호출하여 생성하도록 코드가 추가 되어 있습니다.&nbsp;</div><div>화면 전환의 방향은 UIViewAnimationTransition.FlipFromRight와 UIViewAnimationTransition.FlipFromLeft 값으로 지정합니다. 이외에도 지정 가능한 값이 있으니 테스트 해 보시기 바랍니다.&nbsp;</div><div><br />
</div><div>저장하고 컴파일 한 후 아이폰 시뮬레이터로 확인 해 봅니다.&nbsp;</div><div><br />
</div><div>9. 마지막으로 (+)와 (-)버튼의 이벤트 함수에 숫자를 카운트하는 코드를 추가합니다.&nbsp;</div><div>MainViewController.xib.cs 파일을 편집기로 블러 들입니다. 카운트 값을 보존하기 위해 정수형 멤버 변수 "count"를 추가합니다.&nbsp;<pre style="background-color:#e0e0ff"><code>	public partial class MainViewController : UIViewController<br />
	{<br />
		int count;<br />
		#region Constructors<br />
...<br />
		void Initialize ()<br />
		{<br />
			count = 0; // count변수 초기화<br />
		}<br />
...<br />
</code></pre></div><div><br />
</div><div>(+)버튼의 이벤트 Action함수 addUnit()를 추가하고 count변수의 값을 증가시키는 다음 코드를 작성합니다.&nbsp;<pre style="background-color:#e0e0ff"><code>		partial void addUnit (UIButton sender)<br />
		{<br />
			if(count &gt;= 999) return ;<br />
			<br />
			counter.Text = String.Format("{0}", ++count);<br />
		}</code></pre></div><div><br />
</div><div>(-)버튼의 이벤트 Action함수 subtractUnit()를 추가하고 count변수의 값을 감소시키는 다음 코드를 작성합니다.&nbsp;<pre style="background-color:#e0e0ff"><code>		partial void subtractUnit (UIButton sender)<br />
		{<br />
			if(count == 0) return ;<br />
			<br />
			counter.Text = String.Format("{0}", --count);<br />
		}</code></pre></div><div>저장 후 컴파일하여 실행시켜 각 이벤트가 정확히 동작하는지 확인 해 봅니다.&nbsp;</div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/15/23/a0012723_4ad5e9eba7fa5.png" width="414" height="770" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/15/23/a0012723_4ad5e9eba7fa5.png');" /></div><div>이번 예제도 앞의 예제들과 같이 간단한 화면 설계와 이벤트 처리에 대한 연습으로 크게 어렵지는 않습니다.&nbsp;</div><div><br />
</div><div>AppsAmuck의 6번째 예제 "Reaction Time"은 &nbsp;타이머와 UIAlertView, random함수의 사용에 대해서 알아보는 예제입니다. &nbsp;기대해 주세요.</div><div><br />
</div><br/><br/>tag : <a href="/tag/아이폰" rel="tag">아이폰</a>,&nbsp;<a href="/tag/iPhone" rel="tag">iPhone</a>,&nbsp;<a href="/tag/MonoTouch" rel="tag">MonoTouch</a>,&nbsp;<a href="/tag/MonoDevelop" rel="tag">MonoDevelop</a>,&nbsp;<a href="/tag/CountMeIn" rel="tag">CountMeIn</a>,&nbsp;<a href="/tag/타이머" rel="tag">타이머</a>,&nbsp;<a href="/tag/UIAlertView" rel="tag">UIAlertView</a>,&nbsp;<a href="/tag/랜덤함수" rel="tag">랜덤함수</a>			 ]]> 
		</description>
		<category>iPhone</category>
		<category>아이폰</category>
		<category>iPhone</category>
		<category>MonoTouch</category>
		<category>MonoDevelop</category>
		<category>CountMeIn</category>
		<category>타이머</category>
		<category>UIAlertView</category>
		<category>랜덤함수</category>

		<comments>http://neojjang.egloos.com/1958663#comments</comments>
		<pubDate>Wed, 14 Oct 2009 15:13:23 GMT</pubDate>
		<dc:creator>연서아빠</dc:creator>
	</item>
	<item>
		<title><![CDATA[ [트위터] 트위터의 트래픽이 1년간 1170% 증가~~ ]]> </title>
		<link>http://neojjang.egloos.com/1958435</link>
		<guid>http://neojjang.egloos.com/1958435</guid>
		<description>
			<![CDATA[ 
  <a target="_blank" href="http://twitter.com">트위터</a>의 성장에 대한 기사입니다.<br />
<br />
원문 : <a target="_blank" href="http://www.itmedia.co.jp/enterprise/articles/0910/14/news011.html">Twitterのトラフィック、1年で1170％増加</a><br />
<br />
미국 Hitwise사가 발표한 자료에 의하면 트위터가 1년간 1170%에 달하는 트래픽 증가가 있었다고 합니다. SNS의 시장 점유율 면에서는&nbsp; 4위라는데 1.84%밖에 안되네요. 증가한 트래픽에 비해 점유율은 한참 바닥입니다.<br />
<br />
트위터와 Facebook은 성장하는데 MySpace는 트래픽이 감소했다고 하는데 기사에 있는 표를 옮겨봤습니다. (저작권 문제가 있을 수도 -.-)<br />
<br />
<table id="tbl"><caption>미SNS상위 5개 회사의 트래픽 점유율</caption><thead><tr><th id="null">순위</th><th id="null">서비스명</th><th id="null">2009年9月の점유율</th><th id="null">2008年9月の점유율</th><th id="null">증감</th></tr></thead><tbody><tr><th id="null">1</th><td id="null">Facebook</td><td id="null">58.59％</td><td id="null">19.94％</td><td id="null">194％</td></tr><tr><th id="null">2</th><td id="null">MySpace</td><td id="null">30.26％</td><td id="null">66.84％</td><td id="null">-55％</td></tr><tr><th id="null">3</th><td id="null">Tagged</td><td id="null">2.38％</td><td id="null">1.62％</td><td id="null">47％</td></tr><tr><th id="null">4</th><td id="null">Twitter</td><td id="null">1.84％</td><td id="null">0.15％</td><td id="null">1170％</td></tr><tr><th id="null">5</th><td id="null">myYearbook</td><td id="null">1.05％</td><td id="null">1.76％</td><td id="null">-40％</td></tr></tbody><tfoot><tr><td colspan="5">（자료：Hitwise）</td></tr></tfoot></table><br />
트위터를 Facebook과 MySpace와 함께 비교를 하고는 조사가 흥미롭습니다. 좀 성격이 다르지 않나 싶은데, SNS로 묶어서 조사를 했네요.<br />
<br />
어쨌든 시장 점유율 면에서는 미미하지만 성장면에서는 압도적입니다. <br />
<br />
네이버의 미투데이도 그런가요?<br />
<br/><br/>tag : <a href="/tag/트위터" rel="tag">트위터</a>,&nbsp;<a href="/tag/Twitter" rel="tag">Twitter</a>,&nbsp;<a href="/tag/Facebook" rel="tag">Facebook</a>,&nbsp;<a href="/tag/MySpace" rel="tag">MySpace</a>,&nbsp;<a href="/tag/1170" rel="tag">1170</a>,&nbsp;<a href="/tag/SNS" rel="tag">SNS</a>,&nbsp;<a href="/tag/성장률" rel="tag">성장률</a>,&nbsp;<a href="/tag/시장점유율" rel="tag">시장점유율</a>			 ]]> 
		</description>
		<category>자료</category>
		<category>트위터</category>
		<category>Twitter</category>
		<category>Facebook</category>
		<category>MySpace</category>
		<category>1170</category>
		<category>SNS</category>
		<category>성장률</category>
		<category>시장점유율</category>

		<comments>http://neojjang.egloos.com/1958435#comments</comments>
		<pubDate>Wed, 14 Oct 2009 02:23:48 GMT</pubDate>
		<dc:creator>연서아빠</dc:creator>
	</item>
	<item>
		<title><![CDATA[ [iPhone][MonoTouch] 다섯번째 샘플 : Count Me In (1) ]]> </title>
		<link>http://neojjang.egloos.com/1957431</link>
		<guid>http://neojjang.egloos.com/1957431</guid>
		<description>
			<![CDATA[ 
  <img class="image_right" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb0aeaec6b3.png" width="124" height="166" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb0aeaec6b3.png');" align="right" />이번 예제는 UIButton, UILabel 그리고 UIImageView의 간단한 사용 방법에 대해서 배울 수 있습니다. 이전 예제와 크게 다른 것이 없죠.<br />
<br />
Appsamuck 샘플 : <a target="_blank" href="http://www.appsamuck.com/day5.html">CountMeIn</a><br />
<br />
예제에 대해서 설명을 하면, (+)버튼을 클릭하면 상단의 숫자가 1씩 999까지 증가하고, (-)버튼을 클릭하면 반대로 1씩 0까지 감소합니다. 이전 예에서도 있던 (i)버튼을 클릭하면 화면을 전환하여 다른 뷰를 보여줍니다.<br />
<br />
화면의 UI구성은 Interface Builder에서 모두 이루어지므로 코드의 부담은 없습니다. 다만 MonoTouch의 버그인지 모르겠지만, 뷰의 크기가 제대로 반영되지 않는 것 같습니다. 해결하기 위해 원 예제에는 없는 위치 조정 코드를 추가 했습니다. <br />
<br />
<div><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/07/23/a0012723_4acbb32cf2233.png" width="57" height="57" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/07/23/a0012723_4acbb32cf2233.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/07/23/a0012723_4acbb33ebb3a9.png" width="64" height="96" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/07/23/a0012723_4acbb33ebb3a9.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/07/23/a0012723_4acbb34aa1192.png" width="100" height="100" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/07/23/a0012723_4acbb34aa1192.png');" align="left" /><img class="image_left" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/07/23/a0012723_4acbb35643194.png" width="100" height="100" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/07/23/a0012723_4acbb35643194.png');" align="left" /></div><div>&nbsp;어플리케이션에 필요한 이미지들입니다. &nbsp;왼쪽부터 icon.png , backgroundPattern.png, iconGreenAdd.png, iconRedSubtract.png 이름으로 &nbsp;다운 받아 둡니다.</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div><br />
</div><div>1. &nbsp;MonoDevelop을 실행합니다.&nbsp;"CountMeIn"이름으로 새 솔루션을 생성합니다.</div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/06/23/a0012723_4acb4544eeecd.png" width="500" height="382.642998028" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/06/23/a0012723_4acb4544eeecd.png');" /></div><div>2. 솔루션에 뷰 컨트롤러를 관리하기 위한 디렉토리를 생성합니다.&nbsp;</div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/06/23/a0012723_4acb473d900ae.png" width="396" height="209" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/06/23/a0012723_4acb473d900ae.png');" /></div>메뉴를 선택하고 "ViewController"이름으로 디렉토리를 생성합니다.<br />
<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/06/23/a0012723_4acb474d78ca9.png" width="317" height="171" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/06/23/a0012723_4acb474d78ca9.png');" /></div>3. ViewController 디렉토리에 새파일을 추가 합니다.&nbsp;<div>iPhone그룹에서 "View Interface Definition with Controller" 타입을 선택합니다. "RootViewController" 이름을 지정하고 생성합니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb48445e831.png" width="500" height="348.399246704" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb48445e831.png');" /></div>다음 그림과 같이 3개의 파일이 생성됩니다.</div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb49525c8b0.png" width="325" height="233" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb49525c8b0.png');" /></div><br />
<div>같은 방법으로 "MainViewController"와 "FlipsideViewController" 이름으로 뷰 컨트롤러를 추가합니다. 추가 된 최종 화면은 다음과 같습니다.</div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb4a7526984.png" width="345" height="315" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb4a7526984.png');" /></div>MonoDevelop 개발툴의 화면 처리가 아직은 불안정 합니다. 파일을 추가 한 결과가 보는 것과 다르게 나오는 경우가 있는데, 그런 경우는 솔루션을 종료 했다가 다시 읽어 들이면 정상적으로 표시 됩니다.<div><br />
</div><div>4. Interface Builder를 실행하여 MainWindow.xib를 열고 서브 뷰로서 RootViewController를 연결합니다.&nbsp;</div><div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/06/23/a0012723_4acb4e33446ba.png" width="500" height="261.413843888" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/06/23/a0012723_4acb4e33446ba.png');" /></div>Library에서 UIViewController를 Drag&amp;Drop으로 추가 합니다. Type은 "RootViewController"로 변경합니다. 컨트롤러에 뷰를 추가하고 버튼을 배치합니다. 버튼의 Type은 "Info Light"로 선택합니다. &nbsp;최종 화면은 다음과 같습니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb4ebdd51ab.png" width="238" height="360" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb4ebdd51ab.png');" /></div>버튼을 이용하기 위해 Outlet(infoButton)과 Action(toggleView)을 설정합니다. RootViewController의 Identity 윈도우와 같이 설정합니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/06/23/a0012723_4acb500e8402c.png" width="191" height="350" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/06/23/a0012723_4acb500e8402c.png');" /></div>설정된 각 Outlet과 Action을 버튼과 버튼의 이벤트에 연결시키면 다음과 같습니다.<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds17.egloos.com/pds/200910/06/23/a0012723_4acb50aa33c33.png" width="345" height="185" onclick="Control.Modal.openDialog(this, event, 'http://pds17.egloos.com/pds/200910/06/23/a0012723_4acb50aa33c33.png');" /></div>RootViewController를 Main에서 접근하기 위해 AppDelegate에 Outlet(rootViewController)를 설정하고 연결 합니다.&nbsp;<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb516c02e7c.png" width="454" height="279" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/06/23/a0012723_4acb516c02e7c.png');" /></div>진행된 내용을 저장하고 Interface Builder를 닫습니다. MainWindow.xib.designer.cs파일을 편집기로 열고 Outlet과 Action의 설정을 확인 할 수 있습니다.&nbsp;</div><div><br />
</div><div>이제 RootViewController를 Window의 서브뷰로 등록하기 위해 Main.cs를 편집기로 읽어 들입니다.&nbsp;<pre style="background-color: rgb(224, 224, 255);"><code>	// The name AppDelegate is referenced in the MainWindow.xib file.<br />
	public partial class AppDelegate : UIApplicationDelegate<br />
	{<br />
		// This method is invoked when the application has loaded its UI and its ready to run<br />
		public override bool FinishedLaunching (UIApplication app, NSDictionary options)<br />
		{<br />
			// If you have defined a view, add it here:<br />
			// window.AddSubview (navigationController.View);<br />
			<span class="Apple-style-span" style="text-decoration: underline;">window.AddSubview(rootViewController.View);</span><br />
			<br />
			window.MakeKeyAndVisible ();<br />
			<br />
			return true;<br />
		}<br />
<br />
		// This method is required in iPhoneOS 3.0<br />
		public override void OnActivated (UIApplication application)<br />
		{<br />
		}<br />
	}</code></pre>window.AddSubview()함수를 호출하여 RootViewController.View를 추가합니다.&nbsp;</div><div><br />
</div><div>5. MainViewController.xib를 Interface Builder에서 열고 화면 설계를 합니다. &nbsp;먼저 다운 받아 두었던 이미지들을 솔루션에 추가합니다. 화면에서 보는 것과 같이 이미지의 빌드 옵션을 "Content"로 설정합니다.&nbsp;<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/07/23/a0012723_4acbb646c63ab.png" width="383" height="215" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/07/23/a0012723_4acbb646c63ab.png');" /></div>처음 추가 했을 때의 빌드는 "Nothing"으로 되어 있습니다. 말그대로 아무것도 하지 않기 때문에 빌드 시에 어플리케이션 폴더로 복사되지 않습니다. 반드시 설정을 변경해 주도록 합니다. &nbsp;개발 환경(MonoDevelop)에서 자동으로 처리해 주지 않기 때문에 프로그램에 영향을 주는 리소스는 주의해야 합니다.&nbsp;</div><div><br />
</div><div><div>MainViewController.xib에 다음과 같이 화면 설계를 합니다. &nbsp;</div><div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds15.egloos.com/pds/200910/11/23/a0012723_4ad14666563c9.png" width="500" height="261.413843888" onclick="Control.Modal.openDialog(this, event, 'http://pds15.egloos.com/pds/200910/11/23/a0012723_4ad14666563c9.png');" /></div><table align="center" width="400" border="1" cellspacing="0" cellpadding="0"><tbody><tr>    <td width="100">Objects</td><td width="300">속성</td></tr><tr>    <td>UIImageView</td><td>Image : backgroundPattern.png<br />
Size : x=0, y=0, width=320, height=460</td></tr><tr>    <td>UITextField</td><td>type : Bezel Style<br />
Size : x=20, y=20, width=280, height=118</td></tr><tr>    <td>UILabel</td><td>Text : 9999<br />
Size : x=30, y=30, width=261, height=100</td></tr><tr>    <td>UIButton</td><td>Type : Custom Buttom<br />
Image : iconGreenAdd.png<br />
Size : x=20, y=288, width=100, height=100</td></tr><tr>    <td>UIButton</td><td>Type : Custom Buttom<br />
Image : iconRedSubtract.png<br />
Size : x=200, y=288, width=100, height=100</td></tr></tbody></table></div><div><br />
</div>Interface Builder와 MonoDevelop사이의 리소스 공유가 지원이 안되기 때문에 화면 설계시 이미지는 표시가 되지 않습니다. 이미지 확인이 안되는 어려움이 있지만, 실행에는 이상이 없습니다. 다음은 Outlet과 Action의 추가입니다.&nbsp;<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/11/23/a0012723_4ad14a15667ae.png" width="301" height="585" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/11/23/a0012723_4ad14a15667ae.png');" /></div>MainViewController.xib의 File's Owner에 화면처럼 Outlet과 Action을 추가합니다. &nbsp;<div style="text-align:center"><img class="image_mid" border="0" onmouseover="this.style.cursor='pointer'" alt="" src="http://pds16.egloos.com/pds/200910/11/23/a0012723_4ad14a690ecbd.png" width="345" height="229" onclick="Control.Modal.openDialog(this, event, 'http://pds16.egloos.com/pds/200910/11/23/a0012723_4ad14a690ecbd.png');" /></div>객체에 각각 연결을 해 줍니다. &nbsp;counter는 UILable, addUnit과 subtractUnits는 UIButton의 "Touch Up Inside"에 연결합니다. 결과를 저장합니다.&nbsp;<div><br />
</div><div>6. MainViewController의 화면 표시와 각 이벤트에 대한 코드를 추가합니다.&nbsp;</div><div>RootViewController.xib.cs파일을 편집기로 읽어 들입니다. 클래스 RootViewController의 멤버로서 MainViewController를 지정합니다.<pre style="background-color:#e0e0ff"><code>	public partial class RootViewController : UIViewController<br />
	{<br />
		<span class="Apple-style-span" style="text-decoration: underline;">MainViewController mainViewController;</span><br />
...</code></pre></div><div>ViewDidLoad() 함수를 override하여 생성합니다. 함수에 MainViewController를 생성하고 서브 뷰로서 추가해 줍니다.&nbsp;<pre style="background-color:#e0e0ff"><code>		public override void ViewDidLoad ()<br />
		{<br />
			base.ViewDidLoad ();<br />
			<br />
			<span class="Apple-style-span" style="text-decoration: underline;">mainViewController = new MainViewController();</span><br />
			<br />
			<span class="Apple-style-span" style="text-decoration: underline;">this.View.InsertSubviewBelow(mainViewController.View, infoButton);</span><br />
		}</code></pre></div><div><div>여기까지 작업으로 메인 뷰를 화면에 표시하는 것까지 완료 했습니다. &nbsp;다음엔 FlipsideViewController의 간단한 화면 설계와 실제 숫자를 카운트하는 동작을 추가해 보겠습니다.</div><div><br />
</div><div>---</div><div>MonoTouch와 MonoDevelop의 업데이트가 있었습니다. 해당 <a href="http://monotouch.net" target="_blank">홈페이지</a>를 참고하세요.</div></div><br/><br/>tag : <a href="/tag/아이폰" rel="tag">아이폰</a>,&nbsp;<a href="/tag/iPhone" rel="tag">iPhone</a>,&nbsp;<a href="/tag/MonoTouch" rel="tag">MonoTouch</a>,&nbsp;<a href="/tag/CountMeIn" rel="tag">CountMeIn</a>,&nbsp;<a href="/tag/MonoDevelop" rel="tag">MonoDevelop</a>			 ]]> 
		</description>
		<category>iPhone</category>
		<category>아이폰</category>
		<category>iPhone</category>
		<category>MonoTouch</category>
		<category>CountMeIn</category>
		<category>MonoDevelop</category>

		<comments>http://neojjang.egloos.com/1957431#comments</comments>
		<pubDate>Sun, 11 Oct 2009 03:24:10 GMT</pubDate>
		<dc:creator>연서아빠</dc:creator>
	</item>
</channel>
</rss>
