language 41

[Blazor Web App] 08. Razor 컴포넌트 이해하기 - OnInitialized, override, protected, @code 실행 순서

지난 작업에서는 LoginStateService를 만들어서 로그인 상태를 관리했다.로그인 성공 시에는 상태를 저장하고, /member 페이지에서는 로그인 상태를 확인했다.Home.razor→ LoginStateService.Login(userId)Member.razor→ LoginStateService.IsLoggedIn 확인이 과정에서 Member.razor에 이런 코드를 작성했다.protected override void OnInitialized(){ if (LoginStateService.IsLoggedIn == false) { NavigationManager.NavigateTo("/"); return; }}처음에는 그냥 “페이지가 열릴 때 실행되는 함수인가..

language/blazor 2026.07.28

[C언어] 04. 조건문

지금까지의 프로그램은 위에서 아래로 한 줄씩 차례대로 실행됐다. 하지만 실제 프로그램은 "조건에 따라 다르게" 동작해야 한다. 이렇게 실행 흐름을 바꾸는 문장을 제어문이라 하고, 그중 조건에 따라 갈래를 나누는 것이 조건문이다.0. 제어 구조의 세 가지 형태 구조설명순차 구조위에서 아래로 차례대로 실행선택 구조조건에 따라 실행할 문장을 선택 (조건문)반복 구조조건이 참인 동안 문장을 반복 (반복문) 모든 프로그램은 이 세 구조의 조합으로 만들어진다. 이 글에서 다루는 건 가운데의 선택 구조다.1. if 문if는 조건식이 참일 때만 중괄호 안의 문장을 실행한다.if (조건식) { 조건이 참일 때 수행할 문장;} int iNo = 10;if (iNo > 0) { printf("양수입니다.\n");..

language/c 2026.07.27

[자바프로그래밍] 03. 조건문 (if·switch)

조건에 따라 실행 흐름을 나누는 조건문은 자바에서도 if와 switch 두 가지다. 기본 문법은 C와 거의 같지만, 자바의 switch는 문자열 비교가 된다는 결정적 차이가 있다.1. if 문// if ~ elseif (score >= 90) System.out.println("합격");else System.out.println("불합격");조건이 참이면 if 블록을, 거짓이면 else 블록을 실행한다. 자바는 boolean만 조건으로 받으므로, if (n)처럼 정수를 바로 조건에 넣을 수 없고 반드시 if (n != 0)처럼 비교식을 써야 한다. C에서 정수를 그대로 조건에 넣던 습관이 자바에선 막혀서, 처음엔 답답했지만 의도가 분명해지는 효과가 있었다.여러 조건을 순서대로 검사할 땐 els..

language/java 2026.07.26

[Blazor Web App] 07. 로그인 상태를 서비스로 관리하기 - 직접 URL 접근 막기와 로그아웃 메시지

지난번에는 로그인 성공 후 /member 페이지로 이동하는 흐름을 만들었다.로그인 성공 시에는 NavigationManager를 사용해서 회원 페이지로 이동하게 했다.NavigationManager.NavigateTo("/member");그리고 Member.razor에는 로그아웃 버튼도 추가했다.private void Logout(){ NavigationManager.NavigateTo("/");}겉으로 보기에는 로그인과 로그아웃 흐름이 어느 정도 만들어진 것처럼 보였다. / 접속→ 로그인로그인 성공→ /member 이동로그아웃→ / 이동그런데 테스트를 하다 보니 바로 어색한 부분이 보였다.주소창에 직접 /member를 입력하면 로그인하지 않아도 회원 페이지에 들어갈 수 있었다./member 직접 ..

language/blazor 2026.07.22

[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

[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

[Blazor Web App] 05. Blazor에서는 Controller를 왜 잘 사용하지 않을까

Blazor로 로그인 화면을 만들면서 LoginRequest, LoginResult, LoginService를 차례대로 만들었다.처음에는 자연스럽게 이런 의문이 들었다.C# 웹 개발에서는 MVC와 Controller를 자주 이야기하는데,왜 지금 Blazor 프로젝트에서는 Controller를 거의 안 쓰고 있을까?C# 웹 개발을 공부하다 보면 MVC, Controller, Model, View 같은 개념을 자주 보게 된다.ASP.NET Core MVC에서는 Controller가 사용자의 요청을 받고, 필요한 데이터를 준비한 뒤, View를 반환하는 중요한 역할을 한다.그런데 Blazor를 공부하다 보면 구조가 조금 다르다.Blazor 프로젝트에도 Controller를 추가할 수는 있다.하지만 일반적인 화..

language/blazor 2026.07.15

[자바프로그래밍] 02. 변수·자료형·연산자

프로그램의 기본 재료인 변수와 자료형, 그리고 그것들을 다루는 연산자를 자바 기준으로 정리했다. C와 비슷한 부분이 많지만, 자바만의 규칙(기본형 8가지, boolean 엄격함, Scanner 입력 등)이 분명히 있어 그 차이에 집중했다.1. 기본 구조와 식별자자바의 모든 코드는 클래스 안에 들어가고, 실행은 main() 메서드에서 시작한다.public class Hello { public static void main(String[] args) { int i = 20; System.out.println("Hello"); System.out.println(i); // 20 }} 이름(식별자)을 짓는 규칙은 C와 비슷하다. 문자·숫자·_·$를 쓰되 숫자로..

language/java 2026.07.13

[Blazor Web App] 04. 로그인 폼 리팩토링 2 - LoginService와 DI로 로그인 로직 분리하기

지난 글에서는 로그인 입력값을 LoginRequest 모델로 묶었다.처음에는 Home.razor 안에 userId, password 변수가 따로 있었다.private string userId = "";private string password = "";이걸 아래처럼 바꿨다.private LoginRequest loginRequest = new(); 그리고 입력창도 LoginRequest 객체에 연결했다. 이제 아이디와 비밀번호는 따로 흩어진 변수가 아니라, 로그인 요청 데이터라는 하나의 묶음으로 관리된다.이번에는 여기서 한 단계 더 나아가서 Home.razor 안에 있던 로그인 검증 로직을 LoginService 클래스로 분리했다.왜 Service로 분리하려고 했나?처음에는 Home.razor 안에서 로..

language/blazor 2026.07.12