새로 소스를 만들기보다는 처음 만들었던 것을 가지고 수정해나가도록 해보자.

우선 Button을 하나 만들어보자.
기존에 단순히 글씨만 보여주었던 TextView를 Button으로 변경해보겠다.


본래 위와 같았던 소스에서, "TextView"를 "Button"으로 글씨만 변경해보자.


위와 같이만 하면 된다.
그리고 에뮬레이터로 Run As 시키면...


위와 같이 버튼으로 바뀐다.
눌러보면 색이 반전되면서 눌려지는 Button인 것을 확인할 수 있을 것이다.


그러면, 이번에는 눌리기만 하는 것이 아니라
누르면 뭔가 행동을 취하도록 해보자.

그러기 위해서는 이 Button을 지칭하기 위해서 id를 만들어줘야 한다.


 android:id="@+id/chaniBtn"

<Button ... /> 사이에 위와 같이 id를 지정해주는 한 줄을 추가해주면 된다.

그리고 해당 버튼을 조작하기 위해서 소스파일에서 받아오는 부분을 넣어보자.


 Button chaniButton = (Button)findViewById(R,id,chaniBtn);

위 스크린샷에는 오타가 하나 있다 ^^
박스에 있는 것이 맞다! ^^

Resource의 id 중에서 chaniBtn이라는 놈을 찾는데,
그 속성은 Buuton이고 그 놈을 chaniButton이라는 변수에 지정하라는 의미이다.


chaniButton.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
      Toast.makeText(getApplicationContext(), "차니 버튼 꾹!", 1500).show();
   }
});

그 밑에 위와 같은 부분을 추가하자.

chaniButton이 꾹 눌리는 것을 감시하고 있다가,
눌려지면 "차니 버튼 꾹!"이라는 글씨가 나오는 작은 창을 1500ms 시간 동안만 보여주라는 의미이다.

그런데, 위 스크린샷과 같이 빨간 줄이 되어있는 부분이 꽤 보일 것이다.
C언어의 #include <>와 같이 사용할 함수들이 들어있는 헤더파일과 같은 것들을 적어줘야 하는데
물론 Java에서는 import를 해주는 것이지만...

일일이 기억하고 적어주기가 귀찮은 귀차니스트 여러분을 위한 편리한 기능이 물론 있다.
[Ctrl]+[Shift]+[O]를 눌러주면 된다!!!


그런데도 빨간줄이 그어져 있다면 오타가 났을 확률이 높다.
마우스를 가져다대면 위 스크린샷과 같이 친절한 안내를 해준다.

수정하자!!!


자~이제 위와 같이 빨간펜 선생님의 지적이 없어지면 된다!!!

Run Application 해보자.

버튼을 누르면 밑에 작은 창(?)이 나오는 것이 보이면 성공!!!



쨘~
반응형

'잘난놈되기 > 안또라이들' 카테고리의 다른 글

새로운 판 만들기  (0) 2012.03.12
버튼을 더 추가해보기  (0) 2012.03.11
첫 소스 분석 - HelloAndroid  (0) 2012.03.05
여보세요!? 안또라이들!!!  (0) 2012.02.28
Android Emulator 실행  (2) 2011.12.11

지난 번에 만든 첫 프로그램에 대해서 조금 더 살펴보자.



C 언어의 main(){} 의 역할을 하는 것은 무었일까?!
위 샘플 소스를 보면 잘 알 수 있을 것이다.


화면에 글씨를 뿌린 부분은?!

 setContentView(R.layout.main);

그런데, 화면에 뿌려진 글씨는 어디에 있을까!?



'Package Explorer'에서 [HelloAndroid]-[res]-[layout]-[main.xml]을 선택하자.
그 다음 오른쪽 화면 밑 부분에서 'Graphical Layout' 옆에 있는 'main.xml'을 선택하자.


중간 아래 부분을 잘 살펴보면, layout 말고 "android:text="@string/hello" 부분이 있다.
텍스트를 설정을 하는데, 그 내용은 string 타입의 변수(?) 'hello'에 저장된 값을 사용하라는 의미로 볼 수 있다.

그러면, 그 변수값은 어디서 확인할 수 있을까?!

'Package Explorer'에서 [HelloAndroid]-[res]-[values]-[strings.xml]을 선택하자.
그 다음 오른쪽 화면 밑 부분에서 'Resources' 옆에 있는 'strings.xml'을 선택하자.


xml 파일의 중간을 보면, 아래 부분을 확인할 수 있을 것이다.

 <string name="hello">Hello World, HelloAndroidActivity!</string>


전체적인 구조를 파악할 수 있을 것이다!!!



