Project 20

[Project] Proxmox 로 개인 가상화 서버 구축하기 -1-

예전에 다니던 회사에서 설계용으로 지급 받았던 노트북이 중고로 팔기도 애매하고, 게임도 잘 하지 않아서 외부에서 접속 가능한 (OS 들을 품고있는) 가상화 서버로 만들어보려고 한다. 노트북이 나름 Geforce 3060 도 장착하고 있고, Cpu 도 i7, Ram 16GB 이기 때문에 엄청 고급 사양은 아니지만 그래도 쓸만하기 때문에, 일단 테스트용으로 Proxmox 를 사용해보는 실험체로 써보기로 한다. 1. Proxmox 란? Proxmox 는 한 대의 컴퓨터를 여러 대처럼 만들어주는 가상화 전용 운영체제이다. VirtureBox 처럼 운영체제 위에서 가성 운영체제를 동작시키는 것이 아니라, Proxmox 는 OS 자체이다. 따라서 컴퓨터의 리소스를 사용하는 효율이 높고 외부 접속시에는 웹 브라우저..

[Project] 개인 DB + ChatGPT 기능의 수정 및 확장 기록

1. 기존 목표운동과 식단을 꾸준히 기록하고, 이를 바탕으로 GPT가 내 상태를 분석해주도록 하고 싶었다. 핵심은 하루의 기록을 구조화된 데이터로 안전하게 저장하고, GPT가 읽을 수 있게 만드는 것이었다. 2. 운동 기록 구조 개선 기존에는 하나의 테이블에 날짜, 운동명, 세트 수, 무게, 반복수 등을 모두 넣고 있었는데, 이 방식으로는 세트별 상세 기록이 불가능했고 운동별 분석이 어려웠다. 그래서 다음처럼 설계 구조를 개선했다:workout_sessions: 운동 날짜, 부위, 최대 중량, 총 볼륨 등 한 번의 운동 요약workout_sets: 각 세트별 중량, 횟수, 휴식 시간 등 상세 기록 (최대 10세트 이상도 가능)장점:GPT가 세트별 피로도나 무게 증가 패턴까지 분석 가능JSON 구조로 쉽게..

[Project] ChatGPT + 개인 DB 기반 운동기록 API 서버 구축기 -2-

지난 포스팅을 통해 개인 DB 에 접근한 API 서버를 구축하는 과정을 기록하였다. 이제 내가 특정 질문을 ChatGPT 에게 하면 이 API 에 접근하도록 설계해서 DB 에 있는 운동 기록 data 에 접근하면 되겠다라는 단순한 생각으로 ChatGPT 만들기를 시도하였다. 하지만 뭐 해석하긴 어렵지 않지만 한번에 이해할 수 없는 에러가 발생하였고, 이유를 찾아보니 보안 요구 조건에 부합하지 않는 API 호출 방식이라는 것을 알게 되었다. 1. ChatGPT는 아무 API나 부를 수 없다OpenAI가 GPTs Tool을 통해 외부 API를 부르게 하기 위해 보안상 요구하는 2가지 조건이 있다. 1-1. HTTPS만 허용한다ChatGPT는 HTTP로 된 API는 호출 자체를 금지한다.→ http://*..

[Project] ChatGPT + 개인 DB 기반 운동기록 API 서버 구축기

ChatGPT 를 유료로 사용한지 2달 정도 되었다. 무료로 사용할 땐, 하루 사용량 제한 같은게 있었기 때문에 궁금한게 있어도 다 물어보지 못하고 끊기는 것을 경험했다. 유료로 사용하니 제한 없이 물어보고, 공부하는데 사용하였다. 근데 한가지 더 욕심이 나는 것은, 나만의 데이터를 가지고 대답을 해주는 기능이였다. 이미 구현할 수 있는 것 이였지만, 구축하는 법을 모르고 있었다. 좀 더 자세히 얘기하자면, 나는 유산소 운동이나 근력운동을 할 때 지난번 운동 데이터 (운동 기록 앱의 사진) 을 ChatGPT 에게 넘겨주고, 점진적 과부화, 체지방 감소, 골격근 증가 와 같은 목표를 설정해주고 이에 맞는 가장 과학적인 근거를 이용해서, 무게와 횟수를 짜달라고 한다. 하지만 어느정도 운동 데이터가 쌓이니, ..

[개인 Project] NAS 를 이용한 개인 모니터링 시스템 구축하기 -3 편 (WAS 와 DB 연동)

오늘은 DB 에 저장된 데이터를 시각적으로 표현하는 HTML 문서를 작성하고, DB의 데이터들을 WAS 에 적용하여 배포하는 과정을 진행한다. 먼저 데스크탑을 실행하고 DB 에 데이터가 잘 Insert 되는지 확인하기 위해 부팅 후 15분을 기다린다. 1. 기존 작성 프로세스의 정상 작동 확인하기 부팅 후 15분 정도를 기다리고, NAS 에 ssh 접속 후 DB table 을 확인하니 오늘 날짜 ( 5월 22일) 로 데이터가 추가된 것을 확인할 수 있었다. 2. 백앤드 디렉터리 구조 작성하기monitoring_web/├── app.py ← Flask 메인 파일├── templates/│ └── dashboard.html ← HTML 템플릿└── static/ ..

