0. 기간 :
20230806 ~ 20230813
1-1. 이번 주 동안 있었던 일
칸반보드 프로젝트 진행 및 완성
1-2. 이번 주 체크리스트
[ ? ] 예쁜 말로 협업하였는가?
이제 제법 친해져서 장난을 많이 쳤는데 예쁜 말은 아니었다.
[ O ] 12시간 동안 몰입하였는가?
[ O ] 코딩 시 복사 + 붙여넣기를 하지 않았는가?
[ O ] 친절한 개발자였는가?
[ ? ] 이번 주를 평가하였을 때 주니어 개발자가 될 수 있겠는가?
말을 곱게 하고 생각을 더 잘 해야겠다고 생각했다.
2. 이번 주 소감
원만하게 진행되었으나 내가 너무 완성하려고 하는 마음이 앞서서 업무 분장을 잘 하지 못한 것 같다.
팀원들이 너무 어깨가 무거워 보인다고 하였다.
실제로 나는 가벼웠으나 사람들이 힘들어보인다고 하면 재고해 봐야겠다.
1. Op.gt Op.lt
문제
중간에 column이 삭제되는 경우 순서가 +1씩 증가할 수 없다.
기존의 식이다.
async moveColumnUp(columnId) {
const t = await sequelize.transaction();
try {
const currentColumn = await Columns.findByPk(columnId, {
transaction: t,
});
const currentOrder = currentColumn.columnOrder;
const columnOrder = currentOrder + 1;
const targetColumn = await Columns.findOne(
{
where: { columnOrder },
},
{ transaction: t },
);
const targetId = targetColumn.columnId;
await Columns.update(
{ columnOrder: columnOrder },
{ where: { columnId } },
{ transaction: t },
);
await Columns.update(
{ columnOrder: currentOrder },
{ where: { columnId: targetId } },
{ transaction: t },
);
await t.commit();
return 1;
} catch (err) {
console.log(err);
await t.rollback();
return 0;
}
}
시도
Op.gt를 이용하여 증가 시키려는 column 보다 columnOrder가 많은 것들을 추리고
그 안에서 columnOrder 순으로 정렬하여
limit 1을 통해 내 바로 위 순서의 column을 뽑아낸다.
async moveColumnUp(columnId) {
const currentColumn = await Columns.findByPk(columnId);
const currentOrder = currentColumn.columnOrder;
const targetColumn = await Columns.findAll({
where: {
columnOrder: { [Op.gt]: currentOrder },
deletedAt: null,
},
order: [['columnOrder']],
limit: 1,
});
const targetOrder = targetColumn[0].columnOrder;
const targetId = targetColumn[0].columnId;
await Columns.update({ columnOrder: targetOrder }, { where: { columnId } });
const result = await Columns.update(
{ columnOrder: currentOrder },
{ where: { columnId: targetId } },
);
return result;
}
해결
잘 해결 되었다.
알게된 것
Op.gt : 대상보다 초과하는 것들의 집합
Op.lt : 대상 미만의 집합
Op.gt 등 Op 옵션을 줄 때는 사용하려는 컬럼을 지정해 주어야 한다.
위의 에러가 발생한 코드
2. 잘못된 브랜치에서 작업한 걸 다른 브랜치로 옮기고 싶을 때
문제
기능 브랜치에서 해야 할 작업을 main 브랜치에서 진행하였다.
시도
git stash push 를 통해 전체 stash로 올리고
원하는 브랜치에서 git push pop으로 가져온다.
해결
해결 되었다.
알게된 것
git stash push : 작성한 코드를 임시 저장하고 최신 커밋의 상태로 되돌림. 개별 파일 저장 가능.
git stash pop : 임시 저장한 코드 불러오기. 불러오기시 저장된 내용이 삭제된다.
3. 보드 조회 시 권한
문제
보드 생성자는 초대를 받을 수 없다.
따라서 권한이 자동으로 부여되는 시스템이 필요하다.
시도
보드 생성과 동시에 생성된 보드에 대한 권한을 부여한다.
makeBoard = async (userId, boardName, boardColor, boardContent) => {
const makeBoard = await Boards.create({
userId,
boardName,
boardColor,
boardContent,
});
const boardId = makeBoard.boardId;
await Access.create({ userId, boardId });
return makeBoard;
};
해결
보드 생성자도 보드 접근이 가능하다.
알게된 것
권한에 따라 조회가 가능한 것이라면 처음에 생성할 때 권한을 부여하는 것이 좋다.
4. 트랜잭션
문제
트랜잭션을 과용하여 속도가 느려짐.
중간에 락이 걸렸는지 실행도 되지 않음.
시도
트랜잭션을 모두 해제함
해결
속도가 조금 빨라짐
알게된 것
성능을 향상시킬 수 있는 방법
- 저장은 서버에 저장하고 로드할 때는 서버에서 불러오지 않고 다른 방법으로 불러온다.
- 트랜잭션을 최소화 한다.
3. 이번 주에 배운 것
협업의 중요성 : 혼자 진행하면 시간이 부족하여 더 좋은 프로젝트를 만들기 어렵다.
앞으로 있을 협업을 위해 많은 조언을 받았다.
4. 배운 것들을 토대로 적용할 미래
협업을 통해 팀의 능력치를 최고로 끌어낼 수 있는 사람
5. 다음주 목표
최종 프로젝트의 좋은 시작
6. 나에게 응원 한 마디
이제 수료까지 얼마 남지 않았다.
최종 프로젝트 완성까지 파이팅 하자.
'내일 배움 캠프 > Weekly I learned' 카테고리의 다른 글
WIL 20230827 (0) | 2023.08.27 |
---|---|
WIL 20230820 (0) | 2023.08.20 |
WIL 20230806 (0) | 2023.08.06 |
WIL 20230730 (0) | 2023.07.30 |
WIL 20230723 (0) | 2023.07.23 |