안드로이드 완전정복 예제 실행하기안드로이드 완전정복 예제 실행하기

Posted at 2014.07.28 00:10 | Posted in 지식저장소/기타


soen.kr에서 어떤 분이 질문한 걸 보고 '아.. 이건 질문할 만 하다'라고 생각했어요. 여러 시련(...)을 맞닥뜨려 보지 않았다면 빌드할 방법을 찾기가 쉽지 않은데, 책에선 예제를 빌드할 수 있는 설정은 안 알려주고 어떤 에디터 설정이 좋다 같은 것만 있으니..


개발툴 버전이 올라간 문제일 수도 있지만, 일단 초보자가 처음보고 해결하긴 시간이 오래 걸리겠죠. 저도 예전에 한 번 해결하고 다시 해결하는데 또 시간이 걸리더라고요.


soen게시글에 직접 답변을 올리자니 사진 업로드가 안 돼서 여기에 사진을 첨부해서 답변을 올립니다. 다른 사람들도 보기 편하고, 초보자 시점에선 사진없이 파악하기 어려울 수도 있는 점이 한 몫.


시작합니다.


일단 JDK (Java Development Kit) 7버전 이상과 최신버전 ADT (Android Development Tools)를 설치합니다.


JDK8: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

여기서 Accept License Agreement를 체크하고 맞는 버전을 다운, 설치하시면 되고

ADT: http://developer.android.com/sdk/index.html#download

이것도 원하는 경로에 압축을 풉니다.


ADT를 받고 압축을 풀면 eclipse폴더안에 eclipse.exe가 있습니다. JDK를 잘 설치했다면 정상적으로 실행이 됩니다. 만약 안 된다면 JAVA_HOME환경변수 문제일 수도 있는데, 그쪽 문제가 생긴다면 구글링 ㄱㄱ.



eclipse.exe를 처음 실행하면, 작업 공간을 설정하라고 메시지가 뜹니다.

프로젝트를 앞으로 어디다 저장할 건지 정하는 건데, 저는 위 사진의 경로로 정했습니다.



정하면 뜨는 개발 툴 모습입니다. 이것만 보면 깔끔합니다.


이제 예제 프로젝트를 불러올 차례입니다.


Package Explorer창에서 우클릭해 Import를 클릭합니다.



General - Existing Projects into workspace를 선택합니다.

주의할 점은 Android폴더에도 비슷한 게 있는데, 그거 고르면 나중 과정에 난감해집니다.



soen.kr에 있는 안드로이드 예제 파일 압축을 풀어 아까 설정했던 작업공간 경로 안에 풀어줍니다.

그러고 압축을 푼 폴더 경로를 쓰고, 저렇게 항목이 뜨면 성공.


아래가 불러온 모습입니다.



질문자님도 여기까진 하셨던 듯 합니다.


이제부터가 해결법이 되겠네요.



프로젝트 속성에 들어갑니다.



저게 체크가 안 되어 있는데, 체크해주면



에러의 수가 감소합니다. 차이는 java.lang같은 기본적인 것들을 쓸 수 있게 되는 거지요.

문제는 전부 해결 되진 않았다는 것.

안드로이드 완전 정복 예제가 앱 하나기 때문에, 에러가 하나라도 있으면 빌드를 못 하고, 실행할 수가 없습니다.


에러메시지를 보면 Google API를 찾을 수 없다는 내용이므로, Google API를 사용할 수 있게 하는 게 관건입니다.

ADT 압축 해제한 경로로 들어가면, SDK Manager.exe가 있을 겁니다. 실행합니다.



Google APIs (x86 System Image)만 추가로 체크해주고, Install n packages...버튼을 눌러 설치합니다.

설치가 끝난 다음에도 Pre-release이미지라든가 추가로 추천하는데, 안 해도 됩니다.

설치는 살짝 시간이 걸립니다.

설치가 끝나면 ADT를 끄고 다시 열어줍시다. 필요한 진 모르겠어요.

혹시 안 끄고 했는데 문제 없었으면 덧글로 알려주세요 ㅋ



다시 프로젝트 설정에 들어가면, Android항목 타겟에 추가적으로 뭔가 있습니다.

저 Google APIs를 선택하면 Google API도 쓸 수 있겠군요. 그럼 체크합니다.

처음에 타겟 설정한 건 그럼 뭐냐고요? 쓸모 없는 거요(퍽)

예제 빌드 과정에선 쓸모가 없지만, Google API를 안 쓴다면 이전처럼 설정했어도 무방했다는 겁니다.



에러 100개 가량이 증발했습니다. 만세. /(-_-)/

근데 2개가 남아있네요.



