비전공자를 위한 이해할 수 있는 IT 지식을 읽고 요약한 글입니다.
1) 프로그래밍 언어가 언어라고?
컴파일러 → 컴퓨터와 사람의 언어를 중간에서 해석하고 전달하는 것
2) 개발자는 앉아서 뭐하는거지?
통합 개발 환경 → IDE (Integrated Development Environment)
ex) Android Studio, Xcode, Eclipsse, Pycharm
3) 개발 언어가 많은이유?
고수준 언어: 인간 친화적
저수준 언어: 컴퓨터 친화적
4) 컴퓨터에 대하여..
CPU: 컴퓨터의 머리 + 메모리 + 보조기억장치: HDD, SDD 등 + 메인보드
5) 운영체제
IOS, 안드로이드 같은 운영체제는 우리의 하드 웨어를 대신 컨트롤하고 관리해준다.
6) 자바를 최신으로 유지해야하는 이유?
자바는 여러개의 운영체제 위에 Java Virtual Machine이라는 소프트웨어를 만듦
→ JVM 위에서 자바 언어로 만든 프로그램이 돌아갈 수 있도록 만들었음
→ 자바로만 프로그램을 만들어도, 모든 운영체제에서 사용할 수 있게 됨
1) 네트워크
LAN (Local Area Network): 컴퓨터가 연결된 작은 지역
MAN (Metropolitan Area Network)
WAN (Wide Area Network)
IP: 컴퓨터의 주소, 0~255까지 사용가능, 최근에는 숫자 구분을 6개로 늘린 IPv6 사용
2) 클라이언트
일반적으로, 컴퓨터를 의미. 그 중에서도 서비스를 사용하는 사용자가 소유한 컴퓨터
3) 서버
백엔드, 운영하는 컴퓨터
4) 우분투?
리눅스 → 운영체제 중 하나, 주로 서버를 돌리는데 사용함, 무료
리눅스의 유명한 버전 중 하나가 우분투
레드햇 리눅스라는 유료 버전도 있음
안드로이드는 구글이 리눅스를 모바일 형태로 개량해서 발전시킨 운영체제
1) API?
서로 다른 프로그램에서의 약속. 요청과 응답을 주고 받을 수 있게 만든 체계.
2) CRUD?
Create / Read / Update / Delete
CRUD 별로 주소를 관리하고 생성되게 되는데, 너무 많아지는 문제 발생
→ REST API 탄생
3) REST API?
Representational State Transfer - 체계적인 API
CRUD를 하나의 주소로 관리하고, 해당 요청을 보낼 때 파악할 수 있는 스티커 = 메소드를 붙임
1) Create : POST
2) Read : GET
3) Update : PUT, PATCH
4) Delete : DELETE
4) 200, 400, 500?
200번대: 성공
400번대: 문제가 클라이언트에 있는 경우
500번대: 문제가 서버에 있는 경우
5) SDK?
Software Development Kit로 소프트웨어를 개발하기 위한 도구
소프트웨어를 개발할 때 도움을 주는 다른 소프트웨어
ex. 구글 지도 SDK 사용 시, 내 소프트웨어에 구글 지도 기능 넣을 수 있도록 도와줌
6) JSON?
요청 (Request)를 보냈을 때, 응답 (Response)의 형태가 각각 너무 다름
→ 유명한 형식을 정해서, 다 같이 쓰자!
이전에는, XML이 유명했고, 현재는 JSON이 유명
## json 형태
{
키1 (KEY): 값1(Value)
키2 (KEY): 값2(Value)
}
변동이 가능한 회사 정책 등에 대한 정보는 어플리케이션에 넣지 않고 API로 서버에서 불러옴
1) HTML (Hyper Text Markup Language)
운영체제나 프로그램에 상관없이 일정한 형식이 언제나 동일하게 보이도록 하는 개념의 문서
2) CSS (Cascading Style Sheets)
HTML에 디자인 요소 추가
HYML + CSS → 퍼블리싱 작업 / 퍼블리셔라고 부름 혹은, 마크업이라고 부름
3) Javascript
웹브라우저 위에서 동작하는 프로그래밍 언어
최근에는 node.js라는 서버측 자바스크립트가 각광받고 있습니다.
또한 MongoDB와 같은 친 JavaScript 데이터베이스를 사용하면 클라이언트부터 서버 그리고 데이터베이스까지 모든 부분을 JavaScript 기반으로 구현할 수 있습니다.
또한 구글 Apps 스크립트등의 사례에서도 볼 수 있듯이 자바스크립트는 다양한 플랫폼을 프로그래밍적으로 제어하기 위한 도구로 폭넓게 채택되고 있습니다.
JavaScript의 시대라고 할만합니다. (생활코딩)
4) 브라우저의 파편화
웹 프론트엔드 개발자는 소비자의 브라우저의 종류와 버전에 받게 동작하도록 코드를 작성해야 함
5) 반응형 웹?
브라우저의 가로 넓이에 반응하여 구성 요소가 변하는 기술
6) 네이티브 어플리케이션?
원래 정해놓은 언어들을 사용해, 운영체제 자체의 기능을 사용하는 것
ex) IOS - 스위프트, 오브젝트 C / 안드로이드 - 자바, 코틀린
7) 하이브리드 어플리케이션
앱내의 특정 부분에 브라우저를 올려두고, HTML 을 불러올 URL을 설정해두는 것
관계형 데이터 베이스 (RDBMS)
MS SQL, Oracle DB, MySQL 등
1) 프레임워크?
어플리케이션을 만들 때, 미리 제공해주는 사전? 혹은 가이드 같은 것
AppKIT : 맥
UIKIT : IOS, tvOS
1) 깃
개발자가 개발 단계별로 커밋 (기발 꽂기)을 하고 커밋 로그 (메모)를 작성하도록 할 수 있음
브랜치 - 가지 뻗기 / 새로운 개발 방향 추가
머지 - 합치기
ex. 깃허브 등
2) 스케치, 제플린, XD?
개발자와 디자이너간의 소통을 돕기 위한 툴