DAY 07

yejichoi·2022년 11월 10일
0

CodeCamp

목록 보기
8/11
post-thumbnail

1. Algorithm Self Study

가운데 글자 가져오기
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

function solution(s) {
    var answer = '';
    if(s.length % 2 === 0){ // 짝수일 경우
       answer = s[s.length / 2 - 1] + s[s.length / 2];
    }
    else { //홀수일 경우, 반내림 하기
        answer = s[Math.floor(s.length / 2)];
    }
    return answer;
}

solution("abcde")
solution("qwer")
//Reference Code ( substring )
function solution(s) {
    const center = Math.floor(s.length / 2);
    return s.length % 2 === 1 //조건-> 길이가 홀수라면
        ? s[ center ] //truthy, 홀수
        : s.substring( center - 1, center + 1 ); // falsy, 짝수 
        // s[center -1] + s[center] 
}

조건부 연산자 ?

let result = condition ? value1 : value2;
truthy라면 value1이, 그렇지 않으면 value2가 반환

  • 물음표 연산자?는 조건에 따라 반환 값을 달리함. 여러 분기를 만들어 처리할 때는 if를 사용

Substring("시작 위치", "종료 위치")

종료 위치의 -1까지 문자열을 자름

문자열 다루기 기본
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

function solution(s) {
    if( s.length !== 4 && s.length !== 6 ) { //소거법
        return false
    }
    
    for( let i = 0; i < s.length; i++ ) {
        if( isNaN(s[i]) ) { //매개변수가 숫자가 아니면 true, 숫자이면 false를 반환
            return false;
        }
    }
    return true; //숫자로 구성되어 있는지 확인하는 거니까 true 반환 
} 

isNaN()

매개변수가 숫자인지 검사하는 함수
매개변수가 숫자가 아니면 true, 숫자이면 false를 반환
Number.isNaN()

//Reference Code ( split, filter )
function solution(s) {
    if( s.length !== 4 && s.length !== 6 ) {
        return false
    }

    const answer = s.split("")//문자열을 각각의 문자 별로 잘라, 한 글자씩(공백 포함) 배열에 저장하여 리턴
                    .filter( num => {
                        // 데이터가 숫자가 아닌 문자타입만 남긴다.
                        // NaN 값인 데이터만 남긴다.
                        return isNaN(num)
                    })
    return answer.length === 0
}

split("구분자 문자열")
split 함수를 사용하면 특정 구분자를 기준으로 문자열을 분리하여 결과를 배열로 반환

서울에서 김서방 찾기
String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

function solution(seoul) {
    for(let i = 0; i < seoul.length; i++){ //배열 요소에 접근
        if(seoul[i] === "Kim") {
            return `김서방은 ${i}에 있다` // template literal 
        }    
    }
    
}
//Reference Code ( indexOf )
function solution(seoul) {
		const x = seoul.indexOf( "Kim" );
    return `김서방은 ${x}에 있다`
}
  • indexOf("") - 찾은 문자열의 시작 위치를 반환

약수의 합
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

function solution(n) {
    let answer = 0;
    
    for( let i = 1; i <= n; i++ ) { // 3000까지 자연수 증가
        if( n % i === 0 ) { //약수로 떨어지면
            answer += i; //기존꺼에 더해주라 
        }
    }
    
    return answer;
}
//Reference Code ( reduce )
function solution(n) {
    return new Array(n)
            .fill(1)
            .reduce( (acc, cur, i) => {
				const num = cur + i;
        return n % num === 0
						? acc + num
						: acc 
    }, 0)
}

2. Backend Class

Docker

컴퓨터 안에 컴퓨터

부팅 등 운영체제의 핵심 기능(커널)은 공유하는 가상머신
빠른 VM이라고 생각
OS 전체를 새로 설치하는게 아니라 훨씬 빠름

명령어

docker build . 이미지 생성
docker images 만든 이미지 확인
docker ps 실행중인 컨테이너 확인(process status)
docker exec -it 3cd6456831a6(컨테이너ID) /bin/bash 도커 내부에 접속하는 명령어 / 컨테이너 연결 명령어

Port-forwarding

명령어

docker run -p {호스트의포트}:{컨테이너의 포트}
i.e) docker run -p 2000:3000 21aa4a459d4f(컨테이너 id)
docker ps 현재 실행중인 도커 컨테이너의 목록을 보는 명령어
docker ps -a 종료된 컨테이너를 포함한 모든 컨테이너의 목록을 보는 명령어
docker ps -a -q 아이디만 도출
docker stop containerID 실행중인 컨테이너를 중지하는 명령어

삭제 명령어(docker rm / rmi)

컨테이너 삭제(선행) => 이미지 삭제
docker rm container id 특정 도커 삭제
docker rm docker ps -a -q 도커 전체 삭제
삭제 후 확인, docker ps -a 빈값 나와야 완전 삭제 된 것

docker rmi image id 특정 이미지 삭제
docker images -q 모두보기
docker rmi docker images -q 이미지 전체 삭제
docker system prune -a 전체 초기화

Docker advanced

이미지 빌드 시간 줄여주기 위해
COPY 명령어 사용( 단, package.json을 수정했다면 처음부터 빌드 해야함)

# 컴퓨터 만드는 설명서

# 1. 운영체제 설치(node ver.14, npm, yarn이 모두 설치되어 있는 리눅스)
FROM node:14

# 2. 내 컴퓨터에 있는 폴더나 파일을 docker computer 안으로 복사하기
COPY ./package.json /myfolder/
COPY ./yarn.lock /myfolder/
WORKDIR /myfolder/
#마우스 옮겨주기 
RUN yarn install
#copy 위치를 조정함으로써 캐시를 사용해서 설치속도 향상(, package.json이 변경되면 사용 x)


RUN mkdir myfolder
COPY . /myfolder/


# 3. 도커 안에서 index.js 실행시키기
CMD yarn start:dev

3. HW

구글 퀴즈폼 대체

0개의 댓글