이제는 조금 바꿔볼까요!?


위와 같이 string 내용을 살짝 바꿔보고,


'Run HelloAndroid'를 실행하자!


그런데, 수정 후 저장을 안했기에 실행 전에 Save를 할 것인지 물어보는 창이 뜬다.
저장을 해주면 된다.


그러면, 변경된 내용으로 App이 실행되는 것을 확인 할 수 있다.


위 과정을 보면, 실제로 소스 파일을 수정하지 않고 리소스 파일 수정만으로 다른 결과가 나오는 것을 확인할 수 있다.
프로그램과 리소스의 분리를 기본으로하는 안드로이드의 철학을 엿볼 수 있다.

반응형

'잘난놈되기 > 안또라이들' 카테고리의 다른 글

버튼을 더 추가해보기  (0) 2012.03.11
버튼을 추가해보기  (0) 2012.03.06
여보세요!? 안또라이들!!!  (0) 2012.02.28
Android Emulator 실행  (2) 2011.12.11
Android SDK 설치하기  (0) 2011.12.10

앞에서 Git Server 를 두고 그곳에서 소스를 받아오고 작업한 내용을 넣는 것을 살짝 살펴보았다.


Git을 소개할 때 항상 나오는 "분산 관리", 그에 따라 나오는 이야기는 바로 "복제"이다.
무슨 말인고 하니, 서버와 클라이언트 모두 똑같은 데이터를 가진다는 점을 특징으로 한다고 한다!

기존의 서버-클라이언트 구조인 Subversion 등과는 달리,
Git은 서버와 클라이언트 개념이 없이 모두 같은 데이터를 가지고 동등한 입장이라고들 말한다.

하지만, 이 이야기로 인하여 Git에 대한 많은 오해가 있고, 또 괜히 어려워 하게 되는 것 같다.


분산 관리 도구인 Git이지만,
형상관리 도구의 특성상 분명히 기본적인 구조는 "서버-클라이언트"이다.

즉, 최종적인 결과물을 저장하는 서버의 역할을 하는 repository는 분명히 존재한다.
그 외 clone을 받아간 repository는 모두 클라이언트 이다.

clone을 -bare 형식으로 하여 Server 역할을 할 수 있는 repository를 만들었더라도
전체 구조에서는 어디까지나 클라이언트의 역할이다.

말 장난같이 들릴지 모르겠지만, 위의 사항에 대해서는 잘 이해를 하였으면 좋겠다.



전체적인 흐름은 위와 같다.

   - Remote repository에서 'git clone'을 통해 소스를 받아오고
   - 소스 수정 작업을 한 뒤에
   - 'git add'를 통해 staged 상태로 만든 뒤
   - 'git commit'을 하고나서
   - 변경 사항을 'git push'를 통해 Remote repository로 넣어준다.


이 부분에 대해서 뭔가 말할 거리가 많다고 생각했는데,
막상 적다보니 짧은거 같아서 뭔가 조금 찜찜(?)한데.... 뭐 할 말은 다 한 것 같다!
빼먹은 부분이 있으면 나중에 다시 더 추가하도록 하고...
최신 트랜드에 따르기 위해서 요즘 유행한다는 인후염을 겪고 있다보니 헥헥....

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Remote - remote, fetch, pull  (0) 2012.03.19
업데이트 - git pull, 중간 정리  (0) 2012.03.17
Git Server - push + 한글  (1) 2012.02.26
Git Server - Remote Connect  (0) 2012.02.25
Git Server - SSH  (2) 2012.02.23

세발 자전거로 만족을 하지 못하는 공주님을 위해서 구매한 밸런스 바이크

페달이 없이 발로 타는 두발 자전거를 밸런스 바이크라고 한단다.


오늘도 사진을 찍는데,
자청해서 모델을 하고 있는 공주님 ^^

앞머리가 없으니... 잘생겼구나...


2011년 5월 중순경 구매했는데...
10만원 정도 주고 구매한 것으로 기억나는데,
지금도 그 정도 하는 것 같다.


뭐, 이태리 제품이라고 광고를 열심히 하는 제품이다.


아직 박스도 그대로 있고...


설명서와 도구도 그대로 있다.


딱 한 번 밖으로 가져가서 탔는데...
놀이터에서만 타서인지 바퀴는 멀쩡 ^^


두발 자전거이다보니 사용감은 있다.
주차가 안되는 관계로...^^


저렇게 눞여 놓아야 하는 점은 좀 에러~
하지만, 밸런스바이크 대부분 다 그런 것 같다.


사용해본 소감은...

