[프로그래머스 데브코스] TIL - 1주차 Day1

방울·2024년 4월 8일
0

Markdown 작성법을 기반으로 문서 정리법 특강, 버전 관리

프로젝트 관리의 중요성

📠 프로젝트란?

프로젝트는 하나의 프로그램(시스템)을 만들기 위한 일련의 과정이다. 이는 단순히 코드를 작성하는 것뿐만 아니라, 기획, 설계, 테스트, 배포 등 프로그램개발에 필요한 전반적인 활동을 포함한다.

🫂 협업을 잘하려면?

실무에서는 대부분의 프로젝트가 팀으로 진행된다. 그렇기에 협업 역량은 아주 중요한 덕목이다. 이를 위해 코드로 소통하는 것은 물론이며 코드 공유, 문서 공유, 진행 상황, 담당자 정보 등을 명확히 알고 공유해야 할 것이다.

결국 공유가 잘 되어야 한다는 말이다.

🏷️ Read me!

공유가 잘 되려면 프로젝트에 대한 정보를 알기 쉽게 정리해둔 파일이 존재하면 좋지 않을까? 그 파일이 바로 Readme 파일이다. 아래와 같은 내용이 포함될 수 있다.

  1. 완성된 프로그램의 설명서
    • 프로그램 사용 방법
    • 레퍼런스
  2. 구현 중인 프로젝트의 현황
    • 구현된 주요 기능
    • 구현 현황
    • 코드가 해결해야하는 문제 등

잘 작성된 Readme 하나가 프로젝트의 성공과 직결되는 중요한 요소가 될 수 있다.
Readme.md 파일은 어렵게 생각할 것 없이 그냥 확장자만 .m(ark)d(own)인 파일일 뿐이다!

✍🏻 Markdown이란?

Markdown은 일반 사용자들도 웹에서 쉽고 예쁘게 글을 쓸 수 있도록 제공하고 있는 하나의 기술이다. 웹 개발에서 화면을 담당하는 기술을 알아야 쓸 수 있는 기술이 녹여져있다. 즉, 텍스트를 웹 기술로 바꿔주는 하나의 도구인 셈이다.

주요 목적은 간단하다. 읽고 쓰기 쉽게 만들기!

여기서 Markdown 기본 문법을 정리하고 가자.

제목(Header)
#의 개수로 h1부터 h6까지 제목의 레벨을 정한다. # 하나는 가장 큰 제목을 의미하며, ###### 여섯 개는 가장 작은 제목을 의미한다.

1단계 제목

2단계 제목

3단계 제목

4단계 제목

5단계 제목
6단계 제목

목록(Lists)
- 순서가 있는 목록: 숫자와 .을 사용한다.
1. 첫 번째
2. 두 번째

- 순서가 없는 목록: -,*,+를 사용한다.

  • 항목
  • 항목

강조(Emphasis)
기울여: *또는 _로 감싼 텍스트
굵게: **또는 __로 감싼 텍스트
기울여 굵게: 조합할 수도 있다.

코드(Code)
- 인라인 코드: 백틱( ` )으로 감싸진 텍스트로 표시된다.
인라인 코드

- 여러줄의 코드: 백틱 세 개(```)로 감싸서 표시한다.

여러 줄의
코드를
작성하자

이외에도 링크, 이미지, 인용, 표 생성, 줄바꿈, 수평선 등 다양한 문서 서식 기능을 지원한다.

버전 관리

👣 버전이란?

버전(version)은 프로젝트에서 발생한 변경사항이나 업데이트를 의미하는데, 이는 프로그램의 기능 추가, 수정, 삭제 등 유의미한 개선이나 변화를 포함한다. 각각의 버전은 이전 상태와 비교했을 때 변화가 있음을 나타내며, 이러한 버전 관리가 잘 되어있으면 원하는 버전을 바로바로 사용할 수 있어 편리하다.

✳️ 버전 관리의 중요성

버전은 왜 필요한가? 코드를 작성할 때, 처음부터 완벽한 코드를 작성할 수는 없다. 지속적인 수정과 개선을 통해 고도화된 프로젝트를 만들어나가는 것이다. 백업 용도로도 사용이 가능하며 수정 후 완성본을 저장한다고 생각할 수 있다.
이 과정에서 버전을 수동으로 관리하는 것보다 시스템을 구축한 후 사용하면 좋을 것이다. 그래서 우리는 버전 관리 시스템을 쓴다!

Version Control System(VCS)

  • 버전 관리: 어떤 변경사항이 생겼는지 명확하게 알 수 있다.
  • 백업 복구: 문제가 발생했을 때 이전 상태로 쉽게 복구할 수 있다.
  • (선택) 협업 - 각자의 문서, 코드를 공유하고 관리 할 수 있다.

🖥️ 버전 관리 시스템의 종류

버전 관리 시스템은 크게 세 가지 유형으로 분류할 수 있다.

  1. 로컬 VCS
    개발자의 컴퓨터에만 변경 사항을 저장하는 시스템이다. 가장 기본적인 형태로, 버전 관리와 백업, 복구가 가능하나 협업에는 적합하지 않다.

  2. 중앙집중식 VCS
    모든 버전 관리 정보를 중앙 서버에 저장하며, 사용자는 이 서버로부터 필요한 파일을 가져와 작업할 수 있다. 중앙 서버에 문제가 생길 경우 작업이 어려울 수 있으며, 필요한 파일만 가져와 작업하지 때문에 협업시 문제가 발생할 수 있다.
    대표적인 시스템으로 SVN(Subversion), CVS(Concurrent Versions System)이 있다.

  3. 분산 VCS

    내 컴퓨터, 중앙 컴퓨터 파일 하나만 가져오는게 아니라 프로젝트를 통째로 사용, 수정, 수정후 다시 프로젝트 반환한다. 훨씬 관리가 편하고 안정적이다(꼬일 위험이 적음)
    대표적인 시스템으로 Git, Mecurial, Bazaar 등이 있다.

버전 관리 시스템을 사용함으로써, 개발 과정에서 발생할 수 있는 다양한 문제를 예방하고, 프로젝트의 안정성과 협업의 효율성을 높일 수 있다. 코드를 관리하고 여러 버전 간의 차이를 비교하며 작업을 원활하게 수행할 수 있다.

profile
방울방울

0개의 댓글