본문 바로가기
반응형

공부396

Spring scheduling 을 DB 기반으로 동적 스케줄링 하기 1. 들어가며스프링 프레임워크에서는 @Scheduled 어노테이션을 사용하여 정적인 스케줄링을 쉽게 구현할 수 있습니다. 하지만 이 방식은 코드에 하드코딩되어 있어 변경 시 재배포가 필요하다는 단점이 있습니다. @Componentpublic class StaticScheduler { @Scheduled(cron = "0 0 12 * * ?") // 매일 정오에 실행 public void dailyTask() { // 작업 내용 }} 대부분의 경우 이런 정적 스케줄링으로도 충분하지만, 다음과 같은 상황에서는 동적 스케줄링이 필요합니다:마케팅 캠페인 알림 시간을 유연하게 변경해야 할 때데이터 집계 작업의 주기를 운영 중에 조정해야 할 때환경별(개발, 테스트, 운영)로 다른 스케줄.. 2025. 3. 21.
React에서 자식 컴포넌트 제어하기(useRef, forwardRef) React 개발을 하다 보면 부모 컴포넌트에서 자식 컴포넌트의 메서드나 상태에 직접 접근해야 할 필요가 있습니다. 이런 경우 useRef와 forwardRef 를 사용한다면 도움이 됩니다. 이 글에서는 이 두 기능을 활용하여 자식 컴포넌트를 효과적으로 제어하는 방법을 살펴보겠습니다.  왜 useRef와 forwardRef가 필요한가?React의 기본 철학은 단방향 데이터 흐름입니다. 부모에서 자식으로 props를 전달하고, 자식은 이벤트를 통해 부모와 소통합니다. 하지만 이런 패턴만으로는 해결하기 어려운 상황이 있습니다: 폼 요소의 초기화나 포커스 제어애니메이션 직접 트리거미디어 요소(비디오, 오디오) 제어모달이나 드롭다운 같은 UI 요소 직접 제어 이럴 때 useRef와 forwardRef를 활용하면 .. 2025. 3. 18.
flutter 무한스크롤: riverpod 상태관리 삽질(스크롤 위치 초기화 및 리빌드 문제) Flutter에서 무한 스크롤을 구현할 때 흔히 겪는 문제 중 하나는 바로 데이터 로딩 시 스크롤 위치가 초기화되는 것입니다. 최근 제가 겪었던 문제와 해결 과정을 공유합니다.  문제 상황 파악하기제가 최근 상담 후기 목록 화면을 Flutter로 개발하며 무한 스크롤을 적용했습니다. 일반적인 무한 스크롤 구현 방법처럼 사용자가 리스트를 가장 아래까지 스크롤하면 추가 데이터를 자동으로 불러오도록 했습니다. 그런데 예상치 못하게 새로운 데이터를 로딩할 때마다 화면이 전체적으로 다시 그려지면서 스크롤 위치가 맨 위로 강제로 이동하는 현상이 발생했습니다. 처음에는 스크롤 컨트롤러나 ListView의 설정이 잘못됐을 거라 생각하여 여러 번 점검해봤지만, 문제는 전혀 개선되지 않았습니다. 고민 끝에 상태 관리 라이.. 2025. 3. 13.
[Java] enum 으로 되어있는 공통코드를 목록 조회로 공통화 하기 개발하다 보면 열거형(Enum)을 사용해 코드 목록을 관리하는 경우가 많습니다. 하지만 초기 구현에서는 종종 비슷한 로직이 반복되는 코드를 볼 수 있죠. 다음과 같은 코드를 예로 들어보겠습니다.  다음의 공통코드가 있습니다.@Getter@AllArgsConstructorpublic enum CounselField { EMPLOYMENT("취업"), COURSE("진로"), PERSON("인간관계"), EXAM("시험"), ; private final String label;}@Getter@AllArgsConstructorpublic enum CounselStyle { ACCURATE("정확해요"), FIT("잘맞아요"), ; private final .. 2025. 3. 5.
Flutter에서 VerticalDivider 올바르게 사용하기 Flutter에서 VerticalDivider를 사용할 때 흔히 겪는 문제 중 하나는 구분선이 보이지 않는 현상입니다. 이를 해결하는 방법을 알아보겠습니다.  문제점VerticalDivider는 단독으로 사용하면 높이가 지정되지 않아 화면에 표시되지 않습니다.Row( children: [ Text('텍스트1'), VerticalDivider( // 보이지 않음! color: Colors.grey, width: 1, ), Text('텍스트2'), ],)  해결방법 1: IntrinsicHeight 사용IntrinsicHeight 위젯으로 감싸서 자식 위젯들의 높이를 자동으로 계산하도록 합니다.IntrinsicHeight( child: Row( childr.. 2025. 3. 4.
TypeScript와 ES6로 Enum처럼 코드 집합 관리하기: 공통 메서드와 타입 안전성 JavaScript(ES6)와 TypeScript를 사용하다 보면 Java의 enum처럼 상수 집합을 관리하고 싶을 때가 많습니다. 특히 code와 label 같은 속성을 가진 객체를 여러 개 정의하고, 공통 메서드(예: findByCode)를 추가하면서도 타입 안전성을 유지하려면 어떻게 해야 할까요? 이번 글에서는 React 환경에서 발생한 에러를 해결하며 찾은 최적의 방법을 공유합니다.  문제 상황: React와 TypeScript에서 코드 집합 사용하기class Code { constructor(public code: string, public label: string) {} getCode() { return this.code; } getLabel() { return this.label; }}.. 2025. 3. 4.
반응형