티스토리 뷰

2021.1.4 01:20

 

2020.12.31 (수)

인공지능 학습을 위한 필수 교양 첫 번째 시간

 

<학습내용 키워드>

1. 협업은 뭘로 하면 좋을까? 협업툴에 대해 알아보자!

2. git은 무엇일까? 버전관리에 좋다던데...

3. github? 참 많이들 쓰던데 좋나?

4. 그래서 git, github 어떻게 쓰는데? 

5. jupyter notebook? 새로 나온 노트북인가?

6. 마크다운...이건 또 뭐야? 어렵지 않다고? 아..그래 해보자

 

 

1.협업은 뭘로 하면 좋을까? 협업툴에 대해 알아보자!

혼자가 아닌 다른 사람과 함께 효율적으로 일을 하려면 어떤 것이 필요할까?

바로 정리된 하나의 공간이 필요합니다!

언제든 헷갈릴 때 함께 보면서 표준을 정하고 진행 상황과 이슈들을 확인할 수 있는 공간!

 

바로 협업 툴!

 

다양한 툴이 있다.

 

1) 슬랙(slack)

AIFFEL(대전) slack

위 그림은 AIFFEL(대전) + AIFFEL(SAAC) 사용하는 slack 화면이다.

간단한 개념으로 네이버 카페같은 개념이다.

 

① 카페 하나(AIFFEL)를 만든다.

② 원하는 게시판(공지사항, 질문게시판 등)을 만든다. (인원별로 접근 제한을 둔다. 대전은 대전게시판 이용 가능, SAAC게시판 이용 불가)

③ 작성한 글에 대해 반응(이모티콘)과 댓글 작성 가능(@를 통해 특정 사람을 태그해 소환할 수 있다!)

④ 특정 사람과 채팅 가능(Direct Message; DM)

 

네이버 카페와 다른 점은 구글 캘린더, 구글 드라이브, Github 등 다양한 프로그램과 연동해 개발 협업 시 유용하게 사용 가능!

 

 

2) 스윗(Swit)

광주 인공지능 사관학교 Swit

위 그림은 2020년 하반기에 참여했던 광주 인공지능 사관학교 Swit이다.

Swit도 Slack와 마찬가지로 다양하게 활용 가능한 협업 툴이다.

 

 

3) 노션(Notion)

AIFFEL(대전) Notion

노션의 경우 혼자 또는 여러 명이 문서 작업을 할 때 큰 힘을 발휘한다.

표, 카드보드, 리스트 등 다양한 포멧을 편리하게 사용할 수 있도록 도와준다.

문서 작성이 메인이기 때문에 간혹 블로그나 포트폴리오로 사용하는 사람들도 있다.

 

 

4) 트렐로(Trello)

트렐로

출처: www.google.com/url?sa=i&url=https%3A%2F%2Fiamnot1ant.tistory.com%2F605&psig=AOvVaw0jZcwESenig6DHiImtRGTj&ust=1609771563049000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCOjXqMSAgO4CFQAAAAAdAAAAABAD

 

트렐로의 경우는 업무 진행 현황을 시각화로 표현해 협업 시 직관적으로 알 수 있게 해주는 장점이 있다.

 

 

5) 행아웃(HangOut) / 줌(Zoom) / 구글 밋(google meet)

구글 밋

출처: www.google.com/url?sa=i&url=https%3A%2F%2Fordinius.tistory.com%2F486&psig=AOvVaw2xHJtMN_PS3DbtWmFSUdRi&ust=1609771678418000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCMC48PuAgO4CFQAAAAAdAAAAABAP

행아웃, 줌, 구글 밋 모두 화상 회의 플랫폼이다.

비대면 회의가 증가하고 있는 추세에 가장 필요한 플랫폼이 아닐까 싶다.

 

>> 협업 툴의 경우 다양하게 활용해보고 장단점을 파악해 적절하게 사용할 것!

 

 

2. git은 무엇일까? 버전관리에 좋다던데...

git을 간단하게 정의하면 다음과 같다.

 

"버전 관리를 도와주는 가장 강력한 시스템"

 

예를 들어 소설을 작성하고 있다고 생각해보자.

소설을 쓰다 보니 방향이 여러 개가 생각이 난다.

그러면 일단 저장을 해놓는다. 언제라도 지금의 버전으로 돌아와서 새로운 방향으로 쓸 수 있게.(ver.1)

