Git 에 대해



요즘 Git에 대해 공부중이다.

내가 알기론 Git은 각종 버전관리툴의 장점만 모아 왔다고 한다.

나름 버전 관리툴을 다양하게 써 본거 같다. 각각 프로젝트 진행 하면서 이직도 많이해 보고

여러 회사에 파견 근무 하면서 각 회사마다 하나 같이 다 다른 버전 관리툴을 사용했다.


SVN(Subvision) 사용하기 참 편리 하다. git 아니면 svn 두가지 버전 관리를 많이 사용할 만큼

svn의 편리함은 버전 관리 초보에게 가장 접근하기 쉽지 않나 싶다.

개념 잡기도 쉽고 나도 따로 공부해 가며 써본적이 없을 정도로 기본 기능은 편리하며

윈도우 환경에서는 TortoiseSVN 이라는 툴로 인해 사용하기 굉장히 편리했다.

그냥 탐색기 열어서 수정 사항 commit 하고 오래되서 기억이 잘 안 나지만 checkout 이었나?

소스 받고 마우스 우클릭 만으로도 쉽게 소스 관리를 할 수 있어서 편했다. 그리고 가장 강력한

한글화가 잘 돼있다.


Perforce 예전 삼성에 안드로이드 개발(안드로이드 초기로 해외에도 몇모델 없고 2~3모델쯤?

국내에는 아이폰 이야기가 처음 기사화 되던 시절)

하던 시절에 사용해본 형상 관리.. 사용하면서 엄청난 두려움에 휩싸였다. 굉장히 불편했고

플젝 종료시 까지 소스 올리고 받고 외에는 거의 사용해볼 생각도 못했던거 같다.. 까다로웠다.


Source safe SK 에서 휴대폰 개발 하던 시절 사용했던 툴 이것도 굉장히 불편 했던게 checkout 이었나?

하면 일단 소스에 Lock 이 걸리면서 소스 제어권을 나 혼자 갖는다. 그러면 그 파일을 다른 사람이

수정을 할 수가 없다. 이것도 워낙 오래전에 써 봐서 정확히 기억은 안 나지만 기본적으로 받아 놓은 소스에

수정을 못하게 되어 있어서 이것을 수정 하려면 Lock 걸고 수정 하고 Unlock 하고 바로바로 서버에 반영

되었던거 같다.. 아님 말고..

여튼 이런 방법 때문에 한두명이 작업 하는 것도 아니고 수십명이 작업하는데 Lock 을 오래 걸 수가 없고

또 내 이슈가 언제 수정 될지는 모르니 대부분 다른곳에 소스를 받아 놓고 그곳에서 수정 하고

Source safe 와 동기화할 소스에 수정 파일을 lock 걸면서 merge 하는 방식으로 작업 했던것 같다.

이거 덕에 merge 툴의 편리함을 많이 알게 됐고 지금도 많이 활용중이다. 그땐 Araxis Merge 를 사용했는데

UI가 정말 보기 편했었다. 하지만 UTF-8을 제대로 지원을 안해서 차후엔 Beyond compare 만 사용했다.

여튼 이때 배포큰 어떤 사람은 쿨 하게 퇴근할때 Lock 걸고 Merge후 Unlock을 풀지 않고 퇴근해 버려

그것도 금요일에! 그것도 가장 많은 사람들이 접근하는 파일에! 주말근무 했던 아픈 기억이 있다...

웹 서핑중 Lock 걸려도 수정할 방법이 있다고 했는데 그때는 작업하던 모든 사람이 그 사실을 몰랐다 -_-


Git 내가 써본것중 가장 좋은것 같다. 물론 진입 장벽이 좀 있어서 개념을 제대로 잡지 못하면 SVN수준으로

밖에 사용을 못한다. SVN 처럼 TortoiseGIT 이나 SourceTree 같은 GUI기반의 툴이 있긴 하지만 제대로 활용

하려면 콘솔로 이용 하는게 좋은것 같다. 일단 가장 안전한것 같다. 각 버전 관리툴의 장점을 모아 놓은것