우리 공주님은 참 좋아했는데, 와이프는 좀 싫어했다.
그냥 세발 자전거 타다가 네발 자전거로 넘어가면 되지,
왜 이런 이상한 자전거 샀냐면서... ㅠㅠ

사실 좀 애매한 제품이긴하다.

운동 신경을 기르는데는 조금 도움이 될 것 같고,
집에서 자전거 타고 놀게 하기에도 적당하다.
밖에서 타게 하기에는 조금 애매...^^

네발 자전거 타기 전에 잠시 균형 감각기르도록 하거나
집에서 자전거 놀이하도록 하기에 적당한 그런 제품?!

반응형

프로그래밍 언어를 배울 때에 제일 먼저 하는 것!!!!

Hello 만들기!!!



이클립스 실행 후, [File]→[New]→[Other] 선택


(Android)→(Android Project)→[Next>]


Project Name: "HelloAndroid"

기재 후 나머지는 Default 값 그대로 진행


Target 을 골라야하는데,
최신 버전으로 고르고 싶더라도 낮은 버전을 고르는 것이 좋다.

하위 버전을 대상으로 개발을 해야 하위 호환성이 좋아진다.
높은 버전을 대상으로 개발을 하게 되면 낮은 버전에서 실행이 안될 수가 있다.

"Galaxy Tab" 用 App을 개발해보기 위해서 아래와 같이 선택해 보았다.


Package Name: com.whatwant.hello

패키지 이름을 지어줘야 하는데, 도메인주소를 거꾸로 해놓은 방식으로 만들어줘야한다.


오른쪽의 Package Explorer에서 소스파일을 선택해보면 제공된(?) 소스를 확인 할 수 있다.


위 스크린샷의 스마트폰 모양의 아이콘을 누르면 에뮬레이터를 실행할 수 있다.


App을 실행할 수 있는 가상 디바이스를 만들어보자.


GALAXY Tab으로 만든 후, Start를 해보자.


Scale display to real size는 에뮬레이터를 디스플레이할 때 어떤 비율로 할 것인지를 정하는 것이다.
밑의 Scale, 0.54 비율로 디스플레이하라는 것이다.

GALAXY Tab 해상도가 높기 때문에 조금 줄여서 디스플레이하도록 했다.


잘 실행된다.


미리 한 번 눌러버려서 위 스크린샷처럼 나오는데...

Run As를 누르면 어떤 형식으로 실행할 것인지 물어보는 창이 뜬다.
Android Application 을 고르면 된다.


에뮬레이터에 해당 어플리케이션이 잘 실행된 것을 볼 수 있다!!!



우리의 Hello 프로젝트는 여기까지~!!!
반응형

'잘난놈되기 > 안또라이들' 카테고리의 다른 글

버튼을 더 추가해보기  (0) 2012.03.11
버튼을 추가해보기  (0) 2012.03.06
첫 소스 분석 - HelloAndroid  (0) 2012.03.05
Android Emulator 실행  (2) 2011.12.11
Android SDK 설치하기  (0) 2011.12.10

바로 앞에서 Remote repository 를 clone 하여서 받아왔다.
이번에는 만든 work repository 에서 작업한 내용을 Server로 보내는 작업을 해보자.

더불어서 git 에서 한글파일명을 쓸 때 발생하는 문제까지 같이 살펴보겠다.



1. modify + error


$ nano ./한글파일명.txt
$ git add ./한글파일명.txt
$ git commit -m 'push + 한글파일명 검증'

위 스크린샷에 모든 것이 나와있다.

새로운 계정에서 repository를 clone 하였고,
해당 work repository에서 새로운 파일을 추가한 다음에
commit을 하고자 하는데 여기서 바로 error가 발생을 했다!

error가 발생한 이유는,
"commit 을 하려고 하는데 누가 commit을 하려는 건지 정체를 알 수가 없으니 알려줘!!!"



2. user


$ git config --global.email bigbang@whatwant.com
$ git config --global.name bigbang
$ git commit -m 'push + 한글파일명 검증'

앞에서 살펴본바와 같이 git을 사용하기 전에는 항상 환경 설정을 해줘야 한다.

   - http://whatwant.tistory.com/295

그런데,
위 스크린샷을 보면 특이한 점을 볼 수 있을 것이다. 무엇인지 찾으실 수 있으신가요?!



3. push


$ git push

다음에 다시 한 번 제대로 설명을 하겠지만,

일단, 위에서 진행한 'commit'은 Server와 별개로 현재 계정의 work repository에서 작업을 한 것이다.
작업한 내용을 Server로 보내는 작업이 필요한데, 그것이 바로 " git push"이다.

