분류 전체보기
Node-Cache : 서버 성능 최적화![](https://tistory1.daumcdn.net/tistory_admin/blogs/image/category/new_ico_5.gif)
Node-Cache는 Node.js 애플리케이션에서 메모리 캐싱을 구현할 수 있게 해주는 간단하고 강력한 모듈입니다. 데이터베이스 쿼리 결과나 API 응답을 캐싱하여 애플리케이션의 성능을 향상시킬 수 있습니다.기본 설치 및 설정const NodeCache = require('node-cache');// 기본 캐시 인스턴스 생성const cache = new NodeCache({ stdTTL: 600, // 기본 TTL 10분 checkperiod: 120 // 만료된 항목 점검 주기 2분});기본적인 캐시 사용법// 데이터 저장cache.set('user:123', { name: 'John', age: 30 });// 데이터 조회const data = cache.get('user:123');/..
React : map![](https://tistory1.daumcdn.net/tistory_admin/blogs/image/category/new_ico_5.gif)
React에서 map은 배열의 각 요소를 순회하며 새로운 JSX 요소를 생성하는 데 사용되는 필수적인 메서드입니다. 이를 통해 반복적인 UI 요소를 효율적으로 렌더링할 수 있습니다.기본적인 map 사용법const numbers = [1, 2, 3, 4, 5];function NumberList() { return ( {numbers.map(number => ( {number} ))} );}객체 배열 다루기const users = [ { id: 1, name: 'John', email: 'john@example.com' }, { id: 2, name: 'Jane', email: 'jane@e..
MongoDB 프로젝션(Projection)![](https://tistory1.daumcdn.net/tistory_admin/blogs/image/category/new_ico_5.gif)
프로젝션은 MongoDB에서 쿼리 결과로 반환될 필드를 선택하는 기능입니다. 필요한 필드만 선택적으로 가져옴으로써 네트워크 대역폭을 절약하고 애플리케이션의 성능을 향상시킬 수 있습니다.기본 프로젝션 문법// 기본 형태db.collection.find({}, { field1: 1, field2: 1 })// 예시: 사용자의 이름과 이메일만 가져오기db.users.find( {}, { name: 1, email: 1 })필드 제외하기// 특정 필드 제외db.users.find( {}, { password: 0, secretKey: 0 })// _id 필드 제외db.users.find( {}, { _id: 0, name: 1, email: 1 })중첩 문서의 프로젝션// 중첩..
React useEffect 의존성 경고
더보기React Hook useEffect has a missing dependency: ''. Either include it or remove the dependency arrayReact의 useEffect Hook을 사용할 때 자주 마주치는 경고 메시지에 대해 알아보고, 이를 올바르게 해결하는 방법을 살펴보겠습니다.경고가 발생하는 일반적인 상황const [data, setData] = useState([]);const fetchData = async () => { const response = await api.getData(); setData(response.data);};// 경고 발생: fetchData가 의존성 배열에 없음useEffect(() => { fetchData()..
Nginx 413 Request Entity Too Large 오류 해결
** 가이드**413 오류는 클라이언트가 업로드하는 파일이나 요청 데이터가 Nginx에서 설정된 최대 허용 크기를 초과할 때 발생합니다. 이 문제를 효과적으로 해결하는 방법을 알아보겠습니다.오류의 주요 원인파일 업로드 크기 제한 초과POST 요청 데이터 크기 제한 초과클라이언트 요청 본문 버퍼 크기 제한Nginx 설정 수정하기http { # 클라이언트 요청 본문 최대 크기 설정 client_max_body_size 100M; # 클라이언트 요청 본문 버퍼 크기 client_body_buffer_size 128k; server { # 특정 위치에 대한 설정 location /upload { # 이 위치에 대한 특별한 크기 제한 ..
Enum을 넘어서 - const assertions의 장점과 Tree-shaking
Enum의 기본 개념과 한계TypeScript에서 Enum은 관련된 상수들을 그룹화하는 방법을 제공합니다.// 기본적인 Enum 사용enum UserRole { ADMIN = 'ADMIN', USER = 'USER', GUEST = 'GUEST'}// 사용 예시function checkAccess(role: UserRole) { if (role === UserRole.ADMIN) { return true; } return false;}하지만 Enum은 몇 가지 중요한 한계가 있습니다:Tree-shaking이 불가능컴파일 후 추가적인 런타임 코드 생성번들 크기 증가Tree-shaking이란?Tree-shaking은 사용하지 않는 코드를 제거하는 최적화 과정입니다..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9dNWF%2FbtsMd75nFkT%2FkLBfyJQmaxrlcuKJQgYrY0%2Fimg.png)
pyinstrument : 성능 최적화를 위한 프로파일링
pyinstrument는 Python 코드의 성능을 프로파일링하는 강력한 도구입니다. 특히 FastAPI 애플리케이션에서 병목 현상을 찾고 성능을 최적화하는 데 매우 유용합니다. 기본 설정from fastapi import FastAPIfrom pyinstrument import Profilerfrom pyinstrument.middleware import ProfilerMiddlewareapp = FastAPI()# 전체 애플리케이션 프로파일링app.add_middleware(ProfilerMiddleware)# 특정 엔드포인트 프로파일링@app.get("/users/{user_id}")async def get_user(user_id: int): profiler = Profiler() pro..
Geopy : 지리 정보 다루기
Geopy는 파이썬에서 지리 정보를 쉽게 다룰 수 있게 해주는 강력한 라이브러리입니다. 주소를 좌표로 변환하거나, 두 지점 간의 거리를 계산하는 등 다양한 지리 정보 처리가 가능합니다.기본 설치 및 설정# 설치pip install geopy# 기본 임포트from geopy.geocoders import Nominatimfrom geopy.distance import geodesicfrom geopy.exc import GeocoderTimedOut주소를 좌표로 변환하기 (Geocoding)from geopy.geocoders import Nominatimdef get_coordinates(address: str): # 지오코더 초기화 geolocator = Nominatim(user_agent..