같다. 대부분 커맨드가 로컬에서 이루어 지기 때문에 내가 무언가 잘못해도 서버에 피해 없이 내 로컬만

날리면 된다. 그리고 좀 더 자세히 알게 되면 구지 날릴 필요도 없다. push만 조심 하면 문제 될것도 없다

거기다 각 저장소 들이 전부 저장소를 가지고 있기 때문에 서버에 문제가 생긴다 해도 복구가 쉽다.

인증 방식이 다양해서 보안도 다른툴 보다 나은듯 하다. Git과 SVN의 차이점이 궁금해서 좀 찾아 보니

git은 빠르다는 장점이 있는듯 하다 확실히 branch의 활용 빈도가 높다. SVN은 branch를 따서 이동 할때

소스 전체가 왔다 갔다 하는 개념이라 나도 전에 잘못 쓰다가 소스가 꼬인적이 여럿 있었지만 git은 굉장히

빠르게 전환도 되고 합치기도 쉽다. SVN을 써본지가 오래 되서 자세하게 이야기 할 수 없지만 체감상으로도

git이 익숙해 지면 강력하고 편하다. 어차피 git도 주로 자주 쓰는 명령어만 쓰게 되니 기본 명령만 익혀서 쓰고

Progit 이라는 책이나 git 사이트에서 기능들 쭉 보다가 이거 활용하면 좋겠는데? 싶은게 있으면 google에서

그 명령어에 대해 검색해서 누가 어떤식으로 활용했는지 좀 알아보고 접목해 보다 보면 나날히 빨라지는

개발속도를 체험할듯 하다.

나도 아직 익히는중!


아래는 틈나는 대로 업뎃중! 그냥 종종 쓰는거 모아 놓았는데 나중에 양이 많아지면 따로 포스팅 해야지

Git global setup:

git config --global user.name "이름" git config --global user.email "이메일"

Create Repository(내부 저장소 생성 후 원격 저장소와 연결)

mkdir <폴더> cd <폴더> git init touch README git add README git commit -m 'first commit' git remote add origin git@<주소>:<git이름>.git git push -u origin master

Existing Git Repo?na (솔직히 이건 왜 내가 메모해 놨는지 모르겠음 내용보니 repo 를써보고 싶었던거 같음)

cd existing_git_repo
git remote add origin git@<주소>:<git이름>.git
git push -u origin master

Git Clone
git clone git@<주소>:<git이름>.git

GIT tag
git tag -a <tag명> -m "코맨트"
git remote
git push <remote repository> <tag명>


'프로그래밍 > Git(버전관리)' 카테고리의 다른 글

[GIt] 무료 git 사이트 이용  (0) 2014.09.21

[GIt] 무료 git 사이트 이용

https://bitbucket.org/





소규모 개발일 경우 무료로 사용할 수 있는 git 사이트

아무래도 소스 버전 관리 아마 현재 나온 버전 관리툴은 상당수 사용해 본것 같은데

SVN , Source Safe, Perforce, Git등


사용하기 가장 편했던 툴은 아무래도 Subvision(SVN) 윈도우용 툴도 잘 돼 있는 편이고 사용하기가 간편하다

언제나 프로젝트를 진행하다 보면 회사 이직도 자주 하다 보니 다양하게 버전 관리툴을 사용하다가 결국

Git 까지 사용할 수 밖에 없었고 공교롭게 이번 업무는 개발쪽이 아닌 Git 을 관리 하는 업무를 맏았다.


프로젝트 시작전 Git에 대한 공부를 하다 보니 생각보다 뛰어나고 강력하여 Git에 빠져 들게 되었는데

개인적으로 Git을 제대로 사용하려면(아직도 멀었지만) 요즘 잘 나오는 GUI툴을 사용 하는게 아닌 직접

명령어를 사용하면서 쓰는게 가장 좋은것 같다.


그런 의미에서 소규모로 프로젝트를 진행할때 Git은 서버 구축이 비교적 까다로운 편인데 무료로 호스팅

해주는 사이트가 있어서 사용하고 있다.


