전체 글 137

(가계부 프로젝트 3탄) SQLite + Flask로 가계부 데이터 관리하기

앞에서 Telegram Bot을 이용해 지출 데이터를 입력할 수 있도록 만들었다면, 이제 입력된 데이터를 저장하고 조회할 수 있는 서버와 데이터베이스가 필요하다.이번에는 Raspberry Pi에서 SQLite + Flask를 이용해 가계부 데이터를 관리하고 웹 대시보드로 보여주는 구조를 정리한다.전체 구조현재 프로젝트의 데이터 흐름은 다음과 같다.Telegram ↓telegram_bot.py ↓ledger.py ↓SQLite ↓Flask ↓Web DashboardTelegram Bot과 Flask가 각각 별도의 데이터를 가지고 있는 것이 아니라, 하나의 SQLite DB를 공유한다.1. SQLite를 사용하는 이유가계부처럼 데이터 규모가 크지 않은 개인 프로젝트에서는 별도의 D..

Web 11:23:45

(가계부 프로젝트 2탄) Telegram Bot으로 가계부 입력하기

이번에는 Telegram Bot을 이용해 메시지로 가계부를 입력하고 Raspberry Pi의 SQLite에 저장하는 구조를 구현한다.전체 구조는 다음과 같다.Telegram 사용자 ↓Telegram 서버 / Bot API ↓ Long Polling ↓Raspberry Pi ↓telegram_bot.py ↓ ledger.py ↓SQLite1. Telegram Bot은 어떻게 동작할까?Telegram Bot API는 Telegram 서버와 Raspberry Pi의 Bot 프로그램이 통신하기 위한 API다.즉, Telegram Bot API 자체가 서버인 것은 아니다. 실제 가계부 로직은 Raspberry Pi에서 실행된다.사용자 │ │ "2 스..

Web 10:45:29

(가계부 프로젝트 1탄) 라즈베리파이를 외부에서 접근하기 — Cloudflare Tunnel 구성하기

시리즈: 라즈베리파이로 가족 가계부 만들기1탄 | 2탄: Telegram Bot | 3탄: SQLite + Flask 웹서버라즈베리파이에 가계부 서버를 구성하고, 외부에서도 접근할 수 있도록 네트워크 환경을 설정했다.가장 먼저 해결해야 할 문제는 집 안에 있는 라즈베리파이의 서버를 외부에서 어떻게 접근할 것인가였다.라즈베리파이 서버를 외부에 연결하는 방법라즈베리파이에서 Flask 서버를 실행하면 같은 네트워크에서는 IP 주소와 포트를 이용해 바로 접속할 수 있다.PC │ │ http://192.168.x.x:8080 ▼Raspberry Pi └── Flask Server하지만 외부 네트워크에서는 공유기 뒤에 있는 라즈베리파이까지 요청을 전달할 방법이 필요하다.대표적인 방법은 포트포워딩이다.Internet..

Web 09:24:20

GStreamer란? 카메라와 함께 알아보기

GStreamer란? 카메라와 함께 알아보기GStreamer는 오디오·비디오 데이터를 처리하기 위한 오픈소스 멀티미디어 프레임워크다.카메라뿐만 아니라 동영상 재생, 녹화, 인코딩/디코딩, 스트리밍, 오디오 처리, WebRTC 등 다양한 미디어 처리에 사용할 수 있다.GStreamer의 가장 큰 특징은 여러 기능을 Element 단위로 나누고, 이를 연결해 Pipeline을 구성한다는 것이다. 이번 글에서는 그중에서도 카메라 영상 처리에서 GStreamer가 어떻게 활용되는지 알아본다.1. GStreamer Pipeline하나의 미디어 데이터가 여러 Element를 거치면서 처리된다.[Source] ↓[Decode] ↓[Convert] ↓[Encode] ↓[Sink] 각 Element가 하나..

Camera 2026.08.28

V4L2 카메라 버퍼 관리 방식: MMAP과 USERPTR의 차이

V4L2(Video4Linux2)를 이용해 카메라 데이터를 처리할 때는 카메라 프레임 버퍼를 어떻게 할당하고 관리할 것인지를 결정해야 한다.대표적인 방식이 MMAP과 USERPTR이다. MMAP은 Driver가 버퍼를 관리하고 Application이 mmap()으로 접근하는 방식이고, USERPTR은 Application이 버퍼를 관리하고 Driver에 버퍼 주소를 전달하는 방식이다.1. MMAP 방식MMAP 방식에서는 V4L2 Driver가 카메라 프레임을 저장할 버퍼를 관리한다.Application은 mmap()을 호출하여 Driver가 관리하는 버퍼를 자신의 User Space 주소 공간에 매핑한다.카메라에서 전달되는 데이터는 DMA를 통해 버퍼에 기록되고, Application은 mmap()된 주..

