============================================================================
프로그램명 : 가상 프로그램 실행 환경 (Virtual Program Runner, VPR)
프로그램 한 줄 소개 : 이 프로그램은 웹에서 쉽고 빠르게 코드를 작성하고 컴파일하는 교육용 도구
기능 정리 :
- 핵심 기능 :
- 프로그래밍 도구 설치하지 않고 그저 웹사이트(Google, Naver ...등)에서 즉시 프로그래밍
- 아이디어가 부족하면 AI를 이용한 창작 및 아이디어 제공
- 에러 및 오류 코드나 메시지 확인과 수정 코드 제공
- 사용자가 선택한 언어 학습
- 부가 기능 :
- 간단한 프로그램이나 예제 코드
- 내가 만든 코드 업로드와 공개 및 다른 사람 코드 보기
프로젝트 목표 :
- 초보자도 쉽게 프로그래밍 접하기
- 빠르게 프로그래밍 접하기
- 간단하게 프로그래밍 접하기
============================================================================
사용자 페르소나 :
- 코드를 배우러 오는 사람 및 잘 모르는 사람
- 저장 공간 절약이 필요한 사람
- 에러를 고쳐야하는데 모르는 사람
- 아이디어가 필요한 사람
기대 효과 : 진입 장벽이 낮아 초보자도 쉽게 접근할 수 있고, 저러한 사용자들은 쉽고, 빠르게 프로그래밍을 접할 수 있다.
============================================================================
계기 : 프로그램을 만들면서 이게 제대로 도는지도 모르겠고 어디서 오류가 나는지 찾기도 힘들며 진짜 문제는 새 언어를 배우려면 그 언어를 설치해야한다는 번거로움이 있어 만들게됨
============================================================================
핵심 화면 : 홈 화면은 버튼과 사이드 메뉴바 모양으로 만들기 에디터 창은 Windows 메모장처럼 친화적인 이미지로 만들되 상단 메뉴바 정렬은 사용자 친화적으로 만들기 언어도 한국어 및 영어 정도만 만들기
============================================================================
설계
- 언어는 웹사이트에 맞는 HTML및 JS, CSS나 이 외의 언어를 사용한다.
- 데이터 저장소는 SQL같은 계열의 언어를 사용한다.
- 로컬 AI보다는 무료 클라우드 AI를 사용한다.
- 언어는 모든 언어를 전부 구현하기보다는 C, C++, C#, Python, HTML, SQL, Java, JS, Arduino 등등의 언어를 주로 사용하며 텍스트 형식이여야 함.
보안
- SQL 인젝션 방지를 위해 if문으로 예외처리
- DDoS 방지를 위해 한 IP 접속량 제한 및 딜레이
- eval() 같은 특정 위험 함수는 사용 제한
- 계정 보호를 위해 이중 보안 방식 사용
- 만약 코드에서 특정 웹 사이트를 크롤링 할 경우를 대비하여 제한
============================================================================
사용자 예상 시나리오
- 프로그램 접속
- 만약 로그인을 하였는가?
- a. 예 : 사용자 홈 화면
- b. 아니오 : 로그인 화면
- 홈 화면에 들어왔다면 사이드 바를 구경한다.
- 무언가를 눌렀는가?
- 에디터. Windows 메모장 같은 에디터가 나오며 코드를 작성할 수 있다.
- AI. 아이디어를 얻거나 코드를 수정한다.
- 에러창. 에러를 넣으면 예시 수정 코드나 해결 방안 제시
- 도움말 또는 스스로 익히며 프로그램을 사용한다.
- 종료시 저장 여부 묻기.
============================================================================
현재 프로토타입 구현 상태 (2026-06-13)
-
화면 구조
- 홈, 에디터, AI 도우미, 에러 해결, 커뮤니티, 로그인, 프로필 페이지로 분리
- 모든 페이지에서 공통 사이드 메뉴와 한국어/영어 전환 지원
-
언어/실행
- 지원 언어 확장: JavaScript, TypeScript, Python, C, C++, C#, Java, Go, Rust, PHP, Ruby, Kotlin, Swift, HTML, Arduino, ESP-IDF
- HTML: 미리보기 프레임 실시간 렌더링
- Arduino/ESP-IDF: 기본 회로도 템플릿(핀 연결 예시) 지원
- 일반 언어: 클라우드 런타임 연동 구조 완성(실행/컴파일 출력 파이프라인 포함)
- 주의: 기존 공개 Piston API(emkc.org)는 2026년 기준 화이트리스트 전용으로 변경되어 기본 설정에서는 401이 발생할 수 있음
- 해결: localStorage 키
vpr-runtime-config로 자체/승인된 런타임 엔드포인트 및 인증 헤더를 지정해 실제 실행 가능
-
계정/공개/프로필
- 로그인/회원가입(로컬 MVP), 프로필 편집, 로그아웃
- 저장된 프로젝트를 커뮤니티에 공개하고 공개 피드에서 다시 에디터로 불러오기
-
보안 관련 현재 반영
- 입력값 정규화(sanitize), 프로젝트명 제한
- 실행 요청 간단 rate-limit(연속 호출 제한)
- 비밀번호 단방향 해시 저장(SHA-256)
-
운영 단계에서 추가해야 할 항목
- 진짜 다중 사용자 공유를 위한 서버 DB/인증(JWT/OAuth2), RBAC
- 런타임 운영: 자체 Piston 인스턴스 또는 승인된 실행 API 운영 및 키 관리
- 업로드 코드 정적/동적 분석(sandbox, seccomp, 네트워크 격리)
- 감사 로그, 이상 징후 탐지, DDoS 방어(WAF/rate-limit 분산)
- Arduino/ESP-IDF 실제 빌드/플래시 및 고급 회로 시뮬레이터 연동
==============================================================================