<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Mimul&#039;s Developer World - Mobile category</title>
  <link>http://www.mimul.com:80/pebble/default/categories/Mobile/</link>
  <description>미물의 개발 세상</description>
  <language>ko</language>
  <copyright>미물</copyright>
  <lastBuildDate>Mon, 08 Mar 2010 11:41:00 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  <image>
    <url>http://www.mimul.com/pebble/default/images/hhj.jpg</url>
    <title>Mimul&#039;s Developer World (Mobile category)</title>
    <link>http://www.mimul.com:80/pebble/default/</link>
  </image>
  
  
  <item>
    <title>Iphone Ringtone(벨소리) 무료 사용 방법</title>
    <link>http://www.mimul.com:80/pebble/default/2010/02/12/1265962200000.html</link>
    
      
        <description>
          &lt;p&gt;Iphone을 사면서 어플에만 신경쓰다보면 관심을 놓게되는 부분아 Ringtone(벨소리) 관련 contents죠. 근데 인기도 측면에서는 어플 못지않게 인기있는게 사실입니다.&lt;br /&gt;
그래서 무료로 벨소리를 다운 받을 수 있는 곳이 있어 소개해 드립니다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;http://mimul.com/pebble/default/images/blog/web/Audiko.PNG&#034;&gt;&lt;img border=&#034;0&#034; alt=&#034;Audiko&#034; width=&#034;590&#034; height=&#034;206&#034; src=&#034;http://mimul.com/pebble/default/images/blog/web/Audiko.PNG&#034; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;http://Audiko.net&#034;&gt;Audiko.net&lt;/a&gt;&amp;nbsp; 이라는 곳인데 한번 들러보세요. 직접 mp3파일을 올려서 벨소리를 만들 수 있고(인기있는 구간을 선정할 수도 있음), 기존에 만들어놓은 벨소리를 다운받을 수 있습니다. 물론 인기있는 순으로도 알 수 있고, 검색해서 벨소리를 받을 수도 있습니다.&lt;br /&gt;
&lt;br /&gt;
소녀시대, 백뱅, 2PM, 2AM 들의 곡도 있네요 ^^&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>Mac</category>
    
    <category>Mobile</category>
    
    <comments>http://www.mimul.com:80/pebble/default/2010/02/12/1265962200000.html#comments</comments>
    <guid isPermaLink="true">http://www.mimul.com:80/pebble/default/2010/02/12/1265962200000.html</guid>
    <pubDate>Fri, 12 Feb 2010 08:10:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Android 어플 개발 기초 3 - User Interface 종합</title>
    <link>http://www.mimul.com:80/pebble/default/2009/12/20/1261291380000.html</link>
    
      
        <description>
          &lt;div style=&#034;float: left; padding-right: 5px;&#034;&gt; &lt;script type=&#034;text/javascript&#034;&gt;
