본문 바로가기

내일 배움 캠프/Weekly I learned

WIL 20230618

728x90

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