카드 이동시 기존 카드들의 priority를 기반으로 사칙연산을 해서 이동할 카드의 priority를 구하기 때문에 특정 시점에 한계가 있을거라 생각이 됨.
테스트 코드를 통해 카드 이동을 1000번 해본 결과, 특정 사이클을 기점으로 priority가 중복돼 더이상 카드별로 priority를 비교 할 수 없게 됐다.
나:
아이작:
private boolean checkRebalance(double renderedPriority, Card prevCard, Card nextCard) {
if (prevCard != null && renderedPriority == prevCard.getPriority()) {
return true;
}
if (nextCard != null && renderedPriority == nextCard.getPriority()) {
return true;
}
return false;
}
private void rebalancePriority(CardColumn cardColumn, User user) {
List<Card> cards = getList(cardColumn, user);
double priority = 0.0;
for (Card card : cards) {
priority += PRIORITY_STEP;
card.setPriority(priority);
}
cardRepository.saveAll(cards);
}
# card를 move 하는 메소드 내부 로직중..
if (rebalanced = checkRebalance(priority, prevCard, nextCard)) {
rebalancePriority(to, user);
prevCard = getCard(prevCardId, user); //리밸런싱후 기존 카드들의 정렬순서를 보장하기 위함
nextCard = getCard(nextCardId, user); // ..
priority = renderPriority(prevCard, nextCard, to, user); // ..
}
겹치지 않고 테스트 성공!
SET @OLD_FOREIGN_KEY_CHECKS = @@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0;
@SpringBootTest
출처: https://goddaehee.tistory.com/211 [갓대희의 작은공간]
현재 내 Local은 remote와 리베이스된 상태에서 작업을 했음
Origin은 remote와 Merge가 돼있음
Origin과 Local의 싱크를 맞추기 위해선?
520 git fetch origin dev/BE // origin repo 불러옴
522 git reset --hard origin/dev/BE
523 git reflog // git log는 커밋 이력 reflog : git 명령어 실행 기록
500 git cherry-pick ae97543
502 git stash // 작업하던게 있어서! 잠시 저장
503 git cherry-pick ae97543
504 git stash pop
505 git switch -c feature/implement-rebalance
어제 PR을 올리려는데 Remote Repository에 미리 머지 돼있는 iOS 팀원 브랜치(dev/iOS
)의 파일(.gitignore
)과 충돌이 발생해서 rebase
를 하여 충돌을 해결하고 PR을 요청했다.
어제 한 작업 내역이 잘한 일인지 잘모르겠어서 오늘 아침 아이작에게 관련 내용에 대해 질문을 했다.
아이작은 rebase
는 주로 혼자 작업한 걸 가져올 때 사용한다고 한다.
팀의 컨벤션마다 다르겠지만 다른 사람의 commit 이력을 rebase
하기보다 merge를 하는게 좋다고 한다.
rebase
를 하게 되면 이전에 다른사람이 작성했던 commit 이력이 복사돼서 붙여지게 되면서 isaac56 authored and sanhee committed 10 hours ago
와 같이 rebase를 요청한 사람의 이름이 추가로 붙게된다.rebase
를 해야하는 상황이라면 commit 작성자와 미리 얘기를 나눠보고 하는게 좋을 것 같다.git rebase --abort
리베이스 취소를 하고 merge를 하는게 좋다!### rebase
git remote add upstream https://github.com/codesquad-members-2021/todo-list.git
git rebase upstream/team9 // 여기서 충돌이 발생
git status // .gitIgnore가 충돌의 원인임을 알게됨.
git rebase --continue // 충돌 해결 후 반영하기 위해, 리베이스 정상
git push origin // ! [rejected] dev/BE -> dev/BE (non-fast-forward)*
git switch -c dev/BE_TEMP // 혹시 모르니 백업 브랜치 생성
git pull -f origin dev/BE // 강제로 푸쉬
git reset --hard 0bbcaa9 // dev/BE_TEMP 원하는 지점으로 옮기기 위해
git switch dev/BE
git push -f origin // origin에 remote repository 내용 반영
### 이전 rebase 내역을 없애고 merge를 하려고 하는 상황
git push origin dev/BE -f // 아이작의 로컬저장소에 남아있는 어제 저장소 정보를 강제로 푸쉬하여 저장소를 어제상태로 되돌림.
git remote add upstream https://github.com/codesquad-members-2021/todo-list.git
git pull upstream team9
vi .gitignore // 또는 IDE에서 충돌해결
git commit // 충돌해결 반영
git push origin dev/BE
git pull origin dev/BE
리눅스 명령어
프로세스 번호
&
(* & : 백그라운드 실행)처음엔 동명이인, 두번째엔 효율성에 걸려서 진짜 완주하지 못했다. ㅋ......ㅋ
오늘 애써 외면하던 내 알고리즘 위치가 저기 맨 바닥인걸 체감하게 됐다.
내일부터 꾸준히 풀어야겠다..