R-Blogger블로그·해설한국어2025-04-23
`Plumber`와 JavaScript로 첫 발을 내딛다
Plumber와 JavaScript로 시작하기Plumber와 JavaScript를 활용해 편두통 이벤트를 기록하는 간단한 로컬 API를 구축해 보았습니다. 이제 휴대폰에서 한 번만 탭하면 현재 시간을 CSV에 기록할 수 있어 매우 편리합니다.동기부여지난 블로그에서 기압 모니터링을 다룬 후, 제 친구 Alec Wong이 “버튼을 한 번 누르기만 하면 이벤트가 기록된다면 좋겠지?”라고 말했습니다. 이 경우 기압을 기록하는 이유는 편두통 이벤트와 기압값/변화 사이에 연관성이 있는지 확인하기 위함입니다. 또한, 기록을 훨씬 간편하게 해줄 어플리케이션을 만들 수 있다면 좋겠다는 생각이 들었습니다. 이를 위해 R 환경 안에서 최대한 학습할 수 있는 방법은 plumber를 사용해 API를 만들고, 버튼 클릭 시 이벤트를 기록하는 것입니다. 실제 사용 사례는 매우 간단합니다. 버튼을 클릭하면 현재 타임스탬프를 기록하기만 하면 되기 때문입니다. 저는 이전에 plumber를 사용해 본 적이 없으므로, 이번 기회를 통해 학습해 볼 수 있는 좋은 기회입니다. 또한 JavaScript도 함께 사용해 보았습니다. 다시 말해, 이 블로그는 제 개인 노트로서의 용도로 활용하고자 합니다.목표큰 그림: plumber.R실행 방법: iOS에서 한 번 클릭개선 가능성배운 점큰 그림위 그림처럼, 우리는 휴대폰에서 클릭 시 CSV 데이터프레임을 변경하는 어플리케이션이 필요합니다. 이는 plumber를 통해 API를 설정하고 CSV를 조작함으로써 달성할 수 있습니다. 제가 원하는 것은 다른 기기(예: 라즈베리파이)의 로컬 네트워크에서 이 기능을 수행하는 것이므로, DigitalOcean이나 다른 서버에 배포할 필요가 없습니다. 백그라운드에서 실행하고 systemctl을 설정해 rpi 재시작 시 자동으로 시작하도록 하면, 0.0.0.0으로 포인트하고 장치 IP를 통해 GET/POST 요청을 보낼 수 있습니다. 불행히도 로컬 네트워크에 더 이상 접속할 수 없을 경우에는 동작하지 않으므로, 제 용도에서는 충분히 괜찮습니다. 포트 포워딩을 노출할 필요가 없으며, 보다 안전한 방법은 DigitalOcean 드롭릿을 사용해 외부에 IP와 포트를 노출하지 않는 것입니다. 이는 비용(예: 월 $5)을 지불해야 함을 의미합니다. 언젠가 기압 데이터 및 기타 메트릭을 통합할 수 있다면, plumber.R을 활용할 수 있을 것입니다.코드 예시library(plumber) library(readr) # API 엔드포인트 예시 #* logging #* @post /log function(){ date_now <- Sys.time() # 여기에 로그 저장 로직 추가 }JavaScript에서의 Promise 체인 예시:fetch('/log') .then(response =response.json()) .then(data ={ const resultDiv = document.getElementById("result"); resultDiv.textContent = data[0]; resultDiv.style.display = "block"; }) .catch(error ={ const resultDiv = document.getElementById("result"); resultDiv.textContent = error.message; });이 코드는 response =response.json()와 같이 화살표 함수를 사용해 응답을 JSON으로 파싱하고, 파싱된 데이터를 화면에 표시합니다.
원문 URL
전체 글은 원문 페이지에서 이어서 읽을 수 있습니다.
- 작성자
- R-Blogger
- 출처
- R-Blogger
- 플랫폼
- R-Blogger
- 분류
- 블로그·해설
- 언어
- 한국어
- 발행일
- 2025-04-23