1. 1주차 과제2 해결
2. GIT 특강 2차
3. 문법강의 4주차
1. 1주차 과제2 해결
과제1은 num++, num--의 아이디어를 생각해 내지 못해서 해설영상의 도움을 받았지만 과제2는 스스로 오래 고민해서 해결했다.
나의 풀이
function solution(absolutes, signs) {
var answer = 0;
for(i=0; i<absolutes.length; i++) {
signs[i] ? answer+=absolutes[i] : answer-=absolutes[i];
}
return answer;
}
answer를 빈 숫자로 선언하고 반복문으로 for문을 0부터 배열크기까지 돌린 후 삼항연산자를 활용해 true이면 해당 idx의 숫자를 더하고 false이면 빼서 반복이 모두 끝난 후 answer를 반환시켰다.
풀고 제출하니 제일 위에 떠있는 풀이와 거의 일치했다. 아직 이런적이 손에 꼽지만 이럴 때 가장 기쁘다.
2. GIT 특강 2차
- git reset <되돌아갈 커밋> : <되돌아갈 커밋> 으로 reset 하기
- git revert <취소할 커밋> : <취소할 커밋>이 취소된 새로운 커밋 만들기
- git hub / 다른 파일 저장 서비스 의 차이점 : 업로드 대상 = 커밋(버전) / 완성된 파일 자체
- 깃허브 : 원격 저장소 / 나의 컴퓨터: 로컬 저장소
- 클론(clone): (깃허브 상에 존재하는) 원격 저장소를 로컬(클론받은 컴퓨터)로 복제
- 클론을 하면 .git 파일도 같이 복사되므로 클론을 한 저장소에서 git init 할 필요 x
- main == master 브랜치
- origin == 원격 저장소에 붙은 일종의 별명
- origin/HEAD == 원격 저장소 origin의 HEAD
- origin/main == 원격 저장소 origin 의 main
- 푸시(push) : 원격 저장소에 밀어넣기
- 패치(fetch): 원격 저장소를 일단 가져만 오기 - 원격 저장소의 변경사항을 가져오되 병합하진 않는 방식.
- git fetch origin main
- git checkout FETCH_HEAD
- git checkout main
- git merge FETCH_HEAD
- pull: 원격 저장소를 가져와서 합치기
: 패치 + merge
:로컬저장소의 브랜치에까지 원격저장소의 내용이 반영됨. 충돌 가능성있음.
<-> 패치: 내 로컬저장소에는 어떠한 영향도 x
- 풀 리퀘스트(pull request) : 내가 소유하고 있지 않은 원격 저장소에 내 변경사항을 풀(pull) 하도록 요청(request)을 보내는 방식
: "내가 당신의 원격 저장소를 이렇게 변경하고 싶은데, 이 변경사항을 원격 저장소로 풀 해주세요!
- 기여하려는 저장소를 본인 계정으로 포크(복제) 하기
- 포크한 저장소를 클론하기: git clone <복사ssh주소>
- 브랜치 생성 후 생성한 브랜치에서 작업하기
- 작업한 브랜치 푸시하기
- 풀 리퀘스트 보내기
3. 문법강의 4주차
-
콜백함수 : 다른 코드의 인자로 함수가 들어갈 때
함수를 인자로 넘겨받은 코드 예) forEach, setTimeout
-
제어권
1. 호출 시점에 대한 제어권
2. 인자(의 순서)에 대한 제어권
3. 제어권을 넘겨받을 코드에서 콜백 함수에 별도로 this가 될 대상을 지정한 경우 그 대상을 참조
-
콜백함수 내부의 this에 다른 값 바인딩하기 : bind메서드 활용
-
콜백 지옥과 비동기 제어
-
콜백지옥 : 콜백함수를 익명함수로 전달하는 과정이 반복되어 코드의 들여쓰기 수준이 헬 수준인 경우를 말한다
-
주로 비동기적 작업을 수행할 때 발생
-
가독성 / 유지보수 용이성 저하
-
동기 / 비동기
- 동기(sync): 현재 실행중인 코드가 끝나야 다음코드 실행. 오래걸리고 복잡
- 비동기(async): 코드 순서와 무관하게 즉시 다음코드로 넘어감. 먼저 완료되는것부터 내보내기. 웹의 복잡도와 비례
-
콜백지옥 해결방법
- 기명함수로 변환
- 비동기 작업의 동기적 표현 필요
1) promise
2) promise & 클로저
3) generator - iterable 객체
4) promise + async/await