'시작'에 해당되는 글 2건

  1. 2013.05.10 GIT란?
  2. 2013.04.15 manifest는 무슨 뜻일까? 8

Git란

분산형 버전 관리 시스템이다. 기존 중앙 관리형 버전 관리 시스템에서는 서버에서 Snapshot을 Checkout 해 로컬에서 사용하는 방식과 달리, 저장소(repository)를 전부 복제해서 전체 시스템을 하나의 Client처럼 사용한다. 그래서 서버에 문제가 생겼을때, 소스 변경 작업이나 복구가 용이하다는 장점을 가지고 있다.

여담으로 Git가 생긴 이유는 Linux 커널 소스 버전 툴인 BitKeeper가 무료로 사용할 수 없다고 함에 따라 리누스 토발즈가 만든 툴이다.


Git의 지향점

  • 빠른 속도
  • 단순한 구조
  • 비선형적 개발(수 천개의 동시 다발적 브랜치)
  • 완벽한 분산
  • 리눅스 커널과 같은 대형 프로젝트에서도 유용한 구조(속도, 데이터 안전성)

Git의 기초 이론

1. Commit 단위

기존 중앙 관리형 버전 관리 도구에서는 시간의 흐름에 따른 각각 파일들의 변화를 버전으로 만들어 관리했다. 

이에 반해 Git에서는 저장(Commit)시점에 변경된 파일의 집합을 하나의 버전으로 관리한다.

-> 파일의 집합을 하나의 버전으로 관리하는 모습은 Perforce의 Changelist나 또는 ClearCase의 UCM에서 Activity를 사용하는 모습과 흡사하다.


2. 속도

Git는 저장소 전체를 복사해 사용하기 때문에 서버 성능이나 장애 상황에 따라 영향을 받는 중앙 관리형 버전 관리 도구에 비해 속도가 현저히 빠르다. 로컬에 모든 정보를 가지고 직접 실행하다 보니 네트워크를 통해 정보를 교환하는 방식에 비해 빠를 수 밖에 없다. 

물론 Offline시에서도 소스와 관련된 작업 수행이 가능하다.


3. 무결성

모든 데이터를 다루기 전에 해당 파일에 대한 체크섬[각주:1]을 구하고, 그 값을 이용해 데이터를 관리한다. Git에서는 SHA-1 Hash를 이용히 체크섬을 만든다.


4. Repository에 대해 삭제 수정이 없는 데이터 추가

데이터가 Commit 된 이후에는 기존 Repository에 대한 데이터를 삭제/수정이 불가능하다.

-> 아직 이 특징을 어떻게 활용해야 할지 의구심이 든다. 정말 정말 없나? 그건 뒤에 공부하면서 알아가야 겠다.


5. 파일의 세가지 상태

Git 상에서 파일은 Committed, Modified, Staged 상태로 관리된다.

- Committed : 로컬 GIT 데이터 베이스에 안전하게 저장된 상태

- Modified : 현재 수정되어 지고 있는 파일

- Staged : 수정 된 파일을 곧 Commit할 것이라는 표시

이 세가지 상태는 Git 프로젝트 세가지 단계의 연결되어 사용한다. Git 프로젝트 단계는

- Working Directory : 프로젝트의 특정 버전을 Checkout 한 곳 -> 실제 개발 작업이 이루어지는 공간

- Staging Area : Git Directory에 존재 하며 곧  Commit 할 파일으 대한 정보를 저장하는 곳

- Git Directory(Repository) : Git 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳

으로 나뉜다.

그럼 실제 Git를 사용아는 작업과 상태과 맵핑되는 단계를 보면 다음과 같다.

1) Working Directory에서 파일을 수정한다. (Modified  상태)

2) Staging Area에서 파일을 Stage해서 Commit할 Snapshot을 만든다. (Staged 상태)

3) Staging Area에 있는 파일을 Commit해서 Git Directory에 영구적인 Snapshot으로 저장한다. (Committed 상태)

중간에 Staging Area를 사용해서 중간에 거치는 단계를 Git에서 사용하는데, 이를 생략하여 사용할 수도 있다고 한다.


  1. (각주) 체크섬 : 중복 검사의 한 형태로, 오류 정정을 통해 송신된 자료의 무결성을 보호하는 단순한 방법이다. 단순한 체크섬 동작의 예를 들면 다음 단계를 따른다. 0. 4바이트의 데이터가 있다. 0x25, 0x62, 0x3F, 0x52 1. 모든 바이트를 더해 값을 구한다. 0x118 2. 캐리 니블을 버린다. 0x18 3. 0x18의 2의 보수를 구해 체크섬 바이트를 얻는다. 0xE8 4. 원래 데이터에 체크섬 바이트를 추가한다. 모든 합이 0x200이 된다. 5. 캐리니블을 버린다. 0x00 -> 오류가 없다는 의미 [본문으로]

