profile
프론트엔드
태그 목록
전체보기 (238)CSS(6)객체(6)html(5)typescript(4)url 파라미터(3)배열(3)useMemo(2)async(2)비동기(2)node.js(2)this(2)프로토타입(2)데이터 패칭(2)swiper(2)React.memo(2)useCallback(2)타입 추론(2)서버 액션(2)스프레드(2)Map(2)destructuring(2)구조 분해(2)인터셉팅 라우트(2)React(2)Props(2)풀 라우트 캐시(2)State(2)사용자 정의 타입 가드(1)동기(1)link(1)TypeScript의 클래스(1)인자(1)이벤트 핸들링(1)대수 타입(1)인터페이스 확장(1)타입 별칭(1)React Hooks(1)스코프(1)catch(1)bind(1)프로퍼티(1)함수 오버로딩(1)옵셔널 체이닝(1)증분 정적 재생성(1)타입 조작(1)finally(1)리퀘스트 메모이제이션(1)패럴렐 라우트(1)Web Storage(1)템플릿 리터럴 타입(1)제네릭 타입 별칭(1)try(1)엄격모드(1)프론트엔드(1)exclude(1)매개변수(1)null(1)유틸리티 타입(1)await(1)useEffect(1)비교 연산자(1)조건부 타입(1)Fetch API(1)라이프 사이클(1)React Server Component(1)while(1)for(1)JavaScript(1)인수(1)이터러블(1)콜백함수(1)정적 사이트 생성(1)네비게이팅(1)인터페이스 클래스(1)호출 시그니쳐(1)error(1)If_Else(1)인스턴스(1)switch(1)json(1)const(1)let(1)제네릭 클래스(1)블록문(1)클로저(1)인터페이스 선언 합침(1)Mapped 타입(1)프로미스와 제네릭(1)필드(1)일급 객체(1)foreach(1)인터페이스(1)infer(1)context(1)타입 좁히기(1)제네릭(1)useReducer(1)useRef(1)함수(1)인덱스 시그니처(1)메서드(1)DOM(1)Constructor(1)프리페칭(1)인덱스드 액세스 타입(1)접근자 프로퍼티(1)SSR(1)페럴랠 라우트(1)생성자 함수(1)제네릭 인터페이스(1)주요 빌트인 객체(1)클래스(1)meta(1)partial(1)클라이언트 라우터 캐시(1)readonly(1)required(1)use strict(1)문제 해결(1)Defer(1)ReturnType(1)API Routes(1)스트리밍(1)단락 평가(1)상속(1)seo(1)JSX(1)next.js(1)ssg(1)이미지 최적화(1)useNavigate(1)타입 단언(1)keyof 연산자(1)자료형(1)에러 핸들링(1)Date(1)페이지 라우팅(1)ISR(1)Suspense(1)extract(1)set(1)apply(1)call(1)분산적인 조건부 타입(1)데이터 캐시(1)pick(1)서버 사이드 렌더링(1)undefined(1)object(1)라우트 세그먼트 옵션(1)취준생(1)접근 제어자(1)렉시컬(1)app router(1)콜백(1)page router(1)promise(1)Omit(1)record(1)

Spring WebSocket + STOMP 연동하기

WebSocket = 실시간으로 연결해주는 통신 통로 STOMP = 그 통로에서 메시지를 어떻게 보내고 받을지 정해주는 규칙 1. 왜 라이브러리가 달라질까? 백엔드에서 어떤 WebSocket 기술을 사용하는지에 따라 프론트에서 사용하는 라이브러리도 달라진다.

4일 전
·
0개의 댓글
·

Highcharts로 날짜별 안압 추이 그래프 구현하기

1. 그래프 요구사항 측정 시간을 24시간 기준의 연속된 x축으로 변환 날짜가 바뀌어도 시간 흐름이 이어지도록 표현 측정 간격이 8시간 이상이면 선 연결 중단 연결 가능한 측정값은 영역 그래프로 표시 단독 측정값은 점으로만 표시 정상 안압 범위인 10~21mmHg를

5일 전
·
0개의 댓글
·

Highcharts로 시간대별 Box Plot 형태의 통계 차트 구현하기

