TIL 23-05-24

level·2023년 5월 24일

TIL

목록 보기
9/95

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)을 보내는 방식
    : "내가 당신의 원격 저장소를 이렇게 변경하고 싶은데, 이 변경사항을 원격 저장소로 풀 해주세요!
    • 풀 리퀘스트
    1. 기여하려는 저장소를 본인 계정으로 포크(복제) 하기
    2. 포크한 저장소를 클론하기: git clone <복사ssh주소>
    3. 브랜치 생성 후 생성한 브랜치에서 작업하기
    4. 작업한 브랜치 푸시하기
    5. 풀 리퀘스트 보내기

3. 문법강의 4주차

  • 콜백함수 : 다른 코드의 인자로 함수가 들어갈 때
    함수를 인자로 넘겨받은 코드 예) forEach, setTimeout

  • 제어권
    1. 호출 시점에 대한 제어권
    2. 인자(의 순서)에 대한 제어권
    3. 제어권을 넘겨받을 코드에서 콜백 함수에 별도로 this가 될 대상을 지정한 경우 그 대상을 참조

  • 콜백함수 내부의 this에 다른 값 바인딩하기 : bind메서드 활용

  • 콜백 지옥과 비동기 제어

  • 콜백지옥 : 콜백함수를 익명함수로 전달하는 과정이 반복되어 코드의 들여쓰기 수준이 헬 수준인 경우를 말한다

  • 주로 비동기적 작업을 수행할 때 발생

  • 가독성 / 유지보수 용이성 저하

  • 동기 / 비동기
    - 동기(sync): 현재 실행중인 코드가 끝나야 다음코드 실행. 오래걸리고 복잡
    - 비동기(async): 코드 순서와 무관하게 즉시 다음코드로 넘어감. 먼저 완료되는것부터 내보내기. 웹의 복잡도와 비례

  • 콜백지옥 해결방법

  1. 기명함수로 변환
  2. 비동기 작업의 동기적 표현 필요
    1) promise
    2) promise & 클로저
    3) generator - iterable 객체
    4) promise + async/await

0개의 댓글