☑️ What I Learn
JS 언어의 구조분해할당
→ JSON 비구조화, 배열의 비구조화
JS 구조분해할당과 유사하게 작동하지만, query의 변수값으로 설정해주어야 동작한다는 것이 다른점
npm 꼬일때 해결법
수시로 사용하게 된다.
자바스크립트 큐, 힙 내장 메서드가 없다.
연결리스트 큐 구현코드
추후에 힙 구현 코드에 대해서도 정리해 보겠다.
class MinHeap {
constructor() {
this.heap = [];
}
push(value) {
this.heap.push(value);
this.heapifyUp();
}
pop() {
if (this.isEmpty()) return null;
const root = this.heap[0];
const lastNode = this.heap.pop();
if (!this.isEmpty()) {
this.heap[0] = lastNode;
this.heapifyDown();
}
return root;
}
isEmpty() {
return this.heap.length === 0;
}
heapifyUp() {
let index = this.heap.length - 1;
while (index > 0) {
const parentIndex = Math.floor((index - 1) / 2);
if (this.heap[parentIndex] <= this.heap[index]) break;
[this.heap[parentIndex], this.heap[index]] = [
this.heap[index],
this.heap[parentIndex],
];
index = parentIndex;
}
}
heapifyDown() {
let index = 0;
const length = this.heap.length;
while (true) {
let smallest = index;
const leftChildIndex = 2 * index + 1;
const rightChildIndex = 2 * index + 2;
if (
leftChildIndex < length &&
this.heap[leftChildIndex] < this.heap[smallest]
) {
smallest = leftChildIndex;
}
if (
rightChildIndex < length &&
this.heap[rightChildIndex] < this.heap[smallest]
) {
smallest = rightChildIndex;
}
if (smallest === index) break;
[this.heap[index], this.heap[smallest]] = [
this.heap[smallest],
this.heap[index],
];
index = smallest;
}
}
}
리팩토링 의문점
새 기능을 feat 할때 같이 전체코드 점검하기
강사님이 이렇게 말씀하셨는데,,
깃 브랜치로 협업할때 충돌이 많이 일어나는 부분이 되지 않을까? 라는 생각이 들었다.. 중복코드가 분명 발생할 것 같은데.. 어떻게 생각하시는지 궁금합니다!
- PR 날릴때 팀원 코드리뷰 후 머지
- dev 브랜치 줄기브랜치
- 브랜치의 자식 브랜치 - 삭제
- 이외에도 다양한 git flow 를 참고해서 고민해보자!
☑️ Liked, Learned, Lacked, Longer for
정해진 시간에 공부를 하니 좋았다. 정해진 시간 안에 끝내려고 노력하게 되고, 매일 todo를 작성하며 계획적으로 살게되었다. 습관으로 자리잡으면 좋겠다.
API 설계하는 방법. API 설계를 해보니, 프론트엔드 구현할때 백엔드와 연결하는 로직이 이해가 되었다.
어떤 것을 더 배우겠다 말만하고 실천하지 않은것이 부족했다. 정해진 공부량 이외에 순수 학습 시간을 만들기 어렵다. 물론 스터디 2개, 팀플젝 1개, 데브코스 이외에 알바, 친구들과의 약속 모든 토끼를 다 잡을 순 없는데,, 선택과 집중을 해 내 부족한 부분을 학습하는 시간을 만들어야 한다.
회고록을 작성하고, 팀원들과 소통하는 시간을 가지니 좋았다. 집중할땐 빡집중해서 미션을 완수하는 태도를 가지고 싶다!