읽은 책과 학습 내용을 바탕으로 정리한 기록입니다.
최근 접근성 기능을 개발하면서 TTS의 음량을 높여야 하는 상황이 있었다. 기존에는 브라우저의 speechSynthesis API를 사용해 음성 안내를 제공하고 있었는데, 실제 기기에서 음량을 최대로 설정해도 원하는 수준만큼 소리가 커지지 않는 문제가 있었다. 처음에는 단순히 음량 설정을 조정하면 될 것이라고 생각했지만, 문제는 브라우저 API 자체의 제약에 있었다.1. Web Speech API의 음량 제한Web Speech API의 SpeechSynthesisUtterance는 음성의 속도, 언어, 음량을 설정할 수 있다.const utterance = new SpeechSynthesisUtterance('안녕하세요.');utterance.lang = 'ko-KR';utterance.volume = ..
스트리밍 연결에 문제가 생기면 기존 연결을 정리하고, 일정 시간이 지난 뒤 다시 연결하도록 처리하고 있었다. 그런데 새 연결이 정상적으로 만들어진 뒤에도 몇 초 후 다시 연결이 끊기는 경우가 발생했는데, 처음에는 다른 원인으로 생각했지만, 알고 보니 이전 연결에서 시작된 실패 처리 로직이 아직 끝나지 않은 상태였다.기존에는 generation으로 이전 작업을 걸러내고 있었다initialize()가 실행될 때마다 generation 값을 증가시키고, 각 초기화 작업에서는 자신이 시작된 시점의 값을 가지고 있었다.const myGeneration = ++initGeneration;실패 처리 로직에 진입할 때도 현재 작업이 최신인지 확인했다.if (myGeneration !== initGeneration) {..
예전에는 CSS에 새로운 기능이 나오면 꽤 챙겨보는 편이었다. 이전에는 CSS로 까다로운 UI를 다룰 일이 많아서 그러기도 했던 것 같다. 요즘은 그런 관심이 많이 줄었다. 지금 하는 일에서 CSS를 깊게 만질 일이 없는 것도 있고, AI를 쓰기 시작하면서 모르는 속성이나 구현 방법이 있어도 AI를 활용해 바로 해결하는 일이 많아지다 보니, 하나의 속성을 따로 찾아보고 깊게 볼 일이 줄어든 것도 큰 것 같다. 그러다 최근 정말 오랜만에 Josh 블로그에 들어가 최근에 올라온 글들을 보다가 Getting Started with Anchor Positioning을 읽었다. Tooltip이나 dropdown처럼 어떤 요소를 기준으로 다른 요소를 띄우는 UI를 CSS에서 처리할 수 있게 해주는 기능이다. An..