SlideShare una empresa de Scribd logo
1 de 57
Descargar para leer sin conexión
Visual Studio 사용 설명서
- 고급 -
Lusain Kim
PRESENT BY WARP, 2016 1
목차
• 글꼴 및 색
바로 가기
• 경로 설정
바로 가기
• 경고 수준
바로 가기
• 리펙터링 도구
바로 가기
• 참조 프로젝트
바로 가기
• 소스 제어
바로 가기
INDEX
PRESENT BY WARP, 2016 2
글꼴 및 색
PRESENT BY WARP, 2016 3
폰트를 아무거나 쓰면 안 되는 이유
• 협업을 하는 두 개발자 A, B
• A 개발자는 '맑은 고딕', B 개발자는 'Arial' 폰트 사용 중
• A 가 코드를 보기 좋게 정렬해서 B 에게 전달
• B : ?????????
맑은 고딕 Arial
PRESENT BY WARP, 2016 4
고정 길이 글꼴을 써야하는 이유
•고정 길이 글꼴
하나의 글자가 차지하는 폭이 동일한 폰트
• A 개발자와 B 개발자가 다른 폰트를 사용하더라도 동일한 간격 보장
• 코드 정렬 유지
•코딩용 폰트
• 1, I, l, ㅣ,| (글꼴: 맑은 고딕)같은 구분하기 어려운 글자를 구분되게 만든 폰트
• D2Coding의 예 : 1, I, l, ㅣ,|
PRESENT BY WARP, 2016 5
추천하는 코딩용 폰트
• 제공 : 폰트 이름 순으로 기재
• Visual Studio : Consolas
• 네이버 개발자 센터(D2) : D2Coding, 나눔고딕코딩
• Windows : Courier New
• 참고 : http://ppss.kr/archives/66633
PRESENT BY WARP, 2016 6
색 지정
Visual Studio는 기본적으로 일정 단어에 색을 지정하여 가독성 지원
◦ 초기 색 설정이 된 항목 :
◦ VS2010 : 키워드, 사용자 형식, 문자열, define, 주석 등
◦ 사용자 형식 : class, struct, union, enum 객체
◦ VS2013 : 매개인자
◦ VS2015 : new/delete 연산자
◦ 구분이 필요한, 약간 애매한 항목들도 구분하여 색 지정이 가능
◦ 변수 / 전역 변수 / 지역 변수 / 필드(클래스 멤버 변수) / 비정적 멤버 변수
◦ 함수 / 멤버 함수 / 비정적 멤버 함수 / 템플릿 함수
PRESENT BY WARP, 2016 7
어느 게 보기 좋아요?
색 지정을 한 코드 색 지정을 하지 않은 코드
PRESENT BY WARP, 2016 8
어떻게 바꿔요?
도구 ▷ 옵션 ▷ 환경 ▷ 글꼴 및 색
PRESENT BY WARP, 2016 9
표시 항목에서 어떤 걸 바꿔야 하나요?
PRESENT BY WARP, 2016 10
표시 항목에서 어떤 걸 바꿔야 하나요?
PRESENT BY WARP, 2016 11
표시 항목에서 어떤 걸 바꿔야 하나요?
PRESENT BY WARP, 2016 12
경로 설정
PRESENT BY WARP, 2016 13
경로 설정의 필요성
• 외부 라이브러리를 사용할 때
• 파일 개수가 50개를 넘어갈 때
• 리소스 파일이 있을 때
이렇게 파일 관리하면 안돼요!
PRESENT BY WARP, 2016 14
절대 경로 vs 상대 경로
• 절대 경로 파일의 탐색 경로가 파일 시스템의 루트로부터 시작해 명시된 파일의 경로 이름
출처 | 네이버 지식백과
• 상대 경로 현재 작업 디렉터리로부터 찾아갈 파일에 이르는 경로
출처 | 네이버 지식백과
• Visual Studio에서 작업중이라면, 상대 경로의 현재 작업 디렉터리는 현재 프로젝트 파일이 있는 곳
• 예 : Proj 프로젝트에서 작업하고 있을 경우, 상대 경로는 Proj 프로젝트 파일(Proj.vcxproj)이 있는 곳
• 협업을 한다면 되도록 상대경로로 맞출 것
• C:Project... 로 경로를 통일하고 싶지 않으면.
PRESENT BY WARP, 2016 15
소스 파일을 정리하니 경로가 꼬여요!
• 파일이 많으면 용도별로 폴더를 나누는 것을 권장
• 폴더에 정리하면 이전처럼 파일에 바로 접근이 불가 (경로를 추가해야 함)
• Collision.h 파일을 참조하기 위해서는 EngineCollisionCollision.h 을 전부 입력해야 함
• 프로젝트 중반에 소스 파일을 정리하면 대참사 (파일 소스을(를) 열 수 없습니다. …)
PRESENT BY WARP, 2016 16
소스 파일을 정리하니 경로가 꼬여요!
• 경로를 명시하는 것도 좋지만, 미리 추가된 헤더 같은 경우 번거로울 수 있음
• 추가 디렉터리 경로를 설정하면 해당 디렉터리에서도 검색
• 모든 추가 디렉터리 경로에서 검색
• 예 : CollisionPathCollision.h 를 Collision.h 로만 접근하고 싶을 때
• 추가 디렉터리 경로 ▷ CollisionPath
• 모든 작업 경로에서 #include "Collision.h" 로 접근 가능
PRESENT BY WARP, 2016 17
포함 디렉터리 설정하기
• 설정 방법
1. [솔루션 탐색기] ▷ 프로젝트 우클릭 ▷ [속성] ▷ [구성 속성]
1. [모든 구성], [모든 플랫폼]으로 변경
2. [VC++ 디렉터리] ▷ [포함 디렉터리] ▷ [편집...]
3. [C/C++] ▷ [일반] ▷ [추가 포함 디렉터리] ▷ [편집...] … 추천
∵ 프로젝트가 기본적으로 포함하는 경로를 건들지 않음.
PRESENT BY WARP, 2016 18
Tip.
1. [편집…]을 사용할 것 : 경로를 임의로 수정하다가 프로젝트를 다시 설정할 수 있음
2. <다른 옵션> 일 경우에는 절대로 [편집]을 사용할 것!
악몽의 시작
• 출력 디렉토리 실제 파일이 출력되는 디렉토리
• 구성과 플랫폼에 따른 산출물을 구분할 필요가 없다면 하나의 폴더에서 관리할 수 있음
• 적절히 잘 설정하여 프로젝트 폴더 관리를 수월하게 하는 것이 필요
PRESENT BY WARP, 2016 19
경고 수준
PRESENT BY WARP, 2016 20
경고와 오류의 차이
• 오류Error 문법이 잘못되어 해석이 불가능한 경우
• 경고Warning 문법이 조금 이상하거나 추후 문제의 소지가 있지만 해석은 가능한 경우
PRESENT BY WARP, 2016 21
경고의 의미
1. 컴파일은 되지만 컴파일러 임의로 해석할 여지가 있는 구문이 있음
2. 논리 오류(Logic Error)의 원인이 될 법한 구문이 있음
PRESENT BY WARP, 2016 22
경고 수준Warning Level
◦ 경고는 레벨에 따라 엄격해짐
• Visual Studio의 기본 경고 수준은 W3
• 추가 정보 | https://msdn.microsoft.com/ko-kr/library/thxezb7y.aspx
W0 경고 없음
W1 심각한 경고 표시
W2 W1 + 조금 덜 심각한 경고 표시
W3 W2 + 프로덕션 목적으로 권장되는 기타 모든 경고 표시
W4 W3 + 정보를 알려주는 경고 표시 (권장)
PRESENT BY WARP, 2016 23
경고 수준 설정 방법
◦ 경고는 다음 위치에서 확인 가능:
◦ 프로젝트 속성 ▷ C/C++ ▷ 일반
PRESENT BY WARP, 2016 24
리펙터링 도구
PRESENT BY WARP, 2016 25
리펙터링Refactoring 이란?
• 소프트웨어 공학에서 결과의 변경 없이 코드의 구조를 재조정함을 뜻한다.
출처 | 위키백과
• 가독성 또는 유지보수의 편의 향상 목적
• Visual Studio에서는 리펙터링을 위한 도구 제공
• 이름 바꾸기 (Ctrl + R, Ctrl + R)
• 메서드 추출 (Ctrl + R, Ctrl + M)
• 선언/정의 만들기
• 정의 위치 이동
• 매개 변수 다시 정렬 (Ctrl + R, Ctrl + O)
PRESENT BY WARP, 2016 26
Visual Studio의 리펙터링 도구 사용하기
1. 텍스트 편집기에서 리펙터링 할 영역을 선택
2. 편집(E) ▷ 리펙터링(R) 에서 원하는 명령 선택
※선택 영역이 없을 경우 메뉴가 나타나지 않음
PRESENT BY WARP, 2016 27
이름 바꾸기
• 단축키 : Ctrl + R, Ctrl + R
• 사용방법
• 바꾸고 싶은 단어를 선택한다. 키워드 등, 바꿀 수 없는 단어는 기능하지 않는다.
• 기능
• 선택한 단어의 이름을 바꾼다.
• 선택한 단어가 특정 범위에 속한 경우 범위까지 같은 이름만 바꿔준다.
• ex) T 라는 클래스 안의 data라는 변수를 리펙터링 할 경우, T::data로 인식되는 이름만 바꾼다.
PRESENT BY WARP, 2016 28
이름 바꾸기 사용 화면
PRESENT BY WARP, 2016 29
메서드 추출
• 단축키 : Ctrl + R, Ctrl + M
• 사용방법
• 메서드(함수)로 추출할 영역을 선택한 뒤 사용한다.
• 원하는 함수명을 입력하면 된다.
• 기능
• 선택 영역이 함수로 분리된다.
• 만약 범위 밖의 값이 쓰였다면, 값의 이름을 인자로 준다.
• 컴파일러가 분리할 수 없다고 판단하면 기능하지 않는다.
PRESENT BY WARP, 2016 30
메서드 추출
PRESENT BY WARP, 2016 31
메서드 추출
PRESENT BY WARP, 2016 32
잠재적 수정 사항
• 잠재적 수정 사항이란?
• 함수가 선언만 되어 있고 실제 정의를 찾을 수 없는 경우
• 경고 오류 표시선(녹색 물결선)이 표시
• [Ctrl] + [.] 버튼을 눌러 빠른 작업 가능
PRESENT BY WARP, 2016 33
빠른 작업
• 빠른 작업이란?
• 선택한 함수에 대한 스텁(stub) 작업(선언/정의 만들기, 정의 위치 이동) 제안
• [Ctrl] + [.] 버튼을 눌러 빠른 작업 가능
• 선언/정의 만들기
• 적절한 위치에 정의를 만든다.
• 정의 위치 이동
• 선언이 없는 경우 : 해당 위치를 선언으로 바꾸고 정의 생성
• 선언과 정의가 모두 있는 경우 : 선언 위치에 정의
PRESENT BY WARP, 2016 34
매개변수 다시 정렬(서명 변경)
• 단축키 : Ctrl + R, Ctrl + O
• 사용방법
• 함수 이름을 선택한다.
• 기능
• 선택된 함수의 매개 인자를 관리하는 창 표시
• 추가 / 제거 / 변경 / 되돌리기 가능.
• 실험적 기능이기 때문에 버그가 꽤 존재
PRESENT BY WARP, 2016 35
참고 자료
• MSDN
• 전구를 사용하여 빠른 작업 수행 | https://msdn.microsoft.com/ko-kr/library/dn872466.aspx
• Visual Studio 2015에서 디버그 시작 | https://msdn.microsoft.com/ko-kr/library/dn986851.aspx
PRESENT BY WARP, 2016 36
참조 프로젝트
PRESENT BY WARP, 2016 37
참조 프로젝트란?
• 작업 프로젝트가 참조하는 프로젝트라는 의미로 참조 프로젝트라고 부름
• 목적
1. 소스 코드가 있는 라이브러리 프로젝트가 있고,
2. 디버깅 시 라이브러리 소스 코드에 접근하고 싶을 때
• 용도
• 프로젝트 독립적인 라이브러리를 사용할 때
• 각 기능을 모듈화 하여 컴파일 시간을 단축시키고 싶을 때
참조 프로젝트의 예
PRESENT BY WARP, 2016 38
참조 프로젝트를 만드는 방법
• 정적 라이브러리로 구현
• 솔루션에 새 프로젝트 추가(기존 프로젝트가 있을 경우 생략)
• Win32 프로젝트 ▷ 정적 라이브러리 로 프로젝트 생성
• 메인 프로젝트의 참조 아이콘 에서 참조 추가(R)... ▷ 참조 프로젝트 선택
• 메인 프로젝트의 속성에서 추가 포함 디렉터리에 참조 프로젝트의 프로젝트 디렉터리 추가
+ 되도록 상대경로로 설정
• 메인 프로젝트에서 호출할 참조 프로젝트의 헤더 파일 포함
• 시작 프로젝트는 항상 메인 프로젝트로 하면 자동적으로 종속된 모든 정적 라이브러리 우선 빌드
PRESENT BY WARP, 2016 39
효과
• 라이브러리 소스 코드에 미리 컴파일 된 헤더를 추가할 필요 없음
• 독립적인 라이브러리가 되었기 때문에 다른 프로젝트에서 사용 가능
• 모듈화 되었으므로 단위 테스트 가능
• 라이브러리를 수정할 경우 라이브러리만 다시 빌드하면 됨
PRESENT BY WARP, 2016 40
소스 제어
PRESENT BY WARP, 2016 41
사전 준비
• 설치 시 Visual Studio용 GitHub 확장 [타사] 체크
• 설치 후, 소스 제어를 원하는 프로젝트화면 우측
하단에 게시 버튼이 있으면 됨
※없을 경우 최신 버전으로 Visual Studio 재설치 권장
• 새 프로젝트를 만들 때 설정하기
• 새 Git 리포지토리 만들기(G) 체크
PRESENT BY WARP, 2016 42
게시하기
• 어디에 게시할 지 선택
• Visual Studio Team Services
• Microsoft에서 제공하는 무료 무제한 Git 리포지토리.
• Publish to GitHub
• GitHub에 원격 리포지토리를 생성하여 거기에 게시
• GitHub 계정 필요
• Private으로 설정할 경우, 비공개 리포지토리 생성 가능(유료)
+ GitHub 학생 지원 팩으로 사용 가능
• 게시하지 않으면 로컬 리포지토리로만 사용
• 타른 작업 공간과 동기화 작업 불가능
• 커밋 / 되돌리기 작업 수행 가능
PRESENT BY WARP, 2016 43
기본적인 사용 방법
• 소스 파일 옆에 아이콘이 표시됨
• 변경이 되지 않은 부분
• 변경이 된 부분
• 변경 사항이 있으면 다음 방식으로 커밋
• 솔루션 탐색기의 변경된 소스 파일을 우클릭 ▷ 소스제어
• 우측 하단에서 연필 부분을 클릭
• 팀 탐색기 ▷ 변경 내용
• 변경 시 커밋 내용을 반드시 작성
PRESENT BY WARP, 2016 44
한 번에 일부만 커밋하고 싶어요
• 팀 탐색기 ▷ 변경 내용 ▷ 커밋하고 싶은 항목 우클릭 ▷ 스테이징(S)
• 스테이징 된 항목만 커밋
• 변경 취소
• 해당 항목만 직전 커밋 내용으로 되돌아감
PRESENT BY WARP, 2016 45
변경 내역을 보고 싶어요
• 항목 우클릭 ▷ 기록 보기(H)
• 커밋 내역을 표시
• 커밋 ID, 만든 사람, 일자, 커밋 내용
• 더블 클릭: 해당 커밋 시점의 내용 열람 가능
PRESENT BY WARP, 2016 46
내가 뭘 바꾼 거지?
• 항목 우클릭 ▷ 수정되지 않은 항목과 비교(C)
• 좌측이 직전 커밋 파일, 우측이 현재 파일
• 빨간색 : 제거됨
• 초록색 : 추가됨
• 변경된 부분은 강조하여 표시됨
• 스크롤 바에서 변경 부분을 표시
• 줄 단위로 삭제된 부분은 회색 빗금
PRESENT BY WARP, 2016 47
PRESENT BY WARP, 2016 48
원격 리포지토리에 게시
• 우측 하단 ↑표시에 원격 리포지토리에 게시되지 않은
커밋 개수 표시
• 팀 탐색기 ▷ 동기화 또는 ↑ 더블클릭
• 나가는 커밋 ▷ 푸시
• GitHub 계정 동기화 필요
PRESENT BY WARP, 2016 49
원격 리포지토리와 동기화
• 팀 탐색기 ▷ 동기화
• 들어오는 커밋
• 페치(Fetch) 로컬 저장소에 반영하기 전 미리보기
• 끌어오기(Pull) 원격 저장소에서 로컬 저장소에 반영
• 커밋되지 않은 변경사항이 있으면 Pull 불가능
PRESENT BY WARP, 2016 50
쟤가 나랑 같은 걸 고치고 있었어!
• 나가는 커밋과 들어오는 커밋에 충돌이 있을 경우 충돌
• 병합(Merge)을 진행하여 최종적으로 어떤 소스를 사용
할지 결정
• 둘 중 하나로 병합 가능
PRESENT BY WARP, 2016 51
내 코드와 쟤 코드가 완전 개판
• 두 버전의 일부분을 조합하여 병합하고 싶을 땐 병합 선택
• 아래와 같은 창이 나타나고, 각 수정 영역에서 원하는 버
전을 선택하면 결과에 반영
PRESENT BY WARP, 2016 52
리포지토리의 역사
• 우측 하단의 Y 아이콘 ▷ 기록 보기(H)
• 기능
• 커밋 내역으로 전체 작업 진척 파악 가능
• 분기별 커밋 내역을 그래프로 시각화
• 특정 커밋 버전에서 새 분기 작성 가능
• 옛 버전으로 되돌리기 가능
PRESENT BY WARP, 2016 53
실험이 필요합니다.
• 원본 버전을 유지한 채 새로운 기능을 추가하고 싶은 경우
=실패하면 그냥 싹 날려버려도 되게
• 분기(brunch) 기능을 제공
• 자세한 설명은 생략
• 우측 하단의 Y 자 아이콘 클릭 ▷ 새 분기(N)
• 팀 탐색기 ▷ 분기 ▷ 새 로컬 분기 시작 위치(N)
PRESENT BY WARP, 2016 54
Q & A
PRESENT BY WARP, 2016 55
같이 보면 좋을 내용
• 디버깅
• Visual Studio 사용 설명서(초급)
PRESENT BY WARP, 2016 56
THANK YOU
PRESENT BY WARP, 2016 57

