Spring 4 에서, controller method argument 로 HttpServletResponse를 추가했을 때, ContentNegotiatingViewResolver 를 통한 json view로의 resolving이 실행되지 않았던 건에 대하여

By | 10월 16, 2023

쓰고 보니 무슨 라노벨 제목처럼 되어 버렸네; 아무튼, 당연히 되어야 하는 json view response가 되지 않아서 한참을 삽질하다가 원인을 파악했다. (response가 argument에 있으면 안됨) 만약 특정 업무에서 response를 반드시 가공해야만 하는 경우가 생긴다면, 이미 만들어 둔 custom json view 에 분기코드를 심는 것이 좋을 것 같다. (controller 에서 model.addAttribute를 통해 분기 플래그 셋팅하는 등) gpt의… Read More »

항공권(비행기표) 예약 취소(환불)시 주의사항

By | 8월 23, 2023

인터파크 투어를 가끔 이용하는데, 이번에 굉장히 아픈 환불을 했다. 항공권 값이 24만원인데, 당일취소가 아니라 익일 후 취소라서 어느정도 수수료가 발생할 것은 알고 있었다. 항공사 규정을 보니 6만원 정도 수수료가 발생하는 것 같아서 취소를 했더니… 내가 받은 최종 환불 금액은… 24만 – (항공사 수수료 6만 * 2(왕복)) – 발권대행수수료 1만 – 취소 수수료 3만 = 8만원… Read More »

윈도우 설치(windows install) 관련 경험 메모 및 팁 정리

By | 7월 6, 2023

BIOS gigabyte 바이오스 업데이트 (bios update) 를 q-flash 방식으로 할 경우, bios를 옮길 usb는 fat32 형식으로 포맷되어 있어야 한다. WINDOWS 윈도우 설치시 에러 메시지 0x80300024 선택한 위치에 Windows를 설치할 수 없습니다. BIOS에서 윈도우를 설치할 디스크를 최우선 순위에 둔다.

[react] input, textarea 등에서 영어 입력을 영대문자(uppercase)로 변환해 주는 샘플코드

By | 6월 28, 2023

커서 위치를 유지하는 것이 포인트 … onChange={(e) => { modifyUpperCase(e, forceUpperCase); }} … export const modifyUpperCase = (e: React.ChangeEvent<any>, forceUpperCase: boolean) => { if (forceUpperCase) { const et = e.target; const selectionStart = et.selectionStart; const selectionEnd = et.selectionEnd; et.value = et.value.toUpperCase(); // 조건에 따라 영대문자 변경 et.setSelectionRange(selectionStart, selectionEnd); // 커서 위치 유지를 위한 작업 }

yarn 실행시 exit code 129 일 경우 (npm은 137)

By | 6월 27, 2023

내 경우에는 OOME(out of memory) 가 원인이었음. 처음에 node.js 메모리만 늘렸더니 해결이 되지 않았다. – NODE_OPTIONS=”–max-old-space-size=8192″ – 머신의 메모리가 충분하지 않은 상태에서 파라미터만 조정을 해서 의미가 없었음. 머신의 ram도 같이 늘려 주었더니 문제가 해결되었음.

[javascript] 정규표현식 샘플 (정규식, regex)

By | 6월 26, 2023

export const REGEX_영문만 = /^[A-Za-z ]*$/; export const REGEX_영문_숫자 = /^[a-zA-Z0-9 ]*$/; export const REGEX_영문_특수문자 = /^[a-zA-Z \{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]*$/; export const REGEX_영문_숫자_특수문자 = /^[a-zA-Z0-9 \{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]*$/; export const REGEX_한글만 = /^[ㄱ-ㅎㅏ-ㅣ가-힣 ]*$/; export const REGEX_한글_숫자 = /^[ㄱ-ㅎㅏ-ㅣ가-힣0-9 ]*$/; export const REGEX_한글_특수문자 = /^[ㄱ-ㅎㅏ-ㅣ가-힣 \{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]*$/; export const REGEX_한글_숫자_특수문자 = /^[ㄱ-ㅎㅏ-ㅣ가-힣0-9 \{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]*$/; 비고 반복되는 부분을 상수화 하여 빼고 싶었으나,… Read More »

[javascript] 특정 배열에서, 다른 배열에 속한 요소들을 제외시키기 (배열 각 요소 내의 특정 속성을 기준으로 유사성 판단, array, exclude, 차집합, minus)

By | 6월 8, 2023

// Sample arrays const array1 = [ { id: 1, name: 'Apple' }, { id: 2, name: 'Banana' }, { id: 3, name: 'Orange' }, ]; const array2 = [ { id: 2, name: 'Banana' }, { id: 4, name: 'Grapes' }, ]; // Get differences based on the 'id' property const differences = array1.filter(item1… Read More »

[react-hook-form] form.watch vs useWatch (성능을 위해서는 useWatch 고려)

By | 5월 18, 2023

환경 "react-hook-form": "^7.34.0" 개요 form.watch 사용시, 모든 form 컴포넌트를 리렌더링하기 때문에, 성능에 영향을 미치는 경우가 있었음. useWatch는 re-rendering의 범위를 단위 컴포넌트 내로 제한하며, 필드명으로 범위를 또 제한할 수가 있었음. 샘플 코드 // fromDate, toDate 두 개의 props를 받는 datepicker에서의 작업예시 const watchVals = useWatch({ control: form.control, name: [fieldName, fieldName2 || 'dummy'] }); 위 샘플에서는 control,… Read More »