26.08.10 ~ 26.08.14소프트웨어 테스팅에 대한 책을 읽으며요즘에 틈틈이 개발 서적을 읽고 있는데 이라는 책을 보고 있다. 보면 볼수록 테스트를 정말 꼼꼼하게 하는 과정에서는 아무리 훌륭한 AI 모델이라도 한계가 있겠다는 생각이 들었다. 책에서는 간단한 명세 기반 테스트 예제를 소개를 하는데, 간단한 기능임에도 입력값에 따라서 나올 수 있는 케이스가 기하급수적으로 늘어나고 요구사항이 하나만 바뀌어도 많은 변화가 생긴다. 구획과 경계를 나누고 구체적인 테스트 케이스를 작성하는 것은 오히려 AI보다 사람이 더 잘할 수도 있겠다는 생각이 들었다. 이 기능을 만든 주체가 사람이라면 말이다.요즘 기능을 구현하는 데 드는 시간은 AI로 인하여 점점 줄어들고 있고, 처음에 설계를 하고 구현된 걸 테스트하는..
전체 글
안녕하세요. 사진과 철학에 관심이 많은 웹 프론트엔드 개발자 오원종입니다. 시간이 지나도 꾸준히 읽힐 수 있는 글을 쓰고 싶습니다. 재미있는 일만 하면서 살고 있는 사람입니다.이 문제를 풀기 위해서는 후위 순회(postorder traversal)와 트리 DP에 대해서 알아야 한다.각 노드에서 자식들이 만들어 둔 최적의 값을 받아 현재 노드의 값을 계산한다. 다만 이 문제에서는 부모에게 넘길 값과 전체 정답 후보가 서로 다르다는 점이 핵심이다.0. 필요한 개념 먼저 정리하기0-1. 경로와 후위 순회트리의 경로는 인접한 노드를 간선으로 이어 만든 노드의 나열이다. 같은 노드를 두 번 지날 수 없고, 루트를 반드시 포함할 필요도 없다. 따라서 어떤 노드에서 왼쪽 자식으로 내려갔다가 다시 그 노드를 거쳐 오른쪽 자식으로 내려가는 형태도 하나의 유효한 경로다.현재 노드에서 최선의 값을 계산하려면 왼쪽과 오른쪽 서브트리의 결과가 먼저 필요하다. 자식을 먼저 처리하고 부모를 나중에 처리..
원문: https://jakearchibald.com/2025/present-and-future-of-progressive-image-rendering/프로그레시브 이미지 포맷을 쓰면 이미지 리소스의 일부만 받은 상태에서도 디코더가 부분 렌더링을 만들어낼 수 있습니다. 이미지의 일부만 표시되기도 하고, 저품질·저해상도 버전으로 표시되기도 합니다. 최근 이 주제를 깊이 파고들다가 흔한 오해 몇 가지를 발견했고, AVIF에서 좀 더 실용적인 해결책이 나오면 좋겠다는 생각을 하게 됐습니다.지금 브라우저가 기본으로 지원하는 프로그레시브 렌더링이 어떤 것들인지부터 살펴보겠습니다.브라우저의 프로그레시브 이미지 렌더링 현황비교에 쓸 이미지를 소개합니다. 이 글을 다 읽을 때쯤이면 이 이미지가 눈에 아른거릴 겁니다.해..
원문: https://jakearchibald.com/2025/fetch-streams-not-for-progress/Mozilla에서 제 역할 중 하나는 우리가 올바른 기능에 집중하고 있는지 확인하는 것인데, 이번에는 fetch 업로드 스트림 주제를 다루게 됐습니다. Chrome이 한동안 지원해 온 기능이지만, Firefox나 Safari에서는 아직 지원되지 않습니다.저는 다양한 소셜 플랫폼에서 이 기능을 어떻게 생각하는지, 무엇에 활용할 것인지를 물어봤습니다. 단연 가장 많은 답변은 "업로드 진행 상황을 측정하기 위해"였습니다. 하지만 그 목적으로 쓰면 부정확한 결과가 나오고, 심지어 브라우저에서 잘못된 구현으로 이어질 수도 있습니다.자세히 살펴보겠습니다…응답 스트림스트리밍 응답은 수년 전부터 모든 ..
26.07.27 ~ 26.07.31AI Agent를 만드는 업무를 시작했다7월에 조직 개편이 되면서 팀 내에서 사용할 AI Agent를 만드는 업무를 새롭게 하게 될 예정이다. 지금까지 내가 해 왔던 익숙했던 작업들과 다른 작업들이라 조금 걱정되기도 하고 잘 할 수 있을까 두렵지만, 그래도 도전적인 업무를 하면서 내가 성장할 수 있을 것 같아서 만족스럽다. 여러 서드파티 연동을 해야 하는 서비스이고, 인증 절차도 까다로워서 이러한 부분에서 고민의 영역이 많지만, 잘 정리하면 나한테 의미가 있는 프로젝트가 될 것 같아서 기쁘다. 자세하게 말할 수는 없지만, 팀 안에서 매번 사람이 수동으로 해야 하는 여러 길고 복잡한 작업들을 AI가 알아서 다 하게 만들어 주는 슬랙 봇을 만들게 되었다. 이틀 만에 초안을 ..
최근에 Typescript로 BST를 직접 구현해 보라는 질문을 받았는데 제대로 구현하지 못했다. 그래서 중요한 개념을 복습할 겸 하나씩 정리해 보고자 한다. with Codex이 글은 정수 값만 저장하는 Binary Search Tree(BST) 를 TreeNode, BinarySearchTree 두 클래스로 직접 구현하는 흐름을 정리한 노트입니다. 먼저 의사코드로 생각을 고정하고, 그 다음 그림으로 포인터 이동을 확인한 뒤, 마지막에 TypeScript 코드로 옮깁니다.이 구현의 규칙은 네 가지입니다.value는 정수만 허용합니다.한 노드의 왼쪽 서브트리에는 더 작은 값만 둡니다.한 노드의 오른쪽 서브트리에는 더 큰 값만 둡니다.중복 값은 삽입하지 않고 false를 반환합니다.1. BST 규칙부터 잡..
26.07.06 ~ 26.07.10나의 필요에 의한 스킬을 처음 만들어 보았다나는 지금까지 누군가가 만든 스킬을 사용하는 것에 익숙했는데, 최근에 처음으로 내가 필요에 의해서 반복되는 작업을 스킬로 만든 사례가 있었다.나는 뱅크샐러드에서 가계부 관리를 한다. 뱅크샐러드와 내 모든 은행과, 카드를 연동하면 실시간으로 나의 자산 내역과 지출, 수입 내역을 관리할 수 있어서 편리하게 잘 쓰고 있다. 뱅크샐러드에서 이 모든 자산 관련 내용을 엑셀 파일로 추출할 수 있는데, 한 달에 한 번씩 내가 수동으로 하고 있던 재무관리를 AI 스킬을 만들어서 하게 해 보았다.뱅크 샐러드 앱에서 파일 추출 후 Codex에 파일 업로드까지만 내가 하고 내가 만든 재무분석 스킬을 돌리면 AI가 알아서,나의 현재 자산 현황 (현금..
이 문제를 풀기 위해서는 비트마스크 DP에 대해서 알아야 한다.배열의 길이가 최대 16이기 때문에, 각 원소를 썼는지 안 썼는지를 하나의 비트마스크로 표현할 수 있다. 그리고 어떤 원소들을 이미 사용했는지 알 수 있으면, 지금 만들고 있는 부분집합의 합이 목표값에서 어디까지 차 있는지도 계산할 수 있다.0. 필요한 개념 먼저 정리하기먼저 이 문제의 목표는 k개의 부분집합을 만드는 것이다. 모든 부분집합의 합이 같아야 하므로, 전체 합을 k로 나눈 값이 각 부분집합의 목표 합이 된다.예를 들어 nums = [4,3,2,3,5,2,1], k = 4라면 전체 합은 20이고 각 부분집합의 목표 합은 5다. 따라서 (5), (4,1), (3,2), (3,2)처럼 모든 그룹이 합 5로 끝나야 한다.여기서 중요한 전..
