본문 바로가기

백엔드

(9)
[Docker] Docker란? 오늘은 Docker에 대해 알아보겠습니다. 보통 웹개발을 하게 되면 아래와 같이 OS 위에 웹 서버,데이터베이스 등을 올려놓는 방식으로 개발 환경을 설정한다. 다들 개발 환경 설정할 때 삽질 했던 경험이 많지 않나요? 왜 안 되는지 모르겠고, 또 왜 되는지 모르는!! 생각만 해도 머리가 지끈 거리네요! 또 개발 환경 설정을 성공했다고 해도 다음에 비슷한 개발 환경이 필요하게 되면? 보통은 삽질을 기억하지 못하고 다시 삽질을 반복하게 되죠.. 악순환의 연속..! 이럴때 다음과 같은 생각이 떠오른다. 전문가가 나 대신 해줬으면 좋겠다.. 하지만 우리집에 와서 키보드를 두드려 주지 않는 이상 불가능 하다.. 또 아래와 같이 나의 앱과 웹 서버, 데이테베이스를 각각 다른 OS에서 설치해 관리하고 싶다! 하지만 ..
[네트워크] Websocket과 socket.io 채팅 기능을 구현하다 보면 Websocket과 socket.io를 많이 들어봤을 것이다. 일단 저거를 써서 채팅 기능을 구현하는건 알겠는데 도대체 뭐지? 라는 생각이 든다. Websocket이란? 일단 Websocket이 나오게 된 배경 부터 알아보자 맨 처음에 웹이라는 것이 나왔을때 브라우저의 렌더링 방식은 HTTP요청에 대하나 응답을 받아서 화면을 새로 만들어주는 방식이었다. 이를 stateless방식이라고 하는데 클라이언트에서 요청을 보내면 서버는 요청 받은것에 대한 응답을 건네주고 연결을 끊어버리는 식이다. 왜 서버와의 연결을 계속 유지하지 않지? 클라이언트가 10억이라고 치면 서버에서 그 많은 연결을 유지하게 되면 과부하가 걸려 다운된다. 왜 stateless상태를 채택했는지 알 수 있다. 이렇..
로그인 - 쿠키와 세션 거의 모든 사이트에는 로그인 기능이 필수적으로 들어가 있다! 로그인이 정확히 무엇일까? 서버에는 많은 클라이언트의 개인적인 정보가 저장되어있다.(특히 사용자가 많은 서비스일수록!) 하지만 로그인이 없으면 누가 요청을 보냈는지 확인하지 못해 다른 사용자의 개인정보를 넘겨줄 수도 있다! 그래서 로그인이라는 인증을 통해서 특정 사용자 요청에 따른 데이터만 골라서 보내주는 것이다!! 다른 사이트를 보면 로그인 한번 하면 유지가 되던데 통신 연결이 계속 되어 있는건가? 아니다. HTTP는 무상태 즉, stateless와 비연결성의 특성을 가지고 있기 때문에 한번 요청을 보내고 받게 되면 연결이 끊어지게 된다. 그러지 않고 계속 연결되어 있으면 서버에 과부하가 걸리게 된다. 그러면 매번 아이디, 비밀번호를 보내 인..
REST API(그런 REST API로 괜찮은가?) 오늘날 대부분 "REST API"라고 불리는 것들은 REST하지 않다!! 그럼 REST가 뭔데? 컴퓨터 시스템와 인터넷 사이에 상호 운용성을 제공하는 방법 => 즉, 서로 독립적으로 발전이 가능한 형태를 말한다. REST를 만든 로이필딩은 "웹을 망가뜨리지 않고 http기능을 추가하고 싶다"라는 생각으로 만들었다고 한다. 그러면 REST를 지키려면 어떻게 해야돼? Client-Server Stateless Cache Uniform Interface Layered System Code-on-Demand (optional) 를 만족 해야한다. => http만 잘 따라도 1,2,3,5는 지킬 수 있다. => 6은 서버에서 코드를 클라이언트로 보내 실행할 수 있어야 한다. 자바스크립트를 의미하고 필수는 아니다...
3. [장고(Django)_맛집 공유 사이트] CRUD 구성 두개의 CRUD구성이 필요하다. 1. 카테고리에 대한 CRUD 2. 맛집에 대한 CRUD(다음페이지) 1. 카테고리에 대한 CRUD 카테고리에 대한 모델 정의 - 하나의 맛집이 하나의 카테고리에 속하는 방법으로 모델 구성 예정(맛집에 대한 CRUD에서 구성예정) - 따라서 카테고리에 대한 모델은 요소로 "카테고리 이름" 만 필요하다. 카테고리 모델 생성 데이터베이스 설정 작업 python manage.py makemigrations python manage.py migrate 추가 버튼을 누르면 동작하도록 만드는 로직 구성 url패턴 추가 views.py수정(url에 맞는 함수 생성) Create_category함수에서 읽어온 카테고리 데이터를 index페이지에 뿌림 모든 Category객체를 읽어오고 ..
2. [장고(Django)_맛집 공유 사이트] URL 및 템플릿 설정 1. template/shareRes 폴더 생성 및 html 파일 추가 + 수정 : categoryCreate.html파일도 추가해준다. 2. 메인 화면의 url설정 3. 이메일 전송 app 3.1 url 설정 - sendEmail/urls.py 파일 생성 한 뒤 3.2 views.py 수정 - sendEmail/views.py 수정 일단은 화면에 단순 출력 나중에 이메일 보내는 세부적인 로직 구성 예정 4. ShareRes App 4.1 url 설정 shareRes/urls.py 파일 추가 및 작성 4.2 views.py 수정 shareRes/vies.py 파일 수정 5. 실행결과 python manage.py runserver 결과화면 - 메인화면 (index.html) - 맛집 추가화면(restau..
1. [장고(Django)_맛집 공유 사이트] 프로젝트 및 app 구성 1. 깃허브 repository 만들기 2. repository clone받기 3. 장고 프로젝트 만들기 4. app 구성(두개의 app 추가) - python manage.py startapp 만들려는앱이름 5. 만들어진 app을 장고프로젝트(setting.py)에 추가 6. .gitignore추가 7. 깃허브에 업로드 결과
5. [장고(Django)_To-Do-List] 목록 숨기기 기능 구현(데이터베이스 삭제X) 완료 버튼을 눌렀을때 데이터베이스에서 삭제하지 말고 화면에서만 안보이게 만들어보자. 1. 데이터베이스에 isDone변수 추가하기 숨김처리를 위한 데이터 속성을 추가해준다. 디폴트 값은 false. 2. 수정사항 데이터베이스에 반영(migration) 업데이트 된 데이터베이스를 반영시켜준다. 3. url 추가 새로운 함수를 사용하기 위해 url을 추가해준다. 4. doneTodo함수 생성 deleteTodo와 비슷하지만 숨김처리 역할을 하는 함수를 생성한다. 데이터베이스에 새로 생성된 속성에 값을 넣어주고 저장해준다. 5. HTML 파일 수정 기본값(False)가 아니면 완료버튼이 눌린 상태이므로 form을 생성하지 않는다. 어떤 url을 보낼건지 수정해줘야 한다. 6. 결과 - 데이터베이스를 통해 확인 ..

반응형