Key word로 살펴보는 Web Programming
Back-end & Front-end
- Front-end: 시각화의 영역, Back-end로부터 넘어온 데이터를 보여준다.
- Back-end: 웹/앱 서버(의 API 구현), DB 등, Front-end로부터 요청을 받아 데이터를 처리하고 되돌려 보내준다.
Mobile Application
- 디바이스에 최적화된 전용 앱들: native apps
- html/css/js로 만들어진 앱들 or 이렇게 만든 후 커버를 씌운 앱들: web apps, hybrid apps
- 네이티브 앱들은 백엔드와 프론트엔드를 굳이 구분하지 않음.
- 보여지는 부분을 위한 UI code + 내부처리 및 DB 연동을 위한 logic code
IDE(통합 개발 환경)
- visual studio code, Eclipse, Android Studio 등
JAVA
- JVM(Java Virtual Machine) 위에서 작동하므로 OS에 제약받지 않음.
* JVM 위에서 작동하면 왜 OS에 제약받지 않나요?
JVM은 OS에 종속받지 않고, CPU가 JAVA를 인식하고 실행할 수 있게 해주는 가상 컴퓨터이기 때문입니다.
원래는 원시코드(Java)를 CPU가 인식하게 하려면, 기계어로 컴파일 해줘야 합니다. 하지만 Java는 JVM을 거쳐 OS에 도달하기 때문에 OS가 인식할 수 있는 기계어로 컴파일 되는게 아니라 JVM이 인식할 수 있는 JAVA byte code(.class)로 변환됩니다.
이 byte code는 OS가 해석할 수 있도록 또 다시 기계어(binary code)로 변환됩니다.
Spring
- Java 기반의 웹프레임워크. 전자정부 표준 프레임워크라서 많이 사용되었음.
*프레임워크란?
개발의 효율성을 위해 전체적인 프로그래밍 코드 및 logic, 프로그램 구현 방법론 등을 최적화 해둔 것
* 웹 프레임워크란?
이미 만들어져 있는 흐름을 따라 구현/수정만 하면 웹사이트가 바로 만들어질 수 있게 기본적인 것들을 제공하는 것
Android
- Java 기반의 모바일 앱 개발을 위한 프로그래밍 언어
- 블록을 짜맞추듯 Activity라는 도화지 위에 ImageView, TextView 등 다양한 view를 올리고, 이러한 view와 activity, db 간의 상호작용을 프로그래밍 함.
Django
- python 기반의 웹프레임워크
Server & Client
- Server: 특정한 서비스를 제공하는 컴퓨터
- Client: 서비스를 사용하는 사용자 혹은 사용자의 단말기
HTTP(HyperText Transfer Protocol)
- www 상에서 정보를 주고받을 수 있는 통신 프로토콜
- 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜
Request
- 서버로의 요청
- GET: 정보를 가져오는 역할
- POST: 정보를 입력(수정)하는 역할
Response
- 서버로부터의 응답
- 응답코드: 200(ok), 400(bad request), 404(not found) 등
- 응답에 담긴 데이터: html/css/js, json, xml 등
Django MTV structure
MVC pattern
- 디자인 패턴 중 하나
디자인 패턴이란?
프로그램이나 어떤 것을 개발하는 중에 발생하는 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만든 것.
<출처>
- model: 데이터베이스 조작
- view: 사용자 인터페이스 구현
- controller: 내부 계산 & 데이터 처리 로직, 데이터와 사용자 인터페이스 요소들을 잇는 다리역할
웹 사이트 접속 -> controller가 요청한 웹페이지를 보여주기 위한 model 호출 -> model은 비지니스 로직을 통해 데이터를 제어한 후 결과 반환 -> controller는 반환받은 결과를 view에 반영 -> view는 사용자에게 보여지게 됨.
<출처>
여기도 MVC, 저기도 MVC! MVC 패턴이 뭐야?
어딜가든 MVC에 대해서 많이 듣고 접하게 되는데 과연 MVC 패턴은 무엇이고 왜 등장했는지, 더 나아가 MVC의 필요성과 한계점은 무엇인지 학습하고 고민한 내용을 기록하였습니다.
velog.io
MTV pattern
- Django에서의 디자인 패턴
- model: 데이터
- template: 인터페이스
- view: 내부 계산 & 데이터 처리 로직
- url conf: url과 view를 매핑
1. 유저가 특정 url로 요청
2. url conf를 통해 해당 url과 매핑된 뷰 호출
3. 호출된 뷰는 요청에 따라 적절한 로직을 수행하며 그 과정에서 모델에게 CRUD 지시
4. 모델은 DB와 소통하며 CRUD 수행
5. 뷰는 지정된 템플릿을 렌더링
6. 최종 결과를 응답으로 반환
<출처>
중요 django 명령어
프로젝트 생성하기
- 프로젝트는 하나의 웹사이트에 해당
django-admin startproject proj_1
앱 생성하기
- 하나의 웹사이트 내에 있는 기능들에 해당
proj_1/python manage.py startapp app_1
장고 프로젝트를 관리하는 manage.py
- 이후에는 manage.py 파일을 통해 각종 명령어를 실행합니다.
proj_1/python manage.py startapp app_1
manage.py 주요 명령어
startapp <name> 앱 생성
runserver 서버 실행
makemigrations model 변경 사항을 DB에 반영하기 위한 migration 파일 생성(models.py 내용 변경 시)
migrate model 변경 사항을 db에 실제로 반영(DB schema 변경 시)
createsuperuser 관리자 계정 생성
collectstatic static 파일들을 한 곳에 모음
shell shell을 활용해 장고 프로젝트 내 기능들을 확인