SlideShare a Scribd company logo
DIGITAL CLOCK
with Raspberry Pi
+ javascript framework(Vue.js)
B211176 이재열
Table Of Contents
•- Motivation
•- Implementation
•- Plan
•- Demo
•- Retrospection
Motivation
•솔직히 뭐 만들지 계속 고민하고 있었음

(기획력이 모자란 관계로 proposal 제출 이틀 전까지 계속
고민했음)
USB 키보드 입력을 블루투스 신호로 내보내는 릴레이…?
에어컨 리모트 컨트롤러 액츄에이터…?
PyQT를 이용한 디지털 시계…?
Motivation
•당장 떠오르는 세 개의 소재를 가지고 열심히 구글링을 해보
았으나, 하드웨어와 친하지 않은 내 능력으로 구현할 수 있을
만한게 잘 안보임

(그나마 유력한게 PyQT를 이용한 구현 뿐…)
•
Motivation
•Flask 수업을 통해 HTML로도 UI 를 구성할 수 있는 선택
지가 있다는 것을 알게됨.
Motivation
•실제로도 크로미엄 기반 엔진(Electron)으로 작성된 

데스크탑 UI 어플리케이션이 많음.
•HTML만 알고있다면 간단하게 UI 어플리케이션을 짤 수 있
다보니 대중적으로 많이 애용되는 추세임
Motivation
•HTML도 되는데, 

과연 Virtual DOM 으로 UI를 구성하면 어떻게 될까?
Implementation
Implementation
Implementation
•하드웨어 구성 

- TFT-LCD 디스플레이

- DHT-11 : 온도/습도 측정 센서
•라즈베리파이에 설치된 주 소프트웨어/라이브러리

- Flask, Compiled(bundled) JS, 

Chromium(with vue-devtools)
•개발환경

- Flask, Compiled(bundled) JS, Webpack,
Chrome(with vue-devtools)
•소스코드는 bitbucket 에서 관리
DOM, Virtual DOM
•Document Object Model 

그냥 HTML 같이 구조화된 문서를 표현하는 방법
•HTML은 정적인 문서이기 때문에, 조작하기가 어려움.
•Virtual DOM은 자바스크립트를 이용해서 

추상화된 DOM 오브젝트를 렌더링하는 방법.
Virtual DOM으로
시도하고자 했던 것
•Flask 에서 HTML 템플릿을 렌더링하는 작업을 최소화

(CPU는 HTML에 신경쓸 시간에 다른 일을 해야 합니다)
•200ms 간격으로 Ajax HTTP JSON request/
response

-> JSON 오브젝트를 이용하여 동적으로 렌더링
Why Virtual DOM?
•1. Proof of Concept (지극히 개인적인 이유)
•Virtual DOM 으로도 라즈베리파이에서 UI 를 구성할 수 있
다는 것을 보이고 싶었음
•2. 서버에서 HTML을 한땀한땀깎아서 제공해주는 것보다는
최소한의 정보(JSON)만 제공하는 방식이 트래픽 적게 잡아
먹음
Vue framework
Model, View, Controller 

패턴을 이용해서 

Virtual DOM을 조작하는 

자바스크립트 라이브러리
View
Model
Controller
Vue-devtools 라는 크롬 확장
도구로 그나마 수월해짐
Webpack
•자바스크립트 전처리 언어로 작성된 파일, 스타일시트 전처
리 언어로 작성된 파일 등 여러가지 파일들의 의존성관계를
쭉 살펴보고 하나의 소스코드로 컴파일해주는 도구
•자바스크립트, 스타일시트를 불러올때 사용하는 <script>,
<style> 태그의 갯수를 최소화 하기 위해 사용함
•

<script src=“/static/js/blahblah1.js” ></script>

<script src=“/static/js/jquery.min.js” ></script>

<script src=“/static/js/react.min.js” ></script>

<script src=“/static/js/blahblah4.js” ></script>

<link rel=“stylesheet” href=“/static/css/base.css/>

…
•<script src=“/static/js/app.js” > </script> 

