JSON Server

JSON Server는 개발 및 프로토타이핑을 위한 가상 REST API를 생성하는 도구입니다. 이를 사용하면 간단한 JSON 파일로 가짜 API를 만들어서 데이터를 관리하고 응답을 제공할 수 있습니다. 주로 프론트엔드 개발자들이 프론트엔드 애플리케이션을 개발하는 동안 백엔드와 협업하지 않고도 가상의 API를 생성하여 테스트하고 개발할 수 있도록 도와줍니다.

JSON Server를 사용하면 다음과 같은 작업을 할 수 있습니다:

  1. 가상 API 서버 구축: JSON 파일을 데이터 소스로 사용하여 가상의 API 서버를 생성할 수 있습니다. 이를 통해 실제 백엔드 없이도 프론트엔드 개발을 진행할 수 있습니다.

  2. 데이터 조작: JSON 파일을 수정하면서 데이터를 추가, 수정, 삭제할 수 있습니다. JSON Server는 변경된 내용을 가상의 REST API로 노출하여 프론트엔드 애플리케이션에서 사용할 수 있도록 합니다.

  3. 라우팅 설정: JSON Server를 사용하여 다양한 엔드포인트를 생성하고 라우팅을 설정할 수 있습니다. 이를 통해 다양한 RESTful API 엔드포인트를 시뮬레이션할 수 있습니다.

  4. 필터링 및 정렬: JSON Server는 쿼리 문자열을 사용하여 데이터를 필터링하거나 정렬하는 기능을 제공합니다. 이를 통해 데이터 검색과 정렬을 시뮬레이션할 수 있습니다.

  5. 인증 및 인가 시뮬레이션: JSON Server는 미들웨어를 사용하여 사용자 인증과 인가를 시뮬레이션할 수 있는 기능을 제공합니다.

JSON Server는 주로 프로토타이핑이나 개발 초기 단계에서 사용되며, 실제 운영 환경에서는 보다 실제적인 백엔드 서버를 사용하는 것이 바람직합니다.

CS 지식

OSI(Open System Interconnection)

OSI (Open Systems Interconnection) 모델은 네트워크 프로토콜 아키텍처의 개념적인 구조를 정의한 것으로, 7개의 계층으로 나누어져 있습니다. 각 계층은 특정한 역할과 기능을 수행하며, 데이터의 흐름과 처리 방식을 추상화하여 표준화하고 상호 운용성을 확보하는 데 사용됩니다.

아래는 OSI 7 계층의 각 계층과 그 역할에 대한 간략한 설명입니다:

  1. 물리 계층 (Physical Layer):

    • 물리적인 연결과 전송을 담당합니다.
    • 전기적, 기계적, 기능적인 특성에 관련된 규격을 정의하며, 비트 스트림을 전기 신호로 변환합니다.
    • 주요 기술: 전기적 특성, 케이블, 허브 등
  2. 데이터 링크 계층 (Data Link Layer):

    • 프레임의 오류 검출 및 수정, 흐름 제어, 매체 액세스 제어 등을 수행합니다.
    • MAC 주소를 사용하여 로컬 네트워크에서 통신합니다.
    • 주요 기술: 이더넷, 스위치, 브리지 등
  3. 네트워크 계층 (Network Layer):

    • 경로 선택과 라우팅, 패킷 전달을 담당합니다.
    • IP 주소와 같은 논리적 주소를 사용하여 여러 네트워크 간의 통신을 관리합니다.
    • 주요 기술: IP, 라우터 등
  4. 전송 계층 (Transport Layer):

    • 데이터 전송의 신뢰성과 효율성을 보장하며, 오류 복구와 흐름 제어를 수행합니다.
    • 포트 번호를 사용하여 애플리케이션 간의 연결을 관리합니다.
    • 주요 기술: TCP, UDP 등
  5. 세션 계층 (Session Layer):

    • 데이터 교환의 세션을 설정, 유지 및 해제합니다.
    • 데이터의 동기화와 대화 관리를 제공합니다.
    • 주요 기술: RPC, NetBIOS 등
  6. 표현 계층 (Presentation Layer):

    • 데이터 형식 변환, 암호화, 압축 등을 수행하여 상호 운용성을 제공합니다.
    • 데이터를 표현하고 변환하여 애플리케이션 계층으로 전달합니다.
    • 주요 기술: JPEG, GIF, SSL 등
  7. 응용 계층 (Application Layer):

    • 최종 사용자에게 서비스를 제공하며, 네트워크 프로토콜을 사용하여 데이터를 주고받습니다.
    • 사용자 인터페이스, 이메일, 파일 전송 등의 서비스를 포함합니다.
    • 주요 기술: HTTP, FTP, SMTP 등

