Event
null
생활 계획표
AM 6:00 체조, 아침식사, 산책, 샤워, 설거지, 세탁
AM 8:00 입실, TIL 리뷰, 노드 시간표 및 오늘 목표 체크
AM 8:30 공부 시작
PM 1:00 ~ 2:00 점심 식사
PM 6:00 ~ 7:00 저녁식사
PM 7:00 TIL, WIL 제출
PM 9:00 퇴실 (카톡 확인)
PM 11:00 취침
이번 주 목표
월 : 노드 입문 1~16
화 : 노드 입문 17~ end
수 : 과제 / 20:00 후발대 수업 OT / javascript 문법 종합반 3주차 4주차 5주차
목 :
금 : ~ 13:00 과제 점검 및 제출 / node 입문 복습 1~16
토 : node 입문 복습 17~end
일 : node 숙련 예습 (강의 열리면)
오늘 목표
node 입문 복습 1~16 강의자료
TIL 작성
TIL 리뷰
오늘 한 것
TIL 작성
TIL 리뷰
개인과제 리팩토링
프로그래머스
머쓱이보다 키 큰 사람 : https://verdantjuly.tistory.com/214
1. 댓글 수정 삭제
문제
대상의 비밀번호가 입력한 비밀번호와 일치할 때 동작해야 하는데 else로 처리하여 마구잡이로 되고 있었음.
시도
else if (findComment.password !== password)
else if 로 처리하여 입력한 정보로 찾은 코멘트의 비밀번호가 일치할 때만 수정/삭제가 되게 함.
해결
해결되었습니다.
알게된 것
귀찮다고 대충하지 말자. 개발자는 그러면 안 된다.
아직 초보라 나와 신만이 아는 코드를 작성하는 일이 비일비재한데 오류가 나면 나와 신만이 고칠 수 있다.
하지만 신은 컴퓨터도 없고 바쁘다. 내가 고쳐야 한다. 자업자득.
2. .select("+password")
문제
var findComment = await Comments.findOne({ "postid": postid, "user": user })
이 코드에서 스키마의 password에 select:false 를 적용해 둬서 비밀번호 값이 읽히지가 않음.
시도
.select("+password") 를 식 뒤에 추가한다.
해결
var findComment = await Comments.findOne({ "postid": postid, "user": user }).select("+password")
알게 된 점
사소한 에러를 그러려니 넘기지 말자. 사소한 에러는 없기 때문이다. 서비스 이용을 저해하는 모든 에러는 중대하다.
3. findByIdAndUpdate
문제
await Posts.updateOne({ user, password, title, content, date })
무언가를 지정해서 updateOne을 하는 게 아니라 작성된 포스트 전체에서 비밀번호가 일치하고 있는 것만 수정이 되고 있었다.
시도
await Posts.findByIdAndUpdate(postid, { user, password, title, content, date })
findByIdAndUpdate를 통해 id를 지정하여 수정한다.
해결
범위를 작게 작게 좁혀나가야 오차를 줄일 수 있다.
알게 된 점
내가 만든 서비스는 스스로 테스트 해 보자. 귀찮다고 넘기다가 대재앙 서비스를 만들고 지나갈 수도 있다.
4. 객체의 접근 obj['key']
객체의 key에 여백(스페이스), 대쉬(-), 특수문자(*) 등 일반적인 변수명을 선언할 때 허용되지 않는 문자열을 사용할 경우
5. 구조 분해 할당
객체의 구조 분해 할당
const obj = { name: "이용우", age: 28, tech: "Node.js" };
const { name, age, tech, hair } = obj;
console.log(name); // 이용우
console.log(age); // 28
console.log(tech); // Node.js
console.log(hair); // undefined: obj에는 "hair" 프로퍼티가 존재하지 않습니다.
배열의 구조 분해 할당
const arr = ["Node.js", "React", "Spring"];
const [backEnd, frontEnd] = arr;
console.log(backEnd); // Node.js
console.log(frontEnd); // React
6. Boolean
Falsy : 빈 문자열 '', 숫자 0, 불리언 false, null, undefined, NaN
Truthy: Array , Object
7. block : 중괄호 { }
정리
귀찮다고 대충하지 말자. 개발자는 그러면 안 된다.
아직 초보라 나와 신만이 아는 코드를 작성하는 일이 비일비재한데 오류가 나면 나와 신만이 고칠 수 있다.
하지만 신은 컴퓨터도 없고 바쁘다. 내가 고쳐야 한다. 자업자득.
사소한 에러를 그러려니 넘기지 말자. 사소한 에러는 없기 때문이다. 서비스 이용을 저해하는 모든 에러는 중대하다.
내가 만든 서비스는 스스로 테스트 해 보자. 귀찮다고 넘기다가 대재앙 서비스를 만들고 지나갈 수도 있다.
obj['key']
객체의 key에 여백(스페이스), 대쉬(-), 특수문자(*) 등 일반적인 변수명을 선언할 때 허용되지 않는 문자열을 사용할 경우
Boolean
Falsy : 빈 문자열 '', 숫자 0, 불리언 false, null, undefined, NaN
Truthy: Array , Object
block : 중괄호 { }
객체의 구조 분해 할당
const obj = { name: "이용우", age: 28, tech: "Node.js" };
const { name, age, tech, hair } = obj;
console.log(name); // 이용우
console.log(age); // 28
console.log(tech); // Node.js
console.log(hair); // undefined: obj에는 "hair" 프로퍼티가 존재하지 않습니다.
배열의 구조 분해 할당
const arr = ["Node.js", "React", "Spring"];
const [backEnd, frontEnd] = arr;
console.log(backEnd); // Node.js
console.log(frontEnd); // React
체크리스트
[ O ] 예쁜 말로 협업하였는가?
[ X ] 12시간 동안 몰입하였는가?
[ O ] 코딩 시 복사 + 붙여넣기를 하지 않았는가?
복사 붙여넣기로 인해 쓸데없는 부분까지 있는 걸 보고 분노하여 하지 않았다.
[ O ] 친절한 개발자였는가?
[ O ] 오늘을 평가하였을 때 주니어 개발자가 될 수 있겠는가?
리팩토링의 중요성 테스트의 중요성을 알게 되어 개발자에 가까워질 수 있을 것 같다.
소감
사실 이러한 오류들은 동기의 과제를 도우면서 내 과제를 설명하며 알게 되었다.
아니었으면 나태함과 노테스트로 인해 절대 알아내지 못했을 부분들이다.
종종 만든 것들을 리뷰하는 기분으로 다른 사람에게 설명하는 것도 좋은 것 같다.
동기에게 고맙다.
'verdantjuly > Today I Learned' 카테고리의 다른 글
TIL 20230618 (0) | 2023.06.18 |
---|---|
TIL 20230617 (0) | 2023.06.17 |
TIL 20230615 (0) | 2023.06.15 |
TIL 20230614 (0) | 2023.06.14 |
TIL 20230613 (0) | 2023.06.13 |