20210403 JavaScript 실습 뿌신 열한번째 주

이번 주는 중간에 파이썬 프로젝트도 껴있었고 배운 것들을 두뇌풀가동해서 실습과 프로젝트 기획에 쓰느라 여러모로 빡센 한 주였다. 머리로만 알던 것이 브라우저에서 구현이 되고, 프로젝트로 무엇을 연습할 수 있을지 윤곽이 잡히니까 공부하느라 힘든 게 다 보상받는 느낌.

배운 것들

  • 비동기함수
    • 동기와 비동기의 차이(sleep함수와 setTimeout함수)
    • 순서 보장이 되지 않는 비동기함수의 문제를 극복하기 위한 방법들
    • blocking이 일어나는 이유와 동기처리의 문제점
    • 비동기처리하는 방법, 특히 promise 객체 활용법
  • 서버 요청/응답과 HTTP 메서드
    • 개발자 컴퓨터에 CS 환경 구축하여 loopback 환경으로 데이터 주고받기
    • express 라이브러리를 활용하여 비동기처리로 CRUD 해보기
    • REST API를 지향하여 Methods (GET/POST/PATCH/DELETE) 넣어서 요청하기

실습한 것들(JavaScript)

  • Todos List 웹페이지 비동기처리
    • 서버에서 받았다고 치고 작업했던 모든 함수들을 비동기처리로 서버의 데이터에 반영시켰다.
    • HTTP 메서드를 활용하여 서버에 요청/응답하는 코드를 작성했다.
  • js를 활용한 다양한 예제 풀기
    • toggle navigation, counter, 아날로그 시계, 스탑워치 등을 만드는 예제 구현

python 미니프로젝트(3/30)

  • iOS 에 Dash라는 앱을 통해 각종 언어와 라이브러리/프레임워크의 documentation을 다운받을 수 있다. documentation을 잘 읽자
  • 파이썬과 다이아스포라 영상을 보면 파이썬을 이해하는 데 큰 도움이 될 것(어떤 방식으로, 왜 이런 기능들이 추가되었는지 알 수 있다).
  • Reverse Engineering과 Cloning의 차이
    • Reverse Engineering : 정적인 분석(파일을 실행하지 않고 확장자나 dll을 통해 코드를 disassemble하여 기게어를 분석)과 동적인 분석(파일을 실행하여 나오는 결과물을 정적인 분석과 비교하며 확인)
    • Cloning : 게임이나 앱 등의 동작을 보고 구현을 해보는 것
    • Reverse engineering은 훨씬 더 심오한 분석으로, 코드가 다 날라갔는데 관련 문서조차 없을 때나, 경쟁사 게임이나 앱을 훔쳐오고 싶을 때 사용한다.
  • 세상에서 가장 재밌는 주사위 게임을 OOP 중심으로 프로그래밍하여 CLI에서 플레이할 수 있게끔 cloning 프로젝트를 맛보았다. (나는 중간에 일이 있어서 가야만 했다…)

느낀 점

  • 오랜만에 본 울군샘은 반가웠지만 cloning 프로젝트가 또 엄청 challenging해서 코딩세계가 호락호락하지 않음을 깨닫게 해주셨다.
  • 서버와 연결해서 데이터를 받아오는 것을 해보다니 정말 감개무량하다.
  • 예제 구현은 시간이 오래걸려서 그렇지 하면 되긴 되는데, 머리를 하도 쓰니까 당이 떨어지는 느낌이다. 다 못한 것들을 주말에 해야겠다.
  • 다음주는 프로젝트인데 잘 할 수 있을지 떨린다.