728x90

맘잡고 매일 TIL을 작성하고자 맘먹은지 딱 작심삼일만에 하루를 밀렸다허허... 갑자기 불어난 일감에 멘탈을 부여잡느라 늦었다는 핑계가... 암튼 진행

전날 목표

GETIT 프로젝트

  • 기존 8000포트 테스트서버 -> nginx - gunicorn - django - docker 활용하여 80번포트 배포

이부분은 진행하지 않았다. 정확히 말하면 못했다. 프로젝트 진행중 기존API에서 개선사항이 생겨 진행하지 않고 대신 진행한것은

  1. FORM-DATA IMAGE받기와 TAG오류 및 멤버 추가 API

일단 기존에 포스트맨으로 테스트할당시 문제가없었던 IMAGE받는 데이터형식은 JSON으로 받았는데 이부분이 배포후 진행할때는 JSON형식이 아닌FORM-DATA형식으로 받아야 한다는것을 알게 되었다. 그래서 이리저리 어떻게 받아야 하나 삽질을 했는데 결국 코드 자체는 변화가 없었다.... drf의 serializer는 json형식과 form-data형식 모두 지원하기때문에 문제가 없었다. 내가 삽질을 했던 이유중 가장큰것은 form-data형식의 경우 request될때 user=[]과 같은 형식으로 무조건 리스트안에 값이 담겨와서 어떻게 받아야하는지 고민을 했는데 그냥

위와 같이 데이터를 각각의 키값과 벨류값에 넣어서 보내주면 기존과 똑같이 처리됨을 알았다. 허허... 

 

연쇄적으로 tag는 manytomany필드를 이용하여 객체가 생성된뒤 필드에 추가해주는 식으로 진행했는데 기존에 tag값을 리스트 형식으로 받아서 for문으로 값을 하나씩 추가하는식으로 진행했으나 abcd,djfke,dasd와 같이 tag가 return되면 저장이 콤마를 기준으로 나누어져 받아야하는데 a,b,c,d,h,...과 같이 각각저장되어 문제였다. form-data는 무조건 string 또는 file형식으로만 request가 가능하기 때문에 당연히 받은 값에서 for문을 돌리는 각각저장되는 문제가 날수 밖에 없었다.

names = request.data['stack']
            names_split = names.split(',')

그래서 받은 data를 ,를 기준으로 split하여 for문을 돌려 저장하여 비교적 쉽게 해결할수 있었다. 

 

마지막, member추가의 경우, 팀프로필api는 모두 만들었지만 추후 팀원추가에 대해서 고려를 안하고 있었다는 점이다. 단순히 member만 추가하는건

requestData = json.loads(request.body)
        teamprofile_id = requestData['teamprofile']
        profile = TeamProfile.objects.get(id=teamprofile_id)
        member = request.user.id
        _member, _ = Member.objects.get_or_create(member=member)
        profile.members.add(member)
        res = {
            "message": "sucess"
        }
        return JsonResponse(res)

위와 같이 쉽게 해결하였지만 팀원으로 pk값이 포함되어있을때 팀프로필 수정권한 부여 및 팀프로필 list api요청시 수정해야할부분이 많아 시간이 좀 걸렸다. 이부분은 양이 좀 많아 추후 drf 블로그글을 작성할때 추가해두도록하겠다. 

 

인턴

  • SQLITE - PYTHON DB 연동 테스트

쉬웠다. sqlite의 경우 fetch를 이용하여 db정보를 가져오면 되는데 암호화 되어있는 db이기 때문에 pysqlcipher을 이용하여 복호화후 fetch하여 내 로컬 pc db에 필요한 값들을 가져왔다. BUT.. 내가 멘붕온부분은 목표에 적겠다...

 

오늘의 목표

GETIT 프로젝트

  • DJANGO CHANNELS를 이용한 알림 기능 구현

인턴

  • ESXI환경에서 VM ON/OFF자동화
  • VM과 로컬PC 통신 및 WEBSOCKET을 통한 로그 실시간 기록
  • 웹서버 구축 및 컨트롤러 프로토타입 개발

멘붕오브멘붕이다... 인턴일은 당장 오늘 하는건 불가능하고 주말간 그리고 다음주 화요일까지 작업할것들을 미리 적어뒀다. 내가 블로그글 남길시간이 없을것 같아서... 사건은 이러하다..

리드님과의 프로젝트 회의에서 기획방향이 바뀌었다. 왜냐면, ESXI라는 VM을 관리해주는 장치?(솔직히 잘모른다 뭔지 이것부터 알아보고 진행해야한다)환경에서 총 16개의 VM을 관리하는 프로젝트이기 때문이다. 일단 가장중요한 VM ON/OFF자동화는 ESXI를 컨트롤하기 위해 pyVmomi라는 라이브러리를 사용할계획이다. 웹소켓은 리드님이 생각하시는 가장 중요한 부분으로 아무래도 사람이 검증하는것을 자동화 시키는 프로젝트 이기 때문에 현재 문제가 생겼는지? 아니면 진행률은 어떤지 controller부분에서 로그가 기록되어야한다고 하셨다. 이 방법은 현재 웹소켓통신으로 받는것말곤 생각이 안난다. 그리고 내전문분야? 암튼 가장 자신있는 웹서버의 경우, 문제없을것 같지만 보안업체다 보니 폐쇄망 환경에서 작업을 하게되는데 vm 공유폴더 사용이 불가능하고 신청한 port와 ip외에는 접근이 불가능하기때문에 ip 포트 개방요청후 작업에 필요한 파일을 매번 sftp로 22번포트를 이용하여 전달해야한다. 이런 일련의 작업들을 모두 처음 해보기 떄문에 매우매우매우 시간이 부족하고 스트레스가 이만저만아니다... 

 

그래서 getit프로젝트에서 인프라말고 웹소켓을 먼저 진행하는 이유이기도 하다.. 진짜로 시간이 많이 부족하다 하하.. 화요일에 웃으며 TIL을 작성하길 바라며,,,, 그래도 이고비 넘기면 모든것들이 아름다워보일것 같다ㅎㅎ.. 화이팅!!!

728x90

+ Recent posts