개인적으론 프로젝트라기 보다 개인적은 공부나 취미로 작업한 학습코드? 등을 저장 하고 Git 연습을 하는

식으로 활용 중이다.


기존에 Git 사용 할때는 git clone, git commit, git push, git pull, git diff, git status 기껏해야

이정도만 활용했는데 이거만 가지고는 git을 썻다기 보다는 git을 svn 쓰듯이 썻다. -_-;

'프로그래밍 > Git(버전관리)' 카테고리의 다른 글

Git 에 대해  (0) 2014.09.21

개발툴 소개

프로그래밍/웹개발 2014. 9. 21. 17:31

웹 개발툴

http://brackets.io/



오늘 급 웹개발을 다시 해 보고 싶어서(취미로) 

웹 서핑중 발견한 녀석 Adobe 사에서 만들었다는데 한번 써 보고 괜찮으면 계속 쓰고

난 기본적으로 안드로이드 개발자라 이클립스가 가장 익숙하고 이클립스에서도 에드온을 설치하면

웹 개발이 쉽지만 기본적으로 무겁고 지겹기도 하고 다른 뭔가 전용적인 툴을 사용해 보고 싶어

UI가 마음에 드는 녀석을 찾았다..


아직 설치한지 5분도 안돼서 기능이나 그런건 모르겠지만 일단 UI 깔끔하니 마음에 든다.

덩치 가볍다. 이클립스는 엄청 무거운데 이녀석은 굉장히 빠르네...

그리고 확장 기능이 있다고 어디서 본거 같다... 차차 사용해 보고 여기에 정리해야지


솔라리스11 GCC-3 설치

프로그래밍/Solaris 2013. 2. 6. 15:12

# pkg install gcc-3

알아서 다운로드 하고 설치 한다.


괜히 솔라리스11 용으로 다운로드 받으려고

홈페이지 기웃 거렸네 영어도 안 되는데...

'프로그래밍 > Solaris' 카테고리의 다른 글

솔라리스 11 FTP 설정  (0) 2013.01.20

솔라리스 11 FTP 설정

프로그래밍/Solaris 2013. 1. 20. 14:49

솔라리스 11의 경우 ftp및 telnet이 설치 되어 있지 않다.

따라서 설치해 줘야함..


# pkg install pkg://solaris/service/network/ftp

# pkg install pkg://solaris/network/ftp


telnet의 경우 뒤에 ftp부분만 telnet으로 고치면 된다.

나의 경우 telnet을 꼭 써야 하는 상황이고 어차피 공개하는 서버도 아니고

개인 학습 목적이기 때문에 telnet을 사용 하지만

보안에 문제가 있는 관계로 ssh만 활성화 시켜서 사용하길 바람...


웹서핑 하다보니 telnet daemon을 뭐 우회 어쩌구 하면서 인증 없이 root 접속이

가능하다나? -_-;


어차피 서버 관리 할 것도 아니니 난 무관!

'프로그래밍 > Solaris' 카테고리의 다른 글

솔라리스11 GCC-3 설치  (0) 2013.02.06

마지막 샘플 휴머노이드 로봇

프로그래밍/마인드스톰 2011. 6. 14. 23:28


드디어 마지막 예제인 휴머노이드 로봇까지 제작 했다.
 
사실 완성은 어제 했지만 완성된 시간이 너무 늦어서 그냥 자고 오늘 포스팅 한다.


이 녀석이 재미 있는건
단 3개의 모터로 여러가지 동작을 한다는 거다.
 

모터 총 3개중 2개는 다리에 부착 하여 걷는데 이용하며 등쪽에 부착된 단 하나의
모터로 고개(사실 어깨)와 손이 움직인다.

원리를 알고 나면 간단하지만.. 한쪽으로 돌리면 한쪽손이 열리고 다른쪽으로 돌리면
다른쪽 손이 열리는 구조지만...

적은 자원을 가지고 효율적으로 만든것 같다..
이녀석의 기능은 일단 가만히 대기하고 있다가. 초음파 센서부분에 뭔가 장애물이 보이면
걸어 오기 시작한다.

