-
Notifications
You must be signed in to change notification settings - Fork 9
데모데이 질문리스트
Jin edited this page Dec 20, 2020
·
11 revisions
-
context api
- Redux와 마찬가지로 상태의 중앙 관리를 위한 상태 관리 도구입니다.
- Redux와 다르게 React에서만 사용할 수 있습니다.
- 전역 상태가 저장되는 context, 전역 상태를 제공하는 Provider, 그리고 전역 상태를 받아 사용하는 Consumer로 구성합니다.
- context API는 작성해야하는 코드도 많고 복잡하기 때문에 이런 부가 기능이 필요하지 않다면 Redux를 사용하지 않아도 됩니다.
-
redux
- 로컬 스토리지에 상태를 영속적으로 저장하고 시작할 때 다시 불러오는데 특히 뛰어납니다.
- 상태를 서버에서 미리 채워서 HTML에 담아 클라이언트로 보내고 앱을 시작할 때 다시 불러오는데 특히 뛰어납니다.
- addEventListener를 이용해서 mousedown, mouseup, mousemove 이벤트를 적용하였고,
- mousedown이벤트가 발생하면 drawing을 true, mouseup이벤트가 발생하면 drawing을 false로 정해주었습니다.
- mousemove는 mousedown이 발생했을 때만 적용되고 mousedown일 경우, 그림판에 색칠해주고, mouseup일 경우 그리는 것을 그만두도록 구현하였습니다.
- requestAnimaionFrame을 이용해서 canvas에 애니메이션을 그리고 지워주는 역할을 반복하였습니다.
- 애니메이션을 지울 때는 cancelAnimationFrame을 적용하여 적용된 애니메이션의 id를 제거해주었습니다.
- setInterval의 경우 언제나 콜백함수를 호출하기 떄문에 브라우저의 다른 탭이 선택되는 경우 실제 화면을 다시 그릴 필요가 없는 경우에도 화면을 다시 그리게 됩니다.
- 현재 창에 표시되지 않으면 애니메이션을 중지하여 배터리 수명과 성능향상에 도움이 됩니다.
- 1초에 60프레임 호출
- web 기반에서 수식을 쉽게 편집해줄 수 있도록 도와주는 라이브러리
- latex 문법을 html로 변환하여 보여주는 라이브러리입니다.
- 애니메이션 렌더링을 줄여보기 위해서 requestAnimationFrame 함수를 이용하여 애니메이션을 추가하였습니다.
- LaTeX(ˈleɪtɛk 레이텍[] 또는 ˈlɑːtɛk 라텍[])은 문서 조판에 사용되는 프로그램이다. Tex을 직접 사용하기는 어렵기 때문에, 오늘날에는 latex을 이용하여 문서 조판을 하는 경우가 많습니다.
- 물론 그 부분에 대해서 좋은 경험을 할 수 있지만 제한된 시간으로 인해서 저같은 경우는 canvas, 지은님과 수경님은 drag&drop, resizing, undo, redo와 같은 기능적인 요구 사항을 해결하는 것이 먼저였기 때문에 이 부분에 대해서 먼저 해결을 하였고, 시간적으로 오래 걸리게 되어서 mathquill 라이브러리에 대한 학습과 수정하는 방법에 대해서만 학습을 진행하였습니다.
- TS는 정적 타입을 지원해줍니다. 이로 인해서 컴파일 단계에서 오류를 포착할 수 있습니다.
- 배경화면은 카카오테마를 토대로 만들었습니다. 장점이 있다기보단 사용자들이 수식 작성을 딱딱하게 하지 않도록 배경화면에 효과를 주어서 좀 더 재미를 주기 위해서 사용하였습니다.
- 프론트엔드만으로 프로젝트를 구성하면서 정적 파일을 빌드하고 이 파일을 서버에 보여주기 위해서 사용하였습니다.
- 움직이는 gif를 저장하기 위해서는 프레임 단위로 저장을 해야했는데, 그 과정에서 렌더링 비용이 상당히 많이 들었습니다. 이 기능을 넣게 되면 렌더링 비용이 오래 걸릴 것 같다는 생각이 들어서 기능을 추가하지 않았습니다.
- 일단 성능 저하에 대한 고민은 requestAnimationFrame과 setInterval에 대한 고민, 가상 canvas를 설정함으로써, 반복 렌더링 작업을 줄여보는 시도를 해보았습니다.
- 하지만 canvas자체가 매 순간마다 지우고 그려주는 작업을 반복하기 때문에 이 비용을 좀 더 최소화할 방법을 좀 더 생각해봐야 할 것 같습니다.
- 둘 다 사용 가능합니다. drag & drop을 만든 목적은 사용자들이 커서 이동을 하지 않고, 원하는 위치에 수식을 넣기 위해서 사용하였습니다.
- 서버는 백엔드 기능이 없기에 프론트엔드만 정적 파일을 nginx를 이용해서 서버에서 볼 수 있도록 하였습니다.
- MathML Getting Started
- LaTex와 MathML
- webpack과 babel설정
- webpack bundle파일 줄이기
- react-mathquill 정리
- redux setting 및 공부
- Localstorage 사용법
- Drag and drop 사용법
😄데일리 스크럼
- 11월 17일 화요일 스크럼
- 11월 18일 수요일 스크럼
- 11월 19일 목요일 스크럼
- 11얼 20일 금요일 스크럼
- 11얼 23일 월요일 스크럼
- 11월 24일 화요일 스크럼
- 11월 25일 수요일 스크럼
- 11월 26일 목요일 스크럼
- 11월 27일 금요일 스크럼
- 11월 30일 월요일 스크럼
- 12월 1일 화요일 스크럼
- 12월 2일 수요일 스크럼
- 12월 3일 목요일 스크럼
- 12월 4일 금요일 스크럼
- 12월 7일 월요일 스크럼
- 12월 8일 화요일 스크럼
- 12월 9일 수요일 스크럼
- 12월 10일 목요일 스크럼
- 12월 14일 월요일 스크럼
- 12월 15일 화요일 스크럼
- 12월 16일 수요일 스크럼
- 12월 17일 목요일 스크럼
- 12월 18일 금요일 스크럼