오늘 오전에는 반복문, for문을 사용하는 방법에 대해 복습을 해보는 시간을 가졌다. 기본 for문을 제외하고 for in, for of, forEach, while문 등의 적용방법에 대해 배웠는데, 이것을 사용해서 복잡했던 코드들을 간결하게 만들어 주는 작업이 가능해졌다.
오후에는 어제 배웠던 REST API를 간단하게 만들어보고 전에 만들었던 인증번호 생성기를 API로 사용을 해보는 시간이었는데, 뭔가 새로운 것을 접하다 보니 재미도 있었고 신기한 부분이 굉장히 많았다. 그 다음엔 누군가 내 API를 이용할 때 볼 Docs도 만들어 보는 작업을 했는데, 이는 swagger라는 것을 통해 진행을 했다. 전에 했던 실습과는 달리 좀 지루한 작업이 많았지만, 이것을 제대로 알아야 나중에 협업을 할 때 충돌이 생길 여지가 줄어드니 꼭 알고 넘어가야 된다는 생각이 든다.
리누스 토르발스가 개발한 분산형 버전 관리 시스템이다.깃은 매우 빠른 속도와 분산형 저장소 지원이 특징이다. 오픈 소스 개발의 특성상 여럿이 달려들어 자기 맘에 드는 걸 하기도 하며, 또한 뭘 하나 잘못 붙였다가 이상한 걸 건드려 망하기 쉬운데, 깃은 이런 환경의 특성에 맞게끔 잘 만들어져 있다.
일단 깃의 작업 폴더는 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하고 있는 저장소이다. 즉 자기 컴퓨터에 모든 파일을 다 받아서 하는 셈이다. 작업이 끝나면 깃 원격 저장소로 다시 발행하는데, 여기에서 메인 저장소와 합치기 전 메인 저장소와 격리시키고, 따로 개발 할 수 있는 가지 즉 브랜치라는 것을 만들어 가지의 개발이 완료될 시 메인 저장소와 합치고 가지는 삭제시킬 수 있으며, 개발 중간 중간 꼬리표를 매겨 개발을 더 수월하게 할 수 있다.
깃의 장단점은 오프라인 작업이 가능하다, 속도가 빠르다. 이는 각각의 개발자들이 모두 분산처리 서버의 주인이 되는 셈이므로 서버가 직접 해야 될 일들이 많이 줄어든다.(P2P방식과 비슷), 일시적인 서버 장애가 있더라도, 개발을 계속할 수 있다. 등등이 있고, 단점은 기존의 도구와 달리 덜 직관적이기 때문에 배우기가 어렵다. push를 했다 해서 commit 히스토리가 영원히 안전하게 저장된다고 장담할 수 없다.
이러한 단점이 있어도, 실무에 적합한 기능들이 많고, 누군가가 만든 코드를 내 것으로 가져와 수정을 해 사용할 수 있다는 큰 장점들이 작용을 해서 요즘날에 많은 사람들이 사용을 한다. 깃 아주 유용하다
자바스크립트의 코드 해석기가 실행될 때, 변수의 정의가 범위에 따라 선언과 할당으로 분리되어 변수의 선언을 항상 범위 내의 최상위로 끌어올리는 것을 의미.
이는 변수만 해당되는 것이 아닌 함수도 가능하다. 그러므로 함수 호출을 첫 줄에서 하고, 정의를 맨 마지막 줄에서 한다 해도 아무 문제없이 동작을 하게 된다.
하지만 이 특징이 예상치 못한 버그를 일으킬 수도 있는데, 예를 들면
var x = add(a,b)
return x;
function add(c,b) 이런식의 코드가 있다고 했을 때, 코드 해석기는
var x = undifined;
function add(c,d)
x = add(a,b)
return x 이런 순서로 코드를 해석하게 된다.
호이스팅의 개념을 이해해야 원치않는 undefined가 출력되는 것을 막을 수 있다. ES6에서는 var function 대신에 let과 함수 표현식, 함수 선언식등이 추가가 되어 이를 사용한다면 호이스팅을 막을 수 있다.