language 26

[Blazor Web App] 11. 로그인 데이터 분리하기 - UserAccount와 TestUserRepository 만들기

지난 작업에서는 로그인에 성공했을 때 사용자 정보를 UserInfo에 담아 LoginResult로 반환하도록 구조를 정리했다.로그인 상태를 보관하는 LoginStateService는 사용자 정보를 직접 만들지 않고, LoginService가 만들어준 결과를 저장만 하도록 바꿨다.구조가 조금씩 정리되고 있었지만, LoginService를 다시 보니 아직 테스트 사용자 정보가 직접 들어 있었다.private readonly string testUserId = "sample-admin";private readonly string testPassword = "1111";로그인에 성공했을 때 표시할 사용자 이름과 등급도 LoginService 안에서 직접 만들고 있었다.userInfo.UserId = loginR..

language/blazor 14:22:11

[Blazor Web App] 10. UserInfo 생성 책임을 LoginService로 옮기기

지난 작업에서는 UserInfo 모델을 만들고, 로그인한 사용자 정보를 LoginStateService에 저장하도록 바꿨다.처음에는 이 구조도 괜찮아 보였다.LoginStateService ├─ IsLoggedIn ├─ CurrentUser └─ StatusMessage그리고 로그인 성공 시 LoginStateService.Login(userId) 안에서 임시 사용자 정보를 만들었다.public void Login(string userId){ UserInfo userInfo; userInfo = new UserInfo(); userInfo.UserId = userId; userInfo.UserName = "테스트 사용자"; userInfo.UserGrade = "테스트 회원";..

language/blazor 2026.08.07

[C언어] 05. 반복문

같은 작업을 여러 번 해야 할 때, 코드를 여러 번 복사하는 대신 반복문을 쓴다. "1부터 100까지 더하기"를 덧셈 100줄로 쓰지 않고 몇 줄로 끝내는 것이다. C의 반복문에는 while, do~while, for 세 가지가 있다. 종류특징while조건이 참인 동안 반복 (반복 횟수를 모를 때)do ~ while일단 한 번 실행한 뒤 조건 검사 (최소 1회 보장)for정해진 횟수만큼 반복1. while 문조건이 참인 동안 중괄호 안을 반복한다. 조건을 먼저 검사하므로, 처음부터 거짓이면 한 번도 실행되지 않는다(0번 이상).while (조건) { 수행 문장;} 반복 횟수를 미리 알 수 없을 때(예: "0이 입력될 때까지") 적합하다.int n;while (1) { /..

language/c 2026.08.03

[인터넷활용] 02. CSS 스타일링

HTML이 문서의 뼈대라면, CSS는 그 위에 입히는 옷이다. 색·크기·여백·배치 같은 시각적 표현을 모두 CSS가 담당한다. 오늘은 CSS를 적용하는 방법, 어떤 요소를 꾸밀지 고르는 선택자, 그리고 자주 쓰는 속성을 정리했다.1. CSS를 적용하는 세 가지 방법CSS는 HTML에 세 가지 방식으로 연결할 수 있다. 방법작성 위치예인라인태그 안 style 속성내부의 외부별도 .css 파일 연결 기본 문법은 "어떤 요소를(선택자) 어떻게(속성: 값)" 꾸밀지 적는 구조다. 선택자 { 속성: 값; 속성: 값; }body { font-family: Arial; background-color: #f4f4f4; padding: 20px; } 실무에선 외부 CSS를 쓴다인라인은 간편하지만 태그마다 스타일이 흩어져..

language/html 2026.08.02

[Blazor Web App] 09. CSS 구조 정리하기 - app.css와 .razor.css 역할 나누기

앞에서 로그인 화면과 회원 페이지를 만들면서 CSS도 같이 작성했다.처음에는 페이지가 하나뿐이라 Home.razor.css에 필요한 스타일을 전부 넣어도 괜찮았다.그런데 Member.razor가 생기고, 버튼이나 페이지 박스 스타일이 비슷하게 반복되기 시작했다.예를 들어 Home.razor.css에는 로그인 버튼 스타일이 있었다..login-button { padding: 10px 16px; border: 1px solid #333; border-radius: 4px; cursor: pointer;}Member.razor.css에도 비슷한 버튼 스타일이 필요했다..login-button { margin-top: 16px; padding: 10px 16px; borde..

language/blazor 2026.07.31

[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