0. 기간 :
20230612 ~ 20230618
1-1. 이번 주 동안 있었던 일
노드 입문 주차 시작
개인 과제 (게시판/댓글 CRUD) 제출
1-2. 이번 주 체크리스트
[ ... ] 예쁜 말로 협업하였는가?
앞으로 더 노력하겠다.
[ ... ] 12시간 동안 몰입하였는가?
몰입 하지 않았던 날도 있다...
[ ... ] 코딩 시 복사 + 붙여넣기를 하지 않았는가?
최대한 안 하려고 노력 중이다! 하지만 시간 관계상 하게 된다!
[ O ] 친절한 개발자였는가?
다른 사람의 부탁을 흔쾌히 수락하는 친절한 개발자였다.
[ ... ] 이번 주를 평가하였을 때 주니어 개발자가 될 수 있겠는가?
조금 더 노력하자!
2. 이번 주 소감
이번 주는 과제에 긴장해 작성을 신속하게 하고 일찍 제출해서 넉다운이 금방 왔다.
aws 사용을 거의 안 해봤어서 긴장하였다.
페이스 조절을 해서 매일 매일 몰입할 수 있게 노력해야겠다.
3. 이번 주에 배운 것
객체
구조분해 할당을 사용하지 않을 때
const user = {name: "손석구", age: 10};
console.log(user.name) // 손석구
console.log(user.age) // 10
구조분해 할당을 사용할 때
const { name, age } = user
console.log(name) // 손석구
console.log(age) // 10
netstat -tulpn 현재 열려 있는 포트 확인
kill -9 pid (-9는 강제 종료이다) 포트 종료
.gitignore 캐시 삭제
문제
.gitignore 에서 package.json 을 작성하고 commit 하였으나 package.json이 올라감.
시도
git의 캐시를 삭제한다.
git rm -r --cached
해결
package.json이 올라가지 않는다.
알게된 것
잘 안 될 때는 캐시를 삭제하자.
package.json package-lock.json
문제
강의를 허술하게 들었는지 둘 다 .gitignore 처리함.
다른 사람들 깃헙에 가 보니 다들 그렇게 하지 않음.
시도
강의자료를 다시 꼼꼼히 봄.
해결
다른 사람이 git clone시에 npm install 만 쳐도 된다는 것을 보고 의아해 했었는데 이제 알게 됨.
package.json이 있으면 설치할 파일들을 명시해 줘서 누군가와 프로젝트를 공유하거나 서버로 이동할 때 편하다!
package-lock.json은 기록이기 때문에 필요가 없다.
알게된 것
package.json
- package.json만 있으면 언제든 환경에 맞는 모듈들 설치 가능
- package.json 파일에 명시된 모듈 설치 npm install
package-lock.json
- npm으로 패키지를 설치, 수정, 삭제할 때마다 패키지들의 의존 관계를 package-lock.json파일에 저장합니다.
댓글 수정 삭제
문제
대상의 비밀번호가 입력한 비밀번호와 일치할 때 동작해야 하는데 else로 처리하여 마구잡이로 되고 있었음.
시도
else if (findComment.password !== password)
else if 로 처리하여 입력한 정보로 찾은 코멘트의 비밀번호가 일치할 때만 수정/삭제가 되게 함.
해결
해결되었습니다.
알게된 것
귀찮다고 대충하지 말자. 개발자는 그러면 안 된다.
아직 초보라 나와 신만이 아는 코드를 작성하는 일이 비일비재한데 오류가 나면 나와 신만이 고칠 수 있다.
하지만 신은 컴퓨터도 없고 바쁘다. 내가 고쳐야 한다. 자업자득.
.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")
알게 된 점
사소한 에러를 그러려니 넘기지 말자. 사소한 에러는 없기 때문이다. 서비스 이용을 저해하는 모든 에러는 중대하다.
findByIdAndUpdate
문제
await Posts.updateOne({ user, password, title, content, date })
무언가를 지정해서 updateOne을 하는 게 아니라 작성된 포스트 전체에서 비밀번호가 일치하고 있는 것만 수정이 되고 있었다.
시도
await Posts.findByIdAndUpdate(postid, { user, password, title, content, date })
findByIdAndUpdate를 통해 id를 지정하여 수정한다.
해결
범위를 작게 작게 좁혀나가야 오차를 줄일 수 있다.
알게 된 점
내가 만든 서비스는 스스로 테스트 해 보자. 귀찮다고 넘기다가 대재앙 서비스를 만들고 지나갈 수도 있다.
객체의 접근 obj['key']
객체의 key에 여백(스페이스), 대쉬(-), 특수문자(*) 등 일반적인 변수명을 선언할 때 허용되지 않는 문자열을 사용할 경우
key 값을 잘 정하자
문제
key 값을 잘못 정하면 데이터 양이 많을 때 key에 대한 value를 자동화 시켜 가져오는 것이 불편해 진다.
key : value를 하드코딩 하는 게 빠르다 판단되는 순간이 올 수도 있다.
시도
데이터를 생성할 때 key값 앞이나 뒤에 구분자를 주어 분류가 용이하게 만든다.
실제 데이터는 인용하기 난처하므로 예시를 작성해 보겠다. 예시는 실례와 무관하다.
커피 프랜차이즈에서 지역과 매출액으로 특이사항을 분류하길 원한다면 다음과 같이 응용해 볼수 있을 것 같다.
key : value
지역번호_지점번호_일매출액 : 특이사항.
02_1_10000000 : 오피스권. 점심시간 피크. 인기 메뉴 아이스아메리카노L. 테이크아웃 많음.
이렇게 되면 구분자인 언더바 _를 기준으로 key를 잘라서 쓸 수 있다.
해결
나는 동기가 전해 준 하드코딩 캡처만 봐서 잘 모르지만 DB가 이미 json 방식으로 생성되어 있을 수도 있겠다 싶었다.
객체 하나 하나에 새로운 key:value를 삽입하는 것에 어려움이 있어 하드코딩을 선택한 것 같다.
그리고 해결은 아니지만 내 방식의 문제점도 알 수 있었다.
새로운 항목이 생겼을 때 key를 수정하기가 어렵다.
데이터 생성 시에만 사용 가능한 방법이고 유지보수는 어려울 수도 있겠다 싶었다.
베스트는 지금과 같은 새벽에 사용자에게 양해를 구하고 json에 새로운 key와 value를 넣는 게 좋을 것 같다.
알게 된 점
세상은 넓고 코딩의 방식은 무한하나 항상 자동화를 유념에 두고 계획하고 실천해야 한다.
4. 배운 것들을 토대로 적용할 미래
가까운 미래 : EC2 우분투를 이용해 서버 개발이 가능한 사람
먼 미래 : 개발자
5. 다음주 목표
노드 숙련 완강
과제 완성
6. 나에게 응원 한 마디
어떠한 시련(모르는 과제)가 오더라도 포기하지 말길....
잘하고 있어! 몰입하자!
'내일 배움 캠프 > Weekly I learned' 카테고리의 다른 글
WIL 20230702 (0) | 2023.07.02 |
---|---|
WIL 20230625 (0) | 2023.06.25 |
WIL 20230611 (0) | 2023.06.11 |
WIL 20230604 (0) | 2023.06.04 |
WIL 20230528 (2) | 2023.05.28 |