구현하려는 그래프 BoxPlot은 기본 차트가 아니라 highcharts-more 모듈을 등록해야 해. 저 위에 2가지를 꼭 해야함 참고로 Highcharts 버전에 따라 modules/boxplot이 없고 highcharts-more에 BoxPlot이 포함되어

2026년 9월 11일
·
0개의 댓글
·

Recharts 차트 커스터마이징하기

시력(UDVA)은 Line Chart를 사용하고, 구면도수(SPH)와 난시도수(CYL)는 Bar Chart를 사용했지만 대부분의 설정은 공통으로 사용하였다. 실제로 차트 종류만 다를 뿐, ResponsiveContainer CartesianGrid XAxis

2026년 7월 14일
·
0개의 댓글
·

html2canvas와 jsPDF로 PDF 결과지 생성하기

견적 결과지 화면을 PDF로 생성해 서버에 저장하고, 이후 카카오톡으로 전송하는 기능을 구현했다. 화면에 보이는 UI를 그대로 PDF로 만들어야 했기 때문에 html2canvas-pro로 DOM을 이미지처럼 캡처하고, jsPDF를 이용해 PDF 파일로 변환하는 방식을

2026년 7월 12일
·
0개의 댓글
·

Recharts를 활용한 시력교정술 결과 비교 차트 구현하기

시력교정술 예측 서비스에서는 단순히 하나의 수술 결과를 보여주는 것이 아니라 여러 수술 방식을 한 화면에서 비교할 수 있어야 한다. 사용자는 다음과 같은 수술 방식의 예측 결과를 확인할 수 있다. LASIK LASEK SMILE ICL 또한 각 수술 방식에 대해

2026년 7월 10일
·
0개의 댓글
·

Next.js에서 NICEPAY JS SDK 연동하기

