PYTHON
-
자료구조 핵심 원리 - 그래프Algorithm 2022. 9. 24. 03:29
그래프는 로봇이 최단 경로를 계산해서 움직일 때나 내비게이션에서 경로를 안내할 때, 지하철역을 어디에 건설해야 가장 효율적인지 계산하는 등 매우 폭넓게 사용됩니다. 게다가 최근에 가장 중요한 이슈인 머신 러닝도 그래프를 활용합니다. 이 장에서는 그래프에 대한 이론적인 내용과 실제로 구현할 때 표현(representation), 모든 정점을 방문하는 방법인 순회(traversal) 등 그래프의 기본 내용을 다루어 보겠습니다. 1.1 그래프 용어 정리 자료구조 - 그래프 정의 그래프(graph)는 연결된 객체들 사이의 관계를 표현할 수 있는 자료구조이다. 지하철 노선도나 전기회로 같이 다양한 객체들이 서로 복잡하게 연결되어 있는 구조를 표현할 수 있는 논리적 edwardmoon.tistory.com self..
-
자료구조 핵심 원리 - 스택과 큐Algorithm 2022. 9. 23. 22:02
1.1 스택 스택(stack)은 접시 쌓기를 떠올리면 됩니다. 데이터가 들어오면 차곡차곡 쌓이고 나갈 때는 맨 위에 있는 데이터부터 나갑니다. 즉, 맨 마지막에 들어온 데이터가 맨 처음 나가게 되지요. 이를 LIFO(Last In First Out)라고 합니다. 스택의 ADT를 정의한 후 어떻게 객체를 표현하고 연산을 구현할지 고민해 보겠습니다. Stack - Object : LIFO 객체 - Operation 1. empty( ) -> Boolean: 스택이 비어 있으면 TRUE, 아니면 FALSE 반환 2. push(data): data를 스택의 맨 위에 삽입 3. pop( ) -> element: 스택의 맨 위에 있는 데이터를 삭제하며 반환 4. peek( ) -> element: 스택의 맨 위에 ..
-
Django - 03 Model 코딩Django 2021. 3. 31. 17:02
모델 작업은 데이터베이스에 테이블을 생성하는 작업이다. 다음 순서대로 진행한다. >notepad models.py // 테이블을 정의함 >notepad admins.py // 정의된 테이블이 Admin 화면에 보이게 함 >python manage.py makemigrations // 데이터베이스에 변경이 필요한 사항을 추출함 >python manage.py migrate // 데이터베이서에 변경사항을 반영함 >python manage.py runserver // 현재까지 작업을 개발용 웹 서버로 확인함 테이블 정의 앞에서 설계한 것처럼, polls 애플리케이션은 Question과 Choice 두 개의 테이블이 필요하다. 테이블은 models.py 파일에 정의한다. 장고에서는 테이블을 하나의 클래스, 테이..
-
Django - 02 애플리케이션 설계 / 프로젝트 뼈대 만들기Django 2021. 3. 29. 23:01
애플리케이션 설계하기 프로젝트란 전체 프로그램을 의미하며, 프로젝트를 몇 개의 기능 그룹(프로그램)으로 나누었을 때, 하위 프로그램을 애플리케이션이라고 한다. 이런 개념으로 프로젝트 디렉터리와 애플리케이션 디렉터리를 구분하고, 코딩하는 파일도 프로젝트 파일인지 애플리케이션 파일인지 구분해서 저장해야 한다. 이런 개념에서 중요한 점은 하나의 애플리케이션이 여러 프로젝트에 포함될 수 있기 때문에, 애플리케이션을 한 번만 개발하고, 이를 다른 프로젝트에 재사용해서 개발의 생산성을 높일 수 있다. 또한 애플리케이션 단위로 모아서 프로젝트를 만들고, 프로젝트를 모아서 더 큰 프로젝트를 만드는 방식으로, 계층적인 개발이 가능하다는 장점이 있다. 다음 그림은 설문에 해당하는 질문을 보여준 후 질문에 포함되어 있는 답..
-
Django - 01 애플리케이션 개발 방식Django 2021. 3. 29. 20:15
웹 사이트를 설계할 때 가장 먼저 해야 할 일은 프로그램이 해야 할 일을 나누어서 모듈화 하는 것이다. 웹 사이트의 전체 프로그램 또는 모듈화된 단위 프로그램을 애플리케이션이라고 한다. 즉, 코딩할 대상을 애플리케이션이라고 부른다. 장고에서는 애플리케이션의 개념을 웹 서버 개발 측면에서 좀 더 구체화 한다. 웹 사이트에 대한 전체 프로그램을 프로젝트라 하고, 모듈화된 단위 프로그램을 애플리케이션이라 부른다. 즉, 애플리케이션 프로그램들이 모여서 프로젝트를 개발하는 개념이다. MVT 패턴 MVC(Model-View-Controller)패턴은 데이터, 사용자 인터페이스, 데이터를 처리하는 로직을 구분해서 한 요소가 다른 요소들에 영향을 주지 않도록 설계하는 방식이다. 이런 방식으로 개발하면 디자이너는 데이터..
-
Django - 장고의 특징Django 2021. 3. 29. 20:07
MVC 패턴 기반 MVT 장고는 MVC(Model-View-Controller)를 기반으로 한 프레임워크다. Model은 데이터베이스에 액세스하는 컴포넌트이고, View는 데이터를 가져오고 변형하는 컴포넌트인 반면에 Template은 데이터를 사용자에게 보여주는 컴포넌트다. 그래서 장고를 흔히 MVT(Model-View-Template) 프레임워크라고 부른다. (용어는 다르지만 개념은 동일하다.) 객체 관계 매핑 객체 관계 매핑(ORM, Object-Relational-Mapping)은 데이터베이스 시스템과 데이터 모델 클래스를 연결시키는 다리 역할을 한다. ORM 기능 덕분에 SQL 문장을 사용하지 않고도 데이터베이스 테이블을 조작할 수 있다. 자동으로 구성되는 관리자 화면 웹 서버의 콘텐츠(데이터베이..
-
Django - 웹 서버Django 2021. 3. 29. 14:42
웹 클라이언트의 요청을 받아서 처리하는 서버를 웹 서버와 웹 애플리케이션 서버로 분류할 수 있다. CGI 방식의 단점 CGI는 프로그래밍 언어나 스크립트가 아닌 규격을 의미한다. 규격을 준수한다면 언어에 상관없이 구현이 가능하다. 전통적인 방식은 웹서버가 Python, C++등으로 만들어진 CGI 프로그램을 직접 호출하여 개별 프로세스를 생성하는 방식이다. CGI 방식은 각각의 클라이언트 요청에 대하여 독립적인 프로세스가 생성된다. 프로세스에 비례해 메모리 요구량도 커져서 시스템에 많은 부하를 줄 수 있다. 이런 이유로 현재는 거의 사용하지 않는다. CGI 방식의 대안 기술 스크립트 엔진(인터프리터)을 웹 서버에 내장시켜 오버헤드를 줄이는 방식이 있다. 파이썬의 경우 mod_wsgi 모듈을 사용하고 있다..
-
파이썬 - News categorizationpython 2021. 3. 22. 18:08
여러 주제의 뉴스 글들이 있을 때 어떻게 비슷한 주제의 기사들끼리 묶을 수 있을까? 컴퓨터는 문자를 그대로 이해하지 못하기 때문에 문자를 Binary 형식으로 전환시켜야 한다. (문자 -> 숫자) 비슷한 주제로 묶으려면 숫자로 유사하다를 표현해야 한다. 유사하다는 가깝다라는 의미로 받아들일 수 있기 때문에 vector형식으로 전환시킬 수 있다. (문자 -> 숫자 -> 벡터) 문자를 Vector로 전환하는 방법은 여러가지가 있지만 단어의 빈도수를 카운팅하기에 효과적인 BOW를 이용한다. BOW(=Bag of Words, 단어별로 인덱스를 부여해서, 한 문장(또는 문서)의 단어의 개수를 vector로 표현) Bow의 상세한 설명과 예 : wikidocs.net/22650 / hleecaster.com/nlp..