tweetmeme_url = &#039;http://mimul.com/pebble/default/2009/12/20/1261291380000.html&#039;;
tweetmeme_source = &#039;mimul&#039;;
&lt;/script&gt; &lt;script type=&#034;text/javascript&#034; src=&#034;http://tweetmeme.com/i/scripts/button.js&#034;&gt;&lt;/script&gt; &lt;/div&gt;
&lt;strong&gt;1. 위젯(Widgets)&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- 버튼, 체크박스, 텍스트 입력 필드,&amp;nbsp;날짜 선택기, 시계, 줌 컨트롤과 같이 사용자와 인터렉션하는 뷰 객체를 위젯(Widget)이라고 함&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;2. UI 이벤트(UI Events)&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- 이벤트 리스너를 정의하고 뷰에 등록&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 뷰 클래스의 On&amp;lt;something&amp;gt;Listener를 인터페이스를 가지고 이 인터페이스 내부에 On&amp;lt;something&amp;gt;()와 같은 콜백 메소드를 내포하고 있음&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 뷰에 등록하는 방법은 set&amp;lt;listener&amp;gt;()를 사용함&lt;br /&gt;
&amp;nbsp;- 뷰의 콜백메소드를 재정의&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;3. 메뉴(Menus)&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- 메뉴의 종류&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Option menu : Activity에서 사용하는 메뉴 아이템의 기본적인 셋(메뉴키를 누르면 호출됨)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Context menu : View에서 버튼을 길게 누를 때 나타나는 메뉴 아이템의 목록&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Submenu : Option menu나 Context menu의 아이템을 선택했을 때 나타날 수 있는 메뉴 아이템의 목록&lt;br /&gt;
&amp;nbsp;- 메뉴의 구성 : Activity 클래스의 onCreateOptionsMenu() 메소드(정적인 메뉴 구성)나 onPrepareOptionsMenu() 메소드(동적인 메뉴 구성), onCreateContextMenu()를 오버라이드하여 메뉴를 구성&lt;br /&gt;
&amp;nbsp;- 메뉴들은 자신의 이벤트를 다룰 수 있기 때문에 이벤트 리스너를 등록할 필요 없음&lt;br /&gt;
&amp;nbsp;- 메뉴에서 한 항목이 선택되면 프레임워크에 의해 onOptionsItemSelected()나 onContextItemSelected() 메소드가 호출됨&lt;br /&gt;
&amp;nbsp;- 메뉴 아이템은 xml&amp;nbsp;파일로 선언할 수 있음&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;4. 다이얼로그&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- onCreateDialog() 콜백 메소드를 재정의해서 만들어야 함(처음호출)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ⁃&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;onPrepareDialog():매번 다이얼로그 호출될 때 안드로이드가 호출됨&lt;br /&gt;
&amp;nbsp;- AlertDialog : 버튼, 아이템 리스트 등으로 구성된 다이얼로그&lt;br /&gt;
&amp;nbsp;- ProgressDialog : Wheel이나 Progress bar를 통하여 Progress의 진행률을 보여주는 다이얼로그&lt;br /&gt;
&amp;nbsp;- DatePickerDialog : 날짜 선택에 사용할 수 있는 다이얼로그&lt;br /&gt;
&amp;nbsp;- TimePickerDialog : 시간 선택에 사용할 수 있는 다이얼로그&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;5. 어댑터(Adapters)&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- 데이터 소스와 이것을 디스플레이하는 어댑터 뷰 사이를 연결하는 매개체 역할을 함&lt;br /&gt;
&amp;nbsp;- 어댑터 뷰는 어댑터뷰의 자식 뷰들은 어댑터(Adapter)로 부터 얻은 데이터를 가지고 뷰 그룹에 데이터를 제공함&lt;br /&gt;
&amp;nbsp;- 커서어댑터(CursorAdapter)는 커서로 부터 데이터베이스 데이터를 읽어들임&lt;br /&gt;
&amp;nbsp;- 배열어댑터(ArrayAdapter)는 배열로 부터 데이터를 읽어들임&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;6. 스타일과 테마(Styles and Themes)&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- 스타일은 레이아웃 내에 있는 개별 요소들에만 적용될 수 있음&lt;br /&gt;
&amp;nbsp;- 테마는 전체 애플리케이션 또는&amp;nbsp;특정 액티비티들에 적용할 수 있음&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;[참고 사이트]&lt;/strong&gt;&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&#034;http://developer.android.com/guide/topics/ui/index.html&#034;&gt;http://developer.android.com/guide/topics/ui/index.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;strong&gt;[관련 포스트]&lt;/strong&gt;&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&#034;http://mimul.com/pebble/default/2009/12/06/1260100620000.html&#034;&gt;Android 어플 개발 기초 1 - MAC OSX에서 Android 개발 환경 설정&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#034;http://mimul.com/pebble/default/2009/12/09/1260349680000.html&#034;&gt;Android 어플 개발 기초 2 - 개념 이해하기&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
        </description>
      
      
    
    
    
    <category>Mobile</category>
    
    <comments>http://www.mimul.com:80/pebble/default/2009/12/20/1261291380000.html#comments</comments>
    <guid isPermaLink="true">http://www.mimul.com:80/pebble/default/2009/12/20/1261291380000.html</guid>
    <pubDate>Sun, 20 Dec 2009 06:43:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Android 어플 개발 기초 2 - 개념 이해하기</title>
    <link>http://www.mimul.com:80/pebble/default/2009/12/09/1260349680000.html</link>
    
      
        <description>
          &lt;div style=&#034;float: left; padding-right: 5px; padding-top; 5px;&#034;&gt;
