Project 24

Nginx로 https 리버스 프록시 설정

Nginx 란..? NGINX는 웹 서버, 역방향 프록시, 캐싱, 부하 분산, 미디어 스트리밍 등을 위한 오픈 소스 소프트웨어. 이는 HTTP 서버 기능 외에도 이메일(IMAP, POP3, SMTP) 프록시, HTTP, TCP, UDP 서버의 역방향 프록시 및 부하 분산 장치 역할도 수행가능비동기 이벤트 기반 아키텍처 사용 → 높은 성능과 적은 리소스 소비💡 Nginx는 어디에 쓰이나요? ✅ 정적 웹 서버HTML, CSS, JS 같은 파일을 빠르게 클라이언트에게 전달✅ 리버스 프록시 서버클라이언트 요청을 백엔드 서버(Apache, Node.js 등)로 전달보안, 로드 분산, 캐싱 등의 효과✅ 로드 밸런서여러 서버에 요청을 분산시켜 트래픽 부하를 줄임Round Robin, Least Connection..

Project 2025.05.12

SuperStruct

왜 Superstruct 를 사용할까?node.js + express 환경 → express는 입력 데이터 검증을 안해줌node.js+express는 서버 환경이고, 대부분의 요청은 외부 클라이언트로 부터 옴 = 이 데이터는 믿을 수 없음              ex) email 자리에 숫자 넣기, users POST요청에서 body에 이름이 빠져있는 등..typescript → 런타임 검증을 못함 (컴파일 타임에만 체크)→ 실제 api 요청으로 무엇이 들어올 지 모름Superstruct : 런타임에서 들어오는 데이터를 구조화 (structrue)해서 유효성 검사할 수 있게 해주는 라이브러리 = 런타임 스키마 검증 도구데이터가 기대한 타입인지필수 필드가 빠지지 않았는지값의 길이나 범위가 적절한지중첩된 구..

Project 2025.04.04

요기약(4)

원래 huggingface에서 API 요청을 해서 데이터를 받아오는 식으로 모델과 연결을 수행하려했지만, 모델의 JSON응답을 받아오는 과정에서 계속 문제가 발생하여 ngrok을 이용해서 모델과 연결하는 방식을 선택하였다 Ngrok로컬 개발 환경에서 인터넷을 통해 웹 애플리케이션에 안전하게 접근할 수 있도록 해주는 도구 연결 방법 로컬 서버 실행: 모델을 로컬 환경에서 실행하고 이를 웹 서버로 감쌉니다 (예: Flask나 FastAPI로 REST API 구현).ngrok으로 터널링: ngrok을 사용해 로컬 서버에 대한 임시 공용 URL을 생성합니다.외부 시스템에서 요청: 생성된 ngrok URL을 통해 외부 시스템이 로컬 서버에 요청을 보냅니다 원래 함수 -> 서버가 먼저 시작되고 ngrok 생성 안되..

Project 2025.02.18

Redis

Redis를 Windows에서 서비스로 실행하면, 백그라운드에서 자동으로 실행됨. 이는 Redis가 Windows에서 daemonize 없이도 백그라운드에서 실행되도록 함.1. 서비스로 설치하기:Redis의 redis.windows.conf 파일이 있는 디렉터리로 이동**명령 프롬프트 (Administrator 권한)**을 열고 다음 명령어를 실행하여 Redis를 서비스로 설치redis-server --service-install redis.windows.conf2. 서비스 시작하기:Redis 서비스를 시작하려면 아래 명령어를 입력:redis-server --service-start3. 서비스 중지하기:Redis 서비스를 중지하려면 아래 명령어를 입력:redis-server --service-stop 4..

Project 2025.02.06

Garden(2)

async function name(params){} VS const name = async(params) => {} 함수 선언문 방식은 this가 호출 방식에 따라서 값이 바뀌지만, 화살표 함수는 this를 바꾸지 않고, 항상 외부 this를 유지하기 때문에 obj.method()로 호출해도 this가 obj를 가리키지 않음 ##this를 변경해야 하는 경우(객체의 메서드) 는 함수 선언문 방식 사용, this를 유지해야하는 경우(이벤트 핸들러, 콜백함수 등) 화살표 함수 사용→ "객체 안에서는 async function을 쓰고, 나머지는 async () => {}를 쓰면 된다!"만일 autoincrement를 사용하는데 목데이터를 새로 생성할때마다 1부터 다시 만들고 싶다면, 시퀀스를 초기..

Project 2025.02.01