항해99 개발일지

01-12 일지

카로루딘 2023. 1. 13. 01:22

날짜가 지나서 쓰는 것이지만 상관없겠지. 기록 시작한다.

 

오전 : 휴식, 어제 말한 if문 넣어서 for문 보완하기

특이사항

어젯밤엔 분명 꽤나 있을 법한 오류를 미리 찾았다고 생각했다. 그때 생각했던 문제는 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@app.route("/bucket/delete", methods=["POST"])
def bucket_delete():
    num_receive = request.form["num_give"]
    db.bucket.delete_one({'num'int(num_receive)})
 
    buckets_list = list(db.bucket.find())
 
    a = 0;
    for i in buckets_list:
        a += 1
        rows = i['num']
        db.bucket.update_one({'num': rows}, {'$set': {'num': a}})
        print(rows)
 
    return jsonify({'msg''DELETE(삭제) 삭제 완료?'})
cs

여기서 db.bucket.update_one({'num': rows}, {'$set': {'num': a}})  부분을 잠재적 문제요소로 꼽았는데 '이미 num값이 중복되어 있을 때 업데이트를 진행하면 순서가 꼬일 위험이 있다'였다. .i[num]값이 여러 개일 때 update_one이 뭘 꼽을지 명확하게 할 수 없으며, 이는 당장 괜찮아보이지만 장기적으로(당장 이 프로젝트에는 고려할 문제는 아니다만) 수정하기 곤란한 문제를 야기할 수 있어보였다.

하지만 생각을 달리했다. 지금은 문제가 발생한 다음 코드를 덧대고 있기 때문에 이런 고민을 했지만 이 코드를 완성하고 공백 상태의 깔끔한 데이터 베이스에 연결되면 내가 우려했던 문제 자체가 발생할 일이 없다! 순서 꼬이지말라고 풀어서 일일히 고치는데 순서 꼬이는 걸 걱정했다니! 하이고야.....하나도 제대로 못보고 둘을 걱정하고 있다니. 시야의 초점을 빠르게 맞추는 것도 일머리 좋은 사람의 요령인데 난 멀었다.

 

오후 : 팀원끼리 코드 리뷰, 버킷리스트에 완료한 항목을 취소시키는 코드 추가

특이사항

삭제 기능에 관련하여 한 팀원 분이 나와는 전혀 다른 방법을 제시했다. 디비몽고에서 오토_인크립트 기능을 사용한 것이었다! 그걸 알았어야 했는데! 유니티 엔진 만진다고 꺼드럭댔을 땐 코드 만지기 싫다고 컴포넌트만 줄창 만지작댔었는데 여기서는 왜 그 심보가 안나왔지! 서버 프로그램에 이런 기능이야 있을탠데. 덕분에 무작정 코드구현만 답이 아니란 인식을 갖췄다. 멋지군!

하지만 팀원 분이 선보인 기능은 카운트 기능을 초기화하는 것은 고려하지 않은 형태였다. 코드를 덧대면 초기화할 수는 있지만 당장은 그 팀원 분도 나도 '찾아보면 나오겠지만 굳이 지금 할건 아니지.'라고 결론내고 넘어갔다.

 

저녁 : 깃 재설치

특이사항

흠......깃에 대해서는 너무 안 좋은 기억만 있다. 일전 인디팀을 꾸릴 때 깃 까지 것하면서 헤딩했다 일주일을 헤매고 '그냥 구글 드라이브 쓰죠 ㅎㅎ'하면서 체면 구긴 기억이 있다. 결국 팀이 해체되고 혼자가 되서야 유니티 연동 모듈 활용에 성공했지만 그게 지금와서 발목을 잡았다. 도대체 무슨 음양오행의 부조화가 나를 괴롭히는 건지, 깃, 깃 데스크탑, 소스트리가 그 오래된 연동 모듈에 꼬여도 단단히 꼬여서 6번이나 삭제 후 재설치하면서 문제를 찾았다. 포멧까지 할 수는 없으니 악으로 깡으로 고쳐냈지만......내 착각이겠지 하하.....

이 일에 대해 잊을 때 쯤이면 이 깃놈이 '헤헤, 사실 그때 재설치하면서 뭐 하나 빠뜨렸더라? 그러니 죽어라!!'하면서 내 뒤통수를 후릴 것이 눈에 선하다. 그런데 어쩌겠는가, 코드는 눈에 보이니 설계라도 하지만 뒤에서 프로그램 꼬인 건 내가 어찌할 수 있는 영역이 아니다. 여하튼 이것 때문에 공부에 진척이 없었다.

 

심야 : 깃 공부

특이사항

이상하다. 분명 레포지토리, 푸쉬, 커밋 다 아는 단어인데 설명을 보면 뭔지 모르겠다. 게슈탈트 붕괴도 이렇게 길면 건망증인데 아무래도 그때 깔았던 연동 모듈이 아주 기막힌 물건이었던 것 같다. 그때 내 기억으로, 개발 중이던 폴더에 폴더 2개만 깔면 버튼 하나로 푸쉬 커밋 전부 눈치껏 해줬는데 그걸 하나하나 풀어서 하는 게 정석이었다니. 다른 팀원들은 이미 소스트리에 적응한 모습이었다. 안된다...벌써 진도를 못 따라잡는 건 사양하고 싶다.

정리 - 깃 커밋, 레포, 풀, 푸쉬

커밋은 한 프로그램에 임시 버전을 만든다고 생각하면 될 듯 하다.

칠판(원격 repo)에 적힌 커다란 수필 한 편(project)을 두고 학생들이 자기 책상(로컬 repo)에서 수필을 배껴쓰고(pull)의 첨삭본(commit)을 만들고, 이거다 싶으면 칠판에 붙이는(push) 것이라 생각하면 되려나.

그러면 clone과 pull의 차이는 뭐지?

 

소감

벌써 허리가 아프다. 이걸 본 사람들은 허리 스트레칭도 좀 하고, 앉아 있을 때 꼬리뼈에 힘 빡 주길 바란다. 내일, 아니지...해뜨면 시험이다. 난이도는 걱정없지만 제 때 일어나는 게 문제다.