본문 바로가기
IT/컴퓨터

[IT] 기초 내용 정리

by dwoi 2023. 2. 23.

책 표지

본 글은 위 책을 읽고 기초적인 IT 내용을 정리한 글

 

목차

     


    비전공자를 위한 이해할 수 있는 IT 지식 내용 정리

    본문내용넣기

     


    1. 프로그래밍 언어 & 운영체제 [OS]

    1) 프로그래밍 언어란

    ⓐ. 사람이 컴퓨터에게 일을 시키고 싶어 함.

    ⓑ. 컴퓨터는 0과 1만 알아들음.

    ⓒ. 프로그래밍 언어로 문서 작성

    → 작성된 문서를 컴파일러를 통해 0과 1로 변환

    → 컴퓨터가 인식하고 작동.

     

    2) 개발자가 하는 일

    일어나는 모든 과정을 프로그래밍 언어로 작성 

    어떤 프로그램이 프로그래밍 언어로 작성하는 것은 서포트함.

     'IDE'(integrated Development environment): 통합 개발 환경, 코딩에 필요한 다양한 기능 제공

    ex) 안드로이드 애플리케이션 개발 용도의 IDE : Android Studio

     

    3) 프로그래밍 언어가 많은 이유

    답) 사람들의 생각이 모두 다르기 때문

         각 언어마다 장점/단점이 다양함 → 대다수가 사용하는 언어가 주로 활용됨.

     

    3-1) 언어의 수준도 다양함

    저수준 : 컴퓨터 친화적

                  컴퓨터 입장에선 알아듣기 쉬우니 저사양에서도 원활히 작동.

    고수준 : 인간친화적

                  유지, 보수가 인간입장에서 편함.

                  컴퓨터가 생각해야 하니 저수준 언어보다 작동이 느림.

     

    현재는 다양한 수준의 언어들이 사용되고 있음.

     

    4) 컴퓨터의 구성 요소

    CPU : 컴퓨터의 머리

    보조기억장치(HDD, SDD): 창고

     

    상세설명

    CPU에서 어떤 처리를 하기 위해 보조기억장치에게 처리할 데이터를 달라고 요구

    그러나 창고에는 너무 많은 데이터가 존재하여 찾는데 시간이 걸림 → 속도가 느림

     

    그래서 메모리라는 CPU의 개인 작업 공간을 마련해줌.

    → 큰 데이터들을 메모리에 전달해주고 이 쪽에서 작업을 해줌.

     

    프로그램 작동 원리 정리

    1. CPU가 이 프로그램 작동할꺼야라는 신호를 보냄

    2. 보조기억장치에서 큰 데이터들을 메모리로 넘김

    3. 메모리에서 찾아서 CPU에게 넘겨줌.

    4. 작동

     

    5) 운영 체제

    운영체제 [OS] : 하드웨어를 관리해주는 소프트웨어

    ex. 보조기억장치의 용량을 알 수 있는 것도 OS의 서포트가 있기 때문임.


     

    2. 네트워크, 클라이언트, 서버

    1) LAN

    LAN(Local Area Network) : 컴퓨터로 연결된 작은 지역

    MAN, WAN으로 확장되어 연결되어짐.

     

    2) IP 주소

    해당 컴퓨터가 위치해있는 주소

     

    3) 클라이어트, 서버

    클라이언트 : 파일을 달라고 보채는 컴퓨터

    서버 : 파일을 주는 컴퓨터

    → 여러 클라이언트에서 신호가 오는 게 많으니 여러 개의 컴퓨터를 합쳐서 사용.

     

    4) 우분투

    리눅스 : 일종의 운영체제, 무료

    리눅스 위에서 '서버 프로그램'을 돌림, 서버용이니 보통 그래픽 데이터는 필요치 않음. 명령어로만 작동.

     

    '로그인을 시켜줘'(아이디와 비밀번호라는 데이터가 클라이언트에서 넘어옴)

    '이 아이디가 존재하나?', '존재한다면 이 비밀번호가 맞나?'

     

    우분투 : 리눅스 버전 중에 대표적인 것 중 하나


     

    3. API와 JSON

    1) API

    API : 클라이언트의 요청을 구분할 수 있도록 하는 체계

    ①. 요청을 보내는 쪽과 응답을 주는 쪽으로 나뉘어짐.

          1. 클라이언트가 이미지 파일을 달라는 요청을 함.

          2. API가 이 요청을 받고 이미지 파일을 처리하는 서버의 주소로 해당 신호와 데이터를 보냄.

          3. 처리된 데이터를 클라이언트에게 보냄.

    1-1) CRUD

    Create : 데이터를 올림

    Read : 데이터를 불러들임

    Update : 데이터를 바꿈

    Delete : 데이터를 삭제함

     

    1-2) RESTful API

    CRUD별로 주소가 생김.

    → 너무 많고 관리하기가 어려워짐.

    → 조금 더 체계적인 API가 필요

     

    Create : POST

    Read : GET

    Update : PUT(전체)/PATCH(일부)

    Delete : DELETE

     

    서버의 관점)

    클라이언트의 요청에 대해서 코딩된 대로 판단

    판단 결과가 두 가지 종류로 나타남.

    1. 잘 됐어

    2. 잘 안 됐어

     

    잘 됐어의 경우에서 언어를 통일시키기 위해 200번대 코드를 활용

    잘 안 됐어의 경우에 400번대, 500번대 코드를 활용

     

    1-3) API 체계의 확장

    한 컴퓨터의 여러 소프트웨어가 존재함.

    한 소프트웨어에서 다른 소프트웨어의 특정 기능을 활용하고 싶음.

    → 서로 다른 시스템의 기능을 활용하기 위해 API가 필요.

    → SDK라는 개념이 등장 

    SDK : API를 제공해주는 다른 소프트웨어

     

     

    2) JSON

    클라이언트가 서버로 요청을 보낼 때 여러 데이터 및 주소가 혼합된 '형식'으로 전달

    이러한 '형식'은 무한하게 존재 가능

     

    → 유명한 형식을 다 같이 쓰자

    → 현재 가장 유명한 형식은 JSON, 과거엔 XML

     

    큰 맥락에선

    클라와 서버는 API라는 체계를 통해 요청과 응답을 주고받고, 그때 필요한 데이터들을 JSON 형식으로 주고받는다.

     


     

    4. 웹

    1) HTML

    운영체제 프로그램에 상관없이 일정한 형식이 언제나 동일하게 보이도록 하기 위한 문서

    프로그래밍 언어가 아님.

    브라우저가 볼 수 있는 문서를 적는 언어

     

    ※ 태그 : HTML에서 정보를 표현하기 위한 코드

    ex. <h> : Header(대제목)

          <p> : Paragraph(문단)

          <ol> : Ordered List(순서가 있는 목록)

          <ul> : Unordered List (순서가 없는 목록)

          <a> : 한 HTML 문서에서 다른 HTML 문서로 이동하는 링크의 개념

     

    ※ 마크업 : HTML 작업

     

    2) CSS(Cascading Style Sheets)

    HTML에 디자인을 입힐 수 있는 코드

    HTML 코드는 정보만 표현 / CSS 코드는 디자인만 표현

    HTML + CSS → 퍼블리싱

     

    3) JavaScript

    HTML과 CSS로는 구현이 힘든 기능들을 구현하기 위한 웹 프로그래밍 언어

     

    ★ HTML, CSS, JavaScript 완성본은 서버에 존재

       클라이언트의 HTML CSS, js는 '사본'

     

    *웹과 애플리케이션의 차이

    웹 : 수정이 용이 → 서버에 있는 원본만 수정하면 빠르게 반영이 가능

    애플리케이션 : 클라이언트에게 파일이 존재하므로 수정이 용이하지 않음.

     

    But 웹은 항상 새로 고침을 해야함. → HTML, CSS, JavaScript를 계속 다시 다운로드 받아야 함.

     웹은 네트워크 영향을 크게 받음.

     

    4) 브라우저의 역할

    HTML, CSS, JavaScript를 받아서 읽음

    그 데이터에 해당하는 정보, 이미지, 적혀있는 대로 동작하는 게 브라우저의 역할.

     

    ⓐ. 브라우저는 애플리케이션이며 종류도 다양함.

    ⓑ. HTML, CSS, Javascript도 새로운 기능들이 추가됨.

     

    → 각 브라우저 버전마다 호환되거나 호환되지 않는 것이 존재할 수 있음.

     '브라우저 버전의 파편화'

    → 파편화를 잡는 이 과정이 웹 쪽에서의 어려움.

     

    5) 반응형 웹

    브라우저의 가로 넓이에 '반응'하여 구성 요소가 변하는 웹

     

    6) 하이브리드 애플리케이션

    운영체제 안에 브라우저가 내장되면서 새롭게 개발이 가능해짐.

    → 애플리케이션 특정 부분에 '브라우저'를 올리는 방식

    → HTML 파일을 불러올 URL을 설정하면 HTML, CSS, JavaScript로 구성된 걸 불러올 수 있음.

    → 웹과 애플리케이션이 혼합된 애플리케이션을 하이브리드 애플리케이션이라고 함.

     

    5. 데이터베이스와 이미지 처리

    데이터는 단 1%의 결점이 없어야 하고 그래서 관리를 하는 게 어려움.

    → 데이터의  '무결성'

    1) '관계형 데이터베이스' : 데이터가 하나 이상의 열과 행의 테이블(또는 '관계')에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 정보 모음

     

     

     

    2) 데이터는 어디에?

    답) 모든 데이터가 서버에만 있는 것도 아니고 클라에만 있는 게 아님.

    회사 사정에 따라, 기능의 특성에 따라, 여러 요소들에 따라서 데이터가 어디에 데이터가 있는지가 다름.

     

    이를 명확하게 알기 좋은 문서가 'API 문서'

     

     3) 이미지 처리

    *이미지 파일도 클라에 있을 수도 있고 서버에 있을 수 있음.

     

    이미지의 성격에 따라 위치하는 바가 다름. 

    Why?

    1. 가격 정책 이미지가 클라이언트에 있다고 하면 클라이언트가 업데이트를 안하면

    클라이언트는 가격 정책이 변경된 걸 모를 수도 있음. 이런 이미지는 서버에 있어야 함.

    2. 그렇다고 이미지를 모두 서버에 위치하면 일일히 불러오는 데 속도가 느림.

    결론 : 데이터 찾을 때 가장 확실한 방법은  'API 문서'


    6. 프레임워크와 라이브러리

     

    1) 프레임워크 : 소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경

     

    2) 라이브러리 : 단순 활용가능한 도구들의 집합, 프레임워크보다 더 작은 개념

     


    Git :  소스 코드의 버전 관리를 도와주는 프로그램.

     

    커밋(commit) : 개발자들이 개발 단계별로 '깃발'을 꽂는 행위

    브랜치(Branch) : 새로운 방향의 개발을 추가해야 할 때 새롭게 가지를 쳐서 작업

    머지(Merge) : 각각의 브랜치에서 작업한걸 병합하는 기능

     


     

     

    댓글