이전의 슬라이드 재탕
PLAN
- 1주차 : Smart Clock 구현에 필요한 부품 주문
- 2주차 : Smart Clock 구현을 위해 보조적인 역할을 하
게 될 서버 세팅 완료
- 3주차 : 서버에서 처리할 데이터를 처리하기 위한 코드 작
성(Python 기반 웹프레임워크 Flask 사용 예정)
- 4주차 : Remote Server에서 제공할 Dashboard UI
코드 작성
- 5주차 : 부품 조립 후 Smart Clock UI 코드 작성
- 6주차 : 최종 점검 및 기능 추가
놀-랍게도
구현을 당일치기로 했습니다(…)
PLAN
- 1주차 : Smart Clock 구현에 필요한 부품 주문
(Proposal 작성하자마자 바로 주문함)
- 2주차 : Smart Clock 구현을 위해 보조적인 역할을 하게 될 서버 세
팅 완료
(원래부터 쓸 일이 있어서 Linode 일본 리전 VPS에 Nginx 세팅했었음)
- 3주차 : 서버에서 처리할 데이터를 처리하기 위한 코드 작성(Python
기반 웹프레임워크 Flask 사용 예정)
- 4주차 : Remote Server에서 제공할 Dashboard UI 코드 작성
(통계 차트를 그려주는 vue-chart.js 라이브러리는 알아봤지만 시간이
없어서 못함)
- 5주차 : 부품 조립 후 Smart Clock UI 코드 작성
(부품 조립이 정말 손이 많이 가는 작업이었음…)
- 6주차 : 최종 점검 및 기능 추가 (여유조차 없었음)
DEMO
•https://www.youtube.com/watch?
v=2XedyG4LHP4
Retrospection
•웹개발만 쭉 해오다가 임베디드 영역을 건드려보는건 신선
한 경험이었음.
•렌더링 하는 정보에 비해 자바스크립트가 많이 무거움(…)
•어느 디스플레이 써야하느냐도 생각외로 중요한 요인이었음

(하드웨어는 역시 내가 건드릴 부분이 아니다)
•아직까지 Virtual DOM 으로 UI 구성하기에는 너무 이른 것
같다.
Retrospection
•교훈
•: 하드웨어가 열악하면 그에 최적한 방법을 쓰자
혹시 관심있을 분들을 위해
•bitbucket 리포지토리
•https://bitbucket.org/malkoring/smart_clock/
•슬라이드 주소
•https://speakerdeck.com/kodingwarrior/
embedded-project-presentation-slide
감사합니다

More Related Content

What's hot