NICEPAY는 별도의 React 라이브러리나 npm 패키지를 제공하지 않는다. 대신 브라우저에서 JS SDK를 로드한뒤 AUTHNICE.requestPay()를 호출하는 방식으로 결제 진행 공식 문서에서도 JS SDK URL(https://pay.nicepay.co.

2026년 7월 6일
·
0개의 댓글
·

VSCode와 gitlab의 ssh를 연동하기

1. gitlab 프로젝트의 ssh 주소 복사 2. 원격 저장소 연결 2-1. 이미 origin이 있다면 아래처럼 변경 origin = 내 프로젝트가 연결된 원격 저장소 이름 git remote -v 이런 게 나오면 이미 GitLab이랑 연결돼 있다 = origi

2026년 7월 1일
·
0개의 댓글
·

deploy.sh를 이용한 Next.js 프로젝트 수동 배포

파이프라인을 거치지 않고 직접 반영해야할 때 수동 배포를 사용함 1. 서버 접속 2. 프로젝트 폴더로 이동 3. 배포 파일 업로드 파일 수정 후 npm run build 꼭 하기!!! 로컬에서 빌드 결과물을 압축 생성된 압축 파일을 서버로 전송 4. deplo

2026년 6월 24일
·
0개의 댓글
·

GitLab CI/CD로 dev와 main 브랜치별 자동 배포 구성하기

dev 브랜치 -> 테스트 서버 배포 main 브랜치 -> 운영 서버 배포 전체 파이프라인 구조 stages: setup : 패키지 설치 test : 코드 검사 build : Next.js 빌드 deploy : 서버 배포 예시 파이프라인 구조 빌드 환경 image

2026년 6월 24일
·
0개의 댓글
·

ExcelJS를 활용한 엑셀 다운로드 기능 구현하기

## 요구사항 - 조회된 데이터를 엑셀로 다운로드 - 선택한 기간을 파일명에 포함 - 선택한 필터 정보를 파일명에 포함 - 헤더 스타일 적용 - 컬럼 너비 지정 - 숫자 데이터 가독성 향상 - 예) 충전금내역_2026-05-01_2026-05-31_충전금_열람.xlsx

2026년 6월 8일
·
0개의 댓글
·

토스 페이먼츠 next.js 연동

이 버전은 비회원도 가능 로그인한 회원만 가능할 때 무조건 성공 또는 실패 후 페이지 이동 필수 백엔드에게 정보 보내기 실패 결제 시간 초과 결제 실패 토스에서 제공하는 에러 코드 PAYPROCESSABORTED 사용자가 결제창을 닫음 "결제가 취소되었습니

2026년 5월 11일
·
0개의 댓글
·

refresh API는 왜 반드시 별도 axios 인스턴스로 분리해야 할까?

refresh API가 기존 axios 인스턴스를 타면, 자기 자신을 가로채는 interceptor 때문에 무한 루프가 생길 수 있다. 1️⃣ 기본 axios 인스턴스(api)는 “토큰 관리용”이다 보통 우리가 쓰는 api 인스턴스에는 이런 역할이 들어가 있음 req

2026년 5월 4일
·
0개의 댓글
·

Axios Interceptor로 Access Token 자동 갱신하기 (Refresh Token + Queue 처리)

request 인터셉터 토큰을 어디에 넣을지 헤더 형식 Request Interceptor: Access Token 자동 첨부 Access Token은 SessionStorage에 저장해두고, 모든 요청에 자동으로 붙인다. response 인터셉터 “언제 재발급할지

2026년 1월 28일
·
0개의 댓글
·

CI/CD 개념 정리

1. 내가 직접 하던 일(CI 없을 때) 2. CI를 쓰면 뭐가 달라질까? CI는 이 코드가 merge 되어도 괜찮은지 자동으로 검사하는 역할 lint / test / build를 자동으로 실행 하나라도 실패하면 merge 불가 사람이 빼먹을 수 없음 merge 가능

2026년 1월 12일
·
0개의 댓글
·

[회고] 2025년 - 취준생에서 스타트업 직원이 되기까지

2025년을 한 줄로 요약하자면,고통 끝에 낙이 온다는 사자성어가 가장 잘 어울리는 해였다.취업 준비를 다시 시작해야겠다고 마음먹은 순간부터 불안은 자연스럽게 따라왔다.다시 취준생이 되었고, 어디로 가게 될지 알 수 없는 상태에서 하루하루를 보냈다.서류는 셀 수 없을

2025년 12월 31일
·
0개의 댓글
·

GitLab CI/CD

GitLab CI/CD는 GitLab에 기본으로 내장된 CI/CD 시스템이다. 별도의 CI 툴(Jenkins, CircleCI 등)을 붙이지 않아도, 저장소 하나만 있으면 바로 파이프라인을 구성할 수 있다. 별도 툴 설치 ❌ GitLab 저장소에 바로 연동 ⭕ > 파이

2025년 12월 31일
·
0개의 댓글
·

CI/CD란?

CI/CD는 코드를 더 자주, 더 안전하게, 더 자동으로 배포하기 위한 개발 문화이자 자동화 파이프라인이다.Continuous Integration, 지속적 통합개발자가 코드를 자주(main 브랜치에) 병합하고, 그때마다 자동으로 빌드·테스트를 실행하는 방식각자 로컬에

2025년 12월 31일
·
0개의 댓글
·

개발을 시작하기 전, 내가 먼저 작성했던 4가지 문서

회사를 다니기 전에는 개발이라고 하면 자연스럽게 코드를 먼저 떠올렸다. 하지만 실무에 들어와 보니, 실제 개발은 코드를 작성하기 전 단계에서 이미 절반 이상 결정되고 있었다. 입사 후 한 달 동안 나는 실제 구현에 앞서 다음 4가지 문서를 작성해보았다. - 유스케이

2025년 12월 30일
·
0개의 댓글
·

Tailwind v4 vs 이전 버전: 코드 짜며 느낀 변경점만 딱 정리

Tailwind 4.0으로 넘어오면서 “공식 문서에 있는 차이점”보다, 실제로 코드를 치면서 바로 체감되는 변화가 있었다. 내 경우엔 크게 두 가지였다. 파일 삽입 방식이 바뀌었다 커스텀 유틸리티를 @utility로 정의하는 흐름이 생겼다 폰트 커스텀 설정 방식이 바뀌

2025년 12월 26일
·
0개의 댓글
·