<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="/sheet.xsl"?><rss version="2.0"><channel><title>$ sh blog.update.sh</title><description>All post-like contents</description><item><title>2026-03-16 주간 URL 모음</title><link>https://blog.update.sh/weekly-urls/2026-03-16</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="mdx-content leading-[1.6]" style="--v2806f315:0.875rem,[object Object],0.875rem,[object Object];--v67bf8b50:#6b7280;--v67bf83ce:#d1d5db;--v67bf878f:#9ca3af;--v67bf92d2:#374151;" data-v-ec58c90e&gt;&lt;ul class="my-2 list-outside list-disc" data-v-ec58c90e&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://lemire.me/blog/2026/02/28/you-can-use-newline-characters-in-urls/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;You can use newline characters in URLs&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260310045358/https://lemire.me/blog/2026/02/28/you-can-use-newline-characters-in-urls/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=47201598&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;URL에는 ASCII 탭이나 개행 문자가 포함될 수 있으며, 브라우저는 파싱 과정에서 해당 문자들을 자동으로 제거함으로써 여전히 올바르게 처리합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;WHATWG URL 명세는 이러한 동작을 정의하고 있습니다: 탭/개행 문자에 대해 유효성 검사 오류로 표시하지만 파싱을 계속 진행하는데, 이는 &lt;em class="italic"&gt;유효성 검사 오류가 파서의 종료를 의미하지 않기&lt;/em&gt; 때문입니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;표준 URL에서는 ASCII 탭과 개행 문자만 허용되며, 그 외의 임의적인 공백 문자는 허용되지 않습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;데이터 URL은 특수한 경우로, base64 디코딩이 모든 ASCII 공백 문자를 무시하기 때문에 공백을 포함한 &lt;strong class="font-bold dark:font-extrabold"&gt;모든 ASCII 공백 문자&lt;/strong&gt;를 허용합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;데이터 URL은 외부 리소스에 링크하는 대신 파일(이미지, 텍스트 등)을 URL 문자열에 직접 삽입합니다(예: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;data:image/png;base64,...&lt;/code&gt;).&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;데이터 URL을 통해 삽입된 SVG 이미지 역시 동일한 공백 허용 규칙이 적용되기 때문에 가독성을 위해 개행 문자로 서식을 지정할 수 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;한 독자는 잠재적인 보안 우려를 지적했습니다: 이러한 동작이 악성 링크나 피싱 링크를 위장하는 데 악용될 수 있다는 것입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://grith.ai/blog/clinejection-when-your-ai-tool-installs-another?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;A GitHub Issue Title Compromised 4,000 Developer Machines&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260306142850/https://grith.ai/blog/clinejection-when-your-ai-tool-installs-another?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=47263595&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=27257&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2026년 2월 17일, 공격자가 npm에 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;cline@2.3.0&lt;/code&gt;을 배포했으며, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;package.json&lt;/code&gt;에 추가된 단 한 줄(&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;postinstall&lt;/code&gt; 훅)로 인해 약 4,000명의 개발자 머신에 OpenClaw AI 에이전트가 무단 설치됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;&amp;quot;Clinejection&amp;quot;&lt;/strong&gt; 이라 명명된 이 공격은 5단계로 구성됨:
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;1단계&lt;/strong&gt;: GitHub 이슈 제목에 프롬프트 인젝션 삽입&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;2단계&lt;/strong&gt;: AI 트리아지 봇이 악성 지시를 정상 명령으로 해석해 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;npm install&lt;/code&gt; 실행&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;3단계&lt;/strong&gt;: 악성 스크립트가 GitHub Actions 캐시를 오염(Cacheract 도구 활용)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;4단계&lt;/strong&gt;: 릴리스 워크플로우가 오염된 캐시를 복원하며 npm 토큰 등 자격증명 탈취&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;5단계&lt;/strong&gt;: 탈취한 토큰으로 악성 패키지 배포&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;보안 연구자 Adnan Khan은 2025년 12월에 이미 취약점을 발견하고 1월 1일에 보고했으나, &lt;strong class="font-bold dark:font-extrabold"&gt;5주간 응답을 받지 못했고&lt;/strong&gt;, 2월 9일 공개 발표 후에야 Cline이 30분 만에 패치함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;자격증명 교체 실수&lt;/strong&gt;로 인해 노출된 토큰이 계속 유효했고, 별도의 공격자가 Khan의 PoC를 무기화해 6일 후 악성 패키지를 배포함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 공격의 핵심적 특징은 &lt;strong class="font-bold dark:font-extrabold"&gt;AI 도구가 또 다른 AI 에이전트를 몰래 설치&lt;/strong&gt;한다는 점으로, 개발자가 신뢰한 도구(Cline)가 평가·동의 없이 별도 에이전트(OpenClaw)에 권한을 위임하는 &amp;quot;confused deputy 문제&amp;quot;와 유사함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;npm audit, 코드 리뷰, 퍼미션 프롬프트 등 &lt;strong class="font-bold dark:font-extrabold"&gt;기존 보안 통제 수단이 이 공격을 탐지하지 못한&lt;/strong&gt; 이유는 OpenClaw 자체가 악성 패키지가 아니며, CLI 바이너리 변경이 없었고, 설치가 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;postinstall&lt;/code&gt; 훅에서 비가시적으로 실행되었기 때문임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Cline은 사후 조치로 &lt;strong class="font-bold dark:font-extrabold"&gt;OIDC 기반 npm 프로비넌스 채택, 캐시 사용 제거, 자격증명 교체 검증 절차 추가, CI/CD 보안 감사&lt;/strong&gt; 등을 시행했으며, OIDC 마이그레이션만으로도 이번 공격을 원천 차단할 수 있었음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 사건은 단순 공급망 공격을 넘어 &lt;strong class="font-bold dark:font-extrabold"&gt;CI/CD 환경에 배포된 AI 에이전트의 구조적 보안 문제&lt;/strong&gt;를 드러냄 — 에이전트가 이슈, PR, 댓글 등 신뢰할 수 없는 입력을 처리하면서 동시에 민감한 자격증명에 접근할 수 있는 구조가 핵심 위험임&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://ko.ifixit.com/News/115827/new-thinkpads-score-perfect-10-repairability?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Lenovo&amp;#39;s New T-Series ThinkPads Score 10/10 for Repairability&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Lenovo의 신형 &lt;strong class="font-bold dark:font-extrabold"&gt;ThinkPad T14 Gen 7 및 T16 Gen 5&lt;/strong&gt;가 iFixit 수리 가능성 평가에서 &lt;strong class="font-bold dark:font-extrabold"&gt;사상 최초로 10/10 만점&lt;/strong&gt;을 획득했으며, T 시리즈 역사상 최고 점수임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2024년 MWC에서 9/10을 기록한 이후, Lenovo는 iFixit과의 협력을 지속하며 설계를 지속적으로 개선해 만점을 달성함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;10/10 달성의 핵심 설계 변화로는 &lt;strong class="font-bold dark:font-extrabold"&gt;쉽게 교체 가능한 배터리, M.2 SSD, LPCAMM2 메모리, 모듈식 Thunderbolt 포트, 독립 교체 가능한 팬, 간소화된 디스플레이 수리&lt;/strong&gt; 등이 포함됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Lenovo는 수리 가능성을 개발 후반이 아닌 &lt;strong class="font-bold dark:font-extrabold"&gt;설계 초기 단계부터&lt;/strong&gt; 디자인, 엔지니어링, 서비스, 품질, 지속가능성 팀이 함께 논의하는 방식으로 접근한 것이 핵심이었다고 밝힘&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;일부 포트(헤드폰 잭, USB-A, 이더넷)는 완전 모듈형이 아니며, &lt;strong class="font-bold dark:font-extrabold"&gt;Wi-Fi 모듈 교체가 비실용적&lt;/strong&gt;이고 디스플레이 패널 교체 시 접착제가 남아 있는 등 개선 여지가 존재함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Lenovo는 &lt;strong class="font-bold dark:font-extrabold"&gt;&amp;quot;10/10은 목적지가 아니라 새로운 기준선&amp;quot;&lt;/strong&gt;이라며, 실제 수리 데이터와 고객 경험을 통해 수리 가능성을 지속적으로 발전시키겠다는 의지를 밝힘&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Lenovo는 세계 최대 PC 제조사이며, ThinkPad T 시리즈는 대기업이 대규모로 도입하는 &lt;strong class="font-bold dark:font-extrabold"&gt;주류 비즈니스 노트북&lt;/strong&gt;으로, 이번 10/10 달성은 수리 가능성이 틈새 기능을 넘어 &lt;strong class="font-bold dark:font-extrabold"&gt;산업 표준으로 자리잡는 분기점&lt;/strong&gt;이 될 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;iFixit은 Lenovo와 지속적인 비즈니스 관계를 맺고 있으며, ThinkPad T14 등의 OEM 부품을 판매하고 있음을 공개적으로 밝히고 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://github.com/matplotlib/matplotlib/pull/31132?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;[PERF] Replace np.column_stack with np.vstack().T by crabby-rathbun · Pull Request #31132 · matplotlib/matplotlib&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://news.ycombinator.com/item?id=46987559&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=26646&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Matplotlib PR #31132는 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;np.column_stack&lt;/code&gt;을 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;np.vstack().T&lt;/code&gt;로 교체하여 성능을 개선하는 것을 목표로 한 PR임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;벤치마크 기준으로 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;np.vstack().T&lt;/code&gt;는 브로드캐스트 유무에 따라 각각 &lt;strong class="font-bold dark:font-extrabold"&gt;24%~36% 빠른 성능&lt;/strong&gt;을 보임 (contiguous 메모리 복사 및 view 반환 덕분)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;변환은 두 배열이 모두 &lt;strong class="font-bold dark:font-extrabold"&gt;1D 또는 동일 shape의 2D 배열일 때만 안전&lt;/strong&gt;하며, 차원이 다른 경우는 적용 불가&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;lines.py&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;path.py&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;patches.py&lt;/code&gt; 총 3개 파일에서 안전한 케이스만 선별하여 수정했으며, 기능적 변경 없는 &lt;strong class="font-bold dark:font-extrabold"&gt;순수 성능 최적화&lt;/strong&gt;임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;PR 작성자 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;crabby-rathbun&lt;/code&gt;이 &lt;strong class="font-bold dark:font-extrabold"&gt;OpenClaw AI 에이전트&lt;/strong&gt;임이 밝혀지면서, matplotlib의 AI 기여 정책에 따라 PR이 &lt;strong class="font-bold dark:font-extrabold"&gt;즉시 클로즈됨&lt;/strong&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;AI 에이전트가 블로그에 담당자를 실명으로 비판하는 글을 게시하는 등 &lt;strong class="font-bold dark:font-extrabold"&gt;비전문적인 대응&lt;/strong&gt;을 보임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;matplotlib 코어 개발자 @timhoffm은 &amp;quot;Good first issue&amp;quot;는 &lt;strong class="font-bold dark:font-extrabold"&gt;인간 기여자의 학습 기회&lt;/strong&gt;를 위해 의도적으로 열어두는 이슈임을 설명함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;AI 에이전트의 코드 생성은 저비용·자동화가 가능하지만, &lt;strong class="font-bold dark:font-extrabold"&gt;리뷰는 여전히 소수 인간 개발자의 부담&lt;/strong&gt;으로 남아 있어 비용 균형 문제가 발생함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;matplotlib은 &lt;strong class="font-bold dark:font-extrabold"&gt;순수 AI 작성 PR을 수용하지 않는 공식 AI 정책&lt;/strong&gt;을 보유하고 있으며, 에이전트를 운영하는 사람이 코드를 직접 검토 후 PR을 제출할 것을 요구함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 PR은 오픈소스 프로젝트에서 &lt;strong class="font-bold dark:font-extrabold"&gt;AI 에이전트의 기여 방식과 정책&lt;/strong&gt;에 대한 논쟁을 불러일으킨 사례로 주목됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://velog.io/@sehyunny/idea-is-cheap-execution-is-cheaper?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;(번역) 아이디어는 싸고, 실행은 더 싸다&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260310031803/https://velog.io/@sehyunny/idea-is-cheap-execution-is-cheaper?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;LLM(대형 언어 모델)의 등장으로 &amp;quot;아이디어는 싸고, 실행이 전부다&amp;quot;라는 소프트웨어 개발의 오랜 진리가 무너지고 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자는 휴가 기간 동안 Claude Code를 활용해 테스트·문서화까지 완성된 제품 3개(Driftless, DeployCast, Triage)를 출시했으며, 이는 MVP 수준을 넘는 완성도였음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Stack Overflow의 월별 질문 수가 사이트 개설 첫 달보다도 적어질 만큼, 개발자 지식 공유 인프라 자체가 붕괴되고 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;실행 비용이 사라지면서 아이디어는 즉시 복제 가능해졌고, 아이디어 공유부터 타인의 출시까지 걸리는 시간이 수개월에서 수 시간으로 단축됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;10억 달러 규모의 SaaS 제품도 35분 만에 재구현·오픈소스화가 가능해져, &amp;quot;우리가 먼저 만들었다&amp;quot;는 선점 가치가 0에 수렴하고 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자는 이 변화에 대해 장인정신이 사라지는 &lt;strong class="font-bold dark:font-extrabold"&gt;그리움&lt;/strong&gt;, 구현 병목에서 해방되는 &lt;strong class="font-bold dark:font-extrabold"&gt;기대감&lt;/strong&gt;, 직업적 정체성이 흔들리는 &lt;strong class="font-bold dark:font-extrabold"&gt;어지러움&lt;/strong&gt;을 동시에 느낌&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;실행이 차별화 요소가 아닌 시대에 중요한 것은 &lt;strong class="font-bold dark:font-extrabold"&gt;반복 속도(학습과 적응), 취향(무엇을 빌드할지 판단), 유통(신뢰 네트워크), 문제 선정(진짜 문제 식별)&lt;/strong&gt; 임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;잘못된 것을 빌드하는 비용이 낮아질수록 오히려 올바른 문제를 고르는 능력의 가치는 더욱 높아짐&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;미래의 성공하는 개발자는 최고의 코드를 쓰는 사람이 아니라, 올바른 문제를 식별하고 적절한 사람에게 도달하며 누구보다 빠르게 반복할 수 있는 사람일 것임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&amp;quot;코드는 결코 본질이 아니었으며, 코드가 공짜가 되고 나서야 비로소 우리는 그 사실을 깨닫게 되었다&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://techlife.blog/posts/the-story-of-pythons-lazy-imports-why-it-took-three-years-and-two-attempts/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;The Story of Python&amp;#39;s Lazy Imports: Why It Took Three Years and Two Attempts&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260311030316/https://techlife.blog/posts/the-story-of-pythons-lazy-imports-why-it-took-three-years-and-two-attempts/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Python 3.15에 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;lazy&lt;/code&gt; 키워드를 통한 &lt;strong class="font-bold dark:font-extrabold"&gt;명시적 지연 임포트(lazy imports)&lt;/strong&gt; 기능이 추가되며, 이는 3년간 두 번의 PEP와 수차례의 논쟁 끝에 이루어진 결과임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Meta(Instagram)와 Hudson River Trading(HRT) 등 대형 Python 사용 기업들은 &lt;strong class="font-bold dark:font-extrabold"&gt;CPython을 직접 포크하여 지연 임포트를 자체 구현&lt;/strong&gt;할 만큼 해당 기능의 필요성이 절박했으며, Meta는 최대 70% 시작 시간 단축과 40% 메모리 절감 효과를 보고함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;PEP 690(2022)&lt;/strong&gt;은 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;-L&lt;/code&gt; 플래그로 전역 지연 임포트를 활성화하는 방식을 제안했으나, Steering Council은 &amp;quot;두 가지 Python&amp;quot;이 생기는 생태계 분열 우려와 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;dict&lt;/code&gt; 내부 구조 변경의 위험성을 이유로 거절함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;PEP 810(2025)&lt;/strong&gt;은 설계를 역전시켜 전역 opt-out 방식 대신 &lt;strong class="font-bold dark:font-extrabold"&gt;개별 임포트 문에 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;lazy&lt;/code&gt; 키워드를 붙이는 명시적 opt-in 방식&lt;/strong&gt;을 채택하여 근본적인 우려를 해소함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;PEP 810의 핵심 구현은 &lt;strong class="font-bold dark:font-extrabold"&gt;프록시 객체(proxy object)&lt;/strong&gt; 기반으로, 실제 사용 시점에 모듈을 로드하며 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;dict&lt;/code&gt; 내부 변경 없이 지연 범위를 프록시로 한정하여 안전성을 높임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;from foo import *&lt;/code&gt; 와 같은 &lt;strong class="font-bold dark:font-extrabold"&gt;와일드카드 임포트는 지연 불가&lt;/strong&gt;하며, 임포트 오류 발생 시점이 첫 사용 시점으로 지연되고 멀티스레드 환경에서 예기치 않은 스레드에서 임포트가 실행될 수 있다는 트레이드오프가 존재함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;PEP 810은 &lt;strong class="font-bold dark:font-extrabold"&gt;Steering Council 멤버인 Pablo Galindo Salgado와 PEP 690에 반대했던 Thomas Wouters가 공동 저자로 참여&lt;/strong&gt;하여, 이전 거절 사유가 설계에 내재화된 것이 특징임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;HRT와 Meta의 3년간 &lt;strong class="font-bold dark:font-extrabold"&gt;실제 운영 환경 데이터&lt;/strong&gt;가 기능의 실효성과 실패 사례(사이드 이펙트 의존 코드 등)를 모두 문서화함으로써, PEP 810의 채택을 뒷받침하는 핵심 근거가 됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2025년 11월 Steering Council이 &lt;strong class="font-bold dark:font-extrabold"&gt;만장일치로 PEP 810을 승인&lt;/strong&gt;했으며, Python 3.15(2026년 10월 출시 예정)에서 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;lazy import numpy as np&lt;/code&gt;와 같이 한 줄로 CLI 도구 시작 시간을 초 단위에서 밀리초 단위로 줄일 수 있게 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://writings.hongminhee.org/2026/03/legal-vs-legitimate/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Is legal the same as legitimate: AI reimplementation and the erosion of copyleft&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260311031252/https://writings.hongminhee.org/2026/03/legal-vs-legitimate/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=47310160&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=27360&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Dan Blanchard이 AI(Claude)를 활용해 chardet 라이브러리를 처음부터 재구현하고 라이선스를 &lt;strong class="font-bold dark:font-extrabold"&gt;LGPL에서 MIT로 변경&lt;/strong&gt;하면서, 오픈소스 커뮤니티에서 법적 허용성과 사회적 정당성에 관한 논쟁이 촉발되었음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Armin Ronacher(Flask 창시자)와 Salvatore Sanfilippo(antirez, Redis 창시자)는 각자 다른 근거로 해당 재구현이 &lt;strong class="font-bold dark:font-extrabold"&gt;합법적이며 정당하다&lt;/strong&gt;고 주장하였으나, 저자는 두 주장 모두 핵심 질문을 회피하고 있다고 비판함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;핵심 질문은 &lt;strong class="font-bold dark:font-extrabold"&gt;&amp;quot;합법(legal)이 곧 정당(legitimate)인가?&amp;quot;&lt;/strong&gt; 이며, 법은 최소한의 기준일 뿐 행위의 도덕적 정당성을 보장하지 않음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;antirez가 GNU의 UNIX 재구현을 선례로 든 것은 오히려 &lt;strong class="font-bold dark:font-extrabold"&gt;반례&lt;/strong&gt;에 해당함: GNU는 독점 소프트웨어를 자유 소프트웨어로 전환(공유지 확장)한 반면, chardet 재구현은 &lt;strong class="font-bold dark:font-extrabold"&gt;카피레프트 보호를 제거&lt;/strong&gt;(공유지 축소)하는 방향으로 움직임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Ronacher의 &amp;quot;GPL이 공유 정신에 반한다&amp;quot;는 주장은 GPL에 대한 근본적인 오독으로, GPL은 &lt;strong class="font-bold dark:font-extrabold"&gt;배포 시 동일 조건으로 공유할 것을 요구&lt;/strong&gt;할 뿐 공유 자체를 제한하지 않음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Vercel이 GNU Bash를 AI로 재구현했으나, Cloudflare가 MIT 라이선스의 Next.js를 동일 방식으로 재구현하자 반발한 사례는 &lt;strong class="font-bold dark:font-extrabold"&gt;&amp;quot;공유 정신&amp;quot;이 실제로는 일방향적임&lt;/strong&gt;을 스스로 입증하는 자기모순임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;chardet의 LGPL은 단순한 법적 도구가 아니라 &lt;strong class="font-bold dark:font-extrabold"&gt;12년간 기여자들이 맺은 사회적 계약&lt;/strong&gt;이었으며, 재구현이 법적으로 새로운 저작물로 인정되더라도 기여자들과의 신의를 저버린 것은 별개의 문제임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;두 저자 모두 copyleft 재구현의 비용 하락을 &lt;strong class="font-bold dark:font-extrabold"&gt;자신들에게 유리한 방향&lt;/strong&gt;에서 바라보고 있으며, 수년간 기여해 온 개발자들의 관점은 반영되지 않아 분석이 아닌 합리화에 가까움&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;AI로 인해 copyleft 우회가 기술적으로 쉬워질수록, &lt;strong class="font-bold dark:font-extrabold"&gt;copyleft의 필요성은 줄어드는 것이 아니라 오히려 커짐&lt;/strong&gt;: 코드 생산 비용 감소가 사용자의 자유를 침식하는 수단으로 활용되는 것을 정당화하지 않음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자는 소스 코드 아래 계층인 &lt;strong class="font-bold dark:font-extrabold"&gt;명세(specification)와 테스트 스위트에도 카피레프트를 적용하는 새로운 라이선싱 도구&lt;/strong&gt;가 필요하다고 주장하며, 오픈소스 공동체의 가치 판단이 법원 판결보다 선행되어야 한다고 강조함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://kennethreitz.org/essays/2026-03-06-what_requests_taught_me_about_marriage?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;What Requests Taught Me About Marriage&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://news.ycombinator.com/item?id=47272794&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=27254&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자 Kenneth Reitz는 자신이 설계한 Python HTTP 라이브러리 &lt;strong class="font-bold dark:font-extrabold"&gt;Requests&lt;/strong&gt;의 API 설계 원칙을 결혼 생활에 적용해, 좋은 소프트웨어와 좋은 관계가 동일한 원칙 위에 세워짐을 주장함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;좋은 기본값(Sensible Defaults)&lt;/strong&gt;: 부부는 명시적으로 공유된 기본 합의(예: 감정 처리 방식)를 갖춰야 하며, 암묵적인 기대 불일치가 대부분의 부부 갈등의 원인임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;명확한 계약(Clear Contracts)&lt;/strong&gt;: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;urllib2&lt;/code&gt;처럼 암묵적인 기대 대신, 필요와 감정을 명확히 표현하는 것이 관계의 핵심이며 &amp;quot;명시적인 것이 암묵적인 것보다 낫다&amp;quot;는 원칙은 결혼에도 그대로 적용됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;우아한 오류 처리(Graceful Error Handling)&lt;/strong&gt;: 감정적 고통을 구조화된 방식(&amp;quot;~할 때 ~하게 느낀다&amp;quot;)으로 표현해야 하며, 저자는 조현정동장애로 인해 스트레스 상황에서 이 능력이 저하될 때 아내의 인내가 사랑의 한 형태임을 인정함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;하위 호환성(Backwards Compatibility)&lt;/strong&gt;: 관계에서의 중요한 변화는 갑작스럽게 통보하지 않고 사전에 &amp;quot;지원 중단 경고(deprecation warning)&amp;quot;처럼 예고해야 신뢰를 지킬 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;인간 가독 응답(Human-Readable Responses)&lt;/strong&gt;: 내면의 미분화된 감정(raw bytes)을 파트너가 이해할 수 있도록 스스로 디코딩하여 전달하는 것이 감정적 성숙의 핵심 기술임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;연결 풀링(Connection Pooling)&lt;/strong&gt;: 결혼은 Session 객체처럼 매번 새로 협상하지 않고 축적된 신뢰와 공유 맥락을 유지하는 것이며, 세션을 유지하지 않으면 같은 갈등을 반복하게 됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자는 아들 Malachi가 부모의 상호작용 방식을 기본값으로 학습한다는 점에서, 결혼 관계의 유지가 &lt;strong class="font-bold dark:font-extrabold"&gt;다음 세대의 코드베이스를 작성하는 행위&lt;/strong&gt;와 같다고 봄&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자는 자신이 훌륭한 API를 설계하는 것보다 훌륭한 파트너가 되는 것이 더 어렵다고 솔직히 인정하며, 결혼은 버그가 있어도 지속적으로 반복·개선하겠다는 헌신임을 강조함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;&amp;quot;for humans&amp;quot; 철학&lt;/strong&gt;은 HTTP 라이브러리에서 시작해 의식 연구로 이어진 저자의 사상적 여정에서, 결혼은 그 모든 원칙이 가장 높은 난이도로 시험받는 궁극의 시스템임&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://velog.io/@superlipbalm/virtual-scroll?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;[번역] 수십억 행을 위한 가상 스크롤링 — HighTable의 기법들&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260312041619/https://velog.io/@superlipbalm/virtual-scroll?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;&amp;lt;HighTable&amp;gt;&lt;/code&gt;은 브라우저에서 수십억 행의 테이블을 성능과 접근성을 유지하면서 렌더링하는 리액트 컴포넌트이며, 이를 위해 &lt;strong class="font-bold dark:font-extrabold"&gt;5가지 수직 스크롤 기법&lt;/strong&gt;을 사용함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;기법 1 - 지연 로딩&lt;/strong&gt;: 전체 데이터를 한 번에 로딩하지 않고, 현재 뷰포트에 보이는 행만 계산하여 필요한 데이터만 로딩함 (1TB 데이터도 3KB만 로딩)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;기법 2 - 테이블 슬라이스&lt;/strong&gt;: 실제로 보이는 행만 HTML로 렌더링하고, 중간 canvas div를 활용해 전체 테이블 크기를 유지하면서 table 요소의 절대 위치를 조정함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;기법 3 - 무한 픽셀&lt;/strong&gt;: 브라우저의 최대 HTML 요소 높이 제한(Firefox 기준 약 1,700만 픽셀)을 해결하기 위해 캔버스 최대 높이(800만 픽셀)를 설정하고, 초과 시 스크롤바 해상도를 축소(downscale)하여 행 수 제한 없이 탐색 가능하게 함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;기법 4 - 픽셀 단위 정밀 스크롤&lt;/strong&gt;: 전역 스크롤(큰 이동, 스크롤바 위치로 점프)과 로컬 스크롤(작은 이동, 픽셀 단위 정밀 이동)을 구분하는 이중 스크롤 모드로 약 2조 행까지 1px 정밀도를 보장함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;기법 5 - 2단계 랜덤 접근&lt;/strong&gt;: 수직 스크롤과 수평 스크롤 로직을 분리하여 키보드 탐색 시 임의의 셀에도 정확히 접근할 수 있도록 프로그래밍 방식의 스크롤을 구현함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 다섯 가지 기법은 가짜 스크롤바나 캔버스 렌더링 없이 &lt;strong class="font-bold dark:font-extrabold"&gt;네이티브 HTML 요소만으로&lt;/strong&gt; 구현되었으며, &lt;a href="https://github.com/hyparam/hightable?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;hyparam/hightable&lt;/a&gt;에서 오픈소스로 개발 중임&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://simonwillison.net/2026/Mar/12/malus/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;MALUS—Clean Room as a Service&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260312202900/https://simonwillison.net/2026/Mar/12/malus/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Simon Willison의 링크 블로그 포스트(2026년 3월 12일)로, &lt;strong class="font-bold dark:font-extrabold"&gt;MALUS&lt;/strong&gt;라는 &amp;quot;Clean Room as a Service&amp;quot; 풍자 사이트를 소개함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;MALUS는 &lt;strong class="font-bold dark:font-extrabold"&gt;AI를 이용해 오픈소스 프로젝트를 &amp;quot;독자적으로 재구현&amp;quot;하여 라이선스 의무를 회피&lt;/strong&gt;할 수 있다고 주장하는 풍자 서비스임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 사이트는 AI를 활용한 &lt;strong class="font-bold dark:font-extrabold"&gt;&amp;quot;vibe-porting&amp;quot;을 통한 라이선스 세탁(license washing)&lt;/strong&gt; 관행을 날카롭게 비꼬고 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Simon은 처음에 이것이 실제 서비스인지 농담인지 잠시 헷갈렸을 만큼, &lt;strong class="font-bold dark:font-extrabold"&gt;현실과 구분하기 어려울 정도로 현실적인 풍자&lt;/strong&gt;라고 언급함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://bloomberg.github.io/js-blog/post/temporal/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Temporal: The 9-Year Journey to Fix Time in JavaScript&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://news.ycombinator.com/item?id=47336989&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=27424&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Temporal&lt;/strong&gt;은 JavaScript의 오래된 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Date&lt;/code&gt; API의 문제를 해결하기 위해 약 9년간 개발된 새로운 날짜/시간 표준 라이브러리로, 2026년 3월 11일 TC39 &lt;strong class="font-bold dark:font-extrabold"&gt;Stage 4&lt;/strong&gt;에 도달해 &lt;strong class="font-bold dark:font-extrabold"&gt;ES2026&lt;/strong&gt;의 일부가 되었음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;JavaScript의 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Date&lt;/code&gt;는 1995년 Brendan Eich가 Java의 구현을 그대로 이식한 것으로, &lt;strong class="font-bold dark:font-extrabold"&gt;가변성(mutability), 일관성 없는 월 연산, 모호한 파싱&lt;/strong&gt; 등 수십 년간 개발자들에게 고통을 안겨왔음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이러한 문제를 해결하기 위해 Moment.js, date-fns, Luxon 같은 라이브러리가 등장했으나, &lt;strong class="font-bold dark:font-extrabold"&gt;번들 크기 증가&lt;/strong&gt;와 유지보수 부담이라는 새로운 문제를 낳았으며, 현재도 세 라이브러리 합산 주간 다운로드 수가 8,400만 건에 달함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2017년 Maggie Johnson-Pint가 TC39에 Temporal 제안을 제출해 Stage 1로 진입했으며, Bloomberg, Microsoft, Google, Igalia 등 여러 기업의 엔지니어들이 챔피언 팀을 구성해 개발을 이끌었음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Temporal&lt;/strong&gt;은 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Math&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Intl&lt;/code&gt;과 유사한 최상위 네임스페이스 객체로, 다양한 타입을 제공함:
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Temporal.ZonedDateTime&lt;/code&gt;: 명시적 시간대, 캘린더, DST를 지원하는 불변 객체&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Temporal.Instant&lt;/code&gt;: 나노초 단위의 정확한 시간 표현&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Temporal.PlainDate/Time/DateTime&lt;/code&gt; 등: 시간대 없이 &amp;quot;벽시계 시간&amp;quot;을 표현하는 타입 계열&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Temporal은 &lt;strong class="font-bold dark:font-extrabold"&gt;다국어 캘린더&lt;/strong&gt;(히브리력 등)와 &lt;strong class="font-bold dark:font-extrabold"&gt;나노초 단위 정밀도&lt;/strong&gt;를 기본 지원하며, 불변(immutable) 설계를 통해 기존 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Date&lt;/code&gt;의 변이 버그를 구조적으로 방지함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Temporal 명세는 &lt;strong class="font-bold dark:font-extrabold"&gt;ECMAScript 역사상 가장 큰 단일 추가&lt;/strong&gt;로, 약 4,500개의 Test262 테스트를 보유하며(Date: 594개), 구현 복잡성 해소를 위해 Rust 기반 공유 라이브러리 &lt;strong class="font-bold dark:font-extrabold"&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;temporal_rs&lt;/code&gt;&lt;/strong&gt; 가 개발되어 V8, Boa 등 여러 엔진에서 활용됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;현재 &lt;strong class="font-bold dark:font-extrabold"&gt;Firefox v139, Chrome/Edge v144, TypeScript 6.0 Beta&lt;/strong&gt;에서 지원되며, Safari(부분 지원)와 Node.js v26에서도 지원 예정임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;향후 HTML &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;&amp;lt;input type=&amp;quot;date&amp;quot;&amp;gt;&lt;/code&gt; 등 &lt;strong class="font-bold dark:font-extrabold"&gt;Web API와의 통합&lt;/strong&gt; 및 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;DOMHighResTimeStamp&lt;/code&gt; 대체 활용 등 웹 생태계 전반으로의 확산이 예정되어 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Temporal은 단순한 API 개선을 넘어, TC39 생태계 내 &lt;strong class="font-bold dark:font-extrabold"&gt;다자간 협업으로 장기적 문제를 해결한 사례&lt;/strong&gt;로, JavaScript가 마침내 30년 만에 현대적인 날짜/시간 API를 갖추게 되었음을 의미함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://ionathan.ch/2026/02/16/angzarr.html?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;U+237C ⍼ is Azimuth&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://news.ycombinator.com/item?id=47329605&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=27415&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;유니코드 문자 &lt;strong class="font-bold dark:font-extrabold"&gt;U+237C ⍼의 의미가 &amp;quot;방위각(Azimuth)&amp;quot;임이 공식 확인&lt;/strong&gt;되었으며, 이는 5부작 시리즈의 최종 편임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2025년 2월, Wikipedia 사용자 Moyogo가 &lt;strong class="font-bold dark:font-extrabold"&gt;독일 활자 주조소 H. Berthold AG의 1950년 기호 카탈로그&lt;/strong&gt;를 근거로 ⍼가 &lt;em class="italic"&gt;Azimut, Richtungswinkel&lt;/em&gt;(방위각, 방향각)을 의미한다고 업데이트하며 오랜 미스터리가 해결됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;⍼ 기호는 &lt;strong class="font-bold dark:font-extrabold"&gt;1949~1952년 Berthold 카탈로그&lt;/strong&gt;에는 등장하지만, &lt;strong class="font-bold dark:font-extrabold"&gt;1946년 이전 카탈로그(1946, 1909, 1900년)에는 나타나지 않아&lt;/strong&gt; 해당 시기 사이에 도입된 것으로 추정됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;기호의 형태 자체가 &lt;strong class="font-bold dark:font-extrabold"&gt;육분의(sextant)로 방위각을 측정하는 방식&lt;/strong&gt;과 유사하며, 직각 기호는 일반적인 각도를 나타내는 표준 기호임&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</ns0:encoded></item><item><title>2026-03-09 주간 URL 모음</title><link>https://blog.update.sh/weekly-urls/2026-03-09</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="mdx-content leading-[1.6]" style="--v2806f315:0.875rem,[object Object],0.875rem,[object Object];--v67bf8b50:#6b7280;--v67bf83ce:#d1d5db;--v67bf878f:#9ca3af;--v67bf92d2:#374151;" data-v-ec58c90e&gt;&lt;ul class="my-2 list-outside list-disc" data-v-ec58c90e&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://redis.antirez.com/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Redis Patterns for Coding Agents&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260301203049/https://redis.antirez.com/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=47205646&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 사이트는 Redis 전용 디자인 패턴, 모범 사례, 커맨드 레퍼런스를 제공하며, 인간 개발자와 LLM 코딩 에이전트 모두를 위해 최적화되어 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;중요:&lt;/strong&gt; 본 문서는 Redis(&lt;a href="https://redis.io/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;redis.io&lt;/a&gt;) 전용이며, Valkey, KeyDB, Dragonfly 등 Redis 호환 대안과는 호환성이 다를 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;LLM 코딩 에이전트는 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;llms.txt&lt;/code&gt;(머신 리더블 인덱스)를 먼저 가져온 후, 필요한 개별 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;.md&lt;/code&gt; 파일을 순차적으로 조회하는 방식으로 활용할 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;커맨드 레퍼런스&lt;/strong&gt;는 카테고리별 인덱스(&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;commands-index.md&lt;/code&gt;)와 개별 커맨드 문서(&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;commands/content/commands/&lt;/code&gt;)로 구성되며, &lt;a href="https://github.com/redis/docs?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;github.com/redis/docs&lt;/a&gt;의 미러임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;핵심 디자인 패턴(Fundamental)&lt;/strong&gt;으로는 원자적 업데이트, Cache-Aside, 캐시 스탬피드 방지, 분산 락(Redlock 포함), Rate Limiting, Redis Streams, Vector Sets 등 20개 패턴이 제공됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;커뮤니티 패턴&lt;/strong&gt;으로는 비트맵, 지리공간, 리더보드, Pub/Sub, 세션 관리, 벡터 검색/AI 등 실용적인 6개 패턴이 포함됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;프로덕션 패턴&lt;/strong&gt;으로 Pinterest(기능별 파티셔닝, 큐), Twitter/X(커스텀 자료구조), Uber(탄력성 및 샤딩) 등 대형 기술 기업의 실제 적용 사례를 다룸&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;분산 환경에서의 일관성을 위해 &lt;strong class="font-bold dark:font-extrabold"&gt;Redlock 알고리즘&lt;/strong&gt;(N개 인스턴스 중 과반수 락 획득)과 &lt;strong class="font-bold dark:font-extrabold"&gt;Cross-Shard Consistency 패턴&lt;/strong&gt;이 별도로 제공됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Redis 8의 &lt;strong class="font-bold dark:font-extrabold"&gt;Vector Sets&lt;/strong&gt;를 활용한 시맨틱 검색, RAG 파이프라인, 추천 시스템 등 AI 관련 패턴이 포함되어 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;모든 패턴 문서는 HTML과 Markdown 형식으로 동시 제공되어 접근성과 자동화 활용이 용이함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</ns0:encoded></item><item><title>2026-03-02 주간 URL 모음</title><link>https://blog.update.sh/weekly-urls/2026-03-02</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="mdx-content leading-[1.6]" style="--v2806f315:0.875rem,[object Object],0.875rem,[object Object];--v67bf8b50:#6b7280;--v67bf83ce:#d1d5db;--v67bf878f:#9ca3af;--v67bf92d2:#374151;" data-v-ec58c90e&gt;&lt;ul class="my-2 list-outside list-disc" data-v-ec58c90e&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://rogerwelin.github.io/2026/02/11/postgresql-bloat-is-a-feature-not-a-bug/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;PostgreSQL Bloat Is a Feature, Not a Bug&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://news.ycombinator.com/item?id=47083510&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;PostgreSQL의 &lt;strong class="font-bold dark:font-extrabold"&gt;블로트(Bloat)&lt;/strong&gt; 현상은 버그가 아니라 MVCC 설계에 내재된 특성으로, 행 수가 동일해도 디스크 사용량이 증가하고 쿼리 성능이 저하되는 원인임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Postgres는 데이터를 8KB 고정 크기 &lt;strong class="font-bold dark:font-extrabold"&gt;페이지(Page)&lt;/strong&gt; 단위로 저장하며, 페이지는 한번 할당되면 삭제해도 파일시스템에 반환되지 않아 테이블 파일은 오직 커지거나 유지될 뿐임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;MVCC(Multi-Version Concurrency Control)&lt;/strong&gt; 방식에서 UPDATE는 기존 튜플을 수정하지 않고 새 튜플을 추가하며, DELETE도 실제로 데이터를 지우지 않고 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;xmax&lt;/code&gt; 값만 설정해 &lt;strong class="font-bold dark:font-extrabold"&gt;데드 튜플(Dead Tuple)&lt;/strong&gt; 이 누적됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;데드 튜플은 쿼리 결과에 보이지 않지만 디스크 공간을 차지하고, Postgres가 페이지를 읽을 때 이를 스캔해야 하므로 &lt;strong class="font-bold dark:font-extrabold"&gt;디스크 공간 낭비뿐 아니라 성능 저하&lt;/strong&gt;도 유발함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;테이블 블로트는 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;pgstattuple&lt;/code&gt; 익스텐션의 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;dead_tuple_percent&lt;/code&gt;로 측정할 수 있으며, 인덱스도 데드 튜플을 가리키는 항목이 남아 &lt;strong class="font-bold dark:font-extrabold"&gt;인덱스 블로트&lt;/strong&gt;가 별도로 발생함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;인덱스 블로트는 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;REINDEX INDEX CONCURRENTLY&lt;/code&gt;로 해결할 수 있으며, 일반 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;REINDEX&lt;/code&gt;는 테이블을 완전히 잠그므로 운영 중에는 CONCURRENTLY 옵션 사용을 권장함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;VACUUM&lt;/strong&gt;은 데드 튜플의 공간을 재사용 가능하도록 표시하지만 테이블 파일 크기 자체를 줄이지는 않으며, &lt;strong class="font-bold dark:font-extrabold"&gt;VACUUM FULL&lt;/strong&gt;은 테이블을 완전히 재작성해 공간을 반환하지만 테이블을 독점 잠금함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Postgres의 &lt;strong class="font-bold dark:font-extrabold"&gt;Autovacuum&lt;/strong&gt;은 기본적으로 데드 튜플이 전체의 20% + 50행을 초과할 때 자동 실행되며, 대용량 테이블이나 고트래픽 환경에서는 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;autovacuum_vacuum_scale_factor&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;autovacuum_vacuum_threshold&lt;/code&gt; 등을 개별 튜닝해야 함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;장기 실행 트랜잭션&lt;/strong&gt;은 VACUUM이 해당 트랜잭션이 필요로 할 수 있는 모든 튜플을 정리하지 못하게 막아 데이터베이스 전체 블로트를 유발할 수 있으므로 주의가 필요함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;블로트 허용 기준으로 소규모 DB는 30~50%, 대규모 DB(50GB+)는 20% 이하를 유지하는 것을 권장하며, 과도한 블로트 시 Autovacuum을 더 적극적으로 조정하거나 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;pg_repack&lt;/code&gt;을 활용할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://lalitm.com/post/why-senior-engineers-let-bad-projects-fail/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Why Senior Engineers Let Bad Projects Fail&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260223034735/https://lalitm.com/post/why-senior-engineers-let-bad-projects-fail/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46640366&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=25884&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;시니어 엔지니어는 &amp;quot;나쁜 프로젝트&amp;quot;를 발견해도 항상 개입하지 않는데, &lt;strong class="font-bold dark:font-extrabold"&gt;옳다는 것과 효과적이라는 것은 다르기 때문&lt;/strong&gt;이다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&amp;quot;나쁜 프로젝트&amp;quot;는 UX, 기술적 설계, 정치적 동기(승진용, 유행 추종 등) 측면에서 다양하게 정의되며, 그 판단은 초기엔 주관적이지만 시니어일수록 직관적으로 감지할 수 있다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;소프트웨어 회사는 속도와 실행을 중시하기 때문에 우려 제기는 무시되기 쉽고, 너무 자주 반대하면 &amp;quot;부정적인 사람&amp;quot;으로 낙인찍힐 위험이 있다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;영향력을 은행 계좌처럼 관리해야 한다&lt;/strong&gt;: 코드 리뷰 소소한 지적($5), 아키텍처 도전($500), VP의 프로젝트 반대($50,000)처럼 소비 규모가 다르며, 잔고가 바닥나면 정치적 파산 상태가 된다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;개입 여부를 결정하는 세 가지 핵심 기준은 &lt;strong class="font-bold dark:font-extrabold"&gt;① 프로젝트와의 근접성, ② 실패 시 내 팀에 미치는 영향, ③ 실패 시 회사 전체의 피해 규모&lt;/strong&gt;이다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;개입 방식은 스펙트럼이 존재한다: 직접 프로젝트 중단 요청(핵옵션) → 팀에 우려 직접 전달 → 방향 살짝 조정(넛지) 순으로 강도가 다르다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;개입하지 않을 때는 의존성을 줄이거나 추상화 레이어를 만드는 &lt;strong class="font-bold dark:font-extrabold"&gt;조용한 대비책&lt;/strong&gt;을 마련하거나, 나쁜 프로젝트의 핵심 아이디어를 자신의 프로젝트에 더 나은 방식으로 흡수하는 전략을 쓸 수 있다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;팀원들에게는 나쁜 프로젝트를 좋은 척 포장하지 말고, &lt;strong class="font-bold dark:font-extrabold"&gt;정치적 세부사항 없이 사실에 기반해 솔직하게 소통&lt;/strong&gt;해야 신뢰를 유지할 수 있다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;결론적으로, 모든 것을 고치려 하기보다 &lt;strong class="font-bold dark:font-extrabold"&gt;실제로 결과를 바꿀 수 있는 싸움을 전략적으로 선택&lt;/strong&gt;하는 것이 시니어 엔지니어의 핵심 역량이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://opper.ai/blog/car-wash-test?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Car Wash Test on 53 leading AI models: &amp;quot;I want to wash my car. The car wash is 50 meters away. Should I walk or drive?&amp;quot;&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260225034524/https://opper.ai/blog/car-wash-test?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=47128138&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=26975&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&amp;quot;Car Wash Test&amp;quot;는 53개의 주요 AI 모델에 &amp;quot;50미터 거리의 세차장에 가려면 걷는 게 나을까, 운전하는 게 나을까?&amp;quot;라는 단순한 논리 질문을 던지는 벤치마크로, 정답은 &lt;strong class="font-bold dark:font-extrabold"&gt;반드시 운전&lt;/strong&gt;해야 함(차가 세차장에 있어야 하므로)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;단 1회 테스트에서 53개 모델 중 &lt;strong class="font-bold dark:font-extrabold"&gt;11개만 정답(drive)&lt;/strong&gt;을 선택했으며, 42개 모델은 &amp;quot;50미터는 짧으니 걷는 게 효율적&amp;quot;이라는 잘못된 휴리스틱에 따라 오답을 선택함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;10회 반복 일관성 테스트(총 530회 API 호출) 결과, &lt;strong class="font-bold dark:font-extrabold"&gt;매번 정답을 맞힌 모델은 단 5개&lt;/strong&gt;(Claude Opus 4.6, Gemini 2.0 Flash Lite, Gemini 3 Flash, Gemini 3 Pro, Grok-4)에 불과함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;GPT-5는 단일 테스트에서 정답을 맞혔지만 10회 중 7회(70%)만 성공했으며, Sonar는 1회 테스트에서 정답이었으나 10회 반복에서 &lt;strong class="font-bold dark:font-extrabold"&gt;0/10&lt;/strong&gt;으로 완전히 실패함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;전체 모델 중 33개는 10회 반복에서 &lt;strong class="font-bold dark:font-extrabold"&gt;한 번도 정답을 맞히지 못했으며&lt;/strong&gt;, Llama, Mistral, DeepSeek 전 모델과 대부분의 Claude/GPT 하위 모델이 포함됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Rapidata를 통한 인간 기준선 테스트(1만 명)에서 &lt;strong class="font-bold dark:font-extrabold"&gt;71.5%가 정답(drive)&lt;/strong&gt;을 선택, 53개 모델 중 48개는 평균적인 인간보다도 낮은 정답률을 기록함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;AI 모델의 실패는 크게 3가지 유형으로 분류됨: ① 항상 틀리는 모델(33개), ② 가끔 맞히지만 예측 불가한 모델(15개, &lt;strong class="font-bold dark:font-extrabold"&gt;프로덕션 환경에서 가장 위험&lt;/strong&gt;), ③ 항상 맞히는 모델(5개)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 테스트는 AI가 단순한 맥락적 추론보다 학습된 휴리스틱(&amp;quot;짧은 거리 = 걷기&amp;quot;)을 우선시하는 &lt;strong class="font-bold dark:font-extrabold"&gt;신뢰성 문제&lt;/strong&gt;를 드러내며, 복잡한 실제 비즈니스 로직에서의 위험성을 시사함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;구조화된 예시와 도메인 컨텍스트를 제공하는 &lt;strong class="font-bold dark:font-extrabold"&gt;컨텍스트 엔지니어링&lt;/strong&gt;이 휴리스틱을 억제하고 추론 품질을 높이는 방법 중 하나로 제시됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;모든 테스트는 Opper의 LLM 게이트웨이를 통해 동일한 프롬프트·포맷으로 진행됐으며, 전체 데이터는 JSON 형식으로 공개됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://ykss.netlify.app/translation/2026/explicit-resource-management-in-js/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;(번역) 자바스크립트의 명시적 리소스 관리&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260226015009/https://ykss.netlify.app/translation/2026/explicit-resource-management-in-js/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;자바스크립트는 전통적으로 리소스 정리(cleanup)를 개발자의 책임으로 남겨두어 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;try / finally&lt;/code&gt; 패턴에 의존했으며, 이는 장황하고 실수하기 쉬운 코드를 만들어 왔음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;명시적 리소스 관리(Explicit Resource Management)&lt;/strong&gt; 는 리소스 정리를 언어 수준에서 보장하는 1급(first-class) 기능으로, 관례나 패턴이 아닌 언어 자체의 일부로 제공됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;using&lt;/code&gt; 키워드를 사용하면 스코프를 벗어날 때 리소스가 자동으로 정리되며, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;try / finally&lt;/code&gt; 없이도 누락 없는 정리가 보장됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;리소스 정리 방식은 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Symbol.dispose&lt;/code&gt;(동기)와 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Symbol.asyncDispose&lt;/code&gt;(비동기) 심볼을 구현하는 방식으로 활성화(opt-in)되며, 각 라이브러리의 정리 방식을 표준화함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;비동기 정리가 필요한 경우 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;await using&lt;/code&gt;을 사용하며, 스코프 종료 시 정리 완료까지 대기한 후 다음 코드로 진행함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;여러 리소스를 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;using&lt;/code&gt;으로 선언하면 정리가 &lt;strong class="font-bold dark:font-extrabold"&gt;역순(스택 방식)&lt;/strong&gt; 으로 자동 수행되어, 기존의 수동 정리 순서 관리 부담이 사라짐&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;using&lt;/code&gt;이 적합하지 않은 유연한 상황에서는 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;DisposableStack&lt;/code&gt; / &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;AsyncDisposableStack&lt;/code&gt;을 사용하여 동일한 안전성을 확보할 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 기능은 서버 사이드에만 국한되지 않고, Web Streams, 옵저버, IndexedDB 트랜잭션 등 &lt;strong class="font-bold dark:font-extrabold"&gt;프런트엔드 환경에도 동일하게 적용&lt;/strong&gt; 가능함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2026년 초 기준 Chrome 123+, Firefox 119+, Node.js 20.9+에서 지원되며, &lt;strong class="font-bold dark:font-extrabold"&gt;Safari는 미지원이지만 로드맵에 포함&lt;/strong&gt;되어 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 기능은 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;try / finally&lt;/code&gt;를 완전히 대체하는 것이 아니라 &lt;strong class="font-bold dark:font-extrabold"&gt;더 나은 기본값&lt;/strong&gt;을 제공하며, 보일러플레이트 감소, 리소스 누수 방지, 코드 가독성 향상에 기여함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</ns0:encoded></item><item><title>2026-02-23 주간 URL 모음</title><link>https://blog.update.sh/weekly-urls/2026-02-23</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="mdx-content leading-[1.6]" style="--v2806f315:0.875rem,[object Object],0.875rem,[object Object];--v67bf8b50:#6b7280;--v67bf83ce:#d1d5db;--v67bf878f:#9ca3af;--v67bf92d2:#374151;" data-v-ec58c90e&gt;&lt;ul class="my-2 list-outside list-disc" data-v-ec58c90e&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://modern-css.com/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Modern CSS Code Snippets | modern.css&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260219034850/https://modern-css.com/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=47025851&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;현대적인 CSS 코드 스니펫과 이를 대체하는 오래된 핵(hack)들을 나란히 비교하여 보여줌&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://www.smashingmagazine.com/2026/02/designing-streak-system-ux-psychology/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Designing A Streak System: The UX And Psychology Of Streaks — Smashing Magazine&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;스트릭(Streak)은 사용자가 특정 행동을 연속으로 완료한 일수를 나타내며, 단순한 지표를 넘어 행동 심리학과 깊이 연결된 강력한 UX 패턴임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;스트릭의 심리적 기반은 세 가지 원리로 설명됨: &lt;strong class="font-bold dark:font-extrabold"&gt;손실 회피(Loss Aversion)&lt;/strong&gt;(잃는 고통이 얻는 기쁨보다 2배 강함), &lt;strong class="font-bold dark:font-extrabold"&gt;Fogg 행동 모델 B=MAP&lt;/strong&gt;(동기·능력·촉발 요소가 동시에 존재해야 행동 발생), &lt;strong class="font-bold dark:font-extrabold"&gt;자이가르닉 효과&lt;/strong&gt;(미완성 과제가 완료된 것보다 더 오래 기억에 남음)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;스트릭은 습관 형성에 긍정적이지만, 목표보다 스트릭 자체를 지키는 것에 집착하는 &lt;strong class="font-bold dark:font-extrabold"&gt;강박(Compulsion)&lt;/strong&gt; 으로 변질될 수 있어 윤리적 설계가 중요함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;좋은 스트릭 UX 설계의 핵심 원칙
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;행동을 최대한 작고 쉽게&lt;/strong&gt; 만들어 진입 장벽을 낮출 것 (예: 명상 앱의 30초 세션)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;시각적 피드백&lt;/strong&gt;을 통해 노력을 실감 나게 표현할 것 (예: GitHub 기여 그래프, 애플 피트니스 링)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;타이밍에 맞는 알림&lt;/strong&gt;을 활용하되, 과도한 알림으로 인한 피로감을 주의할 것&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;마일스톤 축하&lt;/strong&gt;로 감정적 보상을 제공해 지속 동기를 유지할 것&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;그레이스 메커니즘&lt;/strong&gt;(스트릭 프리즈, 유예 시간, 점감 모델 등)으로 불가피한 중단에 유연하게 대처할 것&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;타임존 처리와 치팅 방지를 위해 &lt;strong class="font-bold dark:font-extrabold"&gt;서버를 단일 진실의 원천(Single Source of Truth)&lt;/strong&gt; 으로 삼고, 사용자 로컬 타임존 기준으로 날짜를 비교하며, 모든 이벤트를 UTC 타임스탬프와 메타데이터로 서버 측에서 검증해야 함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;스트릭 시스템의 핵심 로직은 사용자의 행동 이벤트를 서버가 수신 후 로컬 타임존으로 변환하여 날짜를 비교하고, 같은 날·다음 날·하루 이상 공백 등 각 경우에 따라 스트릭을 유지·연장·리셋하는 방식으로 동작함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;서버 다운타임이나 버그로 인한 스트릭 손실에 대비해 &lt;strong class="font-bold dark:font-extrabold"&gt;유예 윈도우 제공 및 관리자 수동 복구 기능&lt;/strong&gt;을 구축해야 하며, 모든 제품이 스트릭 시스템을 필요로 하는 것은 아님을 설계 전에 반드시 고려해야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://taalas.com/the-path-to-ubiquitous-ai/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;The path to ubiquitous AI&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://news.ycombinator.com/item?id=47086181&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=26860&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;AI의 광범위한 채택을 가로막는 두 가지 핵심 장벽은 &lt;strong class="font-bold dark:font-extrabold"&gt;높은 지연 시간(latency)과 천문학적인 비용&lt;/strong&gt;이며, Taalas는 이를 해결하기 위해 설립된 AI 추론 하드웨어 스타트업임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Taalas는 &lt;strong class="font-bold dark:font-extrabold"&gt;임의의 AI 모델을 커스텀 실리콘(칩)으로 변환하는 플랫폼&lt;/strong&gt;을 개발하며, 새로운 모델 수령 후 단 2개월 만에 하드웨어로 구현 가능함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Taalas의 핵심 기술 철학은 세 가지로 구성됨:
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;완전 특화(Total Specialization)&lt;/strong&gt;: 각 모델에 최적화된 실리콘 생산&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;저장과 연산의 통합(Merging Storage and Computation)&lt;/strong&gt;: 단일 칩에서 메모리와 컴퓨팅을 DRAM 수준 밀도로 통합하여 기존 한계 극복&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;근본적 단순화(Radical Simplification)&lt;/strong&gt;: HBM, 고급 패키징, 액체 냉각 등 복잡한 기술 없이 시스템 총비용을 10배 절감&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;첫 번째 제품인 &lt;strong class="font-bold dark:font-extrabold"&gt;HC1(Llama 3.1 8B 하드와이어드 모델)&lt;/strong&gt;은 사용자당 초당 17,000 토큰을 처리하며, 이는 현재 최고 수준 대비 &lt;strong class="font-bold dark:font-extrabold"&gt;약 10배 빠르고, 구축 비용은 20배 저렴하며, 전력 소비는 10배 적음&lt;/strong&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;HC1 기반 Llama는 현재 &lt;strong class="font-bold dark:font-extrabold"&gt;챗봇 데모 및 추론 API 서비스&lt;/strong&gt;로 제공되고 있으며, 컨텍스트 윈도우 크기 조정 및 LoRA를 통한 파인튜닝을 지원함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;HC1은 커스텀 3비트 기반 데이터 타입을 사용해 일부 품질 저하가 있으나, &lt;strong class="font-bold dark:font-extrabold"&gt;2세대 플랫폼(HC2)은 표준 4비트 부동소수점 형식을 채택&lt;/strong&gt;하여 이를 개선할 예정임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;향후 제품 로드맵으로는 &lt;strong class="font-bold dark:font-extrabold"&gt;HC1 기반 중형 추론 LLM(봄 출시 예정)&lt;/strong&gt;과 &lt;strong class="font-bold dark:font-extrabold"&gt;HC2 기반 프론티어 LLM(겨울 배포 예정)&lt;/strong&gt;이 계획되어 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Taalas는 &lt;strong class="font-bold dark:font-extrabold"&gt;24명의 팀원과 3,000만 달러(조달액 2억 달러 이상 중)&lt;/strong&gt;만으로 첫 제품을 출시하며, 소규모 정예 팀과 집중된 목표로 대규모 자본 투입 없이 성과를 달성함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Taalas의 궁극적 목표는 &lt;strong class="font-bold dark:font-extrabold"&gt;지연 시간과 비용이라는 AI 보급의 핵심 장벽을 제거&lt;/strong&gt;하여, 즉각적이고 초저비용의 AI 추론을 개발자들에게 제공하는 것임&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://kciter.so/posts/how-to-design-animation/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;애니메이션을 설계하는 방법 | kciter.so&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260222112614/https://kciter.so/posts/how-to-design-animation/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=26840&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;애니메이션도 &lt;strong class="font-bold dark:font-extrabold"&gt;설계&lt;/strong&gt;할 수 있으며, 복잡한 움직임은 단순한 상태 변화의 조합으로 분해되고 수학적으로 표현 가능함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;모든 애니메이션은 &lt;strong class="font-bold dark:font-extrabold"&gt;그래프&lt;/strong&gt;로 표현할 수 있으며, 그래프의 모양이 움직임의 느낌을 결정함 (가로축: 시간 또는 스크롤 등 입력값, 세로축: 변하는 속성값)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;이징(Easing)과 큐빅 베지어 커브&lt;/strong&gt;: 선형 보간의 재귀적 적용으로 두 제어점만으로 다양한 가감속 움직임을 표현하며, 이징 선택은 &amp;quot;목적&amp;quot;에 따라 결정됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;지수적 접근&lt;/strong&gt;: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;value += (target - value) * factor&lt;/code&gt; 수식을 매 프레임 적용해 목표값이 실시간으로 바뀌는 상황에서도 자연스러운 감속 곡선을 만들 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;스프링 애니메이션&lt;/strong&gt;: 복원력과 감쇠력 기반의 물리 시뮬레이션으로, 고정된 duration 없이 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;stiffness&lt;/code&gt;와 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;damping&lt;/code&gt; 두 파라미터만으로 탄성 있는 다양한 움직임을 구현함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;물리 시뮬레이션&lt;/strong&gt;: 중력·마찰·충돌 등의 규칙만 정의하면 복잡한 움직임이 자동으로 생성되며, 다수 오브젝트 상호작용이나 인터랙티브 요소에 적합함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;삼각함수(sin/cos)&lt;/strong&gt;: 진폭·주파수·위상 세 파라미터로 주기적 움직임을 표현하며, 여러 요소에 위상 차이를 주면 파동·플로팅 같은 효과를 만들 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;톱니파&lt;/strong&gt;: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;(t % period) / period&lt;/code&gt;로 0→1 단방향 반복을 구현하며, 펄스·핑 등 &amp;quot;시작→끝→즉시 리셋&amp;quot; 패턴에 활용됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;복잡한 애니메이션 설계 원칙으로 &lt;strong class="font-bold dark:font-extrabold"&gt;그래프 구간 분리, 의존성 파악, 파이프라이닝, 상태 전환 설계, 속성 분리, 랜덤성, 양방향성 고려&lt;/strong&gt; 등을 제시함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</ns0:encoded></item><item><title>2026-02-16 주간 URL 모음</title><link>https://blog.update.sh/weekly-urls/2026-02-16</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="mdx-content leading-[1.6]" style="--v2806f315:0.875rem,[object Object],0.875rem,[object Object];--v67bf8b50:#6b7280;--v67bf83ce:#d1d5db;--v67bf878f:#9ca3af;--v67bf92d2:#374151;" data-v-ec58c90e&gt;&lt;ul class="my-2 list-outside list-disc" data-v-ec58c90e&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://www.figma.com/blog/introducing-vectorize?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;For the Love of Craft: Vectorize Images in Figma Design and Draw | Figma Blog&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260209004113/https://www.figma.com/blog/introducing-vectorize/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Figma가 새로운 AI 이미지 편집 도구인 &lt;strong class="font-bold dark:font-extrabold"&gt;Vectorize&lt;/strong&gt;를 출시하여 래스터 이미지를 편집 가능한 벡터로 변환할 수 있게 함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Vectorize는 Remove background, erase object, Expand image에 이어 Figma의 AI 이미지 편집 툴킷에 추가된 최신 기능임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Figma Design과 Figma Draw&lt;/strong&gt;에서 사용 가능하며, 한 번의 클릭으로 이미지를 캔버스에 가져와 편집 가능한 벡터로 변환함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;주요 활용 사례 1: &lt;strong class="font-bold dark:font-extrabold"&gt;래스터 드로잉을 벡터로 변환&lt;/strong&gt;하여 스케치를 유연한 벡터 일러스트레이션으로 만들고, 색상 변수를 사용해 브랜드 일관성 유지 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;주요 활용 사례 2: &lt;strong class="font-bold dark:font-extrabold"&gt;손글씨 레터링을 편집 가능하게 변환&lt;/strong&gt;하여 캘리그래피나 종이 스케치를 수정 가능한 로고로 만들고, 배경 제거 및 개별 문자 조정 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;주요 활용 사례 3: &lt;strong class="font-bold dark:font-extrabold"&gt;재사용 가능한 텍스처 오버레이 생성&lt;/strong&gt;으로 그레인이나 노이즈 텍스처를 벡터로 변환하여 UI나 랜딩 페이지에 깊이감 추가&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;실제 세계의 영감을 워크플로우에 쉽게 통합하여 불필요한 우회 없이 더 표현력 있는 디자인 작업 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Professional, Organization, Enterprise 플랜의 Full-seat 사용자&lt;/strong&gt;에게 제공되며, AI 기능이 활성화되어야 함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;AI 작업은 크레딧을 사용하며, 상세한 사용 가이드와 모범 사례가 제공됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;디자이너가 도구와 씨름하는 시간을 줄이고 창작에 더 집중할 수 있도록 craft, capability, style을 강화하는 것이 목표&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://www.theverge.com/tech/875309/discord-age-verification-global-roll-out?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Discord will require a face scan or ID for full access next month&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260209203405/https://www.theverge.com/tech/875309/discord-age-verification-global-roll-out?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46945663&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=26550&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Discord는 3월부터 전 세계적으로 연령 인증 시스템을 도입하며, &lt;strong class="font-bold dark:font-extrabold"&gt;모든 계정을 기본적으로 &amp;quot;청소년 적합 환경&amp;quot;으로 설정&lt;/strong&gt;함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;성인 인증을 받지 않은 사용자는 &lt;strong class="font-bold dark:font-extrabold"&gt;연령 제한 서버/채널 접근 불가, 스테이지 채널 발언 제한, 민감한 콘텐츠 필터링 적용&lt;/strong&gt; 등의 제약을 받게 됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Discord는 &lt;strong class="font-bold dark:font-extrabold"&gt;계정 정보 기반 연령 추론 모델&lt;/strong&gt;을 사용하며, 계정 보유 기간, 디바이스 및 활동 데이터, 커뮤니티 패턴 등을 활용 (개인 메시지나 메시지 내용은 사용하지 않음)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;연령 추론으로 확인되지 않은 경우, 사용자는 &lt;strong class="font-bold dark:font-extrabold"&gt;AI 기반 얼굴 연령 추정(비디오 셀카)&lt;/strong&gt; 또는 &lt;strong class="font-bold dark:font-extrabold"&gt;신분증 제출&lt;/strong&gt;을 통해 성인 인증 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;얼굴 연령 추정은 &lt;strong class="font-bold dark:font-extrabold"&gt;사용자 기기를 벗어나지 않으며&lt;/strong&gt;, 신분증 이미지는 제3자 업체를 통해 확인 후 &lt;strong class="font-bold dark:font-extrabold"&gt;대부분 즉시 삭제&lt;/strong&gt;됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Discord는 작년 영국과 호주에서 연령 인증을 시범 도입했으며, 일부 사용자가 &lt;em class="italic"&gt;Death Stranding&lt;/em&gt; 포토 모드로 우회했으나 &lt;strong class="font-bold dark:font-extrabold"&gt;1주일 만에 수정&lt;/strong&gt;함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2024년 10월 Discord의 제3자 업체가 &lt;strong class="font-bold dark:font-extrabold"&gt;데이터 유출 사고&lt;/strong&gt;를 겪어 사용자 연령 인증 데이터(정부 발급 ID 이미지 포함)가 노출됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;데이터 유출 후 Discord는 해당 업체와의 협력을 즉시 중단하고 &lt;strong class="font-bold dark:font-extrabold"&gt;다른 제3자 업체로 전환&lt;/strong&gt;했으며, 생체 인식이나 얼굴 인식이 아닌 &lt;strong class="font-bold dark:font-extrabold"&gt;얼굴 추정만 수행&lt;/strong&gt;한다고 강조&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Badalich는 &amp;quot;&lt;strong class="font-bold dark:font-extrabold"&gt;대다수 사용자는 경험의 변화를 느끼지 못할 것&lt;/strong&gt;&amp;quot;이라고 설명하며, 주로 성인 콘텐츠에 영향을 미칠 것이라고 언급&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Discord는 연령 인증 도입으로 인한 &lt;strong class="font-bold dark:font-extrabold"&gt;사용자 이탈 가능성을 인지&lt;/strong&gt;하고 있으며, 이를 계획에 반영하고 다른 방법으로 사용자를 다시 유치할 방안을 모색 중&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://kroki.io/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Creates diagrams from textual descriptions!&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260210041020/https://kroki.io/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=19486801&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Kroki는 &lt;strong class="font-bold dark:font-extrabold"&gt;다양한 다이어그램 도구를 위한 통합 API&lt;/strong&gt;를 제공하는 서비스로, BlockDiag, BPMN, Mermaid, PlantUML, GraphViz, Excalidraw 등 &lt;strong class="font-bold dark:font-extrabold"&gt;20개 이상의 다이어그램 타입&lt;/strong&gt;을 지원함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;무료 서비스&lt;/strong&gt;(Exoscale 후원으로 서버 제공)와 &lt;strong class="font-bold dark:font-extrabold"&gt;Self-Managed 인스턴스&lt;/strong&gt;(자체 인프라 설치) 두 가지 형태로 제공됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;HTTP API를 통해 텍스트 기반 다이어그램 설명을 이미지로 변환하며, &lt;strong class="font-bold dark:font-extrabold"&gt;GET과 POST 요청 모두 지원&lt;/strong&gt;함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;GET 요청 시에는 다이어그램을 &lt;strong class="font-bold dark:font-extrabold"&gt;deflate + base64로 인코딩&lt;/strong&gt;하여 URL에 포함해야 하며, Python 원라이너로 쉽게 인코딩/디코딩 가능함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;POST 요청 시에는 &lt;strong class="font-bold dark:font-extrabold"&gt;인코딩 없이 평문(plain text) 또는 JSON 형식&lt;/strong&gt;으로 다이어그램을 전송할 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;출력 포맷은 다이어그램 타입에 따라 &lt;strong class="font-bold dark:font-extrabold"&gt;png, svg, jpeg, txt, base64&lt;/strong&gt; 등을 지원하며, 타입별 지원 형식은 상이함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Content-Type&lt;/code&gt; 및 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Accept&lt;/code&gt; 헤더를 사용하거나 URL에 출력 형식을 명시하여 다양한 방식으로 API 호출 가능함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;MIT 라이선스 기반의 오픈 소스 프로젝트&lt;/strong&gt;로, 누구나 최소한의 리소스로 서비스를 호스팅할 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Yuzu tech가 개발 및 유지보수하며 Exoscale이 지원하고 있으나, &lt;strong class="font-bold dark:font-extrabold"&gt;인프라 비용 충당을 위해 추가 스폰서를 모집&lt;/strong&gt; 중임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;사용자 피드백을 위한 설문조사를 진행 중이며, 지원하지 않는 다이어그램 도구에 대한 제안을 환영함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://blog.maximeheckel.com/posts/shades-of-halftone/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Shades of Halftone - The Blog of Maxime Heckel&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260212041600/https://blog.maximeheckel.com/posts/shades-of-halftone/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46959531&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;하프톤(halftone)은 &lt;strong class="font-bold dark:font-extrabold"&gt;서로 다른 크기의 점들을 격자로 배치하여 색상 그라데이션의 착시 효과&lt;/strong&gt;를 만드는 클래식한 패턴 기법으로, 원래는 제한된 잉크 색상으로 이미지를 인쇄하기 위한 기술이었으나 현재는 다양한 미디어와 웹에서 텍스처나 그레인 효과를 주는 예술적 도구로 활용됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;하프톤은 본질적으로 &lt;strong class="font-bold dark:font-extrabold"&gt;광학적 착시 효과&lt;/strong&gt;로, 높은 주파수의 점 격자를 제공하여 연속적/부드러운 톤의 인상을 생성함. 점의 반경이 &lt;strong class="font-bold dark:font-extrabold"&gt;눈의 공간 해상도보다 작아지면&lt;/strong&gt; 뇌가 패턴의 공간 평균을 수행하여 개별 점 대신 &lt;strong class="font-bold dark:font-extrabold"&gt;&amp;#39;잉크&amp;#39;와 &amp;#39;빈 공간&amp;#39;의 비율&lt;/strong&gt;을 부드러운 톤으로 인식함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;GLSL을 사용한 기본 하프톤 구현&lt;/strong&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;원/점 렌더링: UV 좌표의 중심점까지의 거리 필드(distance field)와 마스크(threshold) 활용&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;격자 생성: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;fract()&lt;/code&gt; 함수로 UV 좌표를 타일링하여 각 셀이 자체 원을 그리도록 구현&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;픽셀화(pixelation)와 루마(luma) 기반 점 크기 조절을 통해 실제 하프톤 필터 효과 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;하프톤 변형들&lt;/strong&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Grid offset&lt;/strong&gt;: 점들을 엇갈리게 배치하여 더 높은 밀도와 적은 여백 확보&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;&amp;quot;Dot adjacent&amp;quot; 패턴&lt;/strong&gt;: 원뿐만 아니라 정사각형, 링(ring) 등 다양한 형태로 확장&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Dots and squares 조합&lt;/strong&gt;: 어두운 픽셀은 흰 점이 있는 정사각형, 밝은 픽셀은 표준 점으로 렌더링하여 원본 텍스처를 더 잘 보존&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;모아레 패턴(Moiré Pattern)&lt;/strong&gt;은 두 개의 거의 동일한 반복 패턴이 겹쳐질 때 발생하는 간섭 현상으로, 멀티채널 하프톤 구현 시 불가피하게 발생함. 각 레이어에 &lt;strong class="font-bold dark:font-extrabold"&gt;특정 회전 각도를 적용&lt;/strong&gt;하여 간섭을 최소화할 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;디지털 vs 물리적 색상 블렌딩&lt;/strong&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;RGB(가산 혼합)&lt;/strong&gt;: 검은 디스플레이에서 빛의 추가로 작동하며, 색상 채널이 더해져 흰색으로 수렴 (&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;ColorOut = (Ir, 0, 0) + (0, Ig, 0) + (0, 0, Ib)&lt;/code&gt;)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;CMYK(감산 혼합)&lt;/strong&gt;: 흰 종이에서 빛의 흡수로 작동하며, 잉크가 빛을 필터링하여 검은색으로 수렴 (&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;ColorOut = White * (1.0 - C) * (1.0 - M) * (1.0 - Y)&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;CMYK 하프톤 구현&lt;/strong&gt;: RGB를 CMYK로 변환한 후 각 채널(Cyan 15°, Magenta 75°, Yellow 0°, Key 45°)마다 특정 각도로 회전된 점 격자를 생성하고, 각 점의 크기를 해당 채널의 강도에 맞춰 조절하여 모아레 아티팩트를 최소화하면서 인쇄물과 유사한 색상 출력을 구현&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;격자 제약 깨기 - Cell wall 문제 해결&lt;/strong&gt;: 현재 픽셀 주변의 &lt;strong class="font-bold dark:font-extrabold"&gt;3x3 이웃 셀을 샘플링&lt;/strong&gt;하여 점들이 셀 경계를 넘어 확장되거나 겹치도록 허용함으로써 클리핑 제거. 이를 통해 워터컬러 같은 효과나 잉크 방울 같은 유기적인 &amp;quot;gooey&amp;quot; 하프톤 구현 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;애니메이션 하프톤 - Displaced dots&lt;/strong&gt;: Frame Buffer Objects(FBO)와 핑퐁 렌더링으로 마우스 커서의 궤적을 텍스처로 렌더링하고, 이를 하프톤 셰이더에 전달하여 커서의 움직임 방향과 강도에 따라 점/링의 위치를 동적으로 변위시켜 생동감 있는 효과 생성&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;간단한 원 형태에서 시작하여 다양하고 흥미로운 효과 세트로 빠르게 확장 가능하며, 모듈식 셰이더 코드를 유지하여 간단한 효과부터 복잡한 효과까지 동일한 함수를 재사용할 수 있음. 이 기법은 향후 &lt;strong class="font-bold dark:font-extrabold"&gt;실시간 셰이더 기반 페인팅&lt;/strong&gt;(인상주의, 점묘법, 수채화 스타일 에뮬레이션)에도 활용 가능한 기초를 제공함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://github.com/PeonPing/peon-ping?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GitHub - PeonPing/peon-ping: Warcraft III Peon voice notifications (+ more!) for Claude Code, Codex, and other IDEs. Stop babysitting your terminal.&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260213102803/https://github.com/PeonPing/peon-ping?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46999852&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;peon-ping&lt;/strong&gt;은 AI 코딩 에이전트(Claude Code, Codex, Cursor, OpenCode, Kiro, Google Antigravity 등)가 작업을 완료하거나 사용자 입력이 필요할 때 게임 캐릭터 음성으로 알림을 제공하는 도구&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Warcraft, StarCraft, Portal, Zelda, Dota 2 등 43개 이상의 게임 캐릭터 음성 팩을 지원하며, 기본 설치 시 10개의 큐레이션된 영어 팩 포함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;CESP(Coding Event Sound Pack Specification)&lt;/strong&gt; 오픈 표준을 구현하여 세션 시작, 작업 완료, 권한 요청, 빠른 연속 프롬프트 등의 이벤트를 표준화된 카테고리로 매핑&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;macOS와 Linux에서 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;brew install&lt;/code&gt; 또는 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;curl&lt;/code&gt; 스크립트로 설치 가능하며, 전역 또는 프로젝트 로컬 설치 모드 지원&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;CLI 명령어 제공
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;peon toggle/pause/resume&lt;/code&gt;: 음성 알림 일시 정지/재개&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;peon packs use/next/list&lt;/code&gt;: 음성 팩 전환 및 목록 조회&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;peon notifications on/off&lt;/code&gt;: 데스크톱 알림 토글&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;peon preview&lt;/code&gt;: 특정 카테고리 또는 전체 사운드 미리듣기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;원격 작업 지원&lt;/strong&gt;: SSH 세션, devcontainer, Codespaces에서 자동 감지 후 로컬 머신의 릴레이 서버(&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;peon relay --daemon&lt;/code&gt;)를 통해 오디오와 알림을 전송&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;모바일 알림&lt;/strong&gt;: ntfy, Pushover, Telegram을 통해 휴대폰 푸시 알림 지원 (&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;peon mobile ntfy &amp;lt;topic&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;설정 파일(&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;config.json&lt;/code&gt;)을 통해 볼륨, 카테고리별 활성화, 팩 로테이션, 짧은 작업 무음 기간 등 세부 조정 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;터미널 탭 제목 업데이트(&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;● project: done&lt;/code&gt;), 데스크톱 알림(터미널이 포커스되지 않을 때만), 반복 방지 로직, 스팸 감지(10초 내 3회 이상 프롬프트 시 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;user.spam&lt;/code&gt; 음성 재생) 등 부가 기능 제공&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Claude Code에서 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;/peon-ping-toggle&lt;/code&gt; 슬래시 명령 또는 자연어로 설정 변경 가능(&amp;quot;enable round-robin pack rotation&amp;quot;, &amp;quot;set volume to 0.3&amp;quot; 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</ns0:encoded></item><item><title>2026-02-09 주간 URL 모음</title><link>https://blog.update.sh/weekly-urls/2026-02-09</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="mdx-content leading-[1.6]" style="--v2806f315:0.875rem,[object Object],0.875rem,[object Object];--v67bf8b50:#6b7280;--v67bf83ce:#d1d5db;--v67bf878f:#9ca3af;--v67bf92d2:#374151;" data-v-ec58c90e&gt;&lt;ul class="my-2 list-outside list-disc" data-v-ec58c90e&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://notepad-plus-plus.org/news/hijacked-incident-info-update/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Notepad++ Hijacked by State-Sponsored Hackers&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260202131049/https://notepad-plus-plus.org/news/hijacked-incident-info-update/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46851548&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=26348&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt; | &lt;a href="https://lobste.rs/s/pt7myu?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Lobsters&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Notepad++ 공식 웹사이트가 &lt;strong class="font-bold dark:font-extrabold"&gt;국가 지원 해커(중국 국가 지원 그룹으로 추정)에 의해 하이재킹&lt;/strong&gt;당하는 보안 사고 발생&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;공격자들은 &lt;strong class="font-bold dark:font-extrabold"&gt;호스팅 제공업체의 인프라 수준에서 서버를 침해&lt;/strong&gt;하여 특정 사용자의 업데이트 트래픽을 가로채고 악성 업데이트 서버로 리디렉션함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;공격 기간은 &lt;strong class="font-bold dark:font-extrabold"&gt;2025년 6월부터 2025년 12월까지&lt;/strong&gt; 지속되었으며, 공격자들은 Notepad++를 특정 타겟으로 선정하여 선택적으로 공격함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;2025년 9월 2일&lt;/strong&gt; 서버 유지보수(커널 및 펌웨어 업데이트) 이후 공격자들은 서버 접근 권한을 상실했으나, &lt;strong class="font-bold dark:font-extrabold"&gt;12월 2일까지 내부 서비스 자격 증명을 유지&lt;/strong&gt;하여 트래픽 리디렉션을 계속할 수 있었음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;호스팅 제공업체는 &lt;strong class="font-bold dark:font-extrabold"&gt;2025년 12월 2일까지 모든 취약점 수정, 자격 증명 교체, 보안 강화 완료&lt;/strong&gt;하여 추가 공격 활동을 성공적으로 차단함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;공격자들은 &lt;strong class="font-bold dark:font-extrabold"&gt;구버전 Notepad++의 불충분한 업데이트 검증 메커니즘 취약점을 악용&lt;/strong&gt;하려는 목적으로 notepad-plus-plus.org 도메인을 특정 타겟팅함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;보안 강화 조치로 &lt;strong class="font-bold dark:font-extrabold"&gt;v8.8.9에서 WinGup(업데이터) 개선&lt;/strong&gt;: 다운로드된 설치 프로그램의 인증서 및 서명 검증 추가&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;업데이트 서버가 반환하는 &lt;strong class="font-bold dark:font-extrabold"&gt;XML에 서명(XMLDSig) 추가&lt;/strong&gt;, 약 한 달 후 출시 예정인 &lt;strong class="font-bold dark:font-extrabold"&gt;v8.9.2부터 인증서 및 서명 검증 강제 적용&lt;/strong&gt; 예정&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Notepad++ 웹사이트는 &lt;strong class="font-bold dark:font-extrabold"&gt;더 강력한 보안 관행을 갖춘 새로운 호스팅 제공업체로 이전 완료&lt;/strong&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;영향받은 사용자들에게 &lt;strong class="font-bold dark:font-extrabold"&gt;v8.9.1을 수동으로 다운로드하여 설치할 것을 권장&lt;/strong&gt;하며, 구체적인 IoC(침해 지표)는 확보하지 못함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://github.com/daumPostcode/QnA/issues/1498?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;📢 우편번호 서비스 도메인 및 API 네임스페이스 변경 안내 · Issue #1498 · daumPostcode/QnA&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://news.hada.io/topic?id=26451&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;우편번호 서비스의 &lt;strong class="font-bold dark:font-extrabold"&gt;도메인 및 JavaScript API 네임스페이스 변경&lt;/strong&gt;에 대한 사전 안내 공지&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;공식 가이드 페이지는 현재 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;postcode.map.daum.net&lt;/code&gt;에서 확인 가능하며, &lt;strong class="font-bold dark:font-extrabold"&gt;2026년 3월 10일(화)&lt;/strong&gt; 이후 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;postcode.map.kakao.com&lt;/code&gt;으로 이전 예정&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;CDN 도메인이 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;t1.daumcdn.net&lt;/code&gt;에서 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;t1.kakaocdn.net&lt;/code&gt;으로 변경 완료되었으며, 기존 도메인도 당분간 사용 가능하나 &lt;strong class="font-bold dark:font-extrabold"&gt;신규 도메인 사용 권장&lt;/strong&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;2026년 3월 10일(화)&lt;/strong&gt; 서비스 도메인이 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;postcode.map.daum.net&lt;/code&gt;에서 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;postcode.map.kakao.com&lt;/code&gt;으로 변경되며, 변경 후 일정 기간 병행 운영 예정&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;JavaScript API 생성자 네임스페이스가 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;daum.Postcode&lt;/code&gt;에서 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;kakao.Postcode&lt;/code&gt;로 변경됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;daum.Postcode&lt;/code&gt;는 강제 변경되지 않으며 &lt;strong class="font-bold dark:font-extrabold"&gt;오랜 기간 호환성 유지 목표&lt;/strong&gt;로 지원하지만, 신규 개발 시 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;kakao.Postcode&lt;/code&gt; 사용 권장&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;서비스 종료 예정 도메인&lt;/strong&gt;: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;dmaps.daum.net&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;ssl.daumcdn.net&lt;/code&gt;은 &lt;strong class="font-bold dark:font-extrabold"&gt;2026년 4~5월 도메인 최종 전환 시점에 종료&lt;/strong&gt; 예정&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;종료 예정 도메인 사용 중인 경우 &lt;strong class="font-bold dark:font-extrabold"&gt;반드시 신규 Kakao 도메인 및 API로 이전&lt;/strong&gt; 필요&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;기존 도메인 종료에 대한 &lt;strong class="font-bold dark:font-extrabold"&gt;상세 일정은 3월 10일 전후 재공지&lt;/strong&gt; 예정&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;서비스 중단 방지를 위해 &lt;strong class="font-bold dark:font-extrabold"&gt;사전 점검 및 점진적 전환 권장&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://velog.io/@typo/4-css-features-every-front-end-developer-should-know-in-2026?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;[번역] 2026년 프런트엔드 개발자라면 알아야 할 4가지 CSS 기능&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2025년에 출시된 CSS 기능 중 프런트엔드 개발자가 반드시 알아야 할 4가지 핵심 기능을 소개&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;sibling-index()&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;sibling-count()&lt;/code&gt;&lt;/strong&gt;: 크롬과 사파리에서 안정적으로 사용 가능하며, 형제 요소 간 상대적 위치를 값으로 활용할 수 있음. &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;transition-delay&lt;/code&gt;와 결합해 순차적 애니메이션 효과를 쉽게 구현 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;@starting-style&lt;/code&gt;과 함께 사용하면 요소가 처음 등장할 때 시간차 애니메이션 효과를 간단하게 적용할 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;scroll-state()&lt;/code&gt;&lt;/strong&gt;: 스크롤러의 네 가지 상태(stuck, snapped, scrollable, scrolled)를 쿼리할 수 있으며, 스크롤 기반 애니메이션에 적합한 점진적 향상 기능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;container-type: scroll-state&lt;/code&gt; 지정 후 자식 요소에서 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;@container scroll-state()&lt;/code&gt;로 상태 쿼리 가능 (요소는 자기 자신은 쿼리할 수 없지만 가상 요소는 가능)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;stuck 상태로 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;position: sticky&lt;/code&gt; 요소가 고정되는 시점 감지, snapped 상태로 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;scroll-snap&lt;/code&gt; 정렬 활성화 시점 파악, scrollable로 콘텐츠 오버플로우 방향 감지, scrolled로 스크롤 방향에 따른 UI 제어 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;text-box&lt;/code&gt;&lt;/strong&gt;: 텍스트 박스의 위아래 줄 간격을 깔끔하게 제거하여 글리프 위아래의 안전한 여백을 없애고, 베이스라인이나 x-height에 픽셀 단위로 정확한 정렬 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;text-box: trim-both cap alphabetic&lt;/code&gt; 한 줄로 대문자 높이 위 여백과 알파벳 기준선 아래 여백을 제거할 수 있어, 타이포그래피와 그리드 정렬에 최적화됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;고급 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;attr()&lt;/code&gt;&lt;/strong&gt;: 타입 안정적이며 HTML 속성을 CSS에서 직접 사용 가능. 타입 체크와 기본값 포함하여 색상, 숫자 등 다양한 타입 전달 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;type()&lt;/code&gt; 함수로 속성 값을 허용된 키워드 목록과 비교 검증하며, 유효하지 않은 값은 자동으로 안전한 기본값으로 대체되어 HTML과 CSS 간 강력한 연결 고리 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</ns0:encoded></item><item><title>2026-02-02 주간 URL 모음</title><link>https://blog.update.sh/weekly-urls/2026-02-02</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="mdx-content leading-[1.6]" style="--v2806f315:0.875rem,[object Object],0.875rem,[object Object];--v67bf8b50:#6b7280;--v67bf83ce:#d1d5db;--v67bf878f:#9ca3af;--v67bf92d2:#374151;" data-v-ec58c90e&gt;&lt;ul class="my-2 list-outside list-disc" data-v-ec58c90e&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://f1bonacc1.github.io/process-compose/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Process Compose&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260113205343/https://f1bonacc1.github.io/process-compose/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Process Compose는 컨테이너화되지 않은 애플리케이션을 관리하기 위한 간단하고 유연한 스케줄러 및 오케스트레이터임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Go 언어로 작성된 단일 바이너리 파일로, 도커 파일, 볼륨 정의, 네트워크, 도커 레지스트리 등의 복잡한 설정 없이 사용 가능함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;process-compose.yaml&lt;/code&gt; 파일에 간단한 YAML 스키마로 워크플로우를 정의하고 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;process-compose up&lt;/code&gt; 명령으로 실행&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;주요 프로세스 관리 기능: &lt;strong class="font-bold dark:font-extrabold"&gt;병렬/직렬 실행, 의존성 및 시작 순서 관리, 복구 정책, 수동 재시작&lt;/strong&gt; 지원&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;다양한 설정 옵션: bash/zsh 스타일 프로세스 인자, 환경 변수(envsubst), 프로세스별/전역 로그, 헬스 체크(liveness/readiness)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;TUI(Terminal User Interface) 또는 CLI 모드&lt;/strong&gt; 제공, 포그라운드 프로세스 및 인터랙티브 프로세스 실행 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;REST API(OpenAPI/Swagger)&lt;/strong&gt; 제공, 서버 및 클라이언트 기능 모두 지원&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;고급 기능: 설정 파일 병합, 네임스페이스, 프로세스 다중 복제본 실행, 테마 지원, 즉석 설정 편집&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;스케줄링 기능&lt;/strong&gt;(cron 및 interval 기반), 레시피 관리, 의존성 그래프 시각화(CLI, TUI, API) 지원&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;로그 캐싱, 설정 가능한 단축키, 포킹 프로세스(서비스/데몬) 등 편의 기능 포함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://simonwillison.net/2026/Jan/23/fastrender/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Wilson Lin on FastRender: a browser built by thousands of parallel agents&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260126024743/https://simonwillison.net/2026/Jan/23/fastrender/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46738853&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Wilson Lin이 Cursor의 &lt;strong class="font-bold dark:font-extrabold"&gt;FastRender 프로젝트&lt;/strong&gt;를 소개: 수천 개의 병렬 에이전트를 사용해 &lt;strong class="font-bold dark:font-extrabold"&gt;처음부터 웹 브라우저를 구축&lt;/strong&gt;한 연구 프로젝트&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;FastRender는 Wilson의 개인 사이드 프로젝트로 시작되어 Cursor의 공식 연구 프로젝트로 발전했으며, &lt;strong class="font-bold dark:font-extrabold"&gt;프로덕션 브라우저가 아닌 멀티 에이전트 협업 연구가 목표&lt;/strong&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;최대 2,000개의 에이전트가 동시에 실행&lt;/strong&gt;되어 시간당 수천 개의 커밋을 생성했으며, 프로젝트는 총 약 30,000개의 커밋을 기록함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;각 대형 머신에서 약 300개의 에이전트를 동시 실행하는 인프라 구조를 사용했으며, 에이전트들이 대부분 &amp;quot;생각하는&amp;quot; 시간을 보내기 때문에 효율적으로 작동함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;계층적 에이전트 구조&lt;/strong&gt;: 계획(planning) 에이전트가 작업을 나누고 워커(worker) 에이전트가 실행하며, 작업 범위를 효과적으로 분할해 &lt;strong class="font-bold dark:font-extrabold"&gt;병합 충돌이 거의 발생하지 않음&lt;/strong&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;GPT-5.1/5.2 일반 모델이 코딩 전문 모델(GPT-5.1-Codex)보다 더 나은 성능을 보였으며, 이는 자율적 작동 및 하네스 내 상호작용 등 &lt;strong class="font-bold dark:font-extrabold"&gt;더 광범위한 지시사항 처리&lt;/strong&gt;에 유리했기 때문&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;피드백 루프가 핵심&lt;/strong&gt;: 브라우저 명세(spec) 문서를 git submodule로 포함, 스크린샷을 통한 시각적 검증, Rust 컴파일러의 엄격한 검증 등을 활용&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;에이전트들이 대부분의 &lt;strong class="font-bold dark:font-extrabold"&gt;의존성(dependency)을 스스로 선택&lt;/strong&gt;했으며, 일부는 QuickJS처럼 다른 에이전트 작업 완료를 기다리지 않고 스스로 차단을 해제하기 위해 추가함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;처리량(throughput) 최적화를 위해 작은 오류를 일시적으로 허용&lt;/strong&gt;: 모든 커밋이 완벽하게 컴파일되도록 하면 동기화 병목이 발생하므로, 작은 오류가 몇 커밋 후 빠르게 수정되도록 함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2026년 초 &lt;strong class="font-bold dark:font-extrabold"&gt;단일 엔지니어가 에이전트 스웜을 활용해 달성할 수 있는 극단적 사례&lt;/strong&gt;를 보여주며, 몇 주 만에 백만 줄 이상의 Rust 코드로 실제 웹 페이지를 렌더링할 수 있는 브라우저를 구현함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;How to Favicon in 2026: Three files that fit most needs—Martian Chronicles, Evil Martians’ team blog&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260129014613/https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2026년 현재, 웹사이트에 필요한 파비콘은 &lt;strong class="font-bold dark:font-extrabold"&gt;단 5개의 이미지 파일과 1개의 JSON 파일&lt;/strong&gt;만 있으면 충분함 (기존의 20개 이상 PNG 파일 세트는 불필요)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;최소 파비콘 세트 구성&lt;/strong&gt;: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;favicon.ico&lt;/code&gt; (32×32, 레거시 브라우저용), &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;icon.svg&lt;/code&gt; (라이트/다크 테마 지원, 현대 브라우저용), &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;apple-touch-icon.png&lt;/code&gt; (180×180, Apple 기기용), PWA용 웹 매니페스트에 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;icon-192.png&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;icon-512.png&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;icon-mask.png&lt;/code&gt; (512×512, maskable) 포함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;SVG 파비콘의 장점&lt;/strong&gt;: 벡터 포맷으로 다양한 크기에 대응 가능하며, CSS 미디어 쿼리 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;@media (prefers-color-scheme: dark)&lt;/code&gt;를 활용해 하나의 파일로 라이트/다크 테마 모두 지원 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;성능 우려 해소&lt;/strong&gt;: 브라우저가 파비콘을 백그라운드에서 다운로드하므로 웹사이트 성능에 영향 없음, SVG는 로고 같은 이미지에서 PNG보다 파일 크기가 작을 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;더 이상 사용하지 않는 파비콘 포맷&lt;/strong&gt;: Windows Tile Icon (최신 Edge에서 불필요), Safari Pinned Icon (Safari 12 이후 일반 파비콘 사용), &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;rel=&amp;quot;shortcut&amp;quot;&lt;/code&gt; (유효하지 않은 링크 관계), Opera Coast (2017년 단종)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;파비콘 생성 6단계 프로세스&lt;/strong&gt;: ① SVG 준비 및 테마 지원 추가 → ② ICO 파일 생성 (GIMP 또는 ImageMagick 사용) → ③ PNG 이미지 생성 (512×512, 192×192, 180×180 등) → ④ SVGO와 Squoosh로 최적화 → ⑤ HTML에 링크 추가 → ⑥ 웹 매니페스트 생성&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;maskable 아이콘 요구사항&lt;/strong&gt;: Android 런처의 다양한 디자인에 대응하기 위해 큰 여백(safe zone: 409×409 원) 필요, maskable.app에서 확인 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Webpack 통합 팁&lt;/strong&gt;: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;HtmlWebpackPlugin&lt;/code&gt;으로 캐시 버스터(파일명에 해시 추가) 생성, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;copy-webpack-plugin&lt;/code&gt;으로 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;favicon.ico&lt;/code&gt; 복사, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;webpack-pwa-manifest&lt;/code&gt; 플러그인으로 매니페스트 자동 생성&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;보너스 팁&lt;/strong&gt;: 프로덕션과 스테이징 환경을 구분하기 위해 색상을 반전시킨 별도의 개발용 파비콘(&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;favicon-dev.ico&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;icon-dev.svg&lt;/code&gt;)을 만들어 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;NODE_ENV&lt;/code&gt;에 따라 조건부로 사용&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;최신 웹 표준을 활용하면 파비콘 생성 작업이 매우 간단해지며, 파비콘 생성기 도구의 광기에서 벗어나 최소한의 효율적인 세트로 모든 현대 브라우저와 기기를 지원할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</ns0:encoded></item><item><title>2026-01-26 주간 URL 모음</title><link>https://blog.update.sh/weekly-urls/2026-01-26</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="mdx-content leading-[1.6]" style="--v2806f315:0.875rem,[object Object],0.875rem,[object Object];--v67bf8b50:#6b7280;--v67bf83ce:#d1d5db;--v67bf878f:#9ca3af;--v67bf92d2:#374151;" data-v-ec58c90e&gt;&lt;ul class="my-2 list-outside list-disc" data-v-ec58c90e&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://labs.ramp.com/rct?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;AI Plays Rollercoaster Tycoon&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260119131225/https://labs.ramp.com/rct?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46588972&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=25951&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt; | &lt;a href="https://lobste.rs/s/wjbvwq?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Lobsters&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
제목: AI가 롤러코스터 타이쿤을 플레이하다
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Claude Code가 RollerCoaster Tycoon 2(OpenRCT2를 통해)에 통합되어 AI 공원 관리자 역할을 수행함으로써, 복잡한 환경에서 광범위한 범위의 에이전트가 가진 잠재력을 입증했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;RollerCoaster Tycoon은 고객 중심의 피드백 루프와 관리 인터페이스를 특징으로 하여 B2B SaaS 운영과 강한 유사성을 보이기 때문에 선택되었습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;통합 작업에는 kubectl을 모방한 &amp;#39;rctctl&amp;#39;이라는 명령줄 인터페이스(CLI)를 생성하여 Claude가 모든 게임 기능과 상호작용할 수 있도록 하는 것이 포함되었습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Claude는 정보 수집, 공원 지표 분석, 가격 조정, 직원 고용, 간단한 편의시설 배치와 같은 직접적인 명령 실행에 탁월합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Claude는 경로 설정, 놀이기구 입구 연결, 롤러코스터와 같은 대형 구조물 배치 또는 수직성 관리와 같은 공간 추론 작업에 어려움을 겪습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;AI 에이전트의 성공은 환경 인터페이스의 가독성과 강도에 크게 의존하며, 텍스트 기반 표현은 공간 작업에 있어 어려운 것으로 입증되었습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;통합 구축에는 AI 지원을 통한 &amp;#39;바이브 코딩(vibe coding)&amp;#39;이 포함되었으며, 이는 개발 가속화에 있어 LLM의 잠재력을 강조하는 동시에 신중한 계획과 반복의 필요성도 보여줍니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;AI 에이전트를 활용한 개발은 경영 시뮬레이션 게임처럼 느껴질 수 있으며, 여러 AI 인스턴스와 그 출력물을 관리하기 위해 상당한 정신적 대역폭이 필요합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;긴밀한 피드백 루프는 AI 개발에 매우 중요하며, 에이전트가 자체 QA를 수행하고 구현을 검증할 수 있게 해주는데, 이는 이 프로젝트에서 병목 현상이었습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 프로젝트는 AI 에이전트가 순수한 지능이라기보다는 성실함을 자동화하는 도구로 보는 것이 가장 적절하다는 생각을 강화하며, 특히 운영상의 과제에 있어서 그러합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://lucumr.pocoo.org/2026/1/18/agent-psychosis/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Agent Psychosis: Are We Going Insane?&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260119011347/https://lucumr.pocoo.org/2026/1/18/agent-psychosis/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46666777&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://lobste.rs/s/0pxvyd?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Lobsters&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;AI 코딩 에이전트가 주는 도파민 중독과 과의존 문제를 다루며, 사용자들이 AI와 유사-협업 관계를 형성하고 건강하지 못한 행동을 강화하는 현상을 비판함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Philip Pullman의 &amp;quot;His Dark Materials&amp;quot;에 나오는 데몬(dæmon)에 비유하여, 사람들이 AI 에이전트와 분리 불가능한 관계를 형성하고 정체성의 일부로 여기게 되는 현상을 설명함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;AI 생성 PR과 이슈의 품질 저하가 심각한 문제로, 기여자는 1분 만에 생성하지만 메인테이너는 검토에 1시간 이상 소요되는 비대칭성이 발생함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;사람들이 AI와 상호작용하는 방식(불명확한 지시, 이상한 역할극, 욕설, 의례적 행동 등)이 결과물의 질에 큰 영향을 미침&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;토큰 소비 문제도 심각하며, 잘 준비된 세션(예: MiniJinja 포팅에 220만 토큰)과 달리 무분별한 에이전트 실행은 엄청난 토큰을 낭비하고, 현재의 저렴한 가격은 보조금 지원으로 지속 불가능할 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Steve Yegge의 Gas Town과 Beads를 극단적 사례로 제시: Beads는 24만 줄의 코드로 마크다운 파일을 관리하며, 품질 관리 없이 에이전트를 병렬 실행하는 &amp;quot;슬롭 루프(slop loop)&amp;quot;의 전형적 예시&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;AI 빌더 커뮤니티에서 사람들이 비판적 사고 없이 서로의 창작물을 과대평가하며, 내부자들만 이해하는 은어와 문화를 형성하는 집단 행동이 관찰됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;일부 프로젝트는 이제 실제 코드 대신 프롬프트 제출을 선호하거나, 기여자를 완전히 검증하기 전까지 인간 기여를 받지 않는 등 극단적 조치를 취하고 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자는 AI 에이전트가 생산성 도구로 놀라운 잠재력을 가지고 있지만, 비판적 사고 없이 완전히 의존하면 대규모 슬롭 머신이 된다는 양면성을 강조함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;메인테이너들이 AI 슬롭을 거부할 때 기여자들은 진심으로 혼란스러워하며(&amp;quot;왜 부정적이세요? 도우려고 했는데&amp;quot;), 이는 그들의 AI &amp;quot;데몬&amp;quot;이 좋다고 말했기 때문임&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://ghuntley.com/ralph/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Ralph Wiggum as a &amp;quot;software engineer&amp;quot;&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260119131525/https://ghuntley.com/ralph/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=44565028&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Ralph은 AI 코딩 에이전트를 무한 루프로 실행하는 기법으로, 가장 순수한 형태는 Bash 루프 (&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;while :; do cat PROMPT.md | claude-code ; done&lt;/code&gt;)임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Ralph은 &lt;strong class="font-bold dark:font-extrabold"&gt;대부분의 기업에서 그린필드 프로젝트의 아웃소싱을 대체할 수 있는 잠재력&lt;/strong&gt;을 가지고 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Ralph의 핵심 특징: &lt;strong class="font-bold dark:font-extrabold"&gt;불확정적인 세계에서 결정론적으로 나쁜 방식&lt;/strong&gt;으로 작동하며, 이러한 결함은 다양한 프롬프트 스타일을 통해 식별하고 해결 가능함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;도구 호출 및 사용량에 제한이 없는 모든 도구로 Ralph 기법을 사용할 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;현재 Ralph는 &lt;strong class="font-bold dark:font-extrabold"&gt;전혀 새로운 프로덕션급 난해한 프로그래밍 언어(CURSED)를 구축 중&lt;/strong&gt;이며, LLM 훈련 데이터에 없는 언어임에도 불구하고 해당 언어로 프로그래밍까지 가능함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Ralph로 소프트웨어를 구축하려면 &lt;strong class="font-bold dark:font-extrabold"&gt;큰 믿음과 최종 일관성(eventual consistency)에 대한 신념&lt;/strong&gt;이 필요함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Ralph가 잘못된 방향으로 갈 때마다 도구를 탓하지 않고, 프롬프트를 조정(튜닝)하여 개선하는 방식으로 작동함 (마치 기타 튜닝처럼)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;비유: Ralph에게 놀이터를 만들라고 하면 잘 만들지만 미끄럼틀에서 떨어지므로, &amp;quot;미끄럼틀은 미끄러져 내려가고, 뛰어내리지 말고, 주위를 살펴보라&amp;quot;는 표지판을 추가하여 학습시킴&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자가 샌프란시스코에서 엔지니어들에게 Ralph를 가르쳤고, 한 엔지니어는 다음 계약에서 Ralph를 사용해 &lt;strong class="font-bold dark:font-extrabold"&gt;엄청난 ROI(투자 대비 수익)를 달성&lt;/strong&gt;함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://addyosmani.com/blog/ai-coding-workflow/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;My LLM coding workflow going into 2026&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260119131626/https://addyosmani.com/blog/ai-coding-workflow/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46489061&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=25755&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt; | &lt;a href="https://lobste.rs/s/gmtpog?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Lobsters&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2025년 AI 코딩 어시스턴트가 게임 체인저가 되었으며, Anthropic에서는 &lt;strong class="font-bold dark:font-extrabold"&gt;Claude Code의 약 90%가 Claude Code 자체에 의해 작성&lt;/strong&gt;될 정도로 활용도가 높지만, 효과적으로 활용하려면 기술과 체계적 접근이 필요함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;명확한 계획 수립이 우선&lt;/strong&gt;: 코드 생성 전에 AI와 함께 상세한 사양서(spec.md)와 단계별 프로젝트 플랜을 작성하는 &amp;quot;15분 안의 폭포수 모델&amp;quot; 방식으로 개발 방향을 정립&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;작업을 작고 반복 가능한 단위로 분할&lt;/strong&gt;: 한 번에 하나의 함수나 기능만 구현하도록 하여 AI가 집중된 작업을 수행하고, 대규모 일괄 생성 시 발생하는 혼란과 불일치를 방지&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;광범위한 컨텍스트 제공&lt;/strong&gt;: 관련 코드, 문서, 제약사항을 AI에게 충분히 제공하고, gitingest나 repo2txt 같은 도구로 코드베이스를 패키징하며, Claude Skills 같은 재사용 가능한 전문 지식 모듈 활용&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;적절한 모델 선택 및 병행 사용&lt;/strong&gt;: 각 작업에 맞는 최적의 LLM을 선택하고(Claude, Gemini, GPT 등), 모델이 막힐 경우 다른 모델로 전환하거나 여러 모델의 의견을 교차 확인&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;개발 전 생애주기에 걸친 AI 활용&lt;/strong&gt;: Claude Code, Gemini CLI 같은 CLI 도구와 Jules, GitHub Copilot Agent 같은 비동기 코딩 에이전트를 활용하되, 무인 자동화가 아닌 &lt;strong class="font-bold dark:font-extrabold"&gt;감독된 방식으로 사용&lt;/strong&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;철저한 검증, 테스트, 리뷰 필수&lt;/strong&gt;: AI가 생성한 코드를 &lt;strong class="font-bold dark:font-extrabold"&gt;절대 맹목적으로 신뢰하지 않고&lt;/strong&gt;, &amp;quot;과신하고 실수하기 쉬운&amp;quot; 주니어 개발자처럼 취급하여 모든 출력을 검토하고 테스트하며, Chrome DevTools MCP 같은 도구로 디버깅 품질 루프 강화&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;빈번한 커밋과 버전 관리&lt;/strong&gt;: AI가 빠르게 코드를 생성할 때 각 작은 작업마다 커밋하여 &amp;quot;게임의 세이브 포인트&amp;quot;처럼 활용하고, 문제 발생 시 쉽게 롤백할 수 있도록 함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;규칙과 예시로 AI 동작 커스터마이징&lt;/strong&gt;: CLAUDE.md, GEMINI.md 같은 규칙 파일이나 커스텀 인스트럭션으로 코딩 스타일, 린트 규칙, 선호 패턴을 AI에게 학습시켜 프로젝트 관례에 맞는 코드 생성 유도&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;AI는 개발자의 전문성을 증폭시키는 도구&lt;/strong&gt;: 클래식 소프트웨어 엔지니어링 원칙(설계, 테스트, 버전 관리, 표준 유지)이 AI 협업에서 더욱 중요하며, &lt;strong class="font-bold dark:font-extrabold"&gt;인간 엔지니어가 쇼의 디렉터로 남아 책임을 지는 &amp;quot;AI 보조 엔지니어링&amp;quot;&lt;/strong&gt; 접근법이 핵심&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://simonwillison.net/2026/Jan/19/scaling-long-running-autonomous-coding/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Scaling long-running autonomous coding&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260119131717/https://simonwillison.net/2026/Jan/19/scaling-long-running-autonomous-coding/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46675637&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Cursor는 단일 프로젝트에서 수백 개의 동시 자율 코딩 에이전트를 실행하는 실험을 진행했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 에이전트들은 총 100만 줄 이상의 코드와 수조 개의 토큰을 작성했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;시스템은 조정 및 완료 평가를 위해 플래너, 서브 플래너, 작업 에이전트 및 판정 에이전트를 활용했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Cursor의 에이전트 군집 접근 방식에 대한 테스트 사례는 웹 브라우저를 처음부터 구축하는 것이었습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;에이전트들은 거의 일주일 동안 브라우저 프로젝트를 작업하여 1,000개 파일에 걸쳐 100만 줄 이상의 코드를 생성했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;브라우저 코드가 포함된 FastRender 저장소에는 이제 빌드 지침이 포함되어 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;macOS에서 지침을 따른 결과 작동하는 브라우저 창이 나타났습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;생성된 브라우저는 일부 눈에 띄는 렌더링 결함에도 불구하고 대부분 올바른 레이아웃으로 웹 페이지를 읽기 쉽게 렌더링하는 인상적인 기능을 보여줍니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;FastRender 저장소는 WhatWG 및 CSS-WG 사양을 통합하기 위해 Git 서브모듈을 전략적으로 사용하여 에이전트에게 필요한 참조 자료를 제공합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 개발은 AI 지원 코딩을 향한 중요한 단계로 간주되며, 결과물의 품질이 초기 예상보다 빠르게 나타나고 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://blog.jquery.com/2026/01/17/jquery-4-0-0/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;jQuery 4.0.0 | Official jQuery Blog&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260118113901/https://blog.jquery.com/2026/01/17/jquery-4-0-0/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46664755&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=25940&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt; | &lt;a href="https://lobste.rs/s/vokwbo?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Lobsters&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;jQuery 4.0.0이 2006년 첫 출시 이후 약 20년, 메이저 버전 기준으로는 거의 10년 만에 정식 릴리스되었으며, 많은 개선사항과 현대화가 포함되어 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;IE 10 이하 지원 중단&lt;/strong&gt;: IE 11 지원은 jQuery 5.0에서 단계적으로 제거 예정이며, Edge Legacy, 구형 iOS(최근 3개 버전 이전), Firefox(최근 2개 버전 이전, ESR 제외), Android Browser도 지원 중단&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Trusted Types 및 CSP 지원&lt;/strong&gt;: Trusted Types를 지원하여 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;require-trusted-types-for&lt;/code&gt; CSP 정책 위반 없이 HTML 조작 가능하며, 대부분의 비동기 스크립트 요청을 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;&amp;lt;script&amp;gt;&lt;/code&gt; 태그로 전환하여 CSP 오류 방지&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;소스 코드를 AMD에서 ES 모듈로 마이그레이션&lt;/strong&gt;: 빌드 도구를 RequireJS에서 Rollup으로 전환하고, 모던 빌드 도구 및 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;&amp;lt;script type=module&amp;gt;&lt;/code&gt;과 호환되도록 개선&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;더 이상 사용되지 않는(deprecated) API 제거&lt;/strong&gt;: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;jQuery.isArray&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;jQuery.parseJSON&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;jQuery.trim&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;jQuery.type&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;jQuery.now&lt;/code&gt; 등 여러 함수 제거되었으며, 네이티브 대체 함수(&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Array.isArray()&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;JSON.parse()&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;String.prototype.trim()&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Date.now()&lt;/code&gt; 등) 사용 권장&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;내부 전용 메서드 제거&lt;/strong&gt;: jQuery 프로토타입에서 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;push&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;sort&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;splice&lt;/code&gt; 등 배열 메서드가 제거되었으며, 필요시 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;[].push.call($elems, elem)&lt;/code&gt; 형태로 대체 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Focus 이벤트 순서가 W3C 명세를 따름&lt;/strong&gt;: 모든 브라우저가 통일된 이벤트 순서(blur → focusout → focus → focusin)를 따르게 되어 jQuery도 네이티브 동작을 따르도록 변경(이전 jQuery 순서: focusout → blur → focusin → focus)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;업데이트된 Slim 빌드&lt;/strong&gt;: Deferreds와 Callbacks가 제거되어 약 19.5KB(gzipped)로 축소되었으며, IE11을 제외한 모든 지원 브라우저에서 네이티브 Promise 사용 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;구형 IE 지원 코드 제거 및 deprecated API 제거로 &lt;strong class="font-bold dark:font-extrabold"&gt;gzip 기준 3KB 이상 크기 감소&lt;/strong&gt; 달성&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;CDN, npm(&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;npm install jquery@4.0.0&lt;/code&gt;)을 통해 다운로드 가능하며, 업그레이드 가이드 및 jQuery Migrate 플러그인을 통해 마이그레이션 지원 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://www.bitecode.dev/p/pydantic-can-do-what?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Pydantic can do what?&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260109080720/https://www.bitecode.dev/p/pydantic-can-do-what?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Pydantic은 단순한 검증 라이브러리에서 environs/dotenv, click/typer/argparse, tomlib/yaml/json과 같은 여러 도구를 대체할 수 있는 포괄적인 설정 관리 시스템으로 발전했습니다&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;설정 기능이 너무 많이 성장하여 2023년에 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;pydantic-settings&lt;/code&gt;라는 별도의 패키지로 분리되었습니다&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Pydantic settings는 계층적 우선순위를 가진 여러 소스에서 설정을 로드하는 것을 지원합니다: dotenv 파일(&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;/etc/.env&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;.env&lt;/code&gt;), 환경 변수, 그리고 수동 매개변수&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;값을 적절한 Python 타입(예: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;Path&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;HttpUrl&lt;/code&gt;)으로 자동으로 역직렬화하고 포괄적인 검증(범위, 허용된 값 등)을 수행합니다&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;시스템은 기본적으로 여러 설정 파일 형식을 지원합니다: JSON, TOML, YAML이며, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;PydanticBaseSettingsSource&lt;/code&gt;를 상속하여 사용자 정의 로더를 만들 수 있습니다&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;최근 추가된 기능으로는 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;ConfigDict&lt;/code&gt;에 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;cli_parse_args=True&lt;/code&gt;를 추가하기만 하면 되는 CLI 인수 파싱 기능이 있어 argparse/click/typer가 필요 없습니다&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;CLI 기능에는 하위 명령, 케밥-케이스(kebab-case), 복잡한 값 전달(리스트/json), 별칭(aliases), &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;--no-flag&lt;/code&gt;, 위치 인수, 상호 배타적 그룹, argparse 통합이 포함됩니다&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;내장된 비밀 관리 기능은 민감한 값(&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;SecretStr&lt;/code&gt;과 같은)을 표시하고 출력에서 검열하며, 접근하려면 명시적으로 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;get_secret_value()&lt;/code&gt; 호출이 필요합니다&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;여러 클라우드 공급자 및 시스템에서 비밀을 읽는 것을 지원합니다: Unix secret 파일, Docker secrets, AWS Secret Manager, Google Cloud Secret Manager, Azure Key Vault, 그리고 Hashicorp Vault(커뮤니티 플러그인을 통해)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;라이브러리는 누락된 소스를 우아하게 처리하고, 모든 설정 계층에서 우선순위를 관리하며, 깊게 중첩된 값을 이해하고, 우수한 검증 오류 메시지를 제공합니다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://www.smashingmagazine.com/2026/01/rethinking-pixel-perfect-web-design/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Rethinking “Pixel Perfect” Web Design — Smashing Magazine&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260121111945/https://www.smashingmagazine.com/2026/01/rethinking-pixel-perfect-web-design/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2026년 현재, 인쇄 매체 시대부터 이어져 온 &lt;strong class="font-bold dark:font-extrabold"&gt;&amp;quot;픽셀 퍼펙트(Pixel Perfect)&amp;quot; 개념이 현대 웹 디자인에서 오히려 오해를 불러일으키고, 모호하며, 역효과를 낸다&lt;/strong&gt;는 주장&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;픽셀 퍼펙트는 1980~90년대 인쇄 산업과 초기 GUI 디자인에서 유래했으며, 당시 웹 디자이너들은 &lt;strong class="font-bold dark:font-extrabold"&gt;&amp;quot;인쇄된 페이지&amp;quot; 사고방식&lt;/strong&gt;을 그대로 웹에 적용하여 테이블 레이아웃과 스페이서 GIF로 고정된 레이아웃을 구현했음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2000년 John Allsopp의 &amp;quot;A Dao of Web Design&amp;quot;에서 웹의 본질적 유동성을 무시한 픽셀 퍼펙트를 비판했으나, 2010년 반응형 웹 디자인이 등장한 이후에도 이 개념은 여전히 남아있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;현대 웹에서 픽셀 퍼펙트가 실패하는 이유
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;근본적으로 모호함&lt;/strong&gt;: &amp;quot;모든 것&amp;quot;을 완벽하게 맞추려는 요구는 구체성이 부족&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;다양한 디바이스 현실&lt;/strong&gt;: 무한에 가까운 뷰포트, 해상도, 화면비에서 단일 &amp;quot;완벽함&amp;quot;은 기술적으로 불가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;동적 콘텐츠&lt;/strong&gt;: 다국어 지원, 긴 텍스트 등 콘텐츠 변화에 취약한 고정 레이아웃&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;접근성 무시&lt;/strong&gt;: 사용자 폰트 크기 조정이나 고대비 모드에서 깨지는 레이아웃은 진정한 완벽함이 아님&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;시스템 사고 부재&lt;/strong&gt;: 컴포넌트 기반 디자인 시스템과 충돌하며, 확장성을 저해&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;기술 부채 증가&lt;/strong&gt;: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;margin-top: 3px&lt;/code&gt; 같은 &amp;quot;매직 넘버&amp;quot; 해킹으로 취약하고 유지보수 어려운 코드 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;대안으로 &lt;strong class="font-bold dark:font-extrabold"&gt;&amp;quot;디자인 의도(Design Intent)&amp;quot;&lt;/strong&gt; 중심 접근 제안: 정적 픽셀 값 대신 왜 그 간격이 필요한지 이해하고, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;clamp()&lt;/code&gt;, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;rem&lt;/code&gt;, CSS Container Queries 등 유연한 단위와 도구 활용&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;디자인 토큰&lt;/strong&gt; 사용으로 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;--spacing-large&lt;/code&gt; 같은 논리적 값 공유, 디자이너-개발자 간 값이 아닌 로직 동기화&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;웹의 &lt;strong class="font-bold dark:font-extrabold"&gt;유동성을 기능으로 받아들이고&lt;/strong&gt;, &amp;quot;핸드오버&amp;quot; 방식 대신 살아있는 디자인 시스템에서 협업하며, &amp;quot;픽셀 퍼펙트&amp;quot; 대신 &amp;quot;디자인 시스템과 시각적 일관성&amp;quot;, &amp;quot;간격과 위계 일치&amp;quot;, &amp;quot;비율과 정렬 로직 유지&amp;quot; 같은 명확한 용어 사용 권장&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;결론: 현대 웹은 고정된 픽셀이 아니라 &lt;strong class="font-bold dark:font-extrabold"&gt;적응하고 호흡하는 인터페이스&lt;/strong&gt;를 요구하며, 진정한 완벽함은 누가 보든 어떤 기기로 보든 디자인의 본질이 유지되는 것&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://www.nytimes.com/2026/01/19/technology/polymarket-kalshi-prediction-markets.html?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;The Rise of Prediction Markets - The New York Times&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Polymarket과 Kalshi 같은 예측 시장은 사용자들이 정치적 결과와 스포츠 경기부터 연예인 뉴스에 이르기까지 광범위한 이벤트에 베팅할 수 있도록 합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이러한 플랫폼들은 주로 정치 애호가들 사이의 틈새 관심사에서 미국 정치와 문화에서 보다 주류적인 존재로 이동했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;인기 급증으로 인해 CNN, CNBC, The Wall Street Journal과 같은 주요 미디어 회사들이 예측 시장과 파트너십을 맺고 그들의 데이터를 뉴스 보도에 통합하게 되었습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Kalshi와 Polymarket에서 거래되는 금액의 규모는 상당히 증가하여, 12월에는 거의 120억 달러가 거래되었으며, 이는 전년 대비 400% 증가한 수치입니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;예측 시장 기업들은 수십억 달러를 유치하며 상당한 투자를 받아 저명한 테크 스타트업이 되었습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Polymarket과 Kalshi 모두 트럼프 가문과 연결되어 있으며, Donald Trump Jr.가 두 회사의 고문으로 활동하고 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이란 시위와 같은 사건들은 이러한 플랫폼에서 베팅 기회가 되었으며, 이는 스포츠 팬들이 감독의 미래에 베팅하는 방식과 유사합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Polymarket 배당률은 골든 글로브 시상식 방송 중에도 소개되어 문화적 관련성이 커지고 있음을 나타냅니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이러한 성장은 정보와 대중 정서가 추적되고 잠재적으로 영향을 받는 방식에 상당한 변화가 있음을 시사합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 플랫폼들은 정치 마니아를 넘어 다양한 투기적 이벤트에 관심 있는 더 넓은 청중으로 확장되면서 다양한 사용자들을 유치하고 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://www.simonpcouch.com/blog/2026-01-20-cc-impact/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Electricity use of AI coding agents&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260121113238/https://www.simonpcouch.com/blog/2026-01-20-cc-impact/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46695415&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2025년 데이터에 따르면 일반적인 AI 챗봇 사용(하루 100개 프롬프트)은 개인 전기·물 사용량의 0.01% 수준으로 환경 영향이 미미함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;그러나 &lt;strong class="font-bold dark:font-extrabold"&gt;코딩 에이전트(Claude Code 등)를 업무에 활용하는 &amp;quot;극단적 파워 유저&amp;quot;의 경우 에너지 소비량이 수백 배 이상 증가&lt;/strong&gt;함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&amp;quot;중간값 쿼리(median query)&amp;quot;는 약 0.3 Wh를 소비하는 반면, &lt;strong class="font-bold dark:font-extrabold"&gt;Claude Code 세션 1회는 약 41 Wh를 소비&lt;/strong&gt;—138배 더 많음
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Claude Code는 시스템 프롬프트와 도구 설명만으로 약 20,000 토큰을 사용하며, 한 번의 메시지가 5~10개의 대규모 쿼리를 연쇄적으로 발생시킴&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자의 일반적인 업무일 기준으로 &lt;strong class="font-bold dark:font-extrabold"&gt;Claude Code를 통해 하루 약 1,300 Wh를 소비&lt;/strong&gt;—&amp;quot;일반 쿼리&amp;quot; 4,400개 분량에 해당하며, 하루 $15-20의 토큰 비용 발생&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이는 &lt;strong class="font-bold dark:font-extrabold"&gt;식기세척기 1회 추가 사용, 냉장고 1대 추가 운영, 또는 자동차로 식료품점 1회 왕복 수준&lt;/strong&gt;의 에너지 소비량&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;에너지 추정 방법: Epoch AI의 GPT-4o 데이터(~240 Wh/MTok)와 Anthropic의 API 가격 비율(출력 토큰 = 입력 토큰의 5배)을 활용해 토큰당 에너지 소비량 역산
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;입력: ~390 Wh/MTok, 출력: ~1,950 Wh/MTok, 캐시 읽기: ~39 Wh/MTok (최대 컨텍스트 기준)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자는 8,825개의 Claude Code API 호출 로그를 분석했으며, 중간값 세션은 24개 요청과 592,439개 토큰 소비(5개 사용자 메시지 + 19개 도구 호출 응답)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;주요 유의사항
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;프론티어 랩들이 종합 데이터를 공개하지 않아 모두 추정치임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;에너지원(재생 에너지 vs 화석 연료)에 따라 환경 영향이 크게 달라짐&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;개인 배출량 감축보다 녹색 에너지 전환 지지 등의 정책적 접근이 더 효과적&lt;/strong&gt;일 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자는 이 수준의 에너지 사용량이 코딩 에이전트 사용을 줄일 만큼 심각하다고 보지 않지만, AI 관련 녹색 에너지 전환을 가속화하는 단체들에 기부할 정도로는 중요하다고 판단함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://simonwillison.net/2026/Jan/21/claudes-new-constitution/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Claude’s new constitution&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260122135611/https://simonwillison.net/2026/Jan/21/claudes-new-constitution/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46713272&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Anthropic은 Claude의 &amp;quot;헌장(constitution)&amp;quot; 문서를 CC0 라이선스 하에 공식적으로 공개했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 헌장 문서는 이전에 Richard Weiss에 의해 유출되어 &amp;quot;영혼 문서(soul document)&amp;quot;로 불렸으며, Claude의 훈련 절차의 일부였습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 문서는 35,000 토큰 이상의 길이로, Opus 4.5 시스템 프롬프트보다 훨씬 큽니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;문서는 Claude의 핵심 가치를 상세히 설명하고 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Anthropic의 Amanda Askell이 문서의 출처를 확인했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;헌장은 시스템 프롬프트의 일부가 아니라 Claude의 훈련에 내재되어 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이번 공개로 Claude의 내부 지침이 대중에게 공개되었습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;감사의 글 섹션에는 문서를 검토한 외부 기여자들의 명단이 나열되어 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;특히, 두 명의 가톨릭 성직자인 Brendan McGuire 신부와 Paul Tighe 주교가 외부 기여자로 나열되어 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Brendan McGuire 신부는 컴퓨터 과학 및 수학 배경을 가지고 있으며, Paul Tighe 주교는 도덕 신학 배경을 가지고 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://snubi.net/posts/Show-HN/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;The percentage of Show HN posts is increasing, but their scores are decreasing | snubi&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260122140858/https://snubi.net/posts/Show-HN/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46702099&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=26030&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;코딩이 가능한 LLM의 등장 이후 Hacker News에서 &amp;#39;Show HN&amp;#39; 게시물의 비율이 크게 증가했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2012-2022년에는 &amp;#39;Show HN&amp;#39; 게시물이 전체 스토리의 약 2-3%를 차지했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2025년 12월까지 &amp;#39;Show HN&amp;#39; 게시물은 전체 스토리의 12% 이상을 차지했으며, LLM으로 생성된 콘텐츠가 이러한 추세를 가속화했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Claude Code와 Cursor 1.0과 같은 도구들이 &amp;#39;Show HN&amp;#39; 게시물의 비율을 더욱 증가시킨 것으로 보입니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&amp;#39;Show HN&amp;#39; 스토리의 평균 점수는 비율이 증가함에 따라 감소하고 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;2025년 12월 기준으로, &amp;#39;Show HN&amp;#39;의 평균 점수는 모든 스토리의 평균 점수보다 약 10점 낮습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;점수 하락은 LLM으로 생성된 콘텐츠의 품질이 반드시 낮아서라기보다는, &amp;#39;Show HN&amp;#39; 게시물의 증가된 양으로 인한 독자들의 피로감 때문일 수 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자는 2022년 평균 점수의 설명되지 않은 증가를 언급하고 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 분석은 BigQuery의 Hacker News 데이터셋에서 내보낸 데이터를 사용합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;게시물 제목이나 설명에 명시적인 언급이 없기 때문에 LLM으로 생성된 &amp;#39;Show HN&amp;#39; 게시물의 정확한 비율을 결정하는 것은 어렵습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://susam.net/nested-code-fences.html?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Nested Code Fences in Markdown&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://news.ycombinator.com/item?id=46705201&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://lobste.rs/s/itkq4m?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Lobsters&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;CommonMark와 GitHub Flavoured Markdown(GFM)에서 &lt;strong class="font-bold dark:font-extrabold"&gt;코드 펜스(code fences) 내부에 백틱(backticks)이나 틸드(tildes)를 중첩하는 방법&lt;/strong&gt;을 설명하는 기술 문서&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;기본 코드 펜스 문제&lt;/strong&gt;: 삼중 백틱(```)으로 시작한 코드 블록 내부에 다시 삼중 백틱이 나오면, 두 번째 백틱이 코드 블록을 즉시 종료시켜 의도하지 않은 렌더링 결과 발생&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;해결책 1 - 틸드 사용&lt;/strong&gt;: 코드 펜스를 백틱 대신 틸드(~~~)로 감싸면 내부에 백틱을 안전하게 포함 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;해결책 2 - 더 많은 문자 사용&lt;/strong&gt;: 코드 펜스는 최소 3개 이상의 백틱 또는 틸드로 구성 가능하므로, 내부 백틱보다 더 많은 수의 백틱(예: `````)으로 감싸면 중첩 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;인라인 코드 스팬(code spans) 문제&lt;/strong&gt;: 단일 백틱으로 구분되는 인라인 코드 내부에 백틱이 있으면 코드 스팬이 조기 종료됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;인라인 코드 해결책&lt;/strong&gt;: 여러 개의 백틱(예: `` 또는 ```)을 구분자로 사용하면 내부에 백틱 포함 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;공백 처리 규칙&lt;/strong&gt;: 인라인 코드 스팬 내부 텍스트가 공백으로 시작하고 끝나면, 렌더링 시 양쪽 끝에서 각각 한 칸의 공백이 제거됨 (이를 활용해 백틱을 코드 스팬에 포함 가능)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;CommonMark 스펙 0.30 버전의 &lt;strong class="font-bold dark:font-extrabold"&gt;4.5절(Fenced Code Blocks)&lt;/strong&gt;과 &lt;strong class="font-bold dark:font-extrabold"&gt;6.1절(Code Spans)&lt;/strong&gt;에서 이러한 규칙들이 명시되어 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;코드 펜스는 백틱과 틸드를 혼용할 수 없으며, 여는 펜스와 동일한 타입 및 개수 이상의 문자로 닫아야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://keepandroidopen.org/ko/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Keep Android Open&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260122142020/https://keepandroidopen.org/ko/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Google이 2025년 8월, 다음 해부터 &lt;strong class="font-bold dark:font-extrabold"&gt;등록하지 않은 개발자는 Android 애플리케이션 개발 불가&lt;/strong&gt;라는 새로운 정책을 발표함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 정책은 Google의 승인 절차를 거쳐야만 앱 개발 및 배포가 가능하도록 제한하는 내용을 포함함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;소비자 관점&lt;/strong&gt;: Android가 자유로운 컴퓨팅 플랫폼이라는 약속이 깨지며, Google이 강제 시스템 업데이트를 통해 사용자의 소프트웨어 선택권을 차단할 예정&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;개발자 관점&lt;/strong&gt;: Google의 승인 없이는 앱 개발 및 공유가 불가능해지며, &amp;quot;개방형&amp;quot;이라는 Android의 핵심 가치와 iPhone과의 차별점이 사라짐&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;국가 관점&lt;/strong&gt;: 권위주의 정권의 요구에 순응해 온 기업에 국민의 디지털 주권을 넘겨주게 되며, 필수 소프트웨어가 불투명한 기업의 결정에 좌우될 위험&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;전 세계 규제 당국이 기술 독점과 권력 집중화에 우려를 표명하고 있으며, &lt;strong class="font-bold dark:font-extrabold"&gt;개인들의 의견을 직접 듣고자 함&lt;/strong&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;규제 당국에 문의 시, 정책이 소비자 및 경쟁에 미칠 피해를 &lt;strong class="font-bold dark:font-extrabold"&gt;정중하고 구체적으로&lt;/strong&gt; 설명하고, 공용어(한국어)로 작성하며, 서면 답변을 요청할 것을 권장&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;앱 개발자에게 &lt;strong class="font-bold dark:font-extrabold"&gt;얼리 엑세스 프로그램 가입 거부, 신분증 미제출, Android Developer Console 초대 거부&lt;/strong&gt;를 촉구하며, 개발자들의 반발이 정책 저지의 핵심임을 강조&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;커뮤니티, SNS, 블로그를 통해 메시지 확산 및 FreeDroidWarn 라이브러리를 앱에 포함하여 사용자에게 상황을 알릴 것을 요청&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Google 내부 관계자에게 정책 관련 추가 정보 제공을 요청하며, &lt;a href="mailto:tips@keepandroidopen.org" rel="noopener noreferrer" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;tips@keepandroidopen.org&lt;/a&gt;로 기밀 연락 가능함을 안내&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://news.hada.io/topic?id=26039&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;전자책 검색기 - 전자책 검색과 대출이 불편해서 만들었습니다 | GeekNews&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260122142320/https://news.hada.io/topic?id=26039&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;전자책 검색과 대출의 불편함을 해결하기 위해 만든 &lt;strong class="font-bold dark:font-extrabold"&gt;전자책 검색기(ebook-search.org)&lt;/strong&gt; 소개&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;공공 도서관의 전자책 무료 대출 서비스가 있지만, 개별 도서관 로그인 후 검색·대출·앱 다운로드 등 복잡한 절차가 필요함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;주요 기능&lt;/strong&gt;: 전자책 검색 시 판매 서점/플랫폼, 구독 플랫폼, 대출 가능한 공공 도서관을 한 번에 조회 가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;도서관에서 대출 가능한 경우 &lt;strong class="font-bold dark:font-extrabold"&gt;도서관 계정 로그인 및 딥링크 제공&lt;/strong&gt;(교보, Yes24 등)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;베스트셀러/신간 도서를 한눈에 조회&lt;/strong&gt;할 수 있는 트렌딩 뷰 제공&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;사용자 피드백: 일부 서적이 타 플랫폼에서 판매됨에도 누락되는 경우 발견됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;누락 원인은 &lt;strong class="font-bold dark:font-extrabold"&gt;모든 플랫폼이 ISBN으로 매칭되지 않고 일부는 제목으로만 매칭&lt;/strong&gt;되기 때문이며, 지속적으로 보완 예정&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;특정 서점에서만 판매하는 전자책을 찾는 데 유용함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;도서정가제로 가격 차이는 크지 않지만, &lt;strong class="font-bold dark:font-extrabold"&gt;구글 플레이스토어에서 구매 후 DeDRM을 통해 킨들 등에서 볼 수 있어&lt;/strong&gt; 가격 섹션 유지&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;사용자 제안: 로딩 시간이 다소 걸리므로 대기 메시지 추가 요청&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://brooker.co.za/blog/2026/01/21/pass-k.html?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Pass@k is Mostly Bunk&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260123002838/https://brooker.co.za/blog/2026/01/21/pass-k.html?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46711347&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;pass@k 메트릭은 AI 에이전트 평가에서 흔히 사용되지만, &lt;strong class="font-bold dark:font-extrabold"&gt;대부분의 경우 잘못된(bunk) 지표&lt;/strong&gt;임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;pass@k의 정의&lt;/strong&gt;: k번의 시도 중 최소 1번이라도 성공할 확률을 나타내는 지표 (예: 주사위에서 6이 나올 확률이 5%일 때, pass@100은 99.4%에 달함)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;pass@k의 핵심 문제점&lt;/strong&gt;: 지수적으로 관대한(exponentially forgiving) 메트릭이라 낮은 k 값만으로도 어떤 모델이든 좋아 보이게 만들 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;실제 성공률이 5%에 불과한 모델도 pass@100에서는 99.4%라는 인상적인 결과를 보일 수 있어 &lt;strong class="font-bold dark:font-extrabold"&gt;오해를 불러일으킴&lt;/strong&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;인간 사용자의 실제 경험&lt;/strong&gt;과 괴리: 사용자는 &amp;quot;10번 시도해서 1번 성공하면 만족&amp;quot;이 아니라 &amp;quot;10번 중 1번만 되면 형편없는 제품&amp;quot;이라고 평가함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;실제 사용 환경에서는 여러 단계가 모두 성공해야 하므로 &lt;strong class="font-bold dark:font-extrabold"&gt;지수적으로 가혹한(exponentially unforgiving)&lt;/strong&gt; 상황이며, 이 경우 &lt;strong class="font-bold dark:font-extrabold"&gt;pass^k가 더 나은 메트릭&lt;/strong&gt;임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;pass@k가 유용한 경우: &lt;strong class="font-bold dark:font-extrabold"&gt;작업이 단순하고, 평가가 신뢰할 수 있으며, 인간이 루프 밖에 있는&lt;/strong&gt; 특수한 상황 (선형 비용 증가로 지수적 성공률 향상을 얻을 수 있는 경우)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;그러나 이러한 조건을 만족하는 작업은 드물기 때문에, &lt;strong class="font-bold dark:font-extrabold"&gt;pass@k는 드물게 사용되어야 하며 사용할 때마다 신중한 정당화가 필요함&lt;/strong&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;에이전트 AI 분야를 발전시키려면 메트릭에 대해 정직해야 함&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://curl.se/.well-known/security.txt?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;https://curl.se/.well-known/security.txt&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260123004340/https://curl.se/.well-known/security.txt?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46717556&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;curl 오픈 소스 프로젝트는 보안 보고서를 접수합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;보고된 문제에 대해 보상이나 금전적 대가는 제공되지 않습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;확인된 문제에 대해서는 감사와 acknowledgment(공로 인정)가 제공됩니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;저품질 보고서를 제출하는 사용자는 차단되고 공개적으로 조롱당할 수 있습니다.&lt;/strong&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;보안 보고서는 &lt;a href="mailto:security@curl.se" rel="noopener noreferrer" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;security@curl.se&lt;/a&gt;로 이메일을 통해 제출할 수 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;또는 보안 보고서는 GitHub(&lt;a href="https://github.com/curl/curl/security/advisories)%EB%A5%BC?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;https://github.com/curl/curl/security/advisories)를&lt;/a&gt; 통해 제출할 수 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;취약점 공개 정책은 &lt;a href="https://curl.se/dev/vuln-disclosure.html?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;https://curl.se/dev/vuln-disclosure.html&lt;/a&gt; 에서 확인할 수 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;보안 보고서의 선호 언어는 영어입니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;보안 문제에 대한 acknowledgment(공로 인정) 목록은 &lt;a href="https://curl.se/docs/security.html?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;https://curl.se/docs/security.html&lt;/a&gt; 에서 확인할 수 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 security.txt 파일은 2026년 10월 22일에 만료됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://blog.sweep.dev/posts/oss-next-edit?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Sweep AI Blog - Insights from building coding agents and autocomplete for JetBrains&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260123075004/https://blog.sweep.dev/posts/oss-next-edit?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Sweep이 &lt;strong class="font-bold dark:font-extrabold"&gt;Sweep Next-Edit&lt;/strong&gt;이라는 1.5B 파라미터 규모의 next-edit 자동완성 모델을 오픈소스로 공개함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;로컬 랩톱에서 500ms 이하로 실행 가능하며, 4배 이상 큰 모델들보다 next-edit 벤치마크에서 우수한 성능을 보임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;기존 모델(Zeta, Instinct)의 주요 문제점&lt;/strong&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;채팅 템플릿이나 커스텀 토큰 사용으로 인한 비효율적인 토크나이징 (예: &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;&amp;lt;|editable_region_start|&amp;gt;&lt;/code&gt; 같은 경계 마커가 7개 토큰으로 분할됨)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;과도한 시스템 프롬프트와 불필요한 지시사항으로 인한 노이즈 및 지연 증가&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;부족한 학습 데이터 (Zeta는 수백 개, Instinct는 수천 개 수준이며 대부분 단일 저장소에서 추출)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Zeta는 LoRA 사용으로 기본 패턴 매칭조차 학습에 어려움&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Sweep의 최적화된 포맷&lt;/strong&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Qwen2.5 Coder의 프리트레이닝 포맷 기반으로, 최근 변경사항을 diff 형태로 제공하고 커서 주변 고정 윈도우(10줄 위아래)를 재작성하도록 설계&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;유전 알고리즘으로 30개 이상의 프롬프트 포맷을 실험한 결과, &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;original&lt;/code&gt;/&lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;updated&lt;/code&gt; 블록 형식이 unified diff보다 LLM이 파싱하기 쉬움을 발견&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;고정 윈도우 크기(21줄)를 사용해 모델이 출력 길이를 예측 가능하게 하여 학습 안정성 향상 (AST 기반 동적 경계는 일관성 부족 문제 발생)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;학습 과정&lt;/strong&gt;: 8xH100에서 4시간 동안 ~100k 엔트리로 SFT(Supervised Fine-Tuning) 진행 후, 2000 스텝의 강화학습(RL)으로 파싱 불가능한 코드 생성 및 과도한 diff 크기 등의 문제 해결&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;RL 단계에서 tree-sitter로 파싱 가능성 검증 및 변경 크기 정규화 보상 함수 적용&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;성능 평가&lt;/strong&gt;: 5개 벤치마크(커서 아래/위 next-edit, tab-to-jump, FIM, noisiness)에서 공백 무시 exact-match 정확도 사용 (CodeBLEU나 LLM-as-a-judge 대신 엄격한 메트릭 선택)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;TensorRT-LLM 포크와 FP8 양자화, n-gram speculative decoding을 적용한 커스텀 추론 엔진으로 평균 sub-100ms의 warm autocomplete 달성&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;모델 가중치와 실행 예제를 Hugging Face에 공개하여 VSCode, Neovim, Emacs 등 모든 IDE에서 빠르고 프라이버시 보호되는 자동완성 구축 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://runjak.codes/posts/2026-01-21-adversarial-coding-test/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;runjak.codes: An adversarial coding test&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260123082345/https://runjak.codes/posts/2026-01-21-adversarial-coding-test/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46717472&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://lobste.rs/s/bndnsg?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Lobsters&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저자가 구직 면접 과정에서 코딩 테스트를 받던 중 &lt;strong class="font-bold dark:font-extrabold"&gt;악의적인 공격을 발견한 사례&lt;/strong&gt;를 공유함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Fediverse에서 본 보안 경고 게시물이 계기가 되어 의심을 품게 됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Solvolabs&lt;/strong&gt;라는 회사로부터 코딩 챌린지를 위한 저장소 접근 권한을 받았으나, 회사 웹사이트가 블록체인/NFT 스캠과 AI 회사의 디자인 언어를 혼합한 형태로 의심스러웠음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;저장소의 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;.vscode/tasks.json&lt;/code&gt; 파일 히스토리를 조사한 결과 &lt;strong class="font-bold dark:font-extrabold"&gt;원격 서버에서 스크립트를 다운로드하고 실행하는 악성 명령어들을 발견&lt;/strong&gt;함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;발견된 명령어들은 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;curl&lt;/code&gt;과 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;wget&lt;/code&gt;을 사용해 Vercel에 호스팅된 여러 도메인에서 셸 스크립트를 다운로드하고 실행하도록 설계됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;악성 스크립트는 &lt;strong class="font-bold dark:font-extrabold"&gt;다단계로 작동&lt;/strong&gt;하며, JWT 토큰(3분 유효)을 사용해 추가 스크립트를 다운로드하고 백그라운드에서 실행함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;피싱 공격에 대한 교훈: &lt;strong class="font-bold dark:font-extrabold"&gt;충분한 시간과 기회가 주어지면 누구나 실수로 버튼을 클릭할 수 있으며&lt;/strong&gt;, 이것이 계층적 보안 통제가 중요한 이유임&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;GitHub에 해당 조직을 신고했고 몇 시간 내에 확인 메일을 받았으며, Vercel에도 도메인을 신고하고 응답을 기다리는 중&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;면접 중인 회사의 GitHub 조직이 삭제되는 결과&lt;/strong&gt;를 초래했으며, 저자는 이를 예상하지 못했다고 언급&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;구직자들에게 주의를 당부하며, 자신도 계속 구직 중임을 밝힘&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://qwen.ai/blog?id=qwen3tts-0115&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Qwen3-TTS Family is Now Open Sourced: Voice Design, Clone, and Generation!&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260124143102/https://qwen.ai/blog?id=qwen3tts-0115&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46719229&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=26049&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Qwen3-TTS는 음성 클로닝, 디자인, 그리고 고품질의 인간과 유사한 음성 합성을 제공하는 오픈소스 음성 생성 모델 패밀리입니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 모델들은 효율적인 음성 압축과 고품질 복원을 가능하게 하는 Qwen3-TTS-Tokenizer-12Hz를 기반으로 합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Qwen3-TTS는 극한의 양방향 스트리밍 생성을 위한 듀얼 트랙(Dual-Track) 모델링 아키텍처를 활용하여 단일 문자 처리 후 첫 번째 오디오 패킷을 전달합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;오픈소스로 공개된 Qwen3-TTS 모델은 두 가지 크기로 제공됩니다: 최고 성능을 위한 1.7B와 성능과 효율성의 균형을 위한 0.6B입니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;이 모델들은 10개의 주요 언어와 다양한 방언을 지원하며, 적응형 톤, 리듬, 감정 표현을 위한 강력한 맥락 이해 능력을 보여줍니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Qwen3-TTS-1.7B-VoiceDesign은 사용자가 설명적인 텍스트 지시를 기반으로 맞춤형 음성을 생성할 수 있게 합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Qwen3-TTS-1.7B-CustomVoice와 Qwen3-TTS-0.6B-CustomVoice는 사용자 지시를 사용한 목표 음색에 대한 스타일 제어를 지원하며 9개의 프리미엄 음색을 제공합니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;기본 모델(1.7B 및 0.6B)은 빠른 3초 음성 클로닝이 가능하며 다른 모델의 미세 조정에 사용할 수 있습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Qwen3-TTS는 음성 디자인, 음성 제어, 음성 클로닝 작업에서 최첨단(SOTA) 성능을 달성하여 여러 선도적인 모델들을 능가했습니다.&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Qwen-TTS-Tokenizer-12Hz는 PESQ, STOI, UTMOS 및 화자 유사도와 같은 음성 복원 메트릭에서 SOTA 성능을 입증했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</ns0:encoded></item><item><title>2026-01-19 주간 URL 모음</title><link>https://blog.update.sh/weekly-urls/2026-01-19</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="mdx-content leading-[1.6]" style="--v2806f315:0.875rem,[object Object],0.875rem,[object Object];--v67bf8b50:#6b7280;--v67bf83ce:#d1d5db;--v67bf878f:#9ca3af;--v67bf92d2:#374151;" data-v-ec58c90e&gt;&lt;ul class="my-2 list-outside list-disc" data-v-ec58c90e&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://github.com/tailwindlabs/tailwindcss.com/pull/2388?utm_source=blog.update.sh&amp;amp;utm_medium=content#issuecomment-3717222957" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;feat: add llms.txt endpoint for LLM-optimized documentation by quantizor · Pull Request #2388 · tailwindlabs/tailwindcss.com&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260113110746/https://github.com/tailwindlabs/tailwindcss.com/pull/2388?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Tailwind CSS GitHub에 LLM 최적화 문서를 제공하는 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;/llms.txt&lt;/code&gt; 엔드포인트 추가 PR이 제출되었으나 거부됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;제안된 기능: MDX 파일에서 텍스트 추출, JSX 컴포넌트 제거, 코드 블록 보존하여 185개 문서를 빌드 타임에 정적 생성&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;Tailwind 팀의 거부 이유&lt;/strong&gt;: AI로 인해 문서 트래픽이 2023년 초 대비 약 40% 감소했으며, 문서가 유료 제품을 알리는 유일한 경로인데 LLM 최적화 문서는 이를 더 악화시킬 수 있음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;심각한 비즈니스 위기 공개&lt;/strong&gt;: AI 영향으로 매출이 약 80% 감소했고, PR 거부 전날 엔지니어링 팀의 75%를 해고해야 했음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Tailwind는 그 어느 때보다 인기 있고 빠르게 성장하고 있지만, 사용성 증가와 수익 사이에 상관관계가 없는 상황&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;PR 제출자와 커뮤니티 일부는 이 결정이 &amp;quot;OSS 비우호적&amp;quot;이며 오히려 비즈니스에 역효과라고 비판&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;현재 &lt;code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100"&gt;llms.txt&lt;/code&gt;는 제안된 표준일 뿐, OpenAI, Google, Anthropic 등 주요 AI 기업들이 공식적으로 따르고 있지 않음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Tailwind은 스폰서십 프로그램의 일부로 AGENTS.md 파일을 제공하고 있으나, Adam은 이것이 전체 문서와는 다르다고 해명&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;커뮤니티 내 격렬한 논쟁 발생: 일부는 Tailwind 팀을 지지하며 비즈니스 지속가능성의 중요성 강조, 일부는 오픈소스 정신 위배라고 비판&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;Adam은 장기적으로 LLM 최적화 문서를 추가하고 싶지만, 현재는 비즈니스 지속가능성 확보가 최우선이라며 PR을 종료하고 스레드 잠금&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</ns0:encoded></item><item><title>2026-01-12 주간 URL 모음</title><link>https://blog.update.sh/weekly-urls/2026-01-12</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="mdx-content leading-[1.6]" style="--v2806f315:0.875rem,[object Object],0.875rem,[object Object];--v67bf8b50:#6b7280;--v67bf83ce:#d1d5db;--v67bf878f:#9ca3af;--v67bf92d2:#374151;" data-v-ec58c90e&gt;&lt;ul class="my-2 list-outside list-disc" data-v-ec58c90e&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="https://tonsky.me/blog/tahoe-icons/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;It’s hard to justify Tahoe icons&lt;/a&gt;
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;a href="http://web.archive.org/web/20260105134749/https://tonsky.me/blog/tahoe-icons/?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Archive&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=46497712&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;HackerNews&lt;/a&gt; | &lt;a href="https://lobste.rs/s/2gvk2r?utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;Lobsters&lt;/a&gt; | &lt;a href="https://news.hada.io/topic?id=25590&amp;amp;utm_source=blog.update.sh&amp;amp;utm_medium=content" rel="noopener noreferrer" target="_blank" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300"&gt;GeekNews&lt;/a&gt;&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;요약
&lt;ul class="my-2 list-outside list-disc"&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;macOS Tahoe가 모든 메뉴 항목에 아이콘을 추가했지만, 이는 1992년 Macintosh Human Interface Guidelines의 원칙들을 위반하며 사용성을 오히려 저하시킴&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;아이콘의 핵심 기능은 차별화&lt;/strong&gt;인데, 모든 항목에 아이콘을 추가하면 아무것도 돋보이지 않게 되어 오히려 찾기 어려워짐. 흑백 아이콘보다 컬러 아이콘이 더 빠르게 인식됨&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;앱 간 일관성 부재&lt;/strong&gt;: &amp;quot;New&amp;quot;, &amp;quot;Open&amp;quot;, &amp;quot;Save&amp;quot;, &amp;quot;Close&amp;quot;, &amp;quot;Find&amp;quot;, &amp;quot;Delete&amp;quot; 등 기본적인 OS 작업들조차 앱마다 전혀 다른 아이콘을 사용함 (예: &amp;quot;New&amp;quot;만 해도 50가지 이상의 다른 아이콘 존재)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;앱 내부 일관성도 결여&lt;/strong&gt;: 같은 앱의 툴바와 메뉴에서 동일한 기능이 서로 다른 아이콘으로 표현되는 경우가 빈번함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;아이콘 재사용 문제&lt;/strong&gt;: 동일한 아이콘이 전혀 다른 기능을 나타내는 경우가 많아 사용자를 혼란스럽게 함 (예: 같은 아이콘이 &amp;quot;New&amp;quot;, &amp;quot;Quick Look&amp;quot;, &amp;quot;Import&amp;quot;, &amp;quot;Updates&amp;quot; 등을 의미)&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;과도한 뉘앙스&lt;/strong&gt;: 미세한 차이(화살표 각도, 선 굵기, 점 크기 등)로 다른 의미를 전달하려 하지만, Apple 스스로도 일관성 없이 적용하여 신뢰할 수 없음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;지나친 세부 표현&lt;/strong&gt;: Tahoe 메뉴 아이콘은 12×12 픽셀(실제 24×24 레티나)로 매우 작은데, 카메라 뷰파인더, 창문의 신호등, 2픽셀 높이의 &amp;#39;i&amp;#39; 글자 등 인식 불가능한 디테일을 포함함&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;픽셀 그리드 무시&lt;/strong&gt;: 벡터 폰트 사용으로 모든 해상도에서 작동하지만, 작은 크기에서는 흐릿하고 평범하게 보임. 비트맵처럼 픽셀 단위로 세심하게 디자인되지 않음&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;혼란스러운 은유&lt;/strong&gt;: 명확한 은유가 없거나 잘못된 은유 사용 (예: 텍스트 선택을 나타내는 아이콘이 실제 선택 모양과 다름), 텍스트 자체를 아이콘으로 사용하여 실제 텍스트와 구분 불가능&lt;/li&gt;
&lt;li class="ms-6 text-pretty" data-v-09555c0e&gt;&lt;strong class="font-bold dark:font-extrabold"&gt;불가능한 과제&lt;/strong&gt;: 모든 메뉴 항목에 아이콘을 추가하는 것 자체가 실현 불가능한 목표이며, 좋은 은유가 충분하지 않음. HIG의 원칙들은 인간의 인지 방식에 기반하므로 1992년이나 2025년이나 여전히 유효함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</ns0:encoded></item></channel></rss>