Jumbo96 2023. 10. 17. 17:42
728x90
반응형

# 잡담

웹소켓
사용자가 가만히 있어도 웹에서 실시간으로 반영되어 보여주는 것
ex) email , 새로운 광고, 마케팅표시 등 

 

 

복습

 

# Git 3가지 구성 요소

1 저장소 

.git

2. Staging 영역 

.git 안

3. Work Tree(작업공간)

폴더 

 

# 파일 및 폴더의 상태

1. Untracked(최초생성)

   +관리 되지않은 상태

2. Staged (저장 대상으로 지정)

 

3. Commited(저장 후)

    + status에 보이지 않음 log에서 확인 가능 (커밋 된 히스토리)

4.Modified(저장 후 수정, 현재 작업 중인 파일)

 

# Git 환경 설정

1. 사용자 정보 등록

1) name

  git config --global user.email [사용자 이름]

2) email

  git config --global user.email [이메일 주소]

2. 등록 정보 확인

    1) 전체 확인

        → git config --list

        → git config user.name

        → git config user.email

 

# Git 저장소 생성

1. 저장소가 생성될 폴더 생성

    ex) mkdir mylibgit

          cd mylibgit

 

2. Git 저장소 생성

    git init 

    → .git 폴더 생성 (vs 코드, 인텔리제이 등으로 띄워서 작업함)

 

# Git 명령어

1. 현재 상태 확인 : git status

2. 저장 대상 지정 : git add [파일명] 또는 git add .

3. 저장하기 (commit) : git commit -m [작업내용]

                                  git commit -a -m [작업내용]

(대부분 1, 2, 3 을 사용함)

4. 변경내용 확인 : git diff

5. 파일 삭제 : git rm [파일명]

6. 파일명 변경 : git mv [파일명]

7. 저장소 복사 (협업을 위한 준비) : git clone [저장소의 url]    // 처음 다운로드 받을 때 clone 이후는 full

8. 저장 이력 확인 : git log

                           git log --oneline --graph --all

9. 되돌리기 (위험한 명렁어)

    1) 커밋 메시지, 파일 추가 : git commit --amend

    2) 저장 대상으로 지정된 파일 취소 (Stage → Unstage) : git reset HEAD [파일명]

    3) 직전 커밋 내용으로 파일 수정 : git checkout -- [파일명]

 

# Branch

1. 브랜치 생성 : git branch [브랜치명]

 

2. 브랜치 목록 확인 : git branch

 

3. 브랜치 이동 : git checkout [브랜치명]

 

4. 브랜치 병합 : git merge [브랜치명]

    ※ 작업 상태에 따라 충돌 (Conflict) 발생

        1) merge 실행 후 충돌 파일 확인

        2) 내용 수정 후 commit

 

★학습목표

1. GitHub

    1) 원격 저장소 생성

        + 로그인

        + Repository 메뉴

        + Remote Repository 생성

        + 로컬 저장소와 연결하기

        + 커밋 내역 업로드 (push

 

    2) 팀원 초대

    3) push (업로드)

    4) clone (최초 1회 다운로드)

    5) fetch & pull (다운로드)

 

2. Conflict

 

3. .gitignore

 

★학습

[ 협업 ]

1. 저장소 복제 git clone [ url ]

   + github에 로그인해서 repository를 만들고 그 주소를 알려준다.

(setting에서 Collaborators에 초대가능)

   + vs코드에서 Source Control에서 만들 수 있다.

2. push

   + 코드를 수정하면 Source Control 에서 push 한다.

   + 충돌 시 상황에 맞게 연락을 취하거나 수정

3. pull

   + 동기화 하여 이전에 작업된 내용을 받아올 수도있고

충돌된 내용을 나 또는 팀원이 수정하게  끔 상황을 만들 수 있다.

 

※ pull , push 시나리오

예1

1) GitHub (Remote)

- master 브랜치 1개만

 

2) 팀원A (Local)

- master 브랜치 + 팀원A 브랜치

   → 기능 개발 완료 후 master와 merge

         → 원격 저장소로 push

 

3) 팀원B Notebook (Local)

- master 브랜치 + 팀원B 브랜치

   → 기능 개발 완료 후 master와 merge 

         → 원격 저장소로 push

  ----------------------------------------------------

예 2 

팀원B가 팀원A의 소스코드를 받아오는 경우

 

1) 팀원B가 원격 저장소 master 브랜치에서 pull

 

2) 로컬 저장소 master 브랜치의 내용을 

    팀원B의 브랜치로 merge     ex) (브랜치B에서) git merge master

 

3) 팀원B의 브랜치에서 기능 개발 완료 후

     master와 merge → 원격 저장소로 push

  ----------------------------------------------------

4. conflict >> add >> commit >> push

 

충돌을 최소화 하기 위해 

Branch

Source Control 에 · · · 메뉴에서 branch > add 를 눌러 만들 수 있다.

그리고 checkout to  를 이용하거나 왼쪽 하단 버튼을 눌러 branch(HEAD) 이동이 가능하다.

 

불필요 파일 목록

react의 node_modules, spring의 target 등 

개발 중 자동으로 생성되는 파일은 

Git의 관리 대상에서 제외해주는 것이 효율적임

.gitignore 라는 파일에 목록을 작성

 

추천 서비스 (gitignore.io)

관련 기술, 환경 등을 지정하여 생성

이렇게 코드가 나온다 이걸 .gitignore에 붙여넣기 해주면 끝!

이런식으로 사용하여 충돌이나 특수한 경우를 해결할 수 있게 될 지도...

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

## 과제 복습

서버가 재구동하면 세션은 날라갑니다. (d 와 e는 내가 만든 클래스)

기본과 참조자료형은 직렬화( Serializable )가 구현이 된다

 

  @RequestMapping("/login")  
  @ResponseBody
  public String login() {
    session.setAttribute("name", "ggoreb");
    session.setAttribute("a", true);
    session.setAttribute("b", 100);
    session.setAttribute("c", 10.10f);
    Owner owner = new Owner();
    owner.setName("Owner name");
    session.setAttribute("d", owner);
   
    Note note = new Note();
    note.setName("Note name");
    session.setAttribute("e", note);

    List<String> list = new ArrayList<>();
    list.add("a");
    session.setAttribute("f", list);
    return "로그인 완료";
  }

e 의 모델에

public class Note implements Serializable

이렇게 작성해준다면

서버를 재구성 했을 때 이렇게 유지가 된다.

 

## repository 코드 작성시 기본제공 코드

// findAll() , findById() , save() , delete()

예) userrepository.findById()

 

회원 탈퇴

1. 연관관계 x

 

2. 연관관계 o

    Fk(외래키)는 

    Pk(기본키)로 존재하고 있는 데이터만 사용 가능

    단, null 은 가능

DB에서는 cascade(폭포 의미) 라는 기능을 제공

이 값을 회원쪽에 연결

 

 

예시)

   파일이 첨부된 게시글 삭제

   답글/댓글이 작서된 게시글 삭제

   즐겨찾기 등록을 한 적이 있는 사용자 탈퇴

 

 

728x90
반응형