전체 글
대용량 테이블 데이터 클렌징
* 개요: 대용량 테이블의 관리 차원에서 과도하게 적제되는 데이터는 (콜드 디스크)이관 또는 삭제 해줄 필요가 있다. 이 과정에서 해당 테이블이 서비스와 직접적으로 연결된 경우 대용량의 트랜젝션의 발생은 장애로 직결 될 수 있다. * 시나리오: 로그인 시 Audit Table 에 감사 로그를 남겨 누가 언제 접속했는지를 관리하고 있다. 이 테이블의 사이즈가 무한정으로 커지고 있고, 디스크 용량 관리 차원에서 오래된 데이터는 배치로 삭제 해줘야 할 필요가 있다. 다만 이 과정에서 (삭제) 테이블 잠금이 발생될 수 있고, 이로 인해 로그인을 못하는 경우가 발생될 수 있다. * 솔루션: 로그 테이블 삭제 시 로그인 장애를 예방하려면, 배치 프로시저에서 트랜잭션 잠금을 최소화하고 삭제 작업을 분할하여 한 번에 ..
Electron with next.js = Nextron.js
* 개요: 윈도우 응용프로그램을 개발할 때, 늘 그러하듯 C#을 벗어나기 어려웠다. 기술스택을 JAVASCRIPT 중심으로 커리어를 쌓고 있는 필자의 입장에서는 한가지에 집중하고 싶은 상황이다. 이런 상황에서 JAVASCRIPT 베이스로 윈도우 응용프로그램을 만들 수 있는 방법을 발견!! 그것은 바로 Electron이다. * 특이사항: 일렉트론 공식사이트 (https://www.electronjs.org/)를 통해 알아보고 튜토리얼을 따라 해보았다. 리액트 + 일렉트론 구성이었는데, 필자는 next.js + typecsript + tailwind에 익숙하여 이 기술 베이스로 해보려고 여럿 포스팅을 따라해 보았으나 쉽지 않았다. 수십번의 삽을 뜨면서 느낀점은... 아.. 누군가 보일러플레이트를 만들어 놓은..
01. javascript 실습 환경 구성
* 실습 환경 개요: 윈도우 PC를 사용하여 WSL (ubuntu) 기반을 실행: Docker Container 활용 * 사용 개발 툴: WSL 설치https://learn.microsoft.com/ko-kr/windows/wsl/install WSL 설치wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등 원하는 Linux 배포판에서 실행되는 Windows 머신에서 Bash 터미널을 사용할 수 있습니learn.microsoft.com : zsh 설치sudo apt-get install zshchsh -s /usr/bin/zsh// 기본 쉘 확인echo $SHELLLs..
[node.js] CORS 설정
* 개요- 같은 포트, 같은 호스트에서 요청이 오는게 아니라면 기본적으로 서버는 공격으로 인식 한다. 그래서 로컬 개발 시 프론트와 API를 함께 띄워 놓고 개발하는 경우 CORS 설정을 통해 다른 포트에서 들어오는 요청에 대해 설정으로 통해 허락(?)이 필요하다. * 설치 모듈- API 서버에서 요청을 받으므로 API 서버에 설정을 한다.npm install cors --savenpm i --save-dev @types/cors * 소스 설정const origin = "http://localhost:3000"// 요청을 허용할 서버 또는 포트를 포함app.use( cors({ origin, })); * JWT 토큰 사용시 주의 사항- 로그인 시에 아이디와 비밀번호가 서버로 넘어오면 유저의 정보가 맞는..
[MariaDB] General log 설정
* 개요 - MariaDB 서비스를 운영하다보면, DB로 인입되는 쿼리를 볼 필요가 있다. 이때, 아래 설정을 통해서 쿼리 로그를 볼 수 있다. 해당 설정은 서비스의 성능을 엄청나게 떨어뜨리기 때문에 꼭 개발 DB에서만 사용 하길 바랍니다. - 해당 설정은 운영중에 셋업해도 되나, my.cnf 파일에 설정 해줘야 재기동 시에도 적용 된다. (적용 후 서비스 재시작 필요) * General Log 설정 확인 - On/Off 설정을 통해 적용 여부를 확인 가능 하고, 로그를 파일과, 테이블에서 볼수 있다. - 테이블에 남기는것이 보기에는 편하나, 쿼리문 자체가 엄청나게 길어지거나, 복잡해 지면 보기 어렵고, select 하는 시간도 "매우 매우" 오래 걸리므로, 파일로 보는것이 정신건강에 좋다. # 현재 설..
[typescript] typescript 프로젝트에서 이상적인 폴더 구조
* 폴더 구조 my-app/ ├── src/ // TypeScript 소스 코드 │ ├── controllers/ // 컨트롤러 로직 │ ├── models/ // 데이터 모델 및 스키마 │ ├── routes/ // 라우팅 및 API 엔드포인트 정의 │ ├── services/ // 비즈니스 로직 서비스 │ ├── middlewares/ // 미들웨어 함수 │ ├── utils/ // 유틸리티 함수 및 헬퍼 │ ├── app.ts // 애플리케이션 진입점 │ └── index.ts // 메인 엔트리 포인트 ├── node_modules/ // npm 패키지 ├── package.json // 프로젝트 의존성 및 설정 ├── tsconfig.json // TypeScript 설정 파일 ├── .gitig..
[Docker] Docker Compose 자주 쓰는 템플릿
* Docker compose 파일 작성 시 자주쓰는 옵션 위주로 작성해 보았다. 새로 작성 할 일이 있을때, 이 파일에서 시작하는 편이다. version: '3.8' services: myDatabase: image: mysql:latest container_name: 'myMysql' hostname: 'myMysqlHost' restart: always ports: - "5678:3306" networks: - front-end - back-end volumes: - /docker/db/data:/var/lib/mysql - /docker/db/conf:/etc/mysql/conf.d - /docker/db/log:/var/log/mysql - /docker/db/backup:/var/lib/mys..
[windows] 연결한 적이 있는 wifi 비밀번호 확인
* 개요 - 무선랜 연결은 자주 하는 행위가 아니므로 접속 정보를 까먹는 경우가 많다. 이 경우 한번 연결했던 적이 있는 PC 를 통해서 암호를 확인 할 수 있다. * 확인 방법 # 윈도우 cmd 에서 실행 # 연결한 적이 있는(프로필이 저장된) wifi 목록 조회 > netsh wlan show profiles # 위 목록에서 조회된 wifi의 상세정보(비밀번호 포함) 확인 > netsh wlan show profiles wifi이름 key=clear