[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
NAVER D2
 
Vuejs를이용한서비스구축
Vuejs를이용한서비스구축Vuejs를이용한서비스구축
Vuejs를이용한서비스구축
Dexter Jung
 
2020년 4월 25일 개발 이야기 정리
2020년 4월 25일 개발 이야기 정리2020년 4월 25일 개발 이야기 정리
2020년 4월 25일 개발 이야기 정리
Jay Park
 
2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리
Jay Park
 
2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기
Jay Park
 
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
Jay Park
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
jeong seok yang
 
[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)
[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)
[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)
CONNECT FOUNDATION
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
JinKwon Lee
 
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsBackend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build tools
Kyunghun Jeon
 
Cooking jquery
Cooking jqueryCooking jquery
Cooking jquery
JinKwon Lee
 
프로젝트 기획서 발표 - 웹크롤링 (한양대 오픈소스동아리)
프로젝트 기획서 발표 - 웹크롤링 (한양대 오픈소스동아리)프로젝트 기획서 발표 - 웹크롤링 (한양대 오픈소스동아리)
프로젝트 기획서 발표 - 웹크롤링 (한양대 오픈소스동아리)
Osori Hanyang
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
devCAT Studio, NEXON
 
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
Jihyung Song
 
코드스쿼드 마스터즈세미나 - UI개발자가돼보자
코드스쿼드 마스터즈세미나 - UI개발자가돼보자코드스쿼드 마스터즈세미나 - UI개발자가돼보자
코드스쿼드 마스터즈세미나 - UI개발자가돼보자
지수 윤
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
Sunghyouk Bae
 
2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기
Jay Park
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
JinKwon Lee
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신
현욱 김
 
Hacosa js study 4주차
Hacosa js study 4주차Hacosa js study 4주차
Hacosa js study 4주차Seong Bong Ji
 

What's hot (20)

[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
[D2 CAMPUS] tech meet up(Back-end) - 교내 웹서비스 개발 일지 (박은찬님)
 
Vuejs를이용한서비스구축
Vuejs를이용한서비스구축Vuejs를이용한서비스구축
Vuejs를이용한서비스구축
 
2020년 4월 25일 개발 이야기 정리
2020년 4월 25일 개발 이야기 정리2020년 4월 25일 개발 이야기 정리
2020년 4월 25일 개발 이야기 정리
 
2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리2020년 4월 18일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리
 
2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기2021년 3월 6일 개발자 이야기
2021년 3월 6일 개발자 이야기
 
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
 
[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)
[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)
[부스트캠프 Tech Talk]손정현_PUB/SUB를 적용한 Todo앱 만들기(순한맛)
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
 
Backend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build toolsBackend Master | 3.1.1 Build - JS build tools
Backend Master | 3.1.1 Build - JS build tools
 
Cooking jquery
Cooking jqueryCooking jquery
Cooking jquery
 
프로젝트 기획서 발표 - 웹크롤링 (한양대 오픈소스동아리)
프로젝트 기획서 발표 - 웹크롤링 (한양대 오픈소스동아리)프로젝트 기획서 발표 - 웹크롤링 (한양대 오픈소스동아리)
프로젝트 기획서 발표 - 웹크롤링 (한양대 오픈소스동아리)
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
 
코드스쿼드 마스터즈세미나 - UI개발자가돼보자
코드스쿼드 마스터즈세미나 - UI개발자가돼보자코드스쿼드 마스터즈세미나 - UI개발자가돼보자
코드스쿼드 마스터즈세미나 - UI개발자가돼보자
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
 
2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기2021년 3월 27일 개발자 이야기
2021년 3월 27일 개발자 이야기
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신
 
Hacosa js study 4주차
Hacosa js study 4주차Hacosa js study 4주차
Hacosa js study 4주차
 

Similar to Embedded project presentation

Bootstrap 살펴보기
Bootstrap 살펴보기Bootstrap 살펴보기
Bootstrap 살펴보기영배 현
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
Chanwoong Kim
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER Engineering
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
JinKwon Lee
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
Joongi Kim
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
효근 박
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
수보 김
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
Bootstrap에 대해서 정기철
Bootstrap에 대해서 정기철Bootstrap에 대해서 정기철
Bootstrap에 대해서 정기철
Kichul Jung
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
Dae Kim
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
devCAT Studio, NEXON
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page Application
Sangmin Yoon
 
지속적인 통합
지속적인 통합지속적인 통합
지속적인 통합
중선 곽
 
웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)
JoonHee Lee
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
MooYeol Lee
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWSKRUG - AWS한국사용자모임
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
Jinwoong Kim
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
지원 정
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Yooseok Choi
 
야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)
SeongIkKim2
 

Similar to Embedded project presentation (20)

Bootstrap 살펴보기
Bootstrap 살펴보기Bootstrap 살펴보기
Bootstrap 살펴보기
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
Bootstrap에 대해서 정기철
Bootstrap에 대해서 정기철Bootstrap에 대해서 정기철
Bootstrap에 대해서 정기철
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page Application
 
지속적인 통합
지속적인 통합지속적인 통합
지속적인 통합
 
웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020 AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
AWS기반 서버리스 데이터레이크 구축하기 - 김진웅 (SK C&C) :: AWS Community Day 2020
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
 
야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)
 

More from Jae-yeol Lee

