디버깅(debugging)
- 디버깅 = 디버그(debug)
- 프로그램 개발 단계 중에 발생하는 시스템의 논리적인 오류나 비정상적 연산을 찾아내고 그 원인을 밝히고 수정하는 작업 과정(소프트웨어에 발생하는 문제의 원인을 찾는 것)
- 개발 중인 상태를 나타내는 의미하기도 함
배포
와 비교하여
- 유래 : 초창기 컴퓨터는 기계에 벌레가 들어가서 고장을 일으키곤 했는 이 벌레(bug)를 찾아 치우는 일에서 debugging이 유래되었다고 한다.
* 디버거(debugger) : 디버그를 돕는 도구
컴파일러와 인터프리터
- 코드를 기계어 또는 중간언어로 바꾸는 데 언제 하느냐에 따라 달라진다.
- 컴파일러 : 미리 해놓음 => 컴파일 언어 (예. 자바, C, C++ 등)
- 인터프리터 : 그때그때함 => 인터프리터 언어, 스크립트 언어(예. 자바스크립트, 파이썬, 루비 등)
빌드
- 작업하는 프로젝트 파일들을 출시하기 적합한 형태로 바꾸는 과정
- 프로그램의 종류마다, 소프트웨어 종류마다 빌드 결과물의 형태가 다양하다
- 하나의 형태로 압축
- 더 적은 수의 파일들로 정리
- 그냥 파일들의 형식과 내용만 바뀌는 경우
- 목적
- 윈도우의 .exe파일처럼, 사용자가 바로 실행할 수 있는 파일 하나로 제공하기 위함일 때
- 프로그래밍 코드들을 압축해서 전체 크기를 줄이거나 다른 사람들이 가능한 코드를 못 알아보도록 난독화한 경우
(컴파일 언어로 만든 소프트웨어는 빌드에 컴파일 작업이 포함되어있다.)
배포
- 코딩해서 빌드한 결과물을 사용자에게 전달하는 과정
- 데스크탑 프로그램이면 다운받을 수 있는 곳에 업로드
- 모바일 앱이면 플레이스토어나 앱스토어에 올리는 것
- 웹 사이트라면 서버에 올린 다음 실행해서 사람들이 해당 사이트를 도메인으로 접근해서 볼 수 있도록 하는 작업
환경변수
- 환경 : 소프트웨어가 동작하는 공간(흔히, 컴퓨터), 도커의 컨테이너 등 프로세스가 돌아가는 보다 세분화된 공간
- 환경변수 : 그 공간마다 지정된 값
- 용도
- 내 컴퓨터 어디에 자바가 깔렸는 지를 환경변수에 적어서 어느 자바 프로그램이든 내 컴퓨터 어딘가에 설치된 자바를 문제 없이 찾아서 실행할 수 있도록 하는 거
- 각 환경의 조건마다 어떤 동작을 시행할 지, 또는 어떻게 시행할 지를 정할 수 있다.(예. mode : dev(개발용), mode : prod(배포용))
- 보안요소들이 직접 적히지 않기 위해서 환경변수로 설정해준다.