버블 정렬(Bubble sort) 단순 정렬(Simple sort) 중 하나로, 속도는 느린 편(평균적으로 O(n^2), quadratic time)이지만 간단하게 구현할 수 있는 장점이 있다. 마치 버블이 이동하듯이 가장 큰 수가 왼쪽에서 오른쪽(배열의 앞에서 뒷쪽)으로 이동한다고 해서 버블 정렬이다. 가정 버블소트는 배열(Array) 정렬을 가정한다. 정렬되지 않은 배열을 오름차순으로 정렬한다. 배열의 길이는 n이다. 순서 배열의 가장 처음부터(index 0부터) 원소 2개씩 비교 한다. 즉 arr[0], arr[1]을 비교해서 arr[0] > arr[1] 이면 순서를 바꾼다. 아니면 그냥 Pass한다. arr[1]과 arr[2]에도 똑같이 한다. arr[n-2]과 arr[n-1]까지 똑같이 한다. ..
특정한 sub folder 제외하고 모두 복사하기 은근 종종 써야 하는데 쓸 때마다 찾아보기 귀찮은 명령(eg. 어디에 소스코드 제출해야 할 때 노드 모듈 빼기) $ rsync -av [project_name]/ to [copy_project_name] --exclude=node_modules/ # project_name 하위 내용을 copy_project_name 디렉토리로 노드모듈 빼고 전부 복사하기 rsync가 원래는 동기화용 이라고 하는데 스택오버플로우에서 검색한 결과 복사용으로도 사용되는 듯 하다. 여기서 / 를 주의해야 하는데 [project_name] 뒤에 / 를 붙이지 않으면 [copy_project_name] 내에 [project_name] 디렉토리 자체가 통째로 포함돼 버린다.
컴퓨터 메모리에 뭔가를 저장해야 할 때 컴퓨터에게 저장 공간을 요청한다. 컴퓨터는 뭔가를 저장할 수 있는 주소를 알려준다. 이 때 여러 개의 원소를 저장해야 한다면 여러 개의 주소가 필요할 텐데, 선형적으로 저장한다고 가정하면 배열이나 리스트 중 하나로 저장하게 된다. (선형적이지 않은 저장 방법으로는 트리나 그래프 등이 있다) 배열(Array) 만약 10개의 원소를 배열로 저장해야 한다면, 메모리에 연달아 있는 10개 공간을 할당한다. 배열의 장점 인덱스가 주어지므로 빠르게 접근할 수 있다. 배열의 단점 처음에 3개의 공간만 요청했다가 공간이 1개 더 필요하게 되면, 이 때 공간 4개를 재요청해야 한다. 즉 사전에 할당한 공간 내에서만 저장이 가능하고 이 공간 범위를 벗어날 경우 재요청이 필요하다. 이..
모델 폼 만들기 폼클래스 정의하는 법을 배웠는데, 모델 폼은 그보다 더 간단하다. 폼을 만들 때에 DB 업데이트가 목적이라면 모델 폼을 쓰는 것이 훨씬 편하다. 폼클래스를 만드려면 원래 필드를 다 지정해줘야 한다. 하지만 모델폼을 사용하면 모델에 있는 필드를 가져다가 쓸 수 있다. from django import forms from .models import Score, Movie # class ScoreForm(forms.Form): # content = forms.CharField( # max_length=100, # label='한줄평', # widget=forms.TextInput(attrs={ # 'class': 'score-content', # &#..
폼 클래스 만들기 장고에서 기본적으로 폼을 처리할 때에는 html 템플릿에서 form 태그 통해서 요청을 보내고, URL conf로 연결된 뷰에서 데이터를 받아서 리다이렉트하는 식이다. 그런데 html 템플릿에서 이 데이터를 받을 input을 일일이 만드는게 번거롭다. 받을 항목 수가 많을 수록 더욱 귀찮은 작업이 된다. 이를 조금 더 간단하게 할 수 있는 방법이 폼 클래스를 만드는 것이다. 우리가 모델 클래스 필드를 정의해서 데이터베이스 필드와 매핑하듯이, 폼 클래스 필드도 HTML input 엘리먼트에 매핑된다. 즉 모델 클래스를 만들면 SQL문을 직접 적지 않아도 데이터베이스 필드가 생성되는 것처럼, 폼 클래스를 만들면 HTML input 엘리먼트를 직접 일일이 만들지 않아도 생성할 수 있다. 폼 ..
DB에 테이블 생성하기 DB에 테이블 생성하는 작업은 models.py 에 테이블 정의 admins.py에 테이블 등록 python manage.py makmigrations python manage.py migrate 이런 순서로 이루어진다. 순서대로 하나씩 보자. 테이블 정의 장고에서 테이블은 클래스로 정의한다. from django.db import models class Question(models.Model): question_text = modesl.CharField(max_length=200) pub_date = models.DateTimeField('date published') def __str__(self): return self.question_text class Choice(mode..
프로젝트 및 앱 생성 장고에서 쓰이는 프로젝트와 앱은 일반적으로 쓰이는 의미와 다르다. 프로젝트 는 전체 프로그램을 의미하며, 이를 몇 개 기능으로 나누었을 때의 서브 프로그램을 어플리케이션(앱) 을 의미한다. 즉 하나의 프로그램(프로젝트)는 여러 개의 앱으로 구성된다. 먼저 장고 프로젝트를 만드려면 장고를 설치해야 한다. python -V # 파이썬 설치여부 확인 pip install Django # pip는 파이썬 3.x버전을 설치하면 같이 설치됨 나는 맥북에 miniconda를 설치해놓은 상태였는데, pip3 는 인식하는데 pip 는 zsh command not found 에러가 났다. .zshrc 파일을 열어서 .bash_profile에 있는 miniconda PATH를 복붙해주니 해결되었다. 장..
장고의 어플리케이션 개발 방식 MVT 패턴 일반적인 MVC 패턴과 용어가 조금 다르다. 기존 MVC에서는 M이 MODEL, V가 VIEW, C가 CONTROLLER를 의미하는 반면, 장고의 MVT에서 M은 MODEL V는 VIEW(하지만 실질적으로 CONTROLLER 역할) T는 TEMPLATE(실질적으로 VIEW) 을 나타낸다. 각 요소들은 다음과 같이 연결된다. 웹 클라이언트로부터 Request 요청을 받으면 URLconf를 이용하여 URL을 분석 분석 결과를 통해 담당 뷰를 결정(로직) 뷰는 로직을 실행하며 DB처리가 필요하면 모델을 통해 처리하고 결과를 반환받음 뷰는 로직 처리가 끝나면 템플릿을 사용하여 클라이언트에 보낼 HTML 파일을 생성함 뷰는 최종 결과로 HTML 파일을 클라이언트에 보내 ..
- Total
- Today
- Yesterday
- youtube data api
- Conflict
- getter
- package.json
- Prefix Sums
- JavaScript
- react
- Data Structure
- CSS
- SQL
- rxjs
- Redux
- linkedlist
- 리덕스
- 자바
- GIT
- jQuery
- 깃
- 개발 공부
- 제네릭스
- 알고리즘
- Java
- til
- useEffect
- Session
- 인스턴스
- this
- oracle
- 포인터 변수
- c언어
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
