본문 바로가기

전체 글92

[OS] Sync / Async / Blocking / Non-Blocking 프로그래밍을 시작한 사람들 중 동기 및 비동기에 대하여 많이 접해봤을 것이다. Syncronous (동기) :동시 발생[존재]하는 Asynchronous(비동기) : 동시에 존재[발생] 하지 않는 이라는 단어의 뜻을 가지고 있으며, 단어만 보았을 때에는 이해가 바로 되지 않을 수 있다. 동기와 비동기는 특정 작업들이 있을 때, 작업 완료의 여부와 관련된 순서에 관한 것이고, 유사하지만 다른 개념인 Blocking / Non-block도 같이 알아볼 것이다. Blocking/Non-blocking : 프로세스의 유휴 상태(제어권)에 관한 것 - Blocking : 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수가 제어권 없이 대기 - Non-blocking : 호출된 함수가 리턴 후 호출한 함수.. 2023. 2. 8.
[Network] HTTP(Hypertext Transfer Protocol) HTTP는 www(world wide web) 상에서 정보를 교환할 수 있도록 내재된 프로토콜이다. OSI 7 계층의 Application Layer에 속하여 있다. 포트는 기본적으로 80번을 사용하고, 주로 HTML 문서를 주고받는데 이용되며, TCP를 주로 사용하되 HTTP/3 부터 UDP를 이용한다. HTTP는 사용되는 주체에 따라 클라이언트(사용자), 서버로 나뉘어서 구분할 수 있으며, Request(요청)과 Response(응답)에 따라 주체 간의 상호 작용을 통하여 자료를 송/수신한다. 이를 기반으로 URL에 자원의 위치를 명시하고 HTTP Method(POST/GET 등)을 이용하여 해당 위치의 자원과 상호작용하는 것이 REST(Representational state transfer)이다... 2023. 2. 7.
[Django] Django란? 최근에 개발을 시작한 사람들 중 많은 사람들이 Python을 사용해 봤을 것이다. 또한, 대중적인 Python을 이용하여 웹 개발을 시작하는 사람들도 많이 생겨났다. [사진 : Stackoverflow의 프로그래밍 언어 질문 수의 동향 그래프] 최근에 인기를 끌고있는 Python에서는 가장 대중적인 웹 개발 프레임워크가 3개 존재하는데, Flask / Django / Fast-api가 있다. 해당 글에서는 이 중 Django에 대하여 알아볼 것이다. Django의 홈페이지에서 소개하는 글이다. Django는 소개에서 보는 것처럼 보다 적은 코드로 웹앱을 빠르게 개발하는 것을 지향하고 있다. 또한, 다른 프레임워크들과는 다르게 Django는 Front-End, Back-End를 모두 개발할 수 있는 Ful.. 2023. 2. 6.
[CS] MPA(Multi Page Application) / SPA(Single Page Application) MPA(Multiple Page Application)는 여러 개(하나 또는 그 이상)의 Page로 구성된 Application이다. 전통적으로 사용해 왔던 방식이며 오래된 웹 사이트들을 방문하면 모두 MPA 방식으로 제작되어 있는 것을 확인할 수 있다. 또한, MPA는 SSR(Server Side Application) 방식으로 렌더링 하며, 새로운 페이지를 요청할 때마다 서버에서 렌더링 된 정적 리소스(HTML, CSS, JavaScript)가 다운로드된다. 위 사진을 예시로 들면 모든 페이지에 알맞은 정적 리소스가 있으며 페이지에 방문 시 해당 리소스를 요청한다. 페이지 이동하거나 새로고침 하면 전체 페이지를 다시 렌더링 하게 되는 방식이다. MPA는 다음과 같은 장단점을 가지고 있다. Pros :.. 2023. 2. 5.
[Algorithm] Sorting Algorithm(정렬 알고리즘) - Non Comparison 이전에 정렬 알고리즘에 대한 글을 작성했었는데 이는 상호 원소의 크기를 비교해가며 정렬을 하는 알고리즘이였다. [Algorithm] Sorting Algorithm(정렬 알고리즘) - Comparison 프로그래밍을 할 때 배열은 라이브러리를 통하여 손쉽게 정렬할 수 있다. 하지만 정렬은 다양하게 수행할 수 있고 그 알고리즘에 따라 장단점이 존재한다. 아래는 통상적으로 비교를 통한 정렬 ssnotebook.tistory.com 그리고 비교를 통한 정렬 알고리즘은 시간 복잡도가 최대 O(n log n)~O(n^2)를 가진다는 것을 알 수 있었다. 하지만 비교를 통한 정렬 알고리즘이 아닌 특수한 방식을 통한 정렬 알고리즘이 존재하는데, 이는 특정 조건을 충족하면 비교를 통한 알고리즘보다 빠르게 정렬을 할 수.. 2023. 2. 4.
[CS] Kernel(커널) 일반적으로 Mac이나 Windows 같은 OS(운영체제)에 대하여는 많이 들어봤을 것이나 OS와 밀접한 연관이 있는 커널에 대해서는 많이 들어보지 못했을 것이다. ‣ 커널(Kernel) 사전적 정의로 "알맹이" 또는 "핵심"이라는 뜻을 가지고 있는 커널은 말 그대로 운영체제의 "핵심"이다. 커널은 운영체제에서 컴퓨터 자원을 관리하는 역할을 수행하기 때문이다. 소프트웨어의 요청(System Call)으로 하드웨어의 자원(CPU 연산, Disk에 Data의 저장 및 삭제 등)을 이용하기 위하여 커널에서는 중간다리 역할을 수행하는데, 프로그램이 직접적인 하드웨어의 자원에 접근하는 것을 막기 위하여 존재하는 것이다. 커널은 소프트웨어의 요청이 하드웨어의 자원에서 처리될 수 있도록 변환하는 작업을 수행하는데, 이.. 2023. 2. 2.