오성국 블로그 이것저것 끄적끄적

코드 스테이츠 9주차

코드 스테이츠를 통해 배운 것을 정리하는 post

무엇이든 보고 듣기는 쉽지만 자기 것으로 만드는 것엔 노력이 필요하다.


  • 학습할 내용


월요일

월요일 TIL 은 화요일 공부내용과 겹처서 종합해서 작성함


화요일

프로미스 객체 명세 찾아보기

ECMA 2021 를 직접들어가서 프로미스 객체 부분을 찾아서 어떻게 명세되어있나 확인을 하고, 실제로 사용되는 모습과 비교해보면서 JS 가 명세를 잘 따르고 있는지 감시?를 했다. 아직 명세서를 보는법이 익숙하지 않아서 찾는것도 어느정도의 시간이 걸렸다. 어떻게 보면 처음 필요에 의해서 찾아본 첫번째 경험인데 나름 재미있었다. 온통 영어밖에 없는 문서에서 아는 메서드 이름이나 객체의 이름이 나오면 그렇게 반가울 수 가 없었다. 다음에도 JS 에대해서 정확하게 알기위해선 자주 들러야겠다

여댬이지만 페이지 로딩속도 진짜 setTimeout((page) => {page.open()}, 10000) 인거 같다.


리턴값에 따라 달라지는 then 의 파라미터

  • 함수가 값을 반환할 경우, then에서 반환한 프로미스는 그 반환값을 자신의 결과값으로 하여 이행합니다.
  • 값을 반환하지 않을 경우, then에서 반환한 프로미스는 undefined를 결과값으로 하여 이행합니다.
  • 오류가 발생할 경우, then에서 반환한 프로미스는 그 오류를 자신의 결과값으로 하여 거부합니다.
  • 이미 이행한 프로미스를 반환할 경우, then에서 반환한 프로미스는 그 프로미스의 결과값을 자신의 결과값으로 하여 이행합니다. » 개봉 완료
  • 이미 거부한 프로미스를 반환할 경우, then에서 반환한 프로미스는 그 프로미스의 결과값을 자신의 결과값으로 하여 거부합니다. » 개봉 완료
  • 대기 중인 프로미스를 반환할 경우, then에서 반환한 프로미스는 그 프로미스의 이행 여부와 결과값을 따릅니다. » 개봉 전

이 문구들을 이해하기 위해 여러모로 실험과 테스트를 진행했다. 그리고 결국 이해해버렸다….


프로미스의 메서드들

promise.all() promise.allSettled() finally race의 각각의 메서드들이 어떻게 동작하는지 정확하게 파악했다. 각각의 목적에 맞게 사용하기 위해서는 어떤동작을 가지는지 정확하게 파악할 필요가 있었다. 특히 finally 같은 경우는 위치에 상관없이 자신의 코드를 묵묵히 실행하며 주위의 promise 흐름에 지장을 주지 않는 특이한 케이스였다.


비동기 프로그래밍 방식의 진화

개발자들이 어떻게 PL 를 진화시켜나가는지 볼 수 있는 대목이였다. 이쁜걸 좋아하는 개발자가 불편한걸 보게되면 어떻게 되는지 볼 수 있었다. 예전의 쓰인 기법들을 보며 지금 사용하는 코드가 어떤 필요에 의해서 만들어진 친구인지 알 수 있었다.


JSONView

웹에서 해당 url 을 열었을 때, json 형식이라면 보기 좋게 뷰를 만들어준다


수요일

클라이언트 서버 통신

fetch 를 이용해서 기존에 만들어져 있는 서버와 통신을 완성 시켰다. Postman 을 이용해서 먼저 서버에 어떤 동작들이 이루워지는지 파악을 하고, js 에서 구현을 시작했다. 스프린트가 노드 환경에서 브라우저 동작들을 테스트하기위해서 뭔가 코드가 마음에 안들었지만 여러 동기분들의 도움으로 이슈를 해결하고 원하는 목표까지 구현을 할 수 있었다.

서버 클라이언트 관련해서 공부해야할 부분이 방대해서 (통신 프로토콜 종류, HTTP 상태코드, 요청 메서드 종류, ajax, 브라우저 동작 방식, 비동기를 통한 동적인 웹페이지 ) 프로미스를 공부한 것처럼 아주 각을잡고 밀도있게 공부를 해야겠다!


목요일

채터박스 클라이언트

기존에 구성되어있는 서버에 api 요청을 통해서 자원을 받아오는 연습을 했다. 예전 회사에서 정말정말 많이 했던 작업이라서 추억 여행하듯 스프린트를 진행했다.

Postman 을 이용해 api 요청 테스트를 먼저 확인한 다음에 js 로 넘어가서 코드를 구현하는 식으로 진행을 했다.


위클리 리플렉션

SE 차례가 와서 발표를 했다. 반응이 나쁘지 않았다. 코드스테이츠에 들어오게된 계기를 다시 상기 시킬 수 있었던 좋은 시간이였다.


금요일

미니 노드 서버

채터박스가 만들어진 서버, 돌고 있는 서버에 요청만 보내는 스프린트라면, 이번 미니 노드 서버는 직접 서버를 실행시키고 클라이언트가 되어서 요청을 보내는 스프린트였다.

서버로 어떻게 요청이 들어오고, 들어온 요청을 처리하는 방법을 경혐할 수 있는 스프린트였다.


주말

토이 5 ~ 9번 복습

동기분들과 각자 풀었던 코드들을 비교하는 시간을 가졌다. 매번 코드리뷰를 할 때마다 느끼는 부분이지만, 각자 코드 스타일이 다 다르고 풀이방법도 다양해서 신선한 충격을 받는다.


HTTP

MDN 의 HTTP 자습서가 있어서 전에 작성했던 OOP 게시물처럼 아주 길게 한번 모조리 정리를 해볼 생각있다. 웹 뿐만아니라 앱을 하더라도 HTTP 는 꼭 필요한 선행지식이기 때문에 이번에 정리를 하면서 확실히 알고 넘어갈 계획이다.