그러다 첫 번째 방향으로 글을 적다가 뭔가 마음에 안 든다. 일단 저장을 한다.(ver.2)

그럼 우리는 ver.1의 글을 불러와 새로운 방향으로 소설을 적으면 된다.

 

이처럼 버전 관리를 통해 이전 내용에 쉽게 접근할 수 있는 것!

 

 

3. github? 참 많이들 쓰던데 좋나?

그럼 github는 무엇인가?

 

"git으로 저장한 내용들을 다른 사람과 공유해 볼 수 있는 것!"

 

git + hub라는 단어에서 알 수 있듯이 내가 제작한 git 버전을 웹에 올려 다른 사람들과 공유할 수 있는 공간을 말한다.

github에서도 이전 버전에 대한 접근을 통해 차이점을 확인할 수 있다.

 

 

4. 그래서 git, github 어떻게 쓰는데?

 1) git 설치

  ① 터미널 열기 (ctrl + alt + t)

  ② 설치 코드 입력

$ sudo apt-get install git

  ③ 버전 확인(설치가 잘 되었는지 확인)

$ git --version

 

 2)  github 계정 만들기

 - github 홈페이지에서 계정 생성.

 

 3) 로컬 git에 github 계정 등록

 - 로컬 즉 자신의 컴퓨터와 github를 연결하는 것이다. 연결을 하지 않으면 혼자만 작업하게 된다.

 - 터미널에 아래 명령어를 입력한다.

$ git config --global user.email "my-email@gmail.com"
$ git config --global user.name "my-username"

""안의 내용은 본인의 이메일과 본인의 계정이름을 적어야 한다.

 

 4) git 시작하기

 ① 작업할 디렉토리 생성

$ mkdir project # 프로젝트 이름
$ cd project

② git init으로 버전 관리

$ git init

> init은 initialization의 약자이다. project라는 폴더를 버전 관리하겠다는 의미이다. 또한 앞으로 project하위 파일/폴더 모두 관리된다는 의미이다.

 

 5) git으로 파일 버전 관리

 우리는 README.md라는 파일을 만들어 github에 올릴 예정! (.md 확장자는 마크다운 형식으로 README.md파일은 주로 github에서 새로운 레포지토리를 만들었을 때 작성하는 것. 프로젝트의 간략한 소개를 적는 곳으로 프로젝트의 대문 개념이다. 좋은 README.md를 작성할 수록 프로젝트를 잘 설명할 수 있다!)

 

  ① README.md 생성

$ echo "# AIFFEL 생성" >> README.md

""안의 내용은 READMD.md 내부에 적힐 내용으로 원하는 내용을 적으면 된다. 위 명령어는 READMD.md라는 파일을 만드는 동시에 내부에 "# AIFFEL 생성"이라는 문장을 입력하는 것이다.

 

  ② 생성한 git에 버전 관리할 파일 추가 하기 (add)

$ git add README.md

 

  ③ 추가하고 확정하기 (commit)

$ git commit -m “new readme file”

-m은 메세지를 적는다는 옵션이며 ""안의 내용은 변경 내용에 대해 사용자가 원하는 대로 적을 수 있다.

예를 들어 "버전3_이미지 추가"등으로 새로운 버전에 대한 내용을 적을 수 있다.

 

★ add와 commit의 차이?

git에는 세 가지 저장소가 있는데 작업폴더 -> 인덱스 -> 저장소
add 명령어를 사용하면 작업폴더에서 인덱스로 이동한다. 최종 장소인 저장소를 가기 전 저장되는 공간이다.
add를 하고 나서 수정한 후 또 add를 할 수 있다.
인덱스에 있는 파일을 commit를 통해 저장소로 이동해 확정시킨다.

 

 

 6) github 올리기

  드디어 github에 올릴 차례!

 그전에 할 일이 있다. github 계정만 만들면 되는 것이 아니다.

 프로젝트를 진행할 레포지토리를 만들어야 한다. 방을 하나 만든다는 개념으로 생각하면 된다.

 github 홈페이지에서 생성하면 된다.

 

  ① 레포지토리 연결

$ git remote add origin https://github.com/Shinest-changwon/AIFFEL (레포지토리주소)

위 명령어를 터미널에 입력하면 github 레포지토리와 로컬이 연결된다.

remote는 원격