일정 거리인지 목표물 거리 측정한 뒤에 일정 거리 이내로 다가오면 멈추는건지 일단 멈춘다.

그 뒤에 컬러센서 있는 부분에 색이 있는 구슬을 가져다 놓으면 색상을 구분해 낸다.




귀엽게도 녹색을 쥐어주면 신나게 춤을 춘다...

예제는 다 해 봤고... 이제 남은건 응용뿐...

사실 어제 안드로이드 스마트폰을 이용해서 NXT에 접속해서 소리 내는것 까지 해 봤고 오늘은 안드로이드로 모터 돌리는 것과 안드로이드에 조종기를 만드는것 까지 해 봤다.

모터 돌리는 부분에서 돌아가는 동안 아무 동작을 못해서 일단 이거 저거 연구하는데 까지 시간이 걸릴듯 하다 예제야 원래 만들어져 있는것 조립만 하고 기본 프로그램 돌리면 되니 하루씩 밖에 시간이 안 걸렸지만 이번엔 내가 직접 설계하고 조립한후 프로그래밍도 직접 해야 하니 시간이 꽤 걸릴듯 하다.

일단 목표는 간단한 RC카 만드는게 목표다 전진 후진 좌회전 우회전 일단 이게 목표다.

대강 코드를 들여다 보니 모터 속도 설정 하고 이것 저것 다 되는듯 하다.
블루투스를 이용해서 NXT에 접속한후 자동차 조종이라... 블루투스 방식이라 지원 거리가
10미터 내외 밖에 안 되지만 어차피 밖에서 돌릴것도 아니고 스마트폰으로 뭔가 조종이 된다는 사실이 재미있을듯 하다.

안드로이드 개발자지만 블루투스나 이것 저것 안 해 본부분 투성이고 공부해서 구현해야할 내용들 뿐이지만 의욕이 생긴다
 
 

'프로그래밍 > 마인드스톰' 카테고리의 다른 글

컬러센서를 이용한 구슬 색 구분  (0) 2011.06.12
악어 로봇 샘플 구동  (0) 2011.06.12
개발 진행 상황  (0) 2011.06.12
오늘 만들어본 샘플 로봇  (0) 2011.06.09
레고 마인드스톰 시작!  (0) 2011.06.08

컬러센서를 이용한 구슬 색 구분

프로그래밍/마인드스톰 2011. 6. 12. 23:13

컬러센서를 이용해서 구슬 색 구분하여 동작하는 샘플..
설명할 내용도 적고  사진도 한장 밖에 없지만


역시 지금까지중 가장 많은 리소스들이 들어갔고 제작 시간도
다소 걸렸다..


이제 남은건 휴머노이드 로봇 뿐인듯 그거 까지만 만들고 이제 응용 마인드 스톰의 길로
개발 환경도 구축한듯 하지만 실제로 구축 됐는지는 모르겠다 ㅋㅋㅋ

 


위에 있는 컬러센서로 공의 색을 구분하여 필요한 칸에 넣는 프로그램이지만
녹색을 잘 구분해 내지 못한다...

뭐 그거야 프로그램상 미세조정이 하드웨어에 맞춰 소프트웨어에서 조정해 줘야 하지만 역시 샘플인데다 뭐 되는지 안 되는지 모르겠지만 기본적으로 있는 프로그램에선 안되지 않나 싶다.. 빨리 직접 개발 하고 싶다~ 하지만 무엇보다 급하게 하는건 금물!
천천히 동작 하나하나 이런 동작을 하기 위해 블록을 어떻게 사용했는지 천천히 보고 시작해도 늦지 않는다.

난 프로그래머지 하드웨어 기술자가 아니니까~ ㅎㅎ 


이녀석은 색상 구분해 내고 던져(?) 버린다 -_-;
씨잘데기 없이 던져 버려서 공 찾기 애매 하다 난 특정색만 던지고 다른색은 안하고 하는줄 알았더니 색상 구분하고 던지고 색상 구분 실패 하면 안 던지고 그러네 -_-;;