그런데, 위 스크린샷을 보면 알겠지만 그냥 넘어가지 않고, error가 발생을 한다!

우리에게 모든 것을 알려주시는 친절한 git 선생님의 말씀을 잘 읽어보면,
권한(permission)이 충분하지 않다고 나온다.
그렇다! 바로 권한!!!



4. permission


서버 즉, Remote repository 의 권한을 한 번 살펴보자.

위 스크린샷을 보면 user와 group에게는 모두 권한을 주고 있지만,
다른 사용자들에게는 읽기 권한만 주고 있는 것을 확인할 수 있다.

그렇다!
이전에 계속 말한바와 같이 git은 어디까지나 기본적인 파일 권한을 기반으로 사용한다.

그러면, 여러 계정이 이 repository를 사용하게 하려면 어떻게 해야할까?



5. group


$ sudo groupadd barerepo
$ sudo usermod -G bigbang,barerepo bigbang

해당 repository를 사용하는 사용자들을 묶을 그룹을 하나 만들어보자.
   - sudo groupadd barerepo

사용자 'bigbang'을 barerepo 그룹에도 포함을 시키자.
   - sudo usermod -G bigbang.barerepo bigbang


일반적으로 'usermod'는 익숙하지 않을 것 같은데...
사용자의 정보를 변경하는 명령어이다. 그 중 '-G' 옵션은 그룹에 대한 정보를 변경한다는 의미이다.
여러 그룹에 속할 경우 ','로 나열을 하면 되고, 변경하고자 하는 계정은 제일 뒤에 적어주면 된다.

즉, 위 스크린샷에서는
" 'bigbang'이라는 계정은 'bigbang'이라는 그룹과 'barerepo'라는 그룹, 두 곳에 속한다! "
라는 의미이다.



6. chown


$ sudo chown -R chani.barerepo ./BareRepo.git 

위 스크린샷을 차례대로 살펴보길 바란다.

   - 'BareRepo.git' 은 chani 계정이 생성하였다. (주인은 chani)
   - 'chown'을 통해서 소유 group을 'barerepo'로 변경하였다.


'chown' 이라는 명령어에 대해서 조금 더 설명을 하자면,
당연하게도 소유자를 변경(chage owner)하기 위해서 사용을 하는 것이고,
하위 디렉토리 및 파일들도 일괄적으로 변경하기 위해서는 '-R' 옵션을 사용하면 된다.
user와 group은 '.'으로 연결하면 된다.


이제, 'BareRepo.git' repository는 barerepo 그룹 사용자들에게도 쓰기 권한이 있다!!!



7. push


$ git push 

이 부분을 테스트하면서 조금 의아심이 들었지만...
일단, 위에서 따라온 것처럼 권한 부분을 맞춰주면 스크린샷과 같이 정상적으로 push가 된다.

Remote repository로 변경 내역을 전달한 것이다!!!


여기서 의아하다는 점은,
분명 에러가 발생을 해야하는데 그냥 push가 되어버렸다는 점이다!!!


$ git config push.default tracking

본래는 push 를 어떻게 할 것인지 명시하지 않았기 때문에 error가 발생을 해야한다.
그런데, 왜 위 스크린샷에서 보는 것처럼 그냥 넘어갔는지는 의문이다.

만약, 여러분의 경우에 push할 때에 에러가 발생한다면,
혹 발생하지 않았더라도 위와 같이 tracking을 설정해놓으시길...



8. 한글파일명


한글 파일을 추가할 때 뭔가 이상하게 숫자들의 집합으로 등록이 된 것을 앞에서 확인했을 것이다.

 bigbang@chani-Ubuntu:~/workspace/BareRepo$ git commit -m 'push + 한글파일명 검증'
[master 5705788] push + 한글파일명 검증
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 "\355\225\234\352\270\200\355\214\214\354\235\274\353\252\205.txt"

잘못 등록된 것이 아니라 Unicode로 변경되어 전달된 것이다.
위 스크린샷을 보면 알겠지만, clone 을 하여도 제대로 파일명이 되어있는 것을 알 수 있을 것이다.

하지만, 위와 같이 등록이 될 경우에 일부 문제가 있을 수도 있다.
예를 들어서 Redmine의 저장소로 사용될 경우
파일의 이름이 한글이 아니라 저 숫자로 된 코드가 그대로 파일명으로 나오기도 한다.


$ sudo git config --system core.quotepath false

사용자 계정이 아니라 root 계정을 통해 system의 설정을 변경해야 한다.
이렇게 할 경우 다른 side effect가 있는지는 아직 모르겠다.


