게시판 페이징 기능의 필요성 게시판의 글 개수가 많아질 경우 필요함 한 페이지에 10개만 보여주는 형식으로 만듬 데이터 불리기 터미널에서 cd mysite manage.py shell 로 터미널 실행 그 후 아래 코드 입력 from pybo.models import Question from django.utils import timezone for i in range(300): q = Question(subject = "질문글 [%03d]의 제목 입니다" % i, content = "내용은 생략" , create_date = timezone.now()) q.save() views.py의 index함수 수정 from django.core.paginator import Paginator def index(r..
장고의 코드를 다 아는 것도 중요하지만 흐름을 아는 것이 가장 중요하다 1. urls 를 통해 입력이 들어온다 urls.py 파일에서 해당 url로의 입력이 들어올 경우에 어떻게 넘겨줄 것인지 지정해 준다. 2. views를 관리 views.py를 통해 url을 타고 들어온 사용자에게 보이는 영역을 어떻게 처리할 것인지 정해준다. DB에 저장하는 파트를 여기서 작성하면 된다. render를 통해 html 파일로 값을 넘겨줄 수 있다. redirect에 값을 넘겨줘서 이를 받아 호출하면 여러 페이지 반복 연결이 가능해진다. 3. views를 통해 연결된 HTML 코드를 보여준다. css, js를 link, script로 연결받을 수 있다. extends , include를 통해 반복되는 코드의 재사용성을 ..
static 폴더 지정 mysite밑에 static 폴더를 생성한 후 config 폴더 밑의 settings.py로 이동해 static_dirs 설정을 추가해 준다. BootStrap 다운로드 구글창에 bootstrap 다운로드를 검색한 후 아래 All release를 클릭한다. stable 한 최신 버전이 이 글을 작성하는 당시에는 v5.2였음. compiled 된 CSS와 JS를 다운로드한다. 다운 이후 압축을 풀고 bootstrap.min.css와 bootstrap.min.js를 static 폴더에 붙여 넣어 준다. question_list.html파일 수정 bootstrap.min.css 파일 적용을 위해 link를 걸어준다. 그 후 css를 적용하기 위해 HTML을 수정한다. 원래 코드 {% i..
1. R의 특징 데이터 다루는 방법 R에서는 전체 데이터를 한 번에 다루는 벡터 연산을 더 자주 사용 개별 데이터를 하나하나 처리하는 방법에 비해 속도 빠름 결측치 NA 초기화되지 않은 변수에 저장하는 NULL 외에도 관측 또는 기록되지 않은 데이터를 표시하기 위함 객체의 불변성 대부분의 R 객체는 그 값을 수정할 수 없음 수정되고 있다고 보이는 코드도 실제로는 새로운 객체를 생성하는 것 흐름 제어 조건문 if 문법 ifelse() 함수 - TRUE, FALSE 데이터 한 번에 처리할 때 사용 ifelse(c(6,7,8,9,10) %% 2 == 1 , "홀수", "짝수") 반복문 문법 break : 반복문 종료 next : 현재 수행 중인 반복문 블록의 수행을 중단하고 다음 반복 시작 for(a in 1..
R 프로그램을 다운로드하기 위해 아래 사이트에 접속하여 4.0.2 버전을 다운로드하여준다. https://cran.r-project.org/bin/windows/base/old/4.0.2/ IDE 설치를 위해 R studio도 다운로드한다. https://posit.co/download/rstudio-desktop/ 실행을 위해서는 file → New File → R Script로 파일을 생성한 후 코딩을 한다. 그 후 Run버튼으로 한 줄씩 실행도 가능하고, Source 버튼으로 한 번에 실행도 가능하다. R studio의 경우 오른쪽 Environment창에 메모리에 올라가는 형태도 보여준다. 함수의 기능이 궁금할 때 Help에 검색이 가능하다. 원하는 패키지를 다운로드하고 싶을 때 Packages에..
커스텀 액션의 사용 방법 자바의 for문과 java.util.StringTokenizer 클래스의 기능을 합친 것 같은 기능을 제공한다. 이 액션에는 items, delims, var라는 3개의 어트리뷰트를 사용해야 한다. items에는 토큰을 포함하는 문자열을, delims 에는 토큰 분리에 사용할 구획 문자를 , var에는 분리된 토큰을 대입한 변수의 이름을 써야 한다. ${pet} 토큰의 구획 문자 delims에 한 종류 이상의 문자를 지정할 수 있다. EX) delims = "*/-" forTokens 사용 예시 사자의 생일잔치에 누가 왔을까요? ${guests } ${animal} 커스텀 액션의 사용 방법 자바의 try 문과 비슷한 기능을 한다. 커스텀 액션의 시작 태그와 끝 태그 사이에서 에러..
JSTL 이란 JSP 표준 태그 라이브러리의 약자(JSP Standard Tag Library)이다. JSP 페이지를 작성할 때 유용하게 사용할 수 있는 여러 가지 커스텀 액션과 함수가 포함되어 있는 라이브러리이다. JSTL을 가지고 할 수 있는 일 간단한 프로그램 로직의 구사(자바의 for, if, 변수 선언 등의 로직) 다른 JSP 페이지 호출(, ) 날짜, 시간, 숫자의 포맷 JSP 페이지 하나를 가지고 여러 가지 언어의 웹 페이지 생성 데이터베이스로의 입력, 수정, 삭제, 조회 XML 문서의 처리 문자열을 처리하는 함수 호출 문자열을 처리하는 함수 호출을 제외한 나머지 기능들은 모두 커스텀 액션 형태로 제공된다. JSTL을 구성하는 작은 라이브러리들 코어 라이브러리 사용하기 커스텀 액션의 사용 방..
정렬 a = np.array([[4,3,5,7], [1,12,11,9], [2,15,1,14]]) a np.sort(a) # axis=-1 또는 axis=1 과 동일 np.sort(a, axis=0) a.sort(axis=1) # a 값을 변화시킴 a argsort를 활용한 sort 방식 a = np.array([42, 38, 12, 25]) j = np.argsort(a) j a[j] np.sort(a) 고급 인덱싱 - 인덱스 배열을 사용한 인덱싱 a = np.array([[1,2],[3,4],[5,6]]) a print(a[[0,1,2],[0,1,0]]) # a[0,0] a[1,1] a[2,0]을 인덱스로 하는 1차원 배열(shape=(3,))을 출력해준다. a = np.array([[1,2],[3,..
벡터화 연산 명시적으로 반복문을 사용하지 않고도 배열의 모든 원소애 대해 반복연산을 할 수 있습니다. data = [0,1,2,3,4,5,6,7,8,9] answer = [2 * d for d in data] answer x = np.array(data) x 2 * x list_samp = [_ for _ in range(3)]print(list_samp*5) a = np.array([1,2,3]) b = np.array([10,20,30]) 2*a+b a == 2 b > 10 (a == 2) & (b > 10) x = np.arange(1, 10001) y = np.arange(10001, 20001) %%time 해당 매직메서드를 통해 파이썬에서 실행시간을 구할 수 있다. 아래 예시를 통해 벡터화 연..