이제 남은건 휴모노이드 한녀석! 그녀석도 규모 보아하니 시간 꽤나 투자 할듯 하다...
이미 주말이 끝나 버려 아마 평일에 조금씩 만들어야 하지 않을까 싶다.
 

'프로그래밍 > 마인드스톰' 카테고리의 다른 글

마지막 샘플 휴머노이드 로봇  (0) 2011.06.14
악어 로봇 샘플 구동  (0) 2011.06.12
개발 진행 상황  (0) 2011.06.12
오늘 만들어본 샘플 로봇  (0) 2011.06.09
레고 마인드스톰 시작!  (0) 2011.06.08

악어 로봇 샘플 구동

프로그래밍/마인드스톰 2011. 6. 12. 12:44

어제 만들어서 돌려본 악어 로봇
이녀석도 참 재밌는 놈이었다.

그냥 실행 시키면 가만히 있다. 헌데 초음파 센서에 뭔가 잡히면 갑자기 돌격한다.
그리고 근처에 어떠한 물체가 있다면 입을 열었다 닫았다 하면서 공격 한다

우리집 강아지 있는데서 돌려 봤더니 무서운지 막 도망다닌다 ㅋㅋㅋ

 
요번 녀석은 제법 재료가 많이 들어 갔다.
허허 이 녀석이 이 정도면 휴머노이드는 얼마나 많이 들어 갈까?

만드는 내내 가가토이에서 리소스 상자 주문해 놨는데 이게 송장 번호도 안 알려주고 결국 어제 오지도 않았다 기본 봉지가 찢어져서 막 줄줄 새고 지저분 하니 짜증만 난다 -_-

리소스 상자가 와야 뭐 제작할때 깔끔하게 제작하지 제길


이녀석 어머니 가방 공격하고 그런다 ㅋㅋㅋ
 

개발 진행 상황

프로그래밍/마인드스톰 2011. 6. 12. 12:27


마인드스톰을 개발하기로 마음 먹고 어차피 취미생활이니 올인 하지 않기로 결심했다.
쉴때 게임도 좀 하고 웹서핑도 하고...

뭐 일단 구매는 했으니 테스트를위해 센서 전부 작동시켜 보고 리소스 전부 다 있는지
세봐야 하지만 뭐 한두개도 아니고 귀찮기도 하고 그냥 예제 조립 다 해 보고 부품 부족
하지 않으면 되지뭐 라는 생각으로 진행 했다..

이런 저런 예제 만들고 아직 휴머노이드 까지 만들지 않은상태에서 웹서핑중에
마인드 스톰을 제어하기 위해 두가지 방법이 있다는걸 발견했다. 

http://folog.egloos.com/1296765
 참고 URL

1. NXC(RobotC)든 NXJ(Lejos)든 직접 NXT 디바이스에 펌웨어를 넣고 그 뒤에 작업한          프로그램을 넣어서 구동

2. iCommand 를 이용하여 외부(PC,스마트폰)을 블루투스를 이용하여 행동 커멘드를 직접     전송하는 방법 

그중 두번째 방법이 상당히 매력적으로 보였다. 사실 내가 하려던 방법도 안드로이드폰으로직접 조종할수 있는 로직을 만들고 싶었으니..

뭐 자세히 이야기 하자면 NXT 디바이스는 그냥 컨트롤 머신 실제 데이터 처리는 안드로이드폰 개념으로 작업 하고 싶었다.

그래서 테스트 삼아 iCommand 라이브러리를 안드로이드 프로젝트에 넣어서 샘플 삼아 구동 시켜 보았으나 왠걸 Sorry 팝업 발생 -_-;

젠장 iCommand 라이브러리가 자바 라이브러리라 안드로이드에서 호환이 안되나 보다.
뭐 어차피 iCommand가 Open 소스인것 같으니 포팅을 해야 하나?

아우 뭐 하나 하려고 하니 할게 막 늘어나네 귀찮게 -_-;;