[개인 Project] NAS 를 이용한 개인 모니터링 시스템 구축하기 -2 편 (데이터 DB 저장)

지난 번에 SNMP 프로토콜과 Shell Script 를 이용해서 시스템 정보를 추출했다. 파이썬의 라이브러리를 활용하면 ( 한 줄 추가하는 것으로) 간단하게 시스템 정보를 추출하고 출력할 수 있지만, 네트워크를 공부하는 입장에서 프로토콜을 직접 사용해보고, 스크립트 파일도 직접 작성해보는데 의의가 있기 때문에 조금 불편한 방법을 고수하기로 한다. 1. 쉘 스크립트에 저장 정보 추가이미 작성된 스크립트가 원하는 정보를 잘 출력하고 있으므로, 이 정보들이 특정 폴더에 파일로 저장되도록 추가해준다. #!/bin/bashCOMMUNITY="public"TARGET="127.0.0.1"LOG_DIR="$HOME/문서/monitoringProject/csv_logs"mkdir -p "$LOG_DIR"# CPU..

[개인 Project] NAS 를 이용한 개인 모니터링 시스템 구축하기 -1 편 (데이터 추출)

앞서 포스팅한 개념들과 오픈소스 기술들을 활용해서, 간단하게 집에 있는 네트워크 기기들의 상태들을 모니터링 할 수 있는 시스템을 구축해보도록 하려고 한다. 내 NAS 에서는 python3.9 , MariaDB 10, Apache HTTP Server 2.4 를 지원하고 있기 때문에, 일단 데스크탑이 작동하면 데스크탑 정보, SNMP 를 이용한 네트워크 정보, Gefroce 의 smi 명령어를 이용해서 GPU 정보를 추출하는 스크립트를 만들고, 이 정보를 NAS 의 MariaDB 로 저장한다. 그리고 DB 에 저장된 값들을 이용해서 간단하게 웹 페이지로 조회 및 모니터링 할 수 있는 흐름으로 만들어 보려고 한다. 대략적인 아키텍쳐는 아래와 같다. 1. 프로젝트 흐름 Python 라이브러리 없이, She..

[Project] API 응답문 데이터 통일화 및 알고리즘 적용 마무리

오늘의 작업을 통해 Project 에서 API 요청 - 객체간 변환(DTO - Doamin - Entity) - DB 저장  과정이 자동으로 이뤄지도록 하자.이 과정을 통해 서버가 자동으로 칵테일에 대한 점수를 DB 에 저장하도록 만들고, 컨트롤러에서는 이 값들을 로그인 유저용, 비로그인 유저용 데이터를 조회할 수 있는 엔드포인트를 만들어서, 칵테일 추천 부분을 마무미 해보자. 1. API 요청 스케줄 기능 생성앞서 만든 API 요청 - DTO 전달 - DTO Parsing - Domain 변환 - Entity 변환 - DB 저장 과정을 자동으로 수행할 수 있는 스케줄러 객체를 생성한다. 현재 작업 월이 3월이면 1월과 2월의 검색 변화량을 가져오는 것이기 때문에, 매월 초 한 번 API 를 요청하고 응..

[Project] API 응답문 데이터 통일화 및 알고리즘 적용하기 -2

https://cs-study1.tistory.com/99 [Project] API 응답문 데이터 통일화 및 알고리즘 적용하기 -1많은 사람들이 얘기한다.응집도는 낮고 결합도는 높여야, 향후 유지보수가 쉬운 코드가 된다고.하지만 만들어놓은지 좀 된 기능들은, 객체지향적 설계와 응집도를 떠나서 기억이 잘 나지 않는cs-study1.tistory.com  어제의 작업을 통해 각 API에 대한 요청 및 응답을 확인했고, 응답문을 내가 사용할 수 있게 Pasring 하는 작업을 한 뒤 테스트 코드로 검증하였다. 오늘은 Pasring 된 API 응답문을 도메인 객체로 전환할 수 있게, 도메인 클래스를 설계하고, 이 도메인 클래스에서 추천 알고리즘을 적용하여 [키워드 : 총점] 의 형식으로 만드려고 한다. 이 때 ..

[Project] API 응답문 데이터 통일화 및 알고리즘 적용하기 -1

많은 사람들이 얘기한다.응집도는 낮고 결합도는 높여야, 향후 유지보수가 쉬운 코드가 된다고.하지만 만들어놓은지 좀 된 기능들은, 객체지향적 설계와 응집도를 떠나서 기억이 잘 나지 않는다. 대단한 기능은 아니지만, 두 검색엔진의 키워드 검색량(Google, Naver)을 API 응답으로 받아와서, 문자열을 pasing 하고,검색량 증감을 기준으로 내림차순 정렬하는 로직을 완성했었다.하지만 새로운 알고리즘의 도입으로 응답문의 문자열 Parsing , 도메인 변환, 엔티티변환, DB 저장 로직까지 새로 만드는 것이 낫다고 판단하였다.이젠, 추천 알고리즘을 새로 도입했으니, 알고리즘만 수정하면 기획자의 의도대로 추천 알고리즘을 적용할 수 있도록 기능을 개발해 놓아야겠다. 오늘 작업할 전체적인 흐름은 아래와 같다..