Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

Nonamed Develog

[TIL][240710] .gitignore, 인스턴스의 이해 본문

WHAT I LEARN/TIL

[TIL][240710] .gitignore, 인스턴스의 이해

노네임드개발자 2024. 7. 10. 20:22
어떤 문제가 있었나?

오늘은 팀 과제를 마무리하고 발표하는 날이었다. 우리 팀을 포함해서 총 6팀이 발표하는데 피드백에서 많이 언급됐던 것 중 하나가 DB파일은 github에 업로드하지 않는다는 것이다. 이 피드백은 이미 지난 프로젝트에서도 언급되었지만 이번 팀 프로젝트를 진행할 때 생각하지 못했다. 

 

또한 과제에 대한 나의 이해도가 얼만큼인지 가늠할 수 없어 발표 전 코드를 복습해 봤다. 코드를 작성할 때 인스턴스에 대한 궁금한 부분이 있었던 걸 협업이라는 핑계로 외면했지만 더 이상 외면할 수 없었다.


무엇을 시도했나?

.gitignore를 활용하지는 않았지만 지난 Git 2차 특강에서 배운 브랜치 생성 후 협업하는 방법을 이용하여 프로젝트를 진행했다. 기능 브랜치로 push 후 merge를 하지 않거나 충돌된 데이터를 수정하지 못해 당황하는 경우가 발생했지만 차근차근 문제를 해결해 나갔다. 그때쯤. gitignore에 대해 생각이 났지만 편리함에 취해 그냥 무시해 버렸다.

 

발표가 끝나고 팀원들과 코드 리뷰를 진행했다. 마지막으로 몰랐던 부분, 추가적으로 인스턴스에 대해 궁금한 부분을 채울 수 있는 좋은 기회였다.


어떻게 해결됐는가?

코드 리뷰를 진행하는 중 내가 학습하고 작성한 코드(hashlib, logging, time.sleep())을 팀원에게 설명하니 오히려 복습이 되면서 정리가 되었다. 앞으로 이런 시간을 많이 가져야겠다. 또한 궁금했던 인스턴스에 대해 질문을 하고 팀원들이 친절하고 자세하게 설명해 줬다.


새로 알게 된 점은 무엇인가?

.gitignore

  • .프로젝트 작업 시 로컬 환경, 데이터베이스 등 Github에 업로드하지 않아야 하는 폴더/파일을 지정하여 Github에 올라가지 않도록 관리하는 파일이다.
  • 작성 방법
    • *.확장자: 입력된 확장자 전체를 무시할 수 있다.
    • 폴더명/파일명: 특정 파일을 무시할 수 있다.
    • 파일명: 루트의 최상위 폴더에 있는 파일을 무시할 수 있다.
  • 이미 Repository에 gif add, commit으로 올라간 파일을 제거하기 위해선 명령어로 파일을 제거해야 한다.
git rm [파일명]
git commit -m [메시지]

 

  • 파이참에서 Gitignore 추가하기: 파이참에서 가상환경을 만들면 .idea 폴더는 무조건 만들어진다. .idea도 Github에서 관리하지 않으므로 gitignore를 사용해야 한다. 
    • .ignore 플러그인 설치
    • .gitignore 파일 만들기: 우클릭>new>.ignore>.gitignore
  • gitignore.io 링크를 이용하면 편리하게 불필요한 파일을 추가할 수 있다.

 

인스턴스의 이해

    elif select == '5':  # 게시글 삭제
        del_title = input("삭제할 게시글의 제목을 입력하세요. ")
        post_matched = None
        for post in posts:
            if del_title == post.title:
                post_matched = post
                break
        if post_matched:
            while True:
                id_input = input("ID를 입력해주세요. ")
                if id_input == post_matched.author.username:
                    while True:
                        ps_input = input("패스워드를 입력해주세요. ")
                        if post_matched.author.check_password(ps_input):  # 인풋 == 해싱된 비밀번호 확인
                            posts.remove(post_matched)
                            print(f'{post_matched.title}이 삭제되었습니다.')
                            break

비밀번호 해쉬화 작업을 하던 도중 if post_input == post_matched.author.check_password(ps_input): 부분이 이해가 되지 않아 팀원들에게 코드 리뷰 시간을 통해서 질문을 했다. 속성이 post.author.password 처럼 붙어 있는 이유가 궁금했는데 한 팀원이 도식화해서 설명을 해주셨는데 단번에 이해를 했다.

 

image-2

tabulate 모듈을 이용하여 table 형태로 출력하려면 리스트 안의 리스트 형식으로 만들어야 하기 때문에 생각한 아이디어였다. Post의 인스턴스 p1을 예시로 보면 author가 있는데 author는 곧 username이 된다. 여기서 author 대신 username이 들어간 m1 인스턴스를 넣는다면 리스트 안 리스트를 만들 수 있고, author 또한 사용할 수 있다. 


무엇을 느꼈고 내일은 무엇을 할까?

내일부터 새로운 코드 카타 주가 시작되는데, 과제에 집중하느냐고 코드카타를 10개 정도 밀렸다. 빨리 따라잡아서 하루 루틴을 만들어야겠다.