본문 바로가기

verdantjuly/Today I Learned

TIL 20230616

728x90

 

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