'소프트웨어 공학 > 형상관리' 카테고리의 다른 글

형상관리에 들어 보셨나요?  (0) 2013.10.19
Posted by 빌리 :

manifest는 무슨 뜻일까?

2013. 4. 15. 17:18 from 용어

10년이 넘는 시간동안 학부 수업부터 업무에서 까지 많인 코드와 씨름하고 살아왔다. 그 수 많은 시간들을 호기심이라는 욕구를 누르고, 단순히 지식쌓기에만 몰두 하며 살아왔던것 같다. 무덤덤하게 배우고, 무덤덤하고 사용했던 컴퓨터 용어들이나 기술들.

그런데 요즘 나도모르게 눌려져있던 호기심이 조금씩 움투고 있다. 하나씩 궁금한걸 향해서 들어가다보면 수많은 인터넷 창들이 떠있는 걸 보고 깜짝 놀라기도 한다. 지식의 연결이 이렇게 다양하기도 하구나 하는 생각이 들기도 하면서 말이다. 

서론은 여기서 정리하고, 이번에 정리할 것은 manifest라는 단어이다. 간단히 보자면 jar 파일을 생성하면 파일 내부에 manifest.mf 라는 이름을 가진 파일이 생성되고, 안드로이드에서는 apk 패키지를 보면 AndroidManifest.xml 파일을 포함하고 있다. 

우선 각각의 용도를 간단히 정리해 보면 다음과 같다.

  • manifest.mf(jar) : jar 압축시 패키지 관련 정보 및 파일 확장 관련 정보를 저장
  • AndroidManifest.xml : 안드로이드 어플리케이션에 대한 기본적인 정보를 저장

용도를 보면 패키지의 구성 정보나 추가 정보들을 가지고 있다. 아~ 추가 정보들, 또는 기본 정보들을 저장하는 파일이구나 하고 생각하면 되겠다. 그런데 왜 이름이 manifest라고 지어졌을까? 하는 의문이 생겼다. 

사전적 의미를 보면 다음과 같다. 

[ 동사 ]

[타동사][VN] ~ sth (in sth) (특히 감정・태도・특질을 분명히) 나타내다[드러내 보이다][타동사][VN] ~ itself (in sth) 나타나다, 분명해지다
[ 형용사 ]~ (to sb) (in sth) | ~ (in sth) (격식) (보거나 이해하기에) 분명한
[ 명사 ](전문 용어) (배・비행기의) 화물 목록[승객 명단]

여기서 마지막 명사의 의미를 보면 화물 목록 또는 승객 명단을 지칭하는 의미로 사용한다고 한다. 위에서 둘러본 패키지내에 파일들의 용도와 일맥상통 하는 뜻이 나왔다. 아~ 저 단어가 저렇게 쓰이는구나? 라는 생각이 머리속에 '뿅~'하고 정리가 됐다. 

실제로 미국에서 전문 용어로 쓰인다고 한다. 대부분 무슨 뜻인지 모를 수도 있고, 자주 쓰지 않는다고 하는데, 프로그래머이다 보니 무의식적으로 자주 부딪혀 왔던 단어, 파일 이름이 왜 저렇게 지정되었는지 이해가 조금 간다. 의미를 알고 쓰는 것과 의미를 모르고 쓰는 것은 천지 차이가 있는 것 같다. 따라하기와 이해하기의 차이라고나 할까??

프로그래밍 언어들이 영어를 기반으로 하다 보니 대부분의 메뉴얼도 영어가 기본으로 되어있다. 그곳엔 수많은 단어들이 키워드로 사용되어지고, 그 의미를 이해없이 암기식으로 사용하곤 한다. 그런데 이렇게 하나씩 찾아가다보면, 언어적 특성들의 철학적 의미를 이해하는데 도움이 되지 않을까 하는 생각에 두서 없이 글을 쓴다. 

글을 장황한데 정리 되지 않는 느낌이 들긴 하지만, 글도 쓰면 는다고 하지 않았나?? 앞으로 계속 쓰다 보면 글도 잘써지겠지 하는 마음으로 이 글을 마무리 한다.


참고 사이트

http://ask.nate.com/qna/view.html?n=4568400

http://blog.daum.net/haha25/5387590

http://hifive42.blogspot.kr/2010/11/android-manifestxml.html

http://en.wikipedia.org/wiki/Manifest_file

http://bumworld.dayindayout.co.kr/?p=116

'용어' 카테고리의 다른 글

자바 용어 정리  (0) 2013.05.07
Posted by 빌리 :