Web(26)
-
개발일지 (2월 회고)
Business 비즈니스 목표를 달성하고 비선형적인 "J커브형 성장"을 이루어내려면 안티프래질에서 이야기하는 "하방 압력은 작으면서 상방 압력은 비선형적으로 큰" 시도들이 자주 일어나야 한다고 생각했다. 다들 바쁜 상황에서 누군가를 말로 설득하는 것만으로는 실제 구체적인 행동으로 이어지기 어렵다는 것을 배웠고, 최근 도덕경에서 "개념화, 논리화의 위험성"에 대해 지적한 것이 생각나서 사내에서 작은 사이드 프로젝트를 직접 한번 진행해 보게 되었다. 3주 정도 진행한 프로젝트를 진행하면서 개인적으로 느끼는 바가 많았다. 크게 두가지 부분에서 중요한 통찰을 얻었는데, 아무리 작은 서비스더라도 혼자서 모든 부분을 다 챙길 수는 없다는 것(할 수 있지만 시간이 부족한 것이 아니라 못하는 것이었다)과, 내가 생각하..
2023.03.01 -
Concept of React Scheduler
Overview 이전 포스팅에서 React Sync Mode(Concurrent Mode가 아닌 것, Legacy Mode)가 어떻게 동작하는지에 대해 Source Code Level에서 간략하게 살펴보았습니다. 이번 포스팅부터는 해당 내용을 기반으로 해서 Concurrent Mode가 어떻게 동작하는지에 대해서 한 단계씩 살펴보려고 합니다. Fiber, workInProgress Node, workLoopSync와 같은 용어들을 이해하고 있다는 전제로 전개되므로 이전 포스팅을 먼저 읽어보시는 것을 추천합니다. Concurrent Mode의 핵심은 Task를 수행하는 도중에 더 높은 우선순위를 지니고 있는 Task가 들어오면, 지금 처리 중인 Task를 "일시중단(Pause)"하고, 우선순위가 더 높은 ..
2023.01.14 -
Node.js + Puppeteer Memory Leak Handling
Overview 콴다 팀에서는 수학 문제를 이미지가 아닌 Latex String의 형태로 저장합니다. 용량 측면에서도 그렇지만, 문제의 "유사도"를 측정하거나, 문제의 컨텐츠를 기반으로 사용자에게 알맞은 문제를 추천하는 데에 있어서는 이미지보다 스트링의 형태가 더 효율적이기 때문입니다. 하지만 결국 이 컨텐츠를 사용하는 학생들의 입장에서는 이 스트링이 올바르게 렌더 된 수식이 필요하기 때문에 이를 렌더 해주는 작업이 필요합니다. 이 수식을 라이브러리를 사용해서 user-side에서 사용자의 화면에 그대로 그려주는 방법도 있겠지만, 이는 클라이언트 사이드의 많은 리소스를 소모하게 됩니다. 게다가 웹뷰가 아닌 Native 환경에서는 수식을 렌더 하기 위해 엄청난 양의 폰트를 로드해야 하는데, 이는 결국 애플..
2022.11.20 -
모노레포의 기술적 요구사항 (4) - Plugin
Overview 모노레포의 문화적 의의를 다룬 이전 포스팅에 이어, 이번 포스팅 시리즈에서는 실제로 모노레포를 팀에 도입하기 위해 거쳐왔던 여러 기술적인 고려 사항들을 간단하게 이야기해보려고 합니다. "모노레포는 이렇게 운영하는 것이 좋다"라는 가이드라기보다는 프론트엔드 팀이 모노레포로 전환하는 과정에서 겪은 여러 문제들과, 이를 해결해 나가는 과정에 대한 기록에 가까울 것 같습니다. 글은 다음과 같은 순서로 작성되었습니다. Workspaces & Dependencies Global Lint & Prettier Deploy & Branch Management Plugin (Optional) Sparse Checkout Yarn Plugin Yarn Berry(v2) 부터 공식적으로 plugin에 대한 지..
2022.08.07 -
모노레포의 기술적 요구사항 (1) - Workspaces & Dependencies
Overview 모노레포의 문화적 의의를 다룬 이전 포스팅에 이어, 이번 포스팅 시리즈에서는 실제로 모노레포를 팀에 도입하기 위해 거쳐왔던 여러 기술적인 고려 사항들을 간단하게 이야기해보려고 합니다. "모노레포는 이렇게 운영하는 것이 좋다"라는 가이드라기보다는 프론트엔드 팀이 모노레포로 전환하는 과정에서 겪은 여러 문제들과, 이를 해결해 나가는 과정에 대한 기록에 가까울 것 같습니다. 글은 다음과 같은 순서로 작성되었습니다. Workspaces & Dependencies Global Lint & Prettier Deploy & Branch Management Plugin (Optional) Sparse Checkout yarn workspaces # Yarn workspaces aim to make wo..
2022.08.07 -
[Web.dev] Fast (6) - Resource Delivery Optimization
Overview web.dev에서 소개하는 Web Performance에 대한 내용들을 여러 챕터에 걸쳐서 정리합니다. 모든 내용들을 다 다루지는 않고, 개인적으로 중요하다고 생각하는 부분들을 추려서 중점적으로 정리했습니다. 자세한 내용들은 아래 Table of Contents의 링크를 통해 확인하실 수 있습니다. Optimize your resource delivery Content delivery networks (CDNs) Prioritize resources Preload critical assets to improve loading speed Establish network connections early to improve perceived page speed Prefetch resources..
2022.07.03