전체 글 56

[컴퓨터구조] 02. 데이터의 표현

컴퓨터는 0과 1만 안다. 그렇다면 음수, 소수, 한글은 어떻게 표현할까? 오늘은 정수(2의 보수), 실수(부동소수점), 문자(ASCII·유니코드)가 비트로 어떻게 표현되는지, 그리고 오류를 어떻게 잡아내는지를 정리했다.1. 자료 표현 단위단위크기비트(bit)0 또는 1바이트(byte)8비트워드(word)CPU가 한 번에 처리하는 비트 묶음 표현 대상에 따라 방식이 다르다. 정수는 2의 보수, 실수는 부동소수점(IEEE 754), 문자는 ASCII·유니코드를 쓴다.2. 음수 표현: 2의 보수음수를 표현하는 방식은 여러 가지지만, 실제 컴퓨터는 2의 보수를 쓴다. 최상위 비트(MSB, Most Significant Bit)가 부호를 나타낸다(0은 양수, 1은 음수). 방식특징부호-크기MSB가 부호, 나머지..

[Blazor Web App] 02. 첫 로그인 폼 만들기 - @bind, @onclick, 입력 검증, CSS 분리, 모델 바인딩까지

오늘 작업 목표이번에는 Blazor 기본 페이지인 Home.razor를 직접 수정하면서 간단한 로그인 폼을 만들었다.실제 로그인 기능을 완성한 것은 아니다. 아직 DB도 붙이지 않았고, 서버 인증도 하지 않았다. 오늘 한 작업은 로그인 화면에서 가장 앞단에 해당하는 부분이다.아이디 입력↓비밀번호 입력↓로그인 버튼 클릭↓입력값 검증↓성공 / 오류 메시지 출력↓입력값을 LoginRequest 클래스로 묶기 처음에는 그냥 변수 두 개를 만들고 입력값을 받으면 된다고 생각했다. 그런데 조금만 진행해도 아이디, 비밀번호, 메시지, CSS class 같은 값들이 한 파일에 계속 늘어났다.그래서 이번 글에서는 아주 작은 로그인 폼을 만들면서도, 나중에 실제 로그인 처리로 확장하기 좋게 입력값을 클래스로 묶는 데까지 ..

language/blazor 2026.07.07

[인터넷보안] 02. 시스템 보안

시스템 보안은 운영체제와 그 위에서 도는 프로그램, 그리고 자원에 접근하는 사용자들을 지키는 일이다. "누가 들어오는가(인증), 무엇을 할 수 있는가(권한), 무슨 일이 있었는가(로그)"라는 흐름이 그 뼈대다. 오늘은 계정·세션·접근 제어·권한·로그 관리, 그리고 모바일 보안까지 정리했다.1. 계정 관리: 식별과 인증보안의 출발점은 "이 사용자가 정말 그 사람인가"를 확인하는 인증이다. 인증 수단은 크게 네 가지로 나뉜다.방법예알고 있는 것패스워드가지고 있는 것신분증, OTP자신의 모습지문·홍채 등 생체 정보위치하는 곳접속 위치 확인, 콜백 다중 인증(MFA)이 강한 이유한 가지 수단은 뚫리면 끝이다. 패스워드(아는 것)는 유출될 수 있고, 휴대폰(가진 것)은 도난당할 수 있다. 그래서 서로 다른 범주의..

용어 메모 - Concurrency Control

Concurrency Control (동시성 제어)여러 트랜잭션이 동시에 데이터에 접근할 때 데이터의 일관성을 유지하는 기법 목적데이터 무결성 유지트랜잭션 간 충돌 방지데이터베이스 일관성 보장발생 가능한 문제Lost Update두 트랜잭션이 같은 데이터를 수정하여 한쪽 결과가 사라짐T1 : A = A + 100T2 : A = A - 50 최종 결과가 잘못될 수 있음.Dirty Read아직 Commit되지 않은 데이터를 읽음T1 : UPDATET2 : READT1 : ROLLBACK T2는 잘못된 데이터를 읽게 됨.Non-Repeatable Read같은 데이터를 두 번 읽었는데 값이 달라짐T1 : SELECTT2 : UPDATE + COMMITT1 : SELECT 대표 기법Locking데이터 사용 전에 잠..

study/memo 2026.07.06

[알고리즘] 01. 알고리즘 개요와 복잡도

같은 문제를 푸는 방법은 여러 가지고, 그중에는 빠른 것도 느린 것도 있다. 알고리즘은 "문제를 푸는 절차"를 다루고, 그 절차가 얼마나 효율적인지를 따지는 게 복잡도다. 오늘은 알고리즘이 갖춰야 할 조건부터 성능을 재는 빅오 표기법까지, 알고리즘 공부의 토대를 잡았다.1. 알고리즘의 정의와 요건알고리즘(Algorithm)어떤 문제를 해결하기 위한 일련의 순서(명령어의 나열)다. 가장 오래된 알고리즘으로는 기원전 300년경 유클리드의 최대공약수 알고리즘이 꼽힌다. 알고리즘이라 부르려면 다음 다섯 조건을 갖춰야 한다.요건설명입력(Input)0개 이상의 외부 입력출력(Output)1개 이상의 출력정확성주어진 입력에 대해 올바른 해를 냄유한성일정 시간 안에 반드시 종료수행성모든 명령이 실제로 실행 가능 입력은..