&lt;script type=&#034;text/javascript&#034;&gt;
tweetmeme_url = &#039;http://mimul.com/pebble/default/2009/12/09/1260349680000.html&#039;;
tweetmeme_source = &#039;mimul&#039;;
&lt;/script&gt;
&lt;script type=&#034;text/javascript&#034; src=&#034;http://tweetmeme.com/i/scripts/button.js&#034;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;strong&gt;1. Android 어플리케이션 실행 흐름&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- 소스파일(.java)에서 자동 생성된 R.java(어플리케이션에서 사용할 리소스를 관리하는 클래스)에서 리소스를 확인하고, main.xml에서 layout 데이터를 확인하고 문자열 관리 데이터가 있는 strings.xml로 흐른다.&lt;br /&gt;
&amp;nbsp;- AndroidManifest.xml에는 구성요소 정보 저장됨&lt;br /&gt;
&amp;nbsp; . 액티비티에 대해서는 &amp;lt;activity&amp;gt;를, 서비스에 대해서는 &amp;lt;service&amp;gt;를, 브로드캐스트리시버에 대해서는 &amp;lt;receiver&amp;gt;를, 컨텐츠제공자에 대해서는 &amp;lt;provider&amp;gt; XML 요소로 구성됨&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;2. Android 콤포넌트 분석&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- Activity&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 안드로이드 어플리케이션을 구성하는 가장 기본적인 빌딩블록 - 프로그램의 하나의 화면을 구성하는 컴포넌트&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; . 뷰(View)로 구성된 유저 인터페이스를 화면에 표시하고 사용자의 입력(Event)을 처리하는 역할&lt;br /&gt;
&amp;nbsp; . Application 작성 시 Activity를 상속 받아서 구현며 setContetnView() 메서드를 통해 미리 정의해 놓은 layout을 화면에 출력함&lt;br /&gt;
&amp;nbsp;- Layout&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 각각의 뷰들을 화면상에 배치하고 구성해주는 것&lt;br /&gt;
&amp;nbsp; . XML 파일을 이용하여 구성&lt;br /&gt;
&amp;nbsp; . FrameLayoute : 단일 객체를 나타내기 위한 레이아웃, LinearLayout : 수평 또는 수직으로 구성요소를 배치하는 레이아웃, TableLayout : 행과 열을 가진 레이아웃, AbsoluteLayout : 좌표의 절대값으로 뷰를 배치, RelativeLayout : 한 구성요소를 기준으로 왼쪽 오른쪽 등으로 배치&lt;br /&gt;
&amp;nbsp;- View&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 화면상에서 유저 인터페이스를 구성하는 기본 빌딩블록&lt;br /&gt;
&amp;nbsp; . 버튼, 그림, 텍스트, 에디트, 라디오 버튼, 체크박스 등의 기본적인 화면 구성 요소들이 뷰에 포함됨&lt;br /&gt;
&amp;nbsp; . XML파일을 이용하여 추가&lt;br /&gt;
&amp;nbsp; . 다양한 종류의 ready-made 객체들을 불러들여 생성 가능&lt;br /&gt;
&amp;nbsp; . 뷰의 리스너(Listener) 설정을 통해 이벤트가 발생했을 경우를 처리할 수 있음&lt;br /&gt;
&amp;nbsp; . 버튼이 클릭되었을때&amp;nbsp;등록된 OnClickListener가&amp;nbsp;호출되어 처리됨&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;3. Event 기반&amp;nbsp; 흐름 이해하기&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- 키보드 이벤트 처리&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 핸들러 생성 : OnKeyListener 클래스의 객체를 생성, Click 이벤트 발생시 동작 할 onKey 메서드 작성&lt;br /&gt;
&lt;pre&gt;    @Override&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  &lt;br /&gt;    public boolean onKey(View v, int arg1, KeyEvent event) {&lt;br /&gt;       if(event.getAction() == KeyEvent.ACTION_DOWN) {&lt;br /&gt;           Log.v(&amp;quot;hey&amp;quot;,&amp;quot;pressed &amp;quot; + event.getKeyCode());&lt;br /&gt;           return true;&lt;br /&gt;       }&lt;br /&gt;    }&lt;/pre&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . View객체에 리스너 등록&lt;br /&gt;
&lt;pre&gt;    edtContents = ((EditText)findViewById(R.id.edtContents);&lt;br /&gt;    edtContents.setOnKeyListener((myKeyListener);&lt;/pre&gt;
&lt;br /&gt;
&amp;nbsp;- 터치 이벤트 처리&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 핸들러 생성 : OnClickListener 클래스의 객체를 생성, Click 이벤트 발생시 동작 할 onClick 메서드 작성&lt;br /&gt;
&lt;pre&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;onClick(View&amp;nbsp;v)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(v==btnLogin)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Check&amp;nbsp;Login&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;username&amp;nbsp;=&amp;nbsp;etUsername.getText().toString();&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;password&amp;nbsp;=&amp;nbsp;etPassword.getText().toString();&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(username.equals(&amp;quot;guest&amp;quot;)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;password.equals(&amp;quot;guest&amp;quot;)){&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lblResult.setText(&amp;quot;Login&amp;nbsp;successful.&amp;quot;);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lblResult.setText(&amp;quot;Login&amp;nbsp;failed.&amp;quot;);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if(v==btnCancel)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Close&amp;nbsp;the&amp;nbsp;application&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;finish();&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp; &lt;/pre&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . View객체에 리스너 등록&lt;br /&gt;
&lt;pre&gt;   btnLogin = (Button) findViewById(R.id.btnLogin);&lt;br /&gt;   btnCancel = (Button) findViewById(R.id.btnCancel);&lt;br /&gt;   btnLogin.setOnClickListener(myClickListener);&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; btnCancel.setOnClickListener(myClickListener); &lt;/pre&gt;
[관련 포스트]&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&#034;http://mimul.com/pebble/default/2009/12/06/1260100620000.html&#034;&gt;Android 어플 개발 기초 1 - MAC OSX에서 Android 개발 환경 설정&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#034;http://mimul.com/pebble/default/2009/07/17/1247824620000.html&#034;&gt;Android 어플 개발 기초 1 - Hello World 구현&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
        </description>
      
      
    
    
    
    <category>Mobile</category>
    
    <comments>http://www.mimul.com:80/pebble/default/2009/12/09/1260349680000.html#comments</comments>
    <guid isPermaLink="true">http://www.mimul.com:80/pebble/default/2009/12/09/1260349680000.html</guid>
    <pubDate>Wed, 09 Dec 2009 09:08:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Android 어플 개발 기초 1 - MAC OSX에서 Android 개발 환경 설정</title>
    <link>http://www.mimul.com:80/pebble/default/2009/12/06/1260100620000.html</link>
    
      
        <description>
          &lt;div style=&#034;float: left; padding-right: 5px;&#034;&gt; &lt;script type=&#034;text/javascript&#034;&gt;
tweetmeme_url = &#039;http://www.mimul.com/pebble/default/2009/12/06/1260100620000.html&#039;;
tweetmeme_source = &#039;mimul&#039;;
&lt;/script&gt; &lt;script type=&#034;text/javascript&#034; src=&#034;http://tweetmeme.com/i/scripts/button.js&#034;&gt;&lt;/script&gt; &lt;/div&gt;
&lt;strong&gt;1. SDK 다운로드 및 설치&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- 다운로드 사이트 : http://developer.android.com/sdk/index.html&lt;br /&gt;
&amp;nbsp;- 압축을 푼 디렉토리는 원하는 디렉토리로 이동시킨다.(mv android-sdk-mac_86/ /MyApps/workspace)&lt;br /&gt;
&amp;nbsp;- .bash_profile 파일을 편집한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; . export ANDROID_SDK_ROOT=/MyApps/workspace/android-sdk-mac_86&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; . $ANDROID_SDK_ROOT/tools 디렉토리를 PATH추가함(커맨드 실행을 돕기 위해)&lt;br /&gt;
&amp;nbsp;- source ~/.bash_profile(환경 적용)&lt;br /&gt;
&amp;nbsp;- 스노우 레퍼드 경우 64비트 swt를 요구하므로 x86_64 디렉토리가 없다면 만들어주고 이클립스 하부 디렉토리에서 swt.jar파일을 카피해 줌(/MyApps/workspace/android-sdk-mac_86/tools/lib/x86_64/swt.jar)&lt;br /&gt;
&amp;nbsp;- Eclipse 설정 변경(/Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . -Xms128m&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . -Xmx512m&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . -XX:MaxPermSize=256m&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . -D64&lt;br /&gt;
&amp;nbsp; - Eclipse에서 SDK Location 지정&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Eclipse &amp;gt; 환경설정&amp;gt;Android&amp;gt;SDK Locaton : /MyApps/workspace/android-sdk-mac_86&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;2. ADT 설치&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- Help -&amp;gt; Software Update&amp;hellip; -&amp;gt; Available Software &lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Work with : adt - http://dl-ssl.google.com/android/eclipse/&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Developer Tools 체크, 라이센스 동의 후 설치&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
3. 설치 정보 확인 및 업그레이드&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- AVD Manager 실행&lt;br /&gt;
&amp;nbsp; . Window&amp;gt;AVD Manager 실행&lt;br /&gt;
&amp;nbsp; . Available Packages에서 repository 체크후 업데이트 진행&lt;br /&gt;
&amp;nbsp;- 커맨드 모드에서 설치 정보 확인&lt;br /&gt;
&amp;nbsp; . android list targets 실행&lt;br /&gt;
&amp;nbsp; . 결과 내용&lt;br /&gt;
&lt;pre&gt;Available Android targets:&lt;br /&gt;id: 1 or &amp;quot;android-2&amp;quot;&lt;br /&gt;     Name: Android 1.1&lt;br /&gt;     Type: Platform&lt;br /&gt;     API level: 2&lt;br /&gt;     Revision: 1&lt;br /&gt;     Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P&lt;br /&gt;id: 2 or &amp;quot;android-3&amp;quot;&lt;br /&gt;     Name: Android 1.5&lt;br /&gt;     Type: Platform&lt;br /&gt;     API level: 3&lt;br /&gt;     Revision: 1&lt;br /&gt;     Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P&lt;br /&gt;id: 3 or &amp;quot;android-4&amp;quot;&lt;br /&gt;     Name: Android 1.6&lt;br /&gt;     Type: Platform&lt;br /&gt;     API level: 4&lt;br /&gt;     Revision: 1&lt;br /&gt;     Skins: HVGA (default), QVGA, WVGA800, WVGA854&lt;br /&gt;id: 4 or &amp;quot;android-5&amp;quot;&lt;br /&gt;     Name: Android 2.0&lt;br /&gt;     Type: Platform&lt;br /&gt;     API level: 5&lt;br /&gt;     Revision: 1&lt;br /&gt;     Skins: HVGA (default), QVGA, WQVGA400, WQVGA432, WVGA800, WVGA854&lt;br /&gt;id: 5 or &amp;quot;android-6&amp;quot;&lt;br /&gt;     Name: Android 2.0.1&lt;br /&gt;     Type: Platform&lt;br /&gt;     API level: 6&lt;br /&gt;     Revision: 1&lt;br /&gt;     Skins: HVGA (default), QVGA, WQVGA400, WQVGA432, WVGA800, WVGA854&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;strong&gt;4. Android virture devices 생성(아래 두가지 방법중에 하나를 선택해서 사용)&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- 커맨드 사용 법&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . android create avd -n &amp;lt;name&amp;gt; -t &amp;lt;targetID&amp;gt; [-&amp;lt;option&amp;gt; &amp;lt;value&amp;gt;]&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 실제 사용 커맨드 예 : android create avd -n mimul_android2.0 -t 4&lt;br /&gt;
&amp;nbsp;- Window&amp;gt;AVD Manager&amp;gt;Virtual Devices에서 New를 클릭해서&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Name : mimul_android2.0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Target : android 2.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;[관련 포스트]&lt;/strong&gt;&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&#034;http://mimul.com/pebble/default/2009/07/17/1247824620000.html&#034;&gt;[Android 기초] Hello World 구현&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
        </description>
      
      
    
    
    
    <category>Mac</category>
    
    <category>Mobile</category>
    
    <comments>http://www.mimul.com:80/pebble/default/2009/12/06/1260100620000.html#comments</comments>
    <guid isPermaLink="true">http://www.mimul.com:80/pebble/default/2009/12/06/1260100620000.html</guid>
    <pubDate>Sun, 06 Dec 2009 11:57:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Startring iPhone Development 세미나 참석 후기</title>
    <link>http://www.mimul.com:80/pebble/default/2009/09/28/1254066480000.html</link>
    
      
        <description>
          &lt;div style=&#034;float: left; padding-right: 5px; padding-top; 5px;&#034;&gt;
&lt;script type=&#034;text/javascript&#034;&gt;
tweetmeme_url = &#039;http://mimul.com/pebble/default/2009/09/28/1254066480000.html&#039;;
tweetmeme_source = &#039;mimul&#039;;
&lt;/script&gt;
&lt;script type=&#034;text/javascript&#034; src=&#034;http://tweetmeme.com/i/scripts/button.js&#034;&gt;&lt;/script&gt;
&lt;/div&gt;
Iphone 개발을 시작하는 개발자에게 좋은 세미나 기회가 있어 참여를 하게 되었습니다. 비트교육센터에서 개최를 하였고 강사로는 윤성관 링고스타 대표와 박진형 OSXDev.org 공동회장이 초빙되었습니다. Iphone 어플 개발을 시작하는 저로서는 애플의 역사, Iphone의 역사 그리고 Iphone 개발에 필요한 환경 및 내용들을 세미나를 통해 많은 걸 이해했습니다. 아직은 초보지만 시작이 반이라는 생각으로 열심히 해서 어플을 앱스토어에 등록하는 그날까지 열심히 해 볼랍니다.&lt;br /&gt;
&lt;br /&gt;
아래는 제가 참석한 세미나의 내용을 요약해 보았습니다. 아마 제가 잘못 이해한 부분도 있을 수 있음을 알려드립니다.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;1. iPhone Characteristics&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- Apple에 대해&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 애플은 현재 전세계적으로 최대의 음원 유통을 하는 회사&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 애플이 디자인으로 전세계 제품의 눈높이를 올려주었고, SDK를 통해 개발자의 눈높이도 높여줬다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 2%의 점유율을 가진 iphone으로 왜 전세계가 주목하고 있는가? &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 98%가 2%를 지켜보고 있는 상황이 잘 대변해주고 있다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 애플은 산업계의 리더다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 7(개발자):3(애플)의 리워드 모델을 만들었고 이를 전세계 회사가 이를 따르려 하고 있다.&lt;br /&gt;
&amp;nbsp;- Iphone Developer Program&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Provisioning Profile을 얻기위해 여기에 가입하고 여기에서 개발팀을 구성하고 관리/운영에 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 전반적인 기능들을 활용할 수 있다.&lt;br /&gt;
&amp;nbsp;- iTunes Connection&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 마케팅/QA 관련 페이지임, 멤버 그룹은 접근이 제한됨&lt;br /&gt;
&amp;nbsp;- 자주 묻는 FAQ들&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Objetive-C를 꼭 사용해야하나? -&amp;gt; 꼭 사용해야하고, 하이-엔드 레벨을 활용할때 도움이 됨&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 똑 맥PC를 사야하나? -&amp;gt; 해킨토시를 사용해도 가능하나 시행착오며 다양한 난관에 봉착하기에&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; Iphone 개발자면 맥을 사야함, Xcode 3.1, Mac OS 10.5 Leopard, Interface Builder 3.1 잘 활용해야 함&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Iphone 어플을 개발하는데 얼마만큼의 시간이 걸리나? -&amp;gt; 대부분 짧게 걸린다고 말하고 있으나 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 어플에 따라 다르겠지만 디자인, 코딩, 디버깅, 테스팅을 잘 병행해서 완벽한 어플을 개발할려고 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 노력하라 시간은 중요치 않다. 그리고 애플의 키노트를 잘이해하고 있어라&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 얼마나 벌 수 있나? -&amp;gt; 5개 어플을 올리기전까진 돈만지기 힘들다. 그리고 완벽을 기해서 올리는 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 것보다 먼저 한번 올려보는게 좋은 경험이고 올린 어플을 패치하면서 실력은 향상될 것이다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 앱스토어에 상위에 포진하고 있는 어플은 어떤 종류인가? -&amp;gt; 게임 대 비게임이 7:3이다. 게임이 많음&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;2. Mac OS 와 iPhone OS, Cocoa 프레임워크에 대해 &lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- Mac의 OS는 BSD기반으로 굉장히 안정억임&lt;br /&gt;
&amp;nbsp;- 맥 10.6에는 Cocoa, AppKit, Quartz&lt;br /&gt;
&amp;nbsp;- Iphone에는 UIKit&lt;br /&gt;
&amp;nbsp;- Mac과 Iphone OS에 공통으로 CoreLocation, CoreFoundtion, CoreData, POSIX, CoreAudio를 포함&lt;br /&gt;
&amp;nbsp;- Mac OS에는 Cocoa framework가 있는 반면에 Iphone OS에는 Cocoa Touch framework가 존재함&lt;br /&gt;
&amp;nbsp;-&amp;nbsp; 메모리 관리&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Objetive-C 객체 형태러 메모리를 사용함&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 레퍼런스 카운터로 메모리 해제 여부를 판단함&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Iphone OS는 Mac 10.5에서 사용되는 가비지 컬렉션을 지원하지 않는다&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;3. Objetive-C / Xcode 기초 사용법&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- Objetive-C&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . C에 아주 간단한 문범만 추가, Dynamic Object-Oriented 프로그래밍 언어&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 작으면서도 파워풀한 실행, 단일 상속만 허용&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 확장자가 m&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 역사 : C + SmallTalk(1983), NeXT에서 개발(1988), 예외처리 추가(2003), &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Objetive-C 2.0(2007), Objetive-C 2.1(2008)&lt;br /&gt;
&amp;nbsp;- Cocoa&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 맥 마이크로 커널위에, BSD Unix위에, 윈도우 서버라는 이벤트 담당하는 것과 어플리케이션 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 사이에서 이벤트를 처리해줌&lt;br /&gt;
&amp;nbsp; . AppKit, Foundation 패키지 존재&lt;br /&gt;
&amp;nbsp;- Cocoa Touch&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; . 객체 지향 환경, 터치 인터페이스를 위한 프레임워크, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; . UIKit, Foundation 패키지 존재&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . MVC패턴으로 구성됨&lt;br /&gt;
&amp;nbsp;- Xcode&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 코드 편집기&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;4. Graphics on iPhone&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;- Graphics를 맥의 CPU가 아닌 GPU엔진이 담당하기에 맥의 OS는 성능이 많이 향상되었고 &lt;br /&gt;
&amp;nbsp;&amp;nbsp; 그 사상이 Iphone으로 확정되었다&lt;br /&gt;
&amp;nbsp;- Core Animation&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 레이어 기반의 애니메이션 엔진, 2D, 3D, 비디오, OpenGL 통합&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Implicit, Explicit Animation 2가지 방법이 있음 &lt;br /&gt;
&amp;nbsp;&amp;nbsp; . Objective-C 기반의 에니메이션 엔진&lt;br /&gt;
&amp;nbsp;- Quartz&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . C기반&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 벡터 기반의 도로잉 환경 제공&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 경로 기반의 쉐이브, 그래디언트, 패턴, 텍스트, 이미지, PDF를 그릴수 있음&lt;br /&gt;
&amp;nbsp;- Iphone Touch의 제약사항&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 데몬 같은 기능 없음 -&amp;gt; Push 기능으로 보완&lt;br /&gt;
&amp;nbsp;&amp;nbsp; . 한번에 하나의 어플리케이션 만 실행가능함
        </description>
      
      
    
    
    
    <category>Mobile</category>
    
    <comments>http://www.mimul.com:80/pebble/default/2009/09/28/1254066480000.html#comments</comments>
    <guid isPermaLink="true">http://www.mimul.com:80/pebble/default/2009/09/28/1254066480000.html</guid>
    <pubDate>Sun, 27 Sep 2009 15:48:00 GMT</pubDate>
  </item>
  
  </channel>
</rss>
