분류 전체보기
-
React에서 디바운스(Debounce) 구현하기React 애플리케이션을 개발하다 보면, 상태(state)가 빠르게 여러 번 변경될 때 불필요한 렌더링이나 성능 저하를 방지해야 할 상황이 종종 발생합니다. 이럴 때 유용한 기법이 바로 디바운스(Debounc짧은 시간 안에 여러 번 발생한 호출 중 마지막 호출만 유효하게 처리e) 입니다.디바운스란?디바운스는 짧은 시간 안에 여러 번 발생한 호출 중 마지막 호출만 유효하게 처리하는 기법입니다. 주로 다음과 같은 상황에서 사용됩니다:검색 입력창의 자동완성 API 호출윈도우 크기 조절 이벤트 처리스크롤 이벤트 처리캔버스나 그래프 같은 무거운 UI 업데이트디바운스를 사용하지 않으면 생기는 문제점디바운스를 적용하지 않을 경우 다음과 같은 문제가 발생할 수 있습니다:..
[React 성능 개선] 불필요한 렌더링 대폭 감소 시키기! (feat.Debounce)React에서 디바운스(Debounce) 구현하기React 애플리케이션을 개발하다 보면, 상태(state)가 빠르게 여러 번 변경될 때 불필요한 렌더링이나 성능 저하를 방지해야 할 상황이 종종 발생합니다. 이럴 때 유용한 기법이 바로 디바운스(Debounc짧은 시간 안에 여러 번 발생한 호출 중 마지막 호출만 유효하게 처리e) 입니다.디바운스란?디바운스는 짧은 시간 안에 여러 번 발생한 호출 중 마지막 호출만 유효하게 처리하는 기법입니다. 주로 다음과 같은 상황에서 사용됩니다:검색 입력창의 자동완성 API 호출윈도우 크기 조절 이벤트 처리스크롤 이벤트 처리캔버스나 그래프 같은 무거운 UI 업데이트디바운스를 사용하지 않으면 생기는 문제점디바운스를 적용하지 않을 경우 다음과 같은 문제가 발생할 수 있습니다:..
2025.02.06 -
S.O.L.I.D 원칙 타입스크립트 코드 예제로 이해하기깨끗하고 유지보수하기 쉬운 코드를 작성하는 것은 단순히 동작하는 코드를 작성하는 것만큼 중요합니다.S.O.L.I.D 원칙은 시간이 지나도 쉽게 조정, 확장, 유지보수할 수 있는 코드를 작성할 수 있도록 합니다.이 원칙은 2000년대 초반 Robert C. Martin(일명 Uncle Bob)에 의해 소개되었습니다.이 글에서는 5가지 원칙을 실제 코드 예제와 함께 살펴보겠습니다.S: 단일 책임 원칙(Single Responsibility Principle, SRP)클래스는 하나의 역할만 가져야 하며, 변경해야 하는 이유도 하나여야 합니다.즉, 한 클래스가 여러 가지 역할을 담당해서는 안 되며, 단 하나의 책임만을 수행해야 합니다.잘못된 예제:class..
[TypeScript] 프론트엔드 개발자를 위한 SOLID 원칙. (feat.타입스크립트)S.O.L.I.D 원칙 타입스크립트 코드 예제로 이해하기깨끗하고 유지보수하기 쉬운 코드를 작성하는 것은 단순히 동작하는 코드를 작성하는 것만큼 중요합니다.S.O.L.I.D 원칙은 시간이 지나도 쉽게 조정, 확장, 유지보수할 수 있는 코드를 작성할 수 있도록 합니다.이 원칙은 2000년대 초반 Robert C. Martin(일명 Uncle Bob)에 의해 소개되었습니다.이 글에서는 5가지 원칙을 실제 코드 예제와 함께 살펴보겠습니다.S: 단일 책임 원칙(Single Responsibility Principle, SRP)클래스는 하나의 역할만 가져야 하며, 변경해야 하는 이유도 하나여야 합니다.즉, 한 클래스가 여러 가지 역할을 담당해서는 안 되며, 단 하나의 책임만을 수행해야 합니다.잘못된 예제:class..
2025.02.05 -
JavaScript 개발자를 위한 함수형 프로그래밍JavaScript는 다양한 스타일로 코드를 작성할 수 있는 유연한 언어입니다. 명령형(imperative), 객체 지향(object-oriented), 그리고 함수형(functional) 프로그래밍 스타일을 모두 지원하며, 각각의 스타일은 문제를 해결하는 방식이 다릅니다. 이 중 함수형 프로그래밍은 진입 장벽이 높다고 느껴질 수 있지만, 사실 JavaScript를 사용하면서 이미 함수형 스타일을 활용하고 있을 가능성이 큽니다. 다만, 함수형 프로그래밍은 낯선 용어와 개념 때문에 어렵게 느껴질 수 있습니다. 이 글에서는 함수형 프로그래밍을 실용적인 방식으로 소개하여, 지금 당장 코드에 적용할 수 있도록 도와드리겠습니다.함수형 프로그래밍이란?객체 지향 프로..
[JavaScript] 프론트엔드 개발자를 위한 함수형 프로그래밍(functional programming)JavaScript 개발자를 위한 함수형 프로그래밍JavaScript는 다양한 스타일로 코드를 작성할 수 있는 유연한 언어입니다. 명령형(imperative), 객체 지향(object-oriented), 그리고 함수형(functional) 프로그래밍 스타일을 모두 지원하며, 각각의 스타일은 문제를 해결하는 방식이 다릅니다. 이 중 함수형 프로그래밍은 진입 장벽이 높다고 느껴질 수 있지만, 사실 JavaScript를 사용하면서 이미 함수형 스타일을 활용하고 있을 가능성이 큽니다. 다만, 함수형 프로그래밍은 낯선 용어와 개념 때문에 어렵게 느껴질 수 있습니다. 이 글에서는 함수형 프로그래밍을 실용적인 방식으로 소개하여, 지금 당장 코드에 적용할 수 있도록 도와드리겠습니다.함수형 프로그래밍이란?객체 지향 프로..
2025.02.05 -
DeepSeek에 대해서 모른다면 밑에 글 빠르게 훑어보자딥시크(DeepSeek)에 대해서 빠르게 아라보자 (요약본) 딥시크(DeepSeek)에 대해서 빠르게 아라보자 (요약본)우선 긴글을 싫어하는 당신을 위한 요약 부터 고고📌 DeepSeek R1 요약🚀 DeepSeek R1이란?중국의 AI 기업 DeepSeek에서 개발한 최신 AI 모델.OpenAI의 o1 모델과 동급 성능을 보이면서도 98% 저렴함.오픈소intelloper.tistory.com 로컬에서 실행하기DeepSeek R-1을 로컬에서 실행하기 위해서는 Ollama라는 도구를 사용할 것입니다. Ollama는 대형 언어 모델(LLM)을 로컬 컴퓨터에서 실행할 수 있게 해주는 무료 오픈소스 도구로, macOS, Linux, Windows..
DeepSeek R-1 우분투에서 써보기 feat.OllamaDeepSeek에 대해서 모른다면 밑에 글 빠르게 훑어보자딥시크(DeepSeek)에 대해서 빠르게 아라보자 (요약본) 딥시크(DeepSeek)에 대해서 빠르게 아라보자 (요약본)우선 긴글을 싫어하는 당신을 위한 요약 부터 고고📌 DeepSeek R1 요약🚀 DeepSeek R1이란?중국의 AI 기업 DeepSeek에서 개발한 최신 AI 모델.OpenAI의 o1 모델과 동급 성능을 보이면서도 98% 저렴함.오픈소intelloper.tistory.com 로컬에서 실행하기DeepSeek R-1을 로컬에서 실행하기 위해서는 Ollama라는 도구를 사용할 것입니다. Ollama는 대형 언어 모델(LLM)을 로컬 컴퓨터에서 실행할 수 있게 해주는 무료 오픈소스 도구로, macOS, Linux, Windows..
2025.02.04 -
우선 긴글을 싫어하는 당신을 위한 요약 부터 고고📌 DeepSeek R1 요약🚀 DeepSeek R1이란?중국의 AI 기업 DeepSeek에서 개발한 최신 AI 모델.OpenAI의 o1 모델과 동급 성능을 보이면서도 98% 저렴함.오픈소스로 공개되어 누구나 로컬에서 실행 및 커스텀 가능.연산 효율 최적화 → 고성능 GPU가 없어도 잘 작동.🔥 DeepSeek R1이 강력한 이유강화학습 최적화 → 복잡한 논리적 문제 해결 능력 향상.고정밀·저비용 → OpenAI의 o1 모델 수준의 성능을 훨씬 낮은 비용으로 제공.오픈소스 → 누구나 자유롭게 활용 및 개선 가능.GPU 효율 최적화 → 성능이 낮은 장비에서도 원활하게 작동.❌ DeepSeek가 받는 비판 & 반론중국 정부의 검열 우려민감한 질문(예: 톈..
딥시크(DeepSeek)에 대해서 빠르게 아라보자 (요약본)우선 긴글을 싫어하는 당신을 위한 요약 부터 고고📌 DeepSeek R1 요약🚀 DeepSeek R1이란?중국의 AI 기업 DeepSeek에서 개발한 최신 AI 모델.OpenAI의 o1 모델과 동급 성능을 보이면서도 98% 저렴함.오픈소스로 공개되어 누구나 로컬에서 실행 및 커스텀 가능.연산 효율 최적화 → 고성능 GPU가 없어도 잘 작동.🔥 DeepSeek R1이 강력한 이유강화학습 최적화 → 복잡한 논리적 문제 해결 능력 향상.고정밀·저비용 → OpenAI의 o1 모델 수준의 성능을 훨씬 낮은 비용으로 제공.오픈소스 → 누구나 자유롭게 활용 및 개선 가능.GPU 효율 최적화 → 성능이 낮은 장비에서도 원활하게 작동.❌ DeepSeek가 받는 비판 & 반론중국 정부의 검열 우려민감한 질문(예: 톈..
2025.02.04 -
이미지 또는 대용량 데이터를 빠르게 로드하려면 캐싱(Cache) 을 활용해야 합니다. 그런데 FastAPI에서 이미지를 캐싱할 때, TTLCache(메모리 캐시)와 DiskCache(디스크 캐시) 중 어떤 것이 더 나을까요?✔ TTLCache: RAM을 사용하여 가장 빠르지만, 메모리 제한이 있음.✔ DiskCache: 디스크를 활용하여 더 많은 데이터를 저장할 수 있지만, 속도가 조금 느림.📌 이번 포스트에서는 두 방식의 성능을 비교하고, 언제 어떤 캐싱 방법을 써야 하는지 정리해보겠습니다.🔥 캐싱 비교: TTLCache vs DiskCache✅ 1. TTLCache (메모리 기반 캐시)from cachetools import TTLCachecache = TTLCache(maxsize=300, tt..
[Python 성능] 🏎️ TTLCache vs DiskCache: 이미지 캐싱 속도 비교와 최적화 방법이미지 또는 대용량 데이터를 빠르게 로드하려면 캐싱(Cache) 을 활용해야 합니다. 그런데 FastAPI에서 이미지를 캐싱할 때, TTLCache(메모리 캐시)와 DiskCache(디스크 캐시) 중 어떤 것이 더 나을까요?✔ TTLCache: RAM을 사용하여 가장 빠르지만, 메모리 제한이 있음.✔ DiskCache: 디스크를 활용하여 더 많은 데이터를 저장할 수 있지만, 속도가 조금 느림.📌 이번 포스트에서는 두 방식의 성능을 비교하고, 언제 어떤 캐싱 방법을 써야 하는지 정리해보겠습니다.🔥 캐싱 비교: TTLCache vs DiskCache✅ 1. TTLCache (메모리 기반 캐시)from cachetools import TTLCachecache = TTLCache(maxsize=300, tt..
2025.02.03 -
프로그래밍에서 데이터의 무결성을 유지하는 것은 매우 중요합니다. 특히, 클래스 내부의 속성(데이터)이 외부에서 직접 변경될 경우, 원하지 않는 값이 설정되어 프로그램이 예상치 못한 동작을 할 수 있습니다. 이를 방지하기 위해 Getter(게터)와 Setter(세터) 를 사용합니다. Getter와 Setter는 클래스 내부의 private(비공개) 속성에 접근하거나 값을 변경하는 메서드입니다. 이를 활용하면 데이터를 안전하게 보호하면서도 필요한 경우 외부에서 값을 읽고 수정할 수 있도록 허용할 수 있습니다.Getter & Setter를 사용해야 하는 이유데이터 보호: 직접 속성에 접근하는 것을 방지하고, 유효한 값만 설정되도록 제한할 수 있습니다.내부 구현 변경 가능: 클래스 내부 구조가 변경되더라도 G..
파이썬 Getter & Setter: 데이터 보호의 수호자프로그래밍에서 데이터의 무결성을 유지하는 것은 매우 중요합니다. 특히, 클래스 내부의 속성(데이터)이 외부에서 직접 변경될 경우, 원하지 않는 값이 설정되어 프로그램이 예상치 못한 동작을 할 수 있습니다. 이를 방지하기 위해 Getter(게터)와 Setter(세터) 를 사용합니다. Getter와 Setter는 클래스 내부의 private(비공개) 속성에 접근하거나 값을 변경하는 메서드입니다. 이를 활용하면 데이터를 안전하게 보호하면서도 필요한 경우 외부에서 값을 읽고 수정할 수 있도록 허용할 수 있습니다.Getter & Setter를 사용해야 하는 이유데이터 보호: 직접 속성에 접근하는 것을 방지하고, 유효한 값만 설정되도록 제한할 수 있습니다.내부 구현 변경 가능: 클래스 내부 구조가 변경되더라도 G..
2025.02.03 -
FastAPI 애플리케이션의 성능을 개선하기 위해 많은 자료를 찾아보고 정리해봅니다.예제 소개다음은 FastAPI의 기본적인 엔드포인트 예제입니다. Product라는 Pydantic 모델을 정의하고, products 리스트를 반환하는 엔드포인트를 구현했습니다. 각 섹션에서 이 코드를 조금씩 최적화하며 개선해 보겠습니다.from fastapi import FastAPIfrom pydantic import BaseModelapp = FastAPI()class Product(BaseModel): product_id: str price: float@app.get("/products/", response_model=list[Product])def read_products(): products =..
FastAPI 성능 최적화하기FastAPI 애플리케이션의 성능을 개선하기 위해 많은 자료를 찾아보고 정리해봅니다.예제 소개다음은 FastAPI의 기본적인 엔드포인트 예제입니다. Product라는 Pydantic 모델을 정의하고, products 리스트를 반환하는 엔드포인트를 구현했습니다. 각 섹션에서 이 코드를 조금씩 최적화하며 개선해 보겠습니다.from fastapi import FastAPIfrom pydantic import BaseModelapp = FastAPI()class Product(BaseModel): product_id: str price: float@app.get("/products/", response_model=list[Product])def read_products(): products =..
2025.01.15