비전공자를 위한 IT지식 01

yeonk·2021년 8월 21일
0

도서 리뷰

목록 보기
1/3
post-thumbnail

1. 머리말 📖

IT 관련하여 베이스가 없던 나.
가장 난감했던 것은 시작을 어떻게 하느냐였다.

어디서부터 공부를 해야하는지, 어떤 것을 공부해야하는지,,
찾고 계획하는 것이 가장 어려웠고 지금도 어렵다.

우선 개념을 머릿속에서 정리하는 것이 가장 좋을 것 같아서 이 책을 읽게 되었다.
비전공자도 기본적인 개념을 이해하기 쉽게 정리가 잘 되어있는 책이다.
나와 같이 시작 단계인 사람들이 읽으면 좋을 것 같다.

책을 읽고 나에게 도움 되었던 내용을 정리해보고자 한다.





2. OT & 프로그래밍 언어 (1~2장)



가장 먼저 알아야할 지식은 무엇일까?

비전공자가 IT 산업에서 일하기위해 가장 먼저 알아야할 지식은 '프로그래밍 언어'가 아니다.

IT 산업은 6개월 뒤의 모습만 예측할 수 있어도 대박이 난다고 한다.

그만큼 변화의 속도가 빠르기 때문에 처음부터 완성된 형태를 정해놓고 무언가를 만드는 것은 위험하다.

IT서비스는 완벽한 프로세스가 없으며, 고객의 니즈에 맞게 발전(기획)하게 된다.

발전을 위해서는 업무에 참여하는 구성원들과의 커뮤니케이션이 가장 중요하다.

그렇기 때문에 가장 먼저 알아야할 것은 커뮤니케이션을 위한 IT지식이다.



프로그래밍 언어 & 운영체제 (OS)

인간의 요구는 어떻게 컴퓨터에 반영되는가?

컴퓨터는 0과 1로 이루어진 기계어를 사용한다.
그렇다면 어떻게 컴퓨터에 명령을 할 수 있을까?

  • 개발자 : 프로그래밍 언어를 통해 문서 작업
  • 컴파일러: 명령을 기계어로 변환



프로그래밍 언어

개발자들은 기존의 것을 발전시키거나 새로운 것을 만들기를 좋아한다.

  • IDE(통합 개발 환경, Integrated Development Environment):
    개발하기 위한 모든 것들을 제공해주는 환경.
    IDE는 대부분 어떤 분야에 특화
    Ex. 안드로이드 스튜디오, 엑스코드 등
  • C언어가 발전하여 Objective-C, C++, 파이썬이 되었다.

  • 프로그래밍 언어는 '저수준'언어'고수준'언어로 구분할 수 있다.
    고수준 언어: 인간 친화적인 언어, 사람이 학습하기 쉽지만 작동이 느림
    저수준 언어: 컴퓨터 친화적인 언어, 낮은 사양 컴퓨터에서도 원활히 작동



컴퓨터의 구성

  • CPU: 머리역할
  • 메모리: CPU의 개인 작업 공간
  • 보조기억장치: 창고 역할(데이터 저장 O, 속도 느림). HDD(하드디스크), SSD



운영체제 (OS, Operating System)

  • 대표적으로 '윈도우', '맥OS', 'iOS', '안드로이드'가 있음
  • 운영체제가 하드웨어를 컨트롤하고 CPU, 메모리, 보조기억장치를 관리
  • 운영체제에 따라 지정된 언어를 통해 프로그램을 만들어야함
    애플: Objective-C, 스위프트
    구글: 자바, 코틀린(Kotlin)
  • 각 운영체제 위에 JVM(Java Virtual Machine)이라는 소프트웨어를 통해 자바 언어로 만든 프로그램이 돌아가게 가능
  • 파이썬(Python)도 자바와 마찬가지로 프로그램을 만들어 윈도우, 맥OS 등의 여러 운영체제에서 설치 및 실행 가능
  • 모든 운영체제 위에서 사용 가능한 장점이 있지만, 속도가 느리다는 단점
  • 모바일에서는 JVM과 같은 개념이 PC보다 상대적으로 덜 발전





3. 네트워크, 클라이언트, 서버 (3장)



IP

  • IP주소는 12자리 숫자를 마침표(.)로 구분
  • 위치에 따라, 컴퓨터에 따라 고유
  • 이동하면 IP주소는 계속 변경
  • IP는 0~255의 숫자만 사용
  • 최근에는 숫자 구분을 4개에서 6개로 늘린 IPv6을 함께 사용

클라이언트와 서버

개발자의 컴퓨터와 사용자의 컴퓨터, 서버와 클라이언트

  • 클라이언트 컴퓨터: 사용자들이 소유한 컴퓨터, '프론트 엔드'
    '클라이언트', '클라', '프론트 엔드', '프론트'

  • 서버 컴퓨터: 주는 컴퓨터, '백 엔드'
    '서버', '백 엔드', '백'


