Android 어플에서 View 구조를 살펴보자.

Views의 구조를 분석하자. 안드로이드 어플은 여러 계층으로 이루어진 View들의 집합으로 UI를 표현한다. XML 파일과 코드를 살펴보면서 실시간으로 변하는 View 구조를 살펴보는 작업은 어렵다. Google에서제공하는 Hierarchy Viewer를 사용하면 쉽게 분석할 수 있다. 아래 그림은 사용자가 보는 UI와 Hierarchy Viewer가 보는 관점을 나타낸다.

Android Hierarchy Viewer Screenshot

Android Hierarchy Viewer Screenshot

Android Contacts Screenshot

Android Contacts Screenshot

Creative Commons License

Posted in Android | Tagged | Leave a comment

Java 소스를 UML Diagram으로 변경해서 보자.

자바 코드를 그대로 보기에는 분석할 시간이 부족하다: 자바의 새로운 소스를 분석할 때  회사에서 사용하는 EclipseOutline View는 여러 파일을 동시에 보여주지 못한다. Doxygen은 여러 파일과의 관계를 보여주지만 소스가 변경되면 매번 다시 생성해야 한다. 더구나 그래픽을 편집할 수 없다. 나는 시간이 부족했다.

ObjectAid Screenshot

ObjectAid Screenshot

자바 소스를 UML 다이어그램으로 분석하자: 새로운 소스를 볼 때는 ObjectAid를 사용한다. 이 프로그램은Eclipse plugin이다. 그래서 설치와 사용이 쉽다. 소스 파일들을 끌어 놓으면 여러 파일들의 관계를 클래스 다이어 그램으로 한번에 보여준다 (Sequence Diagram기능은 유료이다). 변경된 소스를 바로 반영하며 편집도 가능하다. 추가 기능들을 사용하면 안드로이드 혹은 자바 클래스 다이어그램들을 추가할 수 있다. 한번에 보려는 클래스 다이어그램이 너무 많다면 옵션 기능을 사용하여 다이어그램의 보이는 항목을 제한하라. Jar 파일의 *.class 파일도 끌어서 놓을 수 있다.

Creative Commons License

Posted in Android | Tagged , , | Leave a comment

Ruby 첫 인상

“Hello, world!” means “Hello, new language world!.

재미있는 언어를 찾고 있다면 Ruby를 고려해 보기 바란다. Ruby는 Rails를 통하여 널리 알려진 언어이다. Ruby는 간결하고 이해하기 쉬운 코드 구조를 가지고 있다. Ruby 코드를 보고 있으면 비록 영어지만 글을 읽는 느낌이 난다. 다음 코드는 입력인자에서 “-f” 문자열이 들어 있는 항목을 찾아서 그 개수를 알려준다. 글을 읽듯이 오른쪽으로 가면서 기능을 나열한다.

ARGV.grep(/-f/).length

Ruby의 처음 인상은 “너무 짧다” 라는 것이다. 다음은 루비 클래스다.

class A
end

다음은 Ruby method 이며 클래스 없이 바로 사용할 수 있다.

def message
    "Hello, world!"
end

아래 처럼 같이 사용할 수도 있다.

class A
    def message
        "Hello, world!"
    end
end

Ruby의 코드는 이해하기 쉬우며 짧다. 그러나 짧은 코딩을 위해서 알아야 할 것이 많다. 이런 형식의 코드가 마음에 든다면 Ruby 사이트를 방문하라. 루비의 기능은 미처 보지도 않고 짧은 코드의 매력에 푹 빠졌다. 급하신 분들은 루비20분 가이드Rails Tutorial을 살펴보라 Ruby는 for 문을 잘 사용하지 않는다. 그래서 편하다. 코드가 읽기 쉽고 짧아서 Ruby에 관심을 가지기 시작했다. 어떤 OS를 사용하건 Interactive Ruby Shell(IRB)를 설치해서 사용해 봄직하다. IRB는 바로바로 응답해 준다. IRB를 설치했다면 다음 명령어를 한번 테스트 해 보길 바란다.

#linux
ENV['PATH'].split(/:/).each { |path| puts path }

#win32
ENV['PATH'].split(/;/).each { |path| puts path }

KLDP, KLDP에 가봤더니 국내에선 별로 인기가 없다.

Creative Commons License

Posted in Ruby | Leave a comment

에디터와 브라우져

VIM 사용자라면 vifmvimperator 프로그램을 한번 사용해 보시라! vifm 은 VIM 키 바인딩을 지원하는 파일 관리자이고 vimperator은 Firefox를 VIM 키 바인딩으로 사용하도록 지원하는 Firefox 플러그인이다.

Vifm Screenshot

Vifm Screenshot

