[oracle] sqldeveloper 에서 오라클 프로시저(procedure) 디버깅하기.

By | 2월 8, 2024

준비 계정 권한 부여 DEBUG CONNECT SESSION DEBUG ANY PROCEDURE sqldeveloper 설정 변경 도구 > 환경설정 > 디버거 > 데이터베이스 디버그 프로토콜 DBMS_DEBUG_JDMP => DBMS_DEBUG 로 변경 DBMS_DEBUG_JDMP 상태에서 문제 없으면 굳이 바꾸지 않아도 됨. 프로시저를 ‘디버그를 위한 컴파일’로 컴파일 해야 함. 디버깅 breakpoint 찍고 디버깅 시작!

구글 크롬(chrome)에서 개발자 도구를 띄울 때 느린 경우 (약 5초 딜레이) – The launch of chrome dev tools is too slow

By | 1월 19, 2024

내 경우는, 크롬 개발자도구의 언어가 한국어(Korean)로 되어 있을 때 이런 현상이 발생했다. 영어(english-US)로 변경하니 다시 빠릿빠릿 해 졌다. 이런 현상이 발생 할 때 나는 폐쇄망에서 작업을 했었는데, 한글로 설정해도 한글이 되지 않는 것을 보니, 내부적으로 download timeout 등이 걸린 게 아닌가 추측해 본다.

[spring] 파일 다운로드 컨트롤러 샘플 (file download, ResponseEntity)

By | 1월 5, 2024

환경 spring 4.3.25 import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import java.nio.file.Files; … @Controller public class FileController { @GetMapping("/download") public ResponseEntity<byte[]> download(HttpServletRequest request, Model model){ // TODO: 필요할 경우 여기에 권한 검증 로직 추가 // 아래의 값들은 DB조회 등을 통해 가져온다고 가정 String fileFullPath = "blabla~"; // file physical full path String oriFileName =… Read More »

[spring/mybatis] 오라클(oracle) 프로시저(procedure) 파라미터가 배열(array)일 경우 mybatis typehandler 예제

By | 12월 28, 2023

oracle type object CREATE OR REPLACE TYPE 스키마."VARR" IS TABLE OF VARCHAR2(2048); TypeHandler import oracle.jdbc.Oracleconnection; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType public class VarrTypeHandler extends BaseTypeHandler<Object> { /** * DB에서 관리중인 Type의 이름 * – DB에 이 이름으로 Type Object가 미리 준비되어 있어야 함. */ private static final String TYPE_NAME = "VARR"; /** * 최초 구현하지 않았던… Read More »

[spring] jsp > jstl 에서 spring bean 에 접근하는 방법

By | 12월 19, 2023

테스트 환경 spring 4 포인트 jsp에서 접근하고자 하는 spring bean을 view resolver 에서 expose 해 준다. 샘플 코드 (spring) dispatcher-servlet.xml > InternalResourceViewResolver, TilesViewResolver 등에서 아래와 같은 형식으로 property를 set 해 준다. <property name="exposedContextBeanNames"> <list> <value>[jsp에서 접근하기 원하는 bean name]</value> </list> </property> 샘플 코드 (jsp) <c:set var="[변수명]" value="${[bean name]}" scope="application" /> 소감 application scope에 데이터를 셋팅하기… Read More »

[intellij] 인텔리제이에서 라이브러리 프로젝트의 소스를 직접 참조하는 방법 (maven과 무관한 개발용 설정)

By | 12월 14, 2023

프로젝트 A, B, C가 있다고 하고, C는 라이브러리 프로젝트라서 A, B 각각의 프로젝트에서 참조한다고 가정했을 때, A, B 프로젝트 입장에서 어떻게 C를 끼워넣는 설정을 하느냐 하는 문제임. (maven 의존성과는 별개로, 개발환경 설정임.) build path 잡기 (컴파일 오류 잡기) Project Structure > Modules > 프로젝트 선택 > Dependencies 탭 > ‘+’ 버튼(add) > 3. Mudule Dependency… Read More »

[spring] 프로퍼티 파일 (*.properties) 의 내용을 정적 멤버(static member field)에 할당하는 방법 (feat. @Value)

By | 12월 5, 2023

방법 1 @Value 를 field가 아닌 static setter method 에 붙이기. => component 초기화 시 자동으로 setter가 호출된다고 한다. @Component public class MyBean { private static String staticProperty; @Value("${my.property}") private void setStaticProperty(String myProperty) { MyBean.staticProperty = myProperty; } public static String getStaticProperty() { return staticProperty; } } 소감 null fallback을 따로 해 주지 않아도 되서… Read More »

이제는 지원 중단된, adobe flash로 작성된 사이트를 보는 방법

By | 11월 1, 2023

https://news-bank.co.kr/entry/Adobe-Flash-Player 요약 기존 flash player uninstall https://helpx.adobe.com/kr/flash-player/kb/uninstall-flash-player-windows.html#main_Download_the_Adobe_Flash_Player_uninstaller 아래 링크에서 firefox용 flash player 설치 http://download.mshdiau.ac.ir/VirtualClass/adobe%20flash/ pale moon browser 설치하여 실행 https://www.palemoon.org/download.shtml

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 »