분류 전체보기

    #1, LLM 이란?

    LLM이란?대규모 언어 모델 (Large Language Model)심층 신경망 모델 (Deep Neural Network)여러개의 층으로 복잡한 관계까지 학습 가능한 모델얕은 모델은 단순 규칙만 학습 가능입력 -> 특징 추출 -> 출력으로 변환하는 구조대용량의 텍스트 데이터로 훈련인터넷에 공개된 전체 텍스트의 상당 부분사람의 텍스트를이해생성응답대규모란 어떤 뜻인가?모델 파라미터의 크기와 대량의 훈련 데이터셋을 의미수백 또는 수천억 개의 파라미터모델 파라미터는 시퀀스의 다음 단어를 예측하도록 훈련하는 과정에서 조정되는 신경망의 가중치 (weight)학습에서 머신러닝과 딥러닝의 차이머신러닝: 사람이 직접 특성을 추출딥러닝: 모델이 자동으로 학습머신러닝에서는 사람이 직접 특성을 설계(feature engin..

    #2, FastAPI 에서 pytest 를 이용할 때 환경변수 문제

    FastAPI 에서 pytest 를 이용할 때 환경변수 문제비즈니스 로직 메서드를 테스트하는데, .env 에 정의된 값이 필요하게 됨settings 를 그냥 사용했더니 캐싱된 settings 값을 사용해서 local, dev, prod 와 같은 환경 구분이 되지 않았음Settings 인스턴스를 이미 전역에서 만들어버려서, 테스트 환경에서 .env 를 갈아끼워도 반영이 안됐음config.py에 미리 설정된 기본값인 prod 를 사용하기 때문에 get_settings() 를 이용해야, 호출할 때마다 확인이 가능했음# settings.pyfrom pydantic_settings import BaseSettingsclass Settings(BaseSettings): environment: str = "pr..

    #1, 왜 쓰게 되었는가?

    왜 쓰게 되었는가?2023년부터인가 ChatGPT 가 한창 뜨고 나서부터 블로그 글을 올리지 않았던 것 같다글을 올리지 않았던 이유는 내 블로그는 지식을 잘 정리해둔 사전같은 블로그를 표방했는데, 사전 형태의 지식은 ChatGPT가 훨씬 많이 알고 있었기 때문, 그래서 당시에 블로그에 글을 쓸 동기를 잃어버렸었다GPT 이후에 내 글은 어떤 의미를 가질까?근데 다시 블로그에 글을 쓰러 돌아오게 된 이유는 여러가지가 있다글쓰기가 사실 생각의 도구였다는 것개인의 경험은 충분히 쓰여질 가치가 있다고 생각이 든 것이런 이유로 다시 블로그에 글을 쓸 것 같다글의 목적은?글의 목적은 글을 쓰게 된 이유처럼글을 쓰며 여러가지 생각을 해보기 위해내가 겪었던 문제를 해결했다면 해결한 것으로 그냥 지나치지 않고 글을 쓰며,..

    Route 53 의 호스팅 영역 (Hosted zone) 이란?

    ROUTE 53의 호스팅 영역 (Hosted zone) 이란?현실의 주소록 같은 것웹사이트 이름과 웹사이트가 있는 IP 주소를 적어둠이름이 다르지만 실제론 DNS 서버의 역할과 흡사함역할웹사이트 이름 (ex. www.xxx.com) 을 보고 실제 IP 주소로 연결해줌AWS 가 이 주소록을 대신 관리해주고 있는 것기본적으로 DNS 서버와 흡사하나 트래픽 관리, 헬스 체크, 지역 기반 라우팅 등 고급 기능을 더 제공하는 것만 다름

    ReferenceError: File is not defined 에러 해결 방법

    ReferenceError: File is not defined 에러이 에러를 만났다면, 아마 Node.js 에서 File 객체를 이용한 코드를 작성했을 것이다if (something instanceof File) { // ...}해결 방법Node.js 버전을 20.9 윗버전으로 업그레이드 하면 된다.참고 링크노드 버전 업그레이드 없이 해결하는 방법web-std 의존성을 설치하면 된다.

    깃허브 소셜 로그인 구현하기

    GitHub 로그인, 회원가입 구현하기 깃헙 소셜 로그인은 OAuth 표준을 따른다. 다른 소셜 로긴도 OAuth 를 따르니 비슷하게 구현이 가능하다. 이 포스팅에 쓰인 코드는 노마드코더-캐럿마켓 클론코딩 에서 배운 코드를 참고했다. 단, 비슷하긴 하나, 완전히 동일하지 않고 몇몇 부분이 다르다. GitHub 로그인, 회원가입 절차 살펴보기 시퀀스 다이어그램으로 살펴보기 sequenceDiagram participant User as 사용자 participant App as 애플리케이션 participant Google as 구글 서버 User->>App: 구글 로그인 요청 App->>Google: 인증 코드 요청 (client_id, redirect_uri, scope) Google->>User: 로그..

    아이언 세션 (Iron session) 이란 무엇인가? (쉬운 설명과 보안 관련 생각해볼점)

    iron session 이란? 안전하고 무상태인 쿠키 기반의 세션 라이브러리 더 쉬운 말로 설명하면? 사용자가 입력한 암호를 통해 쿠키값을 암호화하고 복호화해주는 것이다. 쿠키는 원래 클라이언트에게 공개되고 클라이언트가 임의로 변경할 수 있는 값인데 이에 보안을 주기 위해서 암호화/복호화를 하는 것이다. 작동 방식 세션 데이터가 서명되고 암호화된 쿠키에 저장된다. 서버 코드에서 네트워크가 필요 없는 상태 비저장 방식으로 디코딩된다. Ruby on Rails 에서 쓰는 것과 동일한 기술이다. 특징 서버리스 환경에 적합하다. 세션 데이터를 쿠키에 저장하여 별도의 서버측 저장소 필요 없음 사용자 패스워드가 없어도 안전하게 암호화가 가능하다. 미들웨어 하나로 쉽게 세션 기능을 추가할 수 있어서 러닝커브가 작다...

    Node.js 프로젝트에서 Husky 와 commitlint 를 이용하여 커밋 메세지 포맷 제한하기

    Husky 와 commitlint 를 이용하여 커밋 메세지 포맷 제한하기 프로세스 Husky 설치: Husky 를 설치한다. Husky 세팅: 필요한 커밋 전 명령어 및 커밋 검증 명령어 등을 세팅한다. 테스트: 세팅이 잘 되었는지 테스트한다. Husky 설치 공식문서 중 get-started 에 나와있는대로 설치 후 초기화를 한다. 설치 명령어 npm install --save-dev husky 초기화 명령어 npx husky init Husky 세팅 pre-commit pre-commit 에서는 커밋 전 실행할 명령어에 대해 세팅할 수 있다. 기본으로는 npm test 가 세팅되어 있다. npm test commit-msg 커밋 메세지를 검증할 룰을 세팅할 수 있다. 난 udacity rules 를 ..

    도커 컴포즈 (Docker Compose) 란? 도커 컴포즈 사용법

    도커 컴포즈란? 보통 개발할 때 로컬 환경이나 개발 환경에서 가상의 DB를 띄우기 위해서 많이 사용한다. 도커 컴포즈는 단일 호스트 환경에서 동작하고, 고가용성도 지원하지 않기 때문에 운영에서는 비슷한 역할을 하지만 고가용성을 지원하는 쿠버네티스를 사용한다. 도커 컴포즈 이용하기 (Node.js 기준) 프로젝트 메인 디렉토리에 docker-compose.yaml 파일을 생성한다. 도커 컴포즈 문법에 맞게 docker-compose.yaml 파일 작성 Docker Compose 공식문서 에 작성법이 있긴 한데, 예제를 보거나 GPT 를 이용하는 것이 빠를 것 같다. Postgres Yaml 파일 작성 방식은 Postgres 도커 페이지 에서 참고할 수있다. services: # 자동완성됨 postgres:..

    브라우저 History API 를 활용하는 방법

    History API 로 작업하기 (History API 활용 방법) History API 를 이용하면, 브라우저의 세션 기록과 상호작용할 수 있다. 세션 기록이란, 브라우저에서 사용자가 방문했던 페이지를 기록한 것을 말한다. 일반 사용자는 앞으로 가기, 뒤로 가기 버튼을 통해 세션 기록을 이용한다. History API 제공 메서드 페이지를 이동하는 메서드는 직관적으로 이해가 쉬우나, 기록된 페이지를 수정하는 메서드들은 잘 활용하기 위해 약간의 학습이 필요하다. 이 API 의 주요 목적은 fetch() 같은 메서드를 통해 업데이트 되는 SPA(Single Page Application)와 같은 웹사이트를 지원하기 위한 것이다. 기록된 페이지로 이동 History.back() History.forward..

    History API 란? (간단 정리)

    History API 란? History 인터페이스는 브라우저의 세션 기록, 현재 페이지를 불러온 탭 혹은 프레임의 방문기록을 조작할 수 있는 방법을 제공한다. 브라우저에서 뒤로가기와 같은 액션을 수행했을 때 방문하는 페이지를 조작하는 것이다. history 는 싱글톤 인스턴스로 글로벌에 1개만 존재한다. 인스턴스 프로퍼티 History 인터페이스는 어떤 속성도 상속하지 않는다. length: 세션 기록에 몇개의 페이지가 있는지의 길이이다. scrollRestoration: 해당 세션으로 갔을 때 스크롤까지 복원할지를 설정한다. auto 혹은 manual 이 있다. state: 히스토리 스택의 맨 위에 있는 상태를 나타내는 값을 반환한다. pushState() 혹은 replaceState() 를 사용할 ..

    브라우저 라우팅과 해시 라우팅의 차이 (Browser Routing 과 Hash Routing 의 차이)

    브라우저 라우터 (Browser Router) 모던 웹브라우저에서 제공하는 히스토리 API 를 활용하여 히스토리 스택을 조작한다. 히스토리 스택에는 브라우저 탭이나 창에서 방문한 URL 이 들어있다. 해시 라우팅과 비교하면 해시(#)가 없는 깔끔한 URL 을 사용할 수 있다. 장점 깔끔한 URL: URL 이 깔끔해진다. SEO 친화적: URL 이 깔끔하여 SEO 에 친화적이다. SSR 지원: 서버가 미리 렌더링된 초기 페이지를 반환할 수 있어서 SEO 를 용이하게 하고 처음 방문하는 방문자의 로딩 시간을 개선한다. 단점 서버 구성: 서버에서 모든 요청을 index.html 로 라우팅되도록 해야 SPA 라우팅이 올바른 뷰를 렌더링 할 수 있다. 브라우저 호환성: 일부 구형 브라우저는 히스토리 API 를 지..