[혼공학습단 9기] 혼공얄코: 6주차

오늘은·2023년 2월 19일
0

혼공학습단

목록 보기
12/14

기본 미션

기본 미션 Ch.03(03-5) 확인 문제 풀고 인증하기

선택 미션

선택 미션 깃, 깃 호스팅 서비스 강의 듣고 정리하기

  • 사용 이유
    버전 관리: 개발시 중간과정을 저장하는 것. 프로젝트를 그대로 저장하면 용량에 문제가 발생
    협업: 여러 개발자가 분할 협업하여 개발시 테스팅 작업, 버전관리 등의 작업 수행의 편의성

커멘트라인 : 설명

cd (프로젝트 디렉토리) : 파일 이동
git init : git 시작. .git이라는 파일이 저장 모든 수정 내역이 저장됨 (숨김 폴더)
git add -A : 백업에 포함할 파일 전체를 설정
git commit -m "(작업수행 내용)" : 작업에 대한 설명을 작성하여 전체 내용을 커밋 전체 복사가 아닌 변경사항만 저장한다.
git logs : 커밋 내역을 확인
git reset --hard a0a0a0 : a0a0a0이라는 커밋 로그의 상태로 복원 a0a0a0은 각 로그값이 들어옴
git branch "(브랜치명)" : 분기 작업 시작
git merge "(브랜치명)" : 브랜치 병합

Git: 버전관리를 위한 소프트웨어
GitHub: Git으로 저장된 내역을 저장하는 공간 제공 서비스

Chapter 03. 개발자의 길로 들어서기: 프로그래밍 용어 알기

03-4 오류라는 위험에 대비하기

컴파일 오류, 런타임 오류

컴파일 오류

  • 배포 이전에 발견되며 빌드가 되지 않아 이용자에게 전달되지 않는다.
  • 오류 발생 원인이 뚜렷하여 파악하기 쉽다.
  • 구문 오류 등이 주 발생 원인

런타임 오류

  • 프로그래밍 밖에서 발생하는 오류로 배포 이후에 발견할 수 있다.
  • 컴파일 오류에 비해 원인 파악이 까다롭다.
  • Null 오류, 0으로 나눔, 의도하지 않은 무한루프 등

오류와 버그
버그는 개발자에 의해 발생, 오류는 프로그램 사용자에 의해 발생

논리 오류

컴파일이나 실행 자체는 성공하였으나 잘못된 결과를 반환하는 오류.
바로 티가 나지 않으며 알고리즘 상의 논리적 결함, 코드 상의 문제로 발생한다.

예외 처리

오류 발생시 비정상적 종료가 아닌 오류를 넘기는 방식이 존재한다.
C언어를 제외한 대부분의 프로그래밍 언어에서 예외처리 방법을 제공하며 보통 try-catch문을 사용한다. (파이썬은 try-excep, 루비는 rescue문을 사용)

메모리 누수, 가비지 컬렉션

메모리에 불필요한 데이터가 쌓여 남아있는 것을 메모리 누수라고 말한다. 언매니지드 언어의 경우 다 쓴 메모리를 개발자가 비워야 하기 때문에 메모리 누수가 발생.
현대적 언어는 메모리 관리를 자동으로 처리해주는 기능이 있다. 이를 가비지 컬렉션이라 부름.

프로그램이 동작하는 중 불특정 시점에 실행되는데 이 경우 프로그램이 부분적으로 중단된다.
가비지 컬렉터가 메모리 정리하는 시간이 길어지면 개발자는 버벅거림을 경험하며 불필요한 데이터를 모두 제거하지 못하여 메모리 누수가 발생할 수 있다.

03-5 개발에 필요한 여러 가지 도구

패키지 매니저

패키지는 라이브러리와 비슷하며 소스코드 배포를 위해 사용되는 코드 묶음이다.
패키지 매니저: 패키지를 편리하고 안전하게 다루기 위한 도구.

  • 운영체제 패키지 매니저: 컴퓨터에서 사용할 프로그램을 관리 (apt-get, yum, pacman, NginX 등)
  • 프로그래밍 언어 패키지 매니저: 소프트웨어를 개발할 때 사용. (pip, Maven, Gradle, NPM, Yarn, RubyGems 등)

환경 변수

프로그램이 컴퓨터에서 동작할 때 환경과 관련된 변수, 동적인 값. 운영체제의 환경변수는 응용 프로그램이 참조하기 위한 설정을 기록하여 실행 환경을 미리 변수에 지정하는것과 같다.

운영체제 입장에서 해당 프로그램을 실행시키기 위해 참조하는 값을 담은 변수를 환경변수라 함.

