[문제] 이동 규칙 다음에 이동할 수 있는 거리(광년)는 현재 이동거리의 현재 이동거리, +1 또는 -1이다. 현재 3을 이동했다면 다음에 이동할 수 있는 거리는 2, 3, 4 중에 하나이다. 마지막 이동거리는 1이여야 한다. 위의 이동 규칙을 가지고 현재 x지점에서 y지점으로 가기 위해선 최소 몇 번 움직여야 할까? 처음에는 단순하게 brute-force, BFS를 사용하면 되지 않을까라고 생각했다. 처음에 1을 움직이고 그다음에는 1, 2를 큐에 넣고 그 다음에도 또 1,1,2,3을 큐에 넣고 이런 식으로 전체 탐색을 하다가 현재 지점이 y이면서 이동거리가 1였을 때를 찾으면 되지 않을까라고 생각했다. 하지만… 메모리 초과가 발생했다. 당연하게도 처음에 이동할 때를 제외하고는 3번씩 (-1, 현재, ..
개발을 하면서 그날의 끝 시간 관련해서 제대로 동작하지 않는 문제가 있었다. Member 테이블이 아래와 같이 있고, 특정 날짜 이전에 생성된 Member 리스트를 구하고 싶다는 요구사항이 왔다고 가정해 보자. (DB는 당연하게도 PostgreSQL이다) id name created_at 1 홍길동 2023-11-24 00:00:00.000000 2 김길동 2023-11-23 23:59:59.000000 3 이길동 2023-11-23 00:00:00.000000 특정 날짜 이전에 생성된 Member 리스트를 구하기 위한 코드는 아래와 같이 작성했다. //MemberRepository.java public interface MemberRepository extends JpaRepository { List ..
목표 newImage와 caption 브랜치에 각각의 변경내역이 있고 서로 약간 관련이 있어서, 저장소에 차례로 쌓여있는 상황이다. 우리의 작업이력(history)에서 한참 전에 작업한 커밋에 있는 내용 중 newImage의 크기를 살짝 바꿔달라는 요청이 들어왔다. 아래와 같이 풀어보자 git rebase -i 명령으로 우리가 바꿀 커밋을 가장 최근 순서로 바꾸어 놓는다 git commit --amend 명령으로 커밋 내용을 정정한다 다시 git rebase -i 명령으로 이 전의 커밋 순서대로 되돌려 놓는다 마지막으로, main을 지금 트리가 변경된 부분으로 이동한다. (체리픽은 나중에 사용해 보자) $git rebase -i HEAD~2 # 커밋 내용을 변경해야하기 때문에 변경할 커밋을 가장 마지막으..
여러 개의 커밋 중 특정 커밋만 선택해서 병합하기 git rebase -i git cherry-pick 1번 rebase -i 옵션은 앞에서 알아봤으니 2번 cherry-pick에 대해서만 알아보자 체리픽(cherry-pick) 개별 커밋을 골라서 HEAD에 커밋을 생성할 수 있다 목표 main브랜치가 bugFix 브랜치의 커밋을 일부 가져오게 하자 $git checkout main $git cherry-pick C4 ref https://learngitbranching.js.org/?locale=ko
HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해 주는 프론트 컨트롤러(Front Controller) 즉, 클라이언트로부터 어떠한 요청이 오면 Tomcat과 같은 서블릿 컨테이너가 요청을 받게 되는데 이 모든 요청을 프론트 컨트롤러인 디스패처 서블릿이 가장 먼저 받게 된다. 그러면 디스패처 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야 하는 컨트롤러를 찾아서 작업을 위임한다. Front Controller(프론트 컨트롤러) 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해 주는 컨트롤러로써, MVC 구조에서 함께 사용되는 디자인 패턴이다. DispatcherServlet의 동작 과정 클라이언트의 요청을 디스패처 ..
인터랙티브 리베이스 reabse를 할 때 대화형(-i 옵션)으로 실행하는 것을 말한다 rebase를 진행할 때 다양한 추가 기능을 제공한다 인터랙티브 리베이스로 실행하면 vim 같은 텍스트 편집기 파일이 열리는데 그곳에서 다양한 기능을 적용할 수 있다 이 글에서는 3가지 기능에 대해서만 알아보겠다 적용할 커밋들의 순서를 변경할 수 있다 원하지 않는 커밋은 제외시킬 수 있다 커밋을 스쿼시(squash)할 수 있다 0. 현재 브랜치 상태 현재 상태에서 공통적으로 아래와 같은 명령어를 사용해 본 후 각 기능에 대해서 알아보자 $git rebase -i HEAD~3 1. 적용할 커밋들의 순서를 변경할 수 있다 위와 같은 텍스트 편집기가 열리는데 여기에서 커밋들의 순서를 변경한 후 :wq로 편집기를 종료하면 정한..
Git 체리-픽 (Cherry-pick) 특정 커밋의 복사본을 만들어서 적용할 수 있게 해주는 명령어 사용 방법 git cherry-pick 복사본을 만들고 싶은 커밋들을 적어주면 된다 사용 예시 위의 상태일 때 현재 작업 브랜치는 main이고 C2, C4의 커밋을 적용하고 싶다면 아래의 명령어를 사용하면 된다 $git cherry-pick C2 C4 목표 몇 개의 작업을 세 개의 브랜치들에서 main 브랜치로 복사해오자. $git cherry-pick C3 C4 C7 ref https://learngitbranching.js.org/?locale=ko
Git에는 작업한 것을 되돌리는 방법이 있다. (낮은 수준)Staging Area에 있는 작업을 되돌리기 (아마도..?) (높은 수준)실제 변경이 복구되는 방법 여기서는 실제 변경을 복구하는 방법에 대해서 알아보자. git에서 변경한 내용을 되돌리는 방법은 크게 2가지가 있다. git reset git revert git reset git reset은 브랜치가 예전의 커밋을 가리키도록 이동시키는 방식으로 변경 내용을 되돌린다. 즉, git reset은 마치 애초에 커밋하지 않은 것처럼 예전 커밋으로 브랜치를 옮기는 것이다. 사용 방법 git reset 사용 예제 local은 로컬에만 존재하는 브랜치이고 pushed는 리모트 브랜치이다. $git reset HEAD^ 위의 명령어를 사용하면 현재위치(브랜치..
- Total
- Today
- Yesterday