기술공부 22

[typescript] 깊은 복사와 얕은 복사, 그리고 JSON (feat. 얕은복사의 최상위 속성)

typescript로 개발중에앞서 개발했던 함수에서는 전혀 문제가 되지 않았던 부분이그와 유사한 다른 함수를 개발할 때 동일한 로직으로 개발을 하려니 웬 갑자기 얕은복사로 애를 먹고 있는데챗 GPT가 문제가 되던 부분을 짚어줬다. 깊은복사처럼 실행되던 나의 얕은복사 코드;다시는 이런 일이 없도록 포스팅해두기로 한다.    제공해주신 코드의 전반적인 구조는 잘 작성되어 있지만, 얕은 복사로 인한 문제가 발생할 가능성이 있습니다. 특히, 중첩된 객체인 object_statistics와 event_statistics와 같은 속성이 참조를 공유하기 때문에, 예상치 못한 상호 간섭이 발생할 수 있습니다.코드를 살펴보면 아래와 같은 문제가 있을 수 있습니다:1. 중첩된 객체의 얕은 복사 문제regionStatTem..

기술공부/언어 2024.09.10

[Node.js] 왜 pg 라이브러리에서 bigint를 string으로 인식할까?

현재 진행하고 있는 프로젝트에서 postgresql의 stored procedure를 활용하는 케이스가 많은데,집계함수 sum을 사용해 반환되는 값은 integer가 아닌 bigint로 반환이 된다.이를 node.js에서 받아서 처리하려고 하다 보니 return값이 string으로 오는 것을 발견했다.(나는 분명 count를 누적했는데 01011201 이런값으로 누적이 되네..?) 원인을 좀 찾아보니 node.js에서 사용중인 pg라이브러리의 처리 로직이 bigint를 string으로 받아 처리한다는 게 원인이었음을 알았다. 데이터 소실 이슈 발생을 막기 위해서라는데. 내가 문서를 제대로 읽지 않은 탓이겠지..? 아래는 chatGPT에서 답변한 내용이다. 나의 질문_PostgreSQL에서 sum() 함수..

기술공부/언어 2024.08.26

[Node.js] jsonpath 패키지 사용 시 pkg build Error (Error: Cannot find module 'esprima' Require stack:- aesprim) 발생 해결 방법

jsonpath 패키지를 설치하고 나서부터 pkg로 빌드한 exe가 실행이 안 되는 문제가 발생. 원인을 찾아보고자 애꿎은 Visual studio 2022도 재설치 해보고,,[C++를 사용한 데스크톱 개발] 워크로드도 재설치 해보고..어떤 StackOverflow 답변에서는 개별 설치에서 SDK for Windows 10도 체크 후 설치해야한다는 최신 댓글도 달렸길래 추가 설치도 해봤는데 해결될 조짐이 1도 안 보였다. 그러다가 발견한 아래 글.. I found a pretty good workaround for my use case. Instead of require("jsonpath"), use require("jsonpath/jsonpath.min")The latter is basically th..

기술공부/언어 2024.06.25

[PostgreSQL] Insert 쿼리에서 Serial 컬럼 값 삽입하기

일반적으로 Auto Increment column일 경우 컬럼값이 자동증가하게 되는데 Insert query를 활용하려고 할 때 귀찮아지는 경우가 있다. INSERT INTO tmptable(column1, column2, ....) values(value1, value2, ...); 이런 귀찮은 상황을 모면하게 해 줄 방법 중 신박한 방법을 알게 되어 포스팅으로 기록하려고 한다. 아래와 같이 해주면 되는건 알고있었지만, INSERT INTO problem VALUES ( nextval('problem_id_seq'), 'Hello World', 'unknown', '/var/www/files/problems/' || lastval(), 'Python' ); 이는 sequance 명을 넣어주어야 해서 이..

기술공부/DB 2023.08.22

[Node.js] Express app에서 정적 라우트 경로값을 동적으로 변경하기

Chat GPT는 어떻게 활용하느냐에 따라 옳은 정보를 주기도 하고, 되려 더 돌아가는 정보를 주기도 하는 듯 하다. 오늘 chat GPT의 덕을 톡톡히 봤는데, 그 중에 하나가 바로 express.static()를 동적으로 활용하는 방법이다. 처음 가이드 해 준 방법 Q. nodejs 에서 이벤트가 발생했을 때 express static path를 바꾸고싶은데 방법이 있을까? // 기본 정적 경로 설정 app.use(express.static(path.join(__dirname, 'public'))); // 이벤트 발생 시 정적 경로 변경 function changeStaticPath(newPath: string) { app._router.stack.forEach((middleware) => { if ..

기술공부/언어 2023.06.16

[javascript] Object array 에서 특정 key-value를 만족하는 feature만 추출하기

아래와 같이 오브젝트 배열 속에서 원하는 요소만 갖는 배열을 만들 수가 있다. const people = [ { name: '홍길동', age: 32, job: '무직', married: true, }, { name: '김도끼', age: 20, job: '사무직', married: false, }, { name: '하아늘', age: 19, job: '학생', married: false, } ]; // 미혼만 추출 const happyPeople = people.filter((friend) => { return people.married === false; }) console.log('현재 미혼입니다. ', happyPeople); ps. Object를 copy하려면 아래와 같이 하면 된다. // as..

기술공부/언어 2023.03.03

[SW] 네트워크 패킷 분석 프로그램 WireShark 사용법

WireShark는 가장 보편적인 무료 오픈 소스 네트워크 패킷 분석 프로그램이다. 본 프로그램 사용에 필요한 참고정보를 정리할 겸 포스팅을 올리려고 한다. (본 포스팅 정보는 포스팅 하단에 기재한 Reference 글을 참고하여 작성 및 정리한 내용입니다.) 💡 본 프로그램 사용에 앞서 참고정보! 패킷 : 네트워크상에서 주고받는 메시지 데이터 블록의 기본 단위. 이메일을 보내거나, 파일을 다운로드 받거나, 동영상을 시청하는 등 인터넷에 접속하여 우리가 행하는 모든 행위는 패킷의 운송 과정을 통해 이루어질 수 있는 것 필터 기능 특정 조건을 만족하는 패킷만 추려 화면에 보여줌 조건 예시) 1. 특정 IP 주소 또는 port번호를 사용중인 네트워크 플로우 2. 프로토콜별로 패킷을 분리하는 작업 필요 시 [..

기술공부 2022.07.18

[openlayers] WFS으로 호출하는 레이어의 범례를 설정해보자

OpenLayers2 아닙니다! 지난 게시글에 이어 POC 수행 중에 WFS로 가져오는 레이어의 범례를 설정하고자 할 때 그 방법에 대한 게시글이 많이 안보여서 정리해보려고 한다. GeoServer의 벡터 레이어에 스타일을 설정하고 WFS 방식으로 가져오면 레이어의 스타일이 Default로 보여지는 것을 확인할 수 있다. SLD를 설정한 뒤 범례대로 데이터를 보고싶다면 WMS 방식으로 가져와야 하는데, 이러면 Feature의 Attributes를 가져올 수 없으므로 이 방법은 꽝이다. (WMS는 이미지 서비스이므로 불가능..) 자 그럼. WFS 방식으로 레이어를 가져올 때 openlayers에서 범례를 설정하고 싶다면? Geoserver의 SLD는 WFS방식으로 Layer 호출 시 적용이 안 됩니다. 그..

기술공부 2022.06.15
728x90
반응형