Más contenido relacionado

La actualidad más candente

Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and Tell
E. Camden Fisher
 

La actualidad más candente (20)

Spring Cloud: Why? How? What?
Spring Cloud: Why? How? What?Spring Cloud: Why? How? What?
Spring Cloud: Why? How? What?
 
Getting started with Octopus Deploy
Getting started with Octopus DeployGetting started with Octopus Deploy
Getting started with Octopus Deploy
 
Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and Tell
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Reasons To Automate API Testing Process
Reasons To Automate API Testing ProcessReasons To Automate API Testing Process
Reasons To Automate API Testing Process
 
Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...
Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...
Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...
 
Maven
MavenMaven
Maven
 
Introduction to Spock: A Unit Testing Framework
Introduction to Spock: A Unit Testing FrameworkIntroduction to Spock: A Unit Testing Framework
Introduction to Spock: A Unit Testing Framework
 
Clean Code 閱讀心得
Clean Code 閱讀心得Clean Code 閱讀心得
Clean Code 閱讀心得
 
Selenium
SeleniumSelenium
Selenium
 
Advanced Scrum master workshop
Advanced Scrum master workshopAdvanced Scrum master workshop
Advanced Scrum master workshop
 
'How do you know that your product works?': Henrik Kniberg @ Colombo Agile Co...
'How do you know that your product works?': Henrik Kniberg @ Colombo Agile Co...'How do you know that your product works?': Henrik Kniberg @ Colombo Agile Co...
'How do you know that your product works?': Henrik Kniberg @ Colombo Agile Co...
 
