오늘은 꼭 Today I Learned가 될 수 있도록,,,
js에서도 프로토타입을 사용해서 객체
를 생성할 수 있다!
생성자 함수 안에 prototype을 사용해 속성이나 메서드를 추가하면, 하위 객체들은 상위 객체들을 참조한다.
하위 객체들은 각자 __ proto __ 라는 객체를 내부적으로 갖게 되는데 이 내부에서 상위 객체를 링크한다.
prototype을 사용하면 객체를 생성할 때마다 공통된 부분이 생성되는 게 아니라 상위 객체를 참조하기 때문에 메모리를 효율적으로 사용할 수 있다.
기존 객체를 재사용할 수 있다
Object.create(proto[, [propertiesObject])
이 메서드를 사용하면 {}인 빈 객체가 생성된다! 그리고 __ proto __에 인자로 전달된 프로토타입 객체가 링크된다. → 프로토타입 링크
HTTP 통신은 항상 단발성, 상태가 존재하지 않는다. HTTP Request 헤더에 쿠키를 담아 서버에게 정보를 전달한다.
쿠키
는 프론트엔드에서 저장하고 관리하는 데이터들, 브라우저를 닫아도 유지된다. 취약점이 존재하는데, XSS 공격을 당할 수 있다. HttpOnly 옵션을 사용해 막을 수 있지만 최근에는 SPA로 웹사이트를 만들어 사용하기 어렵다.
쿠키에 HTTP Session Id를 식별자로 담아 클라이언트와 서버 간 통신이 가능하다. 세션은 서버에 파일로 저장되기 때문에 사용자가 엄청 많아진다면 저장공간이 없어져서 서버가 정상 동작할 수 없다. 또, 인증 정보가 퍼져있어서 제대로 된 값을 응답하지 못할 수 있다.
서버와 클라이언트 간 인증은 jwt 같은 별도 토큰 사용!
CCS
: code point를 식별자로 갖는 코드화된 문자들의 집합. ASCII도 포함된다.CES
: CCS를 8bit 집합에 대응시킨다. CCS와 CES는 1:1 대응된다!위의 대응 과정을 인코딩
이라고 한다. 문자를 실제 시스템이 인식할 수 있는 값으로 변환시키는 과정이다.
유니코드
는 0x0 ~ 0x10FFFF의 4byte 영역을 사용한다. 2byte보다 큰 문자를 표현할 때는 Surrogate Pair를 이용한다. 우리가 사용하는 대부분의 문자, 이모지 등은 BMP 영역에 들어있다.
이건 따로 자세하게 포스팅을 해야할 것 같지만,,, 간단하게 써보자면 특강을 통해 commit, push, pull, fork 말고도 훨~씬 유용한 기능이 많다는 것을 알았고 git을 너무 무서워하지 말아야겠다고 느꼈다! 얼마 전에 상위 레포에 push하는 과정에서 conflict가 발생했었는데, 내 코드만 잘못되면 상관없지만 괜히 남의 코드가 다 날라가버릴 거 같은 두려움에 떨었던 기억이 있다. 이제는 conflict가 발생해도 무서워하지 않고 하나하나 고칠 수 있게 됐다 😼
stash
는 방금 프로젝트를 진행하며 바로 사용해봤는데 정말 편하다. 팀원이 올려놓은 코드를 pull했는데 내 로컬 코드에 변경 사항이 있어서 pull이 안되는 상황이었다. 아직 commit을 하고 싶지 않은 상태였어서 stash를 사용해 넣어놨다가 pull한 후 다시 git stash pop
을 사용해 꺼내서 좀 더 진행한 후 원하는 때에 commit해서 push할 수 있었다!! 진짜진짜 유용한 기능
써보긴 했는데 더 연습이 필요하다. 정규표현식 관련 메서드랑 선택 과제로 나온 Run-length encoding 관련해서 더 공부해봐야한다.
어제 스코프와 클로저에 대해 공부하다가 이벤트 루프도 엄청 많이 만났는데(?), 좀 더 찾아보자!
함수형 프로그래밍의 장점이 어떤 상황에서 극대화되는지, 필요성 등에 대해 알아봐야한다.
어제 TIL을 작성하며 너무 부담감을 느꼈던 거 같아서 오늘은 힘을 좀 빼고 써봤다,, 어제보다 훨~씬 편하게 잘쓰였지만 그만큼 내용이 부족한 것 같다. 일단 적응기간이니깐 너무 부담 갖지말고 써보자!! 꾸준히 쓰다보면 발전할 것이다~