Day 01 웹개발 기초

InSeok·2022년 6월 26일
0

TIL

목록 보기
1/51

학습목표

  1. 컴퓨터와 프로그래밍의 이해
    1. 컴퓨터의 구성 요소
    2. 프로그래밍과 관련된 개념
  2. 웹 클라이언트 & 웹 서버
  3. 개발환경 세팅
  4. IntelliJ

배운 내용

1. 컴퓨터와 프로그래밍의 이해

  • 프로그램은 소프트웨어 또는 애플리케이션이라고도 불린다.
  • 컴퓨터란, 입력 받은 데이터를 정해진 규칙대로 처리해서 처리 결과를 저장하고 출력하는 전자 장치이다.

소프트웨어


  • 소프트웨어는 물리적인 형태가 존재하지 않는 컴퓨터의 구성 요소, 하드웨어가 어떻게 동작해야 하는지 규정해놓은 명령어의 집합

    시스템 소프트웨어(System Software)

    • 응용 소프트웨어의 실행환경

    • 하드웨어 장치 관리

      응용 소프트웨어(Application Software)

    • 애플리케이션 & 앱 &프로그램 지칭

    • 시스템 소프트웨어 제외한 모든 소프트웨어

하드웨어


  • 컴퓨터를 구성하는 기계적 장치들의 집합

중앙처리장치 (CPU)

  • 프로그램의 실행과 데이터 처리를 담당
    • 제어장치
      • CPU의 모든 동작과 데이터 흐름을 통제하고 관리
      • 운영체제와 소통하며 컴퓨터의 자원을 관리
    • 연산장치
      • 프로그램에 기술되어져 있는 명령어를 수행
      • 코드를 실질적으로 실행시키는 장치
    • 레지스터
      • CPU 내에 존재하는 작고 빠른 기억장치
      • 연산장치의 동작에 필요한 데이터들을 임시적으로 보관하며 제공

기억장치(Memory Device)

  • CPU의 동작에 필요한 데이터들을 장기적(HDD)으로 또는 단기적(RAM)으로 보관
    • 보조기억장치
      • 큰 용량의 데이터저장, but 데이터를 읽고 쓰는 속도 느림
      • CPU의 연산 속도는 엄청 빠른 반면, HDD는 느리기 때문에 CPU는 HDD와 직접적으로 소통 X → 중간에 RAM을 통해서 소통
    • 주기억장치
      • 컴퓨터가 프로그램을 수행하는 동안 필요한 모든 데이터 저장
      • 큰용량 X , but 데이터를 읽고쓰는 속도가 빠름
      • CPU 와 직접적으로 소통 → HDD와 CPU의 중간다리 역할
  • 캐시 메모리
    • 한 번 CPU가 사용한 데이터와 관련된 데이터 중, 재사용 가능성이 높은 데이터를 주기억장치로부터 미리 불러와서 대기시켜놓는 역할(RAM과 CPU의 중간에위치)

**입력장치**

  • 키보드, 마우스, 마이크 등

출력장치

  • 모니터, 스피커,프린트 등

시스템 버스

  • 하드웨어 장치간의 통로
  • 각 하드웨어 장치를 물리적으로 연결한 전선을 의미
    • 데이터버스
      • 하드웨어 간에 데이터를 전달
    • 주소버스
      • 데이터가 어디에 도착해야 하는지에 대한 정보를 전달
    • 제어버스
      • CPU의 제어장치가 생성한 제어 신호를 다른 장치로 전달

컴퓨터 동작


  • 프로그램 실행시, OS가 HDD에 저장된 프로그램을 RAM에 로드시킨다.
  • 로딩 - CPU가 작업할수 있도록 HDD에서 RAM으로 프로그램 파일을 옮겨오는 과정(메모리에 적재)
  • 프로세스 - 메모리에 로드되어 실행중인 프로그램
  • CPU는 소스코드에 작성된 명령어를 계산하고 결과는 주기억장치에 저장

프로그래밍


  • 프로그램을 만드는 과정으로서, 특정 목적을 달성하기 위해 설계된 알고리즘을 프로그래밍 언어를 사용하여 코드로 작성하는 과정

프로그램


  • 어떠한 목적을 달성하기 위한 컴퓨터 명령문의 집합체

프로그래밍 언어


  • 컴퓨터는 기계어를 사용
  • 컴퓨터의 언어와 사람의 언어를 매개해주는 언어가 프로그램 언어

컴파일


  • 프로그래밍 언어로 작성된 소스코드를 컴퓨터가 이해할 수있는 기계거 코드로 번역하는과정

빌드


  • 컴파일 < 빌드
  • 작성한 소스 코드를 실행할 수 있는 산출물로 변환시키는 과정
  • 프로그래밍이 실행되려면 .exe / .msi 확장자를 가진 실행 파일로 만들어주는 빌드 과정이 필요

통합개발환경(IDE)


  • 프로그래밍에 필요한 모든 작업(코드 작성, 편집,디버깅,빌드)을 하나의 프로그램안에서 처리할 수있도록 만들어진 프로그램

클라이언트-서버 아키텍처(2-Tier 아키텍처)

  • 리소스가 존재하는 곳(서버)과 리소스를 사용하는 앱(클라이언트)을 분리시킨 것
  • 리소스에 접근하는 클라이언트가 리소스를 가지고있는 점원에게 요청, 서버는 리소스를 담아 응답

클라이언트-서버+ 데이터베이스(3-Tier 아키텍처)

  • 서버는 리소스를 전달해줄 뿐, 데이터베이스라는 창고에 리소스를 저장
  • 프론트엔드 - 사용자가 직접 눈으로 보고 대면하는 클라이언트 앱 영역
    • UI 클릭 or 터치 하는 등 상호작용할 수있는 앱 개발
    • 종류 : 플랫폼에 따라 구분
      • 웹사이트 (브라우저)
      • 모바일 어플 (안드로이드, ios)
      • 데스크탑 앱(윈도우)
  • 백엔드 - 서버와 DB등 사용자 눈에 직접 보이지 않게 뒤에서 작동하는 영역
    • 상품정보를 API로 노출, 로그인/로그아웃, 권한관리등의 사용자 인증을 주로 다루는 개발
    • 종류 : 어떤 기능을 하느냐에 따라 구분
      • 웹 서버(웹사이트에서 필요로하는 정보 제공)
      • 파일 서버(파일제공)
      • 메일 서버 (메일 주고받을수 있도록 지원)
      • 데이터베이스 서버(데이터 제공)

어려운 내용(에러)

  • VM에 Ubuntu 설치시 vmwgfx 에러

현상

drm:vmw_host_log [vmwgfx]] ERROR Failed to send host log message

해결

환경설정 > 디스플레이 > Graphics Controller 를 VBoxVGA로 변경

profile
백엔드 개발자

0개의 댓글