Project 21

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

요기약(3)

jsonify를 사용할 때 한글이 유니코드 이스케이프 시퀀스로 인코딩되는 현상은 Flask의 기본 설정 때문 Flask 애플리케이션 설정 변경:애플리케이션 설정에서 JSON_AS_ASCII 값을 False로 설정합니다app.config['JSON_AS_ASCII'] = FalseFastAPI는 OpenAPI 스펙을 기반으로 문서를 자동 생성하며, 기본적으로 swagger를 제공URL: http://localhost:8000/docsAPI를 테스트하고 직접 요청을 보낼 수 있음FastAPI 서버를 구축해서 실행시킬 때는 만일 fastAPI 서버 코드가 폴더 안에 있다면 그 폴더에 __init__.py 파일을 생성해줘야됨이후, 터미널에서uvicorn utils.model_connection:app --hos..

Project 2025.01.27

Garden(1) - xml파싱

XMLXML(eXtensible Markup Language)은 데이터를 저장, 전달, 교환하기 위한 마크업 언어. XML은 HTML과 비슷하지만, 미리 정의된 태그가 없어 필요에 맞게 태그를 직접 정의할 수 있다. - xml 구조 예시 Tove Jani Reminder Don't forget me this weekend!  XML 파싱XML 파싱은 XML 형식으로 작성된 데이터를 구조적으로 이해하고, 사용할 수 있는 객체로 변환하는 과정XML 파싱 중, API 응답이 XML 형식을 따르지 않을 경우 오류가 발생함- 위의 구조를 객체 형태로 변환하는 것이 파싱의 목표{ "note": { "to": "Tove", "from": "Jani", "heading": "Reminder",..

Project 2025.01.25

Currex

카카오 로그인에 이어 구글 로그인을 해보게 되었다... 둘 다 인증토큰을 받고 사용자 정보를 요청하는 방식으로 작동구글 로그인에서... state 파라미터: 보안 강화를 위해서 state 파라미터를 추가하는 것이 좋음구글 로그인의 state 파라미터는 인증 프로토콜에서 애플리케이션의 이전 상태를 복원하기 위해 사용하는 문자열 값인증 요청에서 설정한 state 객체를 응답에서 사용할 수 있도록 함 state 파라미터는: CSRF 공격을 방지하기 위해 사용됨보안적인 관점에서 권장됨응답과 함께 다시 전송됨state 파라미터를 사용하는 이유응답에서 오는 값이 보낸 값과 일치하는지 확인하여 공격을 방지 가능일치하지 않는 state 응답을 수신한 경우 공격의 대상임을 유추 가능state 파라미터를 사용하는 방법. ..

Project 2025.01.22