분류 전체보기 17

[CS] 개발자라면 꼭 마주치는 CS 동음이의어(同音異義語)들

개발자라면 정말 다양한 CS 용어들을 접하게 된다. 표기 상 같지만 뜻은 다른 용어들을 모아보았다.1. WebSocket vs. Socket주로 'Socket'을 'WebSocket'의 준말로 오해하는 경우가 많다. 이 둘은 전혀 다른 뜻이므로 반드시 구분해야 한다.WebSocket웹소켓(WebSocket)은 실시간 양방향(two-way) 통신을 지원하는 프로토콜로, 기존의 HTTP 폴링(polling) 방식을 대체하기 위해 등장했다. 웹소켓은 한 개의 TCP 연결만으로 양방향 통신을 지원할 수 있어 기존의 폴링 방식보다 오버헤드(overhead)가 작다는 특징이 있다.+ 롱 폴링(Long Polling)과 웹소켓(WebSocket)의 비교 롱 폴링(Long Polling)웹소켓(WebSocket)장점(..

CS 2025.04.30

[Git] VCS(버전 관리 시스템)와 Git에 대해

Git이란?깃(Git)은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 스냅샷 스트림 기반의 분산 버전 관리 시스템이다. 또는 이러한 명령어를 가리킨다.- 위키백과Git은 대표적인 분산형 버전 관리 시스템(DVCS; Distributed Version Control System)의 일종으로, 파일의 변경사항을 추적하고 기록한다는 특징 때문에 현대 SW개발에서 자주 쓰이는 소프트웨어이다.VCS이란?VCS는 Version Control System의 약자로, 직역하면 버전 관리 시스템이다. 예시를 통해 이해해보자.메모장을 통해 소설을 하나 쓴다고 가정해보자. 초기에 구상했던 내용으로 '버전1.txt'을 완성했다. 하지만, 버전1이 마음에 들지 않아 일부 구절을..

Programming/Git 2025.04.08

[백준 으깨기] 1991 - 트리 순회 (재귀 없이 구현하기)

문제 정보 https://www.acmicpc.net/problem/1991문제 쪼개기문맥 파악하기이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오.위와 같은 이진 트리가 입력되면,전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식)중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식)후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트)가 된다.입력 조건 확인하기첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와..

Programming/CPP 2025.03.24

[Django] JWT를 이용한 로그인/로그아웃 구현하기(feat. django-rest-framework-simplejwt)

Pre-requirementsJWT 인증과정JWT는 JSON Web token의 약자로, JSON 객체형태로 정보를 안전하게 전송하는 웹 토큰이다(자세한 설명은 여기).JWT도 토큰 기반 인증 방식이기에 인증 과정도 토큰 방식과 동일하다. JWT 내부에 디지털 서명이 포함되어 이 서명이 유효하다면 유저의 권한에 따라 응답을 반환한다. JWT이 어떤 과정을 통해 공격자(해커)에게 탈취된다면 공격자가 유저를 가장하고 서버에 접근할 수도 있다. 이를 방지하기 위해 JWT은 주로 몇 분에서 몇 시간정도의 짧은 만료기간을 가진다. 이는 유저에게 주기적으로 토큰을 재발급받아야 하는 번거로움을 준다.Refresh 토큰토큰 재발급 과정을 단순화하기 위해 토큰 기반 인증 방식은 접근을 위한 Access 토큰과 Acces..

Programming/Django 2023.09.11

[백준 으깨기] 1753 - 최단경로 (with. 다익스트라/Dijkstra)

문제 정보 1753번: 최단경로첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가www.acmicpc.net문제 쪼개기문맥 파악하기방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10 이하의 자연수이다.입력 조건 확인하기첫째 줄에 정점의 개수 V(1 ≤ V ≤ 20,000)와 간선의 개수 E(1 ≤ E ≤ 300,000)가 주어진다. 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V..

Programming/Python 2023.08.24

[GitHub Action] GitHub Action을 활용해 지속 배포(CD) 환경 구축하기(feat. React.js, AWS S3)

구현 목적이 포스팅은 React로 구현된 정적 웹 파일들(.js, .html, .css)을 AWS S3 버킷을 통해 배포하는 간단한 예시이다. 여기에 GitHub Action을 활용해 CI/CD 파이프라이닝을 구축해보는 과정을 담았다.Requirementscreate-react-app으로 만들어진 초기 버전의 React 앱위 프로젝트의 Github RepositoryAWS 계정AWS S3버킷 생성AWS S3 콘솔(https://console.aws.amazon.com/s3/)에서 S3 버킷을 생성하고자 한다. 콘솔 화면에서 버킷 만들기를 클릭한다.버킷 이름을 입력하고, 원하는 AWS 리전을 선택한다. 너무 먼 리전을 선택할 경우, 응답속도가 지연될 수 있고, 다른 AWS리소스들과 리전이 다를 경우, 각 ..

CI&CD/GitHub Action 2023.08.10

[네트워크] 인터넷 프로토콜(IP) - 2편. IP 패킷(IP Packet)과 패킷 스위칭(Packet Switching)

IP 패킷 인터넷과 같은 현재 대부분의 네트워크는 패킷(Packet)이라 부르는 여러 데이터 블록들이 망을 수시로 이동하여 통신이 이뤄진다. 일반적으로, OSI 3계층과 그 이상의 프로토콜에서 데이터 블록들을 패킷(Packet)이라 부른다. 추가로, 2계층에서는 프레임(Frame)이라 부른다. 패킷은 이름에 맞게 택배 소포라고 생각하면 이해가 쉽다. 소포가 안전하게 전달되기 위해서 소포에 송장 라벨을 붙이는 것처럼, 패킷도 안전하게 전달되기 위해선 패킷에 헤더(Header)가 필요하다. 헤더 종류 크기 (bit) 설명 Version 4 IP의 버전을 나타냄. IPv4=4, IPv6=6. Length 4 헤더의 32-bit 워드 크기를 나타냄. 위 그림에서는 6(=24/4). Service type (TO..

CS/네트워크 2023.08.05

[백준 으깨기] 2615 - 오목

문제 정보 2615번: 오목오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호www.acmicpc.net문제 쪼개기문맥 파악하기오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호가 붙고 세로줄은 왼쪽에서부터 오른쪽으로 1번, 2번, ... 19번의 번호가 붙는다.같은 색의 바둑알이 연속적으로 다섯 알을 놓이면 그 색이 이기게 된다. 여기서 연속적이란 가로, 세로 또는 대각선 방향 모두를 뜻한다. 하지만 여섯 알 ..

Programming/Python 2023.08.01

[네트워크] 인터넷 프로토콜(IP) - 1편. IP 주소 체계

IP의 등장 네트워크는 또 다른 네트워크와 연결된다. 우리네 집에 있는 공유기나 모뎀이 만드는 로컬 네트워크(LAN)도 다른 외부 네트워크와 연결되어 있다. 이런 네트워크 간의 연결을 인터네트워킹(Internetworking)이라고 한다. 우리는 인터네트워킹을 통해 지구 반대편의 사람과도 통신이 가능하다. 다른 네트워크의 노드와 통신하기 위해선 그 노드를 지칭할 수 있는 유일한 식별자가 필요하다. 예를 들어, 네트워크 A에서 노드들을 [1, 2, 3, 4]라고 식별하고, 네트워크 B에서 노드들을 [4, 5, 6]라고 식별한다고 가정하자. A와 B가 연결되지 않았다면, 각 네트워크 내의 노드들은 유일하게 식별가능하다. 하지만, A와 B가 연결되고 나면, 식별자 '4'가 네트워크 A의 '4'인지, 네트워크 ..

CS/네트워크 2023.07.16

[Python] 파이썬에서 반올림하기 - round()와 decimal 모듈

round() 파이썬의 내장 함수인 round()를 이용하다가 흥미로운 점을 발견했다. 0.5을 소수점 첫째자리에서 반올림하면, 1이 되는 것이 상식으로 통한다. 하지만 파이썬에서는 그 답이 0이 된다. ~ python >>> f = 0.5 >>> round(f) 0 반올림을 이용한 백준 문제(18110 solved.ac) - https://www.acmicpc.net/problem/18110 18110번: solved.ac 5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다. www.acmicpc.net 은행원의 반올림(Banker's Round..

Programming/Python 2023.07.11