분류 전체보기 541

템플릿 메소드(Template Method) 패턴 실제 적용 사례 - 디자인 패턴

개요본 문서는 본인의 개발향상과 기억의 장기화를 위해 기록해두기 위해 사용한 문서로 존칭은 생략하기로 한다.FX 개발도중 사용자마다 원가 + 마진 + 마크업이란 수수료가 붙는 로직이 있는데 템플릿 메소드 패턴을 사용하여 구현하였다.템플릿 메소드 패턴을 설명하기 위해 세부 코드는 생략하였고 큰 틀에서 설명하기로 한다.아래는 공식인데 약식으로 설명한다.- 일반환율(USDKRW 비롯한 KRW 없는것 즉 USDJPY, EURUSD 등)- 재정환율(USDKRW 제외한 ~/KRW 있는것 즉 JPYKRW EURKRW 등): 일반환율 .바로환전 bid=원가 + 원천마크업 + 바로환전마진 ask=원가 + 원천마크업 + 바로환전마진 .현물환 bid=원가 + 원천마크업 + 마크업 + 스왑 + 마진..

객체지향 2024.08.23

이기종간 데이터 변환(한글) 전문에 한글 전송 방법

전문 Input 값에 한글이 들어가는경우 한글을 그대로 사용하면 안된다.한글을 Uint8Array는 8비트 부호 없는 정수(0-255) 배열을 나타내는 JavaScript의 타입으로 변환해야 합니다.console.log( iconv.encode('홍길동', 'euc-kr') )iconv.encode('홍길동', 'euc-kr')의 결과로 받은 Uint8Array [200,171,177,230,181,191]는 "홍길동"이라는 한글 문자열을 EUC-KR 인코딩으로 변환한 바이트 배열입니다. 이를 자세히 설명하겠습니다:Uint8Array는 8비트 부호 없는 정수(0-255) 배열을 나타내는 JavaScript의 타입입니다.각 숫자는 EUC-KR 인코딩에서 해당 한글 문자를 나타내는 바이트 값입니다:[200,..

프로그래밍/Js 2024.08.22

재귀함수 -> 꼬리물기 재귀함수 -> 반복문

재귀함수를 꼬리 재귀 함수로 변환하고, 그 다음 반복문으로 변환하는 것은 재귀 호출을 명시적인 반복 구조로 바꾸는 과정입니다. 꼬리 재귀는 함수의 마지막 작업이 자기 자신을 호출하는 형태로, 이론적으로는 반복문으로 쉽게 변환할 수 있습니다.꼬리 재귀를 반복문으로 바꾸는 이유는 스택오버플로우 때문입니다.그렇게 때문에 꼬리재귀함수 와 반복문간의 코드 변환은 자유자재로 할수 있어야 합니다.재귀함수 문제 중에서 다른 문제로는 다음과 같은 것들이 있습니다.https://www.youtube.com/watch?v=h80tLv0fn88&list=PLBNdLLaRx_rKOFzA3txlG5rf9ZaVUuvmv&index=210분정도 후 부터 tail recursion 보시면 됩니다. 1. 피보나치 수열피보나치 수열은 각..

알고리즘 2024.08.20

vue3 부모->자식 자식->부모 데이터 전달방법

부모에서 자식으로 데이터 전달부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달하기 위해 props를 사용합니다.ParentComponent.vue ChildComponent.vue 자식에서 부모로 데이터 전달자식 컴포넌트에서 부모 컴포넌트로 데이터를 전달하기 위해 emit을 사용합니다.ChildComponent.vue Send Message to ParentParentComponent.vue {{ childMessage }} 위 예제에서는 부모 컴포넌트에서 자식 컴포넌트로 메시지를 props를 통해 전달하고, 자식 컴포넌트에서 부모 컴포넌트로 메시지를 emit을 통해 전달합니다. props와 emit을 함께 사용하여 부모와 자식 컴포넌트 간의 데이터를 효과적으로 주고받을 수..

프로그래밍/Js 2024.08.12

인텔리제이 2020.3 에서 java 17 -> java 11 spring boot 3 -> 2

인텔리제이 2020.3 에서는 java 17  작동이 안된다.java17 사용하려면 인텔리제이 버전을 높여야 한다. 그렇지 않으면 java 11로 낮추어야 하는데 스프링 부트 3은 java 17 부터 지원하기 때문에스프링 부트를 2로 내리는 방법을 알리고자 한다. 1. project SDK 는 java 11 로 한다.Java version 17 21 22 만 나온다.일단 17 로 하자2. 프로젝트 완료된 후 pom.xml 에서 스프링 부트 버전을 2버전으로 변경한다.3. 톰캣 시작후 정상적으로 안되면 아래 restart 한다.

Vue 3에서 mitt를 사용하여 이벤트 핸들러 중복 실행 방지하기

Vue 3 애플리케이션에서 여러 컴포넌트에서 동일한 컴포넌트를 사용하면서 mitt를 활용한 이벤트 핸들러가 중복 실행되는 문제를 해결하는 방법을 소개합니다.이 글에서는 전역 이벤트 버스를 사용하여 이벤트 리스너가 한 번만 등록되도록 하는 방법을 설명합니다.문제상황여러 컴포넌트(order.vue, rfOrder.vue, marketWatch_spot.vue, marketWatch_exchange.vue)에서 동일한 컴포넌트(currencyMaster.vue)를 사용하고 있습니다.mitt를 사용하여 이벤트(FAReceive)를 관리하는데, 각 컴포넌트가 마운트될 때마다 동일한 이벤트 리스너가 중복 등록되어 이벤트 발생 시 핸들러가 여러 번 호출되는 문제가 발생했습니다.문제 해결 방법이 문제를 해결하기 위해 ..

프로그래밍/Js 2024.06.13

[vue3] emitter.on 이벤트 사용시 emitter 갯수가 증가하는 이유

원본 코드const loadChartDatahandler = data=>{ // to do};onUnmounted(()=>{ emitter.off('loadChartData', loadChartDatahandler) }):onMounted(()=>{ emitter.on('loadChartData', data=>{ loadChartDatahandler(data); })}); Vue 3에서 이벤트 리스너를 등록하고 해제하는 과정에서 loadChartData 배열의 길이가 계속 늘어난다면, 이는 이벤트 리스너가 제대로 제거되지 않았기 때문일 가능성이 큽니다. 이 문제를 해결하려면 이벤트 리스너를 등록할 때 사용하는 함수 참조를 일관되게 유지해야 합니다.문제는 onMoun..

프로그래밍/vue 2024.06.11

[ES6] location.href 이동하는데 history 객체 추가 안되는 방법

ES6(ECMAScript 2015)와 함께 사용하는 window.history 객체를 통해 페이지를 이동할 때, 브라우저의 히스토리에 남기지 않으려면 replaceState 메서드를 사용하면 됩니다. 이 메서드는 현재 히스토리 항목을 대체하여, 새로운 항목을 추가하지 않고 URL을 변경할 수 있습니다.예제 코드아래는 JavaScript를 사용하여 페이지를 이동하면서 히스토리에 남기지 않는 코드입니다://방법1window.location.replace('#/mobile/marketWatchTwo');//방법2// URL을 변경할 때 history에 남기지 않고 이동하는 코드const newUrl = '/new-page';// state: 히스토리에 저장할 데이터 객체, title: 새 페이지의 제목 (대..

카테고리 없음 2024.06.03

[vue3] Vue3 프로젝트에서 웹과 모바일 연동 문제 해결 emitter 문제

문제 설명Vue3를 사용하는 프로젝트에서 웹에서는 emitter를 통해 이벤트가 정상적으로 전달되지만, 모바일 앱에서는 이벤트가 전달되지 않는 문제가 발생했습니다. 문제의 원인은 웹과 모바일의 초기 접근 파일이 다르기 때문입니다.문제 원인웹 초기 접근 파일: AppTr.vue모바일 초기 접근 파일: AppMobileTr.vue문제가 발생한 컴포넌트는 infoChartToTr.vue입니다. 이 컴포넌트가 웹에서는 AppTr.vue에 import 되어 있어 이벤트가 정상적으로 처리되지만, 모바일에서는 AppMobileTr.vue에 import 되어 있지 않아 이벤트가 처리되지 않았습니다.해결 방법모바일 초기 접근 파일인 AppMobileTr.vue에 infoChartToTr.vue 컴포넌트를 import 하..

프로그래밍/Js 2024.05.29