add는 추가

>> 원격으로 제어할 무언가를 추가하겠다.

origin은 닉네임이다. 추후에는 branch를 추가/변경하면 바꿔야하지만 기본은 origin이다.

>> 즉 원격으로 지정한 레포지토리를 어떤 이름으로 제어하겠다 라는 의미가 된다.

 

  ② github에 올리기

$ git push origin master

위 명령어를 입력하면 드디어!! 로컬에 있는 git이 github에 올라간다.

즉, master라는 브랜치(레포지토리 내부에 있는 또 다른 공간이며 기본은 master이다.)에 push한다는 의미!

 

★ 브랜치(branch)

협업 시 독립된 공간에서 작업해야 할 상황에 필요
각 브랜치는 서로에게 영향을 주지 않는다.

 

 7) github에 있는 걸 가져오기

  - 만약 두 사람이 협업을 한다고 할 때 A가 github에 'git push origin master'명령어를 통해 자료를 웹에 올렸다고 해보자. B는 어떻게 그 파일들을 쉽게 가져올 수 있을까?

 

① 작업할 디렉토리 이동

$ cd project

cd 명령어를 통해 작업할 디렉토리로 이동한다.

 

② 원격에 있는 파일 가져오기

$ git clone https://github.com/Shinest-changwon/AIFFEL (레포지토리주소)

clone(복제)라는 명령어를 통해 하나의 레포지토리를 원하는 디렉토리에 그대로 가져올 수 있다.

(기본으로 설정된 브랜치에 있는 파일들을 가져온다)

즉, A가 작성한 파일과 버전과 B가 보유한 파일과 버전이 똑같아지는 것이다!

또한 수정한 후 'add', 'commit' ,'push'를 통해 github에 올릴 수 있다!

 

 8) 원격과 로컬을 맞춰주기

 위의 경우 B가 A가 작성한 내용을 clone을 통해 내려받고 새로운 버전을 만들어 github에 올렸다고 해보자.

 그러면 A는 새로운 버전을 자신의 로컬에 받을 필요가 있다. github에서 확인 가능하지만 A가 코드를 수정하려면 B가 바꾼 내용을 내려받아야한다. 이걸 사람이 하나하나 하기엔 너무 힘들다!

$ git pull origin master

A는 위 명령어를 입력해 B가 업데이트한 내용을 A의 로컬에 내려받을 수 있다. 물론 clone을 통해 새로운 디렉토리에 내려받는 것도 가능하다.

즉, pull(당기다)이란 다른 사람이 올린 데이터를 당겨와 내 로컬에 놓는다는 개념이다.

(만약 A가 pull을 하지 않고 새로운 내용을 수정해 'git push origin master'을 실행하면 되지 않는다. 왜냐면 A의 로컬은 버전1이고 github에는 B가 수정한 버전2가 올라가 있기 때문, A는 버전2로 pull을 하고 수정을 진행해야 한다. ※같은 브랜치에 올릴 경우)

 

★ git 명령어 정리

 < 로컬>

 - git init: git으로 버전 관리할 디렉토리에서 입력하면 .git이라는 파일 생성

 - git add (파일명): 버전관리할 파일을 추가한다. (add 뒤에 .을 쓰면 모든 파일이 추가된다.)

 - git commit -m "메세지": 추가한 파일들을 확정짓는다.

 - git status: git의 현황을 알 수 있다. 수정된 파일이 있는데 아직 추가 및 커밋이 되지 않는 등을 확인할 수 있다.

 

 <원격>

 - git remote add origin (레포지토리주소): 원격(github)와 로컬을 연결해주는 명령어

 - git push origin master: commit된 git을 원격에 올리는 명령어

 - git clone (레포지토리주소): 원하는 레포지토리 데이터를 현재 디렉토리에 내려받는 명령어

 - git pull origin master: 협업 시 원격에 있는 내용이 최신이라면 로컬에 내려받는 명령어(다른 사람이 원격에 커밋을 했다면 pull을 먼저하고 수정한 뒤 push를 해야 한다.)

 

 

5. jupyter notebook? 새로 나온 노트북인가?

데이터 분석계의 워드라고 불리는 주피터 노트북!

이름 때문에 프로그램이 아닌 하드웨어 느낌이 더 강하다.

