전체 글 56

[컴퓨터네트워크] 03. 네트워크 통신

데이터가 실제로 오갈 때는 여러 규칙이 작동한다. 누구에게 보낼지(전송 대상), 어느 방향으로 보낼지, 오류는 어떻게 잡을지, 여러 기기가 한 매체를 어떻게 나눠 쓸지 등이다. 오늘은 네트워크 통신의 이런 기본 메커니즘을 정리했다.1. 통신 방식전송 대상에 따라방식설명유니캐스트특정 1대에만 전송 (1:1). 가장 흔함브로드캐스트같은 LAN의 모든 기기에 전송 (1:전체)멀티캐스트특정 그룹에만 전송 (1:그룹)전송 방향에 따라방식설명예단방향(Simplex)한 방향으로만라디오, 키보드반이중(Half-Duplex)양방향이되 교대로무전기, 허브전이중(Full-Duplex)동시 송수신전화, 스위치 반이중과 전이중의 차이가 허브와 스위치의 차이로 이어졌다. 허브는 교대로만 통신해 충돌이 생기고, 스위치는 양방향 동..

[C++] 02. 조건문과 반복문

조건에 따라 흐름을 나누고(조건문) 같은 일을 반복하는(반복문) 제어 구조는 C++에서도 핵심이다. 문법 자체는 C와 거의 같아서, C를 다뤄봤다면 빠르게 넘어갈 수 있다. 오늘은 핵심 문법을 정리하고, C++만의 편의 기능을 덧붙였다.1. 조건문if / else if / elseif (조건) { ...} else if (조건2) { ...} else { ...} 위에서부터 검사해 처음 참이 되는 가지만 실행한다. 점수로 학점 매기듯, 조건이 겹치지 않게 범위를 나눠 배치하는 것이 요령이다.switch ~ case하나의 변수를 여러 특정 값과 비교할 때 쓴다.switch (변수) { case 1: ...; break; case 2: ...; break; default: ...

language/c++ 2026.07.21

[C언어] 03. 수식과 연산자

프로그램이 하는 일의 대부분은 값을 계산하고 비교하고 조합하는 것이다. 이 모든 연산을 담당하는 것이 연산자다. 오늘은 산술·증감·관계·논리 연산자부터, 내가 자주 헷갈린 형변환과 연산 우선순위까지 정리했다.1. 산술 연산자기본 사칙연산과 나머지 연산이 있다.연산자의미예 (a=7, b=2)+덧셈a + b → 9-뺄셈a - b → 5*곱셈a * b → 14/나눗셈a / b → 3 (정수 나눗셈)%나머지a % b → 1 정수끼리의 나눗셈은 소수점이 버려진다7 / 2 는 3.5가 아니라 3이다. 정수끼리 계산하면 결과도 정수가 되어 소수 이하가 잘리기 때문이다. 실수 결과가 필요하면 한쪽을 실수로 만들어야 한다(7.0 / 2 → 3.5). 이 함정은 뒤의 형변환에서 다시 다룬다.2. 증감 연산자++, --는 ..

language/c 2026.07.20

[Ubuntu] 06. 홈 서버 운영 - MSSQL 자동 백업과 복구 테스트

자동 배포까지 끝나고 나니 다음으로 신경 쓰인 것은 DB였다.앱은 GitHub에 코드가 있고 Docker 이미지로 다시 만들 수 있다. 하지만 DB 데이터는 한 번 날아가면 코드처럼 다시 clone할 수 없다.이전에는 테스트 배포 단계라 DB를 지우고 다시 만들어도 괜찮았다. 하지만 실제 데이터가 쌓이기 시작하면 그런 식으로 작업하면 안 된다. 그래서 이번에는 MSSQL 백업과 복구 과정을 먼저 정리했다.오늘 목표오늘 목표는 네 가지였다.MSSQL 수동 백업 성공 ↓백업 파일을 호스트 서버에 저장 ↓자동 백업 스크립트 작성 ↓백업 파일로 실제 복구 테스트백업 파일이 생기는 것만 확인하고 끝내고 싶지는 않았다. 실제로 복구까지 해봐야 안심할 수 있다고 생각했다.현재 MSSQL 구조MSSQL..

study/server 2026.07.20

[운영체제] 02. 프로세스 개념과 상태 전이

오늘은 운영체제에서 자주 듣는 단어인 프로세스를 정리했다. 처음엔 "프로그램이랑 프로세스가 뭐가 다르지? 그냥 실행 중인 프로그램 아닌가?" 정도로만 알고 있었는데, 운영체제가 한정된 CPU(Central Processing Unit, 중앙처리장치)를 누구한테 줄지 결정하는 그 "누구"가 바로 프로세스다. 이 개념을 대충 알고 넘어가면 뒤에 나오는 스케줄링이나 동기화가 전부 흐릿해진다.이번 글에서는 내가 짠 코드 한 덩어리가 어떻게 실행 가능한 형태로 메모리에 올라가는지, 일단 올라간 뒤에는 어떤 상태들을 오가며 CPU를 받았다 뺏겼다 하는지를 따라가며 정리했다.1. 시스템 소프트웨어 (번역·연결·적재)내가 작성한 소스 코드는 그 자체로는 CPU한테 한 글자도 의미가 없다. 이 부분이 처음엔 잘 와닿지 ..

computer_science/os 2026.07.19

[알고리즘] 02. 순서도와 Raptor 기초

알고리즘을 코드로 짜기 전에, 처리 흐름을 그림으로 그려보면 논리가 한결 명확해진다. 그 그림이 순서도(Flowchart)다. 오늘은 순서도 기호와, 순서도를 직접 실행해볼 수 있는 도구 Raptor의 동작 규칙을 정리했다.1. 순서도란?순서도(Flowchart)일의 처리 과정을 순서대로 기호와 도형으로 도식화한 것이다. Raptor는 이 순서도를 그려서 바로 실행해볼 수 있는 교육용 프로그래밍 도구다. 기호의미타원시작(Start) / 종료(End)평행사변형입력(INPUT) / 출력(OUTPUT)직사각형처리·대입(assignment)마름모판단(조건/선택) 이 기호들의 조합으로, 알고리즘의 세 기본 구조인 순차·선택·반복을 모두 표현할 수 있다.순차구조: 명령을 주어진 순서대로 실행선택구조: 조건에 따라 ..

[Blazor Web App] 06. 로그인 흐름 확장하기 - 페이지 이동, 회원 페이지, 기본 템플릿 정리

지난 글에서는 로그인 폼의 구조를 정리했다.처음에는 Home.razor 안에서 아이디와 비밀번호를 직접 검사했는데, 이후 LoginRequest, LoginResult, LoginService를 만들면서 입력 데이터와 처리 결과, 로그인 검증 로직을 분리했다.현재 로그인 흐름은 대략 이런 구조가 됐다. Home.razor→ LoginRequest에 입력값 저장→ LoginService.Login(loginRequest) 호출→ LoginResult 반환→ 성공 또는 실패 결과 표시이번에는 여기서 한 단계 더 나아가서, 로그인 성공 후 다른 페이지로 이동하는 흐름을 만들었다.또 로그인 후 이동한 Member.razor 페이지에서 @if, bool, @onclick을 다시 연습했고, 마지막으로 Blazor ..

language/blazor 2026.07.17

[자료구조] 02. 선형 리스트 (배열)

선형 리스트는 원소들이 순서를 가지고 1:1 관계로 나열된 자료구조다. 배열로 구현한 선형 리스트는 메모리에 원소가 연속으로 저장되므로 인덱스 접근이 빠르다.1. 배열 리스트의 특징항목내용저장 방식연속된 메모리 공간에 저장접근iArray[iIndex]로 O(1) 접근삽입삽입 위치 뒤쪽 원소들을 한 칸씩 뒤로 이동삭제삭제 위치 뒤쪽 원소들을 한 칸씩 앞으로 이동단점크기를 미리 정해야 하고 중간 삽입/삭제가 느림 배열 리스트의 핵심은 논리적 순서와 물리적 저장 순서가 같다는 점이다. 그래서 0번, 1번, 2번처럼 바로 접근할 수 있지만, 중간에 값을 넣거나 빼면 뒤쪽 원소들이 움직여야 한다.2. 삽입 연산예를 들어 {10, 20, 30, 40}의 1번 위치에 15를 넣으려면, 기존 20, 30, 40을 오른..

[데이터베이스실습] 03. SELECT - WHERE 조건

SELECT가 데이터를 꺼내는 명령이라면, WHERE는 그중 원하는 행만 걸러내는 조건이다. 실무 쿼리의 난이도는 사실상 이 WHERE 절을 얼마나 정확히 쓰느냐에 달려 있다고 한다.이번엔 비교·논리 연산자부터 IN·BETWEEN·LIKE, 그리고 내가 가장 많이 헤맨 NULL 처리까지, 조건을 거는 도구들을 예제와 함께 익혔다.1. WHERE 절SELECT [열] FROM [테이블] WHERE [조건식];조건식이 참(TRUE)인 행만 결과에 포함된다.SELECT * FROM EMP WHERE DEPTNO = 30; -- 30번 부서 사원만SELECT * FROM EMP WHERE SAL >= 3000; -- 급여 3000 이상문자열은 작은따옴표, 대소문자 구분문자 데이터는 반드시 작은따옴표로 감..

data/oracle 2026.07.16

Semantic Versioning, SemVer - 소프트웨어 버전 표기 방식

소프트웨어에서 1.2.3과 같이 세 개의 숫자로 버전을 표시하는 방식을 유의적 버전 명세(Semantic Versioning)라고 한다. 일반적으로 줄여서 SemVer라고 부른다. SemVer는 소프트웨어와 라이브러리에서 널리 사용되는 버전 관리 규칙이다. 각 숫자는 왼쪽부터 Major, Minor, Patch를 의미한다.[ Major ] . [ Minor ] . [ Patch ] 1 2 3 처음에는 단순히 업데이트 횟수에 따라 숫자를 올리는 방식이라고 생각했다. 하지만 SemVer의 핵심은 변경된 코드의 양이 아니라, 이전 버전과의 호환성이 유지되는가에 있다.각 자리의 의미와 업데이트 기준첫 번째 자리: Major 버전Major 버전은 기존 버전과의 하위 호환..

study/memo 2026.07.16