이러한 7개의 계층은 각자 독립적인 기능을 수행하며, 네트워크 통신에서 데이터의 흐름과 처리 방식을 표준화하여 상호 연결성과 통합성을 확보하는 데 사용됩니다.

SSL -> TLS

SSL (Secure Sockets Layer)과 TLS (Transport Layer Security)는 모두 보안 프로토콜로, 데이터 통신의 기밀성과 무결성을 보장하기 위해 사용됩니다. 초기에는 SSL이 사용되었으나, 보안 결함 및 취약점이 발견되어 TLS가 SSL의 후속 버전으로 개발되었습니다. TLS는 현재 널리 사용되는 보안 프로토콜이며, SSL은 안전하지 않다고 간주되어 거의 사용되지 않습니다.

주요 차이점과 특징은 다음과 같습니다:

  1. SSL (Secure Sockets Layer):

    • 초기 보안 프로토콜로서, 1990년대 중반에 개발되었습니다.
    • SSL 2.0, SSL 3.0 등 여러 버전이 나왔지만, 보안 결함과 취약점이 발견되어 사용이 중단되었습니다.
    • 현재 SSL은 보안 결함으로 인해 사용이 권장되지 않습니다.
  2. TLS (Transport Layer Security):

    • SSL의 취약점을 개선하여 만든 후속 프로토콜입니다.
    • TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3 등 여러 버전이 개발되었습니다.
    • TLS 1.2와 TLS 1.3은 현재 가장 많이 사용되며, 보안 향상과 성능 개선을 제공합니다.
    • TLS 1.3은 더 나은 보안과 빠른 핸드셰이크 프로세스를 제공하여 더욱 안전한 통신을 지원합니다.

TLS는 데이터 통신을 보호하기 위해 공개키 암호화와 대칭키 암호화 등 다양한 보안 기법을 사용합니다. 주로 웹 브라우저와 웹 서버 간의 통신을 보호하는 데 사용되며, HTTPS (HTTP Secure) 프로토콜의 기반이 됩니다. HTTPS는 웹 사이트에서 제공되는 데이터의 기밀성과 무결성을 보장하여 사용자 정보와 민감한 데이터의 안전성을 확보하는 데 중요한 역할을 합니다.

TLS를 통해 데이터 통신을 암호화하고 보호함으로써 중간자 공격(MITM, Man-in-the-Middle)과 같은 보안 위협으로부터 사용자와 서버 간의 통신을 안전하게 유지할 수 있습니다.

IP(Internet Protocol)

인터넷 프로토콜 (Internet Protocol, IP)은 컴퓨터 네트워크에서 데이터를 전달하고 라우팅하는 데 사용되는 통신 프로토콜입니다. IP는 인터넷의 기본 프로토콜로서, 데이터를 작은 패킷으로 나누어 전송하고, 각 패킷에는 출발지와 목적지 IP 주소가 포함됩니다. IP는 OSI 7 계층 모델에서 네트워크 계층에 속하며, 주로 IP 주소를 사용하여 호스트 및 네트워크 간의 식별과 라우팅을 수행합니다.

IP의 주요 특징과 개념은 다음과 같습니다:

  1. IP 주소: 각 컴퓨터와 네트워크는 고유한 IP 주소를 갖습니다. IP 주소는 네트워크 식별과 호스트 식별을 포함하며, IPv4에서는 32비트 숫자로 표현되고, IPv6에서는 128비트 길이의 16진수로 표현됩니다.

  2. 패킷 기반 통신: 데이터는 작은 패킷으로 분할되어 전송됩니다. 각 패킷에는 출발지와 목적지 IP 주소, 데이터 조각 등의 정보가 포함됩니다. 이 패킷 기반 통신은 네트워크 상태에 따라 패킷이 다양한 경로로 전달되는 장점을 가집니다.

  3. 라우팅: IP 패킷은 네트워크 간에 라우팅되어 목적지에 도달합니다. 라우터는 패킷의 목적지 IP 주소를 기반으로 최적의 경로를 선택하여 패킷을 전달합니다.

  4. IPv4와 IPv6: 초기에는 IPv4가 주로 사용되었으나, IP 주소 고갈 문제와 인터넷 확장에 따라 IPv6가 도입되었습니다. IPv6는 더 많은 IP 주소를 제공하고 보안 기능을 강화한 버전입니다.

  5. 서비스 타입 및 헤더: IP 헤더에는 패킷의 서비스 타입, 프로토콜 정보 등이 포함됩니다. 이 헤더는 라우팅 및 데이터 전달을 위한 필수 정보를 포함합니다.

