본문 바로가기
📝공부, 스크랩/프로덕트

비전공자 입장에서의 IT 기본 지식들

by grow_s0 2022. 10. 8.

'오늘부터 IT를 시작합니다.' 라는 책을 보고 기본적인 지식들을 정리하면 좋을 것 같아 해본다.

이 책을 왜 IT 교양서라고 이름을 붙였는지 알 것 같았다. 단순한 정보 전달이 아니라 다른 교양지식이나 실생활에 겪는 것들을 함께 보여주며 IT 지식을 전달해준다.
비유를 정말 잘 하셔서, 컴퓨팅적 사고 외에도 드넓은 사고를 하신다는 것이 느껴졌다. IT 분야의 기본적인 히스토리나 상식을 알고 싶은 분들께 추천한다.

 


 

프로그래밍 언어를 작성하면 컴파일러와 인터프리터라는 통역사가 이 언어를 기계어로 통역해줌

 

 

리팩터링

  • 이미 작성된 코드의 가독성과 유지보수성을 높이기 위해 내부 구조를 변경하는 것.
  • 일기장 속 글씨는 나만 알아봐도 무방하지만 공개적인 글을 쓴다면 모두가 알아보는 것이 중요

 

 

크롤링

  • 데이터를 수집하고 분류 (콘텐츠 다운로드, 인덱스 생성함)
  • 스파이더, 검색 엔진 봇이라고도 함

스크레이핑

  • 인터넷에 존재하는 데이터를 자동화된 방법으로 수집하는 모든 작업

파싱

  • 일정한 패턴으로 정보를 추출해 무언가 만들어내는 것. 데이터를 원하는 형태로 가공하는 작업이 주요 목적

 

 

HTML

  • 화면에 기본적인 틀을 구성하는 뼈대 역할

HTML5

  • 클라이언트와 서버와의 통신이 가능해짐. 
  • 다양한 부가기능을 통해 액티브 엑스, 플로그인을 사용하지 않고도 웹을 구축할 수 있게 됨

 

 

CSS

  • HTML이 단순히 정보를 전하는 구조라면 CSS는 정보를 전하는 실용성과 디자인이 융합할 수 있는 언어. 
  • 인라인 스타일 : 짧은 문법으로 가장 우선순위로 적용됨. 너무 많이 쓰면 복잡해지고 유지보수가 힘들어짐
  • 내부 스타일 : HTML 안에 CSS 사용하는 방법. HTML 문서 하나로 스타일 시트 관리 가능. 정보와 디자인이 분리해야 하는 현태의 HTML 특성상 좋은 방법은 아니라고 생각
  • 외부 스타일 : CSS 파일 분리.가장 많이 사용. HTML에 구애받지 않고 자유롭게 창작. 여러 페이지를 동시에 스타일 적용할 수 있고 반복 작업을 하지 않아도 됨 => 기성복에 비유할 수 있음

 

 

자바스크립트

  • 상속과 클래스 개념이 없는 객체 기반 언어, 브라우저에 의해 해석 가능
  • HTML 문서 안에 기술 가능하고 함께 수행, 클라이언트 자원을 활용할 수 있음
  • HTML을 화려하게 만들어준 장본인 / 인터랙티브하게 화려하게 보여줄 수 있게 됨

 

 

Node.js 프레임워크

  • 자바스크립트는 웹브라우저에서 동작이 가능.
  • Node.js는 자바와 같은 서버 언어처럼 데스크톱 터미널에서 사용 가능 => 프런트엔드와 백엔드 모두 개발 가능한 언어가 됨

 

 

스크립트 언어

  • 컴파일하지 않고도 실행할 수 있는 언어
  • ASP, PHP, JSP 등이 있음 

 

 

클라이언트 사이트 스크립트

  • 크롬이나 익스플로러처럼내장된 번역기에 의해 서버를 거치지 않고 사용자 쪽에서 처리되는 스크립트
  • JavaScript, VBScript 등

 

 

데이터 베이스

  • 영화 대사처럼 사용자에게 직접적으로 정보를 전달하는 것
  • 관계형DB, 객체 지향DB, 분산DB, NoSQL DB, 그래프, 데이터에어 하우스가 있음

 

서버

  • 클라이언트에게 네트워크를 통해 정보나 서비스 제공.
  • 서버를 통해 전세계가 연결되어서 어떤 정보라도 가져올 수 있음
  • 애플리케이션 서버, 웹 서버, 프록시 서버, 메일 서버, 데이터베이스 서버가 있음
  • 프록시 서버
    • 클라이언트와 서버 중간에 위치하는 것.
    • 클라이언트 요청에 따라 각 서버에 맞게 라우팅해주거나 서버나 클라이언트에 데이터를 추가, 삭제하면 전달해주는 서버
  • 데이터베이스 서버
    • 사용자 정보에 대한 정보를 담고 있음
    • My SQL, MongoDB, Oracle 등이 있음

 

JSON 

  • 언어를 배우지 않아도 JSON 방식을 통해 전달하면 이해할 수 있음
  • 정보를 전달하기 위한 하나의 공통적인 방법

 

<a>

  • 하이퍼텍스트에서 중요한 태그
  • 문서와 문서를 연결하고 빛의 속도로 해외 페이지 열람 가능
  • 배가 출발하거나 정지할 때 가장 먼저 사용하는 도구인 anchor를 뜻 함

 

디도스 공격

  • 새로고침 테러. 서버가 한계에 도달해 이용할 수 없게 됨

 

