<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://blog.update.sh/weekly-urls/</id>
    <title>$ sh blog.update.sh</title>
    <updated>2026-03-08T23:02:02.392Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>Nesswit</name>
        <email>rishubil+blog@gmail.com</email>
        <uri>https://blog.update.sh/about</uri>
    </author>
    <link rel="alternate" href="https://blog.update.sh/weekly-urls"/>
    <link rel="self" href="https://blog.update.sh/feed-weekly-urls"/>
    <subtitle>All weekly URLs contents</subtitle>
    <logo>https://blog.update.sh/favicon.png</logo>
    <icon>https://blog.update.sh/favicon.png</icon>
    <rights>All rights reserved 2013, Nesswit</rights>
    <entry>
        <title type="html"><![CDATA[2026-03-09 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2026-03-09</id>
        <link href="https://blog.update.sh/weekly-urls/2026-03-09"/>
        <updated>2026-03-08T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://redis.antirez.com/?utm_source=blog.update.sh&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">Redis Patterns for Coding Agents</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260301203049/https://redis.antirez.com/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=47205646&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>이 사이트는 Redis 전용 디자인 패턴, 모범 사례, 커맨드 레퍼런스를 제공하며, 인간 개발자와 LLM 코딩 에이전트 모두를 위해 최적화되어 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">중요:</strong> 본 문서는 Redis(<a href="https://redis.io/?utm_source=blog.update.sh&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">redis.io</a>) 전용이며, Valkey, KeyDB, Dragonfly 등 Redis 호환 대안과는 호환성이 다를 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>LLM 코딩 에이전트는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">llms.txt</code>(머신 리더블 인덱스)를 먼저 가져온 후, 필요한 개별 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">.md</code> 파일을 순차적으로 조회하는 방식으로 활용할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">커맨드 레퍼런스</strong>는 카테고리별 인덱스(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">commands-index.md</code>)와 개별 커맨드 문서(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">commands/content/commands/</code>)로 구성되며, <a href="https://github.com/redis/docs?utm_source=blog.update.sh&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">github.com/redis/docs</a>의 미러임</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">핵심 디자인 패턴(Fundamental)</strong>으로는 원자적 업데이트, Cache-Aside, 캐시 스탬피드 방지, 분산 락(Redlock 포함), Rate Limiting, Redis Streams, Vector Sets 등 20개 패턴이 제공됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">커뮤니티 패턴</strong>으로는 비트맵, 지리공간, 리더보드, Pub/Sub, 세션 관리, 벡터 검색/AI 등 실용적인 6개 패턴이 포함됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">프로덕션 패턴</strong>으로 Pinterest(기능별 파티셔닝, 큐), Twitter/X(커스텀 자료구조), Uber(탄력성 및 샤딩) 등 대형 기술 기업의 실제 적용 사례를 다룸</li>
<li class="ms-6 text-pretty" data-v-09555c0e>분산 환경에서의 일관성을 위해 <strong class="font-bold dark:font-extrabold">Redlock 알고리즘</strong>(N개 인스턴스 중 과반수 락 획득)과 <strong class="font-bold dark:font-extrabold">Cross-Shard Consistency 패턴</strong>이 별도로 제공됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Redis 8의 <strong class="font-bold dark:font-extrabold">Vector Sets</strong>를 활용한 시맨틱 검색, RAG 파이프라인, 추천 시스템 등 AI 관련 패턴이 포함되어 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>모든 패턴 문서는 HTML과 Markdown 형식으로 동시 제공되어 접근성과 자동화 활용이 용이함</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026-03-02 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2026-03-02</id>
        <link href="https://blog.update.sh/weekly-urls/2026-03-02"/>
        <updated>2026-03-01T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://rogerwelin.github.io/2026/02/11/postgresql-bloat-is-a-feature-not-a-bug/?utm_source=blog.update.sh&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">PostgreSQL Bloat Is a Feature, Not a Bug</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://news.ycombinator.com/item?id=47083510&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>PostgreSQL의 <strong class="font-bold dark:font-extrabold">블로트(Bloat)</strong> 현상은 버그가 아니라 MVCC 설계에 내재된 특성으로, 행 수가 동일해도 디스크 사용량이 증가하고 쿼리 성능이 저하되는 원인임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Postgres는 데이터를 8KB 고정 크기 <strong class="font-bold dark:font-extrabold">페이지(Page)</strong> 단위로 저장하며, 페이지는 한번 할당되면 삭제해도 파일시스템에 반환되지 않아 테이블 파일은 오직 커지거나 유지될 뿐임</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">MVCC(Multi-Version Concurrency Control)</strong> 방식에서 UPDATE는 기존 튜플을 수정하지 않고 새 튜플을 추가하며, DELETE도 실제로 데이터를 지우지 않고 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">xmax</code> 값만 설정해 <strong class="font-bold dark:font-extrabold">데드 튜플(Dead Tuple)</strong> 이 누적됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>데드 튜플은 쿼리 결과에 보이지 않지만 디스크 공간을 차지하고, Postgres가 페이지를 읽을 때 이를 스캔해야 하므로 <strong class="font-bold dark:font-extrabold">디스크 공간 낭비뿐 아니라 성능 저하</strong>도 유발함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>테이블 블로트는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">pgstattuple</code> 익스텐션의 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">dead_tuple_percent</code>로 측정할 수 있으며, 인덱스도 데드 튜플을 가리키는 항목이 남아 <strong class="font-bold dark:font-extrabold">인덱스 블로트</strong>가 별도로 발생함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>인덱스 블로트는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">REINDEX INDEX CONCURRENTLY</code>로 해결할 수 있으며, 일반 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">REINDEX</code>는 테이블을 완전히 잠그므로 운영 중에는 CONCURRENTLY 옵션 사용을 권장함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">VACUUM</strong>은 데드 튜플의 공간을 재사용 가능하도록 표시하지만 테이블 파일 크기 자체를 줄이지는 않으며, <strong class="font-bold dark:font-extrabold">VACUUM FULL</strong>은 테이블을 완전히 재작성해 공간을 반환하지만 테이블을 독점 잠금함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Postgres의 <strong class="font-bold dark:font-extrabold">Autovacuum</strong>은 기본적으로 데드 튜플이 전체의 20% + 50행을 초과할 때 자동 실행되며, 대용량 테이블이나 고트래픽 환경에서는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">autovacuum_vacuum_scale_factor</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">autovacuum_vacuum_threshold</code> 등을 개별 튜닝해야 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">장기 실행 트랜잭션</strong>은 VACUUM이 해당 트랜잭션이 필요로 할 수 있는 모든 튜플을 정리하지 못하게 막아 데이터베이스 전체 블로트를 유발할 수 있으므로 주의가 필요함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>블로트 허용 기준으로 소규모 DB는 30~50%, 대규모 DB(50GB+)는 20% 이하를 유지하는 것을 권장하며, 과도한 블로트 시 Autovacuum을 더 적극적으로 조정하거나 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">pg_repack</code>을 활용할 수 있음</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://lalitm.com/post/why-senior-engineers-let-bad-projects-fail/?utm_source=blog.update.sh&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">Why Senior Engineers Let Bad Projects Fail</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><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;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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46640366&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=25884&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>시니어 엔지니어는 &quot;나쁜 프로젝트&quot;를 발견해도 항상 개입하지 않는데, <strong class="font-bold dark:font-extrabold">옳다는 것과 효과적이라는 것은 다르기 때문</strong>이다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>&quot;나쁜 프로젝트&quot;는 UX, 기술적 설계, 정치적 동기(승진용, 유행 추종 등) 측면에서 다양하게 정의되며, 그 판단은 초기엔 주관적이지만 시니어일수록 직관적으로 감지할 수 있다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>소프트웨어 회사는 속도와 실행을 중시하기 때문에 우려 제기는 무시되기 쉽고, 너무 자주 반대하면 &quot;부정적인 사람&quot;으로 낙인찍힐 위험이 있다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">영향력을 은행 계좌처럼 관리해야 한다</strong>: 코드 리뷰 소소한 지적($5), 아키텍처 도전($500), VP의 프로젝트 반대($50,000)처럼 소비 규모가 다르며, 잔고가 바닥나면 정치적 파산 상태가 된다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>개입 여부를 결정하는 세 가지 핵심 기준은 <strong class="font-bold dark:font-extrabold">① 프로젝트와의 근접성, ② 실패 시 내 팀에 미치는 영향, ③ 실패 시 회사 전체의 피해 규모</strong>이다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>개입 방식은 스펙트럼이 존재한다: 직접 프로젝트 중단 요청(핵옵션) → 팀에 우려 직접 전달 → 방향 살짝 조정(넛지) 순으로 강도가 다르다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>개입하지 않을 때는 의존성을 줄이거나 추상화 레이어를 만드는 <strong class="font-bold dark:font-extrabold">조용한 대비책</strong>을 마련하거나, 나쁜 프로젝트의 핵심 아이디어를 자신의 프로젝트에 더 나은 방식으로 흡수하는 전략을 쓸 수 있다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>팀원들에게는 나쁜 프로젝트를 좋은 척 포장하지 말고, <strong class="font-bold dark:font-extrabold">정치적 세부사항 없이 사실에 기반해 솔직하게 소통</strong>해야 신뢰를 유지할 수 있다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>결론적으로, 모든 것을 고치려 하기보다 <strong class="font-bold dark:font-extrabold">실제로 결과를 바꿀 수 있는 싸움을 전략적으로 선택</strong>하는 것이 시니어 엔지니어의 핵심 역량이다.</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://opper.ai/blog/car-wash-test?utm_source=blog.update.sh&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">Car Wash Test on 53 leading AI models: &quot;I want to wash my car. The car wash is 50 meters away. Should I walk or drive?&quot;</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260225034524/https://opper.ai/blog/car-wash-test?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=47128138&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=26975&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>&quot;Car Wash Test&quot;는 53개의 주요 AI 모델에 &quot;50미터 거리의 세차장에 가려면 걷는 게 나을까, 운전하는 게 나을까?&quot;라는 단순한 논리 질문을 던지는 벤치마크로, 정답은 <strong class="font-bold dark:font-extrabold">반드시 운전</strong>해야 함(차가 세차장에 있어야 하므로)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>단 1회 테스트에서 53개 모델 중 <strong class="font-bold dark:font-extrabold">11개만 정답(drive)</strong>을 선택했으며, 42개 모델은 &quot;50미터는 짧으니 걷는 게 효율적&quot;이라는 잘못된 휴리스틱에 따라 오답을 선택함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>10회 반복 일관성 테스트(총 530회 API 호출) 결과, <strong class="font-bold dark:font-extrabold">매번 정답을 맞힌 모델은 단 5개</strong>(Claude Opus 4.6, Gemini 2.0 Flash Lite, Gemini 3 Flash, Gemini 3 Pro, Grok-4)에 불과함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>GPT-5는 단일 테스트에서 정답을 맞혔지만 10회 중 7회(70%)만 성공했으며, Sonar는 1회 테스트에서 정답이었으나 10회 반복에서 <strong class="font-bold dark:font-extrabold">0/10</strong>으로 완전히 실패함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>전체 모델 중 33개는 10회 반복에서 <strong class="font-bold dark:font-extrabold">한 번도 정답을 맞히지 못했으며</strong>, Llama, Mistral, DeepSeek 전 모델과 대부분의 Claude/GPT 하위 모델이 포함됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Rapidata를 통한 인간 기준선 테스트(1만 명)에서 <strong class="font-bold dark:font-extrabold">71.5%가 정답(drive)</strong>을 선택, 53개 모델 중 48개는 평균적인 인간보다도 낮은 정답률을 기록함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>AI 모델의 실패는 크게 3가지 유형으로 분류됨: ① 항상 틀리는 모델(33개), ② 가끔 맞히지만 예측 불가한 모델(15개, <strong class="font-bold dark:font-extrabold">프로덕션 환경에서 가장 위험</strong>), ③ 항상 맞히는 모델(5개)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 테스트는 AI가 단순한 맥락적 추론보다 학습된 휴리스틱(&quot;짧은 거리 = 걷기&quot;)을 우선시하는 <strong class="font-bold dark:font-extrabold">신뢰성 문제</strong>를 드러내며, 복잡한 실제 비즈니스 로직에서의 위험성을 시사함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>구조화된 예시와 도메인 컨텍스트를 제공하는 <strong class="font-bold dark:font-extrabold">컨텍스트 엔지니어링</strong>이 휴리스틱을 억제하고 추론 품질을 높이는 방법 중 하나로 제시됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>모든 테스트는 Opper의 LLM 게이트웨이를 통해 동일한 프롬프트·포맷으로 진행됐으며, 전체 데이터는 JSON 형식으로 공개됨</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://ykss.netlify.app/translation/2026/explicit-resource-management-in-js/?utm_source=blog.update.sh&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">(번역) 자바스크립트의 명시적 리소스 관리</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><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;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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>자바스크립트는 전통적으로 리소스 정리(cleanup)를 개발자의 책임으로 남겨두어 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">try / finally</code> 패턴에 의존했으며, 이는 장황하고 실수하기 쉬운 코드를 만들어 왔음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">명시적 리소스 관리(Explicit Resource Management)</strong> 는 리소스 정리를 언어 수준에서 보장하는 1급(first-class) 기능으로, 관례나 패턴이 아닌 언어 자체의 일부로 제공됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">using</code> 키워드를 사용하면 스코프를 벗어날 때 리소스가 자동으로 정리되며, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">try / finally</code> 없이도 누락 없는 정리가 보장됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>리소스 정리 방식은 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">Symbol.dispose</code>(동기)와 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">Symbol.asyncDispose</code>(비동기) 심볼을 구현하는 방식으로 활성화(opt-in)되며, 각 라이브러리의 정리 방식을 표준화함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>비동기 정리가 필요한 경우 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">await using</code>을 사용하며, 스코프 종료 시 정리 완료까지 대기한 후 다음 코드로 진행함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>여러 리소스를 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">using</code>으로 선언하면 정리가 <strong class="font-bold dark:font-extrabold">역순(스택 방식)</strong> 으로 자동 수행되어, 기존의 수동 정리 순서 관리 부담이 사라짐</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">using</code>이 적합하지 않은 유연한 상황에서는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">DisposableStack</code> / <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">AsyncDisposableStack</code>을 사용하여 동일한 안전성을 확보할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 기능은 서버 사이드에만 국한되지 않고, Web Streams, 옵저버, IndexedDB 트랜잭션 등 <strong class="font-bold dark:font-extrabold">프런트엔드 환경에도 동일하게 적용</strong> 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>2026년 초 기준 Chrome 123+, Firefox 119+, Node.js 20.9+에서 지원되며, <strong class="font-bold dark:font-extrabold">Safari는 미지원이지만 로드맵에 포함</strong>되어 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 기능은 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">try / finally</code>를 완전히 대체하는 것이 아니라 <strong class="font-bold dark:font-extrabold">더 나은 기본값</strong>을 제공하며, 보일러플레이트 감소, 리소스 누수 방지, 코드 가독성 향상에 기여함</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026-02-23 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2026-02-23</id>
        <link href="https://blog.update.sh/weekly-urls/2026-02-23"/>
        <updated>2026-02-22T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://modern-css.com/?utm_source=blog.update.sh&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">Modern CSS Code Snippets | modern.css</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260219034850/https://modern-css.com/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=47025851&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>현대적인 CSS 코드 스니펫과 이를 대체하는 오래된 핵(hack)들을 나란히 비교하여 보여줌</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.smashingmagazine.com/2026/02/designing-streak-system-ux-psychology/?utm_source=blog.update.sh&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">Designing A Streak System: The UX And Psychology Of Streaks — Smashing Magazine</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>스트릭(Streak)은 사용자가 특정 행동을 연속으로 완료한 일수를 나타내며, 단순한 지표를 넘어 행동 심리학과 깊이 연결된 강력한 UX 패턴임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>스트릭의 심리적 기반은 세 가지 원리로 설명됨: <strong class="font-bold dark:font-extrabold">손실 회피(Loss Aversion)</strong>(잃는 고통이 얻는 기쁨보다 2배 강함), <strong class="font-bold dark:font-extrabold">Fogg 행동 모델 B=MAP</strong>(동기·능력·촉발 요소가 동시에 존재해야 행동 발생), <strong class="font-bold dark:font-extrabold">자이가르닉 효과</strong>(미완성 과제가 완료된 것보다 더 오래 기억에 남음)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>스트릭은 습관 형성에 긍정적이지만, 목표보다 스트릭 자체를 지키는 것에 집착하는 <strong class="font-bold dark:font-extrabold">강박(Compulsion)</strong> 으로 변질될 수 있어 윤리적 설계가 중요함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>좋은 스트릭 UX 설계의 핵심 원칙
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">행동을 최대한 작고 쉽게</strong> 만들어 진입 장벽을 낮출 것 (예: 명상 앱의 30초 세션)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">시각적 피드백</strong>을 통해 노력을 실감 나게 표현할 것 (예: GitHub 기여 그래프, 애플 피트니스 링)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">타이밍에 맞는 알림</strong>을 활용하되, 과도한 알림으로 인한 피로감을 주의할 것</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">마일스톤 축하</strong>로 감정적 보상을 제공해 지속 동기를 유지할 것</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">그레이스 메커니즘</strong>(스트릭 프리즈, 유예 시간, 점감 모델 등)으로 불가피한 중단에 유연하게 대처할 것</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>타임존 처리와 치팅 방지를 위해 <strong class="font-bold dark:font-extrabold">서버를 단일 진실의 원천(Single Source of Truth)</strong> 으로 삼고, 사용자 로컬 타임존 기준으로 날짜를 비교하며, 모든 이벤트를 UTC 타임스탬프와 메타데이터로 서버 측에서 검증해야 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>스트릭 시스템의 핵심 로직은 사용자의 행동 이벤트를 서버가 수신 후 로컬 타임존으로 변환하여 날짜를 비교하고, 같은 날·다음 날·하루 이상 공백 등 각 경우에 따라 스트릭을 유지·연장·리셋하는 방식으로 동작함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>서버 다운타임이나 버그로 인한 스트릭 손실에 대비해 <strong class="font-bold dark:font-extrabold">유예 윈도우 제공 및 관리자 수동 복구 기능</strong>을 구축해야 하며, 모든 제품이 스트릭 시스템을 필요로 하는 것은 아님을 설계 전에 반드시 고려해야 함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://taalas.com/the-path-to-ubiquitous-ai/?utm_source=blog.update.sh&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">The path to ubiquitous AI</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://news.ycombinator.com/item?id=47086181&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=26860&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>AI의 광범위한 채택을 가로막는 두 가지 핵심 장벽은 <strong class="font-bold dark:font-extrabold">높은 지연 시간(latency)과 천문학적인 비용</strong>이며, Taalas는 이를 해결하기 위해 설립된 AI 추론 하드웨어 스타트업임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Taalas는 <strong class="font-bold dark:font-extrabold">임의의 AI 모델을 커스텀 실리콘(칩)으로 변환하는 플랫폼</strong>을 개발하며, 새로운 모델 수령 후 단 2개월 만에 하드웨어로 구현 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Taalas의 핵심 기술 철학은 세 가지로 구성됨:
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">완전 특화(Total Specialization)</strong>: 각 모델에 최적화된 실리콘 생산</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">저장과 연산의 통합(Merging Storage and Computation)</strong>: 단일 칩에서 메모리와 컴퓨팅을 DRAM 수준 밀도로 통합하여 기존 한계 극복</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">근본적 단순화(Radical Simplification)</strong>: HBM, 고급 패키징, 액체 냉각 등 복잡한 기술 없이 시스템 총비용을 10배 절감</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>첫 번째 제품인 <strong class="font-bold dark:font-extrabold">HC1(Llama 3.1 8B 하드와이어드 모델)</strong>은 사용자당 초당 17,000 토큰을 처리하며, 이는 현재 최고 수준 대비 <strong class="font-bold dark:font-extrabold">약 10배 빠르고, 구축 비용은 20배 저렴하며, 전력 소비는 10배 적음</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>HC1 기반 Llama는 현재 <strong class="font-bold dark:font-extrabold">챗봇 데모 및 추론 API 서비스</strong>로 제공되고 있으며, 컨텍스트 윈도우 크기 조정 및 LoRA를 통한 파인튜닝을 지원함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>HC1은 커스텀 3비트 기반 데이터 타입을 사용해 일부 품질 저하가 있으나, <strong class="font-bold dark:font-extrabold">2세대 플랫폼(HC2)은 표준 4비트 부동소수점 형식을 채택</strong>하여 이를 개선할 예정임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>향후 제품 로드맵으로는 <strong class="font-bold dark:font-extrabold">HC1 기반 중형 추론 LLM(봄 출시 예정)</strong>과 <strong class="font-bold dark:font-extrabold">HC2 기반 프론티어 LLM(겨울 배포 예정)</strong>이 계획되어 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Taalas는 <strong class="font-bold dark:font-extrabold">24명의 팀원과 3,000만 달러(조달액 2억 달러 이상 중)</strong>만으로 첫 제품을 출시하며, 소규모 정예 팀과 집중된 목표로 대규모 자본 투입 없이 성과를 달성함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Taalas의 궁극적 목표는 <strong class="font-bold dark:font-extrabold">지연 시간과 비용이라는 AI 보급의 핵심 장벽을 제거</strong>하여, 즉각적이고 초저비용의 AI 추론을 개발자들에게 제공하는 것임</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://kciter.so/posts/how-to-design-animation/?utm_source=blog.update.sh&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">애니메이션을 설계하는 방법 | kciter.so</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260222112614/https://kciter.so/posts/how-to-design-animation/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.hada.io/topic?id=26840&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>애니메이션도 <strong class="font-bold dark:font-extrabold">설계</strong>할 수 있으며, 복잡한 움직임은 단순한 상태 변화의 조합으로 분해되고 수학적으로 표현 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>모든 애니메이션은 <strong class="font-bold dark:font-extrabold">그래프</strong>로 표현할 수 있으며, 그래프의 모양이 움직임의 느낌을 결정함 (가로축: 시간 또는 스크롤 등 입력값, 세로축: 변하는 속성값)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">이징(Easing)과 큐빅 베지어 커브</strong>: 선형 보간의 재귀적 적용으로 두 제어점만으로 다양한 가감속 움직임을 표현하며, 이징 선택은 &quot;목적&quot;에 따라 결정됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">지수적 접근</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">value += (target - value) * factor</code> 수식을 매 프레임 적용해 목표값이 실시간으로 바뀌는 상황에서도 자연스러운 감속 곡선을 만들 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">스프링 애니메이션</strong>: 복원력과 감쇠력 기반의 물리 시뮬레이션으로, 고정된 duration 없이 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">stiffness</code>와 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">damping</code> 두 파라미터만으로 탄성 있는 다양한 움직임을 구현함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">물리 시뮬레이션</strong>: 중력·마찰·충돌 등의 규칙만 정의하면 복잡한 움직임이 자동으로 생성되며, 다수 오브젝트 상호작용이나 인터랙티브 요소에 적합함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">삼각함수(sin/cos)</strong>: 진폭·주파수·위상 세 파라미터로 주기적 움직임을 표현하며, 여러 요소에 위상 차이를 주면 파동·플로팅 같은 효과를 만들 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">톱니파</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">(t % period) / period</code>로 0→1 단방향 반복을 구현하며, 펄스·핑 등 &quot;시작→끝→즉시 리셋&quot; 패턴에 활용됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>복잡한 애니메이션 설계 원칙으로 <strong class="font-bold dark:font-extrabold">그래프 구간 분리, 의존성 파악, 파이프라이닝, 상태 전환 설계, 속성 분리, 랜덤성, 양방향성 고려</strong> 등을 제시함</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026-02-16 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2026-02-16</id>
        <link href="https://blog.update.sh/weekly-urls/2026-02-16"/>
        <updated>2026-02-15T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.figma.com/blog/introducing-vectorize?utm_source=blog.update.sh&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">For the Love of Craft: Vectorize Images in Figma Design and Draw | Figma Blog</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260209004113/https://www.figma.com/blog/introducing-vectorize/?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Figma가 새로운 AI 이미지 편집 도구인 <strong class="font-bold dark:font-extrabold">Vectorize</strong>를 출시하여 래스터 이미지를 편집 가능한 벡터로 변환할 수 있게 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Vectorize는 Remove background, erase object, Expand image에 이어 Figma의 AI 이미지 편집 툴킷에 추가된 최신 기능임</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Figma Design과 Figma Draw</strong>에서 사용 가능하며, 한 번의 클릭으로 이미지를 캔버스에 가져와 편집 가능한 벡터로 변환함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>주요 활용 사례 1: <strong class="font-bold dark:font-extrabold">래스터 드로잉을 벡터로 변환</strong>하여 스케치를 유연한 벡터 일러스트레이션으로 만들고, 색상 변수를 사용해 브랜드 일관성 유지 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>주요 활용 사례 2: <strong class="font-bold dark:font-extrabold">손글씨 레터링을 편집 가능하게 변환</strong>하여 캘리그래피나 종이 스케치를 수정 가능한 로고로 만들고, 배경 제거 및 개별 문자 조정 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>주요 활용 사례 3: <strong class="font-bold dark:font-extrabold">재사용 가능한 텍스처 오버레이 생성</strong>으로 그레인이나 노이즈 텍스처를 벡터로 변환하여 UI나 랜딩 페이지에 깊이감 추가</li>
<li class="ms-6 text-pretty" data-v-09555c0e>실제 세계의 영감을 워크플로우에 쉽게 통합하여 불필요한 우회 없이 더 표현력 있는 디자인 작업 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Professional, Organization, Enterprise 플랜의 Full-seat 사용자</strong>에게 제공되며, AI 기능이 활성화되어야 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>AI 작업은 크레딧을 사용하며, 상세한 사용 가이드와 모범 사례가 제공됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>디자이너가 도구와 씨름하는 시간을 줄이고 창작에 더 집중할 수 있도록 craft, capability, style을 강화하는 것이 목표</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.theverge.com/tech/875309/discord-age-verification-global-roll-out?utm_source=blog.update.sh&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">Discord will require a face scan or ID for full access next month</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><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;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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46945663&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=26550&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Discord는 3월부터 전 세계적으로 연령 인증 시스템을 도입하며, <strong class="font-bold dark:font-extrabold">모든 계정을 기본적으로 &quot;청소년 적합 환경&quot;으로 설정</strong>함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>성인 인증을 받지 않은 사용자는 <strong class="font-bold dark:font-extrabold">연령 제한 서버/채널 접근 불가, 스테이지 채널 발언 제한, 민감한 콘텐츠 필터링 적용</strong> 등의 제약을 받게 됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Discord는 <strong class="font-bold dark:font-extrabold">계정 정보 기반 연령 추론 모델</strong>을 사용하며, 계정 보유 기간, 디바이스 및 활동 데이터, 커뮤니티 패턴 등을 활용 (개인 메시지나 메시지 내용은 사용하지 않음)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>연령 추론으로 확인되지 않은 경우, 사용자는 <strong class="font-bold dark:font-extrabold">AI 기반 얼굴 연령 추정(비디오 셀카)</strong> 또는 <strong class="font-bold dark:font-extrabold">신분증 제출</strong>을 통해 성인 인증 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>얼굴 연령 추정은 <strong class="font-bold dark:font-extrabold">사용자 기기를 벗어나지 않으며</strong>, 신분증 이미지는 제3자 업체를 통해 확인 후 <strong class="font-bold dark:font-extrabold">대부분 즉시 삭제</strong>됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Discord는 작년 영국과 호주에서 연령 인증을 시범 도입했으며, 일부 사용자가 <em class="italic">Death Stranding</em> 포토 모드로 우회했으나 <strong class="font-bold dark:font-extrabold">1주일 만에 수정</strong>함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>2024년 10월 Discord의 제3자 업체가 <strong class="font-bold dark:font-extrabold">데이터 유출 사고</strong>를 겪어 사용자 연령 인증 데이터(정부 발급 ID 이미지 포함)가 노출됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>데이터 유출 후 Discord는 해당 업체와의 협력을 즉시 중단하고 <strong class="font-bold dark:font-extrabold">다른 제3자 업체로 전환</strong>했으며, 생체 인식이나 얼굴 인식이 아닌 <strong class="font-bold dark:font-extrabold">얼굴 추정만 수행</strong>한다고 강조</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Badalich는 &quot;<strong class="font-bold dark:font-extrabold">대다수 사용자는 경험의 변화를 느끼지 못할 것</strong>&quot;이라고 설명하며, 주로 성인 콘텐츠에 영향을 미칠 것이라고 언급</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Discord는 연령 인증 도입으로 인한 <strong class="font-bold dark:font-extrabold">사용자 이탈 가능성을 인지</strong>하고 있으며, 이를 계획에 반영하고 다른 방법으로 사용자를 다시 유치할 방안을 모색 중</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://kroki.io/?utm_source=blog.update.sh&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">Creates diagrams from textual descriptions!</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260210041020/https://kroki.io/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=19486801&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Kroki는 <strong class="font-bold dark:font-extrabold">다양한 다이어그램 도구를 위한 통합 API</strong>를 제공하는 서비스로, BlockDiag, BPMN, Mermaid, PlantUML, GraphViz, Excalidraw 등 <strong class="font-bold dark:font-extrabold">20개 이상의 다이어그램 타입</strong>을 지원함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">무료 서비스</strong>(Exoscale 후원으로 서버 제공)와 <strong class="font-bold dark:font-extrabold">Self-Managed 인스턴스</strong>(자체 인프라 설치) 두 가지 형태로 제공됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>HTTP API를 통해 텍스트 기반 다이어그램 설명을 이미지로 변환하며, <strong class="font-bold dark:font-extrabold">GET과 POST 요청 모두 지원</strong>함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>GET 요청 시에는 다이어그램을 <strong class="font-bold dark:font-extrabold">deflate + base64로 인코딩</strong>하여 URL에 포함해야 하며, Python 원라이너로 쉽게 인코딩/디코딩 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>POST 요청 시에는 <strong class="font-bold dark:font-extrabold">인코딩 없이 평문(plain text) 또는 JSON 형식</strong>으로 다이어그램을 전송할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>출력 포맷은 다이어그램 타입에 따라 <strong class="font-bold dark:font-extrabold">png, svg, jpeg, txt, base64</strong> 등을 지원하며, 타입별 지원 형식은 상이함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">Content-Type</code> 및 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">Accept</code> 헤더를 사용하거나 URL에 출력 형식을 명시하여 다양한 방식으로 API 호출 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">MIT 라이선스 기반의 오픈 소스 프로젝트</strong>로, 누구나 최소한의 리소스로 서비스를 호스팅할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Yuzu tech가 개발 및 유지보수하며 Exoscale이 지원하고 있으나, <strong class="font-bold dark:font-extrabold">인프라 비용 충당을 위해 추가 스폰서를 모집</strong> 중임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>사용자 피드백을 위한 설문조사를 진행 중이며, 지원하지 않는 다이어그램 도구에 대한 제안을 환영함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://blog.maximeheckel.com/posts/shades-of-halftone/?utm_source=blog.update.sh&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">Shades of Halftone - The Blog of Maxime Heckel</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260212041600/https://blog.maximeheckel.com/posts/shades-of-halftone/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46959531&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>하프톤(halftone)은 <strong class="font-bold dark:font-extrabold">서로 다른 크기의 점들을 격자로 배치하여 색상 그라데이션의 착시 효과</strong>를 만드는 클래식한 패턴 기법으로, 원래는 제한된 잉크 색상으로 이미지를 인쇄하기 위한 기술이었으나 현재는 다양한 미디어와 웹에서 텍스처나 그레인 효과를 주는 예술적 도구로 활용됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>하프톤은 본질적으로 <strong class="font-bold dark:font-extrabold">광학적 착시 효과</strong>로, 높은 주파수의 점 격자를 제공하여 연속적/부드러운 톤의 인상을 생성함. 점의 반경이 <strong class="font-bold dark:font-extrabold">눈의 공간 해상도보다 작아지면</strong> 뇌가 패턴의 공간 평균을 수행하여 개별 점 대신 <strong class="font-bold dark:font-extrabold">&#39;잉크&#39;와 &#39;빈 공간&#39;의 비율</strong>을 부드러운 톤으로 인식함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">GLSL을 사용한 기본 하프톤 구현</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>원/점 렌더링: UV 좌표의 중심점까지의 거리 필드(distance field)와 마스크(threshold) 활용</li>
<li class="ms-6 text-pretty" data-v-09555c0e>격자 생성: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">fract()</code> 함수로 UV 좌표를 타일링하여 각 셀이 자체 원을 그리도록 구현</li>
<li class="ms-6 text-pretty" data-v-09555c0e>픽셀화(pixelation)와 루마(luma) 기반 점 크기 조절을 통해 실제 하프톤 필터 효과 적용</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">하프톤 변형들</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Grid offset</strong>: 점들을 엇갈리게 배치하여 더 높은 밀도와 적은 여백 확보</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">&quot;Dot adjacent&quot; 패턴</strong>: 원뿐만 아니라 정사각형, 링(ring) 등 다양한 형태로 확장</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Dots and squares 조합</strong>: 어두운 픽셀은 흰 점이 있는 정사각형, 밝은 픽셀은 표준 점으로 렌더링하여 원본 텍스처를 더 잘 보존</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">모아레 패턴(Moiré Pattern)</strong>은 두 개의 거의 동일한 반복 패턴이 겹쳐질 때 발생하는 간섭 현상으로, 멀티채널 하프톤 구현 시 불가피하게 발생함. 각 레이어에 <strong class="font-bold dark:font-extrabold">특정 회전 각도를 적용</strong>하여 간섭을 최소화할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">디지털 vs 물리적 색상 블렌딩</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">RGB(가산 혼합)</strong>: 검은 디스플레이에서 빛의 추가로 작동하며, 색상 채널이 더해져 흰색으로 수렴 (<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">ColorOut = (Ir, 0, 0) + (0, Ig, 0) + (0, 0, Ib)</code>)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">CMYK(감산 혼합)</strong>: 흰 종이에서 빛의 흡수로 작동하며, 잉크가 빛을 필터링하여 검은색으로 수렴 (<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">ColorOut = White * (1.0 - C) * (1.0 - M) * (1.0 - Y)</code>)</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">CMYK 하프톤 구현</strong>: RGB를 CMYK로 변환한 후 각 채널(Cyan 15°, Magenta 75°, Yellow 0°, Key 45°)마다 특정 각도로 회전된 점 격자를 생성하고, 각 점의 크기를 해당 채널의 강도에 맞춰 조절하여 모아레 아티팩트를 최소화하면서 인쇄물과 유사한 색상 출력을 구현</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">격자 제약 깨기 - Cell wall 문제 해결</strong>: 현재 픽셀 주변의 <strong class="font-bold dark:font-extrabold">3x3 이웃 셀을 샘플링</strong>하여 점들이 셀 경계를 넘어 확장되거나 겹치도록 허용함으로써 클리핑 제거. 이를 통해 워터컬러 같은 효과나 잉크 방울 같은 유기적인 &quot;gooey&quot; 하프톤 구현 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">애니메이션 하프톤 - Displaced dots</strong>: Frame Buffer Objects(FBO)와 핑퐁 렌더링으로 마우스 커서의 궤적을 텍스처로 렌더링하고, 이를 하프톤 셰이더에 전달하여 커서의 움직임 방향과 강도에 따라 점/링의 위치를 동적으로 변위시켜 생동감 있는 효과 생성</li>
<li class="ms-6 text-pretty" data-v-09555c0e>간단한 원 형태에서 시작하여 다양하고 흥미로운 효과 세트로 빠르게 확장 가능하며, 모듈식 셰이더 코드를 유지하여 간단한 효과부터 복잡한 효과까지 동일한 함수를 재사용할 수 있음. 이 기법은 향후 <strong class="font-bold dark:font-extrabold">실시간 셰이더 기반 페인팅</strong>(인상주의, 점묘법, 수채화 스타일 에뮬레이션)에도 활용 가능한 기초를 제공함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://github.com/PeonPing/peon-ping?utm_source=blog.update.sh&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">GitHub - PeonPing/peon-ping: Warcraft III Peon voice notifications (+ more!) for Claude Code, Codex, and other IDEs. Stop babysitting your terminal.</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260213102803/https://github.com/PeonPing/peon-ping?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46999852&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">peon-ping</strong>은 AI 코딩 에이전트(Claude Code, Codex, Cursor, OpenCode, Kiro, Google Antigravity 등)가 작업을 완료하거나 사용자 입력이 필요할 때 게임 캐릭터 음성으로 알림을 제공하는 도구</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Warcraft, StarCraft, Portal, Zelda, Dota 2 등 43개 이상의 게임 캐릭터 음성 팩을 지원하며, 기본 설치 시 10개의 큐레이션된 영어 팩 포함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">CESP(Coding Event Sound Pack Specification)</strong> 오픈 표준을 구현하여 세션 시작, 작업 완료, 권한 요청, 빠른 연속 프롬프트 등의 이벤트를 표준화된 카테고리로 매핑</li>
<li class="ms-6 text-pretty" data-v-09555c0e>macOS와 Linux에서 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">brew install</code> 또는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">curl</code> 스크립트로 설치 가능하며, 전역 또는 프로젝트 로컬 설치 모드 지원</li>
<li class="ms-6 text-pretty" data-v-09555c0e>CLI 명령어 제공
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">peon toggle/pause/resume</code>: 음성 알림 일시 정지/재개</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">peon packs use/next/list</code>: 음성 팩 전환 및 목록 조회</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">peon notifications on/off</code>: 데스크톱 알림 토글</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">peon preview</code>: 특정 카테고리 또는 전체 사운드 미리듣기</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">원격 작업 지원</strong>: SSH 세션, devcontainer, Codespaces에서 자동 감지 후 로컬 머신의 릴레이 서버(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">peon relay --daemon</code>)를 통해 오디오와 알림을 전송</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">모바일 알림</strong>: ntfy, Pushover, Telegram을 통해 휴대폰 푸시 알림 지원 (<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">peon mobile ntfy &lt;topic&gt;</code>)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>설정 파일(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">config.json</code>)을 통해 볼륨, 카테고리별 활성화, 팩 로테이션, 짧은 작업 무음 기간 등 세부 조정 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>터미널 탭 제목 업데이트(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">● project: done</code>), 데스크톱 알림(터미널이 포커스되지 않을 때만), 반복 방지 로직, 스팸 감지(10초 내 3회 이상 프롬프트 시 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">user.spam</code> 음성 재생) 등 부가 기능 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Claude Code에서 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">/peon-ping-toggle</code> 슬래시 명령 또는 자연어로 설정 변경 가능(&quot;enable round-robin pack rotation&quot;, &quot;set volume to 0.3&quot; 등)</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026-02-09 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2026-02-09</id>
        <link href="https://blog.update.sh/weekly-urls/2026-02-09"/>
        <updated>2026-02-08T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://notepad-plus-plus.org/news/hijacked-incident-info-update/?utm_source=blog.update.sh&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">Notepad++ Hijacked by State-Sponsored Hackers</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260202131049/https://notepad-plus-plus.org/news/hijacked-incident-info-update/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46851548&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=26348&amp;utm_source=blog.update.sh&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">GeekNews</a> | <a href="https://lobste.rs/s/pt7myu?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Notepad++ 공식 웹사이트가 <strong class="font-bold dark:font-extrabold">국가 지원 해커(중국 국가 지원 그룹으로 추정)에 의해 하이재킹</strong>당하는 보안 사고 발생</li>
<li class="ms-6 text-pretty" data-v-09555c0e>공격자들은 <strong class="font-bold dark:font-extrabold">호스팅 제공업체의 인프라 수준에서 서버를 침해</strong>하여 특정 사용자의 업데이트 트래픽을 가로채고 악성 업데이트 서버로 리디렉션함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>공격 기간은 <strong class="font-bold dark:font-extrabold">2025년 6월부터 2025년 12월까지</strong> 지속되었으며, 공격자들은 Notepad++를 특정 타겟으로 선정하여 선택적으로 공격함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">2025년 9월 2일</strong> 서버 유지보수(커널 및 펌웨어 업데이트) 이후 공격자들은 서버 접근 권한을 상실했으나, <strong class="font-bold dark:font-extrabold">12월 2일까지 내부 서비스 자격 증명을 유지</strong>하여 트래픽 리디렉션을 계속할 수 있었음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>호스팅 제공업체는 <strong class="font-bold dark:font-extrabold">2025년 12월 2일까지 모든 취약점 수정, 자격 증명 교체, 보안 강화 완료</strong>하여 추가 공격 활동을 성공적으로 차단함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>공격자들은 <strong class="font-bold dark:font-extrabold">구버전 Notepad++의 불충분한 업데이트 검증 메커니즘 취약점을 악용</strong>하려는 목적으로 notepad-plus-plus.org 도메인을 특정 타겟팅함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>보안 강화 조치로 <strong class="font-bold dark:font-extrabold">v8.8.9에서 WinGup(업데이터) 개선</strong>: 다운로드된 설치 프로그램의 인증서 및 서명 검증 추가</li>
<li class="ms-6 text-pretty" data-v-09555c0e>업데이트 서버가 반환하는 <strong class="font-bold dark:font-extrabold">XML에 서명(XMLDSig) 추가</strong>, 약 한 달 후 출시 예정인 <strong class="font-bold dark:font-extrabold">v8.9.2부터 인증서 및 서명 검증 강제 적용</strong> 예정</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Notepad++ 웹사이트는 <strong class="font-bold dark:font-extrabold">더 강력한 보안 관행을 갖춘 새로운 호스팅 제공업체로 이전 완료</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>영향받은 사용자들에게 <strong class="font-bold dark:font-extrabold">v8.9.1을 수동으로 다운로드하여 설치할 것을 권장</strong>하며, 구체적인 IoC(침해 지표)는 확보하지 못함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://github.com/daumPostcode/QnA/issues/1498?utm_source=blog.update.sh&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">📢 우편번호 서비스 도메인 및 API 네임스페이스 변경 안내 · Issue #1498 · daumPostcode/QnA</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://news.hada.io/topic?id=26451&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>우편번호 서비스의 <strong class="font-bold dark:font-extrabold">도메인 및 JavaScript API 네임스페이스 변경</strong>에 대한 사전 안내 공지</li>
<li class="ms-6 text-pretty" data-v-09555c0e>공식 가이드 페이지는 현재 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">postcode.map.daum.net</code>에서 확인 가능하며, <strong class="font-bold dark:font-extrabold">2026년 3월 10일(화)</strong> 이후 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">postcode.map.kakao.com</code>으로 이전 예정</li>
<li class="ms-6 text-pretty" data-v-09555c0e>CDN 도메인이 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">t1.daumcdn.net</code>에서 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">t1.kakaocdn.net</code>으로 변경 완료되었으며, 기존 도메인도 당분간 사용 가능하나 <strong class="font-bold dark:font-extrabold">신규 도메인 사용 권장</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">2026년 3월 10일(화)</strong> 서비스 도메인이 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">postcode.map.daum.net</code>에서 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">postcode.map.kakao.com</code>으로 변경되며, 변경 후 일정 기간 병행 운영 예정</li>
<li class="ms-6 text-pretty" data-v-09555c0e>JavaScript API 생성자 네임스페이스가 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">daum.Postcode</code>에서 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">kakao.Postcode</code>로 변경됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">daum.Postcode</code>는 강제 변경되지 않으며 <strong class="font-bold dark:font-extrabold">오랜 기간 호환성 유지 목표</strong>로 지원하지만, 신규 개발 시 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">kakao.Postcode</code> 사용 권장</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">서비스 종료 예정 도메인</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">dmaps.daum.net</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">ssl.daumcdn.net</code>은 <strong class="font-bold dark:font-extrabold">2026년 4~5월 도메인 최종 전환 시점에 종료</strong> 예정</li>
<li class="ms-6 text-pretty" data-v-09555c0e>종료 예정 도메인 사용 중인 경우 <strong class="font-bold dark:font-extrabold">반드시 신규 Kakao 도메인 및 API로 이전</strong> 필요</li>
<li class="ms-6 text-pretty" data-v-09555c0e>기존 도메인 종료에 대한 <strong class="font-bold dark:font-extrabold">상세 일정은 3월 10일 전후 재공지</strong> 예정</li>
<li class="ms-6 text-pretty" data-v-09555c0e>서비스 중단 방지를 위해 <strong class="font-bold dark:font-extrabold">사전 점검 및 점진적 전환 권장</strong></li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://velog.io/@typo/4-css-features-every-front-end-developer-should-know-in-2026?utm_source=blog.update.sh&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">[번역] 2026년 프런트엔드 개발자라면 알아야 할 4가지 CSS 기능</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>2025년에 출시된 CSS 기능 중 프런트엔드 개발자가 반드시 알아야 할 4가지 핵심 기능을 소개</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold"><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">sibling-index()</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">sibling-count()</code></strong>: 크롬과 사파리에서 안정적으로 사용 가능하며, 형제 요소 간 상대적 위치를 값으로 활용할 수 있음. <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">transition-delay</code>와 결합해 순차적 애니메이션 효과를 쉽게 구현 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">@starting-style</code>과 함께 사용하면 요소가 처음 등장할 때 시간차 애니메이션 효과를 간단하게 적용할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold"><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">scroll-state()</code></strong>: 스크롤러의 네 가지 상태(stuck, snapped, scrollable, scrolled)를 쿼리할 수 있으며, 스크롤 기반 애니메이션에 적합한 점진적 향상 기능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">container-type: scroll-state</code> 지정 후 자식 요소에서 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">@container scroll-state()</code>로 상태 쿼리 가능 (요소는 자기 자신은 쿼리할 수 없지만 가상 요소는 가능)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>stuck 상태로 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">position: sticky</code> 요소가 고정되는 시점 감지, snapped 상태로 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">scroll-snap</code> 정렬 활성화 시점 파악, scrollable로 콘텐츠 오버플로우 방향 감지, scrolled로 스크롤 방향에 따른 UI 제어 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold"><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">text-box</code></strong>: 텍스트 박스의 위아래 줄 간격을 깔끔하게 제거하여 글리프 위아래의 안전한 여백을 없애고, 베이스라인이나 x-height에 픽셀 단위로 정확한 정렬 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">text-box: trim-both cap alphabetic</code> 한 줄로 대문자 높이 위 여백과 알파벳 기준선 아래 여백을 제거할 수 있어, 타이포그래피와 그리드 정렬에 최적화됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">고급 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">attr()</code></strong>: 타입 안정적이며 HTML 속성을 CSS에서 직접 사용 가능. 타입 체크와 기본값 포함하여 색상, 숫자 등 다양한 타입 전달 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">type()</code> 함수로 속성 값을 허용된 키워드 목록과 비교 검증하며, 유효하지 않은 값은 자동으로 안전한 기본값으로 대체되어 HTML과 CSS 간 강력한 연결 고리 생성</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026-02-02 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2026-02-02</id>
        <link href="https://blog.update.sh/weekly-urls/2026-02-02"/>
        <updated>2026-02-01T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://f1bonacc1.github.io/process-compose/?utm_source=blog.update.sh&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">Process Compose</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260113205343/https://f1bonacc1.github.io/process-compose/?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Process Compose는 컨테이너화되지 않은 애플리케이션을 관리하기 위한 간단하고 유연한 스케줄러 및 오케스트레이터임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Go 언어로 작성된 단일 바이너리 파일로, 도커 파일, 볼륨 정의, 네트워크, 도커 레지스트리 등의 복잡한 설정 없이 사용 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">process-compose.yaml</code> 파일에 간단한 YAML 스키마로 워크플로우를 정의하고 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">process-compose up</code> 명령으로 실행</li>
<li class="ms-6 text-pretty" data-v-09555c0e>주요 프로세스 관리 기능: <strong class="font-bold dark:font-extrabold">병렬/직렬 실행, 의존성 및 시작 순서 관리, 복구 정책, 수동 재시작</strong> 지원</li>
<li class="ms-6 text-pretty" data-v-09555c0e>다양한 설정 옵션: bash/zsh 스타일 프로세스 인자, 환경 변수(envsubst), 프로세스별/전역 로그, 헬스 체크(liveness/readiness)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">TUI(Terminal User Interface) 또는 CLI 모드</strong> 제공, 포그라운드 프로세스 및 인터랙티브 프로세스 실행 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">REST API(OpenAPI/Swagger)</strong> 제공, 서버 및 클라이언트 기능 모두 지원</li>
<li class="ms-6 text-pretty" data-v-09555c0e>고급 기능: 설정 파일 병합, 네임스페이스, 프로세스 다중 복제본 실행, 테마 지원, 즉석 설정 편집</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">스케줄링 기능</strong>(cron 및 interval 기반), 레시피 관리, 의존성 그래프 시각화(CLI, TUI, API) 지원</li>
<li class="ms-6 text-pretty" data-v-09555c0e>로그 캐싱, 설정 가능한 단축키, 포킹 프로세스(서비스/데몬) 등 편의 기능 포함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://simonwillison.net/2026/Jan/23/fastrender/?utm_source=blog.update.sh&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">Wilson Lin on FastRender: a browser built by thousands of parallel agents</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260126024743/https://simonwillison.net/2026/Jan/23/fastrender/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46738853&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Wilson Lin이 Cursor의 <strong class="font-bold dark:font-extrabold">FastRender 프로젝트</strong>를 소개: 수천 개의 병렬 에이전트를 사용해 <strong class="font-bold dark:font-extrabold">처음부터 웹 브라우저를 구축</strong>한 연구 프로젝트</li>
<li class="ms-6 text-pretty" data-v-09555c0e>FastRender는 Wilson의 개인 사이드 프로젝트로 시작되어 Cursor의 공식 연구 프로젝트로 발전했으며, <strong class="font-bold dark:font-extrabold">프로덕션 브라우저가 아닌 멀티 에이전트 협업 연구가 목표</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">최대 2,000개의 에이전트가 동시에 실행</strong>되어 시간당 수천 개의 커밋을 생성했으며, 프로젝트는 총 약 30,000개의 커밋을 기록함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>각 대형 머신에서 약 300개의 에이전트를 동시 실행하는 인프라 구조를 사용했으며, 에이전트들이 대부분 &quot;생각하는&quot; 시간을 보내기 때문에 효율적으로 작동함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">계층적 에이전트 구조</strong>: 계획(planning) 에이전트가 작업을 나누고 워커(worker) 에이전트가 실행하며, 작업 범위를 효과적으로 분할해 <strong class="font-bold dark:font-extrabold">병합 충돌이 거의 발생하지 않음</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>GPT-5.1/5.2 일반 모델이 코딩 전문 모델(GPT-5.1-Codex)보다 더 나은 성능을 보였으며, 이는 자율적 작동 및 하네스 내 상호작용 등 <strong class="font-bold dark:font-extrabold">더 광범위한 지시사항 처리</strong>에 유리했기 때문</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">피드백 루프가 핵심</strong>: 브라우저 명세(spec) 문서를 git submodule로 포함, 스크린샷을 통한 시각적 검증, Rust 컴파일러의 엄격한 검증 등을 활용</li>
<li class="ms-6 text-pretty" data-v-09555c0e>에이전트들이 대부분의 <strong class="font-bold dark:font-extrabold">의존성(dependency)을 스스로 선택</strong>했으며, 일부는 QuickJS처럼 다른 에이전트 작업 완료를 기다리지 않고 스스로 차단을 해제하기 위해 추가함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">처리량(throughput) 최적화를 위해 작은 오류를 일시적으로 허용</strong>: 모든 커밋이 완벽하게 컴파일되도록 하면 동기화 병목이 발생하므로, 작은 오류가 몇 커밋 후 빠르게 수정되도록 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>2026년 초 <strong class="font-bold dark:font-extrabold">단일 엔지니어가 에이전트 스웜을 활용해 달성할 수 있는 극단적 사례</strong>를 보여주며, 몇 주 만에 백만 줄 이상의 Rust 코드로 실제 웹 페이지를 렌더링할 수 있는 브라우저를 구현함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs?utm_source=blog.update.sh&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">How to Favicon in 2026: Three files that fit most needs—Martian Chronicles, Evil Martians’ team blog</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><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;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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>2026년 현재, 웹사이트에 필요한 파비콘은 <strong class="font-bold dark:font-extrabold">단 5개의 이미지 파일과 1개의 JSON 파일</strong>만 있으면 충분함 (기존의 20개 이상 PNG 파일 세트는 불필요)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">최소 파비콘 세트 구성</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">favicon.ico</code> (32×32, 레거시 브라우저용), <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">icon.svg</code> (라이트/다크 테마 지원, 현대 브라우저용), <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">apple-touch-icon.png</code> (180×180, Apple 기기용), PWA용 웹 매니페스트에 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">icon-192.png</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">icon-512.png</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">icon-mask.png</code> (512×512, maskable) 포함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">SVG 파비콘의 장점</strong>: 벡터 포맷으로 다양한 크기에 대응 가능하며, CSS 미디어 쿼리 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">@media (prefers-color-scheme: dark)</code>를 활용해 하나의 파일로 라이트/다크 테마 모두 지원 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">성능 우려 해소</strong>: 브라우저가 파비콘을 백그라운드에서 다운로드하므로 웹사이트 성능에 영향 없음, SVG는 로고 같은 이미지에서 PNG보다 파일 크기가 작을 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">더 이상 사용하지 않는 파비콘 포맷</strong>: Windows Tile Icon (최신 Edge에서 불필요), Safari Pinned Icon (Safari 12 이후 일반 파비콘 사용), <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">rel=&quot;shortcut&quot;</code> (유효하지 않은 링크 관계), Opera Coast (2017년 단종)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">파비콘 생성 6단계 프로세스</strong>: ① SVG 준비 및 테마 지원 추가 → ② ICO 파일 생성 (GIMP 또는 ImageMagick 사용) → ③ PNG 이미지 생성 (512×512, 192×192, 180×180 등) → ④ SVGO와 Squoosh로 최적화 → ⑤ HTML에 링크 추가 → ⑥ 웹 매니페스트 생성</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">maskable 아이콘 요구사항</strong>: Android 런처의 다양한 디자인에 대응하기 위해 큰 여백(safe zone: 409×409 원) 필요, maskable.app에서 확인 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Webpack 통합 팁</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">HtmlWebpackPlugin</code>으로 캐시 버스터(파일명에 해시 추가) 생성, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">copy-webpack-plugin</code>으로 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">favicon.ico</code> 복사, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">webpack-pwa-manifest</code> 플러그인으로 매니페스트 자동 생성</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">보너스 팁</strong>: 프로덕션과 스테이징 환경을 구분하기 위해 색상을 반전시킨 별도의 개발용 파비콘(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">favicon-dev.ico</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">icon-dev.svg</code>)을 만들어 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">NODE_ENV</code>에 따라 조건부로 사용</li>
<li class="ms-6 text-pretty" data-v-09555c0e>최신 웹 표준을 활용하면 파비콘 생성 작업이 매우 간단해지며, 파비콘 생성기 도구의 광기에서 벗어나 최소한의 효율적인 세트로 모든 현대 브라우저와 기기를 지원할 수 있음</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026-01-26 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2026-01-26</id>
        <link href="https://blog.update.sh/weekly-urls/2026-01-26"/>
        <updated>2026-01-25T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://labs.ramp.com/rct?utm_source=blog.update.sh&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">AI Plays Rollercoaster Tycoon</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260119131225/https://labs.ramp.com/rct?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46588972&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=25951&amp;utm_source=blog.update.sh&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">GeekNews</a> | <a href="https://lobste.rs/s/wjbvwq?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
제목: AI가 롤러코스터 타이쿤을 플레이하다
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Claude Code가 RollerCoaster Tycoon 2(OpenRCT2를 통해)에 통합되어 AI 공원 관리자 역할을 수행함으로써, 복잡한 환경에서 광범위한 범위의 에이전트가 가진 잠재력을 입증했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>RollerCoaster Tycoon은 고객 중심의 피드백 루프와 관리 인터페이스를 특징으로 하여 B2B SaaS 운영과 강한 유사성을 보이기 때문에 선택되었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>통합 작업에는 kubectl을 모방한 &#39;rctctl&#39;이라는 명령줄 인터페이스(CLI)를 생성하여 Claude가 모든 게임 기능과 상호작용할 수 있도록 하는 것이 포함되었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Claude는 정보 수집, 공원 지표 분석, 가격 조정, 직원 고용, 간단한 편의시설 배치와 같은 직접적인 명령 실행에 탁월합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Claude는 경로 설정, 놀이기구 입구 연결, 롤러코스터와 같은 대형 구조물 배치 또는 수직성 관리와 같은 공간 추론 작업에 어려움을 겪습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>AI 에이전트의 성공은 환경 인터페이스의 가독성과 강도에 크게 의존하며, 텍스트 기반 표현은 공간 작업에 있어 어려운 것으로 입증되었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>통합 구축에는 AI 지원을 통한 &#39;바이브 코딩(vibe coding)&#39;이 포함되었으며, 이는 개발 가속화에 있어 LLM의 잠재력을 강조하는 동시에 신중한 계획과 반복의 필요성도 보여줍니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>AI 에이전트를 활용한 개발은 경영 시뮬레이션 게임처럼 느껴질 수 있으며, 여러 AI 인스턴스와 그 출력물을 관리하기 위해 상당한 정신적 대역폭이 필요합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>긴밀한 피드백 루프는 AI 개발에 매우 중요하며, 에이전트가 자체 QA를 수행하고 구현을 검증할 수 있게 해주는데, 이는 이 프로젝트에서 병목 현상이었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 프로젝트는 AI 에이전트가 순수한 지능이라기보다는 성실함을 자동화하는 도구로 보는 것이 가장 적절하다는 생각을 강화하며, 특히 운영상의 과제에 있어서 그러합니다.</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://lucumr.pocoo.org/2026/1/18/agent-psychosis/?utm_source=blog.update.sh&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">Agent Psychosis: Are We Going Insane?</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260119011347/https://lucumr.pocoo.org/2026/1/18/agent-psychosis/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46666777&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://lobste.rs/s/0pxvyd?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>AI 코딩 에이전트가 주는 도파민 중독과 과의존 문제를 다루며, 사용자들이 AI와 유사-협업 관계를 형성하고 건강하지 못한 행동을 강화하는 현상을 비판함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Philip Pullman의 &quot;His Dark Materials&quot;에 나오는 데몬(dæmon)에 비유하여, 사람들이 AI 에이전트와 분리 불가능한 관계를 형성하고 정체성의 일부로 여기게 되는 현상을 설명함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>AI 생성 PR과 이슈의 품질 저하가 심각한 문제로, 기여자는 1분 만에 생성하지만 메인테이너는 검토에 1시간 이상 소요되는 비대칭성이 발생함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>사람들이 AI와 상호작용하는 방식(불명확한 지시, 이상한 역할극, 욕설, 의례적 행동 등)이 결과물의 질에 큰 영향을 미침</li>
<li class="ms-6 text-pretty" data-v-09555c0e>토큰 소비 문제도 심각하며, 잘 준비된 세션(예: MiniJinja 포팅에 220만 토큰)과 달리 무분별한 에이전트 실행은 엄청난 토큰을 낭비하고, 현재의 저렴한 가격은 보조금 지원으로 지속 불가능할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Steve Yegge의 Gas Town과 Beads를 극단적 사례로 제시: Beads는 24만 줄의 코드로 마크다운 파일을 관리하며, 품질 관리 없이 에이전트를 병렬 실행하는 &quot;슬롭 루프(slop loop)&quot;의 전형적 예시</li>
<li class="ms-6 text-pretty" data-v-09555c0e>AI 빌더 커뮤니티에서 사람들이 비판적 사고 없이 서로의 창작물을 과대평가하며, 내부자들만 이해하는 은어와 문화를 형성하는 집단 행동이 관찰됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>일부 프로젝트는 이제 실제 코드 대신 프롬프트 제출을 선호하거나, 기여자를 완전히 검증하기 전까지 인간 기여를 받지 않는 등 극단적 조치를 취하고 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>저자는 AI 에이전트가 생산성 도구로 놀라운 잠재력을 가지고 있지만, 비판적 사고 없이 완전히 의존하면 대규모 슬롭 머신이 된다는 양면성을 강조함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>메인테이너들이 AI 슬롭을 거부할 때 기여자들은 진심으로 혼란스러워하며(&quot;왜 부정적이세요? 도우려고 했는데&quot;), 이는 그들의 AI &quot;데몬&quot;이 좋다고 말했기 때문임</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://ghuntley.com/ralph/?utm_source=blog.update.sh&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">Ralph Wiggum as a &quot;software engineer&quot;</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260119131525/https://ghuntley.com/ralph/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=44565028&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Ralph은 AI 코딩 에이전트를 무한 루프로 실행하는 기법으로, 가장 순수한 형태는 Bash 루프 (<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">while :; do cat PROMPT.md | claude-code ; done</code>)임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Ralph은 <strong class="font-bold dark:font-extrabold">대부분의 기업에서 그린필드 프로젝트의 아웃소싱을 대체할 수 있는 잠재력</strong>을 가지고 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Ralph의 핵심 특징: <strong class="font-bold dark:font-extrabold">불확정적인 세계에서 결정론적으로 나쁜 방식</strong>으로 작동하며, 이러한 결함은 다양한 프롬프트 스타일을 통해 식별하고 해결 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>도구 호출 및 사용량에 제한이 없는 모든 도구로 Ralph 기법을 사용할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>현재 Ralph는 <strong class="font-bold dark:font-extrabold">전혀 새로운 프로덕션급 난해한 프로그래밍 언어(CURSED)를 구축 중</strong>이며, LLM 훈련 데이터에 없는 언어임에도 불구하고 해당 언어로 프로그래밍까지 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Ralph로 소프트웨어를 구축하려면 <strong class="font-bold dark:font-extrabold">큰 믿음과 최종 일관성(eventual consistency)에 대한 신념</strong>이 필요함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Ralph가 잘못된 방향으로 갈 때마다 도구를 탓하지 않고, 프롬프트를 조정(튜닝)하여 개선하는 방식으로 작동함 (마치 기타 튜닝처럼)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>비유: Ralph에게 놀이터를 만들라고 하면 잘 만들지만 미끄럼틀에서 떨어지므로, &quot;미끄럼틀은 미끄러져 내려가고, 뛰어내리지 말고, 주위를 살펴보라&quot;는 표지판을 추가하여 학습시킴</li>
<li class="ms-6 text-pretty" data-v-09555c0e>저자가 샌프란시스코에서 엔지니어들에게 Ralph를 가르쳤고, 한 엔지니어는 다음 계약에서 Ralph를 사용해 <strong class="font-bold dark:font-extrabold">엄청난 ROI(투자 대비 수익)를 달성</strong>함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://addyosmani.com/blog/ai-coding-workflow/?utm_source=blog.update.sh&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">My LLM coding workflow going into 2026</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260119131626/https://addyosmani.com/blog/ai-coding-workflow/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46489061&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=25755&amp;utm_source=blog.update.sh&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">GeekNews</a> | <a href="https://lobste.rs/s/gmtpog?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>2025년 AI 코딩 어시스턴트가 게임 체인저가 되었으며, Anthropic에서는 <strong class="font-bold dark:font-extrabold">Claude Code의 약 90%가 Claude Code 자체에 의해 작성</strong>될 정도로 활용도가 높지만, 효과적으로 활용하려면 기술과 체계적 접근이 필요함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">명확한 계획 수립이 우선</strong>: 코드 생성 전에 AI와 함께 상세한 사양서(spec.md)와 단계별 프로젝트 플랜을 작성하는 &quot;15분 안의 폭포수 모델&quot; 방식으로 개발 방향을 정립</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">작업을 작고 반복 가능한 단위로 분할</strong>: 한 번에 하나의 함수나 기능만 구현하도록 하여 AI가 집중된 작업을 수행하고, 대규모 일괄 생성 시 발생하는 혼란과 불일치를 방지</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">광범위한 컨텍스트 제공</strong>: 관련 코드, 문서, 제약사항을 AI에게 충분히 제공하고, gitingest나 repo2txt 같은 도구로 코드베이스를 패키징하며, Claude Skills 같은 재사용 가능한 전문 지식 모듈 활용</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">적절한 모델 선택 및 병행 사용</strong>: 각 작업에 맞는 최적의 LLM을 선택하고(Claude, Gemini, GPT 등), 모델이 막힐 경우 다른 모델로 전환하거나 여러 모델의 의견을 교차 확인</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">개발 전 생애주기에 걸친 AI 활용</strong>: Claude Code, Gemini CLI 같은 CLI 도구와 Jules, GitHub Copilot Agent 같은 비동기 코딩 에이전트를 활용하되, 무인 자동화가 아닌 <strong class="font-bold dark:font-extrabold">감독된 방식으로 사용</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">철저한 검증, 테스트, 리뷰 필수</strong>: AI가 생성한 코드를 <strong class="font-bold dark:font-extrabold">절대 맹목적으로 신뢰하지 않고</strong>, &quot;과신하고 실수하기 쉬운&quot; 주니어 개발자처럼 취급하여 모든 출력을 검토하고 테스트하며, Chrome DevTools MCP 같은 도구로 디버깅 품질 루프 강화</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">빈번한 커밋과 버전 관리</strong>: AI가 빠르게 코드를 생성할 때 각 작은 작업마다 커밋하여 &quot;게임의 세이브 포인트&quot;처럼 활용하고, 문제 발생 시 쉽게 롤백할 수 있도록 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">규칙과 예시로 AI 동작 커스터마이징</strong>: CLAUDE.md, GEMINI.md 같은 규칙 파일이나 커스텀 인스트럭션으로 코딩 스타일, 린트 규칙, 선호 패턴을 AI에게 학습시켜 프로젝트 관례에 맞는 코드 생성 유도</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">AI는 개발자의 전문성을 증폭시키는 도구</strong>: 클래식 소프트웨어 엔지니어링 원칙(설계, 테스트, 버전 관리, 표준 유지)이 AI 협업에서 더욱 중요하며, <strong class="font-bold dark:font-extrabold">인간 엔지니어가 쇼의 디렉터로 남아 책임을 지는 &quot;AI 보조 엔지니어링&quot;</strong> 접근법이 핵심</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://simonwillison.net/2026/Jan/19/scaling-long-running-autonomous-coding/?utm_source=blog.update.sh&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">Scaling long-running autonomous coding</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><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;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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46675637&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Cursor는 단일 프로젝트에서 수백 개의 동시 자율 코딩 에이전트를 실행하는 실험을 진행했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 에이전트들은 총 100만 줄 이상의 코드와 수조 개의 토큰을 작성했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>시스템은 조정 및 완료 평가를 위해 플래너, 서브 플래너, 작업 에이전트 및 판정 에이전트를 활용했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Cursor의 에이전트 군집 접근 방식에 대한 테스트 사례는 웹 브라우저를 처음부터 구축하는 것이었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>에이전트들은 거의 일주일 동안 브라우저 프로젝트를 작업하여 1,000개 파일에 걸쳐 100만 줄 이상의 코드를 생성했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>브라우저 코드가 포함된 FastRender 저장소에는 이제 빌드 지침이 포함되어 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>macOS에서 지침을 따른 결과 작동하는 브라우저 창이 나타났습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>생성된 브라우저는 일부 눈에 띄는 렌더링 결함에도 불구하고 대부분 올바른 레이아웃으로 웹 페이지를 읽기 쉽게 렌더링하는 인상적인 기능을 보여줍니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>FastRender 저장소는 WhatWG 및 CSS-WG 사양을 통합하기 위해 Git 서브모듈을 전략적으로 사용하여 에이전트에게 필요한 참조 자료를 제공합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 개발은 AI 지원 코딩을 향한 중요한 단계로 간주되며, 결과물의 품질이 초기 예상보다 빠르게 나타나고 있습니다.</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://blog.jquery.com/2026/01/17/jquery-4-0-0/?utm_source=blog.update.sh&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">jQuery 4.0.0 | Official jQuery Blog</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><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;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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46664755&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=25940&amp;utm_source=blog.update.sh&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">GeekNews</a> | <a href="https://lobste.rs/s/vokwbo?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>jQuery 4.0.0이 2006년 첫 출시 이후 약 20년, 메이저 버전 기준으로는 거의 10년 만에 정식 릴리스되었으며, 많은 개선사항과 현대화가 포함되어 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">IE 10 이하 지원 중단</strong>: IE 11 지원은 jQuery 5.0에서 단계적으로 제거 예정이며, Edge Legacy, 구형 iOS(최근 3개 버전 이전), Firefox(최근 2개 버전 이전, ESR 제외), Android Browser도 지원 중단</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Trusted Types 및 CSP 지원</strong>: Trusted Types를 지원하여 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">require-trusted-types-for</code> CSP 정책 위반 없이 HTML 조작 가능하며, 대부분의 비동기 스크립트 요청을 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;script&gt;</code> 태그로 전환하여 CSP 오류 방지</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">소스 코드를 AMD에서 ES 모듈로 마이그레이션</strong>: 빌드 도구를 RequireJS에서 Rollup으로 전환하고, 모던 빌드 도구 및 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;script type=module&gt;</code>과 호환되도록 개선</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">더 이상 사용되지 않는(deprecated) API 제거</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">jQuery.isArray</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">jQuery.parseJSON</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">jQuery.trim</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">jQuery.type</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">jQuery.now</code> 등 여러 함수 제거되었으며, 네이티브 대체 함수(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">Array.isArray()</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">JSON.parse()</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">String.prototype.trim()</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">Date.now()</code> 등) 사용 권장</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">내부 전용 메서드 제거</strong>: jQuery 프로토타입에서 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">push</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">sort</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">splice</code> 등 배열 메서드가 제거되었으며, 필요시 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">[].push.call($elems, elem)</code> 형태로 대체 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Focus 이벤트 순서가 W3C 명세를 따름</strong>: 모든 브라우저가 통일된 이벤트 순서(blur → focusout → focus → focusin)를 따르게 되어 jQuery도 네이티브 동작을 따르도록 변경(이전 jQuery 순서: focusout → blur → focusin → focus)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">업데이트된 Slim 빌드</strong>: Deferreds와 Callbacks가 제거되어 약 19.5KB(gzipped)로 축소되었으며, IE11을 제외한 모든 지원 브라우저에서 네이티브 Promise 사용 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>구형 IE 지원 코드 제거 및 deprecated API 제거로 <strong class="font-bold dark:font-extrabold">gzip 기준 3KB 이상 크기 감소</strong> 달성</li>
<li class="ms-6 text-pretty" data-v-09555c0e>CDN, npm(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">npm install jquery@4.0.0</code>)을 통해 다운로드 가능하며, 업그레이드 가이드 및 jQuery Migrate 플러그인을 통해 마이그레이션 지원 제공</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.bitecode.dev/p/pydantic-can-do-what?utm_source=blog.update.sh&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">Pydantic can do what?</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260109080720/https://www.bitecode.dev/p/pydantic-can-do-what?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Pydantic은 단순한 검증 라이브러리에서 environs/dotenv, click/typer/argparse, tomlib/yaml/json과 같은 여러 도구를 대체할 수 있는 포괄적인 설정 관리 시스템으로 발전했습니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>설정 기능이 너무 많이 성장하여 2023년에 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">pydantic-settings</code>라는 별도의 패키지로 분리되었습니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Pydantic settings는 계층적 우선순위를 가진 여러 소스에서 설정을 로드하는 것을 지원합니다: dotenv 파일(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">/etc/.env</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">.env</code>), 환경 변수, 그리고 수동 매개변수</li>
<li class="ms-6 text-pretty" data-v-09555c0e>값을 적절한 Python 타입(예: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">Path</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">HttpUrl</code>)으로 자동으로 역직렬화하고 포괄적인 검증(범위, 허용된 값 등)을 수행합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>시스템은 기본적으로 여러 설정 파일 형식을 지원합니다: JSON, TOML, YAML이며, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">PydanticBaseSettingsSource</code>를 상속하여 사용자 정의 로더를 만들 수 있습니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>최근 추가된 기능으로는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">ConfigDict</code>에 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">cli_parse_args=True</code>를 추가하기만 하면 되는 CLI 인수 파싱 기능이 있어 argparse/click/typer가 필요 없습니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>CLI 기능에는 하위 명령, 케밥-케이스(kebab-case), 복잡한 값 전달(리스트/json), 별칭(aliases), <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">--no-flag</code>, 위치 인수, 상호 배타적 그룹, argparse 통합이 포함됩니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>내장된 비밀 관리 기능은 민감한 값(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">SecretStr</code>과 같은)을 표시하고 출력에서 검열하며, 접근하려면 명시적으로 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">get_secret_value()</code> 호출이 필요합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>여러 클라우드 공급자 및 시스템에서 비밀을 읽는 것을 지원합니다: Unix secret 파일, Docker secrets, AWS Secret Manager, Google Cloud Secret Manager, Azure Key Vault, 그리고 Hashicorp Vault(커뮤니티 플러그인을 통해)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>라이브러리는 누락된 소스를 우아하게 처리하고, 모든 설정 계층에서 우선순위를 관리하며, 깊게 중첩된 값을 이해하고, 우수한 검증 오류 메시지를 제공합니다</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.smashingmagazine.com/2026/01/rethinking-pixel-perfect-web-design/?utm_source=blog.update.sh&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">Rethinking “Pixel Perfect” Web Design — Smashing Magazine</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><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;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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>2026년 현재, 인쇄 매체 시대부터 이어져 온 <strong class="font-bold dark:font-extrabold">&quot;픽셀 퍼펙트(Pixel Perfect)&quot; 개념이 현대 웹 디자인에서 오히려 오해를 불러일으키고, 모호하며, 역효과를 낸다</strong>는 주장</li>
<li class="ms-6 text-pretty" data-v-09555c0e>픽셀 퍼펙트는 1980~90년대 인쇄 산업과 초기 GUI 디자인에서 유래했으며, 당시 웹 디자이너들은 <strong class="font-bold dark:font-extrabold">&quot;인쇄된 페이지&quot; 사고방식</strong>을 그대로 웹에 적용하여 테이블 레이아웃과 스페이서 GIF로 고정된 레이아웃을 구현했음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>2000년 John Allsopp의 &quot;A Dao of Web Design&quot;에서 웹의 본질적 유동성을 무시한 픽셀 퍼펙트를 비판했으나, 2010년 반응형 웹 디자인이 등장한 이후에도 이 개념은 여전히 남아있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>현대 웹에서 픽셀 퍼펙트가 실패하는 이유
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">근본적으로 모호함</strong>: &quot;모든 것&quot;을 완벽하게 맞추려는 요구는 구체성이 부족</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">다양한 디바이스 현실</strong>: 무한에 가까운 뷰포트, 해상도, 화면비에서 단일 &quot;완벽함&quot;은 기술적으로 불가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">동적 콘텐츠</strong>: 다국어 지원, 긴 텍스트 등 콘텐츠 변화에 취약한 고정 레이아웃</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">접근성 무시</strong>: 사용자 폰트 크기 조정이나 고대비 모드에서 깨지는 레이아웃은 진정한 완벽함이 아님</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">시스템 사고 부재</strong>: 컴포넌트 기반 디자인 시스템과 충돌하며, 확장성을 저해</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">기술 부채 증가</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">margin-top: 3px</code> 같은 &quot;매직 넘버&quot; 해킹으로 취약하고 유지보수 어려운 코드 생성</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>대안으로 <strong class="font-bold dark:font-extrabold">&quot;디자인 의도(Design Intent)&quot;</strong> 중심 접근 제안: 정적 픽셀 값 대신 왜 그 간격이 필요한지 이해하고, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">clamp()</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">rem</code>, CSS Container Queries 등 유연한 단위와 도구 활용</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">디자인 토큰</strong> 사용으로 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">--spacing-large</code> 같은 논리적 값 공유, 디자이너-개발자 간 값이 아닌 로직 동기화</li>
<li class="ms-6 text-pretty" data-v-09555c0e>웹의 <strong class="font-bold dark:font-extrabold">유동성을 기능으로 받아들이고</strong>, &quot;핸드오버&quot; 방식 대신 살아있는 디자인 시스템에서 협업하며, &quot;픽셀 퍼펙트&quot; 대신 &quot;디자인 시스템과 시각적 일관성&quot;, &quot;간격과 위계 일치&quot;, &quot;비율과 정렬 로직 유지&quot; 같은 명확한 용어 사용 권장</li>
<li class="ms-6 text-pretty" data-v-09555c0e>결론: 현대 웹은 고정된 픽셀이 아니라 <strong class="font-bold dark:font-extrabold">적응하고 호흡하는 인터페이스</strong>를 요구하며, 진정한 완벽함은 누가 보든 어떤 기기로 보든 디자인의 본질이 유지되는 것</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.nytimes.com/2026/01/19/technology/polymarket-kalshi-prediction-markets.html?utm_source=blog.update.sh&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">The Rise of Prediction Markets - The New York Times</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Polymarket과 Kalshi 같은 예측 시장은 사용자들이 정치적 결과와 스포츠 경기부터 연예인 뉴스에 이르기까지 광범위한 이벤트에 베팅할 수 있도록 합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이러한 플랫폼들은 주로 정치 애호가들 사이의 틈새 관심사에서 미국 정치와 문화에서 보다 주류적인 존재로 이동했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>인기 급증으로 인해 CNN, CNBC, The Wall Street Journal과 같은 주요 미디어 회사들이 예측 시장과 파트너십을 맺고 그들의 데이터를 뉴스 보도에 통합하게 되었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Kalshi와 Polymarket에서 거래되는 금액의 규모는 상당히 증가하여, 12월에는 거의 120억 달러가 거래되었으며, 이는 전년 대비 400% 증가한 수치입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>예측 시장 기업들은 수십억 달러를 유치하며 상당한 투자를 받아 저명한 테크 스타트업이 되었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Polymarket과 Kalshi 모두 트럼프 가문과 연결되어 있으며, Donald Trump Jr.가 두 회사의 고문으로 활동하고 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이란 시위와 같은 사건들은 이러한 플랫폼에서 베팅 기회가 되었으며, 이는 스포츠 팬들이 감독의 미래에 베팅하는 방식과 유사합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Polymarket 배당률은 골든 글로브 시상식 방송 중에도 소개되어 문화적 관련성이 커지고 있음을 나타냅니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이러한 성장은 정보와 대중 정서가 추적되고 잠재적으로 영향을 받는 방식에 상당한 변화가 있음을 시사합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 플랫폼들은 정치 마니아를 넘어 다양한 투기적 이벤트에 관심 있는 더 넓은 청중으로 확장되면서 다양한 사용자들을 유치하고 있습니다.</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.simonpcouch.com/blog/2026-01-20-cc-impact/?utm_source=blog.update.sh&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">Electricity use of AI coding agents</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260121113238/https://www.simonpcouch.com/blog/2026-01-20-cc-impact/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46695415&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>2025년 데이터에 따르면 일반적인 AI 챗봇 사용(하루 100개 프롬프트)은 개인 전기·물 사용량의 0.01% 수준으로 환경 영향이 미미함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>그러나 <strong class="font-bold dark:font-extrabold">코딩 에이전트(Claude Code 등)를 업무에 활용하는 &quot;극단적 파워 유저&quot;의 경우 에너지 소비량이 수백 배 이상 증가</strong>함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>&quot;중간값 쿼리(median query)&quot;는 약 0.3 Wh를 소비하는 반면, <strong class="font-bold dark:font-extrabold">Claude Code 세션 1회는 약 41 Wh를 소비</strong>—138배 더 많음
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Claude Code는 시스템 프롬프트와 도구 설명만으로 약 20,000 토큰을 사용하며, 한 번의 메시지가 5~10개의 대규모 쿼리를 연쇄적으로 발생시킴</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>저자의 일반적인 업무일 기준으로 <strong class="font-bold dark:font-extrabold">Claude Code를 통해 하루 약 1,300 Wh를 소비</strong>—&quot;일반 쿼리&quot; 4,400개 분량에 해당하며, 하루 $15-20의 토큰 비용 발생</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이는 <strong class="font-bold dark:font-extrabold">식기세척기 1회 추가 사용, 냉장고 1대 추가 운영, 또는 자동차로 식료품점 1회 왕복 수준</strong>의 에너지 소비량</li>
<li class="ms-6 text-pretty" data-v-09555c0e>에너지 추정 방법: Epoch AI의 GPT-4o 데이터(~240 Wh/MTok)와 Anthropic의 API 가격 비율(출력 토큰 = 입력 토큰의 5배)을 활용해 토큰당 에너지 소비량 역산
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>입력: ~390 Wh/MTok, 출력: ~1,950 Wh/MTok, 캐시 읽기: ~39 Wh/MTok (최대 컨텍스트 기준)</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>저자는 8,825개의 Claude Code API 호출 로그를 분석했으며, 중간값 세션은 24개 요청과 592,439개 토큰 소비(5개 사용자 메시지 + 19개 도구 호출 응답)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>주요 유의사항
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>프론티어 랩들이 종합 데이터를 공개하지 않아 모두 추정치임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>에너지원(재생 에너지 vs 화석 연료)에 따라 환경 영향이 크게 달라짐</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">개인 배출량 감축보다 녹색 에너지 전환 지지 등의 정책적 접근이 더 효과적</strong>일 수 있음</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>저자는 이 수준의 에너지 사용량이 코딩 에이전트 사용을 줄일 만큼 심각하다고 보지 않지만, AI 관련 녹색 에너지 전환을 가속화하는 단체들에 기부할 정도로는 중요하다고 판단함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://simonwillison.net/2026/Jan/21/claudes-new-constitution/?utm_source=blog.update.sh&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">Claude’s new constitution</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260122135611/https://simonwillison.net/2026/Jan/21/claudes-new-constitution/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46713272&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Anthropic은 Claude의 &quot;헌장(constitution)&quot; 문서를 CC0 라이선스 하에 공식적으로 공개했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 헌장 문서는 이전에 Richard Weiss에 의해 유출되어 &quot;영혼 문서(soul document)&quot;로 불렸으며, Claude의 훈련 절차의 일부였습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 문서는 35,000 토큰 이상의 길이로, Opus 4.5 시스템 프롬프트보다 훨씬 큽니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>문서는 Claude의 핵심 가치를 상세히 설명하고 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Anthropic의 Amanda Askell이 문서의 출처를 확인했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>헌장은 시스템 프롬프트의 일부가 아니라 Claude의 훈련에 내재되어 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이번 공개로 Claude의 내부 지침이 대중에게 공개되었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>감사의 글 섹션에는 문서를 검토한 외부 기여자들의 명단이 나열되어 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>특히, 두 명의 가톨릭 성직자인 Brendan McGuire 신부와 Paul Tighe 주교가 외부 기여자로 나열되어 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Brendan McGuire 신부는 컴퓨터 과학 및 수학 배경을 가지고 있으며, Paul Tighe 주교는 도덕 신학 배경을 가지고 있습니다.</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://snubi.net/posts/Show-HN/?utm_source=blog.update.sh&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">The percentage of Show HN posts is increasing, but their scores are decreasing | snubi</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260122140858/https://snubi.net/posts/Show-HN/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46702099&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=26030&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>코딩이 가능한 LLM의 등장 이후 Hacker News에서 &#39;Show HN&#39; 게시물의 비율이 크게 증가했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>2012-2022년에는 &#39;Show HN&#39; 게시물이 전체 스토리의 약 2-3%를 차지했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>2025년 12월까지 &#39;Show HN&#39; 게시물은 전체 스토리의 12% 이상을 차지했으며, LLM으로 생성된 콘텐츠가 이러한 추세를 가속화했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Claude Code와 Cursor 1.0과 같은 도구들이 &#39;Show HN&#39; 게시물의 비율을 더욱 증가시킨 것으로 보입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>&#39;Show HN&#39; 스토리의 평균 점수는 비율이 증가함에 따라 감소하고 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>2025년 12월 기준으로, &#39;Show HN&#39;의 평균 점수는 모든 스토리의 평균 점수보다 약 10점 낮습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>점수 하락은 LLM으로 생성된 콘텐츠의 품질이 반드시 낮아서라기보다는, &#39;Show HN&#39; 게시물의 증가된 양으로 인한 독자들의 피로감 때문일 수 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>저자는 2022년 평균 점수의 설명되지 않은 증가를 언급하고 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 분석은 BigQuery의 Hacker News 데이터셋에서 내보낸 데이터를 사용합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>게시물 제목이나 설명에 명시적인 언급이 없기 때문에 LLM으로 생성된 &#39;Show HN&#39; 게시물의 정확한 비율을 결정하는 것은 어렵습니다.</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://susam.net/nested-code-fences.html?utm_source=blog.update.sh&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">Nested Code Fences in Markdown</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://news.ycombinator.com/item?id=46705201&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://lobste.rs/s/itkq4m?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>CommonMark와 GitHub Flavoured Markdown(GFM)에서 <strong class="font-bold dark:font-extrabold">코드 펜스(code fences) 내부에 백틱(backticks)이나 틸드(tildes)를 중첩하는 방법</strong>을 설명하는 기술 문서</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">기본 코드 펜스 문제</strong>: 삼중 백틱(```)으로 시작한 코드 블록 내부에 다시 삼중 백틱이 나오면, 두 번째 백틱이 코드 블록을 즉시 종료시켜 의도하지 않은 렌더링 결과 발생</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">해결책 1 - 틸드 사용</strong>: 코드 펜스를 백틱 대신 틸드(~~~)로 감싸면 내부에 백틱을 안전하게 포함 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">해결책 2 - 더 많은 문자 사용</strong>: 코드 펜스는 최소 3개 이상의 백틱 또는 틸드로 구성 가능하므로, 내부 백틱보다 더 많은 수의 백틱(예: `````)으로 감싸면 중첩 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">인라인 코드 스팬(code spans) 문제</strong>: 단일 백틱으로 구분되는 인라인 코드 내부에 백틱이 있으면 코드 스팬이 조기 종료됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">인라인 코드 해결책</strong>: 여러 개의 백틱(예: `` 또는 ```)을 구분자로 사용하면 내부에 백틱 포함 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">공백 처리 규칙</strong>: 인라인 코드 스팬 내부 텍스트가 공백으로 시작하고 끝나면, 렌더링 시 양쪽 끝에서 각각 한 칸의 공백이 제거됨 (이를 활용해 백틱을 코드 스팬에 포함 가능)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>CommonMark 스펙 0.30 버전의 <strong class="font-bold dark:font-extrabold">4.5절(Fenced Code Blocks)</strong>과 <strong class="font-bold dark:font-extrabold">6.1절(Code Spans)</strong>에서 이러한 규칙들이 명시되어 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>코드 펜스는 백틱과 틸드를 혼용할 수 없으며, 여는 펜스와 동일한 타입 및 개수 이상의 문자로 닫아야 함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://keepandroidopen.org/ko/?utm_source=blog.update.sh&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">Keep Android Open</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260122142020/https://keepandroidopen.org/ko/?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Google이 2025년 8월, 다음 해부터 <strong class="font-bold dark:font-extrabold">등록하지 않은 개발자는 Android 애플리케이션 개발 불가</strong>라는 새로운 정책을 발표함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 정책은 Google의 승인 절차를 거쳐야만 앱 개발 및 배포가 가능하도록 제한하는 내용을 포함함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">소비자 관점</strong>: Android가 자유로운 컴퓨팅 플랫폼이라는 약속이 깨지며, Google이 강제 시스템 업데이트를 통해 사용자의 소프트웨어 선택권을 차단할 예정</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">개발자 관점</strong>: Google의 승인 없이는 앱 개발 및 공유가 불가능해지며, &quot;개방형&quot;이라는 Android의 핵심 가치와 iPhone과의 차별점이 사라짐</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">국가 관점</strong>: 권위주의 정권의 요구에 순응해 온 기업에 국민의 디지털 주권을 넘겨주게 되며, 필수 소프트웨어가 불투명한 기업의 결정에 좌우될 위험</li>
<li class="ms-6 text-pretty" data-v-09555c0e>전 세계 규제 당국이 기술 독점과 권력 집중화에 우려를 표명하고 있으며, <strong class="font-bold dark:font-extrabold">개인들의 의견을 직접 듣고자 함</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>규제 당국에 문의 시, 정책이 소비자 및 경쟁에 미칠 피해를 <strong class="font-bold dark:font-extrabold">정중하고 구체적으로</strong> 설명하고, 공용어(한국어)로 작성하며, 서면 답변을 요청할 것을 권장</li>
<li class="ms-6 text-pretty" data-v-09555c0e>앱 개발자에게 <strong class="font-bold dark:font-extrabold">얼리 엑세스 프로그램 가입 거부, 신분증 미제출, Android Developer Console 초대 거부</strong>를 촉구하며, 개발자들의 반발이 정책 저지의 핵심임을 강조</li>
<li class="ms-6 text-pretty" data-v-09555c0e>커뮤니티, SNS, 블로그를 통해 메시지 확산 및 FreeDroidWarn 라이브러리를 앱에 포함하여 사용자에게 상황을 알릴 것을 요청</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Google 내부 관계자에게 정책 관련 추가 정보 제공을 요청하며, <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">tips@keepandroidopen.org</a>로 기밀 연락 가능함을 안내</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://news.hada.io/topic?id=26039&amp;utm_source=blog.update.sh&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">전자책 검색기 - 전자책 검색과 대출이 불편해서 만들었습니다 | GeekNews</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260122142320/https://news.hada.io/topic?id=26039&amp;utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>전자책 검색과 대출의 불편함을 해결하기 위해 만든 <strong class="font-bold dark:font-extrabold">전자책 검색기(ebook-search.org)</strong> 소개</li>
<li class="ms-6 text-pretty" data-v-09555c0e>공공 도서관의 전자책 무료 대출 서비스가 있지만, 개별 도서관 로그인 후 검색·대출·앱 다운로드 등 복잡한 절차가 필요함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">주요 기능</strong>: 전자책 검색 시 판매 서점/플랫폼, 구독 플랫폼, 대출 가능한 공공 도서관을 한 번에 조회 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>도서관에서 대출 가능한 경우 <strong class="font-bold dark:font-extrabold">도서관 계정 로그인 및 딥링크 제공</strong>(교보, Yes24 등)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">베스트셀러/신간 도서를 한눈에 조회</strong>할 수 있는 트렌딩 뷰 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e>사용자 피드백: 일부 서적이 타 플랫폼에서 판매됨에도 누락되는 경우 발견됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>누락 원인은 <strong class="font-bold dark:font-extrabold">모든 플랫폼이 ISBN으로 매칭되지 않고 일부는 제목으로만 매칭</strong>되기 때문이며, 지속적으로 보완 예정</li>
<li class="ms-6 text-pretty" data-v-09555c0e>특정 서점에서만 판매하는 전자책을 찾는 데 유용함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>도서정가제로 가격 차이는 크지 않지만, <strong class="font-bold dark:font-extrabold">구글 플레이스토어에서 구매 후 DeDRM을 통해 킨들 등에서 볼 수 있어</strong> 가격 섹션 유지</li>
<li class="ms-6 text-pretty" data-v-09555c0e>사용자 제안: 로딩 시간이 다소 걸리므로 대기 메시지 추가 요청</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://brooker.co.za/blog/2026/01/21/pass-k.html?utm_source=blog.update.sh&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">Pass@k is Mostly Bunk</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><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;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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46711347&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>pass@k 메트릭은 AI 에이전트 평가에서 흔히 사용되지만, <strong class="font-bold dark:font-extrabold">대부분의 경우 잘못된(bunk) 지표</strong>임</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">pass@k의 정의</strong>: k번의 시도 중 최소 1번이라도 성공할 확률을 나타내는 지표 (예: 주사위에서 6이 나올 확률이 5%일 때, pass@100은 99.4%에 달함)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">pass@k의 핵심 문제점</strong>: 지수적으로 관대한(exponentially forgiving) 메트릭이라 낮은 k 값만으로도 어떤 모델이든 좋아 보이게 만들 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>실제 성공률이 5%에 불과한 모델도 pass@100에서는 99.4%라는 인상적인 결과를 보일 수 있어 <strong class="font-bold dark:font-extrabold">오해를 불러일으킴</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">인간 사용자의 실제 경험</strong>과 괴리: 사용자는 &quot;10번 시도해서 1번 성공하면 만족&quot;이 아니라 &quot;10번 중 1번만 되면 형편없는 제품&quot;이라고 평가함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>실제 사용 환경에서는 여러 단계가 모두 성공해야 하므로 <strong class="font-bold dark:font-extrabold">지수적으로 가혹한(exponentially unforgiving)</strong> 상황이며, 이 경우 <strong class="font-bold dark:font-extrabold">pass^k가 더 나은 메트릭</strong>임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>pass@k가 유용한 경우: <strong class="font-bold dark:font-extrabold">작업이 단순하고, 평가가 신뢰할 수 있으며, 인간이 루프 밖에 있는</strong> 특수한 상황 (선형 비용 증가로 지수적 성공률 향상을 얻을 수 있는 경우)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>그러나 이러한 조건을 만족하는 작업은 드물기 때문에, <strong class="font-bold dark:font-extrabold">pass@k는 드물게 사용되어야 하며 사용할 때마다 신중한 정당화가 필요함</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">에이전트 AI 분야를 발전시키려면 메트릭에 대해 정직해야 함</strong></li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://curl.se/.well-known/security.txt?utm_source=blog.update.sh&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">https://curl.se/.well-known/security.txt</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260123004340/https://curl.se/.well-known/security.txt?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46717556&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>curl 오픈 소스 프로젝트는 보안 보고서를 접수합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>보고된 문제에 대해 보상이나 금전적 대가는 제공되지 않습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>확인된 문제에 대해서는 감사와 acknowledgment(공로 인정)가 제공됩니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">저품질 보고서를 제출하는 사용자는 차단되고 공개적으로 조롱당할 수 있습니다.</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>보안 보고서는 <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">security@curl.se</a>로 이메일을 통해 제출할 수 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>또는 보안 보고서는 GitHub(<a href="https://github.com/curl/curl/security/advisories)%EB%A5%BC?utm_source=blog.update.sh&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">https://github.com/curl/curl/security/advisories)를</a> 통해 제출할 수 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>취약점 공개 정책은 <a href="https://curl.se/dev/vuln-disclosure.html?utm_source=blog.update.sh&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">https://curl.se/dev/vuln-disclosure.html</a> 에서 확인할 수 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>보안 보고서의 선호 언어는 영어입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>보안 문제에 대한 acknowledgment(공로 인정) 목록은 <a href="https://curl.se/docs/security.html?utm_source=blog.update.sh&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">https://curl.se/docs/security.html</a> 에서 확인할 수 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 security.txt 파일은 2026년 10월 22일에 만료됩니다.</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://blog.sweep.dev/posts/oss-next-edit?utm_source=blog.update.sh&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">Sweep AI Blog - Insights from building coding agents and autocomplete for JetBrains</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260123075004/https://blog.sweep.dev/posts/oss-next-edit?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Sweep이 <strong class="font-bold dark:font-extrabold">Sweep Next-Edit</strong>이라는 1.5B 파라미터 규모의 next-edit 자동완성 모델을 오픈소스로 공개함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>로컬 랩톱에서 500ms 이하로 실행 가능하며, 4배 이상 큰 모델들보다 next-edit 벤치마크에서 우수한 성능을 보임</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">기존 모델(Zeta, Instinct)의 주요 문제점</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>채팅 템플릿이나 커스텀 토큰 사용으로 인한 비효율적인 토크나이징 (예: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;|editable_region_start|&gt;</code> 같은 경계 마커가 7개 토큰으로 분할됨)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>과도한 시스템 프롬프트와 불필요한 지시사항으로 인한 노이즈 및 지연 증가</li>
<li class="ms-6 text-pretty" data-v-09555c0e>부족한 학습 데이터 (Zeta는 수백 개, Instinct는 수천 개 수준이며 대부분 단일 저장소에서 추출)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Zeta는 LoRA 사용으로 기본 패턴 매칭조차 학습에 어려움</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Sweep의 최적화된 포맷</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Qwen2.5 Coder의 프리트레이닝 포맷 기반으로, 최근 변경사항을 diff 형태로 제공하고 커서 주변 고정 윈도우(10줄 위아래)를 재작성하도록 설계</li>
<li class="ms-6 text-pretty" data-v-09555c0e>유전 알고리즘으로 30개 이상의 프롬프트 포맷을 실험한 결과, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">original</code>/<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">updated</code> 블록 형식이 unified diff보다 LLM이 파싱하기 쉬움을 발견</li>
<li class="ms-6 text-pretty" data-v-09555c0e>고정 윈도우 크기(21줄)를 사용해 모델이 출력 길이를 예측 가능하게 하여 학습 안정성 향상 (AST 기반 동적 경계는 일관성 부족 문제 발생)</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">학습 과정</strong>: 8xH100에서 4시간 동안 ~100k 엔트리로 SFT(Supervised Fine-Tuning) 진행 후, 2000 스텝의 강화학습(RL)으로 파싱 불가능한 코드 생성 및 과도한 diff 크기 등의 문제 해결</li>
<li class="ms-6 text-pretty" data-v-09555c0e>RL 단계에서 tree-sitter로 파싱 가능성 검증 및 변경 크기 정규화 보상 함수 적용</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">성능 평가</strong>: 5개 벤치마크(커서 아래/위 next-edit, tab-to-jump, FIM, noisiness)에서 공백 무시 exact-match 정확도 사용 (CodeBLEU나 LLM-as-a-judge 대신 엄격한 메트릭 선택)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>TensorRT-LLM 포크와 FP8 양자화, n-gram speculative decoding을 적용한 커스텀 추론 엔진으로 평균 sub-100ms의 warm autocomplete 달성</li>
<li class="ms-6 text-pretty" data-v-09555c0e>모델 가중치와 실행 예제를 Hugging Face에 공개하여 VSCode, Neovim, Emacs 등 모든 IDE에서 빠르고 프라이버시 보호되는 자동완성 구축 가능</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://runjak.codes/posts/2026-01-21-adversarial-coding-test/?utm_source=blog.update.sh&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">runjak.codes: An adversarial coding test</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260123082345/https://runjak.codes/posts/2026-01-21-adversarial-coding-test/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46717472&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://lobste.rs/s/bndnsg?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>저자가 구직 면접 과정에서 코딩 테스트를 받던 중 <strong class="font-bold dark:font-extrabold">악의적인 공격을 발견한 사례</strong>를 공유함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Fediverse에서 본 보안 경고 게시물이 계기가 되어 의심을 품게 됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Solvolabs</strong>라는 회사로부터 코딩 챌린지를 위한 저장소 접근 권한을 받았으나, 회사 웹사이트가 블록체인/NFT 스캠과 AI 회사의 디자인 언어를 혼합한 형태로 의심스러웠음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>저장소의 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">.vscode/tasks.json</code> 파일 히스토리를 조사한 결과 <strong class="font-bold dark:font-extrabold">원격 서버에서 스크립트를 다운로드하고 실행하는 악성 명령어들을 발견</strong>함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>발견된 명령어들은 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">curl</code>과 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">wget</code>을 사용해 Vercel에 호스팅된 여러 도메인에서 셸 스크립트를 다운로드하고 실행하도록 설계됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>악성 스크립트는 <strong class="font-bold dark:font-extrabold">다단계로 작동</strong>하며, JWT 토큰(3분 유효)을 사용해 추가 스크립트를 다운로드하고 백그라운드에서 실행함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>피싱 공격에 대한 교훈: <strong class="font-bold dark:font-extrabold">충분한 시간과 기회가 주어지면 누구나 실수로 버튼을 클릭할 수 있으며</strong>, 이것이 계층적 보안 통제가 중요한 이유임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>GitHub에 해당 조직을 신고했고 몇 시간 내에 확인 메일을 받았으며, Vercel에도 도메인을 신고하고 응답을 기다리는 중</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">면접 중인 회사의 GitHub 조직이 삭제되는 결과</strong>를 초래했으며, 저자는 이를 예상하지 못했다고 언급</li>
<li class="ms-6 text-pretty" data-v-09555c0e>구직자들에게 주의를 당부하며, 자신도 계속 구직 중임을 밝힘</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://qwen.ai/blog?id=qwen3tts-0115&amp;utm_source=blog.update.sh&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">Qwen3-TTS Family is Now Open Sourced: Voice Design, Clone, and Generation!</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260124143102/https://qwen.ai/blog?id=qwen3tts-0115&amp;utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46719229&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=26049&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Qwen3-TTS는 음성 클로닝, 디자인, 그리고 고품질의 인간과 유사한 음성 합성을 제공하는 오픈소스 음성 생성 모델 패밀리입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 모델들은 효율적인 음성 압축과 고품질 복원을 가능하게 하는 Qwen3-TTS-Tokenizer-12Hz를 기반으로 합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Qwen3-TTS는 극한의 양방향 스트리밍 생성을 위한 듀얼 트랙(Dual-Track) 모델링 아키텍처를 활용하여 단일 문자 처리 후 첫 번째 오디오 패킷을 전달합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>오픈소스로 공개된 Qwen3-TTS 모델은 두 가지 크기로 제공됩니다: 최고 성능을 위한 1.7B와 성능과 효율성의 균형을 위한 0.6B입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 모델들은 10개의 주요 언어와 다양한 방언을 지원하며, 적응형 톤, 리듬, 감정 표현을 위한 강력한 맥락 이해 능력을 보여줍니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Qwen3-TTS-1.7B-VoiceDesign은 사용자가 설명적인 텍스트 지시를 기반으로 맞춤형 음성을 생성할 수 있게 합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Qwen3-TTS-1.7B-CustomVoice와 Qwen3-TTS-0.6B-CustomVoice는 사용자 지시를 사용한 목표 음색에 대한 스타일 제어를 지원하며 9개의 프리미엄 음색을 제공합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>기본 모델(1.7B 및 0.6B)은 빠른 3초 음성 클로닝이 가능하며 다른 모델의 미세 조정에 사용할 수 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Qwen3-TTS는 음성 디자인, 음성 제어, 음성 클로닝 작업에서 최첨단(SOTA) 성능을 달성하여 여러 선도적인 모델들을 능가했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Qwen-TTS-Tokenizer-12Hz는 PESQ, STOI, UTMOS 및 화자 유사도와 같은 음성 복원 메트릭에서 SOTA 성능을 입증했습니다.</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026-01-19 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2026-01-19</id>
        <link href="https://blog.update.sh/weekly-urls/2026-01-19"/>
        <updated>2026-01-18T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://github.com/tailwindlabs/tailwindcss.com/pull/2388?utm_source=blog.update.sh&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">feat: add llms.txt endpoint for LLM-optimized documentation by quantizor · Pull Request #2388 · tailwindlabs/tailwindcss.com</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260113110746/https://github.com/tailwindlabs/tailwindcss.com/pull/2388?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Tailwind CSS GitHub에 LLM 최적화 문서를 제공하는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">/llms.txt</code> 엔드포인트 추가 PR이 제출되었으나 거부됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>제안된 기능: MDX 파일에서 텍스트 추출, JSX 컴포넌트 제거, 코드 블록 보존하여 185개 문서를 빌드 타임에 정적 생성</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Tailwind 팀의 거부 이유</strong>: AI로 인해 문서 트래픽이 2023년 초 대비 약 40% 감소했으며, 문서가 유료 제품을 알리는 유일한 경로인데 LLM 최적화 문서는 이를 더 악화시킬 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">심각한 비즈니스 위기 공개</strong>: AI 영향으로 매출이 약 80% 감소했고, PR 거부 전날 엔지니어링 팀의 75%를 해고해야 했음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Tailwind는 그 어느 때보다 인기 있고 빠르게 성장하고 있지만, 사용성 증가와 수익 사이에 상관관계가 없는 상황</li>
<li class="ms-6 text-pretty" data-v-09555c0e>PR 제출자와 커뮤니티 일부는 이 결정이 &quot;OSS 비우호적&quot;이며 오히려 비즈니스에 역효과라고 비판</li>
<li class="ms-6 text-pretty" data-v-09555c0e>현재 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">llms.txt</code>는 제안된 표준일 뿐, OpenAI, Google, Anthropic 등 주요 AI 기업들이 공식적으로 따르고 있지 않음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Tailwind은 스폰서십 프로그램의 일부로 AGENTS.md 파일을 제공하고 있으나, Adam은 이것이 전체 문서와는 다르다고 해명</li>
<li class="ms-6 text-pretty" data-v-09555c0e>커뮤니티 내 격렬한 논쟁 발생: 일부는 Tailwind 팀을 지지하며 비즈니스 지속가능성의 중요성 강조, 일부는 오픈소스 정신 위배라고 비판</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Adam은 장기적으로 LLM 최적화 문서를 추가하고 싶지만, 현재는 비즈니스 지속가능성 확보가 최우선이라며 PR을 종료하고 스레드 잠금</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026-01-12 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2026-01-12</id>
        <link href="https://blog.update.sh/weekly-urls/2026-01-12"/>
        <updated>2026-01-11T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://tonsky.me/blog/tahoe-icons/?utm_source=blog.update.sh&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">It’s hard to justify Tahoe icons</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260105134749/https://tonsky.me/blog/tahoe-icons/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46497712&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://lobste.rs/s/2gvk2r?utm_source=blog.update.sh&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">Lobsters</a> | <a href="https://news.hada.io/topic?id=25590&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>macOS Tahoe가 모든 메뉴 항목에 아이콘을 추가했지만, 이는 1992년 Macintosh Human Interface Guidelines의 원칙들을 위반하며 사용성을 오히려 저하시킴</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">아이콘의 핵심 기능은 차별화</strong>인데, 모든 항목에 아이콘을 추가하면 아무것도 돋보이지 않게 되어 오히려 찾기 어려워짐. 흑백 아이콘보다 컬러 아이콘이 더 빠르게 인식됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">앱 간 일관성 부재</strong>: &quot;New&quot;, &quot;Open&quot;, &quot;Save&quot;, &quot;Close&quot;, &quot;Find&quot;, &quot;Delete&quot; 등 기본적인 OS 작업들조차 앱마다 전혀 다른 아이콘을 사용함 (예: &quot;New&quot;만 해도 50가지 이상의 다른 아이콘 존재)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">앱 내부 일관성도 결여</strong>: 같은 앱의 툴바와 메뉴에서 동일한 기능이 서로 다른 아이콘으로 표현되는 경우가 빈번함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">아이콘 재사용 문제</strong>: 동일한 아이콘이 전혀 다른 기능을 나타내는 경우가 많아 사용자를 혼란스럽게 함 (예: 같은 아이콘이 &quot;New&quot;, &quot;Quick Look&quot;, &quot;Import&quot;, &quot;Updates&quot; 등을 의미)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">과도한 뉘앙스</strong>: 미세한 차이(화살표 각도, 선 굵기, 점 크기 등)로 다른 의미를 전달하려 하지만, Apple 스스로도 일관성 없이 적용하여 신뢰할 수 없음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">지나친 세부 표현</strong>: Tahoe 메뉴 아이콘은 12×12 픽셀(실제 24×24 레티나)로 매우 작은데, 카메라 뷰파인더, 창문의 신호등, 2픽셀 높이의 &#39;i&#39; 글자 등 인식 불가능한 디테일을 포함함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">픽셀 그리드 무시</strong>: 벡터 폰트 사용으로 모든 해상도에서 작동하지만, 작은 크기에서는 흐릿하고 평범하게 보임. 비트맵처럼 픽셀 단위로 세심하게 디자인되지 않음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">혼란스러운 은유</strong>: 명확한 은유가 없거나 잘못된 은유 사용 (예: 텍스트 선택을 나타내는 아이콘이 실제 선택 모양과 다름), 텍스트 자체를 아이콘으로 사용하여 실제 텍스트와 구분 불가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">불가능한 과제</strong>: 모든 메뉴 항목에 아이콘을 추가하는 것 자체가 실현 불가능한 목표이며, 좋은 은유가 충분하지 않음. HIG의 원칙들은 인간의 인지 방식에 기반하므로 1992년이나 2025년이나 여전히 유효함</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026-01-05 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2026-01-05</id>
        <link href="https://blog.update.sh/weekly-urls/2026-01-05"/>
        <updated>2026-01-04T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://bigdata.2minutestreaming.com/p/mongobleed-explained-simply?utm_source=blog.update.sh&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">MongoBleed explained simply</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260101184526/https://bigdata.2minutestreaming.com/p/mongobleed-explained-simply?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46414475&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=25422&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">MongoBleed (CVE-2025-14847)</strong>는 2017년부터 현재까지 거의 모든 MongoDB 버전에 영향을 미치는 치명적인 보안 취약점으로, 공격자가 데이터베이스 힙 메모리에서 임의의 민감한 데이터를 읽을 수 있게 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>취약점은 MongoDB의 <strong class="font-bold dark:font-extrabold">zlib 메시지 압축 경로</strong>에 있는 버그로, 인증 없이도 데이터베이스 연결만으로 쉽게 악용 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">공격 방법 1부분</strong>: 공격자가 OP_COMPRESSED 메시지의 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">uncompressedSize</code> 필드에 과장된 크기(예: 실제 1KB인데 1MB로 표시)를 보내면, 서버는 큰 버퍼를 할당하지만 실제 압축 해제 후 크기를 검증하지 않아 <strong class="font-bold dark:font-extrabold">초기화되지 않은 힙 메모리(이전 작업의 민감한 데이터 포함 가능)</strong>가 메시지에 포함됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">공격 방법 2부분</strong>: 공격자가 null 종료자(\0)가 없는 잘못된 BSON 객체를 보내면, 서버는 C 문자열 파싱 특성상 힙 메모리를 계속 스캔하다가 민감한 데이터(비밀번호, API 키, 세션 토큰, PII 등)를 포함한 에러 메시지를 응답으로 반환함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>취약점의 <strong class="font-bold dark:font-extrabold">심각성</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Pre-Auth 취약점</strong>: 인증 전 요청 파싱 단계에서 발생하여 누구나 악용 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">8년간 존재</strong>: 2017년 5월 PR 머지 시점부터 취약점 존재</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Shodan에 따르면 <strong class="font-bold dark:font-extrabold">213,000개 이상의 공개 접근 가능한 MongoDB 인스턴스</strong>가 잠재적으로 취약함</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">타임라인</strong>: 2017년 6월 버그 도입 → 2025년 12월 17일 수정 코드 작성 → 12월 19일 CVE 공식 발표 및 MongoDB 8.0.17 패치 릴리스 → 12월 22일 공개 저장소에 수정 코드 머지 → 12월 24일 MongoDB가 Atlas 클라우드 전체 패치 완료 발표</li>
<li class="ms-6 text-pretty" data-v-09555c0e>MongoDB는 12월 24일 기준 악용 증거를 발견하지 못했다고 밝혔으나, <strong class="font-bold dark:font-extrabold">8년간 존재한 단순한 취약점</strong>이라는 점에서 이미 악용되었을 가능성이 높음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">완화 방법</strong>: 최신 패치로 업데이트하거나 zlib 네트워크 압축을 비활성화하면 됨 (단기 완화책으로 후자도 효과적)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Elastic의 보안 기술 리더가 <strong class="font-bold dark:font-extrabold">&quot;MongoBleed&quot;라는 이름을 붙이고 PoC 스크립트를 공개</strong>하여 주목받음 (Elastic은 Vector Search, Text Search 등에서 MongoDB와 경쟁 관계)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>MongoDB는 CVE 발표 5일 후인 12월 24일에야 커뮤니티 공개를 하는 등 <strong class="font-bold dark:font-extrabold">공개적 대응이 늦고 불투명</strong>했으며, 아직 공식 사과나 명확한 타임라인을 발표하지 않음</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://tkdodo.eu/blog/tooltip-components-should-not-exist?utm_source=blog.update.sh&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">Tooltip Components Should Not Exist</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260101185824/https://tkdodo.eu/blog/tooltip-components-should-not-exist?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=45979727&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>저자는 웹 앱에서 잘못 구현된 툴팁이 큰 불편 요소이며, 툴팁 구현 시 접근성, 키보드 상호작용, 사용자 예측 가능성, 중요 정보 숨김 방지 등 많은 고려사항이 필요하다고 주장함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">핵심 주장: 디자인 시스템에서 독립적인 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;Tooltip&gt;</code> 컴포넌트는 존재해서는 안 된다</strong>는 것이 이 글의 주요 논지임</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;Tooltip&gt;</code> 컴포넌트는 너무 저수준의 추상화로, 개발자들이 의도대로 사용하지 않을 가능성이 높으며, 문서를 읽는 사람이 적고 AI도 기존 안티패턴을 재생산할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">키보드 상호작용 문제</strong>: Material UI 같은 라이브러리에서도 비상호작용 요소(아이콘, 배지 등)에 툴팁을 추가하면 hover 시에만 표시되고 키보드 포커스로는 접근 불가능한 문제 발생</li>
<li class="ms-6 text-pretty" data-v-09555c0e>React Aria는 비상호작용 요소에 툴팁을 표시하지 않는 방식으로 개선했지만, 여전히 다른 문제들이 존재함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">사용자 예측 가능성 문제</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;Tooltip&gt;</code>이 어떤 요소에나 추가 가능하면, 문장 중간 텍스트에 표시 없이 추가되거나, 반대로 아이콘 버튼에 필요한 설명이 누락되는 등 일관성 없는 사용 사례 발생</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">대안으로 제안하는 패턴 기반 컴포넌트들</strong>:
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;Button&gt;</code>이나 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;Link&gt;</code> 같은 상호작용 컴포넌트에 선택적 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">title</code> prop 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;IconButton&gt;</code>에는 <strong class="font-bold dark:font-extrabold">필수</strong> <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">title</code> prop을 요구하여 아이콘 설명 강제</li>
<li class="ms-6 text-pretty" data-v-09555c0e>추가 정보 표시용 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;InfoIcon&gt;</code> 컴포넌트 노출 (물음표/정보 아이콘 + 툴팁, 포커스 가능 보장)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>텍스트에 컨텍스트 추가용 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;InfoText&gt;</code> 컴포넌트 (점선 밑줄 등으로 시각적 구별, 키보드 상호작용 가능)</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>저수준 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;Tooltip&gt;</code> 컴포넌트를 공개하는 대신, <strong class="font-bold dark:font-extrabold">일관된 UX와 접근성을 보장하는 고수준 패턴 컴포넌트들을 제공하는 것이 더 나은 접근법</strong>이라고 강조</li>
<li class="ms-6 text-pretty" data-v-09555c0e>제약이 창의성을 낳으며, 화면 공간 부족으로 툴팁에 정보를 숨기는 대신 근본적인 디자인을 재고하게 만드는 효과도 있음</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://primer.style/accessibility/patterns/accessible-notifications-and-messages/?utm_source=blog.update.sh&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">Accessible notifications and messages</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260101190228/https://primer.style/accessibility/patterns/accessible-notifications-and-messages/?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>GitHub의 접근성 높은 알림 및 메시지 전달 방식에 대한 가이드라인 문서</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">보조 기술(Assistive Technology) 알림 가이드라인</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>항상 알림: 위치 변경(페이지 내 사용자 위치 인식), 사용자 작업 실패 결과(유효성 검증 실패, 시스템 장애 등)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>상황에 따라 알림: 사용자 위치나 작업과 무관한 변경 사항(예: 다른 사용자의 이슈 댓글은 방해가 될 수 있지만, GitHub Actions 워크플로우의 로그 스트림은 필수적일 수 있음)</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Toast UI는 심각한 접근성 문제로 인해 사용을 권장하지 않음</strong>—GitHub는 더 효과적이고 접근 가능한 대안 사용을 강력히 권고</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Toast UI의 주요 접근성 문제(WCAG 위반 가능성)
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>시간 조절 불가(2.2.1), 의미 있는 순서 위반(1.3.2), 키보드 접근성(2.1.1), 상태 메시지 전달(4.1.3)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>텍스트 크기 조정(1.4.4), 리플로우(1.4.10), 포커스 순서(2.4.3), 일관된 식별(3.2.4) 등</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Toast UI의 사용성 문제: 큰 디스플레이에서 시야 밖 배치, 주의 분산 시 놓칠 위험, UI 가림, 화면 확대 사용자 미인지, 작업 기억 부담, 배너 맹목 현상, 컨텍스트 단절, 우발적 해제 등</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Toast 대안으로 권장하는 방법</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>단순한 성공 작업: 별도 피드백 불필요(결과가 자명해야 함)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>복잡한 성공 작업: 배너나 단계별 진행 표시로 피드백 제공(자동 해제 없이 지속)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>실패한 작업: 배너(수동적 오류 정보) 또는 다이얼로그(적극적 주의 환기) 사용</li>
<li class="ms-6 text-pretty" data-v-09555c0e>장기 실행 작업: 배너 또는 이메일/알림/앱 푸시 등 다른 채널 활용</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Primer는 폼 유효성 검증, 입력 피드백 등을 위한 robust한 컴포넌트와 가이드를 이미 제공하고 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>GitHub 전체 플랫폼의 일관된 사용자 경험을 유지하기 위해 확립된 접근 가능한 UI 패턴 사용을 강조</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://thunderseethe.dev/posts/wasm-not-webassembly/?utm_source=blog.update.sh&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">Wasm Does not Stand for WebAssembly</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260101190513/https://thunderseethe.dev/posts/wasm-not-webassembly/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46376968&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Wasm(WebAssembly)는 이름과 달리 <strong class="font-bold dark:font-extrabold">웹 기술도 아니고 어셈블리 언어도 아님</strong> - 실제로는 JVM이나 .NET과 유사한 <strong class="font-bold dark:font-extrabold">바이트코드</strong>임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Wasm은 실제 CPU가 아닌 <strong class="font-bold dark:font-extrabold">가상 머신(VM)에서 실행</strong>되며, 브라우저 특화 기능이 없고 DOM 조작도 불가능함 - 서버, 임베디드 디바이스, 심지어 폰트 내부에서도 실행 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Wasm의 핵심 장점은 <strong class="font-bold dark:font-extrabold">샌드박싱을 통한 보안</strong>으로, 호스트가 명시적으로 노출하지 않는 한 파일시스템, 네트워크 등에 접근 불가능하여 임의 코드 실행 환경에서 안전성 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e>WebAssembly라는 이름은 2015년경 브라우저에서 JavaScript를 피하고 싶었던 개발자들의 요구에서 시작됨 - asm.js의 한계를 극복하기 위해 브라우저 VM에 직접 접근할 수 있는 통합 인터페이스로 탄생</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Wasm 창시자들은 처음부터 <strong class="font-bold dark:font-extrabold">웹 전용 기술이 아닌 범용 계산 명세</strong>를 목표로 했으며, Andreas Rossberg에 따르면 WebAssembly라는 이름은 경영진의 프로젝트 승인을 받기 위한 전략이었음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Wasm은 <strong class="font-bold dark:font-extrabold">고수준 바이트코드</strong>로 예외, 구조체, 고차 함수 등을 기본 지원하며, 타입화된 연속성(typed continuations) 같은 고급 기능 추가도 논의 중</li>
<li class="ms-6 text-pretty" data-v-09555c0e>LLVM을 통해 C, Swift, Rust 등을 Wasm으로 컴파일할 수 있지만, LLVM의 비구조적 제어 흐름을 Wasm의 구조적 제어 흐름으로 변환하는 Relooper 같은 알고리즘이 필요해 비효율적임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>새로운 컴파일러 개발 시 <strong class="font-bold dark:font-extrabold">LLVM을 거치지 않고 Wasm을 직접 타겟</strong>으로 삼으면 더 효율적 - 특히 가비지 컬렉션 제안이 표준화되면서 백엔드 구현 부담을 크게 줄일 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Wasm은 <strong class="font-bold dark:font-extrabold">완전히 형식적으로 명세화</strong>되어 있고 <strong class="font-bold dark:font-extrabold">정적 타입 검사</strong>를 제공하며, 비결정성이 발생하는 지점이 명확히 문서화되어 있어 컴파일러 개발 시 디버깅이 용이함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Wasm 시작을 위한 주요 도구로는 <strong class="font-bold dark:font-extrabold">wasmtime</strong>(런타임), <strong class="font-bold dark:font-extrabold">wasm-encoder</strong>(Rust 크레이트), <strong class="font-bold dark:font-extrabold">binaryen</strong>(컴파일 라이브러리), <strong class="font-bold dark:font-extrabold">wasm-opt</strong>(최적화 CLI), <strong class="font-bold dark:font-extrabold">WebAssembly Binary Toolkit</strong>(wasm2wat, wat2wasm 등) 등이 있음</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://tryolabs.com/blog/top-python-libraries-2025?utm_source=blog.update.sh&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">Top Python libraries of 2025</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260102190756/https://tryolabs.com/blog/top-python-libraries-2025?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.hada.io/topic?id=25458&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>VS Code의 AI 기능을 오픈소스화하는 배경과 유사하게, <strong class="font-bold dark:font-extrabold">2025년은 LLM과 AI 에이전트가 폭발적으로 성장한 해</strong>로, Python 라이브러리 생태계도 이에 맞춰 급격히 확장됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">ty</strong>: Astral(Ruff, uv 개발사)이 Rust로 개발한 초고속 Python 타입 체커로, 함수 레벨 증분 분석(Salsa 기반)을 통해 실시간 IDE 피드백 제공하며 점진적 타이핑 채택을 용이하게 함(현재 프리뷰 단계)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">complexipy</strong>: 인지적 복잡도(cognitive complexity) 메트릭을 사용하는 Rust 기반 코드 분석 도구로, 수학적 복잡도가 아닌 개발자가 실제 체감하는 코드 난이도를 측정하여 리팩토링이 필요한 코드를 식별함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Kreuzberg</strong>: 50개 이상의 파일 형식을 지원하는 Rust 기반 문서 인텔리전스 프레임워크로, Python/TypeScript/Ruby/Go/Rust 등 여러 언어에서 일관된 API 제공 및 OCR, 테이블 감지, 스트리밍 파싱 기능 포함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">LLM 및 에이전트 관련 주요 라이브러리</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">spec-kit (GitHub)</strong>: 명세 기반 개발(Spec-Driven Development) 워크플로우로 AI 에이전트가 구조화된 명세서를 기반으로 코드를 생성하도록 유도</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">deepagents (LangChain)</strong>: 계획 수립, 파일시스템 접근, 서브에이전트 위임 기능을 제공하는 LangGraph 기반 에이전트 하네스</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">smolagents (Hugging Face)</strong>: 약 1,000줄의 투명한 코드로 구성된 에이전트 라이브러리로, 코드 에이전트(JSON 대신 Python 코드로 액션 표현)를 우선 지원하여 30% 적은 단계로 작업 완료</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">LlamaIndex Workflows</strong>: 이벤트 기반 프레임워크로 복잡한 AI 애플리케이션의 제어 흐름(루프, 분기, 병렬 실행)을 단순화하며, 단계(step)와 이벤트(event) 두 가지 기본 요소로 구성</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">문서 및 데이터 처리 도구</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">MarkItDown (Microsoft)</strong>: 다양한 파일 형식(PDF, Word, Excel, 이미지 등)을 LLM이 이해하기 쉬운 Markdown으로 변환하며 문서 구조 보존</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">LangExtract (Google)</strong>: 비정형 텍스트에서 구조화된 데이터를 추출하며, 추출된 모든 엔터티를 원본 텍스트의 정확한 문자 위치로 매핑하여 추적 가능성 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">TOON</strong>: JSON보다 40-60% 토큰을 절약하는 경량 인코딩 형식으로, YAML 스타일 들여쓰기와 CSV 기반 테이블 레이아웃을 결합하여 LLM 워크플로우에 최적화</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">보안 및 품질 관리 도구</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">FastAPI Guard</strong>: IP 화이트리스트/블랙리스트, 속도 제한, SQL 인젝션/XSS 탐지 등 포괄적인 보안 미들웨어를 FastAPI에 직접 통합</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Skylos</strong>: 정적 분석 도구로 사용되지 않는 코드 감지(신뢰도 점수 기반), AI 생성 코드의 보안 취약점 패턴 탐지, VS Code 확장 및 CI/CD 통합 지원</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">개발자 생산성 도구</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">throttled-py</strong>: 5가지 속도 제한 알고리즘(Fixed Window, Sliding Window, Token Bucket, Leaky Bucket, GCRA) 지원, 인메모리 및 Redis 백엔드 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">httptap</strong>: HTTP 요청을 DNS 해결, TCP 연결, TLS 핸드셰이크 등 단계별로 분석하여 터미널 워터폴 시각화, JSON 내보내기, 메트릭 모드 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">modshim</strong>: 서드파티 라이브러리를 포크하거나 몽키 패칭 없이, 가상 병합 모듈을 통해 기존 모듈에 수정사항을 오버레이하는 방식</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>2025년 Python 라이브러리 생태계는 <strong class="font-bold dark:font-extrabold">LLM/에이전트 도구의 급증</strong>과 <strong class="font-bold dark:font-extrabold">전통적인 개발 도구의 Rust 기반 성능 혁신</strong>이라는 두 가지 트렌드로 요약되며, 투명성, 속도, 실용성을 강조하는 방향으로 진화 중</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://tldr.sh/?utm_source=blog.update.sh&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">tldr pages</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260102192618/https://tldr.sh/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=22117237&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=1352&amp;utm_source=blog.update.sh&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">GeekNews</a> | <a href="https://lobste.rs/s/qj69du?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>tldr pages는 실용적인 예제를 통해 man pages를 단순화하는 커뮤니티 주도 프로젝트</li>
<li class="ms-6 text-pretty" data-v-09555c0e>라이브 데모, PDF 버전 제공 및 다양한 설치 방법 안내</li>
<li class="ms-6 text-pretty" data-v-09555c0e>가장 성숙한 클라이언트는 Python 버전으로, pipx를 통해 간편하게 설치 가능 (<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">pipx install tldr</code>)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>커뮤니티에서 개발한 다양한 클라이언트들이 존재</li>
<li class="ms-6 text-pretty" data-v-09555c0e>UNIX, Linux, macOS, SunOS, Android, Windows 등 가장 일반적인 명령어에 대한 예제를 지속적으로 확장하는 컬렉션</li>
<li class="ms-6 text-pretty" data-v-09555c0e>프로젝트 저장소의 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">pages/</code> 폴더에서 페이지를 생성하거나 편집하고 pull request를 제출하여 기여 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>기여 시 Contributing guidelines를 준수해야 함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://noclip.website/?utm_source=blog.update.sh&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">noclip</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20260102193348/https://noclip.website/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=37043934&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=25202&amp;utm_source=blog.update.sh&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">GeekNews</a> | <a href="https://lobste.rs/s/z2xzaw?utm_source=blog.update.sh&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">Lobsters</a></li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025-12-22 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2025-12-22</id>
        <link href="https://blog.update.sh/weekly-urls/2025-12-22"/>
        <updated>2025-12-21T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.reddit.com/r/ClaudeAI/comments/1pgxckk/claude_cli_deleted_my_entire_home_directory_wiped/?utm_source=blog.update.sh&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">https://www.reddit.com/r/ClaudeAI/comments/1pgxckk/claude_cli_deleted_my_entire_home_directory_wiped/</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251213142903/https://www.reddit.com/r/ClaudeAI/comments/1pgxckk/claude_cli_deleted_my_entire_home_directory_wiped/?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
제목: Claude CLI가 내 전체 홈 디렉토리를 삭제했습니다! 맥 전체가 날아갔어요.
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>한 사용자가 Claude CLI가 macOS에서 전체 홈 디렉토리를 삭제하여 치명적인 데이터 손실이 발생했다고 보고했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>근본 원인은 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">rm -rf tests/ patches/ plan/ ~/</code> 명령어로 확인되었으며, 이는 홈 디렉토리를 나타내는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">~/</code> 와일드카드를 잘못 포함한 것이었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 사건은 AI 도구가 생성하거나 실행하는 명령어를 이해하고 신중하게 검토하는 것이 얼마나 중요한지를 강조합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>여러 사용자들은 Claude CLI와 같은 AI 도구를 Docker 컨테이너나 VM과 같은 격리된 환경에서 실행하는 것이 중요한 안전 조치라고 제안했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>AI에게 광범위한 접근 권한을 부여하는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">--dangerously-skip-permissions</code> 플래그나 유사한 설정의 사용이 주요 위험 요인으로 확인되었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 사건은 사용자가 적절한 검증 없이 AI의 제안을 맹목적으로 신뢰하고 수용하는 &#39;바이브 코더(vibe coder)&#39; 정신에 대한 논의를 촉발시켰습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>권장되는 모범 사례에는 정기적인 백업 유지(예: Time Machine), 엄격한 권한 제어 구현, 파괴적인 명령어를 차단하는 훅(hook) 사용 등이 포함됩니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 사건은 AI 도구에게 파일 시스템에 대한 무제한 접근 권한을 부여하는 것의 잠재적 위험성에 대한 경고의 교훈이 됩니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>일부 사용자들은 이 상황을 AI 자각(sentience)이나 초기 컴퓨팅 포럼에서 발견되는 고전적인 &#39;홈 디렉토리 삭제&#39; 농담에 유머러스하게 비유했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 사건은 로컬 시스템과 상호작용할 수 있는 강력한 AI 에이전트를 배포할 때 강력한 안전 메커니즘과 사용자 교육의 필요성을 강조합니다.</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://simonwillison.net/2025/Dec/10/html-tools/?utm_source=blog.update.sh&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">Useful patterns for building HTML tools</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251216092231/https://simonwillison.net/2025/Dec/10/html-tools/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46223882&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=25078&amp;utm_source=blog.update.sh&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">GeekNews</a> | <a href="https://lobste.rs/s/ufudxi?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Simon Willison은 <strong class="font-bold dark:font-extrabold">HTML tools</strong>라는 개념을 제시하며, HTML/JavaScript/CSS를 단일 파일로 결합한 웹 애플리케이션을 150개 이상 개발했으며, 대부분 LLM으로 작성됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>HTML tools의 핵심 특징
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">단일 파일 구조</strong>: HTML 파일 하나에 JavaScript와 CSS를 인라인으로 포함하여 호스팅과 배포가 용이하고 LLM 응답에서 복사/붙여넣기가 쉬움</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">React 및 빌드 단계 배제</strong>: JSX 빌드 과정이 없어 편의성이 크게 향상되며, 프롬프트에 &quot;no react&quot; 명시</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">CDN에서 의존성 로드</strong>: cdnjs, jsdelivr 등을 통해 필요한 라이브러리 로드</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">작은 크기 유지</strong>: 수백 줄 수준으로 유지하여 LLM이 쉽게 이해하고 재작성 가능</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Claude Artifacts, ChatGPT/Gemini Canvas</strong>를 사용한 프로토타이핑 및 <strong class="font-bold dark:font-extrabold">Claude Code, Codex CLI</strong> 같은 코딩 에이전트로 복잡한 프로젝트 전환 권장</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">GitHub Pages를 통한 자체 호스팅</strong> 선호: LLM 플랫폼의 샌드박스 제약, 불안정성, 광고 등을 피하고, 빌드 단계 없이 간단히 복사/붙여넣기로 배포 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">복사/붙여넣기 활용</strong>: 클립보드 API를 적극 활용하여 입력 받고 변환된 결과를 클립보드로 복사하는 패턴 사용 (모바일에서는 &quot;Copy to clipboard&quot; 버튼 제공)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">상태 관리 전략</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">URL에 상태 저장</strong>: 북마크/공유 가능한 도구 구축 (예: icon-editor)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">localStorage 활용</strong>: API 키 같은 민감 정보나 대용량 상태 저장 (서버 로그에 노출되지 않음)</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">CORS 지원 API 수집</strong>: iNaturalist, PyPI, GitHub, Bluesky, Mastodon 등 CORS 헤더를 제공하는 공개 API를 활용하여 서버 없이 외부 데이터 접근</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">파일 처리</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;input type=&quot;file&quot;&gt;</code>로 서버 업로드 없이 브라우저에서 직접 파일 열기/처리 가능하며, JavaScript로 다운로드 가능한 파일도 생성 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Pyodide/WebAssembly 활용</strong>: Python을 브라우저에서 실행(Pyodide)하거나 다른 언어로 작성된 소프트웨어를 WebAssembly로 포팅하여 HTML tools에 통합 (예: OCR, SQLite)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">기존 도구 리믹스 및 프롬프트/트랜스크립트 기록</strong>: 100개 이상의 도구 컬렉션을 LLM 컨텍스트로 제공해 재조합하고, 모든 개발 과정의 트랜스크립트를 공개하여 학습 및 재현 가능성 확보</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://github.com/EmilStenstrom/justhtml?utm_source=blog.update.sh&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">GitHub - EmilStenstrom/justhtml: A pure Python HTML5 parser that just works. No C extensions to compile. No system dependencies to install. No complex API to learn.</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251216092537/https://github.com/EmilStenstrom/justhtml?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46124443&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>JustHTML은 <strong class="font-bold dark:font-extrabold">순수 Python으로 작성된 HTML5 파서</strong>로, C 확장 컴파일이나 시스템 의존성 설치 없이 간단하게 사용 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">WHATWG HTML5 명세를 정확히 구현</strong>하여 브라우저가 파싱할 수 있는 모든 HTML을 처리하며, 브라우저가 사용하는 복잡한 오류 처리 규칙을 완벽히 지원함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">검증된 준수성</strong>: 공식 html5lib-tests 스위트의 9,000개 이상 테스트를 모두 통과했으며, 100% 코드 커버리지와 600만 개의 무작위 HTML 문서로 퍼즈 테스트를 완료함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">제로 의존성 라이브러리</strong>로 PyPy, WASM(Pyodide) 등 Python이 실행되는 모든 환경에서 작동하며, 의존성 업그레이드 부담이 없음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">디버깅 용이성</strong>: 순수 Python 코드로 작성되어 디버거로 파싱 과정을 단계별로 추적할 수 있으며, lxml이나 etree 대신 <strong class="font-bold dark:font-extrabold">일반 Python 객체</strong>를 반환하여 API 학습이 간단함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">CSS 선택자 지원</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">query()</code> 메서드 하나로 익숙한 CSS 문법을 사용하여 요소를 검색 가능 (예: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">doc.query(&quot;div.container &gt; p.intro&quot;)</code>)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">성능</strong>: C/Rust 파서보다는 느리지만(10-20배), Wikipedia 홈페이지를 ~0.1초에 파싱할 정도로 충분히 빠르며, 순수 Python 파서 중 가장 빠름 (<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">html5lib</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">BeautifulSoup</code>보다 우수)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">준수성 비교</strong>: JustHTML은 100% HTML5 준수율을 보이는 반면, html5lib 88%, html5_parser 84%, BeautifulSoup 4%, lxml 1% 수준임</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">설치 및 사용</strong>: Python 3.10 이상에서 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">pip install justhtml</code>로 설치 가능하며, CLI 도구로 HTML 파싱, CSS 선택자 필터링, 텍스트/마크다운/HTML 형식 출력 지원</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">프로젝트 기원</strong>: Mozilla Servo 브라우저 엔진의 html5ever를 Python으로 포팅한 것에서 시작했으며, MIT 라이선스로 상업적/비상업적 사용 모두 자유로움</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://portalvr.io/?utm_source=blog.update.sh&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">PortalVR | VR on your desktop</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251003002239/https://portalvr.io/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=45456003&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>PortalVR은 헤드셋을 착용하지 않고 VR 게임을 즐길 수 있게 해주는 수정된 Monado OpenXR 런타임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Quest를 USB로 PC에 연결하여 책상 위에 놓고, 컨트롤러만 사용하면서 화면을 보며 플레이하는 방식</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">필요 장비</strong>: Windows PC와 개발자 모드가 활성화된 Meta Quest (USB 연결)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">모든 SteamVR 콘텐츠</strong>와 호환되며, WebXR 콘텐츠도 브라우저에서 사용 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">3D 입체 시청 지원</strong>: 적록 안경을 통한 아나글리프 방식 또는 Samsung Odyssey 3D 같은 안경 없는 3D 디스플레이 사용 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>무료 버전은 워터마크가 있고 개인용 비상업적 용도로 제한되며, 유료 버전은 워터마크 제거 및 상업적 사용 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">시점 조작</strong>: 컨트롤러 조이스틱으로 머리 회전 제어, 웹캠이 있으면 얼굴 추적으로 몸을 기울이거나 숙이는 동작 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">주요 사용 사례</strong>: 편안한 데스크 환경에서 VR 게임 플레이, 개발자의 빠른 빌드 테스트, 콘텐츠 제작자의 VR 영상 녹화</li>
<li class="ms-6 text-pretty" data-v-09555c0e>제작자는 두 어린 아들이 안전하게 VR을 즐길 수 있도록 하기 위해 시작했으며, 현재 아이들은 Beat Saber에 중독됨</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.tomshardware.com/tech-industry/cyber-security/north-korean-infiltrator-caught-working-in-amazon-it-department-thanks-to-lag-110ms-keystroke-input-raises-red-flags-over-true-location?utm_source=blog.update.sh&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">North Korean infiltrator caught working in Amazon IT department thanks to lag — 110ms keystroke input raises red flags over true location</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251220165828/https://www.tomshardware.com/tech-industry/cyber-security/north-korean-infiltrator-caught-working-in-amazon-it-department-thanks-to-lag-110ms-keystroke-input-raises-red-flags-over-true-location?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46318494&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Amazon은 키보드 입력 지연(110ms 이상)을 단서로 북한 침투자가 미국 시스템 관리자로 위장 근무하던 사실을 적발함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>일반적으로 미국 내 원격 근무자의 키 입력 지연은 수십 밀리초 수준이지만, 해당 인물은 원격으로 애리조나에 위치한 Amazon 노트북을 조종하고 있었음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Amazon의 Stephen Schmidt 최고보안책임자에 따르면, 2024년 4월 이후 <strong class="font-bold dark:font-extrabold">1,800건 이상의 북한 침투 시도를 차단</strong>했으며, 분기별로 27% 증가 추세임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Amazon은 <strong class="font-bold dark:font-extrabold">적극적으로 북한 침투자를 탐지하는 정책</strong>을 운영 중이며, &quot;찾으려 하지 않으면 발견할 수 없다&quot;고 강조함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>북한은 이러한 침투 활동을 통해 외화 획득, 간첩 활동, 사회 교란 등을 시도하는 것으로 알려짐</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이번 사건에서 북한 위장 근무자를 돕던 미국 여성이 올해 초 수년간의 징역형을 선고받음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>보안 전문가들은 <strong class="font-bold dark:font-extrabold">컴퓨터 네트워크 이상 징후 외에도 미국식 관용구와 영어 표현의 서툰 사용</strong>이 침투자를 판별하는 단서가 된다고 지적함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>북한뿐 아니라 이란, 러시아, 중국 등 적대국의 미국 기업 침투 시도가 계속되고 있어 빙산의 일각으로 평가됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>일부 전문가들은 Amazon이 적발 방법을 공개한 것이 북한의 우회 전략 개발을 도울 수 있다고 우려함</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025-12-15 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2025-12-15</id>
        <link href="https://blog.update.sh/weekly-urls/2025-12-15"/>
        <updated>2025-12-14T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.rockpapershotgun.com/in-true-roguelike-fashion-slay-the-spire-2-is-only-being-made-because-of-a-5050-coin-flip?utm_source=blog.update.sh&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">In true roguelike fashion, Slay the Spire 2 is only being made because of a 50/50 coin flip</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251210061829/https://www.rockpapershotgun.com/in-true-roguelike-fashion-slay-the-spire-2-is-only-being-made-because-of-a-5050-coin-flip?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Slay the Spire 2의 개발 여부가 <strong class="font-bold dark:font-extrabold">동전 던지기로 결정</strong>되었다는 사실이 밝혀짐</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Mega Crit의 공동 창립자 Anthony Giovannetti가 PC Gamer 인터뷰에서 이 사실을 공개</li>
<li class="ms-6 text-pretty" data-v-09555c0e>코로나 시기에 Giovannetti와 Casey Yano는 여러 작은 프로토타입 프로젝트를 진행하다가 다음 본격적인 프로젝트를 찾고 있었음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>두 가지 개발 방향이 있었음: <strong class="font-bold dark:font-extrabold">완전히 다른 새 프로젝트</strong> vs <strong class="font-bold dark:font-extrabold">Slay the Spire 속편</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>Giovannetti는 속편 개발에 흥미로운 디자인 과제가 있다고 생각했지만, 최종 결정을 위해 <strong class="font-bold dark:font-extrabold">동전 던지기를 실행</strong>함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>동전 던지기는 Yano가 Discord 통화 중에 했으며, Slay the Spire 2가 선택됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Giovannetti는 결과가 진실이라고 믿으며, Casey는 카드 게임보다 액션 게임을 선호했기 때문에 반대 결과를 원했을 것이라고 언급</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 에피소드는 Slay the Spire 제작자들이 자신들이 만드는 게임(로그라이크, 확률 기반)의 본질인 <strong class="font-bold dark:font-extrabold">운과 우연</strong>을 실제 개발 결정에도 적용한 아이러니한 사례</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Slay the Spire 2는 <strong class="font-bold dark:font-extrabold">2026년 3월의 &quot;비밀스러운 목요일&quot;에 얼리 액세스로 출시</strong> 예정</li>
<li class="ms-6 text-pretty" data-v-09555c0e>현재 Steam에서 위시리스트 등록 가능</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.euronews.com/health/2025/12/10/chemical-in-dark-chocolate-may-help-slow-ageing-new-study-finds?utm_source=blog.update.sh&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">Could dark chocolate be the key to slower ageing? New study weighs in</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251214055723/https://www.euronews.com/health/2025/12/10/chemical-in-dark-chocolate-may-help-slow-ageing-new-study-finds?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>다크 초콜릿에 함유된 화학 물질인 <strong class="font-bold dark:font-extrabold">테오브로민(Theobromine)이 생물학적 노화를 늦추는 효과</strong>가 있을 수 있다는 새로운 연구 결과가 발표됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>연구는 학술지 Aging에 게재되었으며, 카카오 콩에서 추출되는 식물 화합물인 테오브로민이 생물학적 노화를 지연시킬 수 있다고 밝힘</li>
<li class="ms-6 text-pretty" data-v-09555c0e>킹스 칼리지 런던의 Jordana Bell 교수는 &quot;다크 초콜릿의 핵심 성분과 더 오래 젊음을 유지하는 것 사이의 연관성을 발견했다&quot;고 설명함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>영국 509명과 독일 1,160명의 참가자를 대상으로 한 연구에서, <strong class="font-bold dark:font-extrabold">혈액 내 테오브로민 수치가 높은 사람들의 생물학적 나이가 실제 나이보다 낮게 나타남</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>생물학적 나이는 건강 상태와 기능을 기반으로 평가되며, 세포, 조직, 장기의 손상 정도를 반영하고 생활습관, 환경, 유전적 요인의 영향을 받음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>연구진은 DNA의 메틸화 패턴 변화와 염색체 끝의 텔로미어 길이를 측정하여 참가자들의 생물학적 나이를 판단함 (짧은 텔로미어는 노화 및 노화 관련 질병과 연관됨)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>다크 초콜릿은 이전에도 심장 건강 등 여러 건강상 이점과 연관되어 왔으나, <strong class="font-bold dark:font-extrabold">테오브로민과 노화 간의 연관성을 완전히 이해하기 위해서는 추가 연구가 필요</strong>함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>옥스퍼드 대학의 Dimitrios Koutoukidis 교수는 연구가 흥미로운 연관성을 보여주지만, 초콜릿 섭취량 변화에 따른 테오브로민 수치 변화와 건강 영향은 밝히지 못했다고 지적함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Koutoukidis 교수는 초콜릿의 당분과 지방을 고려하면 건강상 효과가 상쇄될 수 있으므로, <strong class="font-bold dark:font-extrabold">소량씩 가끔 즐기는 것을 권장</strong>함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components?utm_source=blog.update.sh&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">Denial of Service and Source Code Exposure in React Server Components – React</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://news.ycombinator.com/item?id=46236924&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=25030&amp;utm_source=blog.update.sh&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">GeekNews</a> | <a href="https://lobste.rs/s/et5j8u?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>React 팀이 React Server Components에서 발견된 <strong class="font-bold dark:font-extrabold">2개의 새로운 보안 취약점</strong>을 공개함 (2025년 12월 11일)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이번 취약점은 지난주 발표된 중요 취약점(React2Shell)의 패치를 악용하려는 시도 중 보안 연구자들이 발견했으며, <strong class="font-bold dark:font-extrabold">원격 코드 실행(RCE)은 불가능함</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>새로 공개된 취약점
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">서비스 거부(DoS) - 높은 심각도</strong>: CVE-2025-55184, CVE-2025-67779 (CVSS 7.5) - 악의적인 HTTP 요청으로 서버 프로세스를 무한 루프에 빠뜨려 CPU를 소비시킬 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">소스 코드 노출 - 중간 심각도</strong>: CVE-2025-55183 (CVSS 5.3) - Server Function의 소스 코드가 노출될 수 있으며, 민감한 정보(예: 데이터베이스 연결 키)가 유출될 위험 있음</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">즉시 업그레이드 필요</strong>: React 19.0.0~19.2.2 버전의 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">react-server-dom-webpack</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">react-server-dom-parcel</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">react-server-dom-turbopack</code> 패키지가 영향을 받음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>수정 버전은 <strong class="font-bold dark:font-extrabold">19.0.3, 19.1.4, 19.2.3</strong>으로 백포트되었으며, 해당 패키지 사용자는 즉시 업그레이드 필요</li>
<li class="ms-6 text-pretty" data-v-09555c0e>영향을 받는 프레임워크/번들러: next, react-router, waku, @parcel/rsc, @vite/rsc-plugin, rwsdk</li>
<li class="ms-6 text-pretty" data-v-09555c0e>React Native 사용자는 monorepo에서 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">react-dom</code> 사용 시에만 영향받는 패키지만 업데이트하면 되며, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">react</code>와 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">react-dom</code>은 업데이트하지 않아도 됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>일부 호스팅 제공업체가 임시 완화 조치를 적용했으나, <strong class="font-bold dark:font-extrabold">이에 의존하지 말고 즉시 업데이트 권장</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>보안 연구자 Andrew MacPherson, RyotaK, Shinsaku Nomura에게 감사 표명</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025-12-08 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2025-12-08</id>
        <link href="https://blog.update.sh/weekly-urls/2025-12-08"/>
        <updated>2025-12-07T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://maily.so/pepper.note/posts/32z84k21rn4?utm_source=blog.update.sh&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">소주병뚜껑을 아무나 못 만드는 이유</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251201043203/https://maily.so/pepper.note/posts/32z84k21rn4?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>한국에서 소주병뚜껑(참이슬, 처음처럼 등 초록색 소주병)을 생산할 수 있는 업체는 <strong class="font-bold dark:font-extrabold">&#39;삼화왕관&#39;과 &#39;세왕금속공업&#39; 단 두 곳</strong>뿐임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>소주 1병(1,380원)에 세금이 617.1원으로 세금 비중이 매우 크며, 연간 조 단위의 세금이 징수됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>국세청은 주류업체의 세금 탈루를 막기 위해 <strong class="font-bold dark:font-extrabold">1972년 &#39;납세 병마개&#39; 제도를 도입</strong>함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 제도는 주류 제조업체의 술 생산량과 병뚜껑 제조업체의 병뚜껑 생산량을 비교하여 탈루를 방지하는 구조</li>
<li class="ms-6 text-pretty" data-v-09555c0e>프랜차이즈 본사가 가맹점 수익 파악을 위해 원두·컵 등을 공급하는 것과 유사한 원리로, 국세청이 병뚜껑 판매량으로 소주 판매량을 추정함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">1972년 삼화왕관이 최초 지정</strong>되었고, <strong class="font-bold dark:font-extrabold">1985년 세왕금속공업이 추가</strong>된 이후 40년간 새로운 업체는 단 한 곳도 지정받지 못함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 제도로 인해 다른 병마개 제조업체들은 기술력이 있어도 주류 시장 진입이 불가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>1997년 이 제도가 헌법에 위배된다며 헌법소원이 제기되었으나(특정 업체 독점권 부여가 다른 기업 활동을 부당 제한), 헌법재판소는 각하함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>두 업체는 수백억 원 규모의 시장을 법적 보호 아래 독식하며 안정적인 수익을 올리고 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>삼화왕관과 세왕금속공업의 경영진·주요 임원 자리를 <strong class="font-bold dark:font-extrabold">대대로 국세청 출신 인사들이 차지</strong>해왔다는 지적이 존재함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business?utm_source=blog.update.sh&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">Micron Announces Exit from Crucial Consumer Business | Micron Technology</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251205070506/https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46137783&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=24827&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Micron Technology는 Crucial 소비자 사업에서 철수합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>회사는 2026 회계연도 2분기 말(2026년 2월)까지 Crucial 소비자 제품의 출하를 계속할 예정입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Micron은 Crucial 제품에 대한 지속적인 보증 서비스와 지원을 제공할 것입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>소비자 사업 철수 결정은 데이터 센터의 AI에 의해 주도되는 더 빠르게 성장하는 부문의 대규모 전략적 고객들을 위한 공급 및 지원을 개선하기 위한 것입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Micron은 상업용 채널 고객들에게 Micron 브랜드의 엔터프라이즈 제품 판매를 계속할 것입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이러한 움직임은 Micron의 포트폴리오 변혁 및 수익성 있는 성장 부문과의 정렬의 일환입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>핵심 엔터프라이즈 및 상업용 부문에 집중함으로써 Micron은 장기적인 사업 성과와 이해관계자 가치를 향상시키는 것을 목표로 합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Micron은 영향을 받는 팀원들을 회사 내 기존 공석으로 재배치할 계획입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Crucial 브랜드는 29년 동안 Micron 역사의 중요한 부분이었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Micron Technology는 AI 및 컴퓨팅 집약적 애플리케이션을 포함한 다양한 시장에 서비스를 제공하는 혁신적인 메모리 및 스토리지 솔루션의 선두주자입니다.</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://github.com/vercel/next.js/security/advisories/GHSA-9qr9-h5gf-34mp?utm_source=blog.update.sh&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">RCE in React Server Components</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251205070904/https://github.com/vercel/next.js/security/advisories/GHSA-9qr9-h5gf-34mp?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46136026&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=24826&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>특정 React 패키지에서 보안 취약점이 발견됨 (CVE-2025-5518로 추적)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">영향받는 버전</strong>: React 19.0.0, 19.1.0, 19.1.1, 19.2.0 및 해당 패키지를 사용하는 Next.js 15.x, 16.x (App Router 사용 시)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">영향받는 React 패키지</strong>: react-server-dom-parcel, react-server-dom-turbopack, react-server-dom-webpack</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">React 패치 버전</strong>: 19.0.1, 19.1.2, 19.2.1</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Next.js 패치 버전</strong>: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7</li>
<li class="ms-6 text-pretty" data-v-09555c0e>실험적 canary 릴리스 14.3.0-canary.77부터도 취약점의 영향을 받음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>14.3 canary 빌드 사용자는 14.x 안정 버전 또는 14.3.0-canary.76으로 다운그레이드 필요</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Next.js 15.x 또는 16.x 안정 버전 사용자는 즉시 패치된 안정 버전으로 업그레이드해야 함</strong></li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://lyra.horse/blog/2025/12/svg-clickjacking/?utm_source=blog.update.sh&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">SVG Filters - Clickjacking 2.0</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251207162841/https://lyra.horse/blog/2025/12/svg-clickjacking/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46155085&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=24877&amp;utm_source=blog.update.sh&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">GeekNews</a> | <a href="https://lobste.rs/s/omnyrf?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>SVG 필터를 사용한 새로운 클릭재킹 기법 &quot;SVG clickjacking&quot;을 발견하여 복잡한 다단계 공격과 데이터 유출이 가능해짐</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Apple의 Liquid Glass 디자인을 CSS/SVG로 재현하던 중 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">feColorMatrix</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">feDisplacementMap</code> 등 SVG 필터가 cross-origin iframe에서도 작동한다는 사실을 발견</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">공격 기법의 핵심 구성 요소</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">feDisplacementMap</code>을 이용한 가짜 CAPTCHA 생성으로 사용자가 민감한 코드를 재입력하도록 유도</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">feComposite</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">feMorphology</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">feColorMatrix</code> 등을 조합하여 텍스트 입력창의 회색 placeholder 텍스트를 숨기고 검은 텍스트만 표시</li>
<li class="ms-6 text-pretty" data-v-09555c0e>픽셀 색상 정보를 읽어내어 버튼 클릭, 체크박스 상태 등을 감지하고 이에 반응하는 UI 생성</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">feBlend</code>와 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">feComposite</code>로 모든 논리 게이트(NOT, AND, OR, XOR 등)를 구현하여 SVG 필터가 기능적으로 완전(functionally complete)해짐</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>SVG 필터 내에서 복잡한 로직 프로그래밍이 가능하여 <strong class="font-bold dark:font-extrabold">다단계 클릭재킹 공격에서 조건부 분기, 상태 감지, 인터랙티브한 가짜 UI를 구현</strong> 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Google Docs를 대상으로 한 실제 공격 데모 성공 - 버튼 클릭, CAPTCHA 입력, 텍스트박스 포커스 상태 감지, 아이템 추가 감지 등 여러 단계를 거치는 복잡한 공격을 구현하여 Google VRP에서 $3,133.70 보상 획득</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">QR 코드 생성 공격</strong> - SVG 필터 내에서 Reed-Solomon 오류 정정을 구현하여 iframe에서 추출한 데이터를 QR 코드로 인코딩하고, 사용자가 이를 스캔하도록 유도하여 데이터 유출 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>기존 클릭재킹 연구들은 SVG 필터를 요소 숨김 용도로만 언급했으며, SVG 필터 타이밍 공격은 현대 브라우저에서 완화됨 - 이 기법은 완전히 새로운 공격 벡터</li>
<li class="ms-6 text-pretty" data-v-09555c0e>SVG 필터는 constant-time으로 구현되어 픽셀 데이터를 외부로 추출할 수 없지만, 필터 내부에서 로직을 실행하고 시각적 출력을 제공하여 복잡한 공격 시나리오 구현 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>39c3와 Disobey 2026 컨퍼런스에서 CSS/SVG 관련 보안 토크 예정</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.ytn.co.kr/_ln/0134_202511281002243559?utm_source=blog.update.sh&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">15분만 누워있으면 끝...샤워부터 건조까지 해주는 &#39;인간 세탁기&#39; [지금이뉴스]</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251207200600/https://www.ytn.co.kr/_ln/0134_202511281002243559?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>야마다홀딩스가 누워서 15분 만에 샤워부터 건조까지 자동으로 완료되는 <strong class="font-bold dark:font-extrabold">&#39;미라이 인간 세탁기&#39;</strong>를 출시 예정</li>
<li class="ms-6 text-pretty" data-v-09555c0e>판매가는 <strong class="font-bold dark:font-extrabold">6000만 엔(약 5억 6500만 원)</strong>으로 책정됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>1970년 오사카 박람회에서 처음 공개됐으나 상품화되지 못했다가, 2025년 4월 오사카간사이 엑스포에서 큰 관심을 받아 판매가 결정됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>도쿄 도시마구 &#39;LABI 이케부쿠로 본점&#39;에서 다음 달 25일부터 전시 및 고객 체험 공간 운영 예정</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">길이 2.3m 캡슐 안에 누워 미세 거품을 이용</strong>해 세정·헹굼·건조 과정이 자동으로 진행됨(전체 소요 시간 15분)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>목욕 중 등 부위 센서가 건강 상태를 측정하고, 영상과 음악도 제공하는 부가 기능 탑재</li>
<li class="ms-6 text-pretty" data-v-09555c0e>현재 <strong class="font-bold dark:font-extrabold">체험 신청이 4만 건을 넘었으며</strong>, 정식 판매일은 아직 미정</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025-12-01 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2025-12-01</id>
        <link href="https://blog.update.sh/weekly-urls/2025-12-01"/>
        <updated>2025-11-30T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://inventwithpython.com/blog/sweigarts-law-of-pep-8-complaints.html?utm_source=blog.update.sh&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">Python Violates PEP 8</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251124152503/https://inventwithpython.com/blog/sweigarts-law-of-pep-8-complaints.html?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=45507766&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Sweigart&#39;s Law of PEP 8 Complaints</strong>: PEP 8 위반에 대한 불만은 <strong class="font-bold dark:font-extrabold">항상</strong> camelCase 대신 snake_case를 사용하지 않았다는 것이며, PEP 8의 다른 부분에 대한 불만은 <strong class="font-bold dark:font-extrabold">결코</strong> 없다는 법칙</li>
<li class="ms-6 text-pretty" data-v-09555c0e>PEP 8은 Python 코드 작성을 위한 스타일 가이드이지만, 가장 중요한 부분은 &quot;A Foolish Consistency is the Hobgoblin of Little Minds&quot; 섹션으로, <strong class="font-bold dark:font-extrabold">프로젝트 내 일관성이 PEP 8 준수보다 더 중요</strong>하며 때로는 PEP 8을 위반해도 괜찮다고 명시함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>&quot;코드는 작성되는 것보다 읽히는 경우가 더 많다&quot;는 통찰에 따라 코드 가독성이 중요하지만, <strong class="font-bold dark:font-extrabold">컴퓨터는 스타일을 신경 쓰지 않으며</strong> 프로그램이 정상 작동하는 데 필수적이지 않음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Bike Shedding(자전거 창고 논쟁)</strong>: 소프트웨어 개발자들이 복잡한 기술 문제보다 이해하기 쉬운 사소한 코드 스타일 문제에 과도하게 집중하는 경향이 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>저자는 camelCase를 선호하지만, 책 &quot;Automate the Boring Stuff with Python&quot;의 가장 흔한 불만이 &quot;PEP 8을 따르지 않는다&quot;였으며, 3판에서 snake_case로 변경한 후 이러한 불만이 사라짐(다른 PEP 8 위반 사항은 여전히 존재하지만 지적받지 않음)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>코드 스타일 가이드의 목적은 <strong class="font-bold dark:font-extrabold">논쟁을 방지</strong>하고 일관성 있는 규칙을 제공하는 것이며, Black이나 Ruff 같은 코드 포맷팅 도구로 강제할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>스타일 가이드에 대한 호소는 종종 <strong class="font-bold dark:font-extrabold">불평하는 사람의 개인적 선호를 선택적으로 강요</strong>하는 것에 불과함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>PEP 8 불만에 대처하는 저자의 조언
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>무시하거나, 코드 포맷팅 도구 설정을 요구하거나, 하위 호환성 문제를 언급하거나, 최소한의 변경(snake_case로만 변경)을 수용하는 등의 방법 제시</li>
<li class="ms-6 text-pretty" data-v-09555c0e>낮은 노력으로 프로젝트에 기여자 타이틀을 얻으려는 시도를 걸러내기 위한 실용적 접근</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Python 자체도 PEP 8을 위반함</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">math.pi</code>(ALL_CAPS 아님), <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">unittest.setUp()</code>(camelCase 사용), <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">int</code>/<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">str</code>(대문자 시작 안 함), <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">re.IGNORECASE</code>(단어 구분 없음) 등 수많은 예시가 존재하며, 역사적 이유로 &quot;수정&quot;하는 것은 비용 대비 효과가 없음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>소프트웨어 개발은 기술적 작업만큼이나 <strong class="font-bold dark:font-extrabold">사회적 작업</strong>이며, 코드 스타일 논쟁은 생산성을 저해하는 불필요한 장애물이 될 수 있으므로 코드 포맷팅 도구에 맡기는 것이 최선의 해결책</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.yna.co.kr/view/AKR20251126129551017?utm_source=blog.update.sh&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">네이버, 두나무 인수…20조원 규모 &#39;핀테크 공룡&#39; 탄생(종합) | 연합뉴스</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://archive.md/2TlJq?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>네이버가 두나무를 인수하여 <strong class="font-bold dark:font-extrabold">세계 최초로 가상자산 사업을 동시에 영위하는 글로벌 플랫폼 기업</strong>이 됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>네이버파이낸셜과 두나무가 각각 이사회를 열고 포괄적 주식 교환 안건을 의결하여, <strong class="font-bold dark:font-extrabold">두나무는 네이버파이낸셜의 자회사이자 네이버의 손자회사</strong>가 됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>주식교환 비율은 1대 2.54(두나무 1주를 네이버파이낸셜 2.54주로 교환)이며, <strong class="font-bold dark:font-extrabold">기업가치 20조원 규모의 초대형 금융플랫폼</strong>이 탄생함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이번 합병의 배경은 네이버가 AI 분야에서 글로벌 빅테크의 후발주자이며 광고·커머스 사업의 한정적 확장성에 직면하면서 <strong class="font-bold dark:font-extrabold">새로운 활로를 모색</strong>한 것으로 분석됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>두나무 블록체인 플랫폼(기와체인)에서 <strong class="font-bold dark:font-extrabold">원화 스테이블코인을 발행하고 네이버페이에서 결제수단으로 사용</strong>하는 방안이 거론됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>스테이블코인을 담보로 예치금 운용수익 창출, 대출 서비스 제공 등 <strong class="font-bold dark:font-extrabold">네이버가 디지털 금융 플랫폼으로 도약할 발판</strong>이 마련됐다는 평가</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이해진 의장 복귀 이후 글로벌 진출과 AI 사업에 적극적으로 투자해왔으며, <strong class="font-bold dark:font-extrabold">라쿠텐의 가상자산 거래소 인수 성공 사례</strong>가 이번 합병의 참고가 됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>두나무의 블록체인 기술과 네이버 생성형 AI 서비스 결합으로 <strong class="font-bold dark:font-extrabold">AI가 스스로 거래·정산을 수행하는 온체인 에이전트 구현</strong> 가능성 제기</li>
<li class="ms-6 text-pretty" data-v-09555c0e>금산분리 규제 리스크가 있으나 양사 모두 전통 금융업자가 아니어서 <strong class="font-bold dark:font-extrabold">해당 규제에 저촉되지 않을 전망</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>네이버는 AI, 블록체인, 결제 인프라 기술을 통해 <strong class="font-bold dark:font-extrabold">웹3 환경에서의 원동력을 확보하고 디지털 자산 시장 기술 저변을 확대</strong>하겠다고 밝힘</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://thehackernews.com/2025/11/years-of-jsonformatter-and-codebeautify.html?utm_source=blog.update.sh&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">Years of JSONFormatter and CodeBeautify Leaks Expose Thousands of Passwords and API Keys</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251126124730/https://thehackernews.com/2025/11/years-of-jsonformatter-and-codebeautify.html?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>보안 회사 watchTowr Labs가 JSONformatter, CodeBeautify 같은 온라인 코드 포맷팅 도구에서 <strong class="font-bold dark:font-extrabold">80,000개 이상의 파일 데이터셋을 수집</strong>하여 심각한 보안 문제를 발견함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>정부, 통신, 금융, 의료, 중요 기반시설 등 민감한 분야 조직들이 이러한 사이트에 <strong class="font-bold dark:font-extrabold">비밀번호, 인증 키, DB 자격증명, AWS 키, Active Directory 자격증명 등을 무분별하게 붙여넣기</strong>하고 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>수집된 데이터는 <strong class="font-bold dark:font-extrabold">5년치 JSONFormatter 콘텐츠와 1년치 CodeBeautify 콘텐츠로 총 5GB 이상의 JSON 데이터</strong>에 해당함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 도구들은 포맷된 JSON이나 코드를 <strong class="font-bold dark:font-extrabold">예측 가능한 URL 형식의 공유 가능한 링크로 저장</strong>하는 기능을 제공하며, &quot;Recent Links&quot; 페이지도 존재해 크롤러로 쉽게 수집 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>URL 형식: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">jsonformatter.org/{id}</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">jsonformatter.org/{formatter-type}/{id}</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">codebeautify.org/{formatter-type}/{id}</code> 등 <strong class="font-bold dark:font-extrabold">단순하고 예측 가능한 구조</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>유출된 정보 사례: Jenkins 비밀키, 사이버보안 회사의 암호화된 자격증명, 은행의 KYC 정보, 주요 금융거래소의 AWS 자격증명, 은행 Active Directory 자격증명 등</li>
<li class="ms-6 text-pretty" data-v-09555c0e>watchTowr가 <strong class="font-bold dark:font-extrabold">가짜 AWS 액세스 키를 업로드한 결과, 48시간 후 악의적 행위자들이 이를 악용 시도</strong>했으며, 이는 이미 공격자들이 이러한 사이트를 적극적으로 스크래핑하고 있음을 증명함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>현재 JSONFormatter와 CodeBeautify는 <strong class="font-bold dark:font-extrabold">저장 기능을 임시 비활성화</strong>하고 &quot;개선 작업 중&quot;이며 &quot;NSFW 콘텐츠 방지 조치 강화&quot; 중이라고 밝힘</li>
<li class="ms-6 text-pretty" data-v-09555c0e>watchTowr는 이 변화가 <strong class="font-bold dark:font-extrabold">2024년 9월경 영향받은 조직들에 대한 알림 이후 발생</strong>한 것으로 추정함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>보안 연구원 Jake Knott는 &quot;AI 에이전트 플랫폼이 더 필요한 게 아니라, <strong class="font-bold dark:font-extrabold">중요 조직들이 임의의 웹사이트에 자격증명을 붙여넣는 행위를 중단</strong>해야 한다&quot;고 지적함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://sjer.red/blog/2024-12-21/?utm_source=blog.update.sh&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">TIL: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">satisfies</code> is my favorite TypeScript keyword</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251126153932/https://sjer.red/blog/2024-12-21/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=45968310&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://lobste.rs/s/risea0?utm_source=blog.update.sh&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">Lobsters</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>TypeScript의 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">satisfies</code> 키워드는 타입 시스템에서 매우 유용한 기능으로, 최근 TypeScript 작업을 하며 발견한 저자의 favorite 키워드임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>TypeScript는 항상 가장 정확한(precise) 타입을 추론하지 않음 - 예를 들어 객체 리터럴의 문자열 속성은 literal 타입이 아닌 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">string</code>으로 추론됨(객체가 변경 가능하기 때문)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>변수에 명시적 타입 어노테이션을 사용하면 더 구체적인 타입을 지정할 수 있지만, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">satisfies</code> 키워드가 더 나은 대안이 될 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold"><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">satisfies</code>는 값이 특정 타입에 &quot;최소한 할당 가능해야 함&quot;을 보장</strong>하면서도, TypeScript가 실제 값을 기반으로 더 구체적인 타입을 추론하도록 허용함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">satisfies</code>의 핵심 장점: 명시적 타입 어노테이션과 달리 <strong class="font-bold dark:font-extrabold">TypeScript가 제공된 값을 기반으로 더 specific한 타입을 추론</strong>할 수 있게 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>예시: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">Person</code> 타입을 만족하면서도 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">isCool: true</code>라는 더 구체적인 literal 타입을 유지해야 하는 경우, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">satisfies Person</code>을 사용하면 간단히 해결됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">satisfies</code>는 타입 안전한 방식으로 값을 캐스팅하는 것과 유사하며, 타입 체크와 정밀한 타입 추론을 동시에 달성할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>할당된 변수의 타입은 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">satisfies</code>에 제공된 타입이 아니라 <strong class="font-bold dark:font-extrabold">실제 값의 타입을 기반</strong>으로 결정됨</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://github.com/unhappychoice/gitlogue?utm_source=blog.update.sh&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">GitHub - unhappychoice/gitlogue: A cinematic Git commit replay tool for the terminal, turning your Git history into a living, animated story.</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251126134322/https://github.com/unhappychoice/gitlogue?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=45964956&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">gitlogue</strong>는 Git 커밋 히스토리를 터미널에서 영화처럼 재생하는 도구로, 코드 변경사항을 애니메이션과 함께 시각적으로 보여줌</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Rust로 개발되어 빠르고 가벼우며, 실제 타이핑 애니메이션, 커서 이동, 삭제, 파일 작업을 현실감 있게 재현함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Tree-sitter 기반 구문 강조</strong>(26개 언어 지원), 프로젝트 파일 트리, 9가지 내장 테마 및 커스터마이징 기능 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e>다양한 설치 방법 지원: curl 스크립트, Homebrew, Cargo, Pacman, Nix, 소스 빌드</li>
<li class="ms-6 text-pretty" data-v-09555c0e>주요 사용 사례
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">스크린세이버 모드</strong>(무한 랜덤 커밋 재생)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>교육 목적(코드 진화 과정 시각화)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>프레젠테이션, 콘텐츠 제작, 터미널 데스크탑 꾸미기, &quot;바쁜 척하기&quot; 모드</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>커밋 범위 지정, 작성자/날짜 필터링, 재생 순서 변경, 루프 재생, 파일 패턴 무시 등 다양한 옵션 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">~/.config/gitlogue/config.toml</code>를 통해 기본 테마, 타이핑 속도, 배경 설정 등 구성 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">주의사항</strong>: 전통적인 스크린세이버 기능(전원 관리, 화면 블랭킹)은 없으며, OLED 디스플레이에서 장시간 사용 시 번인 위험 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>ISC 라이선스 오픈소스 프로젝트로, 기여 환영하며 상세한 가이드 문서 제공</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://bringbackdoors.com/?utm_source=blog.update.sh&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">Bring Back Doors</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251127023512/https://bringbackdoors.com/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46063072&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=24653&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>호텔들이 &quot;미학&quot;이라는 명목으로 욕실 문을 제거하는 트렌드에 대한 불만을 표현하며, 이는 침대만큼 기본적이어야 할 요소가 희생된 것이라고 비판함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>호텔들이 재료비 절감과 공간 확대 효과를 위해 욕실 문을 없애지만, <strong class="font-bold dark:font-extrabold">투숙객의 프라이버시와 존엄성은 고려하지 않는다</strong>고 지적함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">욕실 문이 있는 호텔과 없는 호텔을 정리한 웹사이트를 구축</strong>하여 투숙객들이 예약 전에 확인할 수 있도록 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>수백 개의 호텔에 이메일을 보내 두 가지를 확인함: 문이 완전히 닫히는지, 유리로 만들어졌는지</li>
<li class="ms-6 text-pretty" data-v-09555c0e>문이 완전히 닫히고 유리가 아닌 호텔들을 <strong class="font-bold dark:font-extrabold">가격대와 도시별로 분류</strong>하여 욕실 문이 보장된 숙소를 쉽게 찾을 수 있도록 정리함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>예약하려는 호텔이 이전 투숙객에 의해 문이 없다고 보고되었는지 빠르게 확인 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>욕실 문이 없는 호텔에 묵었던 사람들이 호텔명을 <a href="mailto:bringbackdoors@gmail.com" rel="noopener noreferrer" class="text-teal-600 underline hover:text-teal-500 dark:text-teal-400 dark:hover:text-teal-300">bringbackdoors@gmail.com</a>으로 이메일 보내거나, Instagram DM으로 호텔명과 사진을 제보할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>제보된 호텔들을 <strong class="font-bold dark:font-extrabold">공개적으로 공유(public shaming)</strong>하여 미래 여행객들의 존엄성을 보호하는 것이 목적</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.euronews.com/2025/11/29/travel-disruption-thousands-of-airbus-planes-grounded-after-faulty-software-detected?utm_source=blog.update.sh&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">Thousands of Airbus planes grounded after faulty software detected</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251130035136/https://www.euronews.com/2025/11/29/travel-disruption-thousands-of-airbus-planes-grounded-after-faulty-software-detected?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>소프트웨어 문제로 인해 전 세계 항공사들이 <strong class="font-bold dark:font-extrabold">약 6,000대의 에어버스 A320 계열 항공기를 운항 중단</strong>해야 했으며, 주말 동안 항공편 지연 및 취소가 발생함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 문제는 지난달 발생한 <strong class="font-bold dark:font-extrabold">항공기 고도 급강하 사고와 연관</strong>되어 있을 가능성이 있으며, 해당 사고로 15명이 부상을 입음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>에어버스는 10월 30일 JetBlue 사고 조사 결과, <strong class="font-bold dark:font-extrabold">강한 태양 복사선이 A320 계열 항공기의 비행 제어에 중요한 데이터를 손상</strong>시킬 수 있다고 밝힘</li>
<li class="ms-6 text-pretty" data-v-09555c0e>문제의 원인은 <strong class="font-bold dark:font-extrabold">항공기 탑재 컴퓨터의 소프트웨어 업데이트</strong>였으며, 결함이 있는 소프트웨어는 Thales사가 제작한 ELAC(Elevator and Aileron Computer)임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>EU 항공안전청(EASA)과 미국 연방항공청(FAA)은 항공사들에게 <strong class="font-bold dark:font-extrabold">신속한 소프트웨어 업데이트</strong>를 통해 문제를 해결할 것을 요구함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>미국에서는 약 500대의 등록 항공기가 영향을 받았으며, 추수감사절 연휴 귀환 시기인 <strong class="font-bold dark:font-extrabold">미국의 가장 바쁜 여행 시즌과 겹침</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>American Airlines는 480대의 A320 계열 항공기 중 209대가 영향을 받았으며, <strong class="font-bold dark:font-extrabold">항공기당 약 2시간의 수정 작업</strong>이 필요하다고 밝힘</li>
<li class="ms-6 text-pretty" data-v-09555c0e>EasyJet은 승객들에게 지연 가능성을 경고했고, Air India는 엔지니어들이 업데이트 작업 중이며 <strong class="font-bold dark:font-extrabold">대상 항공기의 40% 이상 작업을 완료</strong>했다고 발표함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>JetBlue 사고는 멕시코 칸쿤에서 뉴저지 뉴어크로 가는 비행 중 발생했으며, 최소 15명의 승객이 부상당해 병원으로 이송되었고 <strong class="font-bold dark:font-extrabold">항공기는 플로리다 탬파로 회항</strong>함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>에어버스는 보잉과 함께 세계 최대 항공기 제조업체 중 하나임</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.yna.co.kr/view/AKR20251129036051030?utm_source=blog.update.sh&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">쿠팡 &quot;개인정보 노출계정 3천370만개&quot;…사실상 다 털렸다(종합) | 연합뉴스</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251130040623/https://www.yna.co.kr/view/AKR20251129036051030?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>쿠팡이 개인정보 유출 규모를 <strong class="font-bold dark:font-extrabold">3천370만 계정</strong>으로 확인했다고 29일 발표</li>
<li class="ms-6 text-pretty" data-v-09555c0e>당초 18일에는 약 4천500개 계정의 정보가 노출됐다고 밝혔으나, 후속 조사 결과 <strong class="font-bold dark:font-extrabold">실제 피해 규모가 7천500배 수준으로 급증</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>노출된 정보는 <strong class="font-bold dark:font-extrabold">이름, 이메일 주소, 배송지 주소록(이름·전화번호·주소), 일부 주문정보</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>결제정보, 신용카드 번호, 로그인 정보는 별도 관리되어 <strong class="font-bold dark:font-extrabold">노출되지 않았다</strong>고 설명</li>
<li class="ms-6 text-pretty" data-v-09555c0e>쿠팡의 3분기 활성고객 수는 2천470만명, 와우 회원 수는 1천400만명(2023년 말 기준)으로 알려져 있어, <strong class="font-bold dark:font-extrabold">노출 계정 수가 알려진 고객 수보다 많은 상황</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>무단 접근은 <strong class="font-bold dark:font-extrabold">6월 24일부터 해외 서버를 통해</strong> 발생한 것으로 추정되며, 쿠팡은 6일 오후 6시 38분 무단 접근 발생 후 <strong class="font-bold dark:font-extrabold">12일이 지난 18일 오후 10시 52분에 인지</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>현재 무단 접근 경로를 차단하고 내부 모니터링을 강화했으며, 독립 보안기업 전문가를 영입해 조사 중</li>
<li class="ms-6 text-pretty" data-v-09555c0e>경찰청, 한국인터넷진흥원(KISA), 개인정보보호위원회와 협력하여 사고 대응 진행 중</li>
<li class="ms-6 text-pretty" data-v-09555c0e>쿠팡은 고객에게 사과하며 <strong class="font-bold dark:font-extrabold">쿠팡 사칭 전화, 문자 메시지 등에 주의</strong>할 것을 당부</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025-11-24 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2025-11-24</id>
        <link href="https://blog.update.sh/weekly-urls/2025-11-24"/>
        <updated>2025-11-23T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://blog.google/products/android/quick-share-airdrop/?utm_source=blog.update.sh&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">Android and iPhone users can now share files, starting with the Pixel 10 family.</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://news.ycombinator.com/item?id=45994854&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=24512&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Google이 <strong class="font-bold dark:font-extrabold">Quick Share와 AirDrop 간의 호환성</strong>을 발표하며, iPhone과 Android 기기 간 파일 전송을 더욱 쉽게 만듦</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 기능은 오늘부터 <strong class="font-bold dark:font-extrabold">Pixel 10 제품군에 먼저 출시</strong>되기 시작함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">보안을 핵심에 두고 개발</strong>되었으며, 독립적인 보안 전문가들의 테스트를 거친 강력한 보안 장치로 데이터를 보호함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>RCS 메시징 및 알 수 없는 추적기 경고 작업에 이어, <strong class="font-bold dark:font-extrabold">운영체제 간 호환성 개선</strong>을 위한 지속적인 노력의 일환임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>향후 사용자 경험을 개선하고 <strong class="font-bold dark:font-extrabold">더 많은 Android 기기로 확대</strong>할 계획임</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://mastoreader.io/?url=https%3A%2F%2Fmastodon.gamedev.place%2F%40TomF%2F115589875974658415&amp;utm_source=blog.update.sh&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">Masto Reader</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://archive.md/BenT6?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=46009962&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=24561&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
Title: Masto Reader
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>저자는 Half-Life 2에서 플레이어가 진행하지 못하게 만든 문과 관련된 버그에 대해 설명합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 버그는 2013년에 Half-Life 2를 VR로 포팅하려는 시도 중에 발견되었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>문제는 경비병의 바운딩 박스가 문이 열릴 때 문의 경로와 교차하는 것과 관련이 있었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>경비병이 문에 너무 가까이 배치되어 문이 그의 발가락을 건드렸습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 충돌로 인해 문이 튕겨 나가 잠기면서 플레이어를 가두게 되었습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 버그는 Half-Life 2의 원래 릴리스에 존재했지만 발견되지 않았습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>구형(x87) 명령어 세트와 신형(SSE) 명령어 세트 간의 부동 소수점 정밀도 차이가 중요한 역할을 했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>x87 명령어 세트의 가변 정밀도는 경비병의 약간의 회전을 허용하여 그의 발가락을 문의 경로에서 벗어나게 했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>SSE 명령어 세트의 더 일관된 정밀도는 물리 엔진 계산과 결합되어 경비병이 덜 회전하게 만들어 그의 발가락이 문의 경로에 남아 있게 했습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>버그 수정은 경비병을 1밀리미터 뒤로 이동시키는 간단한 조정이었으며, 이는 겉보기에 사소한 문제가 게임 개발에서 어떻게 중대한 결과를 초래할 수 있는지를 보여줍니다.</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.space.com/space-exploration/international-space-station/we-were-genuinely-astonished-this-moss-survived-9-months-outside-the-international-space-station-and-could-still-grow-on-earth?utm_source=blog.update.sh&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">&#39;We were genuinely astonished&#39;: This moss survived 9 months outside the International Space Station and could still grow on Earth</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251123170344/https://www.space.com/space-exploration/international-space-station/we-were-genuinely-astonished-this-moss-survived-9-months-outside-the-international-space-station-and-could-still-grow-on-earth?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>일본 홋카이도 대학 연구팀이 이끄는 연구에서 이끼 포자가 <strong class="font-bold dark:font-extrabold">국제우주정거장(ISS) 외부의 극한 우주 환경에서 9개월간 노출된 후에도 생존</strong>하여 지구에서 발아할 수 있음을 확인함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>연구진은 2022년 3월 Cygnus 화물선으로 &quot;spreading earthmoss&quot; 이끼의 포자체(sporophyte)를 ISS로 보냈고, 283일간 우주정거장 외벽에 부착된 후 2023년 1월 Dragon 캡슐로 귀환함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>사전 지상 실험에서 <strong class="font-bold dark:font-extrabold">자외선(UV) 복사가 이끼에 가장 큰 스트레스 요인</strong>임을 확인했으며, 포자체가 어린 이끼나 줄기세포보다 우주 환경을 훨씬 잘 견딜 수 있음을 발견함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>연구 결과 <strong class="font-bold dark:font-extrabold">80% 이상의 포자체가 생존</strong>했고, 생존자 중 89%가 실험실에서 성공적으로 발아함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>우주 비행으로 인해 광합성 주요 색소인 엽록소 a가 20% 감소했지만, 포자는 건강한 상태를 유지함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>연구진이 개발한 수학 모델에 따르면 포자체는 우주에서 <strong class="font-bold dark:font-extrabold">약 5,600일(15년 이상) 생존 가능</strong>할 것으로 예측됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이끼는 지구에서 4억 년 이상 전에 진화한 가장 오래된 식물 중 하나로, 물관계가 없지만 북극 툰드라부터 사하라 사막까지 극한 환경에서 번성하는 강인함을 지님</li>
<li class="ms-6 text-pretty" data-v-09555c0e>연구책임자 후지타는 &quot;지구에서 진화한 생명체가 세포 수준에서 우주 환경을 견딜 수 있는 본질적 메커니즘을 가지고 있다는 놀라운 증거&quot;라고 설명함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 연구는 <strong class="font-bold dark:font-extrabold">달과 화성 같은 외계 환경에서 생태계를 구축하는 새로운 가능성</strong>을 열어줄 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이번 연구 결과는 2025년 11월 20일 학술지 iScience에 게재됨</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025-11-17 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2025-11-17</id>
        <link href="https://blog.update.sh/weekly-urls/2025-11-17"/>
        <updated>2025-11-16T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://kotaku.com/pokemon-mario-nintendo-two-versions-2000642053?utm_source=blog.update.sh&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">Ever Wondered Why There&#39;s Two Of Every Pokémon Game?</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251111075917/https://kotaku.com/pokemon-mario-nintendo-two-versions-2000642053?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Pokémon 시리즈가 Red/Blue 등 두 가지 버전으로 출시되는 이유는 놀랍도록 단순한 발상에서 시작됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>대부분의 게임이 가격대별 여러 에디션을 내놓지만 <strong class="font-bold dark:font-extrabold">같은 게임</strong>인 반면, Pokémon은 1998년 영어판 출시부터 각 버전이 미묘하게(하지만 팬들에겐 중요하게) 달랐음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>두 버전 전략은 마케팅 관점에서 혼란을 야기할 수 있지만, 시리즈 팬들에게는 <strong class="font-bold dark:font-extrabold">큰 특징이자 판매 포인트</strong>로 작용함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>최근 Nintendo 주주총회에서 <strong class="font-bold dark:font-extrabold">미야모토 시게루</strong>가 그 이유를 밝힘</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Pokémon 창시자 <strong class="font-bold dark:font-extrabold">타지리 사토시</strong>가 미야모토에게 &quot;Mario를 넘어서려면 <strong class="font-bold dark:font-extrabold">고객 한 명당 게임을 두 장씩 팔아야 한다</strong>&quot;고 농담처럼 말했던 것이 계기</li>
<li class="ms-6 text-pretty" data-v-09555c0e>미야모토는 이것이 <strong class="font-bold dark:font-extrabold">Pokémon Red와 Green(일본 최초 버전, 1996년)이 만들어진 이유 중 하나</strong>라고 설명함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>실제로는 이 전략이 판매량에서 Mario를 항상 이긴 것은 아님</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Pokémon이 Mario를 이긴 경우는 <strong class="font-bold dark:font-extrabold">Game Boy Color의 Gold/Silver</strong>와 <strong class="font-bold dark:font-extrabold">Game Boy Advance의 Ruby/Sapphire</strong> 두 번뿐</li>
<li class="ms-6 text-pretty" data-v-09555c0e>DS, 3DS, Switch에서는 Mario가 우세했으며(Wii/Wii U에는 본편 Pokémon 게임 없음), Mario Kart 8은 69.56백만 장을 판매해 Pokémon Sword/Shield(26.84백만)와 Scarlet/Violet(27.15백만)을 크게 앞섬</li>
<li class="ms-6 text-pretty" data-v-09555c0e>그럼에도 두 버전 전략은 Pokémon 시리즈의 <strong class="font-bold dark:font-extrabold">엄청난 성공에 해가 되지 않았으며</strong>, 독특한 판매 방식으로 자리잡음</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://techblog.lycorp.co.jp/ko/p-canvas-a-technique-for-understanding-your-team?utm_source=blog.update.sh&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">P-Canvas, 팀을 이해하기 위한 엔지니어링 기법</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251111080123/https://techblog.lycorp.co.jp/ko/p-canvas-a-technique-for-understanding-your-team?utm_source=blog.update.sh&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">Archive</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>ABC Platform 팀은 &#39;재생산 비용을 낮추는 행위&#39;를 엔지니어링으로 정의하며, 이 관점에서 팀 매니징도 시스템화할 수 있다고 보고 <strong class="font-bold dark:font-extrabold">&#39;매니징 엔지니어링&#39;</strong> 개념을 도입함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">P-Canvas</strong>는 개인의 성장과 현재 상태를 한 장의 캔버스에 시각화하는 매니징 프레임워크로, 5개월 단위로 매달 한 번씩 멤버가 직접 작성한 뒤 이를 기반으로 1on1 미팅을 진행하는 방식으로 운영됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>P-Canvas 도입 배경
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>자율성을 중시하다가 자칫 방임으로 흐를 뻔한 경험</li>
<li class="ms-6 text-pretty" data-v-09555c0e>기존 1on1 미팅이 멤버 주도가 아닌 리드 주도로 흐르거나, 대화 주제가 불명확하거나, 추상적 격려로 끝나는 등 효과적으로 활용되지 못함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>멤버의 불만을 조기에 감지하고 구체적인 대화를 나누기 위한 체계적인 도구의 필요성</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>P-Canvas는 <strong class="font-bold dark:font-extrabold">2차원 좌표계</strong>(소통 적극성, 성장과 성과 관계, 안정/도전 과제 감정 상태), <strong class="font-bold dark:font-extrabold">척도형 지표</strong>(업무 비중, 참여도, 만족도, 동기 부여, 완전한 솔직함), <strong class="font-bold dark:font-extrabold">헥사곤 스킬 차트</strong>(팀/개인/상위 조직 관점의 6가지 역량), <strong class="font-bold dark:font-extrabold">텍스트 영역</strong>(자유 회고 및 목표)으로 구성됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>P-Canvas의 핵심 가치는 <strong class="font-bold dark:font-extrabold">절대 점수가 아닌 변화량 추적</strong>에 있으며, 매월 반복하면서 각 지표의 변화를 관찰하고 &#39;왜 이 부분이 변했는가?&#39;라는 질문에서 시작되는 대화를 통해 서로를 이해함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>P-Canvas 활용 효과
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">조기 신호 감지</strong>: 데이터 패턴 변화를 통해 문제를 조기에 발견(예방적 관리)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">구체적 대화</strong>: 추상적 질문 대신 데이터 기반의 구체적 대화 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">해결책 공동 탐색</strong>: 멤버가 원하는 방향을 명확히 파악하고 함께 대응</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">변화 추적</strong>: 회복과 성장 과정을 관찰하며 효과적인 접근법 학습</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>첫 번째 5개월 사이클에서는 모든 멤버에게 <strong class="font-bold dark:font-extrabold">동일한 표준 지표</strong>를 적용해 팀 전체 경향과 개인별 차이를 파악하고, 두 번째 사이클부터는 각 멤버의 상황에 맞게 <strong class="font-bold dark:font-extrabold">지표를 개인화</strong>하여 맞춤형 캔버스로 진화시킴</li>
<li class="ms-6 text-pretty" data-v-09555c0e>운영 원칙: P-Canvas는 <strong class="font-bold dark:font-extrabold">평가가 아닌 성장 기록 도구</strong>이며, 1on1 미팅에서는 서로가 &#39;메타 헬퍼&#39;가 되어 동등한 관계에서 대화하고, 가장 중요한 전제 조건은 <strong class="font-bold dark:font-extrabold">솔직한 태도</strong>임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>P-Canvas를 통해 복잡한 인간 관계와 개인의 성장을 시스템화하려는 시도로, 기술 엔지니어링처럼 매니징도 지속적인 리팩토링과 최적화가 필요한 영역이라는 철학을 담고 있음</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://blog.dochia.dev/blog/json-isnt-json/?utm_source=blog.update.sh&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">JSON is not JSON Across Languages | Dochia CLI Blog</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251111080404/https://blog.dochia.dev/blog/json-isnt-json/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=45385373&amp;utm_source=blog.update.sh&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">HackerNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>JSON은 명세상 단순하고 보편적인 데이터 형식으로 설계되었으나, <strong class="font-bold dark:font-extrabold">실제로는 프로그래밍 언어와 라이브러리마다 해석 방식이 다르다</strong>는 문제를 가지고 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">숫자 정밀도 문제</strong>: JavaScript는 모든 숫자를 64비트 부동소수점으로 처리하여 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">2^53-1</code>보다 큰 정수는 정밀도를 잃지만, Python과 Java는 큰 정수를 올바르게 처리함. Go는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">interface{}</code>로 언마샬할 때 정밀도를 잃지만 명시적 타입 사용 시 정확함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">소수점 정밀도</strong>: 0.1 + 0.2 같은 부동소수점 연산은 IEEE 754 특성상 모든 언어에서 부정확하며, <strong class="font-bold dark:font-extrabold">금융 데이터 처리 시 반드시 Decimal/BigDecimal 타입을 사용</strong>해야 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">유니코드 정규화</strong>: &quot;José&quot;를 단일 코드포인트(U+00E9) 또는 결합 형태(e + ́)로 표현 가능하며, 언어마다 정규화 방식이 달라 <strong class="font-bold dark:font-extrabold">동일하게 보이는 문자열이 비교 시 다르게 처리</strong>될 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">객체 키 순서</strong>: JSON 명세는 키 순서가 무의미하다고 하지만, JavaScript와 Python 3.7+은 삽입 순서를 보존하고 Go는 알파벳 순으로 정렬하며, 이는 <strong class="font-bold dark:font-extrabold">HMAC/서명 등 암호화 작업에서 치명적인 불일치</strong>를 야기함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Null vs Undefined vs Missing</strong>: JavaScript는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">null</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">undefined</code>, 없는 키를 구분하지만 Python과 Go는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">null</code>과 없는 키를 모두 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">None</code>/<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">nil</code>로 처리하여 <strong class="font-bold dark:font-extrabold">의미적 차이를 구분할 수 없음</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">날짜/시간 처리</strong>: JSON에 네이티브 날짜 타입이 없어 ISO 8601 문자열, Unix 타임스탬프(초/밀리초), 커스텀 형식 등이 혼재하며, <strong class="font-bold dark:font-extrabold">언어마다 파싱 방식이 달라 혼란 발생</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">에러 처리 불일치</strong>: 중복 키, 후행 쉼표, 선행 0, 작은따옴표 등 비정상 JSON에 대해 언어와 라이브러리마다 허용/거부 여부가 다름. Jackson은 설정으로 엄격 모드 활성화 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">실제 사례</strong>: Twitter API는 큰 정수 ID 손실 방지를 위해 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">id</code>와 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">id_str</code> 둘 다 제공, PostgreSQL의 JSON은 원본 유지하지만 JSONB는 정규화, MongoDB는 Extended JSON으로 추가 타입 지원</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">해결 전략</strong>: 스키마 검증 도구(Ajv, jsonschema) 사용, 데이터 타입 정규화 규칙 수립, 정밀도를 보존하는 라이브러리 선택(json-bigint, Jackson의 BigDecimal 설정), <strong class="font-bold dark:font-extrabold">언어 간 호환성 테스트를 CI/CD 파이프라인에 포함</strong>하여 프로덕션 배포 전 문제 감지</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.jonoalderson.com/performance/youre-loading-fonts-wrong/?utm_source=blog.update.sh&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">You’re loading fonts wrong (and it’s crippling your performance)</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251111080554/https://www.jonoalderson.com/performance/youre-loading-fonts-wrong/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=45018144&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=22793&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>대부분의 웹사이트는 <strong class="font-bold dark:font-extrabold">폰트를 잘못 로드하고 있으며</strong>, 이는 성능, 접근성, 프라이버시에 심각한 영향을 미침. 폰트는 장식이 아닌 <strong class="font-bold dark:font-extrabold">인프라</strong>로 취급해야 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">폰트 로딩의 역사적 맥락</strong>: 웹 안전 폰트 시대 → sIFR/Cufón 같은 해킹 → <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">@font-face</code> 등장(포맷/라이선스 혼란) → Typekit/Google Fonts 등장으로 편의성 확보, 하지만 성능/프라이버시 문제 발생</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">폰트 작동 원리</strong>: 브라우저의 폰트 렌더링 파이프라인은 등록 → 스타일 결정 → 폰트 매칭 → 글리프 커버리지 확인 → 요청 → 디스플레이 단계로 진행되며, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">font-display</code> 설정에 따라 FOIT/FOUT 발생</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">성능 최적화 핵심 전략</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">WOFF2만 사용</strong>(99%의 경우 충분, 레거시 포맷은 불필요한 부담)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">서브세팅</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">unicode-range</code>로 실제 사용하는 글리프만 제공(수백 KB 절약 가능)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold"><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">font-display: swap</code></strong> 기본 사용, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">size-adjust</code>/<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">ascent-override</code>/<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">descent-override</code>로 폴백 폰트 메트릭 조정하여 CLS 제거</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">프리로드</strong>: <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;link rel=&quot;preload&quot; as=&quot;font&quot; crossorigin&gt;</code>로 중요 폰트를 즉시 요청, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">@font-face</code> 선언은 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">&lt;head&gt;</code>에 인라인</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Variable 폰트는 만능이 아님</strong>: 여러 웨이트가 필요할 때만 유용하며, 2~3개 정적 폰트보다 오히려 클 수 있음. 신중히 평가 후 사용</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">자체 호스팅 필수</strong>: Google Fonts 같은 서드파티 CDN은 GDPR 위반 소지, 레이턴시 증가, 캐시 공유 불가(최신 브라우저는 사이트별 캐시 분리). 자체 호스팅이 빠르고 안전함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">시스템 폰트 스택 활용</strong>: 커스텀 폰트 없이도 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">-apple-system, BlinkMacSystemFont, Segoe UI, Roboto</code> 등 시스템 폰트로 빠르고 안정적인 렌더링 가능. 폴백 설계도 신중히</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">아이콘 폰트 사용 금지</strong>: Font Awesome 같은 아이콘 폰트는 접근성 문제(스크린 리더), 깨짐, 과도한 용량 등 문제 많음. 인라인 SVG나 SVG 스프라이트로 대체해야 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">비라틴 문자/RTL/이모지 고려</strong>: 아랍어, 태국어, CJK 등은 무분별한 서브세팅 시 깨질 수 있음. 이모지는 시스템 폰트 사용(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">Apple Color Emoji</code>, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">Noto Color Emoji</code> 등)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">실행 가능한 체크리스트</strong>: WOFF2 단일 포맷, 서브세팅, 프리로드+인라인, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">font-display: swap</code>, 시스템 폴백 메트릭 조정, SVG 아이콘 전환, 글로벌 스크립트 테스트, DevTools/Lighthouse로 성능 측정</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.fastcompany.com/91435192/chatgpt-llm-openai-jobs-amazon?utm_source=blog.update.sh&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">AI isn&#39;t replacing jobs. AI spending is - Fast Company</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251111102457/https://www.fastcompany.com/91435192/chatgpt-llm-openai-jobs-amazon?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=45866243&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=24260&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>수십 년간의 예측에도 불구하고, AI는 현재 광범위한 일자리 대체의 원인이 아니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>대규모 언어 모델(LLM)은 글쓰기와 요약 같은 작업을 수행할 수 있지만, 비즈니스 도입과 영향은 제한적이다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>많은 기업들이 정리해고를 발표하고 이를 AI 탓으로 돌리고 있지만, 이러한 주장은 의문시되고 있다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>생성형 AI 파일럿 프로젝트의 상당수가 실패하고 있으며, 기업들은 AI 도입으로 인한 효율성이나 품질의 극적인 개선을 보지 못하고 있다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>기술 부문의 정리해고는 AI보다는 팬데믹 시기의 급격한 채용에 이은 경제적 압박과 더 관련이 있을 가능성이 높다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>기업들은 그에 상응하는 수익 증가 없이 AI 인프라에 막대한 지출을 하여 재정적 압박을 받고 있다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>AI는 정리해고와 남은 직원들의 업무량 증가를 포함한 비용 절감 조치의 편리한 변명거리로 사용되고 있다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>생성형 AI가 창출하는 수익은 현재 AI 인프라에 대한 자본 지출에 비해 미미하여, 경제 전반의 정리해고를 주도할 가능성은 낮다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>투자자들은 AI 창조자들의 투명성 부족과 대형 기술 기업들의 AI 수익을 분리하기 어려운 점으로 인해 AI 투자에 대한 불확실성에 직면하고 있다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>AI가 일자리를 없앨 것이라는 이야기는 신규 졸업자들을 낙담시키며, 역설적으로 그들을 덜 고용 가능하게 만들고 더 유망한 노력에서 자원을 전용하게 만든다.</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://thenewstack.io/ffmpeg-to-google-fund-us-or-stop-sending-bugs/?utm_source=blog.update.sh&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">FFmpeg to Google: Fund Us or Stop Sending Bugs</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><a href="http://web.archive.org/web/20251112041939/https://thenewstack.io/ffmpeg-to-google-fund-us-or-stop-sending-bugs/?utm_source=blog.update.sh&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">Archive</a> | <a href="https://news.ycombinator.com/item?id=45891016&amp;utm_source=blog.update.sh&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">HackerNews</a> | <a href="https://news.hada.io/topic?id=24307&amp;utm_source=blog.update.sh&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">GeekNews</a></li>
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>FFmpeg는 VLC, Chrome, Firefox, YouTube 등 수많은 플랫폼에서 사용되는 핵심 오픈소스 멀티미디어 프레임워크이지만, 심각하게 자금이 부족한 상태임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Google AI 에이전트가 FFmpeg에서 1995년 게임 Rebel Assault 2의 특정 코덱 관련 매우 사소한 버그를 발견하면서 논쟁이 촉발됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>FFmpeg 팀은 &quot;수조 달러 규모의 기업이 AI로 취미 코드의 보안 문제를 찾아낸 후, 무급 자원봉사자에게 수정을 기대하는 것이 공정한가&quot;라고 문제 제기</li>
<li class="ms-6 text-pretty" data-v-09555c0e>FFmpeg는 거의 전적으로 자원봉사자들에 의해 작성되고 유지보수되며, 특히 어셈블리 언어로 작성되어 수정 작업이 매우 어려움</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Google Project Zero의 새로운 투명성 정책은 보안 이슈 발견 후 일주일 내에 공개하고 90일 공개 타이머를 시작하는데, 이는 자원봉사 개발자들에게 과도한 압박으로 작용함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>libxml2의 전 관리자 Nick Wellnhofer는 매주 여러 시간을 제3자가 보고한 보안 문제 처리에 할애해야 해서 유지보수를 중단하기로 결정함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Google의 Patch Rewards Program은 월 3개 패치 제한 등으로 FFmpeg와 같은 프로젝트에는 너무 제한적임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Chainguard CEO Dan Lorenc은 취약점 공개도 디지털 공유지에 대한 기여이며, 이러한 논쟁이 오히려 잠재적 후원자를 멀어지게 할 수 있다고 반박함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>핵심 문제는 FFmpeg 팀이 AI가 생성한 대량의 CVE를 처리할 재정적·개발 자원이 부족하다는 점</li>
<li class="ms-6 text-pretty" data-v-09555c0e>오픈소스로부터 이익을 얻는 수조 달러 규모 기업들의 실질적 지원 없이는, 중요한 오픈소스 프로젝트들이 더 이상 유지보수되지 않을 위험이 있음</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025-11-10 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2025-11-10</id>
        <link href="https://blog.update.sh/weekly-urls/2025-11-10"/>
        <updated>2025-11-09T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.0xkato.xyz/linux-boot/?utm_source=blog.update.sh&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">The Linux Boot Process: From Power Button to Kernel</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Linux 부팅 과정을 전원 버튼을 누른 시점부터 커널이 실행되기까지 세 단계로 나누어 상세히 설명하는 기술 문서</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Part 1: 전원 버튼부터 커널의 첫 호흡까지</strong> - CPU는 리셋 후 real mode로 시작하여 reset vector(0xFFFFFFF0)로 점프하고, 펌웨어(BIOS 또는 UEFI)가 부트로더(GRUB 등)를 메모리에 로드하여 실행함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>부트로더는 압축된 커널과 setup 프로그램을 메모리에 배치하고, setup 프로그램은 세그먼트 레지스터 정렬, 스택 생성, BSS 영역 초기화, 메모리 맵 수집 등을 수행한 후 첫 C 함수인 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">main</code>을 호출함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Part 2: Real mode 탈출, 32비트 거쳐 64비트 도착</strong> - x86_64 Linux는 long mode(64비트)에서 실행되지만 real mode에서 직접 점프할 수 없어 protected mode(32비트)를 거쳐야 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Protected mode 전환 시 GDT(Global Descriptor Table)와 IDT(Interrupt Descriptor Table)를 로드하고, 인터럽트를 비활성화한 후 CR0 레지스터의 PE 비트를 설정하여 전환함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Long mode 진입을 위해 페이징을 활성화하고(초기에는 2MB 페이지로 identity map 구성), EFER 레지스터의 LME 비트를 설정한 후 64비트 코드로 far return을 수행함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Part 3: 실제 커널 압축 해제, 주소 수정, 자체 이동</strong> - 64비트 stub이 자신의 위치를 파악하고 필요시 안전한 곳으로 복사한 후, 최소한의 IDT(page fault와 NMI 핸들러)를 로드함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">extract_kernel</code> 함수가 커널을 압축 해제(gzip, xz, zstd 등)하고 ELF 헤더를 읽어 각 섹션을 올바른 위치에 복사하며, 커널이 다른 주소에 로드된 경우 relocation을 적용하여 포인터와 주소를 수정함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">kASLR(Kernel Address Space Layout Randomization)</strong>은 공격을 어렵게 만들기 위해 물리/가상 base 주소를 무작위로 선택하며, 펌웨어 메모리 맵에서 사용 가능한 영역을 스캔하여 적합한 슬롯을 하드웨어 난수로 선택함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>모든 준비가 완료되면 실제 커널의 entry point인 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">start_kernel</code> 함수로 점프하여 본격적인 초기화가 시작되며, 문서 말미에 hexadecimal, register, segment, BIOS/UEFI, paging, ELF 등 핵심 용어에 대한 북마크 가능한 glossary를 제공함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://lazygyu.net/blog/stolen-copyright?utm_source=blog.update.sh&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">저작권 등록제도의 함정</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>작성자가 만든 &#39;마블 룰렛&#39;을 MIT 라이선스로 GitHub에 공개했으나, 누군가가 이를 무단으로 한국저작권위원회에 자신의 이름으로 등록함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>해당 등록자가 유튜버의 스트리밍 영상에 저작권 침해 신고를 넣어 영상이 삭제되는 사태가 발생하여, 피해 유튜버가 원 저작자에게 문의 메일을 보냄</li>
<li class="ms-6 text-pretty" data-v-09555c0e>작성자는 한국저작권위원회에 문의했으나 &quot;등록 시 저작권자 검증 권한이 없으며, 타인이 등록한 저작물을 철회시킬 절차도 없다&quot;는 답변을 받음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>경찰에 고소장을 접수했으나 첫 번째 수사 결과는 &quot;저작권 위원회 등록은 저작물의 공표로 볼 수 없어 저작권 침해가 아니다&quot;라는 이유로 <strong class="font-bold dark:font-extrabold">불송치</strong> 처리됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>작성자는 저작인격권 침해에 대해 재수사를 요청하기 위해 &#39;수사결과이의신청&#39;을 제기하여 사건이 검찰로 넘어감</li>
<li class="ms-6 text-pretty" data-v-09555c0e>검찰의 최종 수사 결과는 <strong class="font-bold dark:font-extrabold">&quot;혐의 없음(증거 불충분)&quot;</strong>으로, 법적으로 아무런 조치를 취할 수 없게 됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>한국저작권위원회의 등록 시스템은 <strong class="font-bold dark:font-extrabold">타인의 도용 여부나 기존 저작물과의 중복 여부를 검증할 권한과 절차가 없음</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>작성자가 먼저 저작권을 등록했어도 타인이 똑같이 도용 등록할 수 있으며, 위원회는 이를 막을 수 없는 구조적 문제가 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>변호사를 고용하는 방법도 고려했으나, 해당 프로그램으로 금전적 이익을 얻지 못하는 상황에서 수임료 대비 실익이 없어 포기함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>결국 빤히 저작권 도용과 타인에 대한 횡포를 목격하고도 법적으로 대응할 수 없는 <strong class="font-bold dark:font-extrabold">사이다 없는 결말</strong>로 사건이 종결됨</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://maily.so/pepper.note/posts/wdr93mx1rlx?utm_source=blog.update.sh&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">2013년까지 파리에서는 여성이 바지를 입으면 불법이었습니다.</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>역사적으로 치마가 바지보다 먼저 개발되었으며, 그 이유는 제작이 훨씬 간단했기 때문임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>바지는 <strong class="font-bold dark:font-extrabold">말타기의 필요성</strong> 때문에 발명되었으며, 치마를 입고 말을 타면 허벅지가 심하게 쓸리는 문제가 있었음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>중국 춘추시대에는 전차 중심의 전투로 인해 치마가 기본 복장이었으나, 전국시대 조나라 무령왕이 북방 유목민족의 기마 전투 방식을 도입하며 <strong class="font-bold dark:font-extrabold">&#39;호복기사(胡服騎射)&#39;</strong> 혁신을 단행함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>무령왕은 &quot;오랑캐 옷을 입어서는 안 된다&quot;는 대신들의 반발과 태자 폐위라는 초강수를 두면서까지 바지 착용을 밀어붙였고, 결과적으로 조나라는 군사력이 크게 증강되어 전성기를 맞이함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>고대 유럽에서도 바지는 야만인의 문화로 여겨졌으나, 로마 제국이 확장되며 험난한 환경에서 싸우던 군인들로부터 바지가 점차 받아들여지고 민간으로 확산됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>유럽 여성들에게 바지가 퍼진 계기는 <strong class="font-bold dark:font-extrabold">자전거의 등장</strong>이었으며, 말타기처럼 자전거를 타기 위해 바지가 필요했음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>산업혁명 이후 노동에서의 편의성 때문에 바지는 더욱 광범위하게 확산됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>1800년 파리에서는 여성의 바지 착용을 금지하는 조례가 제정되었는데, 이는 특정 직업에 여성이 접근하는 것을 막기 위한 시도로 분석됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>1892년과 1909년에 자전거나 말을 탈 때만 여성의 바지 착용이 허용되도록 수정되었으나, 이 법은 <strong class="font-bold dark:font-extrabold">2013년에 들어서야 완전히 폐지</strong>됨</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://oddatelier.net/a-new-typeface-zen-serif/?utm_source=blog.update.sh&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">A NEW TYPEFACE, ZEN SERIF</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>JENNIE는 &lt;ZEN&gt;과 &lt;Seoul City&gt;를 통해 한국을 세계에 알린 아티스트로, 한국과 한글에 대한 깊은 자부심을 바탕으로 활동함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>세종대왕이 한글을 창제한 정신을 이어받아, JENNIE는 글로벌 팬들에게 한글의 미학과 가치를 전달하고자 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">ZEN SERIF</strong>는 전통의 미감과 현대적 감각을 담은 한글 폰트로, 더 많은 사람들이 한글을 편리하고 아름답게 사용할 수 있도록 제작됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>블랙레터(Blackletter)는 중세부터 사용된 서체로 힘, 권위, 전통을 상징하는 서양 전통 서체임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>ZEN SERIF는 블랙레터의 고정된 이미지를 벗어나 <strong class="font-bold dark:font-extrabold">현대적 시각에서 새롭게 재해석한 폰트</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>장식을 최소화하여 본질을 살리고, 딱딱한 인상을 완화하며 유연한 곡선을 더해 <strong class="font-bold dark:font-extrabold">OA 특유의 섬세한 예술성</strong>을 담음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>OA와 JENNIE의 태도는 <strong class="font-bold dark:font-extrabold">기존의 길을 답습하지 않고 새로운 길을 개척하는 것</strong>으로, 이번 작업에서도 명확히 드러남</li>
<li class="ms-6 text-pretty" data-v-09555c0e>서양 전통 서체인 블랙레터와 한글을 <strong class="font-bold dark:font-extrabold">과감히 결합</strong>하여, 누구도 시도하지 않았던 낯선 조합을 완성함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>전통성과 현대성이 어우러진 이 서체는 <strong class="font-bold dark:font-extrabold">강렬하면서도 신선한 인상</strong>을 남김</li>
<li class="ms-6 text-pretty" data-v-09555c0e>ZEN SERIF는 전통이 재해석되고 문화가 재탄생한 서체로, 강력하고 독창적인 인상을 제공함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://lucumr.pocoo.org/2025/11/3/absurd-workflows/?utm_source=blog.update.sh&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">Absurd Workflows: Durable Execution With Just Postgres</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Absurd는 <strong class="font-bold dark:font-extrabold">Postgres만을 사용하여 durable execution(내구성 있는 실행)을 구현하는 매우 간단한 SQL 기반 라이브러리</strong>로, 복잡한 서드파티 서비스나 확장 없이 작동함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Durable execution은 <strong class="font-bold dark:font-extrabold">크래시, 재시작, 네트워크 장애에도 상태를 잃지 않고 작업을 중복 실행하지 않는 장기 실행 함수</strong>를 가능하게 하며, 큐 시스템과 상태 저장소의 조합으로 볼 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Postgres의 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">SELECT ... FOR UPDATE SKIP LOCKED</code> 기능으로 큐로 활용하고, 데이터베이스 특성상 상태 저장에도 사용할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>핵심 구조: <strong class="font-bold dark:font-extrabold">Task(작업)가 Queue(큐)에 전달되고, Worker(워커)가 이를 처리하며, Step(단계)으로 세분화되어 순차 실행됨</strong>. 실패 시 재실행(run)되며, 각 단계 결과는 checkpoint로 저장되어 자동으로 재로드됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>AI 에이전트와의 관계: <strong class="font-bold dark:font-extrabold">에이전트는 자체적으로 워크플로우를 정의하는 단일 단계 반복 워크플로우</strong>로 볼 수 있으며, Absurd는 반복되는 단계를 자동으로 카운팅함 (iteration, iteration#2, iteration#3 등)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>단계가 실패하면 작업 전체가 재시도되지만, <strong class="font-bold dark:font-extrabold">checkpoint 덕분에 이전에 완료된 단계는 자동으로 로드되어 중복 실행되지 않음</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">ctx.sleep()</code>으로 특정 시간 동안 대기하거나, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">ctx.waitForEvent()</code>로 이벤트를 기다릴 수 있으며, 이벤트는 캐시되어 race-free 보장</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">단일 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">.sql</code> 파일만 데이터베이스에 적용하면 되고</strong>, SDK는 언어별 편의성을 제공하는 얇은 래퍼 역할만 수행</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Temporal 같은 복잡한 솔루션과 달리 <strong class="font-bold dark:font-extrabold">컴파일러 플러그인, 별도 서비스, 런타임 통합 없이 Postgres만으로 충분</strong>하며, 특히 셀프 호스팅에 유리함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이름의 유래: <strong class="font-bold dark:font-extrabold">durable workflow는 본질적으로 매우 단순한데(absurdly simple) 최근 몇 년간 지나치게 복잡해졌다</strong>는 의미</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://github.com/Vanilagy/mediabunny?utm_source=blog.update.sh&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">GitHub - Vanilagy/mediabunny: Pure TypeScript media toolkit for reading, writing, and converting video and audio files, directly in the browser.</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Mediabunny는 브라우저에서 미디어 파일(MP4, WebM, MP3 등)을 읽고, 쓰고, 변환할 수 있는 JavaScript 라이브러리</strong>로, 웹을 위한 고성능 미디어 작업 툴킷을 목표로 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>순수 TypeScript로 작성되었으며 <strong class="font-bold dark:font-extrabold">의존성이 전혀 없고</strong>, 매우 뛰어난 tree-shaking을 지원하여 사용하는 기능만 번들에 포함 가능 (최소 5KB gzipped)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>주요 기능
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">광범위한 포맷 지원</strong>: MP4, MOV, WebM, MKV, WAVE, MP3, Ogg, ADTS, FLAC 등 읽기/쓰기</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">내장 인코딩/디코딩</strong>: WebCodecs API를 활용한 하드웨어 가속으로 25개 이상의 비디오, 오디오, 자막 코덱 지원</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">고정밀도</strong>: 마이크로초 단위의 정확한 읽기/쓰기 작업</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">변환 API</strong>: transmuxing, transcoding, 크기 조정, 회전, 크롭, 리샘플링, 트리밍 등 다양한 기능 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">스트리밍 I/O</strong>: 메모리 효율적인 스트리밍으로 모든 크기의 파일 처리</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>브라우저와 Node.js 모두에서 작동하며, ECMAScript 2021 이상, TypeScript 5.7 이상 필요</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">npm install mediabunny</code>로 설치하거나 script 태그로 직접 포함 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>사용 예시로 미디어 파일 정보 읽기, Canvas에서 MP4 생성, 파일 포맷 변환(예: WebM으로 변환) 등을 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Mozilla Public License 2.0 (MPL-2.0)</strong> 하에 오픈소스로 공개되어 상업적/비상업적 용도 모두 자유롭게 사용 가능하며, 폐쇄 소스 프로젝트에도 사용 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>MPL-2.0의 의무사항: Mediabunny의 소스 코드를 수정하여 배포할 경우, 수정 사항을 동일 라이선스로 공개해야 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>프로젝트 개발 및 유지보수를 위해 스폰서와 기부를 환영하며, 순수 TypeScript로 구현되고 WebCodecs API 추상화를 통해 멀티플렉서/디멀티플렉서를 연결하는 고성능 파이프라인 구조</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://velog.io/@sehyunny/stack-overflow-collapse?utm_source=blog.update.sh&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">(번역) 개발자 커뮤니티가 사라질 때 발생하는 일: 서서히 진행되는 스택 오버플로우의 쇠퇴</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>스택 오버플로우는 2008년 출시 이후 2012-2023년 황금기를 거치며 <strong class="font-bold dark:font-extrabold">개발자 커뮤니티의 핵심 Q&amp;A 플랫폼</strong>으로 자리매김했으나, 2022년 말 ChatGPT 출시 이후 사용량이 급격히 감소하기 시작함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>현재 대부분의 개발자들은 <strong class="font-bold dark:font-extrabold">스택 오버플로우 대신 코드 에디터에 내장된 생성형 AI 도구</strong>를 활용해 즉각적으로 문제를 해결하며, 전통적인 온라인 포럼 탐색 방식을 버리고 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">생성형 AI의 장점</strong>: 즉각적인 답변 제공, 대기 시간 없음, 코드 에디터 내 통합으로 빠른 문제 해결 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">스택 오버플로우의 장점</strong>: 인간 전문가가 작성·검토한 답변으로 <strong class="font-bold dark:font-extrabold">품질과 정확성 보장</strong>, 창의적이고 지적인 해결책 제공, 진정성 있는 인간 중심 상호작용</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">생성형 AI의 한계</strong>: 품질과 정확성 보장 불가, 환각(hallucination) 현상, 창의성과 논리적 사고 능력 부재, 훈련 데이터에 국한된 지능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">스택 오버플로우의 문제점</strong>: 답변 대기 시간, 초보자에게 불친화적, 중복 질문 관리의 어려움, AI 생성 답변으로 인한 품질 저하</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">지속 가능성의 딜레마</strong>: 개발자 커뮤니티가 사라지면 AI 모델도 신선한 학습 데이터를 확보하지 못해 결국 함께 쇠퇴할 것이며, 이는 소프트웨어 산업 전체에 부정적 영향을 미침</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">공존 솔루션</strong>: Quora처럼 <strong class="font-bold dark:font-extrabold">생성형 AI와 인간이 작성한 콘텐츠를 통합</strong>하여, 사용자가 질문 성격에 따라 AI 또는 인간 답변을 선택할 수 있도록 하는 것이 유일한 지속 가능한 해결책</li>
<li class="ms-6 text-pretty" data-v-09555c0e>스택 오버플로우는 별도의 AI 웹사이트를 운영하며 대응 중이나, <strong class="font-bold dark:font-extrabold">AI와 개발자 커뮤니티가 완전히 공존하는 생태계 구축까지는 수년이 걸릴 것</strong>으로 예상됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>결론적으로 스택 오버플로우의 쇠퇴는 일시적이며, <strong class="font-bold dark:font-extrabold">AI 도구가 최신 인간 작성 콘텐츠를 지속적으로 확보할 수 있는 지속 가능한 생태계</strong>가 구축되어야 양쪽 모두 살아남을 수 있음</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://news.ycombinator.com/item?id=44977645&amp;utm_source=blog.update.sh&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">Code formatting comes to uv experimentally</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Astral사의 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">uv</code>에 새로운 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">uv format</code> 명령어가 추가되어, 내부적으로는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">ruff</code>의 포매터를 실행하는 기능이 제공된다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 통합은 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">ruff</code>와 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">uv</code>의 병합이 아니라, Rust의 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">cargo fmt</code>가 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">rustfmt</code>를 실행하는 것과 유사하게, 사용자에게 보다 간소화된 경험을 제공하는 것이 목적이다</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">uv format</code>은 실험적 기능으로, 실행 시 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">ruff</code>를 자동으로 다운로드·설치하기 때문에, 사용하지 않을 경우 영향이 없는 설계이다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Go나 Rust처럼 단일 툴(<code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">uv</code>)로 &quot;프로젝트 초기화, 실행, 포맷&quot;을 완결할 수 있는 개발 경험을 목표로 하고 있다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>일부 사용자는 기능 비대화(feature creep)를 우려하며, 패키지 매니저에 포맷 기능을 통합하는 것에 부정적인 의견도 존재한다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Unix 철학의 &quot;단일 목적 툴의 조합&quot;을 중시하는 입장에서는, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">uvx ruff</code>나 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">uv tool run ruff</code>로 충분하다는 의견이 있다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>반면 많은 개발자는, 팀 전체의 코드 포맷 통일이나 초보자의 학습 부담 경감 관점에서, 통합된 툴체인을 지지한다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Rust의 API-first 백엔드 개발에서의 우위성에 대해서도 논의가 있으며, 리퀘스트-리스폰스 플로우에서는 동시성 프리미티브가 배우기 쉽고, <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">Arc&lt;Mutex&lt;T&gt;&gt;</code>로 대부분의 케이스에 대응할 수 있다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>SQLx와 같은 타입 체크 기능이 있는 SQL 라이브러리나, Rust의 ORM에 대한 기술적인 논의도 전개되고 있다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>향후 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">uv lint</code>나 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">uv test</code>와 같은 추가 명령어도 검토될 가능성이 있으며, Python의 &quot;Cargo화&quot;가 진행 중이다</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://blog.craigie.dev/introducing-glide/?utm_source=blog.update.sh&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">Introducing Glide, an extensible, keyboard-focused web browser | Robert Craigie</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
제목: 확장 가능하고 키보드 중심의 웹 브라우저, Glide 소개
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Glide는 확장 가능하고 키보드 중심의 웹 브라우저로 설계된 Firefox 포크입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>사용자가 브라우저 동작을 광범위하게 사용자 정의할 수 있는 TypeScript 구성을 제공합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Glide는 핵심 브라우저 액세스를 제공하여 Firefox 확장 기능의 한계를 해결하며, 기존 확장 기능으로는 불가능한 기능을 구현할 수 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>사용자는 Glide 내에서 사용자 정의 키 매핑을 정의하고, 임의의 프로세스를 생성하며, 매크로를 만들 수 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 브라우저는 (neo)vim의 모드 개념을 차용하여 사용자 상호작용에 따라 &#39;normal&#39;, &#39;insert&#39;, &#39;ignore&#39;와 같은 모드 간에 자동으로 전환됩니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Glide는 키보드만으로 웹 페이지를 완전히 조작할 수 있는 &#39;hint&#39; 모드를 제공하며, 선택 가능한 요소에 레이블을 오버레이로 표시합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>주요 기능으로는 가장 크게 보이는 입력 요소에 포커스하기, 퍼지 탭 파인더, 이전에 열었던 탭을 통한 탐색, 구성 변경 사항을 테스트하기 위한 REPL 등이 있습니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>기존 Firefox 확장 기능 및 워크플로우와 통합되어 Firefox 사용자에게 친숙한 환경을 제공합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Glide는 현재 초기 알파 단계에 있으며 macOS와 Linux에서 사용할 수 있으며, Linux 사용자의 경우 수동 설치가 필요합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 브라우저는 핵심 기능에 대한 완전한 사용자 제어를 제공하는 것을 목표로 하며, 외부 도구와의 깊은 사용자 정의 및 통합을 가능하게 합니다.</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025-10-20 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2025-10-20</id>
        <link href="https://blog.update.sh/weekly-urls/2025-10-20"/>
        <updated>2025-10-19T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://voidzero.dev/posts/announcing-vite-plus?utm_source=blog.update.sh&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">Announcing Vite+</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Vite+</strong>는 Vite를 기반으로 한 상위 호환 CLI 개발 도구로, npm에서 설치 가능하며 추가 기능을 제공함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>주요 명령어들을 통합 제공
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">vite new</code>: 프로젝트 스캐폴딩 및 모노레포 생성, 코드 생성 지원</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">vite test</code>: Vitest 기반 단위 테스트 (Jest 호환 API, 브라우저 모드, 시각적 회귀 테스트 등)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">vite lint</code>: Oxlint 기반 린팅 (ESLint보다 최대 100배 빠름, 600+ 규칙 지원)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">vite fmt</code>: Oxfmt 기반 코드 포맷팅 (Prettier 99%+ 호환)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">vite lib</code>: tsdown과 Rolldown 기반 라이브러리 번들링</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">vite run</code>: 지능형 캐싱을 갖춘 모노레포 태스크 러너</li>
<li class="ms-6 text-pretty" data-v-09555c0e><code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">vite ui</code>: 모듈 분석, 번들 크기 분석 등을 제공하는 GUI 개발도구</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>React, Vue, Tanstack Start, SvelteKit 등 주요 프레임워크와 호환되며, 복잡한 설정 없이 즉시 사용 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">전체 컴파일러 툴체인을 Rust로 구현</strong>하여 성능을 극대화했으며, Framer, Linear, Atlassian, Shopify 등에서 이미 채택함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>JavaScript 툴링 생태계의 파편화와 대규모 프로젝트의 도구 복잡성 문제를 해결하기 위해 <strong class="font-bold dark:font-extrabold">통합 솔루션</strong>을 제공하는 것이 목표</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">라이선스 모델</strong>: 개인, 오픈소스 프로젝트, 소규모 비즈니스는 무료, 스타트업은 정액제, 엔터프라이즈는 맞춤 가격 (상용 라이선스이지만 소스 공개)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Vite, Vitest, Rolldown, Oxc 등 기존 오픈소스 프로젝트는 <strong class="font-bold dark:font-extrabold">MIT 라이선스로 영구 유지</strong>되며, Vite+는 그 위에 구축된 별도의 추가 레이어임</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">2026년 초 공개 프리뷰 예정</strong>이며, 현재 프로덕션 환경에서 테스트할 얼리 어답터를 모집 중 (viteplus.dev)</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://developer.chrome.com/blog/chrome-devtools-mcp?hl=ko&amp;utm_source=blog.update.sh&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">AI 에이전트를 위한 Chrome DevTools (MCP) | Blog | Chrome for Developers</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Chrome DevTools 모델 컨텍스트 프로토콜(MCP) 서버의 공개 미리보기가 출시되어 AI 코딩 어시스턴트에서 Chrome DevTools 기능을 활용할 수 있게 됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>기존 AI 코딩 에이전트는 생성한 코드가 브라우저에서 실제로 어떻게 작동하는지 확인할 수 없는 근본적인 문제가 있었음(눈을 가리고 프로그래밍하는 것과 같음)</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">모델 컨텍스트 프로토콜(MCP)</strong>은 대규모 언어 모델(LLM)을 외부 도구 및 데이터 소스에 연결하기 위한 오픈소스 표준임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Chrome DevTools MCP 서버를 통해 AI 어시스턴트가 Chrome에서 직접 웹페이지를 디버그하고, DevTools의 디버깅 기능과 성능 통계를 활용하여 문제 식별 및 수정 정확도를 향상시킬 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>주요 활용 사례
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">실시간 코드 변경사항 확인</strong>: AI가 생성한 수정사항이 의도대로 작동하는지 자동 검증</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">네트워크 및 콘솔 오류 진단</strong>: CORS 문제 발견, 콘솔 로그 검사 등</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">사용자 행동 시뮬레이션</strong>: 버그 재현 및 복잡한 사용자 흐름 테스트</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">스타일 및 레이아웃 문제 디버그</strong>: DOM과 CSS 검사를 통한 레이아웃 문제 해결</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">성능 감사 자동화</strong>: 성능 추적 실행 및 분석, LCP 등 성능 지표 개선</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>사용 시작: MCP 클라이언트에 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">npx chrome-devtools-mcp@latest</code> 명령어로 간단히 구성 추가 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e>공개 미리보기 단계로 점진적으로 개발 중이며, 개발자와 커뮤니티의 피드백을 적극 수집하여 기능을 개선할 예정</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i?utm_source=blog.update.sh&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">Qualcomm to Acquire Arduino—Accelerating Developers’ Access to its Leading Edge Computing and AI | Qualcomm</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Qualcomm은 자사의 최첨단 기술과 Arduino의 방대한 생태계 및 커뮤니티를 결합하기 위해 Arduino를 인수합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이번 인수는 개발자, 기업, 학생 및 애호가들이 아이디어를 빠르고 쉽게 실현할 수 있도록 지원하는 것을 목표로 합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Qualcomm Dragonwing 플랫폼으로 구동되는 새로운 Arduino UNO Q는 고성능 컴퓨팅과 실시간 제어를 연결합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Arduino App Lab은 다양한 플랫폼에서 구축, 테스트 및 배포 프로세스를 단순화하는 새로운 통합 개발 환경입니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이번 인수는 Edge Impulse 및 Foundries.io의 최근 통합을 기반으로 하며, 풀스택 엣지 플랫폼에 대한 Qualcomm의 의지를 강화합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Arduino는 독립적인 브랜드, 도구 및 미션을 유지하면서 Qualcomm의 기술 스택과 글로벌 영향력에 접근할 수 있게 됩니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Arduino UNO Q는 Linux Debian 지원 마이크로프로세서와 실시간 마이크로컨트롤러를 갖춘 듀얼 브레인 아키텍처를 특징으로 합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Arduino App Lab은 AI 기반 솔루션의 신속한 아이디어 구상, 프로토타이핑 및 확장을 위한 오픈소스 플랫폼을 제공합니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이번 인수는 Qualcomm의 첨단 기술과 Arduino의 단순성 및 경제성을 결합하여 산업 전반에 걸쳐 개발자 생산성을 크게 향상시킬 것으로 예상됩니다.</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Qualcomm의 비전은 글로벌 개발자 커뮤니티를 위해 자사의 최첨단 AI 및 컴퓨팅 제품에 대한 접근성을 민주화하는 것입니다.</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025-10-06 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2025-10-06</id>
        <link href="https://blog.update.sh/weekly-urls/2025-10-06"/>
        <updated>2025-10-05T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.tomshardware.com/peripherals/gaming-mice/logitech-launches-mx-master-4-flagship-productivity-mouse-the-best-mouse-weve-tested-adds-haptic-feedback-circular-action-ring-shortcuts?utm_source=blog.update.sh&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">Logitech launches MX Master 4 flagship productivity mouse – the best mouse we&#39;ve tested adds haptic feedback, circular Action Ring shortcuts</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Logitech이 높은 평가를 받은 MX Master 3S 생산성 마우스의 후속작인 MX Master 4를 발표하며, 햅틱 피드백과 Action Ring 기능을 추가했다고 발표했습니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>햅틱 피드백은 엄지 받침 영역에 위치하며 4단계 강도 설정을 제공하여, 연결 상태, 배터리 부족 경고, 앱별 알림에 대한 미세한 진동을 제공합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>엄지 버튼으로 접근할 수 있는 새로운 Action Ring 기능은 Windows 탐색기, 화면 캡처, 미디어 컨트롤, 이모지, AI 어시스턴트(ChatGPT, Perplexity, Gemini, Copilot)에 대한 원형 메뉴 바로가기를 제공합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Action Ring은 Logitech Options+ 소프트웨어를 통해 사용자 정의할 수 있어 파일, 폴더, 매크로를 열거나 연결된 기기 간 전환이 가능합니다(이전에는 마우스를 뒤집어야 했음)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>향상된 칩, USB-C 동글, 개선된 안테나 배치로 인해 연결성이 &quot;2배 강력해졌다&quot;고 주장합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>듀얼 모드 MagSpeed 스크롤 휠, 수평 사이드 휠, 유리와 대부분의 표면에서 작동하는 8K DPI 센서 등 시그니처 기능을 유지합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>RF USB 또는 Bluetooth를 통해 Windows 10+, macOS 13+, Linux, ChromeOS와 호환되며, 70일 배터리 수명과 빠른 충전을 지원합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>마우스 무게는 150그램(전작보다 9g 증가)으로, 약 50그램인 최신 게이밍 마우스보다 상당히 무겁습니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Mac 전용 모델과 함께 그래파이트, 페일 그레이, 블랙 색상으로 출시되며, 권장소비자가격은 $119.99입니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>전체 리뷰는 보류 중이지만, 초기 인상으로는 무게가 장시간 사용 시 주요한 단점이 될 수 있다고 언급했습니다</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://arstechnica.com/gadgets/2025/09/f-droid-calls-for-regulators-to-stop-googles-crackdown-on-sideloading/?utm_source=blog.update.sh&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">F-Droid says Google’s new sideloading restrictions will kill the project</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Google은 최근 발표한 Android 개발자 인증 방식을 몇 주 내에 테스트할 예정이지만, 구체적인 진행 방식에 대한 정보는 거의 공개되지 않음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>F-Droid(무료 오픈소스 앱 저장소)는 Google의 계획이 Play Store 외부 개발자들에게 회사 등록을 강제함으로써 대안 앱 스토어들을 죽일 것이라고 반대 입장을 표명</li>
<li class="ms-6 text-pretty" data-v-09555c0e>F-Droid는 약 15년간 운영되어 온 Android용 자유 오픈소스 소프트웨어(FOSS)의 최대 제공처로, Play Store를 통하지 않고 APK를 수동으로 사이드로드하는 방식으로 운영됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Google은 보안을 명목으로 모든 Android 앱 개발자들이 앱과 신원을 Google에 등록하도록 강제할 계획을 발표</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Google의 검증을 받지 않은 앱은 향후 인증된 Android 기기에서 설치할 수 없게 되며, 중국 외 거의 모든 Android 기기가 Google 서비스를 사용하므로 사실상 Google이 Android 소프트웨어 설치를 통제하게 됨</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Google은 실명제가 악성코드 발생률을 줄인다고 주장하지만, F-Droid는 Play Store에도 악성 앱이 존재한다는 점을 들어 이 방식이 사이드로딩 위험을 실제로 제거하지 못할 것이라고 반박</li>
<li class="ms-6 text-pretty" data-v-09555c0e>F-Droid는 추적이나 침해적 광고를 허용하지 않으며, 소스코드를 검증한 후 직접 컴파일하는 방식으로 운영되어 개발자들에게 Google 등록을 요구할 수도, 앱 식별자를 대신 등록할 수도 없다고 설명</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이러한 대안은 개발자들로부터 배포권을 빼앗는 것과 같아 F-Droid의 운영 방식과 근본적으로 충돌한다고 지적</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.malwarebytes.com/blog/news/2025/09/apple-fixes-critical-font-processing-bug-update-now?utm_source=blog.update.sh&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">Apple fixes critical font processing bug. Update now!</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Apple이 macOS/iOS/iPadOS의 폰트 처리 시스템인 <strong class="font-bold dark:font-extrabold">FontParser의 중대한 보안 취약점(CVE-2025-43400)</strong>을 수정하는 보안 업데이트를 긴급 배포함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 취약점은 Apple 내부에서 발견되었으며, 공격자가 악성 폰트 파일을 제작하여 <strong class="font-bold dark:font-extrabold">앱 충돌이나 프로세스 메모리 손상을 유발</strong>하고, 최악의 경우 <strong class="font-bold dark:font-extrabold">임의 코드 실행</strong>까지 가능하게 함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Apple은 현재 실제 공격 사례를 확인하지 못했다고 밝혔지만, 과거 유사한 버그가 <strong class="font-bold dark:font-extrabold">탈옥 및 스파이웨어 공격에 악용</strong>된 사례가 있어 신속한 패치를 권장함</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">기술적 세부사항</strong>: Out-of-bounds write 취약점으로, 공격자가 프로그램이 설정한 메모리 범위를 벗어나 읽기/쓰기를 수행할 수 있어 시스템 권한으로 악성 코드 실행이 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>폰트 파일은 일상적으로 앱과 웹사이트에서 사용되며 백그라운드에서 처리되기 때문에, <strong class="font-bold dark:font-extrabold">폰트 취약점은 공격자에게 중요한 공격 벡터</strong>가 될 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">업데이트 대상 기기 및 버전</strong>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>iOS/iPadOS: 26.0.1 (iPhone 11 이상), 18.7.1 (iPhone XS 이상)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>macOS: Tahoe 26.0.1, Sequoia 15.7.1, Sonoma 14.8.1</li>
<li class="ms-6 text-pretty" data-v-09555c0e>기타: visionOS 26.0.1, watchOS 26.0.2, tvOS 26.0.1</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e>iPhone/iPad 업데이트: <strong class="font-bold dark:font-extrabold">설정 &gt; 일반 &gt; 소프트웨어 업데이트</strong>로 이동하여 확인 및 설치, 자동 업데이트 활성화 권장</li>
<li class="ms-6 text-pretty" data-v-09555c0e>macOS 업데이트: <strong class="font-bold dark:font-extrabold">Apple 메뉴 &gt; 시스템 설정(또는 시스템 환경설정) &gt; 일반 &gt; 소프트웨어 업데이트</strong>에서 업데이트 확인 및 설치</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Apple Watch/Apple TV도 각각 해당 앱 또는 설정 메뉴를 통해 소프트웨어 업데이트 가능</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://github.com/google/mozc-devices?utm_source=blog.update.sh&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">GitHub - google/mozc-devices: Circuit diagrams and firmware source code for Gboard DIY keyboards</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Gboard DIY 키보드의 <strong class="font-bold dark:font-extrabold">회로도 및 펌웨어 소스 코드</strong>를 제공하는 저장소</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이전에는 <strong class="font-bold dark:font-extrabold">Google Japanese Input / Gboard April Fools</strong>로 알려져 있었음</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">공식적으로 지원되는 Google 제품이 아님</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>각 디렉토리의 README 파일에서 세부 정보를 확인할 수 있음</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025-09-29 주간 URL 모음]]></title>
        <id>https://blog.update.sh/weekly-urls/2025-09-29</id>
        <link href="https://blog.update.sh/weekly-urls/2025-09-29"/>
        <updated>2025-09-28T23:00:00.000Z</updated>
        <content type="html"><![CDATA[<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><ul class="my-2 list-outside list-disc" data-v-ec58c90e>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://github.com/mmulet/term.everything?utm_source=blog.update.sh&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">GitHub - mmulet/term.everything: Run any GUI app in the terminal❗</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">term.everything❗</strong>는 터미널에서 GUI 윈도우를 실행할 수 있는 Linux CLI 프로그램으로, 모니터 대신 터미널로 출력하는 처음부터 구축된 Wayland 컴포지터임</li>
<li class="ms-6 text-pretty" data-v-09555c0e>x11과 Wayland 호스트 시스템 모두에서 작동하며, 터미널에서 웹브라우저로 비디오 게임을 플레이하거나 SSH를 통해 전송하는 등의 복잡한 작업이 가능함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>윈도우 품질은 터미널의 행과 열 수에 제한되며, 해상도를 높이면 품질이 향상되지만 성능은 저하될 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>kitty나 iterm2처럼 이미지를 지원하는 터미널에서는 전체 해상도로 윈도우를 렌더링할 수 있음 (성능 저하 가능성 있음)</li>
<li class="ms-6 text-pretty" data-v-09555c0e>터미널 파일 뷰어를 새로 만들 필요 없이 기존 파일 뷰어를 터미널에서 바로 사용할 수 있다고 주장함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>약간의 해킹을 통해 Doom(셰어웨어 에피소드)도 실행 가능하며, 전체 데스크톱 환경도 터미널에서 구동할 수 있음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>현재 베타 테스트 단계로 일부 앱이 실행에 실패하거나 충돌할 수 있어 문제 발생 시 이슈 생성을 권장함</li>
<li class="ms-6 text-pretty" data-v-09555c0e>Bun 엔진을 사용한 개발자 친화적인 TypeScript와 약간의 C++로 작성되었음</li>
<li class="ms-6 text-pretty" data-v-09555c0e>HowIDidIt.md 파일에서 Wayland의 개념과 작동 원리에 대한 자세한 설명을 제공함</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://agents.md/?utm_source=blog.update.sh&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">AGENTS.md</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">AGENTS.md는 AI 코딩 에이전트를 위한 README</strong>: 20,000개 이상의 오픈소스 프로젝트에서 사용되는 간단하고 개방적인 형식으로, AI 코딩 에이전트가 프로젝트를 효과적으로 작업할 수 있도록 컨텍스트와 지침을 제공하는 전용 파일</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">README.md와의 차별화</strong>: README는 인간 개발자를 위한 것이고, AGENTS.md는 AI 에이전트가 필요로 하는 상세한 빌드 단계, 테스트, 규칙 등을 포함하여 README를 간결하게 유지하면서도 에이전트에게 정확한 가이드를 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">다양한 AI 에이전트와 호환</strong>: OpenAI Codex, Cursor, Factory 등 성장하는 AI 코딩 에이전트 생태계에서 하나의 AGENTS.md 파일로 여러 도구들과 호환 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">주요 포함 내용</strong>: 프로젝트 개요, 빌드 및 테스트 명령어, 코드 스타일 가이드라인, 테스트 지침, 보안 고려사항 등 에이전트가 효과적으로 작업하는데 필요한 섹션들</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">실제 사용 사례</strong>: apache/airflow, temporalio/sdk-java, PlutoLang/Pluto 등 다양한 대규모 오픈소스 프로젝트에서 활용 중</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">대형 모노레포 지원</strong>: 하위 프로젝트별로 중첩된 AGENTS.md 파일을 사용하여 복잡한 프로젝트 구조에도 대응 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">개방적 협업</strong>: OpenAI Codex, Google의 Jules, Cursor, Factory 등 AI 소프트웨어 개발 생태계의 협력을 통해 탄생하여 특정 도구에 종속되지 않은 개방형 표준을 지향</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">기존 도구와의 통합</strong>: Aider는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">.aider.conf.yml</code>에서, Gemini CLI는 <code class="bg-teal-100 px-1 py-0.5 font-mono dark:bg-teal-900 dark:text-gray-100">.gemini/settings.json</code>에서 AGENTS.md를 설정하여 사용 가능</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">마이그레이션 지원</strong>: 기존 문서를 AGENTS.md로 이름 변경하고 심볼릭 링크로 하위 호환성을 유지하는 방법 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">필수 필드 없음</strong>: 특정 형식이나 필수 필드 없이 프로젝트에 맞게 자유롭게 구성 가능하며, 지침 충돌 시 우선순위나 업데이트 방법에 대한 FAQ 제공</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://moq.dev/?utm_source=blog.update.sh&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">Media over QUIC is a live media protocol powered by QUIC: a super-charged TCP/UDP replacement that powers HTTP/3. It’s being developed by the IETF*...</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">Media over QUIC (MoQ)</strong>는 HTTP/3를 지원하는 고성능 TCP/UDP 대체 프로토콜인 QUIC을 기반으로 구축된 라이브 미디어 프로토콜입니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 프로토콜은 Google, Meta, Cisco, Akamai, Cloudflare를 포함한 주요 기술 기업들과 함께 IETF에서 개발되고 있습니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>MoQ는 라이브 미디어 스트리밍 애플리케이션을 위해 WebRTC를 대체하는 것을 목표로 합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>웹사이트에서는 사용자가 방송을 시청하거나 퍼블리싱할 수 있는 웹 데모를 제공합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>현재 구현은 공식 IETF 초안 대신 <strong class="font-bold dark:font-extrabold">moq-lite</strong>라고 불리는 포크와 <strong class="font-bold dark:font-extrabold">hang</strong>이라는 미디어 레이어를 사용합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>개발자는 느린 표준화 과정을 기다리는 대신 단순화된, 즉시 사용 가능한 버전을 구축하기로 선택했습니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>기술 정보가 담긴 블로그, GitHub 저장소, Discord 커뮤니티를 포함한 추가 리소스들이 제공됩니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이 프로젝트는 기여를 환영하며 사용자들이 자신의 프로젝트를 위해 코드를 포크하고 적용하는 것을 권장합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>MoQ 변형을 구현하는 사용자들은 개발자(Discord의 @kixelated)와 경험을 공유하도록 권장됩니다</li>
</ul>
</li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><a href="https://www.atlassian.com/blog/announcements/atlassian-acquires-the-browser-company?utm_source=blog.update.sh&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">Welcoming The Browser Company to Atlassian - Work Life by Atlassian</a>
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>요약
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>Atlassian이 Dia와 Arc 브라우저를 개발한 팀인 <strong class="font-bold dark:font-extrabold">The Browser Company of New York을 인수하는 계약을 체결</strong>했습니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이번 인수는 Browser Company의 브라우저 전문성과 Atlassian의 팀 운영 노하우를 결합하여 <strong class="font-bold dark:font-extrabold">AI 시대에 업무 수행 방식을 혁신</strong>하는 것을 목표로 합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>현재의 브라우저들은 <strong class="font-bold dark:font-extrabold">업무용이 아닌 브라우징(뉴스, 동영상, 레시피)을 위해 구축</strong>되었으며, 업무 맥락이나 우선순위를 이해하지 못한 채 모든 탭을 동일하게 취급합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>오늘날의 브라우저는 SaaS 앱의 폭발적 증가와 AI 혁명에 대한 인식이 부족하여, 적극적인 업무 보조자가 아닌 <strong class="font-bold dark:font-extrabold">워크플로우의 수동적인 방관자</strong> 역할을 하고 있습니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>비전은 <strong class="font-bold dark:font-extrabold">Dia를 지식 근로자를 위한 전문 브라우저로 만드는 것</strong>이며, 세 가지 핵심 기능을 포함합니다:
<ul class="my-2 list-outside list-disc">
<li class="ms-6 text-pretty" data-v-09555c0e>사용자가 하루 종일 시간을 보내는 <strong class="font-bold dark:font-extrabold">SaaS 앱에 최적화</strong>되어 맥락이 풍부한 탭을 제공</li>
<li class="ms-6 text-pretty" data-v-09555c0e>앱, 탭, 작업을 연결하는 <strong class="font-bold dark:font-extrabold">AI 기능과 개인 업무 메모리를 탑재</strong></li>
<li class="ms-6 text-pretty" data-v-09555c0e>규정 준수 및 관리자 제어를 포함한 <strong class="font-bold dark:font-extrabold">기업 신뢰성과 보안으로 구축</strong></li>
</ul>
</li>
<li class="ms-6 text-pretty" data-v-09555c0e><strong class="font-bold dark:font-extrabold">기업 워크플로우의 85%가 브라우저에서 발생하지만, 보안 브라우저를 사용하는 조직은 10% 미만</strong>으로, 이는 주요한 시장 기회를 강조합니다</li>
<li class="ms-6 text-pretty" data-v-09555c0e>이번 인수는 <strong class="font-bold dark:font-extrabold">팀 잠재력 발휘라는 Atlassian의 사명을 브라우저 환경으로 확장</strong>하는 데 도움이 될 것입니다</li>
</ul>
</li>
</ul>
</li>
</ul></div>]]></content>
        <author>
            <name>Nesswit</name>
            <email>rishubil+blog@gmail.com</email>
            <uri>https://blog.update.sh/about</uri>
        </author>
    </entry>
</feed>