241010 TIL - defense our universe 2

LIHA·2024년 10월 10일
0

내일배움캠프

목록 보기
80/108
post-thumbnail
post-custom-banner

알고리즘

1년 반만에 다시만난 2016년 문제 - 아니 왜 목요일만 안 나와?

function findDay (a, b) {
    const yoil = ["SUN","MON","TUE","WED","THU","FRI","SAT"];
    let answer = '';
    
    switch (a) {
        case 5:
            answer = yoil[(b-1) % 7];
            break;
        case 2, 8:
            answer = yoil[b % 7];
            break;
        case 3, 11:
            answer = yoil[(b+1) % 7];
            break;
        case 6:
            answer = yoil[(b+2) % 7];
            break;
        case 9, 12:
            answer = yoil[(b+3) % 7];
            break;
        case 1, 7, 4:
            answer = yoil[(b+4) % 7];
            break;
        case 10:
            answer = yoil[(b+5) % 7];
            break;
    }
    return answer;
}

function solution(a, b) {
    var answer = '';
    answer = findDay (a, b);
    return answer;
}

이렇게 짜 보았는데 테스트는 통과했지만 제출하니 정답률이 반타작이다. 질문하기를 살펴보니 목요일이 빈칸으로 나온다. 왜 이러지? 🤔

getDay 메서드라는 것이 있다

일요일 - 토요일 까지의 요일을 인덱스로 반환해준다. 그래서 0 - 6 사이의 수가 나온다.
JS 기반 해답을 공유해주신 분이 알려주어서, 목요일이 자꾸 빠져버리는 내 코드를 버리고 새로 짜보았다.

function findDay (a, b) {
    const yoil = ["SUN","MON","TUE","WED","THU","FRI","SAT"];
    const day = new Date(`2016-${a}-${b}`).getDay();
    return yoil[day];
}

function solution(a, b) {
    var answer = '';
    answer = findDay (a, b);
    return answer;
}

일단 이걸로 통과는 되었다. 그런데 원래 코드에서 목요일은 왜 안나오는걸까? 🤔 % 7 = 0일 때의 값을 "THU" 로 지정해주어도 나오지 않았다.


스탠다드반

자주쓰는 리눅스 명령어 모음

  • pwd : 현재 작업 디렉토리가 어디인지 보여준다 (경로가 나옴)
  • ls : 리스트. 현재 디렉토리의 폴더와 파일 목록을 보여준다. ls -la 하면 숨겨진 파일도 보여줌.
  • cd .. : 상위 디렉토리로 이동
  • 폴더생성: mkdir 폴더명, 파일생성: touch 파일명

Jump to Universe

선인장은 클라이언트에서'만' 사용하는 정보

보통 데이터테이블을 관리할때 서버에서 사용하는 정보, 클라에서 사용하는 정보, 서버와 클라 양쪽에서 사용하는 정보를 다 구분하여 관리하는 방법이 있다.

같은내용 한번에 바꾸기 - 드래그 후 Ctrl + Shift + L

참고 블로그
오케이 땡큐!


Defense Our Universe

기본적인 상태 동기화부터 도전해보는 것을 추천한다!

json 파일을 준비하든, 그것도 힘들면 하드코딩을 하든 해서,
서버가 뜰때 서버에서 클라이언트에게 기본 데이터를 읽어오도록 해야한다.
최대한 서버에서 하는일을 줄이고 클라 주도로 시도해보자.

  1. 데이터 제대로 가져오느냐
  2. 그 가져온 데이터를 제대로 출력하느냐

여기서부터 시작해서 나가도록 하자.

UUID는 랭킹 주려면 필요하다 - 은택님의 조언

로그인 할때 액세스 토큰으로 검증. 스테이지 들어가서는 안쓰겠지만,

은택님은 서버를 먼저 건든게 아니고, 서버의 흐름만 이해한 상태에서 클라이언트부터 건드렸다. 보여질 수 있는 부분과 검증할 수 있는 부분에서 가장 이점을 가지는게 클라이언트기 때문에.
클라이언트를 조금씩 만지다 보면 이 부분이 서버와 이렇게 소통하고 있구나, 를 알 수 있다. 거기서부터 시작하는 것.

결국에 서버와 소통하는건 다 소켓에서 이루어진다.
클라이언트에서 값의 변경을 이루어내려고 할때, 본인이 직접 값을 입력하는 게 아니고 정보 명세서(페이로드)를 넘기는 것이다.
클라는 socket.on으로 받아서 뿌려준다.
앞에 이벤트가 일치할 경우만 on과 emit으로 소통한다. 그렇게 하는 이유가, 클라이언트가 자기혼자 받아서 변조하지 못하게 하려고.
-> 클라이언트에서 어떤 값을 입력할때 서버랑 통신하게 하려고 이렇게 하는 것임. 우리는 지금 그것을 웹소켓으로 하는거고.

socket.on과 emit 하는 부분을 잘 살펴보면 흐름을 조금씩 이해할 수 있을 것.


트러블슈팅

conflict가 너무 많아서 Github에서 수정할 수 없다면 - git merge를 쓰자

VS Code 기준으로 다음과 같다.

git checkout 머지당할 브랜치 이름 (dev, main 등)
git merge 머지 넣을 브랜치이름 (보통 feature)

-> 이렇게 merge 받을 브랜치로 이동해서 git merge (받아올 브랜치 이름) 하면 conflict 처리 창이 자동으로 뜰 것.

밑줄과 함께 '모듈 express에 대한 선언 파일을 찾을 수 없습니다' 가 나온다면

yarn add -D @types/express

-> 이거 (모듈이름).d.ts 라는 파일이 없어서 그렇다고 한다.
터미널에서 yarn add -D @types/(모듈이름) 을 치면 그 d.ts파일이 있는 경우는 알아서 받아준다.

profile
갑자기 왜 춤춰?
post-custom-banner

0개의 댓글