본문 바로가기

분류 전체보기

(433)
백엔드_CRUD 실습 3 오늘의 해볼 실습은 CRUD를 마무리하는 작업이다. 보완을 통해서 보다 나은 성능의 CRUD 처리가 가능하게 할 것이다. 진행될 작업은 크게 3가지 이다. 1. Home 페이지에서 글 최신순 나열 2. CSRF 보안 3. Templates 폴더 정리 1. Home 페이지에서 글 최신순 나열 일반적으로 웹 페이지 게시판에서 글은 가장 최신의 글이 가장 먼저 보이게 한다. 그래서 해당 페이지로 들어오면 눈에 띌 수 있도록 가장 위에 보여줘야 한다. 따라서 글을 최신순으로 나열하는 것은 간단하지만 사용자 편리성을 위해 중요한 부분이다. 이러한 기능을 장고에서는 단 한줄을 통해 쉽게 해결이 가능하다. # blogProject/blog/views.py # Create your views here. def home..
백엔드_CRUD 실습 2 오늘의 해볼 실습은 지난 admin 기능을 통해 글을 작성하고 수정하고 삭제할 수 있었던 CRUD에서 웹 페이지 내에서 작성, 수정, 삭제를 할 수 있는 완전한 CRUD를 업그레이드를 해보려 한다. CRUD는 데이터를 처리하는 4가지 방법이지만, 좀 더 세부적으로 나누게 되면 7 가지의 기능으로 이야기 된다. C - new(글 작성 공간 띄워주기), create(실제 글(data)를 만들기) R - home(전체 글 화면 보기), detail(글 하나하나 세부적으로 보기) U - edit(글 수정 공간 띄워주기), update(실제 글(data) 수정하기) D - delete(글 삭제하기) 이중에서 우리는 실제 R의 home과 detail만 웹 페이지에서 이용할 수 있었고 나머지는 admin에서 이용할 ..
백엔드_CRUD 실습 1 오늘 해볼 실습의 내용은 크게 3가지 이다. 1. Models.py 를 활용해 우리가 웹 서버에서 관리할 데이터의 양식 정하기 2. Admin 페이지를 통해 원하는 데이터를 보다 쉽게 관리하기 3. Admin 페이지에서 관리중인 데이터를 보기(CRUD 중 R에 해당하는 부분) 실습에 앞서, django를 사용할 기본적인 세팅을 준비한다. 가상환경 만들기 - 가상환경 동작시키기 - 장고 설치하기 - 프로젝트 만들기 - 앱 만들기 - 프로젝트와 앱 연결하기 1) 가상환경 만들기 & 동작시키기 $ python -m venv myvenv # myvenv 이름으로 가상환경 만들기 $ source myvenv/Scripts/Activate # 가상환경 동작시키기 2) 장고 설치하기 $ pip install djan..
Chap 4. Greedy Approach - Greedy Approach 는 말 뜻 그대로, 욕심이 많다. 미래를 생각하지 않고 현재만 생각(Locally optimal) - ex) 우리나라 동전은 Greedy Approach로 큰 화폐 단위로부터 locally optimal하게 고르면 잘 골라짐 - MST는 minimum Spanning Tree의 약자로, 최소 weight로 모든 node를 연결하는 트리 형성하기 (참고로 Spanning tree는 1) Sub graph, 2) Cover vertex, 3) Tree 의 조건을 만족해야함) - MST를 만드는 대표적인 두 가지 방법 Prim 알고리즘, Kruskal 알고리즘 - Prim's Alg 는 출발 노드(1)로 부터 가장 작은 값을 고르고, 또 연결된 노드를 포함하여 연결되있는 edg..
Chap 3. Dynamic Programming - Merge sort를 접근하는 데 있어 Divide and Conquer는 적절하다, recursive도 맞을 수 있지만 overlapping이 문제가 되기에 bottom up으로 올라가는 게 맞을 수 있다 - XX로 시작되지 않는 문자열 나열하기는 Qk = 2Qk-1(Y~,Z~) + 2Qk-2(XY~, XZ~) - Binomial coefficient 조합값 찾기 nCk = n-1Ck-1 + n-1Ck - Floyd's Algorithm은 AFSP(All Fair Shortest Path) 찾기 문제이다. - 기본적인 접근법은 Dynamic Programming, 핵심 아이디어는 K를 거치느냐 안거치느냐 - Dk[i,j] (i~j로 가는 경로 중 k 이하 node를 거치는 경로) 를 다음과 같은 경..
Chap 2. Divide and Conquer - Divide and Conquer의 기본은 Binary search를 예로 들 수 있다(시간복잡도와 call-by-value) - Merge sort 또한 Divide and conquer(계속 반으로 갈라서 한 개가 되면 크기 비교하며 합치기) - online은 실시간으로 넣는것(hash), offline은 input 다 넣고 처리 - inplace sort는 배열 제자리에서 처리하는가, stable은 같은 값들을 위치 조정하지 않는가 - stable은 특히 주의 깊게 보기(stable이 좋긴 하지만 실제 제약과 소모값이 있어서 unstable이 빠르긴함) - quick sort 또한 Divide and conquer(pivot 기준으로 ++와 -- 하면서 비교하기) - quick sort가 빠른 ..
Chap 6. Synchronization - Bounded-Buffer problem(Producer/Consumer 간에 같은 버퍼 공간 사용 시, Instruction이 Atomic X -> Race Condition 문제 발생) - Synchronization이 필요한데, Multi-Thread 에서는 변수 공유를 하기에 더욱 필요, Kernel의 경우 선점문제 - Critical Section 문제(ES-CS-ES-RS), 솔루션의 3가지 요구사항(상호배제, 진행, 기다림 제한) - Strict Alternation(상호배제는 o, Progress는 x(원하지 않더라도 반복)) - Peterson's Algorithm(flag, turn 두 가지 변수를 활용해 원하는지도 체크, 나올 때 flag false 준다) - 상호 배제(무조건 하..
Chap 3. 게이트 레벨 최소화 - 게이트 레벨 최소화의 방법(수식, 진리표-Kmap, Program) - Karnaugh Map(K-map)은 variable 2~5, Minterm을 구해서 다 더한다(이 때 2의 지수승으로 묶어서 처리) - 최소화 원칙(minterm의 합, 중복x, 항 최소화), Prime Implicant, Essential Prime Implicant - Product of Sum은 Kmap에서 보수를 취해서 구한 다음 다시 보수 취하기 - Don't Care 조건은 어떤 값이든 넣어서 최소화를 이행하면 된다 - NAND 게이트와 NOR 게이트로 표현하기 - 2 레벨 게이트 구현(AND-OR, OR-AND을 구해서 보수의 보수 취해가면서 찾아보기) - XOR 게이트(xy'+x'y), Odd Function, E..