
cd - 폴더변경
ex. $cd .. → 상위폴더로 이동
dir - directory 현재 디렉토리 파일 전체 불러오기
mkdir - make 폴더생성
rmdir - remove 폴더 삭제
del - 파일 삭제
echo - 출력
ex. $echo %path% 입력시 path 환경변수에 설정된 모든 경로 출력
cls - clear
파일 관련 명령어 줄 때 어느 경로에서 찾아보라고 변수를 설정해주는 것
변수 등록 시 파일 서치할 때 일일히 디렉토리 지정안해도 됨
GUI - 마우스 키보드 이용해 OS에 접근
CLI(Command Line Interface) – 키보드로만 접근 가능
notepad.exe → windows 에서 실행하려면? → cmd 에서 notepad 입력하면 바로 실행
!! 실행파일에 들어있는 명령어는 특정 CPU나 OS에서만 인식할 수 있음
왜? → 컴파일 시 그렇게 변환해서. 컴파일에서 결정됨
프로그래밍 소스파일 → 컴파일 → 윈도우용, 맥용, 리눅스용 각각 컴파일
각 OS의 실행파일은 각 OS에서만 실행 가능
프로그래밍 언어로 된 소스파일 -컴파일→ 기계어로된 실행파일 (특정 CPU에서 인식하는 명령어)
CPU (cpu마다 명령어다름)
소스파일 -인텔cpu 컴파일러→ 인텔cpu 명령어로 변환된 실행파일 → 인텔cpu만 실행
CPU같아도 명령어 배치 형식에 차이 → 다른 OS에서 컴파일한 프로그램은 실행불가능
운영체제마다 명령어 구성, 배열 방식에 차이
운영체제사이 호환XXX
http://mingw-w64.org/doku.php/download/mingw-builds 에서 설치
https://brunch.co.kr/@mystoryg/56 참고
컴파일방식 : hello.c -컴파일→ hello.exe → 실행
인터프리터 방식 : hello.js -읽기→ node.exe 인터프리터 (java script 엔진) → 실행
자바 hybrid 방식 : hello.java -컴파일→ hello.class -읽기→ java.exe JVM → 실행
VScode 에 hello.c파일 생성
c언어 코드 작성 printf 로 출력. 코드 끝에 ; 세미콜론 필수
c언어는 소문자로 작성
cmd에서 gcc -o hello.exe hello.c 로 실행파일 exe 생성
생성 후 hello 실행파일명만 적어주면 실행됨
이 exe 파일이 진짜 기계어파일 Native Application
#include <stdio.h>
int main() {
printf("Hello, world!");
return 0;
}

특징
- 실행 시 별도의 SW 필요X
- CPU 와 OS 에 맞춰서 변환한 것 → 다른 CPU, 다른 OS 실행불가
- 진짜 기계어 → 실행속도 제일 빠름
VScode 에 hello.js (Java script) 작성
console.log("Hello, world!");
js 파일을 바로 읽어서 = Loading 해서 실행

특징
- 실행 시 소스파일을 읽어서 처리할 인터프리터 필요
- 소스파일이 꼭 있어야함
- 매번 소스파일 읽고 문법 검사 → 실행속도 제일 느림
- 소스파일을 바로 읽어서 처리 → 소스파일.js 하나로 다른 CPU, OS 에서 실행 가능
- 운영체제의 OS 나 CPU 에 종속XX
- 단, 실행할 pc에서 그 운영체제용 nodejs 따로 설치해줘야함
class파일은 가상의 기계어코드. 진짜X – 바이트코드 → 직접 실행 불가
읽어서 실행해줄 JVM 이 필요
Hello.java 파일 생성
class Hello {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
javac Hello.java 명령어로 java 파일을 컴파일
컴파일 결과로 Hello.class 파일 생성 → 진짜 기계어X 바이트코드
JVM (바이트코드 인터프리터) 설치해 실행
java Hello 코드로 실행

특징
- 컴파일 + 인터프리터 두가지 방식의 결합
- 인터프리터만 사용하면 매번 실행때마다 소스를 직접 읽어 실행해 속도느림
- 컴파일 시 문법검사를 진행 → 실행파일을 실행할 때 인터프리터 방식보다 빠름
인터프리터의 대체방식으로 hybrid 탄생
Android에서 Hybrid 방식의 느린 속도 해결방안으로 나온게 JIT, AOT 컴파일 방식
실행 시점에 native code 로 변환 → 실행속도 향상
실행하려는 바이트코드 중 자주 쓰는 일부를 실행할 때 native code로 변환 후 실행
실행할 때마다 native code로 바꿔야함 → 실행시간 조금 지연되는 문제 발생
프로그램 설치할 때 native code 로 변환 → 실행속도 향상
실행할때는 코드 변환 없이 native code를 바로 실행 → JIT보다 속도 빠름
단, 설치 시간이 더 걸림
Android 5.x부터 ART JVM 사용 → AOT방식
이하는 Dalvik Java Vitual Machne 사용 → JIT 방식
!! 느리면 처음부터 컴파일해서 나오면 안되나?
안드나 아이폰 둘 다 폰마다 CPU차이 있어서 앱스토어에는 바이트코드만 올리는 방식 선택
형상 (소스코드의 변화)를 관리 = 백업
pc의 project를 local 저장소(reposirtory = Repo.)에 백업
remote 저장소에 각각의 pc에서 작업한 project를 백업
여럿이 백업된 파일 공유가능 , 백업(checkin)한 pc아니어도 다운로드(checkout) 가능
협업 가능, 팀플가능
서버에 문제 발생시 변경내역 모두 소실 가능
CVS, SVM
local pc 저장소에 백업 → 백업파일을 remote 저장소에 업로드
저장소를 local에도 둬서 분산 저장
다른 local pc에서 저장소 백업파일 복제 가능
복제 후 필요한 프로젝트파일 체크아웃
작업후에 프로젝트 다시 백업 가능 – 재업로드 가능
백업 push / 복제 clone
서버에 문제 발생시 로컬저장소에 있는 것을 다시 올리면됨 - 서버오류 위험 제거
변경내역 보존 가능
GIT