단말기 결제 VAN 결제 데이터 동기화 하여 회계 전표 자동 생성 시스템화까지 ...☠️
·
변소
임꺽정 회사 회계는 더존을 이용하여 회계 전표를 작성하고 있었는데장길산을 모회사로 두고 있는 홍길동 회사와 임꺽정 회사가 합병하면서 흩어져 있는 시스템들이 제대로 인터페이스가 연동 되지 않고 있었다. 임꺽정 회사 전표는 이제 장길산 회사 회계 시스템에 데이터가 입력되어야 하는데이 작업을 9년 가까이 수기로 하고 있었다. (사람이.. DB로 강제로 데이터를 밀어넣고 있었음..🤔) 이 부분을 자동화 할 수 있는지 나에게  기술검토를 요청 하였고확인 하면서 많은 문제가 있고  왜 그동안 시도하지 못했는지 알게 되었다.문제점 1. 시스템이 많이 노후화 되었고 유지보수도 제대로 안되고 있는 상황 또 포스 프로그램을 직접적으로는 수정할 수 없는 상황 (관리는 되지 않지만 외주업체가 따로 있는 상태) 이며 POS가..
API 동시성 문제 개선하기 (MAX + 1 Key 채번)😡
·
Develop/Trouble Shooting
결제 API  동시성 이슈.. 전자락카 매출정보를 연동하는 API 동시성 문제를 개선해보자!작업 할 당시에 개발 환경은 jdk 17 , spring boot , mybatis , oracle 이다. 키오스크에서 결제를 하면 VAN 결제정보 데이터를  API를 이용하여 저장하는 단순한 구조이다.   api 응답시간 0.3초 키오스크를 이용하는 손님도 적고 문제가 생길거라고는...미처 생각하지 못했다 😒 이러고 시간이 한참 지나고나서.....이용자수가 엄청 늘었다... 혹시? 동시성 문제가 생기진 않았을까.. 로그를 보니중복키 로그가........ 😓 개선하고자테스트코드를 수정하고 디버깅을 진행 하였다.문제점 찾기예시 코드 AS-IS @Transactional(rollbackFor = Excepti..
window 10 enterprise 라이센스 만료 후 일정 사용 시간 지나면 강제 종료 되는 현상 해결 방법
·
변소
회사 남는 pc 에 로컬 database를 테스트용으로 사용하고 있는데라이센스가 만료 되어 1시간 정도 사용하면 강제적으로 종료되는 것을 확인 하였다. (윈도우 이벤트 뷰어에서 확인 가능)window license monitoring service를 일시적으로 중지하여 강제 부팅을 막을 수 있다. 해당 서비스를 중지 하기 위해서 두번째 참조 링크를 참고하여 따라하면 된다! 😁추후 라이센스 구매 전까지는 .. 😂https://learn.microsoft.com/en-us/sysinternals/downloads/psexec PsExec - SysinternalsExecute processes on remote systems.learn.microsoft.com https://digitalitskills...
newman 을 이용하여 node 서버 부하 테스트 및 pm2 클러스트 모드 사용 / 커넥션 풀 사용하여 부하 예방하기 🐝
·
Develop/DevOps
후기 다른 사람이 만든 코드를 유지보수한다는게 정말 쉽지 않은 것 같다..또 java/spring boot 가 아닌 node/express 환경이다 보니 정이 더 안붙는... 😒원인특정 기간에 예약이 몰려 서버에 부하가 되는 상황 확인  테스트 방법 1. 포스트맨을 이용하여 예약 api 컬렉션 준비2. node에 newman 종속성 추가 및 실행코드 작성3. pm2 모니터링  const newman = require('newman'); // Newman 모듈const instances = 900; const runNewmanInstance = () => { return new Promise((resolve, reject) => { newman.run({ collec..
[Request processing failed: org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column '컬럼명' from result set. Cause: java.sql.SQLException: 부적합한 열 유형: getBLOB not implemented for class oracle.jdbc.driver.T4CLongRawAccessor 오류 해결 하
·
Develop/Trouble Shooting
[Request processing failed: org.mybatis.spring.MyBatisSystemException] with root causejava.sql.SQLException: 부적합한 열 유형: getBLOB not implemented for class oracle.jdbc.driver.T4CLongRawAccessor at oracle.jdbc.driver.GeneratedAccessor.getBLOB(GeneratedAccessor.java:1021) ~[ojdbc8-21.9.0.0.jar:21.9.0.0.0] at oracle.jdbc.driver.GeneratedStatement.getBLOB(GeneratedStatement.java:289) ~[ojdbc8-21.9.0.0..
[Oracle] 패키지,프로시저,펑션 에서 특정 문자열 찾기 🐝 🍯
·
Develop/DATABASE
SELECT T1.OBJECT_ID , T1.OBJECT_NAME , T1.OBJECT_TYPE , T2.TEXTFROM USER_OBJECTS T1 INNER JOIN USER_SOURCE T2 ON T1.OBJECT_NAME = T2.NAMEWHERE T1.OBJECT_TYPE IN ('PROCEDURE', 'FUNCTION','PACKAGE BODY') AND T2.TEXT LIKE '%검색 문자열%' 특정 프로그램 유지보수 중 데이터가 계속 편집이 되는데 인수인계 문서가 없어서 난감하다 😵‍💫그럴 때 자주 애용하는특정 테이블에 데이터가 어느 프로시저 또는 패키지에서 편집되는지 알 수 있는 꿀팁 🍯 쿼리  Ref. https://docs.oracle.com/en/database/oracle/o..
[Java] 리플렉션(Reflection) 이란 무엇인가요?
·
Develop/Back-End
지난 번 운이 좋아 여러 대기업 면접을 보게 되었는데k사 기술 면접에서자바 리플렉션이라고 물었던 적이 있다..난 당시에 대답을 시원하게 하지 못했다 😓  사실 웹 개발자가 리플렉션을 사용할 일은 드물것이라고 생각이 든다...    그래서 ..  Java Reflection 이란 무엇인가요? 🤔자바 리플렉션은 프로그램이 실행 중일 때 클래스, 메서드, 필드 등을 동적으로 조회하고 조작할 수 있게 해주는 기능이를 통해 런타임에 클래스의 구조를 알아내고, 객체의 메서드를 호출하거나 필드의 값을 수정할 수 있다.자바에서 이미 로딩이 완료된 클래스에서 또 다른 클래스를 동적으로 로딩 (Dynamic Loading)하여 생성자(Constructor), 멤버 필드(Member Variables) 그리고 멤버 메서..
[axios] Axios의 사용자 제공 입력의 잘못된 유효성 검사로 인한 CSRF 취약점 CVE-2023-45857
·
Develop/Front-End
사내 레거시.. 프론트 프로젝트에서 axios 라이브러리를 보던 중 이전에 보았던 보안취약점 코드가 떠올랐다..라이브러리를 업데이트 해야겠다.. 🤣 package.json 파일을 확인해보니..   "axios": "^0.27.2" 보안에 관심이 많은 사람들은참조 링크를 확인해보면 좋은 경험치가 될 것 같다   Ref.   https://github.com/axios/axios/issues/6006 CVE-2023-45857 (CWE-359) XSRF-TOKEN value is disclosed to an unauthorised actor · Issue #6006 · axios/axiosDescribe the bug Hi team, @jasonsaayman and @DigitalBrainJS, The l..