다른 프로그램이나 라이브러리의 위치를 모두가 접근 가능한 곳에 적어두는 용도로 사용하는 환경 변수를 path 환경 변수 라고 한다. (자바를 사용하기 위해 자바 코드 실행 프로그램을 환경변수에 등록하며 작성함)

일반적으로 기업에서는 같은 구조의 데이터베이스를 둘 이상 두어 하나는 실서비스용, 하나는 개발용으로 사용한다.
환경 변수 미사용시 배포시마다 빌드 전 서비스 용 DB에 맞게 수정해야한다. 프로그램을 개발할 때 환경변수를 사용하여 작동 용도를 구분한다.

개인정보역시 소스코드에 포함하지 않지만 DB에서 접근하여 사용하여야 한다.
이 경우에도 환경 변수를 통해 값을 따로 지정하여 환경 변수 값을 통해 접근하여 작업을 수행하도록 한다.

런타임 환경

런타임 시스템이라 불리기도 하며 컴퓨터에서 일할 수 있도록 돕는 요소를 말한다. 특정 언어로 작성된 프로그램을 실행할 수 있도록 하는 프로그램. (JRE, Node.js 등)
기계어는 바로 컴파일 되어 실행 프로그램이 불필요하나 인터프리터 언어는 런타임 환경을 설치하여 소스코드를 실행할 수 있다.

SDK

Software Development Kit의 약자로 개발하는데 사용되는 키트를 말한다. 각각의 특성에 맞는 라이브러리, 런타임 환경, 편집 도구, 코드 샘플, 설명서 등이 포함되어 있다.

라이브러리, 프레임워크

개발을 쉽게 하기 위해 외부에서 작성된 코드를 가져와 사용할 수 있다. 개인 혹은 단체에서 개발하여 사용할 수 있으며 import 하여 명령어를 작성하여 라이브러리 활용이 가능하다.

프레임워크는 전체 흐름을 갖고 있어 개발자는 그 안에서 필요한 부분을 사용하나 라이브러리는 전체적 흐름을 개발자가 생성하여야 한다. (원하는 라이브러리로 전체 흐름을 제작)

03-6 타임머신을 타고 평행우주를 누비는 개발자

VCS

Version Control System의 약자.
프로젝트의 변경 내역, 프로젝트 버전을 관리해주는 프로그램으로 버전별로 관리하기 위해 생성한다.
해당 시점으로 되돌리며 일정 단위 작성 수행시마다 전체 상태를 저장한다.

각 버전별로 프로그램을 따로 저장하지 않고 VCS를 사용하는 이유
1. 용량이 크기 때문에 백업시 시간이 많이 소요된다.
2. 각 버전의 변화를 한 눈에 알아보기 힘듬.
3. 과거 특정 작업만 골라 되돌릴 수 없음.

모든 내역을 편리하게 백업할 수 있으며 버전별로 상세 정보를 파악할 수 있으며 원하는 시점으로 되돌릴 수 있어 효율적인 버전관리가 가능하다.

대중적으로 Git을 사용하며 이 외로는 SVN, CVS, Mercuial등이 있다.

  • 저장(save)하여 하나의 버전을 생성. 이를 커밋(commit)이라 부른다.
    각 버전에는 작업 내역을 요약한 설명을 붙여 이전 버전으로 부터 어떤 수정사항이 발생하였는지 작성. 한 눈에 변경 사항을 파악할 수 있다.

  • 이전 버전으로 돌아오며 중간 내역을 모두 삭제 하는 것을 리셋(reset)이라 부른다.

  • 특정 버전만 골라 되돌리는 리버트(revert) 기능도 있다. 각 버전마다 어떤 일을 수행했는지 파악할 수 있어 중간 내역이 삭제되지 않는다.

  • 프로젝트에 영향을 미치지 않고 한개의 프로젝트에서 여러 방면으로 분리. 분리된 프로젝트에서 기능을 테스트할 수 있다. 이를 브랜치(branch) 라고 말하며, 이후 분리된 영역에서 메인 프로젝트로 가져오는 머지(merge) 기능으로 병합할 수 있다.

깃 호스팅 서비스

프로젝트를 공유하여 개발할 때 클라우드 서비스처럼 실시간으로 개발 영역을 공유하여 개발할 수 있다. 이를 깃 호스팅 서비스 라고 말하며 각 버전을 업로드 하는 것을 푸쉬(push), 업로드된 작업을 다운로드 하는 것을 풀(pull)이라 부른다.

깃허브를 통해 무료로 호스팅 서비스를 이용할 수 있다. 외부로 코드를 공개할 수 있어 해당 코드를 보고 코드개선에 기여할 수 있기도 하다.

profile
게으르지만 기록은 하고싶어!

0개의 댓글