본문 바로가기
728x90
반응형

개요9

[Python Django] 11. Django Form / Model Form 사용하기 (1) 최근 며칠 간 Django 프로젝트를 만들고 지우고를 반복하면서 웹 프로그래밍 연습을 하다보니, Django가 조금씩 손에 익어가는 중이다. 물론 필자는 Front End 쪽을 거의 5년 전에 독학하고 난 뒤로 제대로 사용한 적이 없어 디자인은 봐 줄 수 없을 만큼 처참하지만, 적어도 가장 중요한 Django의 기본적인 로직이 머리에 제대로 박히게 된 상태라 프론트 쪽은 천천히 배우면 된다고 생각하면서, 최근 들어 전례없이 여유로운 기분을 느끼고 있다. 여러 번 프로젝트를 만들고 폭파시키고 다시 만들고를 반복하다보니, 한 가지 불편한 점이 있다. 아래에 필자가 다시 만든 프로젝트의 결과 화면을 보자. 간단한 게시판 기능이 포함되어 있는 프로젝트를 하나 만들어서 구동했고, 위와 같이 데이터도 잘 들어가는 .. 2024. 4. 15.
[자료구조 with Python] 16. 선형 자료 구조 - Queue(1) 이 블로그에서 다루는 선형 자료구조의 마지막, Queue에 대해 글을 작성하려한다. Queue는 네트워크나 보안 장비와 연관있는 곳에서 개발 관련 업무를 진행한다면 무의식적으로라도 사용하게 되는 자료구조인데, 하드웨어 프로그래밍이건 웹 프로그래밍이건 사용하는 곳이 많아 알아두면 쓸 데가 많다. 필자의 경우도 회사에서 판매하는 보안 장비가 전송하는 Syslog를 실시간으로 받아, 해당 Syslog를 변형하여Splunk로 다시 전송하는 프로그램을 Queue와 Thread로 만들었던 경험이 있다. 물론, 그 때는 Queue라는 의식도 안하고 작성했지만 말이다... 1. Queue 개요 Queue도 Stack처럼 개념 자체가 어려운 자료구조는 아니다. 단지 Stack과 달리 양 방향이 뻥 뚤린 파이프 모양을 띄.. 2024. 3. 20.
[자료구조 with Python] 15. 선형 자료 구조 - Stack 또 순서가 어그러졌다. 원래 힙 정렬(Heap Sort)에 대해 포스팅을 작성하려했는데, 힙 정렬 포스팅을 하려니 Heap이 발목을 잡고, Heap을 포스팅하려니 이진 트리(Binary Tree)가 발목을 잡는다. 물론 바로 힙 정렬 내용을 포스팅하고 추후 링크로 연관된 내용에 대한 포스팅을 연결해도 되지만, 그래도 직접 코드도 작성해보지 않고 포스팅하기에는 틀린 내용도 있을까봐 자신도 없고 해서 테스트 후에 천천히 작성을 하려 한다. 조금 시간도 벌 겸, 필자가 이전 회사 업무 중에 많이 사용했던 Stack과 Queue에 대해서 조금 다루어볼까 한다. 먼저 이번 포스팅은 Stack 부터. ** Java의 Stack과 Queue는 이 포스팅을 참고하자 1. Stack 개요 맨날 숫자 줄 세우기 놀이만 하.. 2024. 3. 19.
[자료구조 with Python] 14. 정렬 알고리즘(7), 쉘 정렬(Shell Sort) 사실, 오늘 포스팅으로 다룰 쉘 정렬은 지난 포스팅에서 언급한 퀵 정렬 이전, 그러니까 삽입 정렬 바로 이후에 다루어야 했던 포스팅이다. 그럼에도 불구하고 지금에서야 쉘 정렬(Shell Sort)에 대해 이제야 다루게 된 것은... 엊그제 무렵 쉘 정렬에 대해 알게 되어서다... (포스팅 구성 다 꼬이네..) 1. 쉘 정렬(Shell Sort) 개요 쉘 정렬은 삽입 정렬과 연관이 있다고 필자가 위에서 힌트처럼 언급을 했으니, 다시 삽입 정렬을 살펴보자. 삽입 정렬은 좌측 또는 우측 끝단에 위치한 원소를 제외한 나머지 원소 중 하나를 선택한 뒤, 극값과의 크기 비교를 통해 자리 교체를 진행하는 정렬 방식이다. 그런데 원소의 교대 방식이 버블 정렬과 상당히 유사하기 때문에, 특수한 상태의 배열 정렬를 진행함.. 2024. 3. 18.
[자료구조 with Python] 13. 정렬 알고리즘(6), 퀵 정렬(Quick Sort) 선형 자료 구조 내에 저장된 데이터를 빠르게 정렬하는 방법의 두 번 째 포스팅이다. 지난 번에는 병합 정렬 과정을 구현하고 실행함으로써 중첩 Loop 문으로 진행하는 정렬 알고리즘보다 빠른 정렬이 가능함을 알아보았다. 이번에는 퀵 정렬(Quick Sort)이라고 하는, 이름만 들어도 무진장 빠를 듯한 정렬에 대한 내용이다. 1. 퀵 정렬 (Quick Sort) 퀵 정렬은 의외로 개념은 단순하다(구현은 생각보다 머리가 아프다). 먼저 배열 내 가운데에 위치한 값을 하나 지정한다. 이 값을 Pivot - 농구를 하셨던 분들이라면 익숙할 - 이라고 하는데, 말 그대로 배열 내 원소를 교대하는 일종의 축 또는 기준점을 말한다. 8, 4, 2, 5, 1, 3, 7 -> Pivot으로 배열 한 가운데에 위치한 5를.. 2024. 3. 15.
[자료구조 with Python] 12 - 정렬 알고리즘(5), 병합 정렬(Merge Sort) 선형 자료의 정렬과 관련된 내용을 지난 4개의 포스팅을 통해 살펴보았다. 조금만 정리를 하고 넘어가자면, 각각 버블, 삽입, 선택 정렬에 대한 내용이었으며 이들은 모두 중첩된 Loop 문을 사용하기에 시간 복잡도가 BigO(N^2)으로 나타난다. 그럼, 이런 의문이 들 수 밖에 없다. "선형 자료를 정렬하는 더 빠른 방법은 없는 것일까요?" 왜 없을까. 머리 좋은 선구자들은 이미 자기들도 문제를 인지하고 머리 싸맸던 역사가 있다. 선형 정렬을 빠르게 할 수 있는 방법으로는 병합 정렬, 퀵 정렬, 쉘 정렬 등이 있는데, 그 중에 오늘은 병합 정렬(Merge Sort)라고 불리는 알고리즘에 대해 정리하려한다. 1. 병합 정렬(Merge Sort)의 개요 이름이 참 요상하다. 분명 정렬해야하는 배열은 하나인데.. 2024. 3. 13.
[자료구조 with Python] 11 - 정렬 알고리즘(4), 선택 정렬(Selection Sort) 이번 포스팅은 정렬 알고리즘의 하나인 선택 정렬(Selection Sort)에 대한 내용이다. 지난 포스팅에서 살펴본 삽입 정렬과 매우 유사한 형태로 동작하는 코드이나, 처음 코드를 구현하는 단계라면 삽입 정렬보다 오히려 쉽다(삽입 정렬은 필자가 빠가라 이해를 잘못한 거고..). 바로 시작해보자. 1. 선택 정렬의 개요 선택 정렬은 삽입 정렬과 유사하다. 삽입 정렬처럼 원소 하나를 선택하고, 최소값을 판별하는 경우 자신의 왼쪽, 그렇지 않은 경우 자신의 오른쪽의 원소와 비교하는 것은 동일하다(오름차순을 기준으로). 다만 삽입 정렬과 큰 차이점이 있다면, 삽입 정렬은 선택하는 원소를 배열의 index 순서로 진행하나, 선택 정렬은 최소값을 선택한다는 차이점이 하나 있고, 선택한 값을 버블 정렬로 이동시키는.. 2024. 3. 12.
[자료구조 with Python] 8. 정렬 알고리즘(1) - 버블 정렬 개요 원래, Stack과 Queue에 대한 내용으로 이번 포스팅을 작성하려다, 정렬과 관련된 내용을 한 번 포스팅하고 넘어가야 할 듯 해서 급히 지난 포스팅의 뒷 부분을 수정했다. 사실 Stack과 Queue야 선형 구조인 배열의 파생 개념이라 크게 어렵지 않기 때문에 지금 포스팅으로 다루지 않는다고 크게 문제가 될 것도 아니다. 정렬의 경우에는 조금 이야기가 다르다. 정렬의 경우에는 프로그래밍을 하다보면 다루어야하는 데이터 셋이 무조건 발생하기 때문에, 조금이라도 더 효율적인 프로그램을 만들려면 다량의 데이터를 어떠한 규칙을 적용해 효과적으로 정렬할 수 있을지 계속 고민할 수 밖에 없다. 선형 자료구조의 정렬 알고리즘은 버블 정렬, 선택 정렬, 삽입 정렬, 힙 정렬 등등등 무수히 많다. 그 중에서도 앞으로 .. 2024. 3. 7.
[자료구조 with Python] 3. 선형 자료 구조 - 배열(1) 1. 배열 거의 모든 프로그래밍 언어는 서로 연관된 변수 값을 묶어서 저장할 수 있는 배열이라는 기능을 제공한다. 이 배열이 프로그래밍에서 매우 유용한 이유는 메모리의 효율적인 관리와 관련이 있다. 배열이 어떻게 효율적인 메모리 관리에 도움이 되는지 살펴보려면 조금 옛날로 돌아가 C언어가 주력으로 사용되던 시점으로 돌아가야 한다. C 언어에서 변수 3개를 int 형태로 선언해보려 한다. 이 변수들을 선언하면 메모리에 다음과 같은 일이 발생한다. 각각의 변수값이 메모리의 임의 구역에 저장되며, 해당 구역은 변수명으로 이름이 지정된다. 대부분의 C 언어 기본서에서는 변수명이 적혀있는 상자에 값이 저장되는 것으로 설명을 하는데, 위의 그림에 대입하자면, 메모리의 여러 상자 중, 1이 들어간 상자는 a라고 지정.. 2020. 12. 13.
728x90
반응형