뭐 일단 목표를 정리해 보자면
1. 기본 샘플로 제공되는 예제 구동
2. 안드로이드로 제어 하는 리모컨 컨트롤 제작
3. 안드로이드 G센서를 이용한 RC카
4. 안드로이드 제어 프로그램의 업그레이드로 인한 다양한 행동 패턴 컨트롤
5. 안드로이드와 NXT를 이용한 참신한 머신? <- 방향도 못잡음 -_-;

뭐 어케든 되겠지 ㅋㅋ

----2014-09-21---

헐... 예전에 이런 고민이 있었구나.. 정말 마지막 문제로 어떻게든 돼버렸다 ㅋㅋㅋ

어떻게 했는진 작성 안 해 놔서 모르겠지만 지금은 안드로이드 폰으로 작동 잘 한다 ㅋ

틈틈히 여기에 적어 놓을걸 뭐 다시 한다 해도 못하진 않을거 같긴 하지만 뭐 아마 저땐 자바 다룬지

얼마 안 돼서 환경 문제 였을듯 하다. 그땐 환경 설정에 미숙하던 때라..


오늘 만들어본 샘플 로봇


어제 정리 할때 전부다 분해해 버린 관계로 다시 어제 만들었던 기본 로봇부터 시작해서
오늘은 구슬 발사 하는 샘플 로봇을 만들어 봤다...

뭐 샘플이래바야 얼마 안 걸리긴 하지만 회사에서 업무후 남는 여가시간만 가지고 하기에는
 그 시간도 좀 아쉽고 부족하기만 하다..


여튼 오늘은 컬러센서도 붙여보고 회사에서 남는시간에 틈틈히 마인드스톰 프로그래밍에 관한 정보를 찾는중 RobotC와 Lejos 인가? 하는 자바 기반으로 하는 방식 두가지가 있는듯 하다.

하지만 RobotC는 상용프로그램이라 구매 해야 하는것 같고 그냥 leios를 이용해야 겠다.
어차피 안드로이드 개발자라 자바가 편하긴 하지만...

불과 얼마전 까지만해도 단말 개발자라 C언어가 편했는데 이제 자바에 완전 익숙해져
버린것 같다.




놀고 있던 노트북으로 블루투스 연결해서 레고 인스톨 CD에 있던 기본 프로그램으로 샘플
프로그램을 올려 봤다. 어차피 난 개발자라 그림으로 돼 있는 프로그램이 순서도 보기 보다
더 헷갈리기에 그냥 확인도 안하고 올려 봤는데 뭐 대강 색상 센서로 구분해서 발사 하는것 같다.


항상 마인드스톰 동영상 볼때 저 구슬 발사하는 동작이 궁금했는데 의외로 간단했다 앞부분이 공을 꽉 잡고 있고 뒤에서 핀으로 밀어서 발사하는 구조다 -_-;;



공 잃어버릴뻔 -_-; 그냥 막 돌다가 아무데나 발사해 버려서 급하게 껐다 -_-;


샘플을 보다 보니까 거기서 초음파센서도 달길래 가장 마지막꺼만 한번 더 달아 봤다.
이녀석도 어찌 돌아가는지 분석은 패스 했지만 대강 뭐가 어디 있는지 확인한 다음에 색상센서로 발사 하는것 같긴 하다.


공 잃어버릴뻔 해서 이녀석 돌릴때는 공 빼고 돌려 봤다 어차피 동작은 공 없어도 잘 하니까



막 소리도 내네 신기한놈...
이녀석 중간에 내 쪽으로 돌려 놨더니 조금 움직일때마다 옆으로 조금 움직여서 날 정확히
조준한다 -_-;;; 공 넣어 놨으면 꽤나 당황했을듯...

그나저나 유투브 동영상 왜이리 느리냐 -_-;
 

'프로그래밍 > 마인드스톰' 카테고리의 다른 글

마지막 샘플 휴머노이드 로봇  (0) 2011.06.14
컬러센서를 이용한 구슬 색 구분  (0) 2011.06.12
악어 로봇 샘플 구동  (0) 2011.06.12
개발 진행 상황  (0) 2011.06.12
레고 마인드스톰 시작!  (0) 2011.06.08