2024-10-18
🕒 읽는 데 0분 예상forest_날짜
‣
forest_분류
일지
- PostGIS: Geo queries - Supabase MySQL 의 GIS나 PostgreSQL 의 PostGIS 기능과 유사한 공간 DB 기능을 BaaS 서비스인 Supabase 에서도 지원하고 있다. Supabase가 PostgreSQL 기반이니 당연한 이야기이긴 하다.
- 학교에서 연구실 안전교육을 의무로 이수하란다. 음.. 당연히 안전은 몇 번이고 강조해도 지나치지 않지만 1학기 때도 들었는데 또 듣기에는 귀찮지 않은가. 이번 학기에는 실험 과목도 없는데… 그래서 브라우저 DevTools를 열고 네트워크 탭에 가서 강의 시청 진도율을 어떻게 반영하고 있는지 살펴봤다. 그러다 강의를 전혀 보지 않고 60분 분량의 교육을 모두 이수한 것으로 바꿔버렸다. 이를 통해 알 수 있는 교훈, “Don't trust the client”
$curl --request POST \ --url https://.../Edu/AviProcessCheck \ --header 'Content-Type: text/plain; charset=utf-8' \ --data 'scheduleMemberProgressNo=......¤tTime=3600&isEnd=true'
- “결국, 프로그래밍의 본질은 변하지 않을 거예요. 문제를 해결하고, 아이디어를 현실로 만드는 것. 그래서 프로그래밍을 정말 사랑하는 사람들은 앞으로도 계속해서 뛰어난 프로그래머가 될 수 있을 거예요.” - Cursor Team | Lex Fridman Podcast
- KLAS+에 일정 관리를 위한 캘린더 기능을 추가했다. 캘린더 뷰를 구현하기 위해 react-big-calendar 라이브러리를 사용했는데, 터치 환경에서 발생하는 이슈를 해결한 과정을 기록한다.
이 라이브러리에서는
onSelectSlot
이벤트를 통해 달력에서 각 날짜 영역을 선택했을 때의 동작을 지정할 수 있다. 마우스를 사용한 PC 환경에서는 롱 프레스나 드래그 뿐만 아니라 single 클릭 시에도 정상적으로 이벤트가 수신된다. 그러나 터치 환경에서는 single 클릭의 경우 이벤트를 발생시키지 않는 이슈가 있었다. 이는 이미 라이브러리 Repository의 Issue로 여러 개가 등록되어 있지만 명확한 해결 방법은 찾기 어려웠다. 여러 issue 글과 구글링을 해본 끝에 다음과 같은 해결방법을 찾았다. react-big-calendar는components
속성을 이용해 내부 컴포넌트를 재정의할 수 있다. 여기에는 날짜 영역인dateCellWrapper
도 해당된다. 따라서onTouchEnd
이벤트를 새롭게 정의해TouchCellWrapper
를 만들고, 기존dateCellWrapper
를 대신하여 사용하였다.
const TouchCellWrapper = ({ children, value, onSelectSlot }) => cloneElement(Children.only(children), { onTouchEnd: (event) => { const bounds = event.target.getBoundingClientRect(); onSelectSlot({ slots: [value], start: value, end: new Date(new Date(value).getTime() + 24 * 60 * 60 * 1000), action: "click", }); }, }); ... <Calendar components={{ dateCellWrapper: (props) => ( <TouchCellWrapper {...props} onSelectSlot={handleSelectSlot} /> ) }} onSelectSlot = {handleSelectSlot} />
- Neck-Life - 에어팟을 사용하여 거북목을 치료해보세요! 재미있는 프로젝트를 발견했다. 에어팟의 IMU(Inertial Measurement Unit, 관성 측정 장치) 센서 데이터를 이용한 것으로 보이는데, 소리를 듣는 무선 이어폰을 다른 시각으로 접근해 활용한 점이 인상적이다. CMHeadphoneMotionManager - Apple Developer