전체 글

서버(Server)/장고 (Django)

[Django Basic] 4. View, views.py

MVC 패턴 장고의 뷰는 MVC패턴의 컨트롤러에 대응하는 부분이다. 뷰(View) 뷰는 클래스로 만드는 class-based-view 나 함수로 만드는 방식이 존재한다. 이번 글에서는 기초적인 함수형 뷰에 대해 소개하겠다. 뷰는 기본적으로 첫 번째 인자에 HttpRequest형의 객체를 일반적으로 request라는 이름으로 전달받는다. 이때 뷰의 이름은 임의로 정할 수 있다(임의로 정한 이름을 URL에 맵핑하기만 해 주면 되기 때문에). # books/urls.py from django.urls import path from books import views urlpatterns = [ path("/", views.index), ] # books/views.py def index(request: Http..

CS/자료구조 (Data Structure)

[자료구조] 11. 이진탐색트리(Binary search tree)

이진 탐색 트리는 이진트리로서, 중위순회(In-order traversal) 시 정렬된 형태라는 특징을 가지고 있다. ADT lookup(key): key값을 가지는 노드를 리턴하고, 없다면(NULL일시) NULL의 부모를 리턴한다 put(key): key값을 가지는 노드에 삽입한다. delete(key): key값을 가지는 노드를 삭제한다. 구현 이진탐색트리 구현의 핵심은 계속 중위순회순으로 정렬된 상태를 유지하는 것이다. 탐색 루트에서 시작해서 노드의 값이 탐색값보다 크면 left child로 탐색, 작으면 right child로 탐색을 반복하면 된다. 삽입 삽입은 탐색을 한 후 값을 변경하거나 추가만 해주니 단순하다. 경우를 나누어 보자면, 탐색하여 노드를 발견했다면 그대로 값을 수정하면 되고, 값..

서버(Server)/장고 (Django)

DRF OAuth 라이브러리 비교

보호되어 있는 글입니다.

CS/자료구조 (Data Structure)

[자료구조] 10. 맵 & 딕셔너리(Map & Dictionary)

맵 & 딕셔너리(Map & Dictionary) 맵과 딕셔너리는 매우 유사한 자료구조다. 이에 맵에 대해서 먼저 설명하고, 맵과 딕셔너리의 차이점을 알아보겠다. 우선 맵은 키-값(key-value) 쌍으로 이루어진 집합이다. 키를 통해서 값을 추가, 탐색하고 이를 수정, 삭제할 수 있다. 이때 맵의 특징은 같은 키를 가지는 여러 값이 존재할 수 없다는 것이다. 그렇다면 딕셔너리는 무엇일까? 딕셔너리는 기본적으로 맵과 동일하지만, 중복된 키값이 존재할 수 있다는 특징이 있다. 다만 실제로 맵과 딕셔너리의 차이를 엄밀하게 다들 지키는 것은 아니고, 반대의 의미로 쓰이거나 하여 사실상 같은 의미를 가진다고 볼 수 있다. 예를 들어 파이썬의 딕셔너리는 기본적으로 키 중복을 허용하지 않지만 딕셔너리(dict)라는..

CS/자료구조 (Data Structure)

[자료구조] 9. 힙(Heap)

힙(Heap) 힙은 완전 이진 트리(Complete binary tree)의 형태를 가집니다. 즉, 완전 이진 트리의 성질에 따라 트리의 높이 h arr[idx]) { swap(parent, idx); upHeap(parent); } } void downHeap(int idx) { int left = 2 * idx; int right = 2 * idx + 1; int child; if (left > getSize()) return; else if (left == getSize()) child = left; else { if (arr[left]

CS/자료구조 (Data Structure)

[자료구조] 8. 우선순위 큐(Priority queue)

우선순위 큐에 대해 소개하기 전에 ADT(Abstract Data Type)와 implementation(구현 방법)의 차이에 대해서 잠시 다시 짚어보겠습니다. ADT(자료구조) Implementation(구현 방법) List Array, Linked list Stack Array, Linked list Queue Array, Linked list Tree Linked structure Binary tree Array, Linked structure Priority queue Heap, Binary search tree, List 위와 같이 각 자료구조는 여러가지의 구현 방법이 있을 수 있습니다. 또한 다른 자료구조 자체도 다른 자료구조의 구현 방법이 될 수 있습니다. 이를 여기서 다시 짚어보는 이유는 ..

CS/자료구조 (Data Structure)

[자료구조] 7. 이진 트리(Binary tree)

이진 트리(Binary tree) [이미지] 이진 트리는 특별한 트리로, 자식을 최대 2개 가질 수 있는 트리입니다. 이떄 두 자식을 left child, right child라고 합니다. 용어 n: 노드의 개수 m: internal node(자식이 있는 노드)의 개수 l: leaf node(자식이 없는 최하위 노드)의 개수 h: 트리의 높이 이진 트리의 특성 이진 트리의 성질은 수학적으로 몇가지 특정지을 수 있습니다. [이미지] 이진트리의 특성상 높이는 log2(n+1) - 1 오른쪽 자식 순으로 탐색을 하는 방식으로, 그 특성상 자식이 2개로 제한되는 이진 트리에서만 가능합니다. 오일러 투어(Euler tour traversal) dfs방식으로 탐색을 하며 마주치는 모든 노드(이미 방문하여 되돌아간 ..

서버(Server)/장고 (Django)

[Django Basic] 3.1. URL심화

보호되어 있는 글입니다.

서버(Server)/장고 (Django)

[Django Basic] 3. URL, urls.py, URLConf, path

장고에서는 MVC패턴의 컨트롤러(Controller)에 대응하는 뷰(View)가 존재하는데, 이 뷰를 URL 엔드포인트에 연결하는 것이 장고의 URL 부분이다. URL, urls.py 장고에서는 각 뷰에 대응하는 URL을 맵핑한다. 그리고 이 URL을 맵핑하는 파일을 URLConf라고 하는데, 보통 우리는 urls.py에 URLConf를 정의한다. urls.py는 최초 프로젝트 생성 시에 프로젝트 폴더에 하나(해당 가이드에서는 django_basic/urls.py) 생성된다. 그리고 보통 여기서 앱별로 urls.py를 추가적으로 생성하여 사용한다. 우선 django_basic/urls.py 파일을 확인해 보자. """ URL configuration for django_basic project. The ..

서버(Server)/장고 (Django)

[Django Basic] 2. Model, models.py, Database

이전 글에서는 장고의 기본 구조와 프로젝트, 앱 생성에 대해 알아보았다. 장고 웹 프레임워크는 MVC 패턴을 따르고 있는데, 이에 대해 우선 잠시 살펴보겠다. MVC패턴 그리고 장고의 MTV MVC(Model-View-Controller) 패턴은 애플리케이션을 3가지로 구분한 디자인 패턴이다. 여기서 Model은 데이터를 관리하고, View는 레이아웃과 화면을, Controller는 모델과 뷰를 잇는 역할을 한다. 장고는 MVC패턴의 각각을 MTV(Model-Template-View)라는 이름으로 구현했다. 즉 Model은 Model 그대로, MVC패턴에서 View의 기능은 장고의 Template에 대응하고. 그리고 MVC의 Controller는 장고의 View에 대응한다. MVC 패턴 장고의 MTV M..

Muromi
생쥐 개발자