J TEAM 보고서 - LeeHyangin/team-J GitHub Wiki

구성원: 이향인, 유혜림, 박진연, 박상희

1) Git/Github PR로 이름쓰기 실습

/// 깃허브에서 조직 생성후 시작 ///
$cd git
$mkdir git-training
$cd git training
$git init
$touch README
//(touch는 빈파일 만드는 명령어) 
//오류: nothing added to commit but untracked files present (use "git add" to track)
$git remote add origin https://github.com/D-oss-J/team-J.git
$git push origin master
$notepad README//이름바꾸기
$cat README//이름확인
$git add README
$git commit –m “first name”
$git push origin develop
//오류: failed to push some refs to 'https://github.com/D-oss-J/team-J.git'
//해결방법
Git remote –v를 이용하여 brach를 확인후 
/// 다른 pull request 올리는 과정 ///
$ cd git
$ git clone https://github.com/RyuHeaRim/team-J.git
$ cd teamJ
$ notepad ReadMe
$ cat README
$ git add README
$ git commit -m "second name"
$ git push
$ git checkout -b develop
$ mkdir hearim; cd hearim
$ git add README
$ git commit -sm "test pull request"
$ git push origin develop

문제 발생이유(머지할떄 충돌발생) : rebase 공동 프로젝트를 각자 fork받아서 작업을 하고 push를 하고 pull request하면 머지를 할 때 충돌

$ git add README
$ git rebse - -continue

$ git push origin master -f
//강제로 push 해서
//fork한 나의 github 저장소(프로젝트) 갱신 하기

reabase 다른 사람과 작업을 할때 rebase의 개념이 필요하다.

1)내가 작업한 내용 감고 베이스 갱신

git fetch upstream master

2)감았던거 복구하는 방식을 이용하면 된다.

git reabse upstream/master

후기

1)박상희

이름만 들어봐서 git이 뭔지 몰랐는데 실습을 통해 아주 조금 알게 된 것 같다. 하지만 이론과 실제는 다른듯 하다. 내가 하고싶은 일이 마음대로 되지않아 답답했다. 도중에 컴퓨터를 바꿔서 전날 잘 되던 pull-request도 안되고 문제가 많았다. pull-request는 결국 성공했지만 그 다음 merge 부터 rebase 등 아무것도 성공하지 못했다. 물어볼 사람도 없고 팀원끼리 노력은 했지만 해결하지 못해서 아쉽다. 참여를 통해 뭔가를 알아간다는 것에 의의를 두고싶다.

2)박진연

사실 SW캠프에 참여하고싶은 마음이 없었다. 역시나 강의 내용은 너무나 어려웠고 평소 학교 수업에서 접하던 것들과는 전혀 다른 것들이어서 생소했다. 그래서 실제 개발자님께서 사용하시는 툴이 무엇인지 알고 넘어가기만하자는 가벼운 마음 가짐으로 강의에 임했는데 그래도 어려운 것은 마찬가지였다. 그래도 개발자님께서 이론도 반복해서 설명해주시고 개발자님이 한 분 한 분의 학생들을 놓치지 않고 다 같이 실습해 볼 수 있도록 도와주셔서 중도에 포기하지 않을 수 있었다. 나름대로 이해했다고 생각했는데 실습에서 fork까지만 성공하고 merge는 아예 성공하지 못해서 아쉬웠다. pdf를 보고 복습도 해보고 인터넷에 검색해서 따라쳐보기도 했지만 사실 어디서부터 문제인지도 스스로가 모르는 것이 결국엔 개념 이해 자체가 부족했다고 생각된다. 그래도 이런 흔치 않은 기회를 통해 다양한 툴들과 linux를 경험해 볼 수 있었던 점은 정말 좋았던 것 같다. 다음에는 조금 더 시간적여유를 가지고 실습해볼 수 있는 기회가 있었으면 좋겠다.

3)이향인

git은 들어보기만 하고 처음 써보는데 직접 써보니 정말 어려웠다. 그래도 나중에 쓸일이 정말 많다고 생각하여 열심히 들으면서 수업을 들었다. 아쉽게도 merge와 rebase부분이 많이 부족하고 덜 했지만 앞으로 git사용할일이 있으니, 그때 다시 한번 사용해 보려고 한다. 앞으로 이런 실무에서 사용할 수 있는 내용이 더 많이 있으면 좋겠다.

4)유혜림

사실 무엇을 배우는지 정확히 모르는 상태에서 듣게 된 수업이라 많은 어려움이 있었다. 그리고 리눅스 프로그래밍은 배우지 않은 부분이라서 그런지 많이 막히고 막막했다. 개발자님께서 돌아다니면서 질문에 대답해주시고 따라하다보니 조금은 어려움이 나아졌다. 하지만 최종과제를 제대로 끝내지 못해서 아쉬웠다. merge하는 부분만 제대로 알고 싶었다. 다음에 배울기회가 있다면 더 제대로 배우고 싶다.

2) uftrace 프로젝트 소개

2-1. uftrace란?

c/c++프로그램을 추적하는 기능이 있다. record하고 replay하는 모델이다. uftrace의 장점은 소스코드의 수정 없이도 실행과정의 흐름을 즉시 확인할 수 있다. 예를 들어 재귀함수의 경우도 함수의 호출하는 과정을 모두 나타내 준다. 또한, 각 줄의 코드가 실행되는 시간도 볼 수 있어 어느부분에서 오래걸리는지 알아내 더 나은 방향으로 수정할 수 있다. 뿐만 아니라 각 함수의 인자와 return값과 몇 회 호출되었는지 까지 보여준다. 정리하자면 uftrace는 user+lib+kernel을 추적 할 수 있고 실행흐름을 보여주는 것이다.

2-2. virtualbox +ubuntu server 세팅법

virtualbox를 연 후 새로 만들기-> 이름설정, 종류:linux 버전: ubuntu(64bit) 설정->저장소->비어 있음 부분 ubuntu-18.04.1-live-server-amd64.iso로 설정->시작 (설치 진행...) <reboot후> 밑에 코드를 입력해서 필요한 패키지 파일이나 유틸리티 설치

$sudo apt-get install libelf-dev
$sudo dnf install elfutils-libelf-devel 
$git clone https://github.com/namhyung/uftrace .git
$cd uftrace 
$./configure
$make
$sudo make install 

2-3. uftrace 사용법

$ cd uftrace
$cd tests/ && ls s-*
$ ./runtest.py 090
$ gcc -pg -o fib s-fibonacci.c
$ uftrace ./fib  

3) uftrace osseu17 실습 설명(몇개case)

  1. 각각 함수의 시간(실행시간+대기시간)을 알수있음
$uftrace report -s self
  1. report처럼 줄줄이 보여주지않고 요약해서 보여줌
$ man uftrace graph
// graph로 보면 반복하는 함수들을 한번으로 볼수 있음
  1. 최근은 사용하지 않아도 어떤타입인지 알아서 바로바로 출력가능
$ cd uftrace.data.nmap_args/
$ uftrace replay -F sendConnectScanProbe -D 1 -A sendConnectScanProbe@arg3
  1. 대기 시간이 빠져서 report 결과의 함수들의 순위 변동이 생김
$ cd ../ && cd uftrace.data.nmap_sched/
$ uftrace report -s self
⚠️ **GitHub.com Fallback** ⚠️