0. 컴퓨터와 프로그래밍의 이해
- 개요
- 백엔드 개발 기술의 최소한의 교양 지식
- 학습 목표
- 컴퓨터 구성요소
- 프로그램 실행 시 컴퓨터 내부
- 프로그래밍 관련 개념(프로그램, 프로그래밍, 프로그래밍 언어, 컴파일, 빌드, 통합개발환경)
- 컴퓨터의 이해
- 인트로
- 계산한다는 computare 라틴어에서 유래
- 독일군 암호 해독을 위한 튜링 머신이 시초
- 컴퓨터란?
- 입력받은 데이터를 정해진 규칙에 따라 처리해서 처리 결과를 저장하고 출력하는 전자 장치
- 입력받은 데이터 - 입력장치
- 정해진 규칙 - 프로그램 or 소프트웨어 or 애플리케이션
- 처리해서 - 중앙처리 장치
- 처리 결과 저장 - 기억장치
- 출력하는 - 출력장치
- 컴퓨터의 구성 요소
- 정해진 규칙 - 소프트웨어
- 입력받은 데이터를 처리해서 처리 결과 저장하고 출력 - 하드웨어
- 소프트웨어
- 하드웨어 작동 방식을 규정한 명령들의 집합
- system software
- application software를 실행하기 위한 플랫폼 - os : Mac, Window, Linux / runtime 환경 : Node.js, JRE
- 하드웨어와 직접적으로 소통 및 작동 가능하게 함 - 드라이버 : 키보드, 마우스, usb 드라이버
- application software
- 애플리케이션 혹은 프로그램 - 사무, 교육, 게임, 멀티미디어, 통신
- 하드웨어
- 중앙처리장치(Central Processing Unit, CPU)
- 프로그램 실행 및 데이터 처리 담당 장치, 프로세서
- 제어장치
- CPU 동작과 데이터 흐름 통제
- 운영체제와 소통하여 컴퓨터 자원 관리
- 연산장치
- 프로그램에 기술된 명령어 수행
- 코드를 실행
- 레지스터
- CPU 내 작고 빠른 기억장치
- 연산장치에 필요한 데이터들 임시 저장
- 기억장치(Memory device)
- 보조기억장치
- 컴퓨터에 필요한 정보 반영구적 저장
- 큰 용량 저장 가능하나 읽고 쓰는 속도 느림
- CPU 속도에 비해 느리기 때문에 직접적으로 소통하지 않음
- SSD(Solid State Drive), HDD(Hard Disk Drive)
- 주기억장치
- 프로그램 실행 시 데이터 저장
- 큰 용량 불가하나 읽고 쓰는 속도 빠름
- CPU 속도에 어느정도 부합하기에 직접 소통 가능
- RAM(Random Access Memory), ROM(Read Only Memory)
- Cache Memory
- CPU가 한번 사용한 데이터 중 재사용 가능성이 높은 데이터를 주기억장치에서 미리 불러와 저장하는 기억장치
- 기억장치의 계층구조
- Register(CPU 내 존재) - 캐시 메모리(static RAM) - 주기억장치(Dynamic RAM) - 보조기억장치(하드, SSD, 플로피디스크, 자기 테이프)
- 오른쪽으로 갈수록 용량 커지고, 속도 느리고, 가격은 저렴해진다
- 보조기억장치
- 중앙처리장치(Central Processing Unit, CPU)
- 인트로
- 입력 장치(Input device)
- 사용자로부터 데이터 입력받는 장치 ex) 키보드, 마우스, 트랙패드, 마이크
- 출력 장치(Output device)
- 사용자에게 데이터를 출력해주는 장치 ex) 모니터, 스피커, 프린터
- 시스템 버스(System Bus)
- CPU 포함한 각 하드웨어 장치 간 통로
- 하드웨어를 물리적으로 연결한 전선으로 하드웨어에 속함
- 데이터 버스 - 하드웨어 간 데이터 전달 통로
- 주소 버스 - 데이터 도착 정보 전달 통로
- 제어 버스 - CPU의 제어 장치가 생성한 제어 신호를 다른 하드웨어에 전달하는 통로
- 컴퓨터 동작
- 계산기 실행
- 운영체제가 보조기억장치에서 저장되어 있던 프로그램을 주기억장치에 로드
- 로딩되면 모니터에 출력, 실행 중인 프로그램을 프로세스라 불림
- 키보드, 마우스 등 입력장치를 통해 데이터 입력, 소스코드에 작성된 명령어에 적용하여 계산
- 계산 완료되면 주기억장치에 저장하고 출력
- 계산기 실행
- 프로그래밍의 이해
- 인트로
- 컴퓨터의 특성을 활용하여 문제를 해결하는 것을 프로그래밍
- 반복적이고 번거로운 작업을 프로그래밍으로 해결 가능
- 프로그래밍
- 프로그래밍이란 프로그램을 만드는 과정으로서, 특정 목적을 달성하기 위해 설계된 알고리즘을 프로그래밍 언어를 사용하여 코드로 작성하는 과정을 의미한다.
- 프로그램
- 어떠한 목적을 달성하기 위한 컴퓨터 명령문의 집합체
- 프로그래밍 언어
- 컴퓨터가 알아들을 수 있는 언어는 기계어
- 기계어와 사람의 언어를 매개해주는 것이 프로그래밍 언어
- 기계어와 같은 컴퓨터와 가까운 언어는 저수준 언어, Java와 C언어 같이 사람에 가까운 언어를 고수준 언어
- 컴파일
- 소스코드를 기계어 코드로 변환하는 과정을 compile
- 빌드
- compile은 build 과정의 일부
- 소스코드를 실행할 수 있는 산출물로 변환
- .exe 나 .msi 확장자를 가진 실행파일로 만들어주는 과정
- 통합개발환경(Integrated Development Environment, IDE)
- 코드를 작성할 때 사용하는 프로그램
- 코드 작성 및 편집, 디버깅, 빌드 등의 작업을 하나의 IDE에서 가능
- Visual Studio Code, IntelliJ, Eclipse
- 인트로
1. 웹(Web)
- 개요
- 웹 클라이언트와 웹 서버 학습
- Client Server Architecture
- 클라이언트 서버 아키텍처, 2 티어 아키텍처
- 쇼핑몰 앱
- 인터넷 연결 없이 불가능 - 상품 정보를 서버로부터 받아와야 하기 때문
- 상품 정보가 앱에 존재한다면? - 끊임없이 업데이트해야 함, 실시간 제공 어려움
- 결제도 은행 서버와 연결 필요
- 상품 정보가 존재하는 곳과 사용하는 앱을 분리하는 것이 2 티어 아키텍처
- 클라이언트 - 리소스를 사용하는 앱
- 서버 - 리소스가 존재하는 곳
- 3-tier architecture
- 클라이언트-서버 구조에서 DB를 추가한 구조
- 서버는 리소스를 전달해주는 역할만 함
- 데이터베이스라는 곳에 리소스를 저장
- Front end VS Back end
- Front end : 클라이언트 쪽에서 리소스를 사용하는 곳
- Back end : 리소스를 전달 해주는 서버나 리소스를 저장하는 DB
- Client와 Server 종류
- 클라이언트 : 웹 앱(웹사이트), 스마트폰/태블릿 앱, 데스크톱 앱
- 서버 : 웹 서버, 파일 서버, 메일 서버, DB 서버
2. 개발환경 세팅
- Window
- WSL2/JDK/Intellij/JetBrains ToolBox/환경변수 설정
- WSL2 설치(Window Subsystem for Linux 2)
- Windows 버전이 20H1, 20H2, 21H1 이상(windows + s 후 시스템 검색)
- Windows terminal 설치(windows + s 후 Microsoft Store 열고 windows terminal 검색 후 다운로드)
- 터미널 우클릭 후 관리자 권한 실행으로 들어가서(windows + s 후 터미널 검색)
- dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- 재부팅
- 링크에서 4단계 Linux 커널 패키지 다운(x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지)
- 실행 오류 발생하면 반복해서 finish
- 터미널에서 wsl --set-default-version 2
- Microsoft Store에서 ubuntu 검색하고 다운
- 실행 후 ID P/W 설정
- 터미널에서 wsl -l -v 버전 2인지 확인(버전 1이면 wsl --set-version Ubuntu 2)
- 터미널 종류 후 다시 실행하고 아래로 꺾인 꺽쇠 버튼 클릭해서 리눅스 클릭
- JDK 설치
- Zulu OpenJDK 다운로드 페이지로 가서 Java Version과 Operating System, Architecture를 선택
- Architecture는 내 컴퓨터 → 속성에서 64bit or 32bit 운영체제를 확인
- ‘.msi’ 버튼을 눌러 다운로드
- 실행 및 finish
- “windows + R” 키를 눌러 실행 창을 열고 cmd를 입력해 명령 프롬프트
- java 입력
- Intellij /JetBrains Tool Box
- 구글 검색 후 다운로드
- 환경변수 설정
- window + S로 환경 변수 검색
- 환경변수 클릭, 시스템 변수에서 새로 만들기
- 변수 이름 : JAVA_HOME
- 변수 값 : C:₩Program Files₩Zulu₩zulu-11
- 시스템 변수 path 찾아 편집
- 새로 만들기
- %JAVA_HOME%₩bin 추가
- 같은 방식으로
- 변수 이름 : CLASSPATH
- 변수 값 : %JAVA_HOME%₩lib
- cmd에서 path로 검색하여 확인
- Mac
- JDK/Intellij/JetBrains ToolBox
- JDK
- 윈도우와 동일, .dmg 버튼으로 다운로드, M1은 arm 64bit, intel은 x86 64bit
- 터미널에 java 입력
- Intellij/JetBrains ToolBox
- window와 동일
3. 개발환경 세팅
- Learn intellij idea 들어가서 start learning으로 tutorial 실행
- 단축키
'Backend boot camp > Session1' 카테고리의 다른 글
[JAVA]기초 - 변수, 타입, 문자열, 연산자, 콘솔 입출력 (0) | 2022.09.06 |
---|---|
[Git] 기초 (0) | 2022.09.06 |
[Linux] 기초 (0) | 2022.09.06 |
[Publishing]HTML, CSS (0) | 2022.08.23 |
Learn how to learn (0) | 2022.08.19 |