개발자 필수(?)지식
개발자로써 가지고 있으면 좋은 필수적인 지식에 관해 정리해본다.
이미 알고 있는 부분들은 Skip 했고, 개념적으로나 언어적으로 확실치 않았던 것들이 확실해 진 부분 또한 포함되어 있으니 지극히 개인적인 정리글이 될 수 있음.
# Data
## 데이터의 의미
이론을 세우는 데 기초가 되는 사실 또는 바탕이 되는 자료 등을 의미
## 데이터 포맷(Data Format)
데이터는 단순한 정보의 나열이 될 수 있지만, 보통의 경우에는 복잡성을 가지게 된다. 이런 복잡성을 가지는 데이터를 주고 받기 위해서는 특정한 약속(Format)이 정해져 있어야 원활히 데이터를 주고 받을 수 있다. 쉽게 말하면, 데이터를 어떻게 표현해서 작성해놓는가로 생각할 수 있고, 대표적인 데이터 포맷에는 JSON과 XML이 있다.
# JSON(JavaScript Object Notation)
## JSON 특징
JSON은 기본적으로 Javascript의 Object 기반이긴 하지만 다른 점들이 있다.
1. 오직 key - value로 이루어진 값만 담을 수 있으며, Method 또는 undefined는 값으로써 할당이 불가능하다. (null은 가능)
2. 작은 따옴표가 아닌 큰 따옴표를 사용해야 한다.
3. Text로 이루어져있기 때문에 사람과 컴퓨터 모두 읽고 쓰기가 쉽다.
4. 프로그래밍 언어 및 플랫폼에서 독립적이기 때문에, 서로 다른 시스템 간에 객체를 교환하기 좋기 때문에 주로 API 및 config파일에 사용된다.
# XML(Extensible Markup Language)
## XML 구조
1. 중괄호가 아닌 태그를 열고 닫는 형식의 구조의 데이터 포맷이다. (HTML처럼 사용)
2. 최상단에 version과 encoding 방식을 적어주는데, 이 첫 줄을 프롤로그라고 한다.
3. 최상위 태그는 하나만 사용이 가능하다.
<?xml version="1.0" encoding="UTF-8"?>
<CSKnowledgeList>
<CS>
<name>디자인패턴</name> <difficult>5</difficult>
</CS>
<CS>
<name>네트워크</name> <difficult>4</difficult>
</CS>
</CSKnowledgeList>
## XML 특징
1. JSON과 비교했을 때 XML은 태그가 열리면 닫혀야하기 때문에 JSON과 비교하면 조금 더 무거운 데이터 포맷이다.
2. Javascript의 object로의 변환에 조금 더 노력이 필요하다. (JSON은 JSON.parse() Method를 활용하면 바로 변환이 가능하다.)
3. HTML과 비슷한 구조이지만, XML의 태그에는 정해진 이름이 없다.
## XML 필요성
SEO를 적용한 사이트를 제작할 때, 포털사이트의 크롤링 봇이 크롤링을 누락하는 부분이 발생하는데,
1. 사이트의 크기가 너무 클 때
2. 사이트가 제작된 지 얼마 안되었을 때
3. 업데이트가 되었을 때
크롤링이 누락된다면 기껏 SEO를 한 것이 무용지물이 될 수 있는데, 이 때 sitemap.xml 파일을 이용해서 크롤링에 걸릴 수 있게끔 조치를 취해줄 수 있다.
# API (Application Programming Interface)
## API의 의미
둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계계층을 의미. 조금 더 자세하게는 어떤 데이터를 어떻게 주고 받을 것인지에 대한 방법이 정의된 중계계층을 의미한다.
## Web에서의 API
API는 다양한 분야에서 사용하는 용어인데, Web에서의 API는
사용자가 브라우저를 통해 서버로 요청을 보내면 API가 그 중계계층 역할을 하여 요청에 대한 응답을 반환하는 역할을 한다. 조금 더 쉽게는, 사용자가 브라우저를 통해 특정 요청을 했을 때, 우리가 작성한 API를 통해 Web Server에 접근하고, 그 Web Server는 알맞은 데이터를 DB에서 꺼내 사용자에게 반환할 수 있다.
이 때, 얻을 수 있는 효과(장점)로는 보안에 많은 신경을 써야하는 데이터베이스에 대한 직접적인 접근을 막아줄 수 있는 점도 있을 수 있다. (사용자의 요청이 바로 데이터베이스에 가는 것이 아닌 API를 통해서만 가능하기 때문)