본문 바로가기

전체 글

TIL 2022.09.07 도메인연결(Route 53, DNS), HTTPS(let's encrypt) EC2 서버에 도메인 적용하기 1. Route53 에서 도메인 등록(구매) 도메인 마다 가격이 책정되어있고 1년마다 갱신여부 원하는 대로 체크 후 주문하면 생성까지의 시간이 약간 걸림 2. 레코드 만들기 호스팅 영역에서 레코드를 생성하는데 value값으로 사용할 EC2 인스턴스의 고정 ip 를 입력 다른 레코드 추가해서 주소에 레코드 이름에 www를 추가하여 www를 붙였을 때도 라우팅 될 수 있도록 설정 3. django allowed host 에 도메인 추가하기 이 설정 없이 도메인에 접근할 경우 Bad Request 가 발생됨 EC2 인스턴스에 접속하여 설정파일에 리눅스환경에서 vim같은 작업툴을 이용해서 직접 엑세스 해서 (.env.prod 파일) DJANGO_ALLOWED_HOST 상수값에 앞서.. 더보기
TIL 2022.09.06 Django 50문 50답 Django가 무엇인지 설명하시오 - 쉽고 빠르게 웹사이트를 개발할 수 있도록 python으로 만든 웹 애플리케이션 프레임워크 Django를 백엔드 스택으로 선정한 이유는 무엇입니까? - django 특히 django rest frame work를 이용했을 때 보다 쉽고 python의 장점중 하나인 직관성을 극대화 할 수 있었고 이해도 빠르고 짧고 간단한 코드만으로도 웹사이트를 만들 수 있었습니다. 물론 처음 시작할 때에 여러 모듈에대해서 공부해야하는 것은 단점일 수 있겠으나 여러모듈을 익히면 익힐 수록 다른 프레임워크들보다 생산성이 뛰어나다는 점에서 배워볼만한 프레임워크라고 생각해서 선택했습니다. Django에는 어떤 장점이 있습니까? - Django 다른 프레임워크들보다 쉽고 빠르게 구현할 수 있는 .. 더보기
TIL 2022.08.30 Gunicorn, nginx nginx 웹서버의 한 종류로 네트워크 신호를 받아서 다양한 기능을 처리함, 로드밸러서를 만든다던지, 프록시 등 있으나 대표적으로 정적파일들을 불러와 WSGI에 전달해줌으로써 django에서 파일 파일 처리를 할 필요가 없어지므로 효율이 높아진다. Gunicorn(WSGI web server gateway interface) 들어온 네트워크 신호를 파이썬으로 바꿔주는 역할 웹서버와 어플리케이션을 이어주는 역할 1. 설치 pip install gunicorn 2. docker-compose.yaml 파일에서 command 변경 command: gunicorn SMOPS_PARC.wsgi:application --bind 0.0.0.0:8000 이렇게 하면 프로젝트명으로 된 폴더 안에 wsgi.py 파일이랑.. 더보기
TIL 2022.08.22 github actions(CI) - dotenv - Django - postgreSQL - Docker Github Actions github flow 를 자동화 해주는 기능 그 중에서도 branch를 만들었을 때 혹은 push를 했을 때 자동으로 Test 를 해준다던지 merge를 해주는 deploy과정을 자동으로 해주는 기능 demo test # Github-Actions-Demo.yaml name: GitHub Actions Demo # 액션의 이름 Action에서 제목처럼 뜨는 것 on: [push] # 언제 작동할 것인가? jobs: Explore-GitHub-Actions: # 작동 이름 runs-on: ubuntu-latest # 작동 환경 steps: # echo로 콘솔에 출력 - run: echo "🎉 The job was automatically triggered by a ${{ gith.. 더보기
TIL 2022.08.12 카카오톡 로그인 카카오톡 로그인을 사용하기 위해선 kakao development 페이지에서 기본 셋팅은 필수 HTML ... SIDE PRO 로그인 카카오 로그인 구글 로그인 아직 아이디가 없으신가요? 회원가입 ... 자바스크립트 async function login_token(loginData, is_social){ const response = await fetch(`${backend_base_url}/user/api/token/`, { headers: { Accept: "application/json", 'Content-type': "application/json" }, method: "POST", body: JSON.stringify(loginData) }) response_json = await respons.. 더보기
TIL 2022.08.11 XSS 방지 코드 XSS (Cross Site Scripting) 공격자가 상대방의 브라우저에 사이트 내 input 창에서 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱 공격을 진행하는 것을 말합니다. 해결방법은 input 창에 들어가는 값들에 대해 vaildation을 걸어줘야한다. 길이 제한, 특수문자 제한 등 기본적인 validation이 필요한 곳을 제외한 모든 input 창에서 같은 태그형태의 값이 들어 오면 그대로 출력되지 않도록 처리를 해주어야 한다. function XSSCheck(text) { text = text.replace(/]*)?(\s)*(\/)?>/gi, ""); return text; } 더보기
TIL 2022.08.09 프로젝트 DRF Test Code pip install faker Faker 클래스를 이용해서 가상의 데이터들 무작위, 자동으로 생성 가능 setUpData 에서 테스트용 데이터 생성하고 CaptureQueriesContext 이용해서 실제로 작동되는 쿼리문을 확인 할 수 있다. connection은 같이 한세트로 묶어서 import 해와야하고 query_debugger는 앞서 게시한 글에서 적어놓은 대로 테스트코드에도 쓸 수 있다. reverse 함수를 이용해서 urls 지정 시 name="" 에 지정해놓은 값을 통해서 간편하게 사용 할 수 있다. 해당 함수에 kwarg={"":""} 값을 줘서 url에 주는 데이터를 지정해 줄 수 있다. user app tests.py import json from django.urls import .. 더보기
TIL 2022.08.08 DRF ORM 쿼리 최적화 select_related, prefecth_related, F method, transaction Django ORM 쿼리문 최적화 select_related() 1:1(oneToOne) 또는 1:N에서 N이 사용 할 수 있다. 정방향 참조 관계 일때 사용할 수 있으며 정참조 JOIN 하여서 얽혀있는 데이터를 미리 읽어 온다.(Eager loading) from django.db import models class City(models.Model): # ... pass class Person(models.Model): # ... hometown = models.ForeignKey(City, on_delete=models.SET_NULL, blank=True, null=True) class Book(models.Model): # ... author = models.ForeignKey(Person, on.. 더보기