본문 바로가기

내일 배움 캠프/Weekly I learned

WIL 20230813

728x90

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