원문: https://blog.logrocket.com/css-in-2026/한동안 웹사이트를 만들어 왔다면, CSS에 대해 어느 정도 확고한 의견이 있을 겁니다. 디자인과 레이아웃에는 당연한 선택이지만, 기본 애니메이션을 넘어 더 인터랙티브한 기능이 필요해지면 대부분의 개발자는 본능적으로 자바스크립트에 손을 뻗습니다. 하지만 끊임없이 발전하는 플랫폼 덕분에 웹 기능을 구현할 때 "CSS는 디자인, 자바스크립트는 인터랙션"이 더 이상 기본값일 필요가 없어졌습니다.모던 CSS는 이제 커스텀 스크립트가 필요했던 복잡한 애니메이션과 사용자 인터렉션을 처리할 만큼 강력합니다. 이 글에서는 CSS에 새로 도입되는 최신 기능들을 살펴보고, 자바스크립트로 익숙하게 구현하던 수준의 인터랙티비티를 유지하면서도 개발 워크..
전체 글
안녕하세요. 사진과 철학에 관심이 많은 웹 프론트엔드 개발자 오원종입니다. 시간이 지나도 꾸준히 읽힐 수 있는 글을 쓰고 싶습니다. 재미있는 일만 하면서 살고 있는 사람입니다.원문: https://www.jonoalderson.com/conjecture/its-time-for-modern-css-to-kill-the-spa/네이티브 CSS 트랜지션은 클라이언트 사이드 라우팅의 가장 강력한 근거를 조용히 무너뜨렸습니다. 그런데도 사람들은 성능 좋은 웹사이트 대신 끔찍한 앱을 계속 만들고 있습니다.앱처럼 보여야 한다는 착각"앱처럼 느껴지게 만들어 주세요."기획 단계 어딘가에서 누군가 이 말을 꺼냅니다. CMO일 수도, 디지털 리드일 수도, 브랜드 매니저일 수도 있습니다. 그리고 이 한마디로 아키텍처가 결정됩니다. SPA로 가겠다고요. 아마 리액트겠죠. 뷰일 수도 있습니다. 거의 확실히 Vercel이나 Netlify에 배포될 것이고, 헤드리스 CMS와 GraphQL API도 곁들여..
이 문제를 풀기 위해서는 MST(Minimum Spanning Tree, 최소 신장 트리)에 대해서 알아야 한다.Spanning Tree(신장 트리)는 그래프 내의 모든 정점을 포함하는 트리이다.스패닝 트리는 사이클을 만들면 안 되고 n개의 노드를 (n-1)개의 간선으로 연결한다.그리고 이 스패닝 트리를 연결하는 간선에 가중치(strength)가 있을 때 그 가중치의 값을 최소로 구하는 경우가 바로 MST이다.1. 접근 : 문제를 단순화 하기이 문제에서는 노드가 n개 주어지고 각각의 간선이 edges[i]로 주어진다고 했다. edges[i] = [u, v, s, must] 인데 u - v 이어지는 무방향 간선이며 여기에 가중치가 s, 그리고 must가 1이면 필수, 0이면 한 번까지 업그레이드가 가능하다..
AI 도구의 발전 속도는 매우 빠르다. 매주 새로운 AI 도구들이 생겨나고 있고, 클로드(Claude) 같은 에이전트는 하루에도 여러 차례 업데이트된다. 이런 변화 속에서 많은 현업 개발자들이 따라가기에 벅차다고 느낀다. 모두가 AI를 이야기하니 뒤처질 것 같은 FOMO를 느끼기도 하고, AI가 마법처럼 모든 일을 해결해줄 것이라 기대했다가 오히려 불필요한 작업이 늘어나는 경험을 한 사람도 있을 것이다.필자는 현업 개발자로서 급변하는 트렌드를 맹목적으로 좇기보다, 본질적인 원리를 깊게 이해하는 데 집중하려 한다. 이 글에서는 AI 에이전트를 실무에서 어떻게 활용할 수 있는지, 필자의 경험을 바탕으로 스킬(Skill), 규칙(Rules), 커맨드(Commands), 서브 에이전트(Sub-Agents)의 차..
원문: What is a Design Engineer?디자인 엔지니어는 디자인과 프런트엔드 개발 사이를 연결하며, 훌륭하게 느껴지고 완벽하게 작동하는 인터페이스를 만듭니다. 디자인 엔지니어가 무엇을 하는지, 디자이너 및 개발자와 어떻게 다른지, 그리고 Vercel, Stripe, Linear 같은 회사들이 왜 이들을 채용하는지 알아보세요.디자인 엔지니어는 소프트웨어가 단순히 '작동'하는 것을 넘어, 실제로 좋게 느껴지도록 만드는 사람들입니다.이 역할은 최근 큰 주목을 받고 있습니다. Vercel, Stripe, Linear, Cursor가 모두 적극적으로 채용하고 있습니다. 디자인 엔지니어링 전용 구인 게시판이 생겨났습니다. 그리고 기술 트위터를 자주 본다면, 이에 대한 담론을 본 적이 있을 것입니다.그..
원문: Lessons From 9 More Years of Tricky Bugs2002년부터 저는 제가 마주친 모든 까다로운 버그를 추적해왔습니다. 9년 전, 그때까지의 버그에서 얻은 교훈을 담아 블로그 글을 작성했습니다. 그 이후로 기록해온 버그들을 이번에 전부 다시 돌아봤습니다. 첫 번째 회고에서 정리했던 교훈들을 실제로 잘 실천해왔는지 확인하고 싶었고, 그사이 어떤 유형의 버그들을 마주쳤는지도 살펴보고 싶었습니다. 이전과 마찬가지로 교훈을 코딩, 테스팅, 디버깅의 카테고리로 나눠 정리했습니다.코딩1. 빈 케이스. 다섯 개의 버그가 빈 줄, 빈 파일, 공백, 또는 값이 0인 경우와 관련이 있었습니다. 예를 들어, 공백 한 칸(0이 아닌)이 있는 줄은 비어있는 것으로 건너뛰어야 했지만 그렇지 않았습니다..
이번 글은 내가 지난 두 달여간 교회 수련회에서 사용할 웹 어플리케이션을 만들었던 개발기이며 그 과정에서 배웠던 점들과 느꼈던 점들을 적어 보려고 한다. 지난 25년 12월 나는 한 교회 친구의 콜링을 받고, 교회 수련회에서 사용할 웹 어플리케이션을 개발하게 되었다.12월 초에 콜링을 받았고 수련회는 1월 23일이어서 기획과 개발을 다 7주 정도의 시간 안에 해야 하는 상황이었다.다행히 내가 혼자서 해야 하는건 아니었고 기획자 2명과 개발자 2명과 같이 총 5명이 팀으로 개발을 할 수 있는 팀이 있었다. 프로젝트 구조 : 웹 FE + BE 모노레포프로젝트 구조는 프론트엔드와 백엔드를 하나의 레포로 관리했다. 개발을 할 때는 프론트엔드 서버와 백엔드 서버를 각각 띄워서 작업했다. 사용했던 기술스택은 다음과..
원문: Building a Toast Component저는 2023년에 토스트 라이브러리인 Sonner를 만들었습니다. 현재 주간 npm 다운로드가 800만 회를 넘어섰고, Cursor, X, Vercel 같은 회사에서 사용되고 있습니다. 또한 shadcn/ui의 기본 토스트 컴포넌트이기도 합니다.Sonner를 만들 당시, 토스트 "시장"은 이미 포화 상태였습니다. 그렇다면 무엇이 Sonner를 돋보이게 했을까요? 왜 사람들은 검증된 대안 대신 Sonner를 선택했을까요?이름부터 시작해봅시다.네이밍제 생각에 기능에 기반해서 이름을 짓는 건 너무 평범합니다. react-toast, react-snackbar, react-notifications 같은 이름은 모두 지루하고 일반적으로 느껴집니다. 더 독특하고..