[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발
[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발
[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발
Jae-yeol Lee
 
Browser Engineering - Ch1 Summary
Browser Engineering - Ch1 SummaryBrowser Engineering - Ch1 Summary
Browser Engineering - Ch1 Summary
Jae-yeol Lee
 
Whats new rails 7
Whats new   rails 7Whats new   rails 7
Whats new rails 7
Jae-yeol Lee
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]
Jae-yeol Lee
 
HI-ARC Number Theory
HI-ARC Number TheoryHI-ARC Number Theory
HI-ARC Number Theory
Jae-yeol Lee
 
HI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute ForceHI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute Force
Jae-yeol Lee
 
HI-ARC PS 102 Bitmask
HI-ARC PS 102 BitmaskHI-ARC PS 102 Bitmask
HI-ARC PS 102 Bitmask
Jae-yeol Lee
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
Jae-yeol Lee
 
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
Jae-yeol Lee
 
HI-ARC ACM-ICPC 준비반 - KMP algorithm
HI-ARC ACM-ICPC 준비반 - KMP algorithmHI-ARC ACM-ICPC 준비반 - KMP algorithm
HI-ARC ACM-ICPC 준비반 - KMP algorithm
Jae-yeol Lee
 
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Jae-yeol Lee
 
HI-ARC 정기모임 #7 BFS
HI-ARC 정기모임 #7 BFSHI-ARC 정기모임 #7 BFS
HI-ARC 정기모임 #7 BFS
Jae-yeol Lee
 
HI-ARC 정기모임 #6 dfs
HI-ARC 정기모임 #6 dfsHI-ARC 정기모임 #6 dfs
HI-ARC 정기모임 #6 dfs
Jae-yeol Lee
 
[APL OJT] REST API TEST
[APL OJT] REST API TEST[APL OJT] REST API TEST
[APL OJT] REST API TEST
Jae-yeol Lee
 

More from Jae-yeol Lee (14)

[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발
[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발
[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발
 
Browser Engineering - Ch1 Summary
Browser Engineering - Ch1 SummaryBrowser Engineering - Ch1 Summary
Browser Engineering - Ch1 Summary
 
Whats new rails 7
Whats new   rails 7Whats new   rails 7
Whats new rails 7
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]
 
HI-ARC Number Theory
HI-ARC Number TheoryHI-ARC Number Theory
HI-ARC Number Theory
 
HI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute ForceHI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute Force
 
HI-ARC PS 102 Bitmask
HI-ARC PS 102 BitmaskHI-ARC PS 102 Bitmask
HI-ARC PS 102 Bitmask
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
 
HI-ARC ACM-ICPC 준비반 - KMP algorithm
HI-ARC ACM-ICPC 준비반 - KMP algorithmHI-ARC ACM-ICPC 준비반 - KMP algorithm
HI-ARC ACM-ICPC 준비반 - KMP algorithm
 
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
 
HI-ARC 정기모임 #7 BFS
HI-ARC 정기모임 #7 BFSHI-ARC 정기모임 #7 BFS
HI-ARC 정기모임 #7 BFS
 
HI-ARC 정기모임 #6 dfs
HI-ARC 정기모임 #6 dfsHI-ARC 정기모임 #6 dfs
HI-ARC 정기모임 #6 dfs
 
[APL OJT] REST API TEST
[APL OJT] REST API TEST[APL OJT] REST API TEST
[APL OJT] REST API TEST
 

Embedded project presentation

  • 1. DIGITAL CLOCK with Raspberry Pi + javascript framework(Vue.js) B211176 이재열
  • 2. Table Of Contents •- Motivation •- Implementation •- Plan •- Demo •- Retrospection
  • 3. Motivation •솔직히 뭐 만들지 계속 고민하고 있었음
 (기획력이 모자란 관계로 proposal 제출 이틀 전까지 계속 고민했음) USB 키보드 입력을 블루투스 신호로 내보내는 릴레이…? 에어컨 리모트 컨트롤러 액츄에이터…? PyQT를 이용한 디지털 시계…?
  • 4. Motivation •당장 떠오르는 세 개의 소재를 가지고 열심히 구글링을 해보 았으나, 하드웨어와 친하지 않은 내 능력으로 구현할 수 있을 만한게 잘 안보임
 (그나마 유력한게 PyQT를 이용한 구현 뿐…) •
  • 5. Motivation •Flask 수업을 통해 HTML로도 UI 를 구성할 수 있는 선택 지가 있다는 것을 알게됨.
  • 6. Motivation •실제로도 크로미엄 기반 엔진(Electron)으로 작성된 
 데스크탑 UI 어플리케이션이 많음. •HTML만 알고있다면 간단하게 UI 어플리케이션을 짤 수 있 다보니 대중적으로 많이 애용되는 추세임
  • 7. Motivation •HTML도 되는데, 
 과연 Virtual DOM 으로 UI를 구성하면 어떻게 될까?
  • 10. Implementation •하드웨어 구성 
 - TFT-LCD 디스플레이
 - DHT-11 : 온도/습도 측정 센서 •라즈베리파이에 설치된 주 소프트웨어/라이브러리
 - Flask, Compiled(bundled) JS, 
 Chromium(with vue-devtools) •개발환경
 - Flask, Compiled(bundled) JS, Webpack, Chrome(with vue-devtools) •소스코드는 bitbucket 에서 관리
  • 11. DOM, Virtual DOM •Document Object Model 
 그냥 HTML 같이 구조화된 문서를 표현하는 방법 •HTML은 정적인 문서이기 때문에, 조작하기가 어려움. •Virtual DOM은 자바스크립트를 이용해서 
 추상화된 DOM 오브젝트를 렌더링하는 방법.
  • 12. Virtual DOM으로 시도하고자 했던 것 •Flask 에서 HTML 템플릿을 렌더링하는 작업을 최소화
 (CPU는 HTML에 신경쓸 시간에 다른 일을 해야 합니다) •200ms 간격으로 Ajax HTTP JSON request/ response
 -> JSON 오브젝트를 이용하여 동적으로 렌더링
  • 13. Why Virtual DOM? •1. Proof of Concept (지극히 개인적인 이유) •Virtual DOM 으로도 라즈베리파이에서 UI 를 구성할 수 있 다는 것을 보이고 싶었음 •2. 서버에서 HTML을 한땀한땀깎아서 제공해주는 것보다는 최소한의 정보(JSON)만 제공하는 방식이 트래픽 적게 잡아 먹음
  • 14. Vue framework Model, View, Controller 
 패턴을 이용해서 
 Virtual DOM을 조작하는 
 자바스크립트 라이브러리 View Model Controller Vue-devtools 라는 크롬 확장 도구로 그나마 수월해짐
  • 15. Webpack •자바스크립트 전처리 언어로 작성된 파일, 스타일시트 전처 리 언어로 작성된 파일 등 여러가지 파일들의 의존성관계를 쭉 살펴보고 하나의 소스코드로 컴파일해주는 도구 •자바스크립트, 스타일시트를 불러올때 사용하는 <script>, <style> 태그의 갯수를 최소화 하기 위해 사용함
  • 16. •
 <script src=“/static/js/blahblah1.js” ></script>
 <script src=“/static/js/jquery.min.js” ></script>
 <script src=“/static/js/react.min.js” ></script>
 <script src=“/static/js/blahblah4.js” ></script>
 <link rel=“stylesheet” href=“/static/css/base.css/>
 … •<script src=“/static/js/app.js” > </script> 

  • 18. PLAN - 1주차 : Smart Clock 구현에 필요한 부품 주문 - 2주차 : Smart Clock 구현을 위해 보조적인 역할을 하 게 될 서버 세팅 완료 - 3주차 : 서버에서 처리할 데이터를 처리하기 위한 코드 작 성(Python 기반 웹프레임워크 Flask 사용 예정) - 4주차 : Remote Server에서 제공할 Dashboard UI 코드 작성 - 5주차 : 부품 조립 후 Smart Clock UI 코드 작성 - 6주차 : 최종 점검 및 기능 추가
  • 20. PLAN - 1주차 : Smart Clock 구현에 필요한 부품 주문 (Proposal 작성하자마자 바로 주문함) - 2주차 : Smart Clock 구현을 위해 보조적인 역할을 하게 될 서버 세 팅 완료 (원래부터 쓸 일이 있어서 Linode 일본 리전 VPS에 Nginx 세팅했었음) - 3주차 : 서버에서 처리할 데이터를 처리하기 위한 코드 작성(Python 기반 웹프레임워크 Flask 사용 예정) - 4주차 : Remote Server에서 제공할 Dashboard UI 코드 작성 (통계 차트를 그려주는 vue-chart.js 라이브러리는 알아봤지만 시간이 없어서 못함) - 5주차 : 부품 조립 후 Smart Clock UI 코드 작성 (부품 조립이 정말 손이 많이 가는 작업이었음…) - 6주차 : 최종 점검 및 기능 추가 (여유조차 없었음)
  • 22. Retrospection •웹개발만 쭉 해오다가 임베디드 영역을 건드려보는건 신선 한 경험이었음. •렌더링 하는 정보에 비해 자바스크립트가 많이 무거움(…) •어느 디스플레이 써야하느냐도 생각외로 중요한 요인이었음
 (하드웨어는 역시 내가 건드릴 부분이 아니다) •아직까지 Virtual DOM 으로 UI 구성하기에는 너무 이른 것 같다.
  • 24. 혹시 관심있을 분들을 위해 •bitbucket 리포지토리 •https://bitbucket.org/malkoring/smart_clock/ •슬라이드 주소 •https://speakerdeck.com/kodingwarrior/ embedded-project-presentation-slide