200804_TIL

oh_ji_0·2020년 8월 4일
1

TIL

목록 보기
7/61

Today I leaned

  • Command Line
  • 버전 관리 시스템 & Git
  • Koans 통한 개념 정리

[Command Line]

  • Command Line 장점

    빠르다, 강력하다, 접근성이 좋다

  • NIX(LINUX/UNIX)

    서버 시장에서의 nix 점유율이 매우 높다

    AWS 및 Azure 등에서 제공하는 서버는 대부분 nix 계열

    오픈소스

  • Commands

    ls - 현재 디렉토리 내 파일 리스트 출력

    cd - 디렉토리 이동

    ~ 홈 디렉토리 ,

    / 루트 디렉토리 (시스템 최상위 디렉토리) ,

    . 현재 디렉토리,

    .. 부모디렉토리,

    \ 폴더 내의 공백

    pwd - 현재 디렉토리 확인

    clear - 터미널 기록들 삭제

    touch - 빈 파일 생성

    touch [ file_name ]

    mkdir - 디렉토리 생성

    mkdir [ dir_name ]

    mv - 파일 및 디렉토리 옮기기

    mv [ file_or_dir ][ target_dir ]

    cat - 텍스트 형태의 파일 확인

    cat [ file_name ]

    cp - 복사

    cp [ file ][ target_dir ]

    cp -r [ folder ]

    rm - rm 명령어는 정말 삭제할 것인지 확인을 하지 않으며, 삭제된 파일은 바로 완전 삭제가 된다.

    rm [ filename ]

    rm -r [dirname]

    chown - 파일 소유권 변경

    chown [ myuser:mygroup ][ filename ]

    expolorer - 현재 폴더를 windows 파일관리자에서 확인

    open - 현재 폴더를 macOS finder에서 보기

    code - 현재 폴더를 VS Code 에디터로 열기

    참고: Command 옵션

  • sudo

    관리자 권한으로 실행

    가능한 한 최소 사용, user 권한으로 사용

    한 번 인증하면 그 이후는 생략

    sudo로 만든 파일은 루트 계정이 아니고선 다른 계정에선 수정할 수 없다

  • apt

    우분투 install 시 사용하는 패키지 매니저

  • cli 프로그램

    git / package manager / vim / aws cli

[ 버전 관리 시스템 ]

  • 작성한 내용들을 보존해야 할 필요성으로 탄생

  • 이전 버전 백업, 협업을 위한 도구

    날짜 별 - 파일 별 코드 관리

  • 커밋을 통한 스냅샷 저장. 변경사항을 한번에 파악하기 용이

  • 가장 대중적인 버전 관리 시스템 - git

[ git ]

  • Distributed

    • 분산 시스템
  • Fork - 다른 유저의 레포지토리 전체를 복사해옴

  • Clone - 로컬 레포지토리로 원격 코드를 복제해옴

  • Push - 로컬 레포지토리 변경 사항 커밋을 원격 레포지토리로 반영 (업로드 개념)

  • Pull - 원격 레포지토리 변경 사항을 내 로컬 레포지토리에 반영. (병합, 다운로드 개념)

    git pull upstream master - fork 해온 메인테이너 레포지토리에서 바로 Pull 해올 경우 사용. (단 git 에서 upsteam 리모트 설정을 추가로 해줘야 가능하다 - git remote add upstream <URL>

  • git command

    add , commit , push , fetch , checkout , merge

  • git fetch 와 pull 의 차이

    pull

    원격 저장소로부터 파일을 다운하고 병합한다.

    fetch

    원격 저장소로부터 파일을 다운한다.

    fetch 를 사용하면 원래 내용과 바뀐 내용의 차이를 알 수 있다.

    세부 내용 확인 후 병합(merge) 를 해야한다.

  • Staging Area

    • 스테이지에 파일이 올라가면 커밋이 가능해진다.

    • 커밋 - 스냅샷 저장.

      커밋 메세지를 반드시 적어줘야한다. (변경 사항의 기록)

      git commit -m "message"

      협업을 할 때 변경 사항에 대해 바로 파악하는데 용이하고,

      작업 기록 추적 가능.

  • Repository

    작업 흐름을 한눈에 파악할 수 있다.

  • Branching and merging

    • Branching - 코드 분기

    • Merging - 분기된 코드 병합

      브랜칭 예) master , develop(개발중) , feature ( 새로운 기능 추가할 때 )

    • 브랜칭 머지 전략의 중요성

      • 안정성을 추구하는데 도움이 된다.
  • Data Assurance

