오늘은 어제 하지 않았던 readme 작성과 배포를 진행했다.
일반적으로 배포된 링크도 같이 남겨야 하기 때문에
netlify로 간단하게 배포를 한 다음 readme에 추가했고
이전 프로젝트들에서 사용했던 양식을 수정한 다음
문서에 해당하는 날짜의 개발일지를 추가해 마무리했다.

막내가 뭐했는지 궁금하다고 해서 배포된 페이지를 보내줬는데
동생이 실수로 값을 입력하지 않고 확인을 눌렀는데 
그대로 페이지가 날아가버리는 문제가 생겼다.

다행히 동생이 문제가 생기기 직전에 한 행동을 정확히 기억했기 때문에
똑같은 방식으로 문제를 발생시켜보니 로컬스토리지에 undefined가 저장되어 있었다.

왜 이런 문제가 발생했을지 생각해보며 title, state 순으로 내려가며 적용해보니
state(listState로 todo/inProgress/done이 있다)가 없는 경우
배열에 배치될 수 없기 때문에 에러가 발생해 로컬스토리지도 날아가버리고
로컬스토리지에 데이터가 없어지기 때문에 페이지 로딩자체가 되지 않으며
undefined에는 map을 사용할 수 없다 등의 오류 메세지가 출력되는 것이었다.

문제를 해결하기 위해 값이 지정되지 않은 경우 "todo"로 설정하고
제목이 없이 등록이 되는 것은 확인했지만 공백은 이상하기 때문에
title이 비어있는 경우에도 "무제"로 수정해서 작동시켰다.

배포된 주소는 동일했기 때문에 해결했다고 하니 
동생이 다시 해보더니 이번에는 todo, inProgress, done이 있는데
왜 추가 버튼을 다 다른 곳에서 눌러도 "todo"로만 가는지 모르겠다고 했고
단순히 DnD 기능 구현을 위해서 했었지만 동생의 말도 일리는 있기 때문에
추가 버튼을 누를 경우 해당 버튼에서 매개변수로 list의 state 값을 넘겨줬고
해당 상태값을 다시 makeIssue 모달에 props로 내려줘서
listState를 입력하지 않을 경우 props로 받은 상태값을 사용하게 변경했다.

이를 통해 리스트의 상태를 추가 버튼에 따라 기본값을 지정할 수 있었고
다시 배포한 다음 동생에게 완료되었다고 했더니
이번에는 마감일인데 왜 현재 날짜보다 이전이 가능하냐고 물어봐서
input의 속성 중 min에 현재 날짜를 넣어준 다음 배포했다.

아무래도 수정 과정이 진행되어 있기 때문에
오늘 작성 일지 또한 readme 부분에 개발일지4로 추가하기로 했다.

https://github.com/RyuJiChang/pre-onboarding-8th-week2



1.어댑터 패턴(Adapter Pattern)은 일상 생활에서 어댑터를 사용하듯
코딩을 할 때 서로 호환되지 않는 코드 사이의 완충 클래스라고 할 수 있다.

기존 시스템과 제공받은 클래스가 다른 경우에는 일반적으로 쓸 수 없지만
제공받은 클래스를 어댑터를 통해 시스템에서 사용할 수 있게 변경할 경우
기존 시스템의 수정 또는 새로운 api 구현을 할 필요 없이
완충지대의 어댑터 클래스 생성을 통해 동일 기능을 할 수 있어 효율적이다.





(1).백준 9085 더하기는 테스트케이스들을 받고
각 테스트케이스에 있는 배열의 숫자를 합하는 문제였다.
let i = 1, i+=2로 테스트케이스를 건너 뛴 다음
(let i=2로 input[i]로 배열을 잡아도 됐었는데 줄단위 테스트케이스가 익숙해 넘어갔다)
각 배열의 합을 sum에 저장한 후 sum을 result에 넣어줬다.

let input = `2
5
1 1 1 1 1
7
1 2 3 4 5 6 7`.split('\n')

let result = []

for(let i = 1 ; i < input.length ; i+=2){
    let sumArr = input[i+1].split(' ').map(Number)
    let sum = 0
    for(let j = 0 ; j < sumArr.length ; j++){
        sum += sumArr[j]
    }
    result.push(sum)
}

console.log(result.join('\n'))

+ Recent posts