Android 어플에서 View의 계층을 디버깅할때 쓰는 툴인 Hierarchy Viewer를 소개합니다.


직접 안드로이드 소스코드를 작성하고 실행하다보면, 원하는 화면이 안나오고 깨진 화면이 나오기 일수 입니다.

이럴때 어플리케이션의 어느 뷰의 어느 위젯이 어떻게 띄어지고, 어느 위치에서 띄어지는지를 확인할 수 있습니다.


Hierarchy Viewer는 Android SDK가 깔린 폴더의 하위 폴더인 tools에 "hierarchyviewer"(Windows에서는 hierarchyviewer.exe)라는 파일로 실행할 수 있습니다.


아래는 hierarchyviewer를 맨 처음 실행한 화면입니다.


Hierarchy Viewer


위의 목록에서 작성한 어플리케이션 이름이 보이며, 어플리케이션을 선택하면, 아래의 화면처럼, View의 계층을 확인할 수 있습니다.

아래에서 버튼을 클릭하면 화면의 어느 위치에 Layout과 Widget이 존재하고 어디에 호출되어 실행된다는 정보 그리고 오른편에선 Layout, Widget의 속성을 확인할 수 있습니다.

Hierarchy Viewer로 본 어플리케이션의 View의 계층도 - Layout, Widget이 어디에서 호출되어 실행된다는것을 알수 있습니다.



Hierarchy Viewer를 사용하면 Android 개발할때 화면이 왜 안뜨는지, 왜 일그러지고 깨지는 원인을 확인가능합니다. ^^


ps. Google Android 팀이 만든 툴을 볼때마다, OS의 기본적인 설계가 잘 되었다는 생각을 해봅니다.

Buy me a coffeeBuy me a coffee

2010.12.09. 오후 5시 46분경.

저는 저녁 먹으러 홍익대 정문앞 횡단보도에서 횡단보도 신호를 기다리고 있었습니다.


그러다 저의 눈에 뛴 차량이 있었으니 아래 사진과 같이 Daum 로드뷰라는 로고가 차량에 붙여 있고 차량 위에 카메라가 가 달린 특이한 차량을 발견하였습니다.

Daum 로드뷰 촬영 차량

Daum 로드뷰 촬영 차량 - 2010년 12월 9일 오후 5시 46분경.

Daum 로드뷰 촬영 차량

Daum 로드뷰 촬영 차량 - 2010년 12월 9일 오후 5시 46분경.


저는 Daum 로드뷰 촬영 차량을 보고는 바로 카메라를 들고 위와같은 사진 2장을 찍었습니다. -_-v


Daum은 무슨 일로 이 밤중에 로드뷰 촬영을 하였을까요? 설마 리뉴얼인가?

다음 로드뷰 격변 예고를 보는 것같군요. 낮과 밤의 거리를 보여줄려나?  저녁에 거리 촬영하면 잘 안보일텐데요.


횡단보도 건널때, 신호가 걸린 저 차량 카메라 앞에서 쑈를 하며 찍을까 하다 소심하게 사진만 찍고 횡단보도 건넜습니다. *-_-*

ps. 설마 다음 로드뷰에서 홍대정문 부분에 제가 사진 찍는 모습이 나오는건가요? @.@



Buy me a coffeeBuy me a coffee

에이콘출판사 - 웹 개발 2.0 루비 온 레일스

웹 개발 2.0 루비 온 레일스
카테고리 컴퓨터/인터넷
지은이 황대산 (에이콘출판, 2007년)
상세보기

 예전에 루비가 대세라는 말이 뜨면서 작년인 2007년 12월 20일에 사본 책이다.

책에 있는 예제를 따라하면서 루비가 엄청 쉽구나를 알게 되었지만, 프레임워크(Framework)이라는 용어도 생소하고, MVC라는 용어도, Model, View, Controller[각주:1]의 역할에 대해 이해 못한채로 따라만 하고 덮은 책이였다.

Ruby라는 언어라는 것을 처음 알게 된 책이면서, 책을 열심히 보면서 Ruby란 언어가 예전에 써보았던 Perl의 강력한 정규표현식처리, Prolog의 함수형 프로그래밍언어의 내용, C++, JAVA에서 볼 수 있는 객체지향성을 통합시킨 것을 알게 되었다.

Perl을 써보면서 강력한 문자 처리에 감동하고 이번 학기 프로그래밍 과제하는데 Perl을 가지고 파일 옮기고 유사도 검사를 해보았던 생각을 해보면서 루비로도 해볼까라는 생각을 해보았다. Prolog와 같이 다른 함수를 정의하는 함수를 정의하는 함수를 작성하는 프로그래밍기법을 사용하여 다양한 종류의 함수 정의를 자동화 시키는 기법에 대해서도 신기하게 느꼈다.
(프로그래밍언어 시간에 Prolog로 과제 하다 함수정의하다 이해안되는 부분때문에 몇일동안 고생한 기억이 나서 Prolog에 대해서 기억이 안좋다만, Ruby를 다뤄보니 Prolog과 유사한 부분이 많아서 신기했음)

프로그래밍 언어인 Ruby의 문법을 보면서 일본사람이 정말 Ruby란 언어 잘만들었다는 생각이 들었다.

