전체 글1656 [React] useRef로 리렌더링 없는 변수 저장하기 (setInterval 예제) 안녕하세요. 오늘은 useRef를 컴포넌트의 리렌더링(re-rendering)을 유발하지 않는 값 저장소로 활용하는 예제를 만들어 보겠습니다. useRef useState와 useRef는 둘 다 무언가를 '기억'하지만, 그 성격이 완전히 다릅니다. 이 차이를 setInterval 타이머 예제로 확실하게 알아보겠습니다. useState값이 바뀌면 ( setCount(1) ) 즉시 리렌더링이 예약됩니다.UI에 보여야 하는 값을 저장합니다.useRefmyRef.current = '...' 처럼 값을 바꿔도, React는 전혀 신경 쓰지 않습니다. (리렌더링 X) UI와는 상관없는 내부 관리용 값을 저장할 때 씁니다. 예제 - setInterval 타이머 만들기화면에 보이는 초(second): 0, 1, .. 2025. 10. 26. [React] useRef로 페이지 로딩 시 input에 자동 포커스(focus) 주기 안녕하세요. React로 폼(Form)을 만들다 보면, 사용자가 페이지에 접속했을 때 아이디(ID) 입력창이나 검색창에 바로 타이핑할 수 있도록 자동으로 포커스를 맞춰주고 싶을 때가 많습니다. HTML에서는 속성으로 간단하게 구현할 수 있지만, React에서는 컴포넌트의 생명주기와 DOM 접근을 관리해야 하므로 useRef 훅을 사용하는 것이 표준적인 방법입니다. 오늘은 useRef와 useEffect를 조합해 페이지 로드 시 input에 자동으로 포커스를 주는 간단한 예제를 알아보겠습니다. 예제컴포넌트가 처음 화면에 나타났을 때 '아이디' input에 자동으로 포커스가 이동하는 예제 코드입니다import React, { useRef, useEffect } from 'react';import '... 2025. 10. 23. [PHP] Fiber (파이버) 란 안녕하세요. 오늘은 PHP 8.1부터 도입된 기능인 Fiber 에 대해 알아보겠습니다. PHP 는 기본적으로 코드를 한줄 한줄 순서대로 실행합니다. 이 방식은 I/O 작업(외부 API를 호출하거나, 데이터베이스에 쿼리를 보내거나, 큰 파일 읽기와 같은 기다림이 필요한 작업)에서 문제가 발생합니다. '기다리는 시간' 동안 아무것도 하지 않고 CPU를 낭비하며 멍하니 멈춰있습니다.1초가 걸리는 API를 호출하면, PHP 스크립트 전체가 1초 동안 멈추게 됩니다. Fiber 는 이와 같은 상황에서 특정 작업을 일시 중단(Suspend) 시킬 수 있습니다. 즉, 기다리는 동안 다른 작업을 먼저 처리할 수 있도록 합니다. 예제start();// Fiber가 suspend()로 멈춘 동안, 메인 코드는 다른.. 2025. 10. 22. [Python] shutil 사용해서 파일 복사, 이동, 압축 하기 안녕하세요 shutil (shell utillities)은파일을 복사하거나 폴더를 압축하는 등의 작업을 쉽게 해주는 파이썬 내장 모듈입니다. 터미널에서, cp, mv, rm, zip 등 명령어를 직접 치는 대신,파이썬 코드로 자동화할 수 있는 도구입니다. 전체 코드입니다. main.pyimport shutilfrom pathlib import Path# 테스트용 디렉토리 생성base = Path("demo_folder")base.mkdir(exist_ok=True)(base / "test.txt").write_text("이건 shutil 테스트 파일입니다.", encoding="utf-8")print("테스트 파일 생성 완료:", (base / "test.txt").resolve())# 파일 복사하기sh.. 2025. 10. 21. [PHP] match 표현식 match는 하나의 값을 여러 조건과 비교하여 일치하는 경우 특정 값을 반환하는 표현식입니다. 기존의 switch가 문이었던 것과 차이점입니다. 이로 인해 코드가 간결해지고 예측 가능해집니다. $statusCode = 200;// switch 문 방식$message = '';switch ($statusCode) { case 200: $message = 'OK'; break; case 404: $message = 'Not Found'; break; case 500: $message = 'Server Error'; break; default: $message = 'Unknown Status'; .. 2025. 10. 20. [PHP] SplMaxHeap 가장 큰 값이 항상 맨 위에 위치하는 자료구조 안녕하세요.오늘은 가장 큰 값이 항상 맨 위에 위치하는 자료구조인 SplMaxHeap에 대해 알아보겠습니다. SplMaxHeapSplMaxHeap은 PHP의 SPL(Standard PHP Library)이 제공하는 자료구조입니다. 이름에서 알 수 있듯이, 가장 큰(Max) 값이 항상 맨 위(Top)에 위치하도록 보장하는 저장소입니다. 데이터를 추가할 때마다 내부적으로 정렬 상태를 자동으로 유지하기 때문에, 언제든지 가장 큰 값을 즉시 조회하거나 꺼내올 수 있습니다. 실시간 랭킹이나 우선순위가 가장 높은 작업을 처리할 때 매우 유용합니다. 주요 메소드insert(value): 힙에 새로운 값을 추가합니다. 추가하는 즉시 힙 구조가 자동으로 재정렬됩니다.top(): 힙에서 값을 제거하지 않고 가장 큰 .. 2025. 10. 19. [PHP] SplPriorityQueue로 중요 작업 먼저 처리하기 안녕하세요,오늘은 SplPriorityQueue를 활용하여 작업 목록 중 중요 작업 먼저 처리하는 방법을 알아보겠습니다. SplPriorityQueue일반적인 대기열(Queue)은 선입선출(FIFO) 방식으로 작업을 처리합니다.하지만 '긴급 문의'처럼 다른 것보다 먼저 처리해야 할 중요한 작업이 있는 경우, SplPriorityQueue를 사용하여 먼저 처리할 수 있습니다. SplPriorityQueue는 PHP의 SPL(Standard PHP Library)이 제공하는 자료구조입니다. 데이터를 큐에 넣을(insert) 때, 데이터와 함께 '우선순위'를 숫자로 지정할 수 있습니다.데이터를 꺼낼(extract) 때 SplPriorityQueue는 들어온 순서와 상관없이, 지정된 우선순위가 가장 높은 데이.. 2025. 10. 16. [PHP] MultipleIterator 와 foreach로 여러 배열 동시에 반복하기 안녕하세요. 오늘은 MultipleIterator 와 foreach 를 활용하여 여러 배열 동시에 반복해보도록 하겠습니다. MultipleIterator 서로 다른 여러 배열의 같은 인덱스에 있는 값들을 한 번에 가져와야 할 때가 있습니다.보통 for 루프와 $i 인덱스를 사용하지만, 코드가 지저분해지기 쉽습니다.MultipleIterator를 활용하면 여러 배열(또는 이터레이터)을 하나로 묶어, foreach 루프 한 번으로 각 배열의 요소들을 동시에 접근할 수 있습니다. 예제상품 ID, 이름, 가격이 각각 다른 배열에 담겨 있을 때, MultipleIterator를 사용해 한 번에 출력하는 예제입니다. attachIterator(new ArrayIterator($ids), 'ID');$mi->.. 2025. 10. 15. [Python] argparse 로 CLI 프로그램 만들기 안녕하세요 오늘은 argparse 사용하여 CLI 환경에서 프로그램 구동하는 방법을 알아보도록 하겠습니다. argparse는 파이썬 표준 라이브러리로,터미널(명령줄)에서 실행할 때 인자를 입력받는 도구입니다. 이 argparse 사용하여 간단한 인사 프로그램 만들어 보도록 하겠습니다. 전체 코드입니다. main.py import argparse# 1. ArgumentParser 객체 생성parser = argparse.ArgumentParser( description="간단한 인사 프로그램입니다.")# 2. 명령줄 옵션 추가 (--옵션명, 데이터 타입, 설명 등)parser.add_argument("--name", required=True, help="이름을 입력하세요.")parser.add_arg.. 2025. 10. 14. 이전 1 2 3 4 5 6 7 ··· 184 다음