프로젝트

    [AWS EC2] EC2로 클라우드 서버 생성하기

    클라우드 컴퓨팅 : AWS EC2 개인적인 취향은 아니지만, 물리 서버 말고 클라우드 서비스로 서버를 쉽게 만들어 쓰는 방법도 있긴 하다. 학습자인 현재 내 위치에서 봤을 때, 구축부터 유지보수까지 뭐든 다 떠먹여주는 클라우드 서비스의 편리함이 개인적인 취향이 아니라는 뜻이다. 클라우드 서버든, 물리 서버든 상황에 맞는 적절한 인프라를 구축하고 설계하는 능력은 개발자로서의 중요한 역량이기에. 오늘은 간략하게 클라우드 컴퓨팅 서비스를 제공해주는 AWS EC2를 통해 서버를 만들어보겠다. 단일서버 생성 먼저 가장 기본적인 단일 서버를 생성해보자. 각자 구매 스펙은 자신의 필요에 맞게 구매 혹은 설치하길 바란다. 필자는 물리 서버로 이것저것 만지는 중이라, 최소한의 스펙으로 구성했다.(공짜 ㅎㅎ) 1. AWS..

    [CatCoDog] 마지막 : 프로젝트 회고록

    [CatCoDog] 마지막 : 프로젝트 회고록

    팀 프로젝트 CatCoDog : 반려동물 식품 판매 사이트 프로젝트 기간 : 2022년 05월 23일 ~ 2022년 06월 03일 참여 인원 Front-end : 김철회, 남하임, 안성주, 윤경연, 정재성 Back-end : 강세영, 박준형 기술 스텍 Front-end : HTML/CSS, JavaScript, React, React-Router Back-end : Python, Django, MySQL 깃헙 주소 프론트엔드 깃헙 주소 백엔드 깃헙 주소 사이트 시연 영상 팀 프로젝트 발표때 사용했던 프로젝트 시연 결과물!! 협업 도구 슬렉(Slack) 카카오톡 단톡방을 이용하려다가, 현업에서 많이 사용한다는 슬렉을 통해 의사소통을 많이 했었다. 요금제에 따로 가입하지 못해 일정 시간이 지나면 이전 대화..

    [CatCoDog] 장바구니 기능 API 개발

    [CatCoDog] 장바구니 기능 API 개발

    ​ [마지막 기능 구현!!] 빠르게 리뷰 작성 기능을 구현하고 통신한 후, 세영님의 장바구니 기능 구현에 합류하였다. ​ 3일 이라는 짧은 기간 동안 최대한의 성과를 내고자 팀원들과 막판 스퍼트를 올리고 있다. ​ 지금까지 달려오느라 몸도 마음도 지친 팀원들이기에, 아침 Standup Meeting에서 항상 서로 격려해주고 복돋하주곤 하는데, 마지막까지 함께 헤쳐나갈 수 있는 팀원들이 있다는 사실 자체가 큰 힘과 의지가 되는 것 같다. ​ 백엔드 동료 세영님과도 점심에 간맥(간단히 맥주)하며 마지막까지 잘 해보자며 티타임 (티타임이 아니라 비어타임인가..?) 을 가졌다. ​ [코드 작성] ​ ​ 먼저, 장바구니에 필요한 메소드는 크게 4가지 이다. 1. Get) 장바구니 페이지에 들어갔을 떄, 사용자의 ..

    [CatCoDog] 제품 리뷰 작성 API 개발

    [CatCoDog] 제품 리뷰 작성 API 개발

    ​ [발등에 떨어진 불..] 정신없이 통신하며 하나하나 맞춰보고, 리팩토링하다 보니 벌써 한 주 반이나 지났다. ​ 프로젝트 마무리까지 남은 기간은 단 4일.. 이 기간 내에 남은 기능들 구현 및 통신, 그리고 프론트단에서 전체 페이지 merge 과정을 모두 끝마쳐야 했다. (아침 Standup Meeting 때 들은 바로는, 프론트엔드의 진행도는 75퍼센트 정도 되는 듯 했다.) (아직 정해지진 않았지만 프론트, 백엔드 각각 한 명씩 팀프로젝트 결과 발표를 맡게 될 사람들은 발표 준비까지 해야 한다.) ​ 백엔드 동료 세영님과 급히 긴급회의를 했다. ​ 남은 기능 구현은 제품 리뷰API, 그리고 장바구니API 두개. ​ 상대적으로 간단한 제품 리뷰를 내가 최대한 빨리 끝내고, 끝나는 대로 세영님이 진행..

    [catcodog] 제품 상세 정보 API 개발 (ft. list comprehension)

    [catcodog] 제품 상세 정보 API 개발 (ft. list comprehension)

    ​ [경로 설정] 평소에 커머스 사이트를 이용하다보면 제품 목록들을 보여주는 페이지에서 특정 상품을 클릭했을 떄, ​ 그 상품에 대한 상세한 정보가 나오는 창으로 이동하게 된다. ​ 내가 구현한 코드는 사용자가 특정 제품을 클릭하면, 해당 제품의 id값을 불러와 path variable을 통해 엔드 포인트를 지정할 수 있도록 경로를 설정해 주었다. ​ 아래 처럼 ​ #catcodog/urls.py from django.urls import path, include urlpatterns = [ path('products', include('products.urls')) ] #products/urls.py from django.urls import path from .views import ProductDe..

    [catcodog] 제품 리스트 정보 API 개발(feat. Q-object, annotate)

    [catcodog] 제품 리스트 정보 API 개발(feat. Q-object, annotate)

    ​ 본격적인 기능 개발을 하기 전, 같은 백엔드 동료 세영님과 간단히 standup meeting을 가졌다. ​ 사이트를 만드는데 필요한 기능들을 서로 분할해서 맡자는 취지였다. ​ 미팅 결과 다음과 같이 역할 분담을 했다. ​ 나 세영님 제품 상세 View 제품 목록 View 제품 리뷰 View 장바구니 View ​ 제품 판매 사이트인 만큼, 프론트엔드에서 원하는 제품군들에 대한 리스트의 GET 요청을 보내면, 그에 해당하는 제품 리스트 데이터를 전송해주는 API를 세영님께서 맡아주셨다. ​ 그 코드는 다음과 같다. ​ import json from django.http import JsonResponse from django.views import View from django.db.models im..

    [catcodog] 로그인 기능 구현 (JWT Token, 프론트 첫 통신)

    [catcodog] 로그인 기능 구현 (JWT Token, 프론트 첫 통신)

    시작하기 앞서, 사이트 로고가 업그레이드 되었다! ​ 기존의 로고가 반응형으로 사이트를 제작해야 함에 있어 형태가 깨지는 문제가 있었다. ​ 프론트파트 동료 중에서 디자인을 전공했던 한 분이 5분만 기다려달라고 하시더니, 갑자기 로고를 뚝딱뚝딱 만들어오셨다. ​ ​ 정말 대단하다. ​ 다양한 분야의 사람들이 한자리에 모여 하나의 결과물을 도출해나가는 과정은 역시 즐겁다. ​ 1. 로그인 기능 구현 (jwt Token) ​  로그인 기능을 구현하는 코드를 짜는 것은 복잡한 과정은 아니었다. ​ #users/views.py class SignInView(View): def post(self, request): try: data = json.loads(request.body) email = data["ema..

    [catcodog] 회원가입 기능 구현 (bcrypt)

    [catcodog] 회원가입 기능 구현 (bcrypt)

    ​ user flow에 따르면(사이트 구상 편 참고) 웹사이트의 사용자들이 가장 먼저 마주치는 기능은 회원가입 및 로그인 기능일 것이다. ​ (물론, 우리 사이트 및 기본적인 커머스 사이트는 로그인을 하지 않아도 비회원으로 상품 조회가 가능하지만, '상품 구매'를 전제한다면 로그인, 회원가입 기능이 첫 번째 기능이라는 말이다.) ​ ​ 1. 정규표현식 생성 ​ ​ 우선 회원가입 기능을 개발하기에 앞서, utils.py 파일을 생성하여 회원가입에 필요한 이메일, 비밀번호, 전화번호 등의 user 정보를 정규 표현식을 통해 조건을 생성해주었다. ​ #users/utils.py import re from datetime import datetime import jwt from django.http import..

    [catcodog] 전체 기능 모델링

    [catcodog] 전체 기능 모델링

    ​ 구현하려는 웹사이트의 기능에 맞춰 같은 모델링을 진행해보았다. ​ 모델링을 하며 가장 중점적으로 둔 부분은 어떻게 테이블 간의 복잡성을 최소화할 것인가 였던 것 같다. ​ 로그인, 회원가입, 장바구니, 주문 등등의 기능들을 담기 위해 작성한 erd는 다음과 같다. ​ ​ 팀원들과의 의논, 그리고 멘토님의 피드백을 거쳐 모델링을 대폭 수정했는데, 대표적인 논의 사항 및 수정 사항은 다음과 같다. ​ ​ 1) category, product 테이블을 다대다 관계로 설정. product_category라는 중간테이블을 별도로 생성했는데, 이렇게 할 필요가 있을까? : 테이블이 복잡해지는 것은 인정. 그러나 사이트 특성상 어쩔 수 없는 선택이었다. : 사이트의 카테고리에는 강아지, 고양이 카테고리가 있는데,..

    [CatCoDog] 팀 프로젝트 시작:  반려동물 식품 판매 사이트 구상

    [CatCoDog] 팀 프로젝트 시작: 반려동물 식품 판매 사이트 구상

    팀 프로젝트 시작: 반려동물 식품 판매 사이트 CatCoDog _ 구상, 구현할 기능 ​ ​ 1) 사이트 구상 과정 ​ 팀 단위로 하는 첫 프로젝트.. ​ 팀원들과 어떤 사이트를 만들지 토론한 결과, 최근 1인 가구가 늘어감에 따라 반려동물 양육률도 늘어가는 추세이기에 반려동물에게 안심하고 먹일 수 있는 식품 판매 사이트를 제작해보자는 결론이 나왔다. ​ (실제로 같은 팀 6명 중 4명이 반려동물과 함께 지내고 있어서, 사이트의 필요성을 체감하는 듯했다.) ​ 제품을 직접 판매하는 것은 아니지만, 사이트 개발자의 입장에서 웹사이트 소비자가 누릴 수 있는 서비스를 실제로 구현해보는 것이 이 프로젝트의 목표이다. ​ 2) 사이트 이름, 로고 선정 ​ 사이트 제작의 가장 첫번쨰 단계인 사이트 이름과 로고를 선..

    [Django] 서버 생성을 위한 초기 세팅

    [Django] 서버 생성을 위한 초기 세팅

    1. 가상환경 생성 가상 환경 만들기 ​ conda create -n "가상환경 이름" python=3.9 => 과정 그대로 진항하겠냐는 질문에 y라고 입력 ​ conda env list => 지금까지 생성한 conda 가상환경 목록 조회 가능 ​ 가상환경 활성화 ​ conda activate "가상환경 이름" => 선택한 가상환경 활성화 ​ ​ 2. Database 생성 ​ database를 생성, 및 관리하기 위해서는 mysql서버 내에서 명령을 수행해야 합니다. ​ mysql -u root -p ​ => 비밀번호 입력 => mysql서버로 이동 ​ sql문에서는 명령어 뒤에 ";"를 붙여야 명령어로 인식합니다! 따라서 mysql서버에서는 모든 명령어 뒤에 ";"를 붙이셔야 합니다. ​ create ..