전체 글 58

스레드

스레드의 개념과 파이썬에서 스레드 사용및 문제점에 대해 알아보자 🧶 What is 스레드? 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다. 출처:위키백과 스레드 스레드의 특징 하나의 프로세스에 여러개의 스레드 생성 가능 스레드들은 동시에 실행 가능 프로세스 안에 있으므로,프로세스의 데이터를 모두 접근 가능 스레드는 각기 실행이 가능한 stack이 존재한다. 멀티 스레드 소프트웨워의 병행 작업 처리를 위해 멀티 스레드를 사용한다. 스레드의 장점 IPC기법과 같이 프로세..

카테고리 없음 2021.10.03

🚀 상품 리스트 조회 API분기 줄이기

상품리스트 조화 API의 분기를 줄이는 과정에 대한 포스팅이다. 기존의 상품 리스트조회 API코드를 살펴보면 class ProductsView(View): @input_validator def get(self, request): option = request.GET.get('option', None) offset = int(request.GET.get('offset', 0)) limit = int(request.GET.get('limit', 10)) order = request.GET.get('order', 'id') search = request.GET.get('search', None) category = request.GET.get('category', 0) q = Q() if option == '..

DotFriends 2021.09.25

📌 쿼리 파라미터 입력값에 따른 500에러 막기

상품리스트 뷰는 쿼리파라미터 입력값이 많다. new = int(request.GET.get('new', 0)) sale = int(request.GET.get('sale', 0)) offset = int(request.GET.get('offset', 0)) limit = int(request.GET.get('limit', 10)) order = request.GET.get('order', 'id') search = request.GET.get('search', None) category = request.GET.get('category', 0) 입력값이 많으므로 에러가 날 변수가 많다. 프론트단에서는 우리가 유도하는 값만 쿼리 파라미터에 실어서 보내지만 API주소는 노출되어 있으므로 악의적인 의도로 쿼리..

DotFriends 2021.09.24

🛠 힘들어하는 migration을 위해

깃 허브에서 pull을 당겨오고 migrations migrate를 하다 보면 수많은 충돌이 난다. 본 포스팅은 근본적인 이유와 해결방안에 관한 이야기 이다. Unknown column에러다. product_id_id라는것이 없다. 등등 이런 류의 오류는 데이터베이스와 migrations파일의 문제가 대부분이다. migrations파일에는 product_id를 product로 바꾼다고 되어있는데 데이터 베이스를 보면 이미 반영이 되어있다. 여기서 product_id인 이유는 장고 모델에서 product라고하면 db에는 product_id로 저장되고 장고 모델에서 product_id라고 저장하면 db에는 product_id_id로 저장이 된다. 그러므로 이미 모델에는 반영이 되었는데 migration파일에..

카테고리 없음 2021.09.19

🪣 AWS S3 bucket Django설정

장고에서 사용자에게 이미지 파일을 받아서 저장할 경우 저장 공간을 s3 bucket으로 설정하는 법을 알아보자. 우선 s3 bucket을 만들자 버킷은 만들어 졌고 IAM 설정을 하자 마지막에 나오는 키 값만 csv파일로 저장하거나 메모장에 적어둔다. 이 후 장고 설정에 쓰인다. 이제 장고에서 설정을 해보자 다음 사항을 설치해준다. pip inastall django-storages pip install boto3 settings.py를 수정한다. STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ] MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media..

카테고리 없음 2021.09.19

📊 FLIP 데이터 모델링 (주문, 결제)

테이블 소개 주문(orders) 칼럼: 유저아이디(FK), 주문 상태(FK), 최종 가격, 생성일, 업데이트일 주문 아이템(orderitems) 주문에 담긴 상품들의 정보와 수량 등을 포함하는 테이블 (주문에 여러개의 상품이 담길 수 있어서 생성했다.) 칼럼: 주문아이디(FK), 상품 아이디(FK), 수량, 생성일, 업데이트일 주문 상태(order status) 주문 상태정보를 저장하는 테이블이다. 카테고리와 비슷한 개념이라고 보면된다. "주문 대기", "주문 진행중", "주문 완료"등의 정보가 저장된다. 칼럼: 상태(status) 결제(payments) 결제 정보를 저장한다. 주문을 FK로 갖는다. 칼럼: 주문 아이디(FK), 결제 종류(FK), 최종 가격, 상태, 생성일, 업데이트일 결제 메소드(me..

FLIP 2021.09.14

⚫️ DotFriends 프로젝트 후기

⚫️ DotFriends 🌄 이미지를 클릭하면 시연 영상을 시청하실 수 있습니다. 프로젝트 링크: http://18.224.25.47:3000/ ⭐️ 프로젝트 소개 라인프렌즈 커머스 사이트 라인프렌즈샵 클론 프로젝트 기획, 디자인 시간 단축을 위해 사이트의 디자인과 레이아웃만 참고해서 만들었습니다. 🤔 기획 의도 라인프렌즈 사이트 자체를 따라하기 보다는 재치있는 아이디어를 통해, Line 이 아니라 Dot Friends 로 이름을 정했습니다. 코로나시대에 맞게 사람과 사람을 연결하는 Line이 아니라 개인 혼자 (Dot) 집에서 지낼 때 활용할 수 있는 상품을 판매하는 컨셉을 잡았습니다 📆 개발 기간 2021.08.30 - 2021.09.09 리팩토링은 계속 진행 중입니다. 👨‍👩‍👦 개발 인원 Fron..

DotFriends 2021.09.12

2022 카카오 신입 개발자 공채 1차 코딩테스트 후기

8월 20일 아침, 백준에 들어가니 카카오 신입개발자 블라인드 채용 공고가 메인에 걸려 있었다. 올림픽 정신(참가에 의의)으로 참여하자는 마음으로 지원해 보았다. 그렇게 신청을 해놓고 까맣게 잊고 살다가 시험 당일이 되었다. 문제는 시험 당일에도 잊고 살았다. 1시 49분에 시험 알림 카톡이 왔다. 이때 나는 밖이었는데 잠시 고민을 했다. 1. A 어차피 떨어질건데 그냥 집이나 가자~ 2. 아니다 2문제만 맞춰보자! 그렇다 나의 목표는 원래 2문제를 맞추는 거였다. 근처에 보이는 카페에 들어가 노트북을 켰다. 아무 생각 없다가 갑자기 시험을 보려니까 경황이 없었지만 풀다 보니 점점 빠져들어갔다. 1번 문제부터 당황스러웠다. 이렇게 지문이 긴 문제를 풀어본 적이 없어서 문제를 이해하는데 20분 정도 걸렸다..

카테고리 없음 2021.09.12

제품 상세페이지 구현과 고민 01

제품 리스트 API구현을 마치고 상세페이지 API구현을 하게 되었다. 우선 상세페이지 view는 path 파라미터로 받아서 어떤 상품인지 식별하게 했다. urlpatterns = [ path('', ProductsView.as_view()), path('/', ProductDetailView.as_view()) ] 프론트에 던져 줄 데이터는 상품 아이디, 이름, 가격, 좋아요 수, 이미지 총 5개 였다. class ProductDetailView(View): def get(self, request, product_id): if not (Product.objects.filter(id=product_id).exists()): return JsonResponse({'MESSAGE': 'NOT_FOUND'}, ..

DotFriends 2021.09.05