Vimperator Screenshot

Vimperator Screenshot

이젠 파일 관리자와 브라우져에서도 마우스를 덜 사용하게 되었다. 두 파일 각각 vifmrc와 .vimperatorrc 라는 초기화 파일을 가지고 있다. 어떤가 .vimrc 와 비슷하지 않은가? Firefox 사용중 웹 textarea에서 C-h와 C-w 키가 잘 동작한다. vifm에서 파일 이름에 커서를 위치하고 yy, p 하면 복사가 된다. 물론 vifm도 mark 명령을 지원한다. 우분투에서는 동작에 문제가 없다. XP의 cygwin에서 vifm 설치에 실패하였다. XP에서는 win32 버전을 받아서 사용하고 있다. 도스 창에서 수행하면 동작한다. Thunderbird 프로그 용으로 vim 키 바인딩을 지원하는 Muttator가 존재한다. 아직 설치하지는 못했다.

개발 환경이라는 것이 툴 하나 바꾸어서 갖추어지는 것이 아니었다. 윈도우즈XP와 우분투 10.04를 멀티 부팅 방법을 사용하여 번갈아 쓰고 있다.  (회사에서는 윈도우즈XP와 Cygwin을 사용한다.) 동시에 두 운영체제를 쓰고 싶을 때는 Virtual Box를 사용하기도 한다 주로 우분투에서 XP를 사용할 경우이다. 에디터와 브라우져는 두 운영체제에서 같은 프로그램을 사용하고 있다. 지금 사용하고 있는 VIMFirefox는 정말로 파워툴이다. 두 프로그램은 수 많은 plugin 들을 가지고 지원하기 때문에 편리하다. VIM은 3000여 개의 플러그인을 가지고 있고 Firefox는 플러그인 다운로드 회수만 2억번을 넘었다고 하니 그 확장성을 미루어 짐작할 수 있다. 개발 언어는 Ruby를 사용할 계획이다. 이 또한 두 운영체제에서 모두 지원한다. 점점 운영체제 사이에서 느끼는 간극이 줄어들고 있다.

준비 다 되고 일을 하려면 너무 늦지 않을까?

하고 스스로 자문해 보지만 아무리 생각해도 난 …

Creative Commons License

Posted in vim | Tagged , , , | Leave a comment

안녕하세요 반갑습니다. (좀 상투적이죠)

이전엔 C 프로그램 작성했다. 앞으로는 자바 언어를 사용해서 개발 해야 하는데 책만 사놓고 루비에 불이 붙었다. 훨훨 타고 있다.

Creative Commons License

Posted in Uncategorized | Leave a comment

우분투에서 파티션 크기 조절

XP와 우분투를 동시에 사용하고 있다. XP의 남는 공간을 우분투에서 사용하고 싶다. 그 작업은 아래와 같다.

1. EASEUS Partition Master를 사용하여 XP의 파티션 크기를 줄였다.
2. XP 파티션 크기 조절후에 아래 프롬프트가 나타나고 부팅이 안된다.

GRUB RESCUE>

3. 구글링하여 아래 링크로 해결했다.
“GRUB RESCUE”?? grub 복구하기~~
4. CloneZilla를 사용하여 우분투 파티션을 XP 디렉토리에 백업했다.
5. GParted를 사용하여 우분투 파티션을 늘렸다.

긴장되는 작업이었다. 1번 작업을  GParted를 사용해서 해도 되지만 겁을 먹었었다. GParted는 우분투 라이브 씨디에도 포함되어 있다고 한다. 그러나 나는 ISO를 구워서 사용했다.

Creative Commons License

Posted in Ubuntu | Leave a comment

우분투에서 JDK, Android SDK 복사

JDK 복사 (우분투 10.04, JAVA 1.6)

user@localhost:~$ ls *.bin
jdk-6u21-linux-i586.bin
user@localhost:~$ chmod u+x jdk-6u21-linux-i586.bin
user@localhost:~$ ./jdk-6u21-linux-i586.bin
...
Done.
user@localhost:~$ sudo mkdir /usr/java
[sudo] password for user:
user@localhost:~$ sudo mv jdk1.6.0_21/ /usr/java
user@localhost:~$ gvim ~/.bashrc
....
user@localhost:~$ tail ~/.bashrc
export JAVA_HOME=/usr/java/jdk1.6.0_21
export PATH=$PATH:$JAVA_HOME/bin
user@localhost:~$ source ~/.bashrc
user@localhost:~$ javac -version
javac 1.6.0_21
user@localhost:~$

Android SDK 복사 (우분투 10.04, Android SDK 1.5)

