엔지니어링 매니저를 위한 추천 도서 | GeekNews
Typescript Helper Types · GitHub
Joe Fallon’s Blog | TypeScript try/catch/finally and Custom Errors
Error
객체(혹은 이를 상속한 객체)를 활용하고 그 외의 단일값은 최대한 지양할 것finally
구문에서 리소스 해제catch
블락에서 먹어버리는 행위)throw
를 goto 문으로 쓰지 말 것catch
문을 로깅 후 다시 에러를 던지는 용도로 사용하지 말 것 (로그 중복 호출됨)Do Not Catch Exceptions in TypeScript | by Tomáš Veselý | Medium
Either(Result)
모나드를 활용하는 듯한 코드가 나오자, 이럴거면 이런 방식으로 에러를 처리하기 위한 당위성을 명확히 정리하여 팀 내부에 공유하고 필요한 도구를 도입하여 에러 처리 방식을 개선하자는 생각을 냈다.throw
문으로 던져지는 에러는 리턴 타입이 아니고, 타입스크립트 타입으로 정의할 수 없기 때문이다.value
, error
가 있는 Result
타입 이야기를 꺼낸 것이고, 이 글에서는 실제로는 써먹기 어려운 아주 낮은 수준의 예제를 제공하고 있지만 충분히 타입스크립트로 명시적인 에러 처리를 위한 아이디어는 얻을 수 있었다.The trick to viewport units on mobile | CSS-Tricks
document.documentElement.clientHeight
을 처음 페이지 로딩 시 고정값으로 쓰고 있었다. 이렇게 하면 사용자가 직접 툴바를 없애는 동작을 실행할 시 레이아웃이 또 깨지기 때문에 제대로 된 해결책을 적용하지 못한 셈이었다.window.innerHeight
을 잡아내서 임의의 CSS 변수로 할당하고, 그 변수가 100vh
보다 약간 낮지만 연관된 수치가 되도록 조정을 하는 것이다. 그리고 calc
함수를 이용하여 계산하도록 하는 것이다.-webkit-fill-available
을 이용하여 사파리의 툴바 문제는 그럭저럭 해결할 수 있다 하더라도 다른 브라우저의 레이아웃에 맞추는 것은 어차피 윗글의 설명대로 해야 될 것이다.The State of CSS 2020: Trend Report
preferes-reduced-motion
(사용율 15%), preferes-color-scheme
(사용율 18%) 새 미디어 쿼리도 잘 활용되고 있음Programmatic file downloads in the browser - LogRocket Blog
<a href>
태그를 클릭만 하는 것이 아니라 fetch
를 통해 GET 요청을 서버와 주고받는 식으로 파일을 다운로드 받는 기능을 구현해야 했다.blob
객체로 만든 다음 URL.createObjectURL
함수에 넘기는 방식을 활용했다.CSS-in-JS에서 CSS-in-CSS로 바꿔야 하는 이유 | bono blog
html - How to hide the eye from a password input in MS Edge and IE - Stack Overflow
AddyOsmani.com - React Server Components
애플이 만든 무료앱 중 최강! Numbers 활용법! 비용없이 아이폰 아이패드 맥 협업, 교육, 프로젝트 자료 만들기
CV - Mindful professional profiles
Input Source Pro on the Mac App Store