[Day 3] 웹 개발 기술 기초

thru·2023년 6월 5일
1

FEDC-TIL

목록 보기
2/21

인력지향 패러다임

오늘 공부한 내용 ⛅

제목을 뭐라고 써야할지 고민하다가 bing 챗봇에 물어보니 오늘 배운 것들을 통칭해서 웹 개발에서 사용하는 기술들이라고 한다. 네트워크와 암호화, 함수형 프로그래밍, 모듈 등에 대해서 기초적인 내용을 학습했다.

변수명 정할 때도 chatGPT가 알려줄 수 있을까?


새롭게 알게 된 내용 🌱

이모지는 length 값이 2

그렇다고 한다.

프로그래밍 패러다임

무엇을 해서는 안되는 지에 관한 규율을 뜻하며, 모두 과거에 만들어진 후 새로 만들어진 패러다임은 없다.

객체지향은 제어흐름의 간접적인 전환에 부과되는 규율

제어흐름의 직접적인 전환은 goto 문을 말하며 구조적 프로그래밍이 제약하는 것
언어 차원에서 goto 문을 지원하지 않는다.
대신 if, while 등의 정제된 전환 기능을 제공한다.

간접적인 전환은 절차지향에서 다형성을 구현하기 위해 함수 포인터를 사용하는 것
마찬가지로 언어 차원에서 함수 포인터를 막는다.
힙으로 옯겨간 함수가 객체지향의 기반인 클래스의 생성자의 시초가 되었다.

함수형은 변수 할당에 부과되는 규율로, 할당문을 사용하지 않는 것을 말한다

객체 지향

데이터와 함수의 조합?

객체 지향 이전에도 프로그래머는 함수에 데이터를 전달하였다.
객체도 본질은 함수

실제 세계를 모델링?

의도가 불분명하고 정의가 모호하다.

이름을 풀어서 설명하는 꼴과 같은 걸까

캡슐화, 상속, 다형성를 사용하는 것?

객체 지향 이전에도 구현이 가능하긴 했다.

그렇다면?

다형성을 안전하고 편리하게 적용할 수 있다는 것이 핵심
이전에는 소스 코드의 의존성이 제어 흐름을 따랐지만 객체지향 이후 인터페이스를 통해 의존성 역전이 가능해졌다.
즉, 객체 지향이란 다형성을 통해 전체 시스템의 소스 코드 의존성에 대한 절대적 권한을 획득할 수 있는 능력

세션 스토리지

로컬과는 다르게 일시적으로 필요한 데이터 저장에 사용한다.
현재 떠 있는 탭 내에서만 유지된다.
일회성 로그인, 입력 폼, 비로그인 장바구니 등


리마인드된 내용 🔨

브라우저 http 응답 과정

URL 해석

프로토콜, 호스트, 도메인, 디렉토리, 쿼리스트링 등으로 이루어져 있다.

DNS 조회

도메인과 IP 주소를 변환하는 DB 시스템으로, 도메인은 사람이 IP주소를 파악하기 쉽도록 지정해둔 주소를 말한다.
Domain Name Space라는 규칙을 따라 도메인을 계층적으로 분산하여 저장한다.
네임 서버가 도메인의 IP 주소를 찾는다

  • Root 서버
    ICANN이 직접 관리
    TLD 서버의 IP 주소 저장

  • TLD 서버
    도메인 등록 기관이 관리
    SLD 서버의 IP 주소 저장

  • SLD (Authoritative) 서버
    실제 개인 도메인과 IP주소의 관계가 저장

DNS를 호출하기 전에 브라우저, OS, 라우터, ISP에 이미 캐시된 내용이 있는지 확인
없으면 받아온 후 캐시한다

ARP

IP 주소를 MAC 주소와 매칭시키는 프로토콜
LAN 내부에선 IP를 일부 공유
각 기기를 구분하는 식별 주소가 MAC
MAC은 너무 많고 연관성이 없기 때문에 논리 주소인 IP 주소를 라우팅에 활용한다.

ARP table 생성

목적지 LAN 내부의 네트워크 요청을 받은 어느 단말의 시점
전달 받은 IP 주소와 자신의 IP 주소를 ARP broadcast 하여 내트워크 내 모든 단말에 전달
전달된 IP 주소가 자신 것이라면 자신의 MAC 주소를 broadcast한 단말에 전달
ARP table에 해당 매칭 정보를 기록하고 목표에 전달

도로 주소도 네트워크 주소도 결국 사람이 편할려고 지은 거니 비슷한 것 같다


선택 과제 🍩

HTTPS

http가 주고받는 텍스트 정보를 중간에서 볼 수 없도록 암호화
공개키 알고리즘 방식을 통해 암호화
서버가 개인키를 가지므로 중간에 가로채도 복호화가 불가능
handshaking 과정에서 서버가 보낸 SSL 인증서를 브라우저가 저장하고 있는 CA 목록으로 검사
서버에 부하를 더 주고 네트워크 재연결시 재인증 필요

Micro Queue

Promise, async/await, process.nextTick, Object.observe 등의 비동기 호출을 넘겨받는다
일반적으로 말하는 Task queue인 Macro queue는 setTimeout, setInterval, setImmediate 등의 task를 WebAPI로 부터 넘겨받는다.
Macro queue보다 우선순위가 높다

Animation Frame

브라우저 렌더링과 관련된 task를 넘겨받는다.
중간 우선순위


느낀점 🎬

사실 객체지향이 뭔지 정확히 정의할 수 없이 관념적으로만 알고있는 상태였는데 효과에 기반한 설명이 명쾌하게 다가왔다. 사실 언어를 깊게 파거나 할 때 외에는 프로그래밍 서적을 읽지 않았는데 다양하게 읽어볼 필요성을 느꼈다. 집 근처 도서관을 가봐야겠다.
포스팅할 때 들여쓰기를 너무 남용했더니 모바일 가독성이 최악인 걸 발견했다. 초반에 발견해서 다행이다..


참고

profile
프론트 공부 중

0개의 댓글