에러를 더블클릭하면 문제부분 소스로 넘어갑니다. 위 사진 부분이 문제 소스입니다. 이걸



아래 사진처럼 바꿔줍니다.



아마 에러가 전부 사라졌을 테고, 실행해봅시다.



해석: '님 에뮬레이터 가상 기기 없음. 하나 새로 만드셈'



그러고 창을 여럿 띄울텐데, 대충 위와 같은 설정의 기기를 만듭니다.



Start를 눌러도 되고... 이제 다시 Run을 합니다.



오오미. 제가 부팅 스크린을 찍지는 않았지만, 잘 따라왔다면 보셨겠죠?

부팅 겁나 느리지 않나요?

그래서 전 Genymotion을 추천합니다. 꼭 쓰세요. 2번 쓰세요. 이게 진리예요.



넹. 앱이 잘 설치가 됐습니다. 끗.


저작자 표시 비영리 동일 조건 변경 허락
신고

요잉, 롤링, 피칭 연상방법요잉, 롤링, 피칭 연상방법

Posted at 2014.01.06 11:04 | Posted in 지식저장소/기타

선박, 항공 분야에서 쓰는 용어. 예전에 알고 외워보려 했지만 헷갈리기만 했다.


근데 최근에 나름 기발한 생각이 들면서 이젠 잊어버리지 않을 것 같다.


요잉Yawing



[각주:1]



물고기 꼬리 지느러미 움직임을 생각하면 쉽겠다.

병진운동이 아니라 회전운동이지만, 이쪽이 더 기억하기 쉽다.

물고기가 유영하는 모습이라고 외워도 되고... 난 처음에 혹시 이 모습에서 단어가 유래한 게 아닌가 착각을 했다.


피칭Pitching

'피치'라는 단어를 음높이라는 뜻으로 쓴다. 야구 용어도 있긴 하지만 일단 패스.




음파는 횡파(이런, 종파다. 사운드 편집 툴이 시각화 한걸 보고 헷갈렸다)고, 이런 모양으로 나타내지 않는가? 피치가 높으면 저 파장이 짧아지고.

즉 피치는 상하 회전운동이다. (그림은 병진이라고 뭐라하지 말자)


롤링Rolling


[각주:2]


더 말이 필요할까? 드릴. 말 그대로 진행방향에 수직으로 회전운동이다.


정확하게 기억하고 있는지 확인하고 싶다면 다음 사진으로 테스트 할 수 있을 듯 하다.



[각주:3]


이걸로 기억하는데 도움이 됐으면 한다. 많이 안 쓰다 보니 헷갈렸다.



  1. 출처: http://mygeologypage.ucdavis.edu/cowen/HistoryofLife/CH8.15afishes.jpg [본문으로]
  2. 출처: http://grabcad.com/library/request-step-drill [본문으로]
  3. http://en.wikipedia.org/wiki/File:Circular.Polarization.Circularly.Polarized.Light_With.Components_Right.Handed.svg [본문으로]
저작자 표시 비영리 동일 조건 변경 허락
신고

아스키 복습 겸 아스키 표 제작아스키 복습 겸 아스키 표 제작

Posted at 2014.01.04 18:25 | Posted in 지식저장소/기타

이번에 Bash에서 히스토리 전방 증분검색 단축키 (Ctrl-S)가 왜 안 먹는지 이유를 알아보고 나서, 아스키 제어코드를 좀  알아보다가 삼천포로 빠져서 아스키 코드표를 만들게 됨...


원본 SVG파일은 여기에서 받을 수 있다.


그냥 눈치챌 수 있겠지만

붉은 바탕 - 제어문자

노란 바탕 - 공백

초록 바탕 - 기호

보라 바탕 - 숫자

파란 바탕 - 알파벳

이다. C라이브러리 기준.

출력 가능한 문자는 32번 ~ 126번까지다.


이제 아 아스키 표에 관한 썰을 풀어나가자 ~_~


가장 많이 사용할 것 같은 원리는 숫자와 알파벳 순서와 대소문자 전환이다. 이 아스키 표를 보는 당신은 이미 프로그래밍을 배우고 있을 확률이 매우 높다고 생각한다.