리눅스와 서버 프로그램

  • 리눅스: 운영체제 중 하나이며 무료. 리눅스 위에서 '서버 프로그램'을 돌림
  • 우분투(Ubuntu)는 리눅스의 버전 중 하나
    (cf. 레드햇 리눅스: 레드햇은 리눅스를 개량해서 유료로 판매하는 회사, 품질보장의 장점)
  • 안드로이드 역시 구글이 리눅스를 모바일 운영체제 형태로 개량한 것
  • 서버에는 그래픽 UI가 크게 필요 없으며, 안정적으로 돌아가는 것이 중요



서버 운영

개인이 서버를 운영하게 되면 여러가지 리스크가 발생한다.
그래서 '호스팅 업체'가 존재하는 것이다!

  • 국내 호스팅 업체: cafe 24, 가비아 등
  • 국외 호스팅 업체: AWS(Amazon Web Services) 등





4. API와 JSON (4장)

개발자의 암호문

API

  • 요청을 구분할 수 있도록 하는 '체계'

  • API는 소프트웨어가 다른 소프트웨어의 기능을 쓰기 위해 중간에 필요한 체계

  • API는 클라이언트, 서버와 같은 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계

  • '서버주소/A' 과 같이 표기

  • 주소 뒤에 어떤 문자를 쓰냐에 따라 다른 기능을 수행

  • 서버 개발자가 만들며, 그 결과물이 서버 프로그램

  • API를 통해 요청과 응답을 주고 받을 때는 데이터도 같이 담긴다.

  • SDK(Software Development Kit): API를 제공해주는 '다른 소프트웨어'로, 소프트웨어를 개발하기 위한 도구



데이터 요청

데이터를 다룰 때 기준이 되는 요청이 있다.
바로 CRUD(CREATE, READ, UPDATE, DELETE)이다.

  • C(Create): '올리는' 요청

  • R(Read): '불러오는' 요청

  • U(Update): '바꾸는' 요청

  • D(Delete): '지우는' 요청

  • 데이터를 볼 때는 CRUD 관점에서 바라봐야한다.

  • 이 중 특정 기능이 없다면, 그 기획 의도가 명확해야하며, 이유를 설명해야한다.



REST(Representational State Transfer) API

체계적인 API 사회 운동, RESTful API

  • CRUD를 하나의 주소로 관리

  • 요청에 따라 메소드(Method) 전송

  • POST, GET, PUT/PATCH, DELETE

  • C(Create): POST

  • R(Read): GET

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

  • D(Delete): DELETE

  • RESTful API는 모든 회사에서 통용되는 절대 규칙이 아닌 일종의 사회 운동으로 상황마다 다양한 방식으로 변형해서 사용

응답 코드

  • 'HTTP 상태코드' 검색하여 참고하면 좋음
  • 숫자로 표현
  • 200번대: 문제 없음
  • 400번대: 클라이언트 요청에서 문제
  • 500번대: 서버에 문제가 있는 경우



요청과 응답의 형식

JSON

데이터를 주고받는 주머니, JSON

  • 중괄호, 키(Key), 값(Value), 콜론(:) 사용하여 표현
{
	key: Value
	key2: [1,2,3]
}

{
  "id": "ABC",
  "PW": "12345678"
}
  • 배열도 활용: 대괄호 활용



GitBook

  • 깃북(GitBook)은 깔끔한 API 문서 작성을 도와주는 서비스



Open API

  • 네이버, 카카오 홈페이지 등에서 개발자들이 볼 수 있도록 API 문서를 제공하는 API를 Open API라고 함

  • 특정 횟수 이상 사용하면 돈을 받기도 하며, 프리미엄 기능에 대한 API를 따로 정해놓기도 함





용어 정리

  • 개발 = 프로그래밍
    (cf. 코딩은 프로그래밍의 하위 개념. 하지만 현업에서는 혼용하여 사용)

  • 개발자 = 프로그래머

  • 와이어 프레임: 애플리케이션이나 웹페이지가 어떻게 구성되는지, 어떻게 동작하는지 기획한 문서

  • LAN(Local Area Network): 컴퓨터가 연결된 작은 지역 (아파트, 컴퓨터실 정도의 규모)

  • MAN(Metropolitan Area Network): 도시의 LAN을 하나로 연결

  • WAN(Wide Area Network): 도시와 도시, 나라와 나라를 연결 (MAN 연결)

  • 테이블(데이터베이스): 관계형 데이터베이스와 플랫 파일 데이터베이스에서 테이블(table)은 세로줄과 가로줄의 모델을 이용하여 정렬된 데이터 집합 값의 모임

reference

최원영, 『비전공자를 위한 이해할 수 있는 IT지식』, T.W.I.G

0개의 댓글