[Blazor Web App] 01. 시작하기 - 프로젝트 생성부터 첫 화면이 출력되는 과정 이해하기

오늘 작업 목표오늘은 Blazor로 웹 프로젝트를 처음 만들면서, 프로젝트가 실행되고 첫 화면이 브라우저에 출력되기까지의 흐름을 정리했다.아직 로그인, 데이터베이스, 외부 API, Android WebView 연결까지 들어가지는 않았다.이번 글의 목표는 딱 여기까지다. 처음에는 단순히 "웹 프로젝트 하나 만들면 되겠지"라고 생각했는데, 막상 Blazor 프로젝트를 만들려고 보니 선택지가 생각보다 많았다.특히 아래 용어들이 처음부터 헷갈렸다.Blazor Web AppBlazor ServerBlazor WebAssemblyInteractive Server대화형 위치 - Global 이 부분을 모른 채로 넘어가면 나중에 프로젝트 구조를 이해하기 힘들 것 같아서, 이번에는 코드 작성보다 실행 흐름을 먼저 잡는 ..

language/blazor 2026.07.05

[데이터베이스실습] 02. 테이블 기초와 SELECT

오늘부터 실제로 데이터를 꺼내봤다. SQL에서 데이터 조회를 담당하는 명령은 SELECT 하나인데, 이 한 명령어에 붙는 절(clause)들의 조합으로 거의 모든 조회가 이뤄진다.이번엔 실습 환경(SCOTT 계정)을 살펴보고, SELECT의 기본형부터 중복 제거·연산·별칭·정렬까지 손으로 따라가 봤다. 앞으로의 모든 실습이 이 SELECT 위에 쌓이니, 여기서 감을 확실히 잡아두는 게 좋겠다 싶었다.1. 실습용 계정과 테이블실습 환경DBMS → Oracle 11g Enterprise Edition실습 계정 → ID: SCOTT / PW: tigerDBeaver나 SQL*Plus로 접속해 DESC 테이블명; 으로 테이블 구조를 확인할 수 있다. SCOTT 계정에는 오라클 학습에서 수십 년간 표준으로 쓰여 ..

data/oracle 2026.07.05

[Ubuntu] 04. 홈 서버 배포 - EF Core Migration과 MSSQL 문제 해결

지난 글에서는 ASP.NET Core 게임 서버를 Ubuntu 홈 서버에 올리고, Nginx와 Cloudflare를 통해 으로 접속되도록 만드는 과정까지 정리했다.이번 글은 그 과정에서 따로 발생한 DB 관련 문제를 정리하려고 한다.처음에는 Docker 컨테이너만 잘 뜨면 앱이 바로 실행될 줄 알았다. 그런데 실제로는 방치되어있던 프로젝트를 그대로 가져오는 바람에 실제 애플리케이션이 실행되려면 DB 연결과 스키마 생성을 문제가 발생하고 나서야 해결해나갔다. 여기서 MSSQL 연결 문자열 문제, EF Core Migration 순서 문제, SQL Server의 외래키 제약 조건 문제가 이어졌다.처음에는 “서버에 앱만 올리면 되겠지” 정도로 생각했는데, 실제로는 애플리케이션 코드와 DB 스키마가 운영 환경에..

study/server 2026.07.04

[자료구조] 01. 자료구조 개요와 분류

자료구조는 데이터를 아무렇게나 저장하는 방법이 아니라, 처리 목적에 맞게 데이터를 배치하고 관리하는 방식이다. 같은 데이터라도 어떤 구조에 넣느냐에 따라 탐색, 삽입, 삭제의 비용이 달라진다.이 과목에서는 어려운 용어를 앞세우기보다, 다음 흐름으로 보는 편이 이해하기 쉽다.이 구조가 어떤 상황에 필요한지 본다.C언어로 내부 동작을 직접 구현한다.C++에서는 같은 구조를 직접 구현하거나 STL로 어떻게 쓰는지 비교한다.1. 자료구조의 기본 분류분류관계대표 구조단순 구조하나의 값정수, 실수, 문자선형 구조1:1 관계배열, 연결 리스트, 스택, 큐비선형 구조1:N 또는 N:M 관계트리, 그래프파일 구조보조기억장치 저장순차 파일, 색인 파일 선형 구조는 데이터가 한 줄로 이어지는 구조다. 배열과 연결 리스트는 ..

[정보통신개론] 01. 정보통신과 네트워크 기초

네트워크를 공부하기 전에, "통신"이라는 말부터 정확히 짚고 넘어갈 필요가 있다. 단순히 신호를 보내는 것과, 목적지를 찾아 데이터를 전달하는 것은 다르다. 이 글에서는 정보통신의 개념, 네트워크의 분류, 그리고 통신을 떠받치는 프로토콜과 계층화의 아이디어를 정리한다.1. 전기통신과 정보통신전기통신 vs 정보통신전기통신(Telecommunication): 신호(아날로그/디지털)를 그대로 전기 신호로 바꿔 전송한다. 단순한 신호 전달이다.정보통신(Data Communication): 신호에 목적지까지 갈 수 있는 정보(주소·제어 정보)를 덧붙여 전송한다. 시스템 간의 통신이다. 핵심 구분은 "주소와 제어 정보가 붙느냐"다. 단순히 음성을 전기 신호로 바꿔 보내는 것은 전기통신이고, 데이터에 주소를 붙여 특..