Release Management: Successful Software Releases Start with a Plan
Release Management: Successful Software Releases Start with a PlanRelease Management: Successful Software Releases Start with a Plan
Release Management: Successful Software Releases Start with a Plan
 
Scrum and agile principles
Scrum and agile principles Scrum and agile principles
Scrum and agile principles
 
Agile Myths and Misconceptions
Agile Myths and MisconceptionsAgile Myths and Misconceptions
Agile Myths and Misconceptions
 
Postman tests in jenkins
Postman tests in jenkinsPostman tests in jenkins
Postman tests in jenkins
 
Maven
MavenMaven
Maven
 
BlueHat v18 || An ice-cold boot to break bit locker
BlueHat v18 || An ice-cold boot to break bit lockerBlueHat v18 || An ice-cold boot to break bit locker
BlueHat v18 || An ice-cold boot to break bit locker
 
Foundations of the Scaled Agile Framework: Be Agile. Scale Up. Stay Lean. And...
Foundations of the Scaled Agile Framework: Be Agile. Scale Up. Stay Lean. And...Foundations of the Scaled Agile Framework: Be Agile. Scale Up. Stay Lean. And...
Foundations of the Scaled Agile Framework: Be Agile. Scale Up. Stay Lean. And...
 
3 Scrum Patterns to Boost Team Productivity
3 Scrum Patterns to Boost Team Productivity3 Scrum Patterns to Boost Team Productivity
3 Scrum Patterns to Boost Team Productivity
 

