CS 58

4. Django, 이미지 블로그와 REST API

경희대학교 안기옥 교수님의 모바일/웹서비스프로젝트 수업을 기반으로 정리한 글입니다.Ch 1. 개요 시스템 구성도DJANGO: 웹 애플리케이션 서버로서 동작NGINX: 웹 서버 및 리버스 프록시로서 동작 장고 자체에는 네트워크 트래픽을 세밀하게 제어하는 기능이 거의 없어서, 대량의 요청 공격(DDos)이 들어오면 별다른 방어 없이 그대로 받아 시스템이 중단될 수 있다. 그래서 트래픽을 관리해 줄 역할이 필요하고, 그 역할을 오픈 소스인 Nginx가 한다. ※ 개념 설명리버스 프록시: 클라이언트의 요청을 받아 실제 서버로 전달하고, 서버로부터 받은 응답을 다시 클라이언트에게 전달하는 서버로드밸런서:하나의 서버에 요청이 몰리지 않도록 여러 대의 서버로 트래픽을 분산시키는 소프트웨어 지금까지는 단순히 HTTP로..

3. Debugging Django with VSCODE

경희대학교 안기옥 교수님의 모바일/웹서비스프로젝트 수업을 기반으로 정리한 글입니다.Ch 1. Debugging디버깅컴퓨터 프로그램 개발 단계 중에 발생하는 시스템의 논리적인 오류나 비정상적인 연산(버그)을 찾아내고,그 원인을 밝히고 수정하는 작업 과정을 뜻한다. 일반적으로 디버깅을 하는 방법으로는 테스트 상의 체크, 실제 데이터를 사용해 테스트하는 방법이 있다. 웹 서비스 디버깅서버와 클라이언트의 상호 작용에 따른 디버깅을 의미한다. 서버 측면 연산과 클라이언트 측면 연산 및 전달 데이터에 따른 영향 등,경우에 따라 원인을 밝히는 과정이 다소 복잡해질 수 있기에 단일 Application의 디버깅 대비 어려움이 따른다. Ch 2. Debugging with VSCODE Telnet을 이용한 서버 연결..

2. Django 웹 프레임워크

경희대학교 안기옥 교수님의 모바일/웹서비스프로젝트 수업을 기반으로 정리한 글입니다.Ch 1. Django란?Django란 파이썬으로 만들어진 무료 오픈소스 web application framework로, 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소이다. 웹 서버 요청 이후 장고의 역할1. URL 확인사용자가 웹 요청을 보냄e.g., 주소창에 example.com/profile 입력tr요청 받은 주소(URL)를 확인urlresolver는 urls.py에 정의된 URL 패턴 목록을 가져와 들어온 URL과 하나씩 비교2. view 함수로 전달URL 패턴과 일치하는 것이 있으면 해당 view 함수로 요청 전달view 함수: views.py 안에 개발자가 직접 작성한 함수3. view 함수에서 처리필..

1. Git & GitHub

경희대학교 안기옥 교수님의 모바일/웹서비스프로젝트 수업을 기반으로 정리한 글입니다.Ch 1. Git, BasicGit은 소프트웨어 형상 관리(Software Configuration Management) Tool로, local application이다.그리고 이러한 Git에 해당하는 서비스를 온라인에서 협업 가능하게 제공하는 게 GitHub이다.Software Configuration Management: 자동화된 시스템으로 하는 백업의 개념 Git은 소스코드 관리를 위한 분산 버전 관리 시스템이다. 분산 버전 관리 시스템이랑 파일의 스냅샷(버전)들을 전부 복제해 두는 것으로, 서버에 문제가 생겨도 이 복제물로 작업을 시작하거나 서버를 복원할 수 있다. Git의 핵심1. 델타가 아니라 스냅샷파일에 대한..

Chapter 8: Tree

경희대학교 박제만 교수님의 자료구조 수업을 기반으로 정리한 글입니다.Treedata 간에 hierarchy가 존재할 때 data를 표현하는 방식을 tree라고 한다. Nodes▶ Parents and Children Nodes▶ Root Node▶ Leaf Nodes Level▶ Level 0▶ Level 1▶ Level 2 Subtree▶ Left subtree▶ Right subtree Type Data▶ Char Type Data▶ Int Type Data Unique Path▶ A unique path exists from the root node to every other node.The path from E to Z: E -> C -> Z (acyclic structure)Binary Tree..

CS/자료구조 2025.06.08

Socket Programming in C: Client-server example

Client-server example using TCPserver#include #include #include #include #include #include #include #include ▶ 헤더파일 포함int main(void)▶ main 함수 시작struct sockaddr_in sa;int SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);▶ 소켓 주소 구조체 생성 + 소켓 생성socket(): 소켓 생성PF_INET: IPv4 프로토콜 사용SCOK_STREAM: TCP 사용IPPROTP_TCP: TCP 프로토콜socket()이 실패하면 -1 반환if (SocketFD == -1) { perror("cannot create socket"); e..

Socket Programming in C: Socket API functions

SocketSocket Address = TCP or UDP의 Port number + IP의 AddressSocket은 Transport Layer(4)와 Network Layer(3) 간 정보를 주고받기 위한 구멍이다. Header filesFileDescriptionsys/socket.h소켓 생성, 바인딩, 수신, 전송 등 소켓 함수들의 기본 정의 포함 (e.g., socket, bind, listen, accept)netinet/in.hAF_INET, AF_INET6, PF_INET, PF_INET6 등 표준 IP 주소와 TCP/UDP 포트 번호 정의sys/un.h동일 컴퓨터에서 실행되는 프로그램 간의 로컬 통신(UNIX 도메인 소켓 통신)을 위한 기능 제공arpa/inet.hIP 주소 변환 함수..

Programming Exercise: Lab #6

경희대학교 박제만 교수님의 자료구조 수업을 기반으로 정리한 글입니다.Exercise #1ProblemsImplement the SORTED LIST using doubly linked structure.1) insertItem(item): Insert the item to the proper position in the list.2) removeItem(item): Delete "item" in the listDeallocate (delete) the deleted item.template void DoubleSortedType::insertItem(ItemType item){ NodeType* newNode = new NodeType; NodeType* tempPtr = listData;..

CS/자료구조 2025.06.02

Chapter 7: Recursion

경희대학교 박제만 교수님의 자료구조 수업을 기반으로 정리한 글입니다.RecursionDefinitionsRecursive call: 재귀, 자기 자신을 호출하는 것Direct recursion: 직접적으로 자기 자신을 호출, e.g., a 함수가 a 함수 호출Indirect recursion: 다른 함수를 우회해 자기 자신을 호출, e.g., a 함수가 b 함수 호출 -> b가 a 함수 호출 Recursion의 필요성recursive한 프로그래밍은 모두 nonrecursive한 방법으로도 가능하다.즉, 반드시 필요한 것은 아니기에 recursion을 사용하지 않아도 모든 알고리즘 구현 가능하다. Recursive solutions can be less efficient than iterative solu..

CS/자료구조 2025.06.02