데이터베이스의 수납

  • 데이터를 쉽게 찾아 사용하기 편한 환경을 만드는 것.
  • 우선순위가 높은 물건은 꺼내기 쉬운 공간에 배치, 고유값 (가장 자주 사용하는 데이터임)을 인덱스라는 공간에 수납하여 쉽게 꺼내쓸 수 있도록 정리

 

관계형 데이터베이스

  • 실무에서 가장 많이 사용.
  • SQL, MySQL, Oracle 등
  • 데이터의 종속성을 관계로 표현하는 것 = 인맥으로 데이터를 관리하는 인플루언서 (테이블 = 모임, 데이터 = 사람, 공존지수가 높은 한 명은 모임과 모임을 연결하여 새로운 관계를 만들어주고 교류할 수 있게 함)

 

고유 값

  • 데이터를 대표하는 값. 유니폼의 숫자처럼.
  • 등번호 같은 고유값을 PK (Primary Key)

 

데이터 정의어 : 데이터 전체 골격을 결정해서 모양을 갖춤. 

  • CREATE : 테이블 생성 (냉장고 구매)
  • ALTER : 테이블 잘못 생성 or 수정 (냉장고 교환 or 반품)
  • DROP : 테이블 삭제 (냉장고 처분)
  • TRUNCATE : 테이블 초기화 (냉장고 안 내용물 정리)

 

데이터 조작어 : 요리에서 레시피와 같은 부분

  • SELECT : 원하는 데이터 추출 (재료 선택)
  • INSERT : 새로운 데이터 추가 (재료를 냉장고에 쌓아두기)
  • UOPDATE : 데이터 수정 (오래된 재료는 버리고 새로운 재료 넣기)
  • DELETE : 데이터 삭제 (사용하지 않을 재료 버리기)

 

NoSQL

  • 비관계형 데이터베이스.
  • JSON 형식으로 여러 정보를 한 곳에 집어 넣는 것
  • 빅데이터를 RDB에 맞게 입력하면 다운타임 발생 => 최소화하기 위해 등장. 

 

프레임워크

  • 설계와 구현을 재사용할 수 있는 일련의 협업화된 형태로 클래스를 제공하는 것.
  • 구조를 결정할 뿐만 아니라 그 위에 개발된 개발자의 코드를 제어하며 구체적이고 확장 가능한 기반 코드를 가지고 있음. (이미 지어진 기본 집을 구매 => 내부에 필요한 것들이나 꾸미는 것을 새롭게 추가/변형)

 

라이브러리

  • 공통으로 사용할 수 있는 기능을 모듈화 한 것.
  • 스스로 동작하는 완전한 프로그램은 아니고 특정 기능만으로 수행하도록 개발한 코드.
  • 사용하는 이유는 책에 담긴 지식을 습득하는 것과 유사

 

동기화와 비동기화 : 지각으로 늦은 데이터를 기다릴지? 먼저 갈 지? 시스템에 맞게 선택하기

  • 동기화 : 순차적으로 한 번에 하나씩 처리, 디버깅이 쉬움, 정확한 순서가 필요한 시스템에 유리
  • 비동기화 : 여러가지 로직을 동시에 처리, 빠르게 결과가 도출됨, 기능과 사용자가 많은 사이트 유리

 

객체 지향이 가진 특징

1. 객체

  • 자신의 속성을 가지고 있으며 다른 것과 식별가능 한 것
  • 객체지향 프로그래밍에서 클래스는 객체를 만들기 위한 확장 가능한 코드 템플릿 (구현 가능한 초기 값을 제공)

2. 캡슐화

  • 중요한 데이터를 보존하고 보호.
  • 내부 정보를 최소한으로 외부에 노출

3. 다형성

  • 서로 다른 클래스의 객체가 같은 값을 받은 후 각자의 방식으로 동작

4. 상속

  • 적은 양의 코드로 새로운 클래스를 작성할 수 있도록 하는 방식

5. 추상화

  • 중요한 특징 추려낸 후 간단히 표현.
  • 여러 가지 요소를 하나로 통합하는 방향성을 가짐.
  • 데이터나 프로세스 등을 의미가 비슷한 개념이나 표현으로 정의해 나가는 과정이면서 각 개별 개체의 구현에 대한 상세함은 갖추는 것.

 

클래스

  • 객체를 정의하는 틀, 설계도
  • 클래스 (붕어빵 틀)는 객체(붕어빵)를 생성하는 기능을 제공
  • 클래스 덕분에 동일한 결과를 얻을 수 있음

캡슐화

  • 캡슐에 약을 담는 것. (비법이 담긴 밀가루 반죽과 팥앙금)

상속

  • 붕어빵에서 잉어빵

추상화 

  • 피카소 그림처럼 중요한 정보만 표현.
  • 미완성된 설계도와 같음.
  • 이를 이용해서 각각 자신이 만들 설계도를 완성하는 것이 효율적

 

API : 추상적인 개념 vs 라이브러리 : API를 이용해 개발된 구현체

 

 


기본적인 CS 지식을 얻을 수 있고, 왜 이런 언어들이 탄생했는지 역사도 알 수 있어 좋았다. 평소 개발자분들께 왜 그렇게 DB를 설계했고, 왜 에러가 발생했는지 등을 묻는데 그때 들었던 설명들이 100% 이해가 안 되어도 경청하며 이해하려 노력했었다. 그러면서 CS에 대해 지레짐작하며 흐름을 이해하고 있었고.. 이 책을 읽으며 더 정리가 되었다. 약간 문법공부를 하지 않고 외국어를 공부하며 지레짐작하다가 문법책을 보게 된 느낌? 

지금 이 내용들도 완벽하게 기억하지는 못 하겠지만, 나중에 개발자와 소통할 때 잔잔히 더 도움을 줄 것 같다는 생각이 든다. :)