Similar a Visual studio 사용 설명서(고급)

Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Joongi Kim
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님
NAVER D2
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
devCAT Studio, NEXON
 

Similar a Visual studio 사용 설명서(고급) (20)

GIT_GETCHA_HANJUNG
GIT_GETCHA_HANJUNGGIT_GETCHA_HANJUNG
GIT_GETCHA_HANJUNG
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
 
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
 
Git cooperation
Git cooperationGit cooperation
Git cooperation
 
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님개알못의 오픈소스이야기 - 이상준님
개알못의 오픈소스이야기 - 이상준님
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반
 
오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료오픈소스GIS 개발 일반 강의자료
오픈소스GIS 개발 일반 강의자료
 
파이참 원격 디버깅
파이참 원격 디버깅파이참 원격 디버깅
파이참 원격 디버깅
 
Linux reversing study_basic_3
Linux reversing study_basic_3Linux reversing study_basic_3
Linux reversing study_basic_3
 
프로젝트 아나키로 Rpg 만들기 프로그래밍
프로젝트 아나키로 Rpg 만들기 프로그래밍프로젝트 아나키로 Rpg 만들기 프로그래밍
프로젝트 아나키로 Rpg 만들기 프로그래밍
 
How to use Github? (For Cien)
How to use Github? (For Cien)How to use Github? (For Cien)
How to use Github? (For Cien)
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
 
