본문 바로가기
반응형

프로그래밍529

C# 환경변수로 appsettings.json 값 덮어쓰기 중첩된 키(nested keys)란?중첩된 키란 appsettings.json 같은 설정 파일에서 하위 계층 구조를 갖는 설정 값들을 의미한다. 즉, JSON의 객체 안에 또 다른 객체가 있는 경우를 말한다. 예시를 살펴보자. 다음과 같은 appsettings.json이 있다고 해보자.{ "AppSettings": { "Api": { "BaseUrl": "https://api.example.com", "ApiKey": "secret-key" } }}이 구조는 계층적으로 중첩(nested) 되어 있음AppSettings  최상위 키AppSettings:Api 중첩된 객체AppSettings:Api:BaseUrl 최종 키JSON 구조 환경 변수 키.NET은 구분자 :을 __.. 2025. 4. 12.
HTTP Header에는 한글이 포함될 수 없다! Header로 데이터 보내기 HTTP Header로 데이터를 보내보자HTTP 헤더를 통해서 클라이언트는 서버에 각종 데이터를 전송할 수 있다. 하지만 HTTP 헤더는 전송 규약의 일부이기 때문에 ASCII 기반의 매우 엄격한 형식을 따른다.공식 규격: RFC 7230 - HTTP/1.1 메시지 형식Header-Name: Header ValueHeader-Name: ASCII 문자, 숫자, 하이픈(-)만 가능Header-Value: ASCII의 visible character (0x20~0x7E)만 사용 가능📌 HTTP Header에 포함될수 없는 문자들제어 문자(\n, \r, \t, \0 등) : ASCII 코드 0~31 및 127유니코드 문자(한글, 이모지 등) : ASCII 외의 확장 문자공백 (헤더 값 중간은 가능, 키는 안.. 2025. 4. 12.
로커스트(Locust) @task vs tasks 비교해보자 @task 데코레이터(decorator)특정 메서드를 부하 테스트용 task로 지정User 클래스 또는 HttpUser 클래스의 메서드 위에 붙인다. (C# Attribute와 같은 개념)기본적으로 @task는 가중치(weight) 1을 갖고, @task(3) 이런 식으로 가중치를 추가할 수 있다. (3이면 3배 더 자주 호출)from locust import HttpUser, taskclass MyUser(HttpUser): @task def visit_homepage(self): self.client.get("/") @task(3) def visit_dashboard(self): self.client.get("/dashboard")tasks 속성(.. 2025. 4. 9.
토큰으로 검증하자! JWT(JSON 웹 토큰) JWT(JSON Web Token)란?JWT(JSON Web Token)는 사용자 인증 정보를 JSON 형식의 토큰으로 표현하고, 이를 디지털 서명을 통해 안전하게 전달하는 방식이다."서버가 인증을 거친 사용자에게 발급해 주는, 변조 불가능한 정보 뭉치"클라이언트는 이 토큰을 보관하고, 이후 요청할 때마다 헤더에 포함시켜 다시 인증받지 않고도 서비스를 이용할 수 있다.즉, 한번 인증받으면 인증 상태가 유지된다.사용자 인증 정보를 기록하고 있는 토큰이라고 생각하면 이해하기 편하다. 추가적으로 JWT의 탄생배경에 대해서 알아보자.  이를 위해서는 우선 Cookie와 Session에 대해서 알아야 할 필요가 있다.🍪 쿠키(Cookie)쿠키는 '클라이언트(웹 브라우저)에 저장되는 작은 데이터 조각'을 말한다... 2025. 4. 7.
일단 호출하고 보자! 덕 타이핑(Duck Typing)이란? 🦆 Duck Typing이란?"If it walks like a duck and quacks like a duck, it must be a duck."("걷는 모습이 오리 같고 오리처럼 꽥꽥거리는 소리를 낸다면, 그건 오리야!")동적 타이핑의 한 종류로, 객체의 변수 및 메서드를 호출하는 시점에서 해당 객체의 타입을 결정하는 방식즉, 객체의 실제 타입(type)을 따지지 않고, 그 객체가 어떤 행동을 할 수 있는지만을 보고 판단객체의 형식(interface)보다 행동(behavior)을 중시한다.Python 예제 코드class Duck: def quack(self): print("Quack!")class Person: def quack(self): print("I'm.. 2025. 4. 4.
Python 코드로 테스트 가능한 로커스트(Locust) 로커스트(Locust)란?로커스트(Locust)는 웹 애플리케이션, API, 웹소켓 등의 부하 테스트(Load Testing) 및 성능 테스트(Performance Testing)를 위해 많이 사용되는 오픈소스 툴이다. Python으로 작성되어 있으며, 테스트 시나리오도 Python 코드로 작성할 수 있어서 유연성과 확장성이 뛰어나다. 오픈소스이기 때문에 깃허브에서 코드를 확인할 수 있다. GitHub - locustio/locust: Write scalable load tests in plain Python 🚗💨Write scalable load tests in plain Python 🚗💨. Contribute to locustio/locust development by creating an a.. 2025. 4. 3.