[바미] 해시 충돌 처리 방법
·
프로그래밍(Web)/공부일기
들어가기전에..해시 테이블에서 해시 충돌이 발생하면, 두 개 이상의 서로 다른 키가 같은 해시 값을 가질 수 있습니다. 이를 해결하기 위해 충돌을 처리하는 다양한 방식들이 존재하는데 그 중에서 체이닝(Chaining), 개방 주소법(Open Addressing), 이중 해싱(Double Hashing)이 대표적인 방법입니다. 오늘은 이 세가지 방법에 대해 알아보겠습니다.체이닝(Chaining)해시 충돌을 처리하는 가장 보편적인 방법 중 하나인데 해시 테이블의 각 버킷(Bucket)을 연결 리스트나 배열과 같은 자료 구조로 만들어서 충돌이 발생한 여러 데이터를 그 안에 함께 저장하는 방식입니다.동작 방식각 버킷에는 하나의 데이터가 저장되는 것이 아니라, 여러 데이터가 연결 리스트로 연결됩니다.같은 해시 값..
[바미] Obejct와 Map의 시간복잡도는 항상 O(1)일까? (feat. JS & Node)
·
프로그래밍(Web)/공부일기
들어가기전에..회사에서 진행하고 있는 프로젝트 내에서 Front 또는 클라이언트로 부터 query 또는 body로부터 파라미터를 받아오게 되는데 이에 따라 Validation 검사 처리를 개발하고 있던 중이였습니다. 그 파라미터를 체크하는 로직은 아래와 같은데const locations = ['body', 'query'];const params = req[location];Object.keys(params).forEach(key => { const rule = validation[key];...}validation이라는 Object안에 Validation체크를 할 수 있도록 만들고,  Validation 체크 조건에 걸리면 router단에서 API를 종료시키는 구조로 구현했는데 이 중에서 const ..
[바미] JS - 테트리스
·
프로그래밍(Web)/Javascript(TS,Node)
코드tetris.htmlBami's Tetris 키 설명 스페이스바: 블록 빠르게 떨어뜨리기 Z: 블록 회전 C: 블록 홀드 V: 홀드한 블록으로 교체 ←, →: 좌우 이동 ↓: 빠르게 내리기 게임 시작 홀드 다음 블록 점수..
[바미] WSL - 옵시디언 실행 시 화면 깨짐 현상
·
프로그래밍(Web)
오랜만에 WSL 상에서 옵시디언을 실행시키는데 아래의 에러문구가 뜨면서 화면이 깨지는 현상이 발생하였습니다.[400609:0919/134444.102555:ERROR:viz_main_impl.cc(198)] Exiting GPU process due to errors during initialization처음에는 GPU 가속 문제인 줄 알고export LIBGL_ALWAYS_SOFTWARE=1도 해보고, 삭제 후 재설치 하여 실행도 해보고,  GPU 관련 환경 변수 추가 설정도 아래와 같이 해보고export MESA_LOADER_DRIVER_OVERRIDE=i965옵시디언을 실행 시킬 때 하드웨어 가속 비활성화 옵션을 붙여서 실행도 해보고/opt/Obsidian/obsidian --disable-gpuA..
[바미] IntelilJ Github 연동창 뜰 때
·
프로그래밍(Web)
요 몇 주전 부터 계속 아래와 같은 창이 뜨기 시작했습니다.처음에는 깃허브 계정이 연동이 끊어졌나 싶어 확인해보았지만 이미 연동은 되어있던 상황이였습니다.그렇게 해결법을 찾았는데  IntelilJ의 터미널창을 키신 뒤에 아래 명령어를 입력해주세요. git remote -v만약 저와 상황이 같다면 위와 같이 뜰겁니다. 그 후 아래 명령어를 입력해주세요.git remote remove origin그 후 git remote -v 를 입력하셨을 때 아까와 다르게 아무것도 안뜨셨다면 성공입니다. 이 후 다시 연결 하셔야 한다면git remote add origin [연결 주소]를 입력해주세요.
[바미] PM2 save
·
프로그래밍(Web)
pm2 save는 Node.js 애플리케이션을 관리하는 프로세스 관리자 PM2(Process Manager 2)에서 사용되는 명령어입니다. 현재 실행 중인 애플리케이션의 프로세스 상태를 저장해주는 데 서버가 모종의 이유로 재부팅 되었을 때 프로젝트의 설정에 맞게 다시 실행시킬 때 유용합니다.# PM2로 애플리케이션 실행pm2 start app.js# 현재 실행 중인 모든 애플리케이션의 상태를 저장pm2 save# 서버 재부팅 후, 저장된 상태로 복구pm2 resurrect
[바미] .gitIgnore에 등록한 디렉토리가 커밋되는 경우
·
프로그래밍(Web)
위 사진처럼 .gitIgnore파일에 자신이 제외할 부분들을 등록했음에도 git add . 또는 git commit 시 아래와 같이 깃에 등록되는 경우가 발생했습니다.저의 경우 맨 처음부터 .gitIgnore를 등록하지 않고, 제외할 디렉토리가 이미 깃허브에 올라가 있는 상태였기 때문에 발생한 것이였습니다. 그래서 깃에 gitIgnore처리할 디렉토리, 파일들, . gitIgnore를 전부 삭제 후 깃 허브에 Push 하였고, 다시 . gitIgnore파일을 생성 후 제외할 부분들을 다시 추가하여 해결하였습니다.
[바미] Node-Express 간단한 REST API 예제
·
프로그래밍(Web)/Javascript(TS,Node)
프로젝트 디렉토리 생성mkdir REST-studycd REST-studynpm init -y 그 이후 사용할 패키지들을 설치해줍니다. (이번 예제에서는 ORM을 사용하지 않는 예제입니다.)npm install express mysql2 우리가 만들 프로젝트 디렉토리 구조는 아래와 같습니다.REST-study/│├── conn/│ └── db.js│├── controllers/│ └── userController.js│├── routers/│ └── userRouter.js│├── services/│ └── userService.js│├── app.js└── package.json 먼저 conn/db.js 파일에서 MySQL2를 사용하여 MariaDB 연결을 설정해줍시다.아래와 같이 자신의..
[바미] 선형 보간법
·
프로그래밍(Web)/업무관련
데이터를 가지고 특정 기간별 통계, 분석을 내야할 때 특정 기간의 데이터가 null로 비어있는 경우 데이터를 자동으로 보정처리 해주면 편하겠다 싶을겁니다. 그 때 사용되는 보정 방법 중 하나가 선형 보간법이라는 방법인데 오늘은 선형 보간법에 대해 살펴보도록 하겠습니다.선형 보간법?선형 보간법은 두 개의 알려진 데이터 포인트 사이의 값을 추정하는 방법입니다이 방법은 계산이 간단하고 직관적이어서 여러 분야에서 널리 사용되고 있습니다. 예를 들어 두 점 (𝑥0, 𝑦0)와  (𝑥1, 𝑦1)이 주어졌을 때,  𝑥0와 𝑥1사이의 어떤 𝑥에 대한 𝑦값을 추정할 때선형 보간법은 아래와 같은 공식을 사용합니다. \( y = y_{0} - \left( y_{0} - y_{1} \right) \cdot \fr..
Bami