user@localhost:~$ ls *.zip
android-sdk-linux_x86-1.5_r3.zip
user@localhost:~$ unzip android-sdk-linux_x86-1.5_r3.zip
user@localhost:~$ sudo mkdir /usr/android
[sudo] password for user:
user@localhost:~$ sudo mv android-sdk-linux_x86-1.5_r3 /usr/android/
user@localhost:~$ gvim .bashrc
....
user@localhost:~$ tail .bashrc
export ANDROID_HOME=/usr/android/android-sdk-linux_x86-1.5_r3
export PATH=$PATH:$ANDROID_HOME/tools
user@localhost:~$ source .bashrc
user@localhost:~$ android list
Available Android targets:
id: 1
     Name: Android 1.1
     Type: Platform
     API level: 2
     Skins: QVGA-P, HVGA-L, QVGA-L, HVGA (default), HVGA-P
id: 2
     Name: Android 1.5
     Type: Platform
     API level: 3
     Skins: QVGA-P, HVGA-L, QVGA-L, HVGA (default), HVGA-P
id: 3
     Name: Google APIs
     Type: Add-On
     Vendor: Google Inc.
     Description: Android + Google APIs
     Based on Android 1.5 (API level 3)
     Libraries:
      * com.google.android.maps (maps.jar)
          API for Google Maps
     Skins: QVGA-P, HVGA (default), HVGA-L, QVGA-L, HVGA-P
Available Android Virtual Devices:
user@localhost:~$

윈도우즈에서 복사하는 방법과 별반 다르지 않았다. 압축을 풀고 PATH를 지정하면 된다. 새삼스런 말이지만 에뮬이 XP에서와 같은 모양으로 나타나는 것이 신기했다.

Creative Commons License

Posted in Android, Ubuntu | Leave a comment

넷북에 우분투 설치 가능하다.

SPARQ VX102 넷북에 테스트 삼아서 윈도우즈 XP를 설치해 보았다. 무선 랜까지 쉽게 잡았다. 생각 보단 빨랐다. Dell XPS M1210보다 별로 느린 느낌이 들지 않는다. 리눅스 배포판을 설치해 보기로 했다. Alexa Top Site에서 Linux를 검색하자 역시 가장 먼저 나오는 배포판 사이트는 Ubuntu였다. Ubuntu 넷북 버전은 USB 메모리를 필요로 해서 저렴한 가격에 4G 크기의 USB Stick를 준비했다.

설명을 따라서 USB에 우분투 ISO를 넣고 넷북에 연결하고 넷북의 부팅 순서를 USB 로 설정하였다. 바로 설치하지않고 USB에서 바로 부팅하도록 메뉴를 선택하자 잠시 후에 넷북용 우분투가 나타났다. 유선랜 그리고 사운드가 바로 잡혔다. 기술적인 어려움은 없었다. Ubuntu Netbook Remix 10.04를 사용한 부팅 시간은 아래와 같다.

  • USB 직접 부팅 시간: 1분 29초 (모래시계? 사라질 때까지)
  • USB를 사용한 설치 시간: 25분 50초 (7가지 질문 포함, 하드 크기는 250G)
  • 설치후 부팅 시간: 43초 (모래시계? 사라질 때까지)

아! 놀랍다. 예전에 386 컴퓨터에서 1.44MB 디스켓을 사용하여 슬랙웨어를 설치해 경험이 있기 때문에 더욱 그렇다. 그 때 사용했던 디스켓이 50여장이라고 기억한다. 세상 참 많이 변했다. 이 즈음에서 두 컴퓨터의 키보드와 마우스를 공유하고 싶다면 아래 링크를 참조하기 바란다.

http://spiegel2hwang.blogspot.com/search/label/synergy

앗 잘 쓰던 중에 어제 보니 모니터에 하얀 바탕에 무지개 색 세로줄이 나타나고 있다.  부팅은 하지만 화면을 볼 수 없다. AS 방법을 물어 봤더니 로젠택배로 보내란다.  AS 받아보고 그 결과를 적겠다.  금요일날 로젠 택배로 보냈더니 넷북 부팅 방법을 한번 물어본 후 다음주 목요일날 집에서 받아 볼 수 있었다. 예상 보다 빠른 대응이라 기뻤다. 지금 잘 쓰고 있다.

Creative Commons License

Posted in Android | Tagged , | Leave a comment

안드로이드 개발용 IDE로 Eclipse 보다 NetBeans을 사용하기로 결정했다.

VIM을 주로 사용하긴 하지만 모든 작업에 사용하는 것은 아니다. 안드로이드 개발을 하려고 마음을 먹으니 자바를 이해하는 IDE가 필요했다. 결론 부터 이야기면 NetBeans, nbandroid, jVi 그리고 VIM을 사용하기로 결정하였다.

