Today I Learned
(24.04.19)[1주차] GitHub 가상 협업 상황 연습 / Web 서비스 기초 강의
팀 프로젝트가 끝나서 KPT회고를 마치고
짧은 시간을 내서 GitHub 협업에 대한 가정을 하고 실습을 했다..
이번 일주일은 협업 관련한 내용들을 학습했다고 생각
너무 빨리 지나갈 것 같다.
WIL은 앞으로 토요일 오전 일주일을 마무리 하면서 간단하게 작성을 할 수 있도록 할 것
GitHub 가상 협업 상황 연습
계획
- 실제 Java 파일을 이용, IntelliJ를 활용 실습 및 연습 실행
- GitHub에 올려진 Java 코드를 가상의 3명의 협업자가 작업을 한뒤, main으로 합치는 연습
- main이외의 두 작업자를 두 branch를 임의로 지정
- rebase(협업에서 많이 사용)를 사용해서
- 충돌이 일어날 코드위치를 만들어서 충돌을 해결해서 main으로 최종 확인, branch 삭제까지 완성
실습
IntelliJ에서 Git Bash 로 GitHub 연결
- IntelliJ의 Settings - Version Control - GitHub 에 들어가 계정을 연동하면, 계정 레포지토리를 바로 선택해서 Push 가능
- IntelliJ 특유의 설정값 저장 파일인 iml은 함께 생성되어 push
Sourcetree로 진행 상황 확인 및 설정
- addclass 브랜치에서 임의의 클래스를 추가
- addclass 브랜치에 main과 충돌을 일으킬 수 있는 임의의 코드 추가
- nannno 브랜치에서 모든 주석을 삭제
noanno 브랜치를 main으로 rebase
이슈 : noanno 브랜치가 앞서 나가갈 때 main이 계속 따라가지 못하는 현상
- main브랜치로 이동 후, git merge noanno 를 써서 merge를 해야 main이 맨 위로
- pull과 push를 하겠다는 생각 X rebase끝나면 바로 merge를 쓸수 있도록
- git push을 해줘야 orgin/main github의 main도 위의 상태처럼 모두 하나로 이어질 수 있음
- 반드시 GitHub도 시간선을 따라가게 해줘야하기 때문
- 그냥 모든 작업을 완료할 시 무조건 push
- 그 다음에 브랜치를 삭제로 해결
이슈 : 충돌 발생을 안하는 현상
- 일부러 충돌하게끔 main과 addclass에서 파일의 같은 줄 번호에System.out.println("main"); 코드를 추가했지만 충돌X
- 추가한 코드의 양 만큼 밑으로 내려가면서 충돌을 피할 수 있는 것
- 협업 상황에서는 중간에 클래스를 넣을경우 밀려서 중복해서 코드가 나올 수 있는 상황이 있을 수 있다는 점 간과X
이슈 : 충돌이 오히려 발생을 하는 현상
- 글자는 밀리지만, 중간 빈줄로 띄우는 경우 충돌이 발생
- 뾰족한 자동화 방법이 없기때문에 작업 전 pull을 항상 해줘서 시간선을 맞춰서 해주기
- 중간 빈줄을 충돌이란 점 기억해두면서 작업하기
실습을 통한 정리
GitHub에서 내가 프로젝트에 참여를 해야할 때!
- 로컬에서 clone을 통해 main 프로젝트를 불러오기
- 그 시점의 main에서 내 로컬에서 내 담당 영역을 위한 새로운 branch 생성
- branch를 git push -u origin 통해서 GitHub에 내가 branch를 push할 똑같은 branch를 만들기
- 일단 pull, 그리고 작업, push
- 충돌이 있을 경우 해결 (같은 branch에서 작업하는 작업자가 여럿일경우)
- 개인 작업
- 내가 작업하고 있는 그 branch에서 git rebase main 을 통해 덧붙이기
- main과 충돌 해결
- 로컬에서 rebase된 main과 덧붙여진 branch를 push
- git pull을 통해서 로컬에서도 GitHub main최신버전 불러서 확인
- 불필요한 branch 삭제
- 단, 6번 부터는 main을 pull로 로컬로 GitHub에서 계속 당겨와서 최신화 추천 =시간선을 맞출 수 있도록.
- Sourcetree는 익숙해지기 전에 절대 그 안에서 git작업 하지 않도록 건들지 말기
Web 서비스 기초 강의 간단 정리
해당 내용은 내일배움캠프 저작권 및 기타 자료와 중첩이 되는 부분이 많아 나름대로 본인의 정리와 더불어서 매우 간단하게 정리
자세한 내용은 Notion과 지급된 자료로 Notion 에 아카이빙 했다.
더보기
Web 개발
Web 서비스 개발
- 웹 공간에서 제공하는 모든 서비스를 설계,제작, 유지보수 및 관리를 하는 것을 목적
- 웹 개발자의 의의
Web 서비스 동작
- 웹 공간 클라이언트 요청을 하는 것
서버
- 해당 요청을 받아주는 곳
- 사실상의 물리적인 컴퓨터, 데이터 센터
- 접근할 수 있는 곳이 아닌 작은 노트북 조차도 서버가 될 수 있는 것
Web 서비스 도구
- 일종의 서버를 대여해주는 서비스
- AWS, Vercel, Netify 등
- 서버는 물리적인 컴퓨터이기때문에 우리는 도구를 사용해서 Region에 있는 물리적인 서버를 빌리는 형태
- AWS, Vercel, Netify 등
- 물리적인 서버의 도입이 한계를 보완
- Auto scaling
- 자동으로 규모를 증설하거나 축소 시킬 수 있는 기능
- 과금제
- 간단한 클라우드 서버와 같은 파일 서버도 존재
클라이언트 ↔ 서버
클라이언트
- 요청의 주체로 도구를 활용해 웹 서버에 요청
서버
- 받은 요청을 처리, 응답
- ex) 회원가입 버튼을 누를 때(클라이언트의 요청), 서버가 로직에 따라 처리 후, 완료됬다는 응답을 주는 것 까지
- 서버의 해당 프로그램 내부 설계된 요청을 캐치 → 요청에 따른 서비스를 실시 및 요청
- 따라서, FE는 BE가 요청하는 데이터를 응답하므로 BE입장에서는 웹 서버, BE는 클라이언트, 그 구조에 따라 클라이언트-서버는 상대적인 개념
- 요청처리
- Rest API
- HTTP , URL 요청, JSON 응답
- URL Method 조합
- HTTP 에 의해 URL+method
- Rest API
Web 서버의 기능
- API 제공
- API, Application Programming Interface
- 서비스간 동적으로 데이터 정보를 제공하는 중간 매개체
- JSON형태로 주로 응답을 반환
일주일도 지나갔고 다음주부터는 본격적으로 Java가 시작될 것 같다
다음주도 화이팅 할 수 있도록..
'Today I Learned' 카테고리의 다른 글
(24.04.22)[2주차] Java문법 종합반 강의(Java입문, 변수/상수, 연산자, 조건문/반복문, 배열) (0) | 2024.04.22 |
---|---|
(24.04.20)[1주차] WIL (1) | 2024.04.20 |
(24.04.18)[1주차] GitHub 명령어 실습 및 연습 (1) | 2024.04.18 |
(24.04.17)[1주차] 프로젝트 Markup, Dreamweaver (0) | 2024.04.17 |
(24.04.16)[1주차] Git & GitHub Branch 정리 (1) | 2024.04.16 |