language 41

[Blazor Web App] 12. Repository에 인터페이스 적용하기 - 생성자 주입과 DI 이해하기

지난 글에서는 테스트 사용자 정보를 LoginService에서 분리해 TestUserRepository로 옮겼다.역할은 다음처럼 나뉘었다.LoginService→ 로그인 입력 검증→ 비밀번호 확인→ 로그인 결과 생성TestUserRepository→ 테스트 사용자 목록 보관→ 아이디로 사용자 검색기능은 잘 동작했지만 LoginService를 다시 보니 특정 Repository 클래스에 직접 의존하고 있었다.private readonly TestUserRepository testUserRepository;생성자도 TestUserRepository를 직접 받았다.public LoginService( TestUserRepository testUserRepository){ this.testUserRe..

language/blazor 2026.08.16

[자바프로그래밍] 05. 배열과 예외처리

오늘은 두 주제를 다뤘다. 여러 값을 묶는 배열과, 실행 중 발생하는 오류에 대응하는 예외 처리다.자바의 배열은 C와 달리 "객체"라는 점에서 차이가 있고, 예외 처리는 자바가 안정성을 위해 강조하는 기능이다.1. 배열자바 배열의 특징같은 타입의 데이터가 순차 저장된 자료구조로, 인덱스는 0부터 length-1까지다. 자바 배열은 객체이며, 자기 크기를 length라는 속성으로 알고 있다(C 배열이 자기 길이를 모르는 것과 다름).int[] data = new int[5]; // 선언 + 생성 (크기 5)int[] data = {1, 2, 3}; // 선언 + 초기화System.out.println(data.length); // 배열 크기를 length로 안다C와 다른 두 가지가 눈..

language/java 2026.08.14

[자바프로그래밍] 04. 반복문

반복문은 같은 작업을 여러 번 수행하게 한다. 자바의 for·while·do~while은 C와 거의 같지만, 자바에는 라벨(label)을 이용한 분기라는 독특한 기능이 더 있다.1. 세 가지 반복문// for: 횟수가 정해진 반복int sum = 0;for (int i = 1; i for의 초기식에서 선언한 변수(int i)는 그 반복문 안에서만 유효하다는 점이 C와 다른 깔끔한 부분이다. 반복이 끝나면 변수도 사라지니, 같은 이름을 다른 반복에서 다시 써도 충돌이 없어 편했다.조건으로 끝나는 반복은 입력을 조건식 안에 넣는 패턴을 자주 쓴다.// 0이 입력될 때까지 합산while ((n = scan.nextInt()) != 0) { sum += n; count++;}2. 분기문: break,..

language/java 2026.08.11

[C언어] 06. 함수 (Function)

프로그램이 커지면 같은 코드가 여기저기 반복되고, 전체를 한눈에 파악하기 어려워진다. 함수는 특정 기능을 하나의 덩어리로 묶어 이름을 붙인 것으로, 이 문제를 푸는 핵심 도구다. 우리가 이미 써 온 printf, scanf도 모두 함수였다.1. 함수란?함수(function)특정 작업을 수행하는 명령어들의 묶음으로, 고유한 이름을 가지며 입력(인수)을 받아 결과(반환값)를 돌려줄 수 있다.함수를 쓰면 좋은 점은 분명했다.중복 제거: 같은 코드를 반복하지 않고 한 번 정의해 여러 번 호출한다.재사용: 한 번 잘 만든 함수는 다른 프로그램에서도 쓸 수 있다.모듈화: 프로그램을 기능 단위로 나눠, 개발과 유지보수가 쉬워진다.함수는 크게 우리가 직접 만드는 사용자 정의 함수와, 표준 라이브러리가 제공하는 라이브러..

language/c 2026.08.10

[인터넷활용] 03. JavaScript 기초

HTML이 구조를, CSS가 표현을 맡는다면, 자바스크립트는 웹페이지에 동작과 논리를 불어넣는다. 버튼을 누르면 반응하고, 입력값을 계산하고, 화면을 바꾸는 일이 모두 자바스크립트의 영역이다. 오늘은 변수·자료형·연산자·제어문·함수 같은 언어의 기본기를 정리했다.1. 변수와 자료형변수를 선언하는 키워드는 세 가지이며, 각각 성격이 다르다.키워드특징var함수 스코프 (예전 방식, 지금은 권장하지 않음)let블록 스코프, 재할당 가능const블록 스코프, 재할당 불가 (상수) let name = "정주호";const PI = 3.14; 자료형은 숫자(Number), 문자열(String), 논리(Boolean), 객체(Object), 그리고 값이 없음을 나타내는 undefined와 null이 있다. 기본은 c..

language/html 2026.08.09

[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 2026.08.08

[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