기술공부/언어 9

[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

[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

[C#] 라이브러리 만들어보기 - enum(열거형)

요즘 인프런(Inflearn)에서 [C# 중급 강좌] 라이브러리 만들기 강의를 듣고있다. 몇 강의 안되는데, 좋은 정보를 많이 담고있는 것 같아서 굉장히 유용하다. 아래는 강의 정보. [무료] [C# 중급 강좌] 라이브러리 만들기 - 인프런 | 강의 라이브러리를 구축하는 것은 프로그래머로서 재산을 축적하는 것과 같다고 생각합니다. 미국 캘리포니아 에서 프로그래머로 활동중이신 Alongside Y 님이 알려주는 C# 강좌 입니다., - 강의 소개 | www.inflearn.com 오늘은 강의 중간에 알게된 키워드 enum(열거형) 에 대해서 정리해보려고 한다. 처음 알게된 개념이기도 하고, 사용법도 내게는 신박했기 때문! enum(열거형)이란? enum은 열거형 상수(constant)를 표현하기 위한 것으..

기술공부/언어 2022.04.26

[C#] List slicing - Skip과 Take

Python에서의 List slicing은 매우 간편하다. Length 4인 Array에서 index 3부터 끝까지 출력하고싶다면 array[3:]이라고 하면 된다. 매우 간편.. 리스트를 거꾸로 출력하고 싶을때는 array[::-1]이라고 하면 된다. 진짜 간편... 그럼 C#은 어떨까? 애석하게도 저렇게 간편한 방법으로는 표현할 수가 없다... 그래서 System.Linq 라이브러리에서 제공하는 Skip method와 Take method를 활용하여 Slicing할 수 있다. IEnumerable.Skip(int) | IEnumerable.Take(int) 라이브러리 : System.Linq Return : An IEnumerable that contains the elements that occur..

기술공부/언어 2022.04.02

[C#] List정렬 - OrderBy

System.Collections.Generic 라이브러리의 List 자료형. List정렬에는 Sort() 함수를 사용하는것이 보편적이지만 특정 인자에 대해서 Sorting할 수 있는 OrderBy()와 OrderByDescending()와 같은 함수를 사용할 수도 있다. 그럼 바로 한번 테스트해보자. 해당 함수는 백준의 10814번, 나이순 정렬 문제를 풀 때 적용하였다. [18014] 나이순 정렬(C#) 단순 Sorting방식으로만 정렬해봤다면 고개를 갸우뚱 할 수 있는 문제. 제한시간 : 15mins 시간복잡도 : O(NlogN) var varN = Console.ReadLine(); int intN = varN == null ? 0 : int.Parse(varN); // Map형식으.. jy060..

기술공부/언어 2022.03.31
728x90
반응형