commit 부분을 살펴보면, 앞에서와 달리 한글이 그대로 반영되는 것을 볼 수 있을 것이다.


일단은 그냥 기본 값으로 사용하는 것을 추천하고,
Redmine의 경우와 같이 사용에 문제가 있을 경우 위와 같이 설정 변경을 통해 해결하는 것을 제안한다.

이로 인한 side effect에 대해서는 계속 확인을 해보겠다.



간만에 길게 쓴 포스팅인데, 춥고 졸리다! ㅠㅠ

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

업데이트 - git pull, 중간 정리  (0) 2012.03.17
Remote Repository - git push  (2) 2012.03.04
Git Server - Remote Connect  (0) 2012.02.25
Git Server - SSH  (2) 2012.02.23
Git Server - Local  (0) 2012.02.22

Git 이 여러가지 Protocol 을 지원하고 있다지만, 어디까지나 기본 바탕은 SSH Protocol 이다!
계정 관리 및 계정의 권한 역시 SSH Protocol 의 정책이 그 기본이다.

앞에서 해당 Protocol 에 대해서는 간단히 알아보았고,
여기에서는 실제로 사용하는 모습을 간단히 시나리오에 따라서 살펴보도록 하겠다.



1. adduser


$ sudo adduser bigbang

우선 새로운 사용자를 하나 생성해보도록 하자.
위 스크린샷에서는 'bigbang'이라는 계정을 생성하였다.


$ sudo apt-get install finger
$ finger bigbang

꼭 설치해야하는 것은 아니지만, 그냥 계정을 확인할 수 있는 'finger'도 설치해보았다.
그냥... ^^



2. su


$ sudo su bigbang

일단 사용자를 변경하자.


프로젝트에 신입사원이 새로 왔다는 상황을 가정해보도록하겠다.
계정을 새로 발급을 받고 프로젝트 소스를 받아서 작업을 하고자 하는 상태다!



3. workspace


$ cd
$ mkdir workspace
$ cd ./workspace

repository를 내려받기 위한 공간을 마련하는 작업이다.
계정 홈디렉토리 밑에  workspace 라는 공간을 만들어서 그 밑에서 작업을 하고자 한다.



4. clone


$ git clone bigbang@localhost:/srv/repository/BareRepo.git

앞에서 살펴보았던 방법으로 ssh protocol 을 사용하여 repository 를 clone 하여보았다.



바로 곧 이어서 push에 대해서 살펴보자~!!!

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Remote Repository - git push  (2) 2012.03.04
Git Server - push + 한글  (1) 2012.02.26
Git Server - SSH  (2) 2012.02.23
Git Server - Local  (0) 2012.02.22
Protocol - Git Server  (0) 2012.02.20

이번에는 가장 많이 사용하는 프로토콜인 SSH !!!


1. clone


$ git clone ssh://chani@10.0.2.15:/srv/repository/BareRepo.git
$ git clone chani@10.0.2.15:/srv/repository/BareRepo.git

ssh 프로토콜을 사용하여 clone을 하는 방법은 2가지가 있다.

   - git clone ssh://계정@서버주소:리포지토리주소
   - git clone 계정@서버주소:리포지토리주소

하지만, 위의 스크린샷을 보면 에러가 발생한다!!!
그 이유는 ssh server가 없어서이다 ^^



2. install ssh server


$ sudo apt-get install openssh-server

Ubuntu의 경우에 가장 많이 사용하는 'openssh-server'를 설치하자.



3. clone


$ git clone chani@10.0.2.15:/srv/repository/BareRepo.git

실제로 해보면 "ssh://"를 명시하는 방법은 에러가 나곤 한다.
그냥 밑의 방법을 사용하는 것을 추천한다.






SSH를 사용하여 Git의 계정 관리를 하는 것이 가장 일반적이다.
앞에서 언급한 바와 같이 가장 대중적이며 안정적이며 유연한 프로토콜이다.

단점은 SSH를 사용할 경우, anonymous 접근을 허용하기가 난해하다.
그래서 open source project 에는 적용하지 않는다.

 

실제 계정 정책을 적용할 때 어떻게 해야하는지 등에 대한 부분은 다음에 별도로 다루겠다~

퇴근하고, 아가랑 놀고, 씻고....그리고 정리하려면 너무 졸려서리...... ㅠㅠ

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Git Server - push + 한글  (1) 2012.02.26
Git Server - Remote Connect  (0) 2012.02.25
Git Server - Local  (0) 2012.02.22
Protocol - Git Server  (0) 2012.02.20
Add last commit - git commit --amend  (0) 2012.02.16

+ Recent posts