[혼공얄코] 6주차 미션

sujinzzang수진짱·2024년 8월 15일
0

혼공얄코

목록 보기
6/6
post-thumbnail

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

컴파일 오류, 런타임 오류

  • 컴파일 오류
    • 사용자에게 배포하기 전에 발견할 수 있는 오류
    • 빌드 자체가 되지 않는다.
    • 오류 발생 원인이 뚜렷 → 파악하기 쉬움
  • 런타임 오류
    • 인터프리터 언어에서 발생하는 오류는 모두 런타임 오류
    • 까다로움. 사용자들이 개발자들이 생각하지 못한 방법으로 프로그램을 사용하다가 발생한 오류
    • 원인 파악 까다로움

논리 오류

  • 논리 오류: 컴파일이나 실행 자체는 성공하지만 잘못된 결과를 반환하는 오류
  • 가장 경계해야할 오류

예외 처리

  • 예외 처리: 런타임 환경에서 개발자의 의도와 예상을 벗어난 값이 문제를 일으켜 오류가 생길 수 있음. 프로그램의 비정상적 종료로 이어짐. 프로그램을 끄거나 리셋하지 않고 오류를 우아하게 넘기는 방법
  • 자바: try-catch구문 사용 / 파이썬: try-except 구문

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

  • 메모리 누수: 메모리 공간에 불필요한 데이터가 쌓여서 남아있는 것
  • 가비지 컬렉션: 메모리 관리를 상당 부분 자동으로 처리해주는 기능
    • 가비지 컬렉션의 한계
      - 프로그램이 작동하는 불특정 시점에 실행
      - 프로그램이 부분적 또는 전체적으로 중단됨
      - 시간 소요. 불필요한 데이터를 모두 제거하지는 못함
      →가비지 컬렉션에 전적으로 의지하면 안됨

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

패키지 매니저

  • 패키지: 라이브러리와 유사한 개념
    • 라이브러리: 소스 코드 작성을 위해 사용되는 코드의 묶음
    • 패키지: 소스 코드를 배포하기 위해 사용되는 코드 묶음
  • 패키지 매니저
    • 운영체제 패키지 매니저: 컴퓨터에서 사용할 프로그램들을 관리
      • apt-get, yum, pacman 등
      • 프로그래밍언어나 서버용 프로그램(NginX) 등을 다운로드, 업데이트, 삭제 가능
    • 프로그래밍 언어 패키지 매니저
      • 파이썬 - pip, 자바 - Maven, Gradle, 자바스크립트 - NPM, Yarn, 루비 - RubyGems

환경 변수

  • 환경 변수: 프로그램이 컴퓨터에서 작동할 떄 환경과 관련된 변수. 하위 프로세스를 실행시키기 위해 참조하는 값을 담은 변수
  • 환경 변수의 용도
    • 필요한 프로그램의 실행 경로
      • path 환경 변수
    • 개발 환경 용도 구분
    • 민감한 요소의 보안
      • 프로그램을 실행할 서버와 개발 및 테스트할 컴퓨터에 DB_ID, DB_PASSWORD 와 같은 환경 변수를 지정해서 아이디와 비밀번호를 지정

런타임 환경

  • 런타임 환경(런타임 시스템): 어떤 프로그래밍 언어가 컴퓨터에서 일할 수 있도록 해주는 요소
  • ex. JRE, Node.js

SDK

  • SDK (Software Development Kit): 소프트웨어 개발 키트
  • 라이브러리, 런타임 환경, 편집 도구, 코드 샘플, 설명서 등을 포함
  • JDK (Java Development Kit) - JRE -JVM

라이브러리, 프레임워크

  • 라이브러리와 프레임워크의 차이
    • 라이브러리: 가져다 쓰는 것
    • 프레임워크: 기반으로 삼는 것
  • 라이브러리
    • import 해서 사용
    • 리액트: 자바스크립트와 타입스크립트 라이브러리
    • 텐서플로우, 넘파이 - 파이썬 라이브러리
  • 프레임워크
    • 프레임워크에 내 코드를 import하는 것
    • 자바 - 스프링
    • 파이썬 - 장고, 플라스크
    • 자바스크립트 - 뷰, 리액트, 앵귤러

확인 문제

  1. 보기에서 찾아쓰시오

    보기) 프레임워크, 환경 변수, SDK, 라이브러리

  • 컴퓨터가 설치된 프로그래밍 언어의 경로를 프로그램에 알려주기 위해 환경 변수가 사용됩니다.
  • 소프트웨어를 개발하는 도중 이미 개발된 유용한 기능을 넣기 위해 라이브러리를 받아 사용할 수 있습니다.
  • 프로그램을 만들 때 필요한 도구들을 제공하는 것은 SDK, 프로그램의 기초 설계를 미리 구성해둔 것을 프레임워크라고 합니다.
  1. 다음 중 틀린 것은?
    2번

  2. 나머지 넷과 종류가 다른 하나는
    4번
    JDK - SDK. 나머지는 패키지 매니저

  3. 다음 용도 중 환경 변수를 사용하기 적합하지 않은 것은?
    3번

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

VCS

  • 버전 관리: 개발되는 소프트웨어의 '시간'과 '차원'을 관리하고 통제하는 것
  • 버전 관리 시스템 (VCS, version control system): 프로젝트의 변경 내역, 프로젝트 버전을 관리해주는 프로그램
    • 개발자가 일정 작업을 마칠 때마다 파일의 추가, 수정, 삭제된 모든 내역을 편리하게 백업
    • 프로젝트의 상태를 버전별로 상세히 조회. 필요시 원하는 시점으로 되돌림
    • 저장 공간을 매우 효율적으로 사용
  • SVN(SubVersioN, 소스 관리 도구), CVS(Concurrent Version System, 동시 버전 시스템), Mercurial(머큐리얼), Git(깃)

  • 시간 여행: 리셋과 리버트
    • 커밋(commit): 프로젝트 상태를 버전으로 저장하는 것
    • 리셋(reset): 해당 버전으로 돌아가며 그 이후의 작업은 모두 없어짐
    • 리버트(revert): 수정하고 싶은 버전만 수정
      1-2-3-4-5 순으로 작업 진행했는데 3번 버전을 수정해야하면 1-2-3-4-5-3' 와 같이 기록이 남는다
  • 차원 넘나들기 : 브랜치
    • 브랜치(branch): 하나의 프로젝트 폴더 안에 여러 차원을 분기 (평행우주)
    • 머지(merge): 브랜치 병합 기능

깃 호스팅 서비스

  • 깃 사용자의 클라우드
  • 각자의 작업을 커밋된 버전 단위로 공유하며 협업할 수 있는 시스템
  • 깃 호스팅 서비스: 작업한 여러 버전이 공유되고 저장되는 공간
  • 푸쉬(push): 각자 작업한 버전을 업로드하는 것
  • 풀(pull): 동료들이 작업한 버전을 통합된 최신 버전으로 다운로드하는 것
  • 깃허브(GitHub): 가장 널리 사용되는 온라인 깃 저장소. 오픈 소스의 성지

0개의 댓글