데이터 클리닝과 변형, 통계 모델링, 머신러닝 등 데이터 분석을 편리하게 할 수 있도록 최적화 되어있는 오픈소스 웹 어플리케이션입니다.

(최근에는 교육 목적으로 사용하는 경우가 많습니다. 코드 한 문장을 바로 실행해 출력값을 보여줄 수 있기 때문이다.)

 

 1) 설치하기

$ conda install jupyter notebook

 

 2) 실행하기

$ conda create -n datascience
$ conda activate datascience
(datascience) $ jupyter notebook

위 명령어를 입력하면 웹 상에서 주피터 노트북이 실행된다.

 

 3) 노트북 생성 (하나의 파일)

우측 상단에 New를 클릭하면 Python3, aiffel, datascience 등이 보인다. 이는 conda에 설치된 가상환경 이름이다.

현재 aiffel, datascience 등의 가상환경이 설치되어 보여지는 것이다.

 

선택한 환경에 따라 우측 상단에서 확인할 수 있다.

우측 상단에 'Python3' 확인 가능

만약 가상환경에 대해 세팅하고 싶다면

(datascience) $ python -m ipykernel install --user --name datascience --display-name "datascience"

python -m ipykernel install --user --name 가상환경이름 --display-name "보여지기원하는가상환경이름" 형식으로 보여지고 싶은 이름으로 설정 가능하다.

 

 

 4) 노트북 기본에 대해

출처: AIFFEL(대전) LMS

기본적으로 초록색을 때는 입력할 수 있는 상태이며 esc키를 통해 명령 모드로 변경 가능하다. 명령 모드일 때 다양한 단축키가 적용된다.

 

★ 노트북 기본 명령어

 - 마크다운 셀로 변환(기본은 코드 셀): esc + m

 - 코드 셀로 변환: esc + y

 - 셀의 실행: shift + enter

 - 셀 삭제 취소: esc + x 또는 esc + dd

 - 위에 셀 추가: esc + a

 - 아래에 셀 추가: esc + b

- 도움말: esc + h

 

>> esc를 눌러 명령모드로 진입 후 단축키를 입력하는 것이 포인트!

 

 

6. 마크다운...이건 또 뭐야? 어렵지 않다고? 아..그래 해보자

출처: AIFFEL(대전) LMS

간단하게 말하면 위와 같이 어떤 명령어를 통해 문서를 작성할 수 있는 것!

 

*마크다운 장단점

장점
1. 간결하다.
2. 별도의 도구없이 작성가능하다.
3. 다양한 형태로 변환이 가능하다.
4. 텍스트(Text)로 저장되기 때문에 용량이 적어 보관이 용이하다.
5. 텍스트파일이기 때문에 버전관리시스템을 이용하여 변경이력을 관리할 수 있다.
6. 지원하는 프로그램과 플랫폼이 다양하다.

단점
1. 표준이 없다.
2. 표준이 없기 때문에 도구에 따라서 변환방식이나 생성물이 다르다.
3. 모든 HTML 마크업을 대신하지 못한다.

 

★ 마크다운 명령어

 - 제목: #을 이용해 크기를 조절 가능 (#이 늘어날수록 크기가 작아진다. 1~3개까지만 활용하는 것이 유용)

 

 - 목록, 리스트: '1.', '-', '*', '+' 등 활용

-,*,+ 은 동일한 결과이기 섞어 사용가능

 

- 구분선: '---'

 

- 링크 달기: [보여줄 이름](URL)

 - 볼드체, 이태리체, 취소선

*,_ 하나만 문장 앞뒤로 입력하면 기울어짐

두개씩 입력하면 볼드체(두꺼움)

~~ 두개씩 입력하면 취소선

 

 - 코드블럭

 - 줄바꿈하기: enter로는 되지 않는다. 문장 마지막에서 3칸 이상을 띄어쓰기해야한다.

 

 - 이미지 삽입하기

<img src="/path/to/img.jpg" width="450px" height="300px"></img><br/>

경로를 삽입해주면 표현 가능하다.

 

 

§마치며

LMS 2장은 협업 툴, git과 github 사용법, 주피터 노트북, 마크다운에 대해 배웠다. 포크와 나이프, 숟가락, 젓가락을 쓰는 법과 관리하는 방법에 대해 배운 느낌이다. 도구를 사용하는 법을 알아야 다양하게 사용할 수 있으니...! 다음 LMS도 화이팅

LIST
댓글