아스키에서 숫자를 순서대로 할당해 놓아서 생기는 이점이 '5' - '0' = 5가 된다는 것. 그러고 grade = 'A' + 5; 같은 C언어 연산이 친숙한 사람이 꽤 될 거라고 생각한다. (C언어 뿐만이 아니라 C계열 언어 - C++, Java, C#, D 등등 전부 이런 식이다)

대소문자 전환도 'a'가 있다면 32를 빼면 97 - 32 = 65 = 'A', 대문자는 반대로 더하기 연산으로 손쉽게 해결할 수 있다.

근데 재밌는 것은, 32는 2의 승수고, 때문에 위 표에서 알파벳 대소문자 각각이 옆으로 2칸 차이가 난다는 것이다..

일단 32에 해당하는 비트가 여섯째 비트, b6이다. 이 b6만 바꿔주면 알파벳 대소문자 변환은 저절로 된다. 예를 들자면

'C' = 1000011(2)

'c' = 1100011(2)

이런 식이다. 즉 대소문자 변환 연산은 덧셈뺄셈 뿐만 아니라 비트 연산으로도 구현할 수 있다.

대소문자를 바꾸는 연산은 ch ^= 0x20; 이 한 줄 만으로도 가능할 것이라고 생각한다.


한국어 위키에보면 1967년에 제정된 표준이라고 나온다. 그 당시엔 컴퓨터보다 타자기가 더 흔했을 것 같다. 그래서인지 제어코드는 역사적인 의미만 있고 사장되었다고 하는데, 알게 모르게 쓰고있는 것도 꽤 되는 것 같다.


어떻게 확인할 수 있냐면, 위에서 본 대소문자 변환 원리같이 제어문자도 비슷하게 대응이 되기 때문이다.

영문 위키에서도 나왔다시피, 컨트롤 키를 눌러서 제어문자를 표현할 수 있다. 이 컨트롤 키가 하는 역할이 뭔가 살펴보면, 맨 위 비트 b7을 0으로 바꿔주는 것이다. 대문자 알파벳에서 4칸 왼쪽으로 이동과 동일하다.

예를 들자면 Ctrl-I (^I로 표기할 수도 있다)의 경우

'I' = 1001001(2) = 73

^I = 0001001(2) = 9 = Horizontal Tab

이 된다. 당장 메모장열고 Ctrl-I를 눌러도 탭이 눌리는 걸 확인할 수 있다.


이런 제어문자들의 활용 예를 기록해보기로 한다. 아마 원래 아스키코드의 의미하곤 차이가 있을 수 있겠지만 (시대가 달라졌으니...) 비슷하게 사용하려고 한 예를 찾을 수 있다.


0 = 0x0: NULl character (^@)

의미는 알겠지만, 실제로 타이핑할 일은 없었다.


1 = 0x1: Start Of Header (^A)

2 = 0x2: Start Of Text (^B)


3 = 0x3: End Of Text (^C)

윈도우즈 명령프롬프트(이하 cmd)나 리눅스 터미널에서 누르면 프로그램 강제 종료 효과가 있다.

원래 그런용도였는지는 모르겠지만, 나중에 보면 의미가 살짝 달라도 비슷한 걸 끼워맞추는 경우가 왕왕 있다.


4 = 0x4: End Of Transmission (^D)

리눅스 터미널에서 입력 중일 때 입력하면 입력 종료로 인식한다. cmd는 ^Z를 쓴다.


5 = 0x5: Enquiry (^E)

6 = 0x6: Acknowledgment (^F)


7 = 0x7: BELl (^G)

cmd에서 echo ^G를 입력하면 소리가 정말 들린다. 아마 터미널도 마찬가지일 거라고 생각.


8 = 0x8: BackSpace (^H)

역시 cmd하고 터미널에서 백스페이스로 동작한다. (설정에 따라서 달라질 순 있겠지만 대개는)

vi에디터에서 커서를 왼쪽으로 옮기는 키로 쓰는데, 이 제어문자의 의미가 반영된 듯 하다[각주:1].

(마찬가지로 J, K도 그런 듯. L은 그냥 위치상 선정된 듯?)


9 = 0x9: Horizontal Tab[f] (^I)

위에서 설명함 ㅇㅅㅇ


10 = 0x0A: Line feed (^J)

1965년도 표준... 이라고 위에서 언급했었다. 그만큼 타자기의 영향도 무시할 수 없는데, 이 문자가 바로 그런 영향을 받았다고 볼 수 있다.

 manual typewriter 

출처: Penguin Pete's Blog


이 사진이 아주 잘 설명하고 있다고 생각하는데, 타자기에서 타이핑을 하면 왼쪽에서부터 캐리지가 이동하면서 순서대로 문자를 쓴다. 그러다가 종이 오른쪽 맨 끝에 도달하면 다시 캐리지를 맨 왼쪽으로 돌려놔야 한다. 이걸 캐리지 리턴Carriage Return이라고 한다. 근데 CR만하고 다시 치면 쳤던 줄에 또 치게 되므로, 왼쪽에 Line-feed 레버로 (미는 걸까 당기는 걸까 누르는 걸까...) 종이를 한 줄 위로 올려준다. 이 개행 작업을 CR/LF로 표현할 수 있다.


하지만 굳이 개행이 2문자가 필요한 게 아니라서... 맥은 CR, 윈도는 CR/LF, 리눅스는 LF를 쓰는 파국이 도래했다.


11 = 0x0B: Vertical Tab (^K)

사실상의 표준으로 탭 키는 8글자, 이 수직 탭 키는 6줄 이동이라고 하는 것 같다.

Bash에서는 커서 뒤 문자들을 없애주는 역할을 하던데, 연관이 있는 걸까 ㅡㅡ?


12 = 0x0C: Form Feed (^L)

프린터에 이 문자를 입력하면 종이를 그냥 내보낸다고 영문 위키에 나와있다. 역할은 이게 맞을테고.

Bash에서 ^L을 입력하면 화면을 비워준다. 비슷하게 단축키를 배정했다고 볼 수 있겠다.


13 = 0x0D: Carriage Return (^M)

이미 10. LF에서 설명을 다 한 것 같다.

cmd에선 ^J가 아니라 ^M을 입력해야 개행이 되더라.


14 = 0x0E: Shift Out (^N)

15 = 0x0F: Shift In (^O)

사용자가 지정한 확장 인코딩이 시작된다는 의미.. Shift Out과 함께 HTML태그처럼 쓴다.


16 = 0x10: Data Link Escape (^P)

뭐지..


17 = 0x11: Device Control 1 (^Q)

XOFF. 설명은 19번에.


18 = 0x12: Device Control 2 (^R)


19 = 0x13: Device Control 3 (^S)

내가 이 포스팅을 쓰게 한 참 장한(?)문자.

XON으로 쓰기도 한다고 위키에 설명이 있는데, 리눅스 터미널에서 이 DC3을 '버퍼가 꽉 찼으니 나중에 결과를 보내 주세요'라는 의미로 이미 쓴다고 한다. putty에서 가끔 입력이 안 되는 경우가 이 ^S를 눌렀을 때가 다반사다.

이 키가 Bash단축키도 막고 있어서 문제가 됐었다.


20 = 0x14: Device Control 4 (^T)


21 = 0x15: Negative AcKnowledgement (^U)



22 = 0x16: SYN (^V)

TCP를 배우면 알 수 있을까...?


23 = 0x17: End of Transmission Block (^W)



24 = 0x18: CANcel (^X)


25 = 0x19: End of Medium (^Y)


26 = 0x1A: SUBstitute (^Z)

치환이라는 의미를 가지곤 있지만, 실제 의미는 이 장치에서 표현 불가능한 문자(즉 에러)라는 뜻이라고 한다.

흔히 쓰는 실행 취소는 의미하고 완전히 동떨어진 것 같고, 그나마 가까운게 cmd에서 이걸 End Of File로 사용한다.

리눅스에선 '현재 작업을 백그라운드로 전환'하는 역할을 가지고 있다.


27 = 0x1B: ESCape (^[)

뒤에 있는 문자를 확장해주는 역할. 터미널에서 추가적인 단축키로 쓸 수 있다.

Putty에서 Alt-B와 ^[B가 같은 역할을 하더라. 설정인지는 모르겠지만.

이 키에 관한 내 기억은, vim에서 매우 유용하다는 것이다.


28 = 0x1C: File Separator (^\)

29 = 0x1D: Group Separator (^])

30 = 0x1E: Record Separator (^^)

31 = 0x1F: Unit Separator (^_)

데이터를 구분할 때 쓰는 용도 같다.

어쩌다가 제어문자를 만나게 되면 여기에 더 기록할 생각이다.


안 적힌 부분이나 잘못된 부분은 댓글 환영~


  1. https://news.ycombinator.com/item?id=3684515 [본문으로]
저작자 표시 비영리 동일 조건 변경 허락
신고

AStyle 비주얼 스튜디오 플러그인AStyle 비주얼 스튜디오 플러그인

Posted at 2013.09.04 03:54

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

UNLOCK!

Visual Studio Git Source Control Provider 활용하기Visual Studio Git Source Control Provider 활용하기

Posted at 2013.08.25 15:28

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

UNLOCK!

TortoiseGit 사용법 (2) - 파일상태 확인하고 커밋하는 법TortoiseGit 사용법 (2) - 파일상태 확인하고 커밋하는 법

Posted at 2013.08.25 11:49

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

UNLOCK!

TortoiseGit 사용법 (1) - 깃이란? & 저장소 가져오기TortoiseGit 사용법 (1) - 깃이란? & 저장소 가져오기

Posted at 2013.08.25 00:37

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

UNLOCK!

티스토리 툴바