docker로 mongo 이미지 빌드 남는 시간에 개인 프로젝트를 하나 만들어보려고 생각 중에 있다. 이번에 공공 데이터를 통해 데이터를 저장하는데 no-sql의 대표적인 mongoDB를 사용하려고 한다. 다만, 로컬에 그냥 mongoDB를 설치하는 것이 아닌 docker에 컨테이너를 띄워서 사용해보려고 한다. 설치과정docker pull mongo현재 내 기준은 도커를 이미 설치했다는 기준 하에 진행된다. 도커 설치의 경우에는 어렵지 않으니 직접 찾아보고 설치해본다. 도커를 설치했다면 위의 쉘 명령어를 통해 mongo를 설치한다. docker run --name mongodb-container -d -p "포트번호" -v mongo-data:/data/db mongo해당 쉘은 생성한 컨테이너에서 mongo를 실행시킨다. 포트 번호의 경우에.. 2024. 9. 20. 함수에서 변수를 명시하지 않았는데 할당됐다 작업 내용에 대해 코드 리뷰를 진행하던 도중에 함수를 통해 얻은 객체의 데이터로 바인딩하지 않고 아무것도 초기화되지 않은 값을 넣어버리는 실수를 했다. 당연히 undefined일 것이라 생각했고 데이터를 찍어보았는데 값이 제대로 넘어오는 이상한 상황이 연출되었다. 그냥 넘어가기에는 상당히 미심쩍은 부분들이 많아 수석님과 찾아보았고 원인은 예상치 못한 곳에 있었다. 함수를 통해 얻은 부분에서 해당 함수를 다시 점검해보니 객체를 리턴해주기 전에 내가 변수를 초기화해주질 않았었다. 타입스크립트가 아닌 자바스크립트 기반의 노드로 운영되다보니 발생한 문제였고 이는 자바스크립트의 특성에서 비롯되었다. 암묵적 전역변수 발생자바스크립트에서는 var, let 또는 const로 변수를 선언하지 않고 값을 할당한다면 해당 .. 2024. 9. 13. merge가 안되던 상황 업무 중에 잠시 작업내용을 revert하고 revert 당시의 소스를 올려야되는 상황이 생겨 작업했던 내용에 대해서는 revert하기 전 브랜치를 생성해서 담아두었다. 작업 이후에 원복을 해야되는 상황에서 git merge를 했으나 Already up to date.로 머지되지 않은 상황이 생겼다. 이는 히스토리 이슈인 것 같은데 이런 상황에서는 어떻게 해결했는지 기록을 남겨두려고 한다. git diff "Branch Name".."New Branch Name"가장 먼저 브랜치 간의 차이가 있는지 확인해보았다. 나는 여기서 쉘에 적힌 차이가 존재해 다음 스텝으로 진행했다. git diff "Branch Name".."New Branch Name" >> changes.patch현재 경로에 changes.p.. 2024. 9. 13. 데이터 사전 오라클 데이터베이스 테이블은 사용자 테이블과 데이터 사전으로 나뉘어있다. 앞서서 사용했던 테이블들은 모두 사용자 테이블이고 이번에 다룰 데이터 사전은 데이터베이스를 구성하고 운영하는데 필요한 모든 정보를 저장하는 특수한 테이블이다. 데이터 사전에는 운영에 있어서 중요한 정보들이 있다보니 오라클 데이터베이스는 이에 대해 접근하지 못하도록 허용하지 않는다. 대신 데이터 사전 뷰라는 것을 통해 DML을 통해서 조회해볼 수 있도록 하고 있다. 데이터 사전 뷰데이터 사전 뷰는 이름 앞에 접두어를 붙여 분류한다. 1. USER_XXXX - 현재 데이터베이스에 접속한 사용자가 소유한 객체 정보2. ALL_XXXX - 현재 데이터베이스에 접속한 사용자가 소유한 객체 정보 또는 다른 사용자가 소유한 객체 중 사용 허가를.. 2024. 9. 1. jest jest 모듈을 사용해서 테스트 코드를 작성했다. jest 외에도 mocha 등이 있는데 commonJS 스타일을 유지하면서 작성하기 위해 jest를 사용하기로 했다. 설치npm install --save-dev jest실제로 운영에서는 테스트 코드를 작성하지 않기 때문에 개발환경에서만 동작할 수 있도록 설치를 진행한다. 근데 난 잘 모르겠다. { "scripts": { "test": "jest" }}package.json에 test를 jest로 변경한다. 사용법사실 이건 정확하다고 볼 수는 없지만 테스트 코드는 꼭 성공한 케이스만을 작성하지는 않는다. 여러 케이스를 두고 실패하는 케이스를 적용해야 휴먼 에러를 피할 수 있다고 생각하기 때문이다. describe('테스트 네임', () => {.. 2024. 8. 26. 2193번 Python 이번에도 점화식을 먼저 찾기 위해 0이 마지막일 때, 1이 마지막일 때를 비교해보았다. d[1][0] = 0d[1][1] = 1d[2][0] = 1d[2][1] = 0d[3][0] = 1d[3][1] = 1마지막 값이 0번째인 거부터 확인해보면 d[3][0] = d[1][0] + d[2][0]이라는 것을 확인할 수 있다. d[i][j] = d[i-2][j] + d[i-1][j]다음과 같은 점화식을 구해낼 수 있다. import sysn = int(sys.stdin.readline())dp = [[0] * 2 for _ in range(n + 1)]cnt = 0for i in range(1, 3): dp[i][0] = cnt cnt += 1cnt -= 1for i in range(1, 3): .. 2024. 8. 22. 이전 1 2 3 4 5 6 7 ··· 18 다음