전체 글
Git Rebase 도중 한번 이상 충돌 해결 방법
Git에서 브랜치를 rebase 하는 도중에 충돌이 여러번 발생하였을때 해결하는 방법에 대해 알아보자. 먼저 기준이 되는 브랜치 master에 test.txt라는 파일을 만들고 내용을 작성하고 커밋을 진행하자. 그리고 리베이스를 진행할 브랜치인 conflict 브랜치에 test.txt를 생성하고 두번 커밋을 진행하자. 그리고 master에 리베이스를 진행하면 먼저 첫번째 충돌이 발생한다. 그러면 test.txt 파일을 수정하고 나서 스테이지에 다시 올리고 액션 메뉴에서 재배치 계속을 눌러 진행한다. 그러면 두번째 충돌이 발생하고 마찬가지로 해결 후 재배치 계속을 누르면 성공적으로 리베이스가 진행된것을 확인할 수 있다. 이렇게 두번의 충돌이 발생하는 이유는 아래의 그림을 살펴보면 알겠지만 변경이 델타 1,..
Git Rebase 도중 충돌 (conflict) 해결 방법
저번부터 계속해서 rebase에 대해 알아보았다. 그러나 생각보다 rebase를 진행하다보면 충돌이 나는 경우가 많다. 간단하게 리베이스에서 발생한 충돌을 해결해보자. 우선 master에서 c.txt를 만들고 커밋을 진행해보자. 그리고 conflict 브랜치에서 c.txt를 만들어서 파일내용에 conflict branch commit으로 저장하고 커밋을 하자. 그럼 이제 master 브랜치로 conflict 브랜치를 rebase하여 merge를 진행해보자. 그러면 다음과 같이 충돌이 발생하게 되고 rebase가 멈추는것을 볼 수 있다. 그럼 충돌된 내용이 무엇인지 확인해보자. 몬가 이상한것을 확인할수있다. 바로 HEAD 부분에 원래 merge중에 충돌이 발생하면 내 코드가 나오고 하단에 충돌이 발생한 코..
현대백화점 천호 식품관 지하 2층 피자 맛집 비밀더비스트로 후기
천호에 일이 있어서 방문하게 되었다. 그러면서 저번에 맛있게 먹었던 피자집 비밀더비스트로에서 피자를 먹기위해서 방문 현대백화점 지하2층에 식품관에 방문하였다. 피자가 가격도 괜찮고 맛도 좋아서 참 좋은곳 같다. 가격은 치즈피자, 하와이안 피자, 페러로니 피자 세가지 종류를 판매하며 반반 섞어서 주문도 가능하다. 제일 비싼 피자가 13000원이라서 부담없이 2 ~ 3인이 같이 먹을 수 있다. 스파게티랑 리조또도 같이 팔고 있어서 먹으면 좋을것같다. 먹어보지는 않았다. 내가 먹은건 하와이안 피자랑 페퍼로니 피자였다. 도우는 얇은것과 두꺼운것 취향에 따라 먹을 수 있다.아이스 아메리카노도 2천500원인데 리필도 천원밖에 하지 않아서 괜찮다.
규칙 74 - Serializable 인터페이스를 구현할 때는 신중하라.
클래스 선언부에 implements Serializable를 붙히면 간단하게 직렬화 가능 객체를 만들수 있다. 그렇기 때문에 개발자 입장에서는 Serializable을 붙혀서 직렬화 기능을 만드는 것이 간단하다고 생각할 수 있다. 여기서 먼저 직렬화에 대해서 간단한 예제를 보고 가자. import java.io.Serializable; public class Student implements Serializable { private static final long serialVersionUID = 1L; public Student(String name, int number, int height) { this.name = name; this.number = number; this.height = heigh..
Git 대화형 rebase를 사용한 커밋 순서변경, 합치기 등등 방법
저번에 공부했었던 rebase에 대해 더 공부해보자. 이번에 공부할 내용은 대화형 rebase를 통해 커밋한 내용을 지우거나, 순서를 바꾸거나 기존 커밋에 내용을 더 추가하거나 하는 내용을 확인해보자. 커밋 합치기 리베이스를 진행할 때 리베이스를 진행할 브랜치에 커밋된 내용이 길다고 가정해보자. 그러면 그 커밋마다 변경된 내용이 다 달라서 master에 리베이스를 진행할 때 여러번에 conflict를 해결해야 한다. 그래서 오늘 강의해주신 강사님이 말씀하시길 브랜치의 커밋을 하나로 합치고 나서 rebase를 진행하면 좋다고 하셨다. 그럼 합쳐보자. 우선 아래 이미지를 보면 c2와 c3의 커밋을 하나로 합쳐서 아래와 같이 마스터 브랜치에 합쳐보겠다. 우선 위와 같은 상황이 되도록 브랜치를 만들어서 진행해보..
Git의 rebase를 이용한 커밋 정리 (merge와 차이)
Git을 처음 입사 후 진행했던 프로젝트에서 Gitlab을 통해 처음 접해보았다. 확실히 저장소 관리하는 방식과 커밋 전 단계가 제공되는 것 등등 편한 것이 많았다. 하지만 그 때 당시 딱히 팀원이 없었기에 히스토리 관리 및 flow 관리를 해야한다는 필요성을 알지도 못했고 듣지도 못했었다. 그러나 공부를 진행해보면서 git에 rebase라는 좋은 기능이 있다는 것을 알게되었고 배워보고 싶어 nhnent에서 제공하는 사내 교육에 참여하였다. 우선 첫 번째 글로 rebase와 merge에 차이를 설명하고 rebase를 진행해보자. rebase란? 우선 rebase는 base를 다시 지정한다 (re-base)의 의미이다. base가 무엇인가? 다음 그림을 보자. 그림을 보면 master의 c4와 experi..
판교 테크노벨리 치킨집 bbq 방문 후기
2018 러시아 월드컵 치킨과 맥주를 먹으면서 응원하기 위해서 스웨덴전이 하는 19일날 판교의 치킨집을 찾아봤다. 치킨마루, 깐부 등등 다 가봤는데 이미 사람이 만석이었고 어디 못가고 있을 때, 새로생긴지 얼마안된 bbq로 갔다. 거기도 사람이 많았지만 그래도 빈자리도 꽤 있었고 티비도 가까워서 그곳에 앉았다. 확실히 티비가 커서 좋았다. 8시에 방문하여 치킨을 시키고 맥주를 시켰는데 후반전이 시작하는 9시 55분까지 치킨이 안나왔다. ㅋㅋㅋ 아무리 치킨이 주문이 밀렸어도 두시간 가까이 안나오다니... 옆 테이블은 거의 2시간 반을 기다렸다. 어떤 손님은 욕을 했다 완전 노답. 대목이면 사실 대목답게 미리미리 준비를 했어야 하는거 아닌지 좀 그랬다. 병맥도 다떨어져서 주문도 할 수 없다고 하고 좀 아쉬웠..
Spring에서 task executor를 사용하여 비동기 설정시 xml 오류 해결
Spring에서 Async 개발을 진행하기 위해서 task executor를 사용해야했다. 그래서 servlet-context.xml에 task-executor 관련 내용을 쓰겠다고 설정하려고 하였다. 설정내용은 다음과 같았다. 123456789101112xmlns:task=http://www.springframework.org/schema/task // xsi:schemaLocation http://www.springframework.org/schema/taskhttp://www.springframework.org/schema/task/spring-task-4.1.xsd // pool 사이즈 설정 Colored by Color Scriptercs 다음과 같이 설정을 진행하였는데, cvc-complex-..
JQuery함수의 append와 appendTo 차이
하나의 dom 객체를 다른 dom에 붙히려고 할때 JQuery에서 제공하는 append나 appendTo를 사용한다. 그런데 append와 appendTo가 헷갈리는 경우가 있는데 이 두개의 차이를 알아보자. 두 개 메서드의 결정적인 차이는 붙는 대상이 무엇이냐에 있다.아래 예제를 살펴보자123456 $('').appendTo($('#test'));$('#test').append($(''));cs 코드를 보면 두 개의 결과는 동일하다. 짐작하겠지만 appendTo는 뒤에있는 객체에 앞에있는 내용을 붙히겠다는 의미이고 append는 앞에있는 객체에 뒤라는 객체를 붙히겠다는 뜻이다. 영어 뜻을 잘 해석해서 진행하면 이해하기가 더 쉬울 것 같다.
데이터 저장 구조 및 I/O 메커니즘
데이터베이스는 디스크로 구성되어있는 데이터베이스이기 때문에 SQL 튜닝은 곧 I/O 튜닝이다. 그렇기에 기본적인 데이터의 저장 구조 및 디스크 또는 메모리를 읽는 메커니즘에 대한 정리를 먼저 해보자. SQL 실행이 느려지는 이유 I/O가 처리되는 동안 다른 프로세스는 놀게된다. 그렇기 때문에 효율적인 프로세스 활용이 되지 못해 SQL이 느린 것이다. 왜냐하면 디스크에 접근하는 로직이 느린 경우 다른 프로세스는 계속 놀게되고 디스크 경합이 심해지기 때문이다. 데이터베이스 저장 구조데이터베이스를 저장하려면 먼저 테이블 스페이스를 만들어야 한다. 테이블 스페이스는 테이블, 인덱스, 파티션, LOB등 여러 세그먼트를 담는 컨테이너로써 여러 개의 데이터파일로 구성된다. 각 세그먼트는 데이터 저장공간이 필요한 오브..