이분이 Ruby를 만드신 마츠모토 유키히로(松本 行弘, Yukihiro Matsumoto)

이번에 다시 루비언어를 다시 기억을 다시 되살린다고 책을 다시보게 되었다. (루비를 써봐야 하는 입장이 되어서 급하게 책을 펼쳐보았다.)

책에 있는 예제를 그대로 따라하는데에 오류가 생긴 것이다. ㅠㅠ

책에 있는 내용대로 따라해서 ruby 1.8.4를 설치한 다음에 rails를 gem으로 설치하는 것인데 gem으로 rails를 설치하면 책에서 설치하는 것 같은 rails-1.2.2가 설치되지 않고 rails-2.0으로 설치되는 것이다.
rails-2.0으로 설치가 되니 rails-1.2에서 없는 문제가 생겼다.

그것은 책에서 쓰는 scaffold가 rails-2.0에는 없다는 치명적인 에러이다.

그래서 책의 예제를 따라하기 위해서는 책에 있는 내용을 아래와같이 수정을 해야할 것 같다.

c:\> gem install rails --include-dependencies

현재 위에서 같이 쓰여진 책의 내용을 쓰면 rails-2.0이 깔려져서 책의 예제를 따라하기 어렵다. 책의 예제를 따라하기 위해서 (특히 scaffold 부분의 경우) 레일스 1.2.3을 다시 설치해야 한다.

c:\> gem uninstall rails
c:\> gem install rails --version '= 1.2.3' --include-dependencies

위의 설치명령어로 설치를 하면 책에 있는 예제가 잘 될 것이다.

책은 잘 써진 것 같은데 버전 문제가 껄끄럽긴 합니다. 책 쓸 당시에는 이렇게 바뀔줄은 몰랐기 때문이라고 생각됩니다.

Ruby on Rails를 프로그래밍을 해야할 상황인데 Ruby를 빠르게 배우고 싶다면 이 책을 추천하긴 한데 책의 내용을 약간 바뀌어서 내야 할것 같다.

아래는 Rails Framework에 대한 출판사의 설명이다.

[ 레일스 프레임워크에 대해 ]

레일스는 루비 프로그래밍 언어로 만들어진 웹 개발 프레임워크로 덴마크의 데이빗 해너마이어 한슨(David Heinemeier Hansson)에 의해 2004년 7월 처음 공개되었다. 지난 3년간 레일스는 전 세계적으로 빠르게 확산되어 왔으며, 현재까지 레일스로 구축된 B2C 사이트만도 수백여개에 이르고 있다.

레일스가 이처럼 빠른 성공을 거둘 수 있었던 데에는 몇 가지 이유가 있다. 첫째로 오늘날의 웹 개발은 너무나도 복잡해져서 수많은 개발자들이 웹 개발에 넌더리를 내고 있었다. 자바, PHP, .NET 등 개발 환경을 막론하고 많은 웹 개발자들은 뭔가 새로운 것을 시도해 볼 마음의 채비를 하고 있었다.

둘째로 레일스는 개발자의 생산성을 획기적으로 높여 준다. 레일스는 ORM(객체/관계 매핑, Object/Relational Mapping), 코드 생성(Code Generation), 메타프로그래밍 등 최신 프로그래밍 기법을 사용해 개발자가 코딩에 들이는 시간을 현저히 줄여주고 있다. 비슷한 코드를 계속해서 반복적으로 작성하는 일은 개발자의 사기를 떨어뜨리는 일이다. 레일스는 위에서 언급한 프로그래밍 기법을 활용하여, DRY(반복적인 코딩 작업은 피하시오, Don’t Repeat Yourself) 원칙을 적극적으로 장려하고 있다.

셋째로 레일스는 웹 2.0 애플리케이션의 개발에 최적화된 프레임워크이다. 레일스에는 Ajax와 웹 서비스 개발을 위한 컴포넌트가 포함되어 있어서 웹 2.0 서비스를 구축하는 작업을 매우 편리하게 해준다. 실제로 레일스에서는 Ajax 애플리케이션을 개발하기 위해 자바스크립트를 직접 코딩하는 일은 하지 않아도 된다.

마지막으로 레일스를 사용한 웹 개발은 즐겁다. 지금 이 글을 읽는 독자는 다소 회의적인 생각이 들지도 모르겠지만, 이는 레일스를 접해본 수많은 웹 개발자들의 공통된 반응이다. 이 책을 통해 독자 여러분이 레일스가 선사하는 즐거운 웹 개발의 세계를 발견하게 된다면 필자는 그보다 더 큰 보람이 없을 것 같다.
  1. MVC에 대해서는 소프트웨어공학시간에 나오는 개념이다. Model, View, Controller의 약자로서 애플리케이션 코드를 기능별로 분산하여 관리하는 프로그래밍을 말한다. 코드를 분산해서 관리하는 이유는 용도에 따라서 코드의 형태나 구성이 달라지기 때문이다. 결국 이렇게 코드를 나눠 작업함으로써 코드를 좀더 효율적으로 관리하게 되면서 프로그래밍 개발이 효율적으로 진행된다. 자세한 내용은 소프트웨어공학책에 나옵니다. (뇌이버 검색하면 MVC패턴에 대해서 나옵니다.) [본문으로]
Buy me a coffeeBuy me a coffee

+ Recent posts