Camera 2026.08.27

Raspberry Pi 서버를 Cloudflare Tunnel로 외부에 연결하기

Raspberry Pi 서버를 Cloudflare Tunnel로 외부에 연결하기개인 프로젝트를 Raspberry Pi에서 개발하면서, 외부에서도 API를 호출할 수 있도록 Cloudflare Tunnel을 구성했다.목표는 간단했다.Raspberry Pi의 로컬 Flask 서버를 인터넷에 직접 노출하지 않고, 고정된 도메인으로 외부에서 API를 호출하기최종적으로 다음과 같은 구조를 만들었다.[Android / PC] │ │ HTTPS ▼[Cloudflare] │ │ Cloudflare Tunnel ▼[Raspberry Pi] │ ├─ cloudflared │ └─ Flask :80801. Raspbe..

Web 2026.08.24

[SSH] 퍼블릭 키(Public Key) 생성 및 원격 서버 등록

RSA vs ED25519 차이점 비교두 알고리즘 모두 SSH 키 쌍(Key Pair)을 만드는 방식이지만, 기술적인 세대 차이가 존재한다. 현재 표준은 ED25519이다.결론: 시스템이 너무 오래된 구형 서버가 아니라면, 보안과 성능이 모두 뛰어난 ED25519 방식을 사용하는 것이 전 세계적인 권장 사항이다. SSH 키 생성 및 서버 등록 가이드1. 로컬 PC: 키 생성 및 복사아래 명령어를 순서대로 실행하고, 질문에는 모두 엔터(Enter)를 누른다. # 1. 키 생성ssh-keygen -t rsa -b 4096# 2. 퍼블릭 키 내용 출력 (화면에 나오는 텍스트 전체 복사)cat ~\.ssh\id_rsa.pub 2. 원격 서버: 키 등록 및 권한 변경 (Linux)서버에 접속하여 복사한 키를 ..

Linux, etc 2026.07.24

[Ollama] vs pytorch transformers

🔄 Ollama vs PyTorch/transformersPyTorch 직접 사용✅ 장점: 모델 구조에 직접 접근, 세밀한 제어 가능❌ 단점: 복잡한 설정, GPU 메모리 관리, 모델 로딩 시간 오래 걸림📦 특징: Transformers 라이브러리로 모델을 직접 다운로드하고 메모리에 로딩Ollama 사용✅ 장점: 간단한 설정, 자동 최적화, 빠른 시작, 모델 관리 편리✅ 특징: 서버-클라이언트 구조, 양자화 자동 적용, 메모리 효율적🚀 최적화: C++로 작성된 llama.cpp 엔진 사용 (더 빠름)# ollama 설치curl -fsSL https://ollama.com/install.sh | sh# llama3.2 1B(가장 작은 모델) 설치ollama pull llama3.2:1b 📊 Olla..

AI 2025.08.11

[SLM] smollm 돌려보기 with copilot

LLM SLM 공부하기 전 일단 돌려보자.. copilot에게 모든 코딩을 부탁해 보았다.전체 코드"""SmolLM 추론 코드 - 실제 모델 버전HuggingFace의 SmolLM-135M 모델을 사용합니다."""import warningswarnings.filterwarnings("ignore")import torchfrom transformers import AutoTokenizer, AutoModelForCausalLMclass SmolLMInference: def __init__(self, model_name="HuggingFaceTB/SmolLM-135M"): """ SmolLM 모델 초기화 Args: model_name: 사용할 S..

AI 2025.08.11

[aws ec2] vscode 연결: config 설정, 인스턴스 용량 증설

vscode 연결asw 인스턴스 생성 후 연결할 때 나오는 퍼블릭 DNS를 vscode ssh config HostName에 입력한다.그리고 인스턴스 생성 시 저장한 pem 파일 경로를 IndentityFile에 설정해준다.Host aws HostName ec2-######.compute.amazonaws.com User ubuntu Port 22 IdentityFile C:/Users/~~/.ssh/~~.pem 그리고 vscode에서 ctrl+p로 ssh 연결하면 끝 인스턴스 용량 증설아래 따라하니 성공!https://jaeyung1001.tistory.com/entry/AWS-EC2-%EC%9A%A9%EB%9F%89-%EC%A6%9D%EC%84%A4%ED%95%98%EA%B8%B..

AI 2025.08.11