항해 3주차 WIL
keyword : 콜백함수, HTTP
0. 비동기와 동기를 공부하고 난 뒤에 좀 더 이해하게 된 콜백 이란?
우리가 특정 작업을 비동기적으로 처리하려면 당연하게도 컴퓨터에게 이 작업이 비동기로 처리될 것이라고 알려줘야하고, 그 작업이 처리된 이후에야 할 수 있는 작업들을 적어둬야 한다. 여기서의 콜백은 "지금 뒷방에서 작업이 끝났으니까 만약 돌릴 수 있으면 아까 거기로 돌아가서 작업 이어서 해!" 에서의 "아까 거기로 돌아가"와 같은 것.
1. 콜백 함수?
야 우리가 전달한 함수를 나중에 불러줘! call back!
함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수를 콜백 함수라 하며, 함수의 외부에서
콜백함수를 전달 받은 함수를 고차함수라고 한다.
사실 함수의 인자로 함수를 전달하는 경우는 foreach, map, filter와 같은 배열의 메서드에서 경험해봤음.
2.
공통된 하나의 로직을 분리해서 공통화 하는 행위를 '추상화' 한다고 한다.
=복잡함 속에서 필요한 관점만을 추출하는 행위를 추상화라고 한다.
물론 추상화는 더 많은 뜻을 가지고 있지만, 기본적인 맥락에서는 위와 같은 행위가 추상화라고 봐도 무방 할 것 같음.
추상화는 프로그래밍 패러다임을 이해하는데 매우 근본적인 개념이기 때문에, 나중에라도 꼭 공부하고 넘어가야 할 주제. 실제로 위와 같이 추상화를 하면, 단순하게 공통적인 부분을 줄이는 정도가 아니라, 개념들간의 계층이 생기는데 이것을 추상화 단계라고 한다. 그리고 이러한 추상화 단계는 코드를 관리하고 설계하는데 좋은 기준이 된다.
콜백함수의 아이디어는 위와 같은 패턴에서 시작됐다.
"제어권"같이 어려운 개념으로 설명되어 있기는 하지만, 본질은 위와 같은 콜백함수의 아이디어에서 시작한다.
함수의 호출로 해당 함수에 제어권이 넘어가고, 해당 함수가 다른 함수를 넘겨받는다면
넘겨받는 함수(콜백함수)의 실행시점을 적절하게 결정해서 실행시킨다.
Q. 제어권?
제어권은 자신(함수)의 코드를 실행할 권리 같은 것이다. 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려준다..
Q. 호이스팅?
var변수와 function declaration 이런 함수 선언들이 제일 위로 올라가는 것
Q. 콜백 지옥
( 콜백 → 콜백 → 콜백 → … ) 이와 같은 형식으로
체인이 길어지고 함수안에 함수안에 함수 같은 모양이 나오는거다.
익명 함수로 전달하는 과정이 반복되어 코드의 들여쓰기 수준이 감당하기 어려워지는 현상.
가독성이 떨어지고 코드를 수정하기도 어렵다.
3. HTTP ?
- 데이터를 주고 받는 양식을 정의한 "통신 규약"중 하나가 HTTP입니다! (통신 규약: Protocol)
- 매우 범용적인 양식을 가지고 있어 전 세계에서 제일 널리 쓰이는 통신 규약입니다. (거의 만능!)
- 여기서 말하는 통신 규약이란, 컴퓨터끼리 데이터를 주고 받을때 정해둔 약속을 의미합니다.
- 비유를 해볼까요?
- 제가 여러분에게 한국어로 말을 걸면 여러분이 제 말을 한국어로 이해하듯이, 갑자기 제가 독일어나 불어로 말한다면 알아듣지 못하겠죠?
- 혹은 제가 같은 한국말로 말하더라도 여러분이 잘 알고 있던 표준어가 아닌, 우리가 모르는 아주 아주 작은 어느 지방에서만 사용하는 이해하기 난해한 사투리를 사용한다면요?
- 이렇듯이 여러분은 앞으로 수업을 진행하면서 HTTP라는 통신 규약을 이용하여 서버나 클라이언트(브라우저)끼리 의사 소통을 할 수 있게 됩니다!
- 비유를 해볼까요?
- 현대에 존재하는 대부분의 웹 서버가 HTTP를 기반으로 데이터를 주고 받습니다. 또한 모든 브라우저는 HTTP 프로토콜을 기본으로 지원하기 때문에 여러분은 매일 HTTP를 이용하는 셈이 됩니다
HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버 프로토콜이란 (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미합니다. 하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성됩니다.
프로토콜 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN
프로토콜은 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계입니다. 기기 간 통신은 교환되는 데이터의 형식에 대해 상호 합의를 요구합니다. 이런 형식을 정
developer.mozilla.org
<회고>
저번주서부터 편도선염이 낫질 않아서 컨디션이 최악이였다.
몸살, 두통, 오한, 발열, 목 부음
처음엔 코로나인가 의심스러웠는데 다행히(?) 편도선염이였다.
1년에 한번씩은 꼭 걸리는것 같다
골치아픈 일이 한꺼번에 생기면서 몸에 부담이 왔었던 것 같다.
이에 느낀점은 아플 땐 기본 코딩 조차도 머리가 안돌아 간다는 점.
진도 따라잡기가 어렵다는 점.
시험을 정신나간 상태로 치르다 보니 실수가 많았던 점.
컨디션 조절의 중요함을 매일 절실하게 느끼고 있다.
살면서 가장 최악의 상황을 겪고 있지만, 부디 이겨내서 코딩에 좀 더 몰입하자 나 자신. 힘내자.