IP는 인터넷의 핵심 프로토콜로서, 데이터의 전달과 라우팅을 가능하게 하여 전 세계의 컴퓨터와 네트워크가 연결되어 있는 기반을 제공합니다. 하지만 단순한 데이터 전달에만 사용되므로 보안과 신뢰성 측면에서 추가적인 기술과 프로토콜이 필요합니다.

github pages 정적 사이트 만들기

git repository name을 <깃허브 아이디>.github.io로 설정해야만 사이트의 도메인이 <깃허브 아이디>.github.io로 예쁘게 구성됩니다.

만약 레파지토리 이름을 다른 것으로 설정하게 되면, <깃허브 아이디>.github.io/<레파지토리 이름> 처럼 어색한 url로 생성되기 때문에 주의해야 합니다. 혹시 이렇게 생성했더라도, 이름을 다시 수정하면 정상적으로 변경되기 때문에 걱정하지 않아도 됩니다.

Jekyll

Jekyll은 정적 웹사이트 생성기(Static Site Generator)로, 웹사이트를 만들고 관리하기 위한 도구입니다. Jekyll을 사용하면 마크다운(Markdown)이나 HTML 등의 텍스트 파일과 템플릿을 사용하여 웹사이트를 구축할 수 있습니다. Jekyll은 웹사이트를 미리 빌드하고, 이를 정적인 HTML 파일로 변환하여 제공함으로써 동적인 서버 측 처리 없이 웹사이트를 구동할 수 있도록 도와줍니다.

Jekyll의 주요 특징과 동작 방식은 다음과 같습니다:

  1. 마크다운을 활용한 내용 작성: Jekyll은 Markdown과 같은 마크업 언어로 콘텐츠를 작성할 수 있습니다. 이는 개발자와 작성자 모두에게 쉽고 편리한 방식으로 콘텐츠를 관리할 수 있도록 도와줍니다.

  2. 템플릿과 레이아웃: Jekyll은 템플릿과 레이아웃을 사용하여 웹사이트의 일관된 디자인과 구조를 유지할 수 있습니다. 레이아웃은 공통적으로 사용되는 헤더, 푸터 등의 요소를 정의하고, 콘텐츠 페이지는 해당 레이아웃에 삽입됩니다.

  3. 데이터 파일 사용: Jekyll은 데이터 파일을 사용하여 웹사이트의 동적인 요소를 처리할 수 있습니다. 예를 들어, JSON 또는 YAML 파일을 사용하여 변수를 정의하고 템플릿에서 이 변수들을 활용할 수 있습니다.

  4. 플러그인 지원: Jekyll은 다양한 플러그인을 제공하며, 이를 통해 이미지 최적화, 자동화된 태그 생성, 검색 엔진 최적화 등의 작업을 수행할 수 있습니다.

  5. GitHub Pages와의 통합: Jekyll은 GitHub Pages에서 공식적으로 지원되는 정적 웹사이트 생성기 중 하나입니다. GitHub Pages를 사용하면 GitHub 리포지토리에 Jekyll 웹사이트를 호스팅할 수 있습니다.

Jekyll을 사용하면 웹사이트를 보다 간결하고 빠르게 구축할 수 있으며, 블로그, 개인 웹사이트, 문서 사이트 등 다양한 종류의 웹사이트를 만들 수 있습니다. Jekyll은 Ruby 언어로 개발되었으며, 커맨드 라인 인터페이스를 통해 사용자가 웹사이트를 생성, 빌드, 테스트할 수 있습니다.

profile
Front-end | Web Develop | Computer Science 🧑🏻‍💻

0개의 댓글