프로젝트를 진행하면서 Gerrit을 통한 코드리뷰를 해야하는 상황이 생겨 Gerrit이 무엇인지와 어떤식으로 활용을 해야할지 정리가 필요하다 생각해 포스팅함. Gerrit이란? 게릿(Gerrit)은 무료 웹 팀 코드 협업 도구. 소프트웨어 개발자가 팀에서 웹 브라우저를 사용해 소스 코드의 다른 사람의 수정 사항을 검토하거나 변경 사항을 승인 또는 거부할 수 있음. Gerrit은 코드 리뷰를 자동화와 동시에 강제성을 부여함으로써 기능개발을 완료한 Commit들에 대해 원격 저장소로 Push를 할 때 자동으로 지정된 리뷰어에게 알림이 전송되며, 리뷰어는 웹 브라우저를 통해 리뷰를 진행함. 이 때 코드 리뷰를 통해 부여된 점수가 일정 수준 이상이 될 때 실제 소스코드에 반영이 이루어짐. Feature Gerr..
문제 https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X www.acmicpc.net 풀이 자료구조 스택을 활용하여 풀이 접근법 temp라는 임시 변수를 활용. 여는 괄호의 경우 Stack.Push() temp *= 2 혹은 temp *=3 → 여는 부분에서 곱하거나 더할 값을 temp변수에 누적 닫는 괄호의 경우 Stack.isEmpty() 체크 각각의 괄호에 따라 결과값에 temp값 누적 및 temp값 감소 temp /= 3 or temp /= 2 소스코드 impor..
본 포스팅은 인프런 공룡책 강의를 기반으로 한 스터디 개인 정리를 위한 포스팅입니다. 잘못된 부분이 있다면 언제든 지적해주시면 감사하겠습니다! 1. 프로세스 동기화 동시다발적으로 실행되는 프로세스와 쓰레드들은 서로 협력하면서 영향을 주고받게 되는데 이 과정에서 자원의 일관성을 보장해야 함. 프로세스 동기화란 ? 실행순서 제어 : 프로세스를 올바른 순서대로 실행하기 글 쓰는 프로세스가 먼저 실행된 후 읽는 프로세스가 실행되어야 정상적으로 데이터가 넘어가기 때문. 상호 배제 : 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하기 Bank account problem 프린터처럼 한 번에 하나의 프로세스만 접근해야 하는 자원 Producer & Consumer Problem 공유 자원과 임계 구역..
Github Flow Github Flow는 Git Flow가 Github에서는 사용하기 복잡하다고 하여 나온 전략 여러 전략 중 가장 간단한 전략 위 커밋 그래프처럼 단순한 형태를 띄기 때문에 사용법도 단순함. 하나의 기능 구현 Feature 브랜치가 완료될 때 마다 Pull Request를 진행하기 때문에 수시로 배포가 발생. → CI / CD 환경을 구축하여 자동화가 되어있는 환경에서 사용하기 적합함. 장점 - 위 이미지처럼 Git Flow에 비해 간단하고 직관적인 구조를 가지고 있음. - 단순한 구조 및 빠른 배포주기로 인해 소규모 및 단기간 프로젝트에서 사용하기 좋음. 단점 - Git Flow에 비해 브랜치를 세분화하지 않기 때문에 브랜치 네이밍 및 커밋 메시지에 신경 쓰지 않으면 전체적인 개발..
개별 브랜치 최신화를 해야하는 상황 작업을 할 때 브랜치의 수명은 되도록 짧게 가져가는게 좋지만, 개별 브랜치에서 기능을 완료하는데 해야 할 작업들이 많아서 오래 걸리는 경우들이 있음. 그러다 보면 master에 추가된 기능들이 필요한 경우가 종종 생기게 됨. 이러한 상황 속 문제없이 내 로컬 브랜치에 원격 master의 변동사항을 가져오는 방법에 대해 알아봄. git pull origin master 개별 브랜치에서 해당 명령어를 통해 불러올 경우 아마 가져와지지 않을 경우가 높음. 이유는 Git에서 제공하는 안전성 검사 때문에 로컬 브랜치의 작업내용이 손실될 수 있기 때문. ( git pull의 경우 변동 사항이 있는지 확인함과 동시에 최신 데이터를 복사하여 로컬 Git으로 가져오기 때문에 작업내용 ..
Git 브랜치 전략을 활용하는 이유단순히 pull하고 commit하고 push&merge를 할 줄 안다고 해서 브랜치를 만들고 합치고 만들고 합치고 단순하게 작업하면 커밋 그래프가 복잡해져서 누가 언제 뭘 했는지 Tracking하기가 힘들기 때문에 그냥 작업하는 것과 별반 다를게 없음. 프로젝트가 커지고, 사람이 많아져도 branch를 나누는 것과 merge를 깔끔하게 하기 위한 전략들이 여럿 존재함.GitFlow / GitHub Flow / Trunk-based / Gitlab Flow 등등…이번 포스팅에서는 Git-Flow 브랜치 전략에 대해서 알아보고자 함.Git-FlowGit-Flow에는 5가지 종류의 브랜치가 존재함.항상 유지되는 메인 브랜치 : master(or main), develop일정 ..
Git Workflow 깃 레포지토리에 커밋을 하기까지는 총 3개의 영역이 존재 1. Working directory 내가 작업하고 있는 프로젝트 디렉토리 Untracked : Git 체크하지 못하는 파일들. Tracked : Git이 체크하고 있는 파일들. Unmodified : 수정되지 않은 파일. (원격 레포지토리의 파일과 같은 상태) modified : 원격 레포지토리의 파일과 다른 상태로 add 명령을 통해 staging area로 넘길 수 있는 상태 staged : "add" 명령어를 통해 staging area에 추가된 상태 2. Staging Area 커밋을 하기위해 “add” 명령어로 추가한 파일들이 모여있는 공간 3. Repository 커밋들이 모여있는 장소 Staging Area는 ..
본 포스팅은 네트워크 스터디를 기반으로 개인 정리를 위한 포스팅입니다. 잘못된 부분이 있다면 언제든 지적해주시면 감사하겠습니다! 위와 같은 사진 속 상황 속 URL 입력을 하게 되었을 때 이후를 묻는 면접질문은 Well Known! 이에 대한 답변으로 신입 개발자의 입장에서는 아래와 같은 답변을 하게 된다면 기본적인 대답은 OK. - 주소창에 www.naver.com라는 특정 주소를 입력후 Enter 땅! - 위 URL에 대한 IP번호를 수신 DNS Cache를 찾아보거나 hosts File을 찾아봐서 해당 정보가 없다면 ISP의 DNS 서버에 질의를 보냄. - 여기서 추가로 DNS서버에 질의를 보낼때도 분기가 나뉨. 공유기를 사용하는 경우 : 공유기가 DNS 포워딩 기능을 수행. 혹은 ISP Inter..