[ Javascript Koans 학습 정리 ]

  • 유닛 테스트

  • expect()

    assertion 함수 중 하나, 코드의 결과가 함 수 첫번째 인자와 match 되어야 함.

    • toBe() 타입까지 같아야한다
    • toBeTruthy()
    • toEqual()

[ 개념 정리 ]

  • 배열 복사 후, 복사된 배열의 값을 바꾸면 기존 배열도 변경된다.

    • 복사하면 새로운 배열은 독립 배열이 아닌 기존 배열과 같은 배열을 참조한다.
    • 독립된 배열을 복사하고 싶으면 새로운 변수에 기존 배열을 할당하는 것이 아닌 slice와 같은 방법을 사용하여야 한다.
  • 배열 pop() , push(), unshift(), shift() 는 모두 immutable이다.

    pop은 마지막 요소를, 나머지는 삭제하거나 추가한 그 요소 자체를 반환한다.

  • 상수 const

    재할당 금지

    const 로 선언해도 배열의 요소에 접근할 수 있다

    상수 변수, 객체 를 선언해도 배열의 요소 및 객체 속성을 접근 , 추가 및 삭제 할 수 있다.

  • spread syntax

    스프레드 문법으로 배열 및 객체를 이어 붙일 수 있다.

  • Function

    • 함수 내에 선언된 let 변수도 return을 선언하면 밖에서 조회가 가능하다.

      그러나 바깥의 변수에 덮어씌어지지는 않는다.

    • return 함수명(); 하면 실행된다.

    • 클로저

    • 파라미터 값이 1개만 요구할 때 여러개를 넣게 되면 앞 쪽 파라미터만 유효하다.

    • 파라미터 값이 요구한 값보다 적게 들어오면 undefined를 반환한다

  • Array(num) 요소가 n개인 배열 생성

  • Array(num).join(keyword)

    요소가 num개인 배열 사이사이 keyword를 넣는다. keyword는 num-1 번 반복

  • Date.prototype.getFullYear()

    const moonLanding = new Date('July 20, 69 00:20:18');
    console.log(moonLanding.getFullYear()); //1969

[추가 공부]

  • 클로저 이해를 위한 추가 공부가 필요할 것 같다.
  • 스프린트 리뷰 & 오늘 진행한 오피스 아워에 대한 복습
  • 헬프데스크 질문들 리뷰 및 정리
  • 코어 자바스크립스 서적 읽기

[Comment]

@@ 오늘은 Koans를 이용한 유닛테스트를 통해 기존에 학습한 변수, 상수, 객체, 배열, 함수와 파라미터, 클로저, 스코프 등에 대해 학습했다. 내일까지 이어질 이 Koans 활동은 Jasmine으로 이뤄진 테스트 코드가 통과될 수 있도록 코드를 고치는 일종의 퀴즈 형태의 활동을 말한다. 이미 여러번 암기하고 코플릿을 풀면서 분명 다 안다고 생각했지만, 나도 모르는 사각지대(?), 헷갈릴 수 있는 개념들을 문제화하여 풀다보니 너무 신기하고, 정말 잘 짜여진 문제라는 생각에 박수가 저절로 나왔다.

역시 그냥 달달 외우는 것보단 어떤 유형에 대해서 답을 고민해보고 코드를 찍어보고 해야 막연했던 개념도 머리에 들어오고, 내가 모르는 것이 뭔지 알 수 있게 되는 것 같다

(그런 것들만 아주 감쪽같이 모아놓은 코드스테이츠 문제들에 또 한번 놀랐다...._)

아직 클로저가 헷갈리고 개념이 잘 안잡혀서 디버깅 통해서 코드가 도는 과정을 계속 눈으로 확인했는데, 그래도 여전히 조금은 어렵게 느껴진다. 내일 레슨이 스코프와 클로저니까 강의를 들으며 꼼꼼히 이해하도록 노력해봐야겠다.

profile
기본에 충실하고 싶습니다. #Front-end-developer

0개의 댓글