140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴
 
소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법소스트리(SourceTree)로 배우는 Git 사용법
소스트리(SourceTree)로 배우는 Git 사용법
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx
 

Visual studio 사용 설명서(고급)

  • 1. Visual Studio 사용 설명서 - 고급 - Lusain Kim PRESENT BY WARP, 2016 1
  • 2. 목차 • 글꼴 및 색 바로 가기 • 경로 설정 바로 가기 • 경고 수준 바로 가기 • 리펙터링 도구 바로 가기 • 참조 프로젝트 바로 가기 • 소스 제어 바로 가기 INDEX PRESENT BY WARP, 2016 2
  • 3. 글꼴 및 색 PRESENT BY WARP, 2016 3
  • 4. 폰트를 아무거나 쓰면 안 되는 이유 • 협업을 하는 두 개발자 A, B • A 개발자는 '맑은 고딕', B 개발자는 'Arial' 폰트 사용 중 • A 가 코드를 보기 좋게 정렬해서 B 에게 전달 • B : ????????? 맑은 고딕 Arial PRESENT BY WARP, 2016 4
  • 5. 고정 길이 글꼴을 써야하는 이유 •고정 길이 글꼴 하나의 글자가 차지하는 폭이 동일한 폰트 • A 개발자와 B 개발자가 다른 폰트를 사용하더라도 동일한 간격 보장 • 코드 정렬 유지 •코딩용 폰트 • 1, I, l, ㅣ,| (글꼴: 맑은 고딕)같은 구분하기 어려운 글자를 구분되게 만든 폰트 • D2Coding의 예 : 1, I, l, ㅣ,| PRESENT BY WARP, 2016 5
  • 6. 추천하는 코딩용 폰트 • 제공 : 폰트 이름 순으로 기재 • Visual Studio : Consolas • 네이버 개발자 센터(D2) : D2Coding, 나눔고딕코딩 • Windows : Courier New • 참고 : http://ppss.kr/archives/66633 PRESENT BY WARP, 2016 6
  • 7. 색 지정 Visual Studio는 기본적으로 일정 단어에 색을 지정하여 가독성 지원 ◦ 초기 색 설정이 된 항목 : ◦ VS2010 : 키워드, 사용자 형식, 문자열, define, 주석 등 ◦ 사용자 형식 : class, struct, union, enum 객체 ◦ VS2013 : 매개인자 ◦ VS2015 : new/delete 연산자 ◦ 구분이 필요한, 약간 애매한 항목들도 구분하여 색 지정이 가능 ◦ 변수 / 전역 변수 / 지역 변수 / 필드(클래스 멤버 변수) / 비정적 멤버 변수 ◦ 함수 / 멤버 함수 / 비정적 멤버 함수 / 템플릿 함수 PRESENT BY WARP, 2016 7
  • 8. 어느 게 보기 좋아요? 색 지정을 한 코드 색 지정을 하지 않은 코드 PRESENT BY WARP, 2016 8
  • 9. 어떻게 바꿔요? 도구 ▷ 옵션 ▷ 환경 ▷ 글꼴 및 색 PRESENT BY WARP, 2016 9
  • 10. 표시 항목에서 어떤 걸 바꿔야 하나요? PRESENT BY WARP, 2016 10
  • 11. 표시 항목에서 어떤 걸 바꿔야 하나요? PRESENT BY WARP, 2016 11
  • 12. 표시 항목에서 어떤 걸 바꿔야 하나요? PRESENT BY WARP, 2016 12
  • 13. 경로 설정 PRESENT BY WARP, 2016 13
  • 14. 경로 설정의 필요성 • 외부 라이브러리를 사용할 때 • 파일 개수가 50개를 넘어갈 때 • 리소스 파일이 있을 때 이렇게 파일 관리하면 안돼요! PRESENT BY WARP, 2016 14
  • 15. 절대 경로 vs 상대 경로 • 절대 경로 파일의 탐색 경로가 파일 시스템의 루트로부터 시작해 명시된 파일의 경로 이름 출처 | 네이버 지식백과 • 상대 경로 현재 작업 디렉터리로부터 찾아갈 파일에 이르는 경로 출처 | 네이버 지식백과 • Visual Studio에서 작업중이라면, 상대 경로의 현재 작업 디렉터리는 현재 프로젝트 파일이 있는 곳 • 예 : Proj 프로젝트에서 작업하고 있을 경우, 상대 경로는 Proj 프로젝트 파일(Proj.vcxproj)이 있는 곳 • 협업을 한다면 되도록 상대경로로 맞출 것 • C:Project... 로 경로를 통일하고 싶지 않으면. PRESENT BY WARP, 2016 15
  • 16. 소스 파일을 정리하니 경로가 꼬여요! • 파일이 많으면 용도별로 폴더를 나누는 것을 권장 • 폴더에 정리하면 이전처럼 파일에 바로 접근이 불가 (경로를 추가해야 함) • Collision.h 파일을 참조하기 위해서는 EngineCollisionCollision.h 을 전부 입력해야 함 • 프로젝트 중반에 소스 파일을 정리하면 대참사 (파일 소스을(를) 열 수 없습니다. …) PRESENT BY WARP, 2016 16
  • 17. 소스 파일을 정리하니 경로가 꼬여요! • 경로를 명시하는 것도 좋지만, 미리 추가된 헤더 같은 경우 번거로울 수 있음 • 추가 디렉터리 경로를 설정하면 해당 디렉터리에서도 검색 • 모든 추가 디렉터리 경로에서 검색 • 예 : CollisionPathCollision.h 를 Collision.h 로만 접근하고 싶을 때 • 추가 디렉터리 경로 ▷ CollisionPath • 모든 작업 경로에서 #include "Collision.h" 로 접근 가능 PRESENT BY WARP, 2016 17
  • 18. 포함 디렉터리 설정하기 • 설정 방법 1. [솔루션 탐색기] ▷ 프로젝트 우클릭 ▷ [속성] ▷ [구성 속성] 1. [모든 구성], [모든 플랫폼]으로 변경 2. [VC++ 디렉터리] ▷ [포함 디렉터리] ▷ [편집...] 3. [C/C++] ▷ [일반] ▷ [추가 포함 디렉터리] ▷ [편집...] … 추천 ∵ 프로젝트가 기본적으로 포함하는 경로를 건들지 않음. PRESENT BY WARP, 2016 18
  • 19. Tip. 1. [편집…]을 사용할 것 : 경로를 임의로 수정하다가 프로젝트를 다시 설정할 수 있음 2. <다른 옵션> 일 경우에는 절대로 [편집]을 사용할 것! 악몽의 시작 • 출력 디렉토리 실제 파일이 출력되는 디렉토리 • 구성과 플랫폼에 따른 산출물을 구분할 필요가 없다면 하나의 폴더에서 관리할 수 있음 • 적절히 잘 설정하여 프로젝트 폴더 관리를 수월하게 하는 것이 필요 PRESENT BY WARP, 2016 19
  • 20. 경고 수준 PRESENT BY WARP, 2016 20
  • 21. 경고와 오류의 차이 • 오류Error 문법이 잘못되어 해석이 불가능한 경우 • 경고Warning 문법이 조금 이상하거나 추후 문제의 소지가 있지만 해석은 가능한 경우 PRESENT BY WARP, 2016 21
  • 22. 경고의 의미 1. 컴파일은 되지만 컴파일러 임의로 해석할 여지가 있는 구문이 있음 2. 논리 오류(Logic Error)의 원인이 될 법한 구문이 있음 PRESENT BY WARP, 2016 22
  • 23. 경고 수준Warning Level ◦ 경고는 레벨에 따라 엄격해짐 • Visual Studio의 기본 경고 수준은 W3 • 추가 정보 | https://msdn.microsoft.com/ko-kr/library/thxezb7y.aspx W0 경고 없음 W1 심각한 경고 표시 W2 W1 + 조금 덜 심각한 경고 표시 W3 W2 + 프로덕션 목적으로 권장되는 기타 모든 경고 표시 W4 W3 + 정보를 알려주는 경고 표시 (권장) PRESENT BY WARP, 2016 23
  • 24. 경고 수준 설정 방법 ◦ 경고는 다음 위치에서 확인 가능: ◦ 프로젝트 속성 ▷ C/C++ ▷ 일반 PRESENT BY WARP, 2016 24
  • 26. 리펙터링Refactoring 이란? • 소프트웨어 공학에서 결과의 변경 없이 코드의 구조를 재조정함을 뜻한다. 출처 | 위키백과 • 가독성 또는 유지보수의 편의 향상 목적 • Visual Studio에서는 리펙터링을 위한 도구 제공 • 이름 바꾸기 (Ctrl + R, Ctrl + R) • 메서드 추출 (Ctrl + R, Ctrl + M) • 선언/정의 만들기 • 정의 위치 이동 • 매개 변수 다시 정렬 (Ctrl + R, Ctrl + O) PRESENT BY WARP, 2016 26
  • 27. Visual Studio의 리펙터링 도구 사용하기 1. 텍스트 편집기에서 리펙터링 할 영역을 선택 2. 편집(E) ▷ 리펙터링(R) 에서 원하는 명령 선택 ※선택 영역이 없을 경우 메뉴가 나타나지 않음 PRESENT BY WARP, 2016 27
  • 28. 이름 바꾸기 • 단축키 : Ctrl + R, Ctrl + R • 사용방법 • 바꾸고 싶은 단어를 선택한다. 키워드 등, 바꿀 수 없는 단어는 기능하지 않는다. • 기능 • 선택한 단어의 이름을 바꾼다. • 선택한 단어가 특정 범위에 속한 경우 범위까지 같은 이름만 바꿔준다. • ex) T 라는 클래스 안의 data라는 변수를 리펙터링 할 경우, T::data로 인식되는 이름만 바꾼다. PRESENT BY WARP, 2016 28
  • 29. 이름 바꾸기 사용 화면 PRESENT BY WARP, 2016 29
  • 30. 메서드 추출 • 단축키 : Ctrl + R, Ctrl + M • 사용방법 • 메서드(함수)로 추출할 영역을 선택한 뒤 사용한다. • 원하는 함수명을 입력하면 된다. • 기능 • 선택 영역이 함수로 분리된다. • 만약 범위 밖의 값이 쓰였다면, 값의 이름을 인자로 준다. • 컴파일러가 분리할 수 없다고 판단하면 기능하지 않는다. PRESENT BY WARP, 2016 30
  • 33. 잠재적 수정 사항 • 잠재적 수정 사항이란? • 함수가 선언만 되어 있고 실제 정의를 찾을 수 없는 경우 • 경고 오류 표시선(녹색 물결선)이 표시 • [Ctrl] + [.] 버튼을 눌러 빠른 작업 가능 PRESENT BY WARP, 2016 33
  • 34. 빠른 작업 • 빠른 작업이란? • 선택한 함수에 대한 스텁(stub) 작업(선언/정의 만들기, 정의 위치 이동) 제안 • [Ctrl] + [.] 버튼을 눌러 빠른 작업 가능 • 선언/정의 만들기 • 적절한 위치에 정의를 만든다. • 정의 위치 이동 • 선언이 없는 경우 : 해당 위치를 선언으로 바꾸고 정의 생성 • 선언과 정의가 모두 있는 경우 : 선언 위치에 정의 PRESENT BY WARP, 2016 34
  • 35. 매개변수 다시 정렬(서명 변경) • 단축키 : Ctrl + R, Ctrl + O • 사용방법 • 함수 이름을 선택한다. • 기능 • 선택된 함수의 매개 인자를 관리하는 창 표시 • 추가 / 제거 / 변경 / 되돌리기 가능. • 실험적 기능이기 때문에 버그가 꽤 존재 PRESENT BY WARP, 2016 35
  • 36. 참고 자료 • MSDN • 전구를 사용하여 빠른 작업 수행 | https://msdn.microsoft.com/ko-kr/library/dn872466.aspx • Visual Studio 2015에서 디버그 시작 | https://msdn.microsoft.com/ko-kr/library/dn986851.aspx PRESENT BY WARP, 2016 36
  • 38. 참조 프로젝트란? • 작업 프로젝트가 참조하는 프로젝트라는 의미로 참조 프로젝트라고 부름 • 목적 1. 소스 코드가 있는 라이브러리 프로젝트가 있고, 2. 디버깅 시 라이브러리 소스 코드에 접근하고 싶을 때 • 용도 • 프로젝트 독립적인 라이브러리를 사용할 때 • 각 기능을 모듈화 하여 컴파일 시간을 단축시키고 싶을 때 참조 프로젝트의 예 PRESENT BY WARP, 2016 38
  • 39. 참조 프로젝트를 만드는 방법 • 정적 라이브러리로 구현 • 솔루션에 새 프로젝트 추가(기존 프로젝트가 있을 경우 생략) • Win32 프로젝트 ▷ 정적 라이브러리 로 프로젝트 생성 • 메인 프로젝트의 참조 아이콘 에서 참조 추가(R)... ▷ 참조 프로젝트 선택 • 메인 프로젝트의 속성에서 추가 포함 디렉터리에 참조 프로젝트의 프로젝트 디렉터리 추가 + 되도록 상대경로로 설정 • 메인 프로젝트에서 호출할 참조 프로젝트의 헤더 파일 포함 • 시작 프로젝트는 항상 메인 프로젝트로 하면 자동적으로 종속된 모든 정적 라이브러리 우선 빌드 PRESENT BY WARP, 2016 39
  • 40. 효과 • 라이브러리 소스 코드에 미리 컴파일 된 헤더를 추가할 필요 없음 • 독립적인 라이브러리가 되었기 때문에 다른 프로젝트에서 사용 가능 • 모듈화 되었으므로 단위 테스트 가능 • 라이브러리를 수정할 경우 라이브러리만 다시 빌드하면 됨 PRESENT BY WARP, 2016 40
  • 41. 소스 제어 PRESENT BY WARP, 2016 41
  • 42. 사전 준비 • 설치 시 Visual Studio용 GitHub 확장 [타사] 체크 • 설치 후, 소스 제어를 원하는 프로젝트화면 우측 하단에 게시 버튼이 있으면 됨 ※없을 경우 최신 버전으로 Visual Studio 재설치 권장 • 새 프로젝트를 만들 때 설정하기 • 새 Git 리포지토리 만들기(G) 체크 PRESENT BY WARP, 2016 42
  • 43. 게시하기 • 어디에 게시할 지 선택 • Visual Studio Team Services • Microsoft에서 제공하는 무료 무제한 Git 리포지토리. • Publish to GitHub • GitHub에 원격 리포지토리를 생성하여 거기에 게시 • GitHub 계정 필요 • Private으로 설정할 경우, 비공개 리포지토리 생성 가능(유료) + GitHub 학생 지원 팩으로 사용 가능 • 게시하지 않으면 로컬 리포지토리로만 사용 • 타른 작업 공간과 동기화 작업 불가능 • 커밋 / 되돌리기 작업 수행 가능 PRESENT BY WARP, 2016 43
  • 44. 기본적인 사용 방법 • 소스 파일 옆에 아이콘이 표시됨 • 변경이 되지 않은 부분 • 변경이 된 부분 • 변경 사항이 있으면 다음 방식으로 커밋 • 솔루션 탐색기의 변경된 소스 파일을 우클릭 ▷ 소스제어 • 우측 하단에서 연필 부분을 클릭 • 팀 탐색기 ▷ 변경 내용 • 변경 시 커밋 내용을 반드시 작성 PRESENT BY WARP, 2016 44
  • 45. 한 번에 일부만 커밋하고 싶어요 • 팀 탐색기 ▷ 변경 내용 ▷ 커밋하고 싶은 항목 우클릭 ▷ 스테이징(S) • 스테이징 된 항목만 커밋 • 변경 취소 • 해당 항목만 직전 커밋 내용으로 되돌아감 PRESENT BY WARP, 2016 45
  • 46. 변경 내역을 보고 싶어요 • 항목 우클릭 ▷ 기록 보기(H) • 커밋 내역을 표시 • 커밋 ID, 만든 사람, 일자, 커밋 내용 • 더블 클릭: 해당 커밋 시점의 내용 열람 가능 PRESENT BY WARP, 2016 46
  • 47. 내가 뭘 바꾼 거지? • 항목 우클릭 ▷ 수정되지 않은 항목과 비교(C) • 좌측이 직전 커밋 파일, 우측이 현재 파일 • 빨간색 : 제거됨 • 초록색 : 추가됨 • 변경된 부분은 강조하여 표시됨 • 스크롤 바에서 변경 부분을 표시 • 줄 단위로 삭제된 부분은 회색 빗금 PRESENT BY WARP, 2016 47
  • 48. PRESENT BY WARP, 2016 48
  • 49. 원격 리포지토리에 게시 • 우측 하단 ↑표시에 원격 리포지토리에 게시되지 않은 커밋 개수 표시 • 팀 탐색기 ▷ 동기화 또는 ↑ 더블클릭 • 나가는 커밋 ▷ 푸시 • GitHub 계정 동기화 필요 PRESENT BY WARP, 2016 49
  • 50. 원격 리포지토리와 동기화 • 팀 탐색기 ▷ 동기화 • 들어오는 커밋 • 페치(Fetch) 로컬 저장소에 반영하기 전 미리보기 • 끌어오기(Pull) 원격 저장소에서 로컬 저장소에 반영 • 커밋되지 않은 변경사항이 있으면 Pull 불가능 PRESENT BY WARP, 2016 50
  • 51. 쟤가 나랑 같은 걸 고치고 있었어! • 나가는 커밋과 들어오는 커밋에 충돌이 있을 경우 충돌 • 병합(Merge)을 진행하여 최종적으로 어떤 소스를 사용 할지 결정 • 둘 중 하나로 병합 가능 PRESENT BY WARP, 2016 51
  • 52. 내 코드와 쟤 코드가 완전 개판 • 두 버전의 일부분을 조합하여 병합하고 싶을 땐 병합 선택 • 아래와 같은 창이 나타나고, 각 수정 영역에서 원하는 버 전을 선택하면 결과에 반영 PRESENT BY WARP, 2016 52
  • 53. 리포지토리의 역사 • 우측 하단의 Y 아이콘 ▷ 기록 보기(H) • 기능 • 커밋 내역으로 전체 작업 진척 파악 가능 • 분기별 커밋 내역을 그래프로 시각화 • 특정 커밋 버전에서 새 분기 작성 가능 • 옛 버전으로 되돌리기 가능 PRESENT BY WARP, 2016 53
  • 54. 실험이 필요합니다. • 원본 버전을 유지한 채 새로운 기능을 추가하고 싶은 경우 =실패하면 그냥 싹 날려버려도 되게 • 분기(brunch) 기능을 제공 • 자세한 설명은 생략 • 우측 하단의 Y 자 아이콘 클릭 ▷ 새 분기(N) • 팀 탐색기 ▷ 분기 ▷ 새 로컬 분기 시작 위치(N) PRESENT BY WARP, 2016 54
  • 55. Q & A PRESENT BY WARP, 2016 55
  • 56. 같이 보면 좋을 내용 • 디버깅 • Visual Studio 사용 설명서(초급) PRESENT BY WARP, 2016 56
  • 57. THANK YOU PRESENT BY WARP, 2016 57