각 IDE를 설치후 메뉴얼 혹은 투토리얼 읽지 않고 직관적으로 편하게 느껴지는 정도를 기준을 삼았다. Eclipse는 너무 느리다. 많은 기능을 가지고 있지만 너무 큰(복잡한?) 툴이다. 메뉴얼 없이 바로 사용해 보면 NetBeans과의 차이점을 알 수 있다. 자바용 NetBeans를 설치한 후에 코딩하고 컴파일하여 결과를 보는데 채 30초가 걸리지 않았다. Eclipse는 너무 많은 탭과 윈도우를 가지고 있다. 안드로이드가 공식적으로 지원하는 유일한 IDE가 Eclipse긴 하지만 NetBeans에서라고 불가능 한 것은 아니다. IDE를 사용하지 않고 개발하는 개발자도 분명히 있을 것이다. NetBeans를 사용하기 위해서 다음 문서를 읽고 있다.

Developing In Other IDEs

툴의 만족도는 다분히 주관적이다. 어느날 갑자기 IDE가 사라져도 개발이 가능한 환경을 만들고 싶다.

Creative Commons License

Posted in Android | Tagged , , | Leave a comment

안드로이드 컴파일하기 위하여 넷북을 사다.

안드로이드 플랫폼 전체를 빌드하고 싶다. 내 데스크탑은 윈도우 환경이어서 안드로이드 전체 빌드가 불가능하다. Mac은 비용이 높아서 고려사항에서 제외하였고 리눅스를 사용하기로 했다. 아래 두 가지 방법을 생각해 보았다. 살짝 결론부터 이야기 하면 넷북을 샀다.

  • 데스크탑 컴퓨터에서 리눅스 가상 컴퓨터 (Virtual Box) 사용
  • 외부의 리눅스 서버 서비스 이용

리눅스 가상 컴퓨터를 사용한다면 회사에 출근할 때 문제가 된다. 내가 없는 동안 가상 머쉰을 위하여 내 데스크탑이 켜져 있어야 한다. 소음이 나고 열도 나며 전기도 소모한다. 데스크탑과 가상 머쉰이 동시에 동작해야 함으로 내 작업 속도가 느려질 것이 염려되었다. 이 방법은 대상에서 제외하였다.

외부 리눅스 서버 서비스를 이용하기로 했다. Cafe24 에서 제공하는 리눅스 가상 호스팅 서비스를 신청했다. 추가 설치비를 감안하면 적은 돈은 아니지만 언제나 원격으로 접속 가능하다는 것에 기분이 좋았다. SSH을 사용하여 접속하여 안드로이드 전체 컴파일을 시도했다. 컴파일 도중에 연결이 끊어졌다. 가상 머신 재 부팅을 하고 재 시도 하였지만 계속 실패하였다. 커널 컴파일은 상의 후 하라는 경고 문구가 눈에 들어왔다. 안드로이드 컴파일이 커널 컴파일은 아니지만 그에 준한다고 판단되어 포기했다. 리눅스 서버를 임대 하기엔 비용이 모자라서 가상 서버를 구매한 것인데 실수였다. 3개월 비용이 낭비되었다. 값 비싼 경험을 했다.

넷북은 어떤가? 리눅스 가상 머쉰 사용하는 것도 외부의 리눅스 서버 서비스를 이용하는 것도 해결 방법이 아니었다. 리눅스 서버를 추가로 구매하기로 했다. 아래 후보군 중에서 SPARQ VX102 넷북을 선택하였다.

  • [DELL] INSPIRON MINI 10
  • [DELL] Inspiron Zino
  • [ECS] MD100
  • [ZOTAC] ZBOX (HD-ID11)
  • [COMPUZONE] 아이웍스 사무형PC No.212 듀얼코어 E3300
  • [한성컴퓨터] SPARQ VX102 (운영체제미포함)

전원소모가 적고 발열이 낮고, 소음이 적고, 자리 차지가 적어야 함으로 베어본 혹은 넷북이 적당하다고 생각했다. 그러나 베어본의 경우 서버에 OS를 새로 설치할 경우 모니터와 키보드를 연결해야 하는 불편함이 있다. 그래서 넷북으로 결정했다. 성능 보다는 편리한 사용 환경이 더욱 중요하다고 판단했다.

배달된 넷북에 Windows XP와 Jilocloud를 설치했다. 발열도 소음도 크기도 무선랜도 모두 만족스러웠다. 리눅스 배포판을 설치하여 전체 컴파일 테스트를 할 예정이다. 어떤 배포판을 설치할 지 즐거운 고민을 하고 있다. 서버는 성능이 좋아야 한다는 고정 관념을 버리기로 했다.

Creative Commons License

Posted in Android | Tagged , | Leave a comment