<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://damesek.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://damesek.com/" rel="alternate" type="text/html" hreflang="ko" /><updated>2026-09-08T14:03:23+09:00</updated><id>https://damesek.com/feed.xml</id><title type="html">damesektok — 교수의 애드센스 도전기</title><subtitle>35년 교수직 은퇴 후 Git도 몰랐던 교수가 GitHub Pages, Notion, AI로 블로그를 만들고 애드센스에 도전하는 과정을 날것 그대로 기록합니다.
  </subtitle><author><name>Damesek</name></author><entry><title type="html">학생 개발자 팩, 계정 전환 후 돌려받을 수 없다면?</title><link href="https://damesek.com/posts/github-student-pack-account-transfer-issue/" rel="alternate" type="text/html" title="학생 개발자 팩, 계정 전환 후 돌려받을 수 없다면?" /><published>2026-09-08T09:00:00+09:00</published><updated>2026-09-08T09:00:00+09:00</updated><id>https://damesek.com/posts/github-student-pack-account-transfer-issue</id><content type="html" xml:base="https://damesek.com/posts/github-student-pack-account-transfer-issue/"><![CDATA[<h2 id="오늘-이-소식을-살펴보니">오늘 이 소식을 살펴보니</h2>

<p>Reddit의 r/github 커뮤니티에 올라온 한 사용자의 질문을 읽어보니, 꽤 흥미로운 프로세스 설계 문제가 드러났습니다. 요약하면 이렇습니다: 이전에 가지고 있던 GitHub 계정에서 학생 개발자 팩(GitHub Student Developer Pack) 승인을 받아뒀는데, 그 계정에 접근할 수 없게 된 후 새 계정을 만들었다는 것입니다. 기존 계정에서 개인 이메일과 학생 이메일을 모두 제거한 뒤 새 계정으로 옮겼지만, GitHub는 “이미 다른 계정에서 학생 팩 혜택이 활성화되어 있다”며 새 계정의 신청을 거부했다고 합니다.</p>

<p>GitHub 지원팀(GitHub Support)에 문의했지만 실질적인 해결책을 받지 못했다는 점이 이 글의 핵심입니다. 사용자는 현재 여전히 학생 신분으로 적격이므로, 팩을 새 계정으로 이전하거나 이전 계정의 청구권(claim)을 해제해달라고 요청하고 싶은 상황입니다.</p>

<h2 id="이것이-던지는-생각-엣지-케이스와-지원-프로세스">이것이 던지는 생각: 엣지 케이스와 지원 프로세스</h2>

<p>35년을 대학 강의실과 기술 커뮤니티에서 보내면서, 저는 이런 종류의 이슈를 여러 번 목격했습니다. 정책(policy)은 일반적인 경로(happy path)를 기준으로 만들어지고, 정상에서 벗어난 상황(edge case)은 사후처리로 남겨지는 현상 말입니다.</p>

<p>GitHub의 학생 개발자 팩은 구조상 “한 명의 학생 = 한 개의 활성 계정”이라는 전제로 설계된 듯합니다. 이메일 주소나 학적 상태를 기준으로 중복 가입을 막으려는 의도는 분명히 드러납니다. 하지만 원문에서 보이는 문제는 다릅니다. 사용자가 이미 이메일을 제거했음에도 불구하고, GitHub의 백엔드 시스템은 여전히 “이 학생 신분에는 팩이 이미 할당됐다”는 기록을 유지하고 있다는 뜻입니다.</p>

<p>이것은 단순한 버그(bug)일 수도 있고, 의도된 보안 장치(security measure)일 수도 있습니다. 혹은 둘 다일 가능성도 있습니다. 지원팀의 답변이 “도움이 되지 않았다”는 표현으로 보아, 현재로서는 이 상황을 해결할 명확한 채널(channel)이 없는 것 같습니다.</p>

<h2 id="나에게-의미-있는-부분-자동화-인프라와-신원-관리">나에게 의미 있는 부분: 자동화 인프라와 신원 관리</h2>

<p>직접 n8n 자동화 인프라를 구축하며 GitHub 생태계를 지켜본 입장에서, 이 사안은 다음과 같이 읽힙니다.</p>

<p>GitHub는 학생들의 온보딩(onboarding)을 자동화하면서도, 오프보딩(offboarding)이나 계정 마이그레이션(account migration) 같은 예외 상황에 대해서는 수동 검토에 의존하고 있다는 점입니다. 원문에서 “GitHub Support의 답변이 도움이 되지 않았다”는 표현은, 아마도 자동화된 답장 템플릿을 받았거나, 지원 담당자가 이 상황을 해결할 권한이나 프로세스를 갖지 못했다는 뜻일 수 있습니다.</p>

<p>시니어 창작자나 1인 자동화 운영자 입장에서 이 패턴은 매우 중요합니다. 왜냐하면 우리가 API나 웹훅(webhook)으로 외부 시스템(GitHub, Stripe, Notion 등)을 통합할 때, 항상 “정상 흐름에서는 잘 작동하지만 예외를 어떻게 처리할지”가 골칫거리가 되기 때문입니다. GitHub 자신도 같은 문제에 봉착해 있다면, 우리가 설계하는 자동화 워크플로우에도 같은 함정(pitfall)이 있을 가능성이 높다는 뜻입니다.</p>

<h2 id="좀-더-넓은-맥락에서-보면">좀 더 넓은 맥락에서 보면</h2>

<p>GitHub의 학생 팩 정책은 전 세계 학생들에게 매우 소중한 혜택입니다. 개발 도구, 클라우드 크레딧, 도메인 등을 무료로 제공하는 이 프로그램은 GitHub가 미래의 개발자를 키우겠다는 약속의 상징입니다. 동시에 이러한 가치가 있기에, 중복 신청이나 부정 사용(abuse)을 막기 위한 제어 장치도 필요합니다.</p>

<p>원문을 읽으며 생각해본 질문은 이것입니다: GitHub가 학생 신분의 “1회성 혜택”을 보호하려다가, 정당한 사용자의 “계정 마이그레이션” 시나리오를 너무 경직되게 처리하고 있지 않은가 하는 점입니다. 이메일 검증, 학적 상태 재확인 등을 거쳐서라도 사용자가 팩을 새 계정으로 이전할 수 있는 경로가 있어야 하지 않을까요?</p>

<h2 id="계속-봐야-할-부분들">계속 봐야 할 부분들</h2>

<p>“GitHub 지원팀의 에스컬레이션(escalation) 프로세스가 실제로 어떻게 작동하는가”라는 논쟁이 있는데, 이 부분은 계속 지켜봐야 할 지점입니다. 만약 사용자가 다시 연락했을 때 문제가 해결되었다면, 그것은 GitHub 내부에도 예외 처리 채널이 있다는 뜻이고, 해결되지 않았다면 이것은 더 심각한 설계 결함일 수 있습니다.</p>

<p>이 이슈는 다음 편에서 어떻게 흘러갔는지 이어서 다뤄보겠습니다.</p>]]></content><author><name>Damesek</name></author><category term="기술" /><category term="GitHub" /><category term="학생개발자팩" /><category term="계정관리" /><summary type="html"><![CDATA[이전 계정에 묶인 학생 개발자 팩을 새 계정으로 옮길 수 없는 사용자의 사연과, 이것이 시니어 운영자에게 던지는 질문]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788843670/damesektok/github-student-pack-account-transfer-issue.svg" /><media:content medium="image" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788843670/damesektok/github-student-pack-account-transfer-issue.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">GitHub Copilot이 모델 선택지를 늘린 이유를 생각해본다</title><link href="https://damesek.com/posts/copilot-model-expansion-august-2026/" rel="alternate" type="text/html" title="GitHub Copilot이 모델 선택지를 늘린 이유를 생각해본다" /><published>2026-09-05T09:00:00+09:00</published><updated>2026-09-05T09:00:00+09:00</updated><id>https://damesek.com/posts/copilot-model-expansion-august-2026</id><content type="html" xml:base="https://damesek.com/posts/copilot-model-expansion-august-2026/"><![CDATA[<h2 id="무엇이-바뀌었나-모델-선택지가-늘어났다">무엇이 바뀌었나: 모델 선택지가 늘어났다</h2>

<p>원문을 확인해본 결과, 이번 주 GitHub Copilot 업데이트의 가장 눈에 띄는 변화는 <strong>제공하는 AI 모델의 폭이 넓어졌다</strong>는 점입니다. Claude Fable 5.1이 Copilot Pro+, Max, Business, Enterprise 사용자에게, Gemini 3.8 Flash가 Pro부터 Enterprise까지 더 폭넓은 티어에 배포되고 있다는 뉘앙스가 들립니다.</p>

<p>단순히 “모델이 추가됐다”는 것 이상의 전략적 신호가 있습니다. 한 가지 AI 엔진에 의존하던 방식을 벗어나, <strong>사용자가 상황에 맞춰 선택할 수 있게 만들었다</strong>는 점이죠. 이는 지난 십여 년간 클라우드 서비스의 발전 과정과 정확히 닮아 있습니다. 초기에는 “우리 플랫폼 방식”만 제공하다가, 성숙 단계에 접어들면서 “선택지를 주기” 시작하는 패턴 말입니다.</p>

<h2 id="자동화-운영자-입장에서-보면-일관성의-문제가-생긴다">자동화 운영자 입장에서 보면: 일관성의 문제가 생긴다</h2>

<p>직접 n8n 자동화 인프라를 구축하면서 지켜본 경험상, 이런 선택지 확대는 <strong>반갑기도 하고 골치 아프기도 한</strong> 신호입니다.</p>

<p>원문에 나오는 “content exclusions(콘텐츠 배제)” 기능이 Copilot app과 Copilot CLI에 이제 적용된다는 점을 살펴보세요. 이건 <strong>민감한 코드가 에이전트 워크플로우(agentic workflows)의 컨텍스트에서 빠져나가지 않도록</strong> 한다는 뜻입니다.</p>

<p>1인 자동화 운영자나 소규모 팀이 여러 모델을 조합해 워크플로우를 짤 때, 각 모델마다 이 설정이 일관되게 적용되는지 확인해야 합니다. Claude Fable 5.1로 테스트했던 자동화가 Gemini 3.8 Flash에서도 같은 보안 정책을 따르는가? 이게 사용자 입장에서는 추적하기 어려운 부분이 될 수 있습니다.</p>

<h2 id="그-다음-층-에이전트와-워크스페이스의-새로운-복잡도">그 다음 층: 에이전트와 워크스페이스의 새로운 복잡도</h2>

<p>VS Code 1.136 버전의 변화를 보면, 단순한 채팅 도구를 넘어 <strong>에이전트 관리 시스템</strong>으로 진화하는 모습이 선명합니다. 원문에 명시된 것들이 “Multi-root workspaces(다중 루트 워크스페이스)”와 “Chat sessions(채팅 세션)” 계층화인데, 이는 <strong>복잡한 프로젝트를 여러 폴더로 나눠 각각 다른 Copilot/Claude 에이전트 세션을 돌릴 수 있다</strong>는 의미입니다.</p>

<p>이런 기능들이 아직 “experimental(실험 단계)”라는 표시가 붙어 있다는 점도 주목할 만합니다. 기술이 안정적이지 않다는 뜻이 아니라, <strong>사용 패턴이 아직 정착되지 않았다</strong>는 신호입니다. 자동화 운영 관점에서 보면, 지금이 이 기능들을 테스트하고 자신의 워크플로우에 맞게 적응시킬 타이밍이라는 의미입니다.</p>

<p>JetBrains에서 “GitHub Copilot harness”가 일반 공개(generally available)됐다는 소식도 중요한데, 이는 <strong>IDE별로 Copilot 통합의 방식이 표준화되고 있다</strong>는 신호로 읽힙니다. 더 빨리 기능이 전달되고, 코드 품질이 더 일관되게 유지될 수 있다는 의미지만, 동시에 각 IDE마다 약간씩 다른 동작이 나타날 가능성도 커집니다.</p>

<h2 id="이-흐름을-어떻게-봐야-하나">이 흐름을 어떻게 봐야 하나</h2>

<p>시니어 입장에서는 이번 업데이트가 <strong>Copilot이 “도구”에서 “플랫폼”으로 전환되고 있다</strong>는 신호로 보입니다. 모델 선택지, 콘텐츠 보호 정책, 에이전트 세션 관리, 워크스페이스 계층화—이 모든 것이 조각조각이 아니라 <strong>하나의 생태계</strong>로 엮이려고 합니다.</p>

<p>하지만 이렇게 복잡해질수록 <strong>일관성을 유지하는 책임이 사용자에게 넘어간다</strong>는 구조적 문제가 있습니다. 어느 모델은 content exclusion을 제대로 따르고, 어느 모델은 그렇지 않다면? 한 폴더의 에이전트 세션과 다른 폴더의 세션이 컨텍스트를 잘못 공유한다면?</p>

<p>이 부분을 GitHub이 얼마나 자동으로 관리해줄지, 아니면 사용자 책임으로 남겨둘지가 계속 논쟁적인 지점입니다. 이건 앞으로도 지켜봐야 할 부분이 될 것 같습니다.</p>

<p>이 이슈는 다음 편에서 실제 자동화 워크플로우에 이 변화들이 어떻게 적용되는지, 그리고 어떤 함정이 생기는지 구체적으로 다뤄보겠습니다.</p>]]></content><author><name>Damesek</name></author><category term="기술" /><category term="GitHub" /><category term="Copilot" /><category term="AI" /><category term="자동화" /><summary type="html"><![CDATA[Claude와 Gemini 모델 추가, 콘텐츠 보호 강화, 에이전트 세션 관리 개선이 의미하는 바]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788584451/damesektok/copilot-model-expansion-august-2026.svg" /><media:content medium="image" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788584451/damesektok/copilot-model-expansion-august-2026.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Site Kit이 ‘이미 AdSense 코드가 있다’고 할 때, 테마 functions.php 어디를 봐야 하나</title><link href="https://damesek.com/posts/sitekit-adsense-duplicate-code-(1)/" rel="alternate" type="text/html" title="Site Kit이 ‘이미 AdSense 코드가 있다’고 할 때, 테마 functions.php 어디를 봐야 하나" /><published>2026-09-04T15:30:00+09:00</published><updated>2026-09-04T15:30:00+09:00</updated><id>https://damesek.com/posts/sitekit-adsense-duplicate-code%20(1)</id><content type="html" xml:base="https://damesek.com/posts/sitekit-adsense-duplicate-code-(1)/"><![CDATA[<h2 id="증상">증상</h2>

<p>워드프레스 사이트에 Google Site Kit을 설치하고 AdSense를 연결하는데, 이런 경고가 떴다.</p>

<blockquote>
  <p>이 계정의 사이트에 이미 AdSense 코드가 있습니다. AdSense를 최대한 활용하려면 Site Kit을 사용하여 코드를 삽입하는 것이 좋습니다. Site Kit에서 삽입한 코드와 충돌하지 않도록 기존 AdSense 코드를 제거해야 합니다.</p>
</blockquote>

<p>애드센스 사이트 목록에서는 한 달 가까이 “준비 중”에 멈춰 있었고, Ads.txt 상태는 “찾을 수 없음”이었다.</p>

<p>“기존 코드를 제거하라”는 말은 알겠는데, 문제는 <strong>그 코드가 어디 있는지</strong>였다. 몇 달 전에 넣은 걸 잊어버린 것이다.</p>

<h2 id="헤맨-순서">헤맨 순서</h2>

<p><strong>1. header.php부터 열었다.</strong> 애드센스 코드는 <code class="language-plaintext highlighter-rouge">&lt;head&gt;</code> 안에 넣으라고 하니 당연히 여기 있을 줄 알았다. 없었다. <code class="language-plaintext highlighter-rouge">&lt;head&gt;</code> 안에는 <code class="language-plaintext highlighter-rouge">&lt;?php wp_head(); ?&gt;</code> 한 줄뿐이었다.</p>

<p><strong>2. footer.php도 확인했다.</strong> 없었다.</p>

<p><strong>3. 광고 로직이 있는 inc/ads.php를 열었다.</strong> 본문 중간에 광고 단위를 넣는 코드는 있었지만, <code class="language-plaintext highlighter-rouge">adsbygoogle.js</code>를 불러오는 로더 스크립트는 없었다.</p>

<p>여기서 잠깐 막혔다. 파일 세 개를 다 봤는데 없다면 플러그인인가?</p>

<p><strong>4. functions.php를 열었다.</strong> 맨 아래에 있었다.</p>

<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="rouge-code"><pre><span class="cm">/* -------------------------------------------------
 * 4) 애드센스 헤더 스크립트 (전역, wp_head)
 * ------------------------------------------------- */</span>
<span class="k">function</span> <span class="n">gt_adsense_head_script</span><span class="p">()</span> <span class="p">{</span>
	<span class="k">if</span> <span class="p">(</span> <span class="k">empty</span><span class="p">(</span> <span class="no">GT_ADSENSE_CLIENT_ID</span> <span class="p">)</span> <span class="p">)</span> <span class="k">return</span><span class="p">;</span>
	<span class="nb">printf</span><span class="p">(</span>
		<span class="s1">'&lt;script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=%s" crossorigin="anonymous"&gt;&lt;/script&gt;'</span> <span class="mf">.</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span>
		<span class="nf">esc_attr</span><span class="p">(</span> <span class="no">GT_ADSENSE_CLIENT_ID</span> <span class="p">)</span>
	<span class="p">);</span>
<span class="p">}</span>
<span class="nf">add_action</span><span class="p">(</span> <span class="s1">'wp_head'</span><span class="p">,</span> <span class="s1">'gt_adsense_head_script'</span> <span class="p">);</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<h2 id="원인">원인</h2>

<p><code class="language-plaintext highlighter-rouge">header.php</code>의 <code class="language-plaintext highlighter-rouge">&lt;?php wp_head(); ?&gt;</code>는 빈 줄이 아니다. 워드프레스가 이 자리에 <strong>다른 파일들이 등록해 둔 내용을 모아서 출력</strong>한다. <code class="language-plaintext highlighter-rouge">add_action( 'wp_head', ... )</code>로 등록된 함수는 전부 여기로 흘러들어온다.</p>

<p>그러니 <code class="language-plaintext highlighter-rouge">&lt;head&gt;</code> 안에 뭔가 들어가 있는데 header.php에 안 보인다면, 후보는 두 곳이다.</p>

<table>
  <thead>
    <tr>
      <th>후보</th>
      <th>찾는 방법</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>functions.php (및 그 안에서 <code class="language-plaintext highlighter-rouge">require</code>하는 inc/ 파일들)</td>
      <td><code class="language-plaintext highlighter-rouge">wp_head</code>, <code class="language-plaintext highlighter-rouge">adsbygoogle</code>, <code class="language-plaintext highlighter-rouge">ca-pub</code> 세 단어로 검색</td>
    </tr>
    <tr>
      <td>헤더 삽입 플러그인 (WPCode, Insert Headers and Footers, Ad Inserter 등)</td>
      <td>플러그인 목록에서 확인</td>
    </tr>
  </tbody>
</table>

<p>내 경우는 테마를 직접 만들면서 functions.php에 넣어 둔 것이었다. 몇 달 지나니 내가 넣은 것도 기억이 안 났다.</p>

<h2 id="해결">해결</h2>

<h3 id="1-functionsphp의-헤더-스크립트-블록-비활성화">1) functions.php의 헤더 스크립트 블록 비활성화</h3>

<p>삭제하지 않고 주석으로 막았다. 나중에 Site Kit을 빼고 싶을 때 되돌리기 쉽다.</p>

<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="rouge-code"><pre><span class="cm">/* -------------------------------------------------
 * 4) 애드센스 헤더 스크립트 (전역, wp_head) — Site Kit으로 대체, 비활성화
 * -------------------------------------------------
function gt_adsense_head_script() {
	if ( empty( GT_ADSENSE_CLIENT_ID ) ) return;
	printf(
		'&lt;script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=%s" crossorigin="anonymous"&gt;&lt;/script&gt;' . "\n",
		esc_attr( GT_ADSENSE_CLIENT_ID )
	);
}
add_action( 'wp_head', 'gt_adsense_head_script' );
*/</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<p>첫 줄의 <code class="language-plaintext highlighter-rouge">*/</code>를 지우고 블록 끝에 <code class="language-plaintext highlighter-rouge">*/</code>를 넣어 통째로 주석 처리한 형태다. 안에 <code class="language-plaintext highlighter-rouge">*/</code>가 또 없으니 문제없다.</p>

<p><strong>건드리지 않은 것:</strong></p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">inc/ad-settings.php</code>의 <code class="language-plaintext highlighter-rouge">GT_ADSENSE_CLIENT_ID</code> 상수 — 본문 광고 단위가 이 값을 쓴다.</li>
  <li><code class="language-plaintext highlighter-rouge">inc/ads.php</code>의 <code class="language-plaintext highlighter-rouge">&lt;ins class="adsbygoogle"&gt;</code> 출력 코드 — 이건 “광고 자리”다. 로더 스크립트를 Site Kit이 헤더에 한 번 넣어 주면 그대로 동작한다.</li>
</ul>

<h3 id="2-확인">2) 확인</h3>

<p>캐시를 비우고, 시크릿 창에서 사이트를 열어 <code class="language-plaintext highlighter-rouge">Ctrl+U</code> → <code class="language-plaintext highlighter-rouge">adsbygoogle.js</code> 검색. <strong>0건</strong>이면 정리된 것이다.</p>

<p>Site Kit 화면으로 돌아가니 경고 문구와 토글이 사라져 있었다. “AdSense에서 사이트 검토” 버튼을 눌렀다.</p>

<h3 id="3-내친김에-adstxt">3) 내친김에 ads.txt</h3>

<p>Ads.txt “찾을 수 없음”은 별개 문제지만 같이 잡았다. 호스팅 파일 관리자에서 <code class="language-plaintext highlighter-rouge">public_html</code>(<code class="language-plaintext highlighter-rouge">wp-config.php</code>가 있는 최상위 폴더)에 <code class="language-plaintext highlighter-rouge">ads.txt</code>를 만들고 한 줄:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre>google.com, pub-XXXXXXXXXXXXXXXX, DIRECT, f08c47fec0942fa0
</pre></td></tr></tbody></table></code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">pub-</code> 뒤 16자리는 애드센스 코드의 <code class="language-plaintext highlighter-rouge">ca-pub-</code> 뒤 숫자를 그대로 쓴다(<code class="language-plaintext highlighter-rouge">ca-</code>만 뺀다). 마지막 값은 구글 공통이라 모든 사이트가 같다.</p>

<p>브라우저에서 <code class="language-plaintext highlighter-rouge">https://사이트주소/ads.txt</code>를 열어 그 줄이 보이면 끝.</p>

<h2 id="정리">정리</h2>

<ul>
  <li>Site Kit이 “이미 코드가 있다”고 하는데 header.php에 없으면 → <strong>functions.php에서 <code class="language-plaintext highlighter-rouge">wp_head</code> 검색</strong></li>
  <li><code class="language-plaintext highlighter-rouge">&lt;?php wp_head(); ?&gt;</code>는 다른 파일이 등록한 내용의 <strong>출구</strong>다. 원인은 그 파일들에 있다.</li>
  <li>지우지 말고 주석으로 막아라. 되돌릴 일이 생긴다.</li>
  <li>광고 단위(<code class="language-plaintext highlighter-rouge">&lt;ins&gt;</code>)와 로더 스크립트(<code class="language-plaintext highlighter-rouge">adsbygoogle.js</code>)는 다른 것이다. Site Kit이 대신하는 건 로더 쪽이다.</li>
  <li>같은 화면에 있는 Ads.txt 경고는 이참에 같이 처리하자. 파일 하나, 한 줄이다.</li>
</ul>

<p>검토 결과는 며칠에서 몇 주 걸린다고 한다. 결과가 나오면 이 글에 덧붙이겠습니다.</p>

<p>—언제나 다메섹 교수드림</p>]]></content><author><name>Damesek</name></author><category term="트러블슈팅" /><category term="워드프레스" /><category term="Site Kit" /><category term="AdSense" /><category term="functions.php" /><category term="ads.txt" /><category term="워드프레스" /><category term="애드센스승인" /><summary type="html"><![CDATA[직접 만든 워드프레스 테마에 Site Kit을 붙였더니 '이미 AdSense 코드가 있다'는 경고. header.php에는 없었다. 범인은 functions.php의 wp_head 훅이었다.]]></summary></entry><entry><title type="html">GitHub에서 OpenTune이 사라졌다는 소식, 무슨 일이 있었나?</title><link href="https://damesek.com/posts/opentune-removed-github-question/" rel="alternate" type="text/html" title="GitHub에서 OpenTune이 사라졌다는 소식, 무슨 일이 있었나?" /><published>2026-09-04T09:00:00+09:00</published><updated>2026-09-04T09:00:00+09:00</updated><id>https://damesek.com/posts/opentune-removed-github-question</id><content type="html" xml:base="https://damesek.com/posts/opentune-removed-github-question/"><![CDATA[<p>Reddit의 r/github 커뮤니티에서 최근 올라온 “Eliminaron OpenTune de Github?” 게시물을 보니, GitHub에서 특정 프로젝트가 제거되었다는 질문이 있습니다. 원문을 확인해본 결과, 이것은 단순한 개인 저장소 삭제를 넘어 오늘날 오픈소스 생태계가 어떻게 작동하고 있는지 보여주는 흥미로운 신호입니다.</p>

<p>35년간 학생들을 가르칠 때 본 것은, 기술 커뮤니티가 중앙화된 권력과 탈중앙화된 자유 사이에서 늘 팽팽한 긴장을 유지해왔다는 점입니다. OpenTune 사건도 그 연장선에서 읽어야 할 것 같습니다.</p>

<h2 id="무엇이-일어났는가-저장소-삭제의-배경-읽기">무엇이 일어났는가: 저장소 삭제의 배경 읽기</h2>

<p>원문에서는 제목 자체가 의문형(“Eliminaron OpenTune de Github?”)입니다. 이는 단순 사실 보도가 아니라 “정말 이런 일이?”라는 놀라움을 담고 있다는 신호입니다. Reddit의 r/github 같은 공간은 보통 GitHub의 정책 변화, 저장소 삭제, 혹은 커뮤니티 분쟁이 생겼을 때 활발해지는 곳입니다.</p>

<p>저장소가 GitHub에서 사라진다는 것은 여러 경로가 있습니다. 원본 저자의 의도적 삭제, 저작권 신고(DMCA), GitHub의 정책 위반으로 인한 제거, 혹은 계정 자체의 정지 등입니다. 오늘 이 소식을 살펴보니, 어느 경로든 그것이 공개 커뮤니티 게시물로 올라온다는 것 자체가 흥미롭습니다.</p>

<p>왜냐하면 이는 사용자들이 “이건 이상한데?”라고 느꼈다는 뜻이기 때문입니다. 그리고 그 “이상함”이 뭔지 명확히 규명하기 어려운 상황일수록, 더 큰 이야기가 숨어 있을 가능성이 높습니다.</p>

<h2 id="시니어-창작자와-1인-운영자가-느낄-불안감">시니어 창작자와 1인 운영자가 느낄 불안감</h2>

<p>n8n 같은 자동화 도구를 직접 만지면서 본 것은, 1인 개발자나 소규모 팀이 GitHub에 얼마나 깊이 의존하고 있다는 점입니다. 저장소 하나가 사라진다는 것은 단순히 코드 한 줄이 없어지는 게 아닙니다.</p>

<p>그것은:</p>
<ul>
  <li>다른 프로젝트들이 의존하던 라이브러리의 단절</li>
  <li>기여자들의 일 년간의 commit이 접근 불가능해짐</li>
  <li>포크(fork)된 버전들조차 원본 저장소 링크를 찾지 못하는 상황</li>
  <li>사용 중인 조직들이 갑자기 유지보수 경로를 잃어버림</li>
</ul>

<p>을 의미합니다.</p>

<p>특히 자동화 인프라를 자신의 비용으로 구축하고 운영해온 입장에서 보면, OpenTune 같은 도구가 갑자기 사라진다는 소식은 단순 “뉴스”가 아니라 “내 시스템이 언제 먹통이 될 수도 있다”는 신호입니다. GitHub이 아무리 안정적이라고 해도, 결국 특정 저장소의 운명은 원저자, 또는 GitHub의 정책 변화에 달려 있습니다. 이것은 오픈소스의 자유로움이자, 동시에 가장 취약한 지점입니다.</p>

<h2 id="이것이-더-큰-질문을-던진다">이것이 더 큰 질문을 던진다</h2>

<p>“왜 사라졌나?”라는 질문 너머에는 “과연 GitHub의 저장소는 영구적인가?”라는 더 근본적인 물음이 있습니다.</p>

<p>학생들을 가르칠 때 항상 강조했던 것은 “그 도구가 없어져도 당신이 할 수 있는 일이 있는가”라는 질문입니다. 생성형 AI 붐, 클라우드 혁명, 블록체인 열풍을 모두 보면서 배운 것은, 그때그때 중앙 플랫폼이 “영구적”이라고 약속해도 현실은 그렇지 않다는 것입니다.</p>

<p>OpenTune이 사라진 이유가 무엇이든, 이 사건은:</p>
<ul>
  <li>개인 개발자들의 저장소도 언제든 GitHub 정책의 대상이 될 수 있다는 점</li>
  <li>오픈소스 생태계가 단일 플랫폼(GitHub)에 과도하게 중앙화되어 있다는 점</li>
  <li>로컬 백업이나 다중 저장소 전략의 중요성</li>
</ul>

<p>을 다시 한 번 상기시킵니다.</p>

<h2 id="계속-지켜봐야-할-것">계속 지켜봐야 할 것</h2>

<p>OpenTune이 왜 삭제되었는지, 그리고 그것이 정책 변화의 신호인지, 아니면 개별 사건인지에 대한 논쟁이 있을 텐데, 이 부분은 계속 지켜봐야 할 지점입니다. 특히 GitHub이 앞으로 저작권이나 정책 집행(enforcement)을 어떻게 투명하게 공지할 것인가가 중요합니다.</p>

<p>이 이슈는 다음 편에서 Reddit 커뮤니티의 반응이나 GitHub의 공식 입장이 있었는지, 그리고 유사 사례들이 얼마나 잦은지 이어서 다뤄보겠습니다.</p>]]></content><author><name>Damesek</name></author><category term="기술" /><category term="GitHub" /><category term="오픈소스" /><category term="저장소 정책" /><summary type="html"><![CDATA[Reddit r/github에서 화제가 된 OpenTune 저장소 삭제 논쟁을 살펴본다]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788498047/damesektok/opentune-removed-github-question.svg" /><media:content medium="image" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788498047/damesektok/opentune-removed-github-question.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">GitHub Actions로 프로덕션을 돌려도 될까? - 신뢰의 경계선을 다시 그어보다</title><link href="https://damesek.com/posts/github-actions-production-trust/" rel="alternate" type="text/html" title="GitHub Actions로 프로덕션을 돌려도 될까? - 신뢰의 경계선을 다시 그어보다" /><published>2026-09-03T09:00:00+09:00</published><updated>2026-09-03T09:00:00+09:00</updated><id>https://damesek.com/posts/github-actions-production-trust</id><content type="html" xml:base="https://damesek.com/posts/github-actions-production-trust/"><![CDATA[<h2 id="질문이-나온-배경-편의성과-우려-사이">질문이 나온 배경: 편의성과 우려 사이</h2>

<p>Reddit의 r/github 커뮤니티에서 올라온 “Do you actually trust GitHub Actions for production?”이라는 질문을 살펴보니, 이것은 단순한 기술 선택 문제를 넘어 더 깊은 불안감을 드러내고 있습니다. 원문을 확인해본 결과, 이 질문은 이미 많은 팀이 GitHub Actions를 프로덕션 배포(production deployment)에 사용하고 있으면서도, 동시에 그것이 과연 “충분히 안전한가”라는 의구심을 품고 있다는 뜻입니다.</p>

<p>이것은 흥미로운 시점입니다. GitHub Actions는 2019년 출시 이후 꾸준히 성장해왔고, 지금 2026년에는 많은 조직이 이를 자신들의 배포 파이프라인(deployment pipeline) 중심에 놓고 있습니다. 하지만 그렇게 널리 쓰이는 도구에 대해 여전히 “신뢰할 수 있을까?”라는 질문이 커뮤니티에서 반복해서 나온다는 것은, 기술 도입과 신뢰 형성 사이에 좁혀지지 않는 간극이 있다는 뜻입니다.</p>

<h2 id="신뢰가-부족한-지점들-무엇이-마음을-놓지-못하게-할까">신뢰가 부족한 지점들: 무엇이 마음을 놓지 못하게 할까</h2>

<p>35년 동안 대학에서 기술과 커뮤니케이션을 가르치며 여러 기술 붐을 지켜본 입장에서 보면, 새로운 도구에 대한 의구심은 항상 비슷한 패턴을 따릅니다. 그리고 이번 GitHub Actions 신뢰 논쟁도 예외가 아닙니다.</p>

<p>원문을 근거로 보면, 개발자들이 우려하는 지점은 대략 이러합니다:</p>

<p><strong>첫째, 제어 범위의 불명확성(control boundary uncertainty)</strong>입니다. GitHub Actions는 Microsoft 클라우드 인프라에서 돌아갑니다. 즉, 무엇이 문제가 되면 직접 손을 쓸 수 있는 영역이 제한적입니다. 1인 자동화 운영자 입장에서는 특히 더 그렇습니다. n8n처럼 자신의 서버에 설치하고 직접 로그를 들여다볼 수 있는 자동화 도구와 달리, GitHub Actions는 “검은 상자(black box)”처럼 느껴질 수 있습니다.</p>

<p><strong>둘째, 보안 관리의 복잡성(security governance complexity)</strong>입니다. 프로덕션 배포 과정에서 필요한 시크릿(secrets), 접근 권한(permissions), 감시 능력(observability)이 모두 GitHub라는 단일 플랫폼에 집중됩니다. 침입자 입장에서는 공략 지점이 명확하고, 관리자 입장에서는 모든 계란이 한 바구니에 담긴 느낌입니다.</p>

<p><strong>셋째, 서비스 안정성의 이력(reliability track record)</strong>입니다. 마이크로소프트 클라우드도 가끔 장애를 겪습니다. GitHub 자체의 가동 중단이나 GitHub Actions 특정 기능의 버그가 발생하면, 팀 전체의 배포 파이프라인이 멈춥니다. 다른 선택지가 없다면 더욱 불안합니다.</p>

<h2 id="누가-어떤-상황에서-이-질문을-던질까">누가, 어떤 상황에서 이 질문을 던질까</h2>

<p>원문을 살펴보니 이 질문은 특히 두 가지 상황의 개발자들에게서 나오는 것 같습니다.</p>

<p>하나는 <strong>스타트업이나 소규모 팀</strong>입니다. 이들은 비용과 편의성 때문에 GitHub를 중심으로 모든 것을 구축했는데, 회사가 자라면서 프로덕션 환경의 중요도가 높아지자 “정말 이대로 괜찮을까?”라는 의구심이 생기는 겁니다.</p>

<p>또 하나는 <strong>규칙이 까다로운 산업(regulated industries)</strong> - 금융, 의료, 보안 분야의 팀들입니다. 이들에게는 감시 능력, 감사 기록(audit trail), 규정 준수(compliance)가 선택사항이 아니라 필수입니다. GitHub Actions만으로는 이 요구사항을 충족하기 어렵다고 느낍니다.</p>

<p>그리고 중요한 것이 하나 더 있습니다. <strong>1인 자동화 운영자(solo automation operator)</strong>들입니다. n8n 생태계에서 점점 더 많이 보이는 이들은, 자신의 사이드 프로젝트나 소규모 클라이언트 자동화를 GitHub Actions로 돌리고 있습니다. 하지만 무엇이 잘못되면 직접 고쳐야 하는 상황에서, 클라우드 서비스의 “검은 상자”는 특히 더 불편합니다.</p>

<h2 id="신뢰의-기준은-결국-무엇을-원하는가에서-나온다">신뢰의 기준은 결국 ‘무엇을 원하는가’에서 나온다</h2>

<p>35년 동안 보아온 바에 따르면, 기술에 대한 신뢰는 객관적 성능이 아니라 <strong>용도에 맞는 통제 가능성</strong>에서 나옵니다.</p>

<p>GitHub Actions가 충분히 안정적이고 기능도 풍부한 것은 맞습니다. 하지만 “신뢰할 수 있는가”라는 질문에 대한 답은 사람마다, 팀마다 다릅니다:</p>

<ul>
  <li><strong>높은 가용성이 필요한 팀</strong>에게는 GitHub의 장애 이력이 크리티컬(critical)입니다.</li>
  <li><strong>규정 준수가 필요한 조직</strong>에게는 감시 능력 부족이 치명적입니다.</li>
  <li><strong>1인 운영자</strong>에게는 문제 발생 시 직접 손을 쓸 수 없다는 점이 불안합니다.</li>
  <li>반대로 <strong>작은 프로젝트를 빨리 런칭(launching)하고 싶은 팀</strong>에게는 GitHub Actions가 가장 편한 선택입니다.</li>
</ul>

<p>이것이 n8n이나 Jenkins, GitLab CI처럼 자체 호스팅(self-hosted) 옵션이 있는 도구들이 여전히 살아남는 이유입니다. 사람들은 비용 절감이나 편의성보다 <strong>통제 가능성(control)</strong>을 더 중요하게 여기는 경우가 많기 때문입니다.</p>

<h2 id="남겨진-질문-이것은-github-actions의-문제일까-아니면-기대치의-문제일까">남겨진 질문: 이것은 GitHub Actions의 문제일까, 아니면 기대치의 문제일까</h2>

<p>원문에서 드러나는 의구심을 정리하면, 결국 이런 질문으로 귀결됩니다: “GitHub Actions는 정말 프로덕션 레벨(production-level)의 도구인가, 아니면 ‘충분히 좋은 정도’의 개발 도구인가?” 이 경계선이 명확하지 않은 것이 혼란을 낳고 있는 것 같습니다.</p>

<p>실제로 GitHub Actions는 많은 회사가 프로덕션에서 사용하고 있고, 대부분 잘 작동합니다. 하지만 “작동한다”와 “신뢰할 수 있다”는 다른 개념입니다. 전자는 기술적 능력을 말하고, 후자는 심리적이고 조직적인 확신을 말합니다.</p>

<p>GitHub 자체가 이 신뢰 격차를 좁히기 위해 더 투명한 상태 페이지(status page)를 제공하고, 더 강화된 보안 기능을 추가하고, 고객 지원(customer support)을 강화하고 있는 것으로 보입니다. 하지만 그것도 완전한 답은 아닌 듯합니다.</p>

<h2 id="마무리-계속-지켜봐야-할-지점들">마무리: 계속 지켜봐야 할 지점들</h2>

<p>이 논쟁이 있는데, 특히 관심 있게 봐야 할 부분은 <strong>GitHub Actions가 앞으로 어떤 방향으로 신뢰성 기능을 강화할 것인가</strong>와 <strong>대체 도구들(Jenkins, GitLab CI, n8n 같은 자체 호스팅 솔루션)이 얼마나 빠르게 GitHub만큼 사용하기 쉬운 경험을 제공할 수 있을 것인가</strong>입니다. 이 두 움직임이 어떻게 만나느냐에 따라 시장의 선택이 결정될 것 같습니다.</p>

<p>이 이슈는 단순히 기술 선택의 문제가 아니라, 개발 문화가 점점 더 “통제 가능성을 포기하고 편의성을 택하는 방향”으로 흘러가고 있는지, 아니면 “다시 자체 통제로 돌아가려는 움직임”이 있는지를 보여주는 신호이기도 합니다. 이 이슈는 다음 편에서 실제 사례와 선택 기준이 어떻게 구체화되고 있는지 이어서 다뤄보겠습니다.</p>]]></content><author><name>Damesek</name></author><category term="기술" /><category term="GitHub" /><category term="자동화" /><category term="CI/CD" /><category term="DevOps" /><summary type="html"><![CDATA[Reddit r/github에서 화제인 '프로덕션 환경에서 GitHub Actions를 신뢰할 수 있는가' 질문을 통해, 1인 운영자와 팀 조직이 마주한 신뢰와 위험의 간극을 살펴봅니다.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788411668/damesektok/github-actions-production-trust.svg" /><media:content medium="image" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788411668/damesektok/github-actions-production-trust.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">GitHub 마크다운 미리보기가 들쑥날쑥한 이유, 뭘까?</title><link href="https://damesek.com/posts/github-markdown-preview-inconsistency/" rel="alternate" type="text/html" title="GitHub 마크다운 미리보기가 들쑥날쑥한 이유, 뭘까?" /><published>2026-09-02T09:00:00+09:00</published><updated>2026-09-02T09:00:00+09:00</updated><id>https://damesek.com/posts/github-markdown-preview-inconsistency</id><content type="html" xml:base="https://damesek.com/posts/github-markdown-preview-inconsistency/"><![CDATA[<h2 id="지금-일어나고-있는-일">지금 일어나고 있는 일</h2>

<p>원문을 확인해본 결과, 사용자가 겪는 현상은 꽤 흥미롭습니다. 같은 마크다운 파일이 어떨 땐 깔끔하게 렌더링되어 보이다가, 어떨 땐 갑자기 raw code(원본 코드) 상태로 표시된다는 것이죠. 더 놀라운 건 이 현상이 ‘무작위(random preview failure)’라는 점입니다.</p>

<p>commit(커밋)을 한 직후에 문제가 시작되었다고 했는데, 며칠 지나면 자동으로 정상화되기도 하고, 그대로 계속 깨진 채로 있기도 합니다. 심지어 다른 저장소(repository)에 정확히 같은 내용의 파일을 복사해도 여전히 미리보기가 실패한다고 했으니, 이건 단순한 파일 포맷 문제는 아닌 것 같습니다.</p>

<h2 id="기술-스택-관점에서-보면">기술 스택 관점에서 보면</h2>

<p>GitHub의 마크다운 렌더링 파이프라인(rendering pipeline)을 생각해보면, 여러 계층이 있습니다. 파일을 받아들이는 단계, 마크다운 파서(parser)를 거치는 단계, HTML로 변환하는 단계, 브라우저에서 표시하는 단계. 이 중 어느 한 지점에서 불안정성이 생기면 사용자 입장에서는 “왜 이게 되다 안 되다 하지?”라는 경험을 하게 됩니다.</p>

<p>원문에서 중요한 단서는 파일명입니다. README.jp.md라고 표시되어 있는데, 이건 일본어 메타데이터를 포함할 가능성이 있습니다. 혹은 문자 인코딩(encoding) 문제일 수도 있고요. 35년간 다양한 기술 스택을 보며 느낀 건, 문자 처리 계층은 언제나 예상 밖의 문제를 낳는다는 것입니다. UTF-8 인코딩, BOM(Byte Order Mark), 줄바꿈 형식(line ending) 같은 것들이 눈에 띄지 않게 동작하다가도, 특정 버전의 파서나 서버에 올라가면 갑자기 충돌을 일으킵니다.</p>

<h2 id="이-현상이-말해주는-것들">이 현상이 말해주는 것들</h2>

<p>시간이 지나면 자동으로 복구된다는 부분이 흥미롭습니다. 이건 보통 서버 측 캐시(cache) 갱신, 또는 비동기 작업 큐(asynchronous job queue)의 재처리(retry) 같은 메커니즘을 시사합니다. n8n이나 GitHub Actions 같은 자동화 도구로 인프라를 구축해본 입장에서 보면, GitHub도 분명히 백그라운드에서 여러 작업들을 관리하고 있을 겁니다. 파일이 올라오면 즉시 렌더링하는 게 아니라, 큐에 넣었다가 처리하는 방식이죠.</p>

<p>문제는 이 큐나 캐시 계층에서 특정 조건(특정 문자셋, 특정 파일 크기, 특정 마크다운 문법)에 따라 실패율이 달라진다는 겁니다. 그리고 “어제는 안 됐는데 오늘 되네?” 같은 경험은 보통 GitHub 측 서버 재배포(deployment)나 알고리즘 업데이트가 있었을 때 일어납니다.</p>

<h2 id="왜-1인-운영자와-소규모-팀에게-중요한가">왜 1인 운영자와 소규모 팀에게 중요한가</h2>

<p>GitHub은 이제 단순한 코드 저장소가 아니라, 문서화(documentation), 자동화 워크플로우(workflow), 협업 플랫폼으로 작동하고 있습니다. README 파일이 제대로 보이지 않는다는 건 프로젝트의 첫인상이 망가진다는 뜻이고, 특히 국제화(localization)를 지원하려는 창작자(이 경우 일본어 README)에겐 신뢰 문제로 번질 수 있습니다.</p>

<p>더군다나 이 버그가 “무작위”라면? 자동화 테스트(automated testing)나 CI/CD 파이프라인에서도 잡아내기 어렵습니다. 내가 작성한 마크다운이 정말 맞는지 확인하려고 해도, GitHub 자체의 렌더러가 일관성 있는 피드백을 주지 않으니까요.</p>

<h2 id="남아-있는-의문들">남아 있는 의문들</h2>

<p>여기서 계속 지켜봐야 할 지점이 있습니다: GitHub은 이 렌더링 불안정성을 공식적으로 인정하고 있는가? 그리고 실제로 파일 메타데이터(특히 non-ASCII 문자열)와 연관이 있는가 하는 부분입니다.</p>

<p>이 이슈는 다음 편에서 GitHub 공식 문서나 커뮤니티 응답이 어떻게 흘러갔는지 이어서 다뤄보겠습니다.</p>]]></content><author><name>Damesek</name></author><category term="기술" /><category term="GitHub" /><category term="마크다운" /><category term="웹UI" /><summary type="html"><![CDATA[같은 파일인데 어떨 땐 렌더링되고 어떨 땐 원본 코드로 보이는 현상, 원로 개발자 관점에서 살펴봅니다]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788325254/damesektok/github-markdown-preview-inconsistency.svg" /><media:content medium="image" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788325254/damesektok/github-markdown-preview-inconsistency.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">호텔학과 교수가 AI 수업으로 상을 받은 이유, 우리는 왜 봐야 할까</title><link href="https://damesek.com/posts/ai-teaching-award-signals/" rel="alternate" type="text/html" title="호텔학과 교수가 AI 수업으로 상을 받은 이유, 우리는 왜 봐야 할까" /><published>2026-09-01T09:00:00+09:00</published><updated>2026-09-01T09:00:00+09:00</updated><id>https://damesek.com/posts/ai-teaching-award-signals</id><content type="html" xml:base="https://damesek.com/posts/ai-teaching-award-signals/"><![CDATA[<h2 id="왜-호텔학-교수의-ai-수업이-눈에-띄는가">왜 호텔학 교수의 AI 수업이 눈에 띄는가</h2>

<p>오늘 이 소식을 살펴보니, 한국대학신문에 보도된 김수정 교수의 사례가 단순한 ‘좋은 사례’를 넘어서는 무엇을 담고 있다는 생각이 듭니다. 호텔관광경영학과라는 아주 구체적이고 실무 중심의 학과에서 AI 교육혁신이 최우수상을 받았다는 점이 흥미로운 이유는, 이것이 기술 전공자만의 영역이 아니라는 신호를 보내기 때문입니다.</p>

<p>35년간 대학 강단에 있으면서 저는 기술 붐이 도래할 때마다 같은 패턴을 봐왔습니다. 처음엔 컴퓨터공학과와 정보시스템학과 중심으로 새 기술이 유입되고, 5~7년 뒤에야 다른 학과들이 뒤따라갑니다. 그런데 이번 AI 물결은 속도가 다릅니다. 호텔관광경영학과 같은 서비스업 기반 학과에서 이미 실질적인 적용 사례를 만들어내고 있다는 것은, AI가 더 이상 ‘과학기술 부서의 도구’가 아니라 ‘모든 분야의 일하는 방식을 바꾸는 기반’이 되었다는 의미입니다.</p>

<h2 id="1인-운영자-관점에서-이것이-의미하는-바">1인 운영자 관점에서 이것이 의미하는 바</h2>

<p>제가 n8n 자동화 인프라를 직접 구축하면서 경험한 것은, 기술과 도메인 지식이 만났을 때 가장 강력한 결과가 나온다는 점입니다. 순수 개발자가 만드는 자동화 워크플로우도 훌륭하지만, 그 분야의 실제 일을 손으로 해본 사람이 자동화를 설계할 때는 다릅니다. 시간을 낭비하는 부분, 반복되는 패턴, 숨겨진 병목이 눈에 띕니다.</p>

<p>호텔관광경영 교수가 AI를 교육과정에 녹이는 방식도 비슷한 논리에서 나온 것 같습니다. 관광산업의 실제 흐름—예약 관리, 고객 대응, 운영 최적화—을 알고 있는 사람이 “이 부분에 생성형 AI를 어떻게 쓸 수 있을까”를 묻는 것입니다. 이것은 1인 운영자나 소규모 팀이 자동화 시스템을 세울 때 가져야 할 태도와 정확히 같습니다.</p>

<p>저도 GitHub 생태계를 지켜보면서 최근 몇 년간 변화를 감지했습니다. 초기에는 엔지니어링 최적화(performance optimization) 중심의 커뮤니티였다면, 지금은 “비개발자도 워크플로우를 짜는” 시대로 옮겨가고 있습니다. Actions, Workflows, 통합형 자동화 도구들이 기술 진입장벽을 낮추고 있거든요. 이런 추세 위에서 호텔학과 교수의 사례는 “도메인 전문가가 자신의 분야에서 AI를 다루는 능력”이 이제 표준 역량이 되어야 한다는 신호처럼 보입니다.</p>

<h2 id="남겨진-질문들-지켜봐야-할-지점">남겨진 질문들: 지켜봐야 할 지점</h2>

<p>다만 원문을 확인해본 결과, 이 “우수사례”가 정확히 어떤 수준의 실행인지는 명확하지 않습니다. 예컨대 학생들이 배우는 AI 도구가 초급 프롬프트 엔지니어링(prompt engineering) 수준인지, 아니면 실제로 호텔 운영에 쓸 만한 자동화 시스템을 만드는 수준인지 알기 어렵습니다. 교육 현장에서의 AI 활용이 “트렌드에 맞춰 과목을 추가한 것”인지, “학생들이 실무에서 즉시 써먹을 수 있는 기술을 체계적으로 가르치는 것”인지 구분하는 것은 중요합니다.</p>

<p>또 다른 관점으로는, 이렇게 각 학과마다 도메인-AI 결합 교육이 확산될 때 누가 커리큘럼을 설계하는가의 문제가 있습니다. 교수들이 스스로 자신의 분야에 맞는 AI 활용법을 연구하고 가르칠 역량을 가지고 있는가, 아니면 외부 전문가나 대학 중앙의 AI 센터에 의존하게 되는가—이것도 계속 지켜봐야 할 지점입니다.</p>

<p>이 이슈는 다음 편에서 한국 대학들이 이 사례를 받아 어떻게 확산시키려 하는지, 그리고 실제 학생들의 졸업 후 직무 적응력이 어떻게 바뀌었는지를 추적해서 이어서 다뤄보겠습니다.</p>]]></content><author><name>Damesek</name></author><category term="기술" /><category term="AI교육" /><category term="자동화" /><category term="커리큘럼" /><summary type="html"><![CDATA[부천대 호텔관광경영학과의 AI 교육 사례가 주는 신호: 도메인 전문성과 생성형 AI의 만남]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788238837/damesektok/ai-teaching-award-signals.svg" /><media:content medium="image" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788238837/damesektok/ai-teaching-award-signals.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">VS Code의 에이전트 창이 2026년 8월 어떻게 정리되었을까</title><link href="https://damesek.com/posts/vscode-agent-sessions-august-2026/" rel="alternate" type="text/html" title="VS Code의 에이전트 창이 2026년 8월 어떻게 정리되었을까" /><published>2026-09-01T09:00:00+09:00</published><updated>2026-09-01T09:00:00+09:00</updated><id>https://damesek.com/posts/vscode-agent-sessions-august-2026</id><content type="html" xml:base="https://damesek.com/posts/vscode-agent-sessions-august-2026/"><![CDATA[<h2 id="github-원문을-정리해보니-보이는-것">GitHub 원문을 정리해보니 보이는 것</h2>

<p>오늘 이 소식을 살펴보니, 8월 한 달간 VS Code에 들어온 변화들이 꽤 구체적이다. v1.132부터 v1.135까지 네 개 버전에 걸쳐서 에이전트 세션(agent sessions)과 워크플로우 정리에 관한 기능들이 연달아 나왔다는 점이 눈에 띈다.</p>

<p>원문을 확인해본 결과, 이번 업데이트의 핵심은 세 가지로 요약된다. 첫째, 여러 채팅창을 수평이나 수직으로 나란히 놓을 수 있게 했고, 둘째 채팅 기록 속에서 특정 프롬프트(prompt)로 빠르게 이동할 수 있는 타임라인 컨트롤이 생겼으며, 셋째 외부 애플리케이션에서 시작한 에이전트 세션을 VS Code 안에서 계속 이어갈 수 있도록 만들었다는 것이다(Continue external agent sessions).</p>

<h2 id="1인-운영자-입장에서-생각해볼-점">1인 운영자 입장에서 생각해볼 점</h2>

<p>내가 n8n 자동화 인프라를 직접 다루면서 깨달은 것 중 하나는, 워크플로우가 복잡해질수록 ‘어디에서 어느 흐름이 시작되었는가’를 추적하는 게 얼마나 중요한지 하는 것이었다.</p>

<p>이번 업데이트에서 주목할 만한 부분은 여러 창을 나란히 두고 비교할 수 있다는 기능(Arrange chats side by side)이다. 한 번 생각해보면, 1인 자동화 운영자가 서로 다른 프롬프트에서 나온 결과물들을 한눈에 비교하려면 지금까지는 탭을 왕복해야 했다. 이제는 화면을 나눠서 “이 방식으로 요청했을 때”와 “저 방식으로 요청했을 때”의 차이를 실시간으로 볼 수 있게 된 것이다. 특히 n8n 같은 노코드(no-code) 자동화 플랫폼과 함께 쓸 때, 두 개의 서로 다른 LLM 프롬프트 결과를 비교하는 일이 잦다면 꽤 실용적이다.</p>

<p>또 하나 눈에 띄는 건 외부 에이전트 세션을 VS Code 안에서 이어갈 수 있다는 점이다. 원문에는 “View and continue recent Copilot or Claude agent sessions created in other applications”라고 나와 있다. 이건 워크스테이션, 모바일, 웹 브라우저 등 여러 곳에서 시작한 작업을 한곳으로 모을 수 있다는 뜻이다.</p>

<h2 id="기술-생태계에-묻는-질문들">기술 생태계에 묻는 질문들</h2>

<p>그런데 여기서 주의 깊게 봐야 할 지점이 있다. 원문을 읽다 보면 “Open the Agents window without GitHub sign-in”이라는 문장이 나온다. 이건 Claude 모델을 API 키로 연결하면 GitHub 계정 없이도 에이전트 창을 쓸 수 있다는 뜻인데, 동시에 “Switch model providers in Claude sessions”라는 표현도 있다. 즉, 한 세션 안에서 Anthropic 구독(Claude)의 모델과 Copilot 구독(OpenAI)의 모델을 오갈 수 있다는 것이다.</p>

<p>이것은 단순한 기능 추가가 아니라, GitHub/Microsoft와 Anthropic 사이의 관계 변화를 암시한다. 35년을 기술 교육에서 보내면서, 나는 이런 신호들이 얼마나 중요한지 안다. 한 기업의 플랫폼 안에서 경쟁 업체의 도구를 공식적으로 지원하기 시작한다는 건, 그 시장이 다원화되고 있다는 신호다.</p>

<p>또한 실험적 기능(experimental setting)으로 제시된 “/rubber-duck” 명령어도 흥미롭다. “Try the experimental /rubber-duck command in a Copilot Agent Host session to get a second opinion”이라는 표현은, 현재 LLM 기술에 대한 신뢰가 아직 조건부라는 걸 보여준다. 에이전트가 놓친 부분을 잡아내기 위해 ‘또 다른 모델의 의견’을 구한다는 것 자체가 흥미로운 접근이다.</p>

<h2 id="남은-물음들과-앞으로의-시선">남은 물음들과 앞으로의 시선</h2>

<p>“Arrange chats side by side”와 “prompt timeline control”이 실제로 1인 운영자들의 디버깅(debugging) 속도를 얼마나 올릴 것인가에 대한 논쟁이 있을 텐데, 이 부분은 계속 지켜봐야 할 지점입니다.</p>

<p>이 이슈는 다음 편에서 실제 1인 자동화 운영 환경에서 이런 기능들이 어떤 영향을 미치기 시작했는지 이어서 다뤄보겠습니다.</p>]]></content><author><name>Damesek</name></author><category term="기술" /><category term="GitHub" /><category term="Copilot" /><category term="VS Code" /><category term="자동화" /><category term="에이전트" /><summary type="html"><![CDATA[GitHub Changelog를 통해 본 VS Code v1.132~v1.135의 에이전트 세션 및 워크플로우 개선 사항과 1인 자동화 운영자의 관점에서의 의미]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788238851/damesektok/vscode-agent-sessions-august-2026.svg" /><media:content medium="image" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1788238851/damesektok/vscode-agent-sessions-august-2026.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">AI가 블록체인 시장 입구를 바꾸고 있다는데, 우리는 준비되어 있나?</title><link href="https://damesek.com/posts/ai-gateway-onchain-markets-perplexity/" rel="alternate" type="text/html" title="AI가 블록체인 시장 입구를 바꾸고 있다는데, 우리는 준비되어 있나?" /><published>2026-08-28T09:00:00+09:00</published><updated>2026-08-28T09:00:00+09:00</updated><id>https://damesek.com/posts/ai-gateway-onchain-markets-perplexity</id><content type="html" xml:base="https://damesek.com/posts/ai-gateway-onchain-markets-perplexity/"><![CDATA[<h2 id="저는-처음-이-소식을-읽고-한-가지-질문이-떠올랐습니다">저는 처음 이 소식을 읽고 한 가지 질문이 떠올랐습니다</h2>

<p>원문을 확인해본 결과, Perplexity라는 AI 검색 플랫폼이 OpenSea(NFT 거래소) 데이터를 직접 활용하기 시작했다는 점입니다. “AI가 블록체인 시장의 새로운 입구(gateway)”라는 표현이 흥미로운데, 이것이 단순한 기술 연결이 아니라 정보 흐름의 방향 자체가 바뀌고 있다는 신호처럼 보입니다.</p>

<p>35년간 대학에서 학생들에게 “정보는 어디서 오는가”라는 질문을 던져왔습니다. 90년대 후반 검색 엔진이 등장했을 때, 2000년대 중반 SNS가 정보원이 되었을 때, 그리고 지금 AI가 데이터를 직접 해석해 제시하는 시대까지. 매번 “정보의 입구”가 바뀔 때마다 시장의 규칙이 함께 움직였습니다.</p>

<h2 id="이번엔-왜-다를까요-중간-단계를-건너뛰는-것입니다">이번엔 왜 다를까요? 중간 단계를 건너뛰는 것입니다</h2>

<p>지금까지 암호화폐나 NFT 시장에 진입하려면 꽤 복잡한 과정을 거쳤습니다. 거래소 계정을 열고, 지갑을 연결하고, 직접 탐색하거나 Discord 커뮤니티에서 정보를 모으고… 이 모든 과정은 “이미 이 세계에 발을 들인 사람들”을 위한 설계였습니다.</p>

<p>Perplexity가 OpenSea의 데이터를 직접 참고하면서 무슨 일이 일어나는가를 보면, 일반 사용자가 단순히 “지금 뜨는 NFT가 뭐야?” 같은 질문을 던졌을 때 AI가 실시간 데이터를 바탕으로 답변해줄 수 있게 되었다는 뜻입니다. 이는 “암호화폐 초보자”의 진입 장벽이 크게 낮아진다는 의미이기도 합니다.</p>

<p>원문에서 강조되는 부분이 바로 이것인데, AI가 단순 정보 중개자(intermediary)를 넘어 “실제 거래 데이터에 직접 접근하는 해석자”가 된다는 점입니다. 이전에는 사람들이 블록체인 정보를 찾기 위해 여러 플랫폼을 거쳐야 했다면, 이제 하나의 AI 인터페이스에서 그 모든 것이 통합되기 시작하는 것입니다.</p>

<h2 id="1인-자동화-운영자-입장에서-보면-지금이-분기점입니다">1인 자동화 운영자 입장에서 보면, 지금이 분기점입니다</h2>

<p>n8n으로 자동화 인프라를 직접 구축해본 경험에서 이 움직임이 어떤 의미인지 봅니다. 지금까지 블록체인 데이터를 워크플로우에 끌어다 쓰려면 API를 직접 다루거나 서드파티 서비스를 중간에 껴야 했습니다. 그런데 AI가 “정보 수집과 해석”을 한 번에 처리하는 게이트웨이 역할을 하면, 자동화의 진입 난도가 급격히 낮아집니다.</p>

<p>예를 들어 NFT 시장 모니터링 봇을 만드는 사람 입장에서, 지금까지는 OpenSea API → 데이터 정제 → 의사결정 로직 → 알림 전송이라는 복잡한 체인을 직접 설계해야 했습니다. 하지만 AI가 “이 컬렉션의 가격 추세가 어떻게 되고 있나?”라는 질문에 자연언어로 답할 수 있다면, 비기술자도 자동화 워크플로우를 구성할 수 있게 됩니다.</p>

<p>동시에 이것은 위험 신호이기도 합니다. 지난 35년 기술 붐을 지켜보면, 진입 장벽이 낮아질수록 투기와 거품도 함께 증가했습니다. AI가 블록체인 시장의 입구를 활짝 열면, 정보 접근성은 높아지지만 판단의 품질은 보장되지 않습니다. 잘못된 AI 해석을 바탕으로 자동화된 거래 결정이 실행될 수도 있다는 뜻입니다.</p>

<h2 id="앞으로-주목할-질문들">앞으로 주목할 질문들</h2>

<p>이 변화가 정말 사용자 경험을 개선하는 방향으로 갈지, 아니면 또 다른 정보 독점의 시작이 될지에 대한 논쟁이 있는데, 이 부분은 계속 지켜봐야 할 지점입니다. 특히 AI가 블록체인 데이터를 “해석”할 때 어떤 선택(bias)이 들어가는지, 그것이 시장에 얼마나 영향을 미치는지 하는 문제말입니다.</p>

<p>이 이슈는 다음 편에서 실제로 이런 AI 게이트웨이들이 어떻게 규제되고 있는지, 그리고 1인 창작자나 자동화 운영자들이 실제로 이 도구들을 활용할 때 어떤 실패 사례와 성공 사례가 나타나고 있는지 이어서 다뤄보겠습니다.</p>]]></content><author><name>Damesek</name></author><category term="기술" /><category term="AI Agent" /><category term="블록체인" /><category term="자동화" /><category term="OpenSea" /><summary type="html"><![CDATA[Perplexity가 OpenSea 데이터를 활용하면서 AI가 암호화폐 시장으로 가는 새로운 입구가 되고 있다. 35년 기술 변화를 지켜본 입장에서 이 움직임이 1인 자동화 운영자에게 의미하는 바를 살펴본다.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1787893238/damesektok/ai-gateway-onchain-markets-perplexity.svg" /><media:content medium="image" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1787893238/damesektok/ai-gateway-onchain-markets-perplexity.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">GitHub의 라벨 정리 기능이 일반 공개됐는데, 이게 1인 운영자에게 무엇을 의미할까?</title><link href="https://damesek.com/posts/github-label-management-ga-2026/" rel="alternate" type="text/html" title="GitHub의 라벨 정리 기능이 일반 공개됐는데, 이게 1인 운영자에게 무엇을 의미할까?" /><published>2026-08-28T09:00:00+09:00</published><updated>2026-08-28T09:00:00+09:00</updated><id>https://damesek.com/posts/github-label-management-ga-2026</id><content type="html" xml:base="https://damesek.com/posts/github-label-management-ga-2026/"><![CDATA[<h2 id="무엇이-바뀌었나">무엇이 바뀌었나</h2>

<p>GitHub Changelog를 확인해본 결과, GitHub이 라벨 관리 기능을 새로 전개했습니다. 두 가지가 눈에 띕니다.</p>

<p>첫째는 ‘제안된 라벨(Suggested Labels)’ 기능입니다. 저장소가 최근에 많이 쓴 라벨들을 자동으로 보여주고, 사용자가 개인적으로 자주 붙인 라벨도 따로 모아서(Recent labels) 표시해줍니다. 원문에서 강조한 부분을 보면 “라벨 목록이 길고 자꾸만 늘어나는 저장소”를 겨냥하고 있다는 게 분명합니다.</p>

<p>둘째는 ‘라벨 아카이빙(Archive Labels)’ 기능입니다. 더 이상 쓰지 않는 라벨을 삭제하지 않고 보관할 수 있게 된 것입니다. 기존 이슈에 붙어 있던 라벨의 기록은 남아 있으면서도, 새로 라벨을 고를 때는 활성 라벨만 보이게 되는 방식입니다.</p>

<h2 id="왜-이-시점에-이-기능인가">왜 이 시점에 이 기능인가</h2>

<p>35년간 교육 현장과 소프트웨어 생태계를 지켜보며 느낀 것은, 도구의 변화는 늘 ‘스케일의 고통(scale pain)’에서 출발한다는 것입니다. 누군가는 크게 불편해하고 있다는 신호가 먼저 옵니다.</p>

<p>GitHub의 경우, 2020년대 중후반으로 접어들면서 엔터프라이즈 팀은 물론이고, 1인 개발자나 소수 팀도 상당 규모의 저장소를 관리하게 됐습니다. 커뮤니티가 성장하거나 오픈소스 프로젝트가 발전하면서 이슈 수가 수천 개를 넘는 경우가 흔해졌고, 그에 따라 라벨도 50개, 100개를 넘게 됩니다. 원문에서 “긴 라벨 목록(long label lists)”과 “계속 늘어나는 라벨(growing label lists)”이라는 표현을 쓴 것도 이런 배경입니다.</p>

<p>기존에는 라벨을 지우거나 유지하는 일이 순전히 사람의 손으로만 이뤄졌습니다. 어떤 라벨을 폐기할지, 언제 폐기할지 판단하고, 실제로 삭제하면 기록이 남지 않습니다. 아카이빙 기능은 그 딜레마를 풀어줍니다.</p>

<h2 id="1인-자동화-운영자-입장에서-본다면">1인 자동화 운영자 입장에서 본다면</h2>

<p>제가 n8n이나 GitHub 자동화 인프라를 직접 만들어본 입장에서 보면, 이 기능은 사실 무척 실용적입니다.</p>

<p>먼저 ‘제안된 라벨’ 기능의 효과를 생각해봅시다. 저장소의 자동화 워크플로우에서 라벨을 프로그래매틱하게(programmatically) 붙이는 경우가 많습니다. 예를 들어 CI/CD 파이프라인에서 테스트 실패 유형을 분류해서 라벨을 자동 부착하거나, 이슈가 들어올 때 키워드를 보고 자동으로 ‘버그(bug)’, ‘기능요청(feature request)’ 같은 라벨을 붙입니다. 그런데 문제는 사람이 직접 이슈를 만들거나 수정할 때 “지금 어떤 라벨이 있는지” 기억해야 한다는 점입니다. 최근에 자주 쓴 라벨을 먼저 보여주는 것만으로도 인지 부하가 줄어듭니다.</p>

<p>다음으로 아카이빙 기능입니다. 저장소의 이슈 메타데이터를 분석할 때, 더 이상 쓰지 않는 라벨이 섞여 있으면 통계나 자동화 규칙이 복잡해집니다. 예를 들어 n8n에서 GitHub 이슈를 모니터링할 때 “특정 라벨이 붙은 이슈만 처리하라”는 필터를 만들 때도, 라벨 목록이 깔끔해야 관리자의 실수가 줄어듭니다. 아카이빙은 기존 이슈의 라벨 기록은 보존하면서도 “지금 쓸 라벨 목록”을 정갈하게 유지하게 해줍니다.</p>

<p>그런데 한 가지 짚고 넘어갈 점은, 이 기능들이 라벨 관리의 근본적인 원칙을 바꾸지는 않는다는 것입니다. 라벨을 언제 아카이브할지, 어떤 라벨을 제안 순서에 올릴지는 여전히 사람이 판단해야 합니다. 도구는 더 편리해졌지만, 의사결정의 책임은 사용자에게 남아 있습니다.</p>

<h2 id="지켜봐야-할-부분들">지켜봐야 할 부분들</h2>

<p>한 가지 흥미로운 질문이 있습니다. GitHub이 ‘최근에 저장소에서 쓴 라벨’을 기준으로 제안할 때, 알고리즘이 정확히 어떤 규칙을 따르는가 하는 점입니다. 단순히 사용 빈도일까요? 아니면 시간 가중치(recency weighting)도 고려할까요? 자동화 워크플로우에서 반복적으로 같은 라벨을 붙인다면, 그것이 제안 순위에 과하게 영향을 미치지 않을까요? 이 부분은 계속 지켜봐야 할 지점입니다.</p>

<p>또한 아카이빙 기능이 REST API나 GraphQL API 레벨에서도 지원되는지, 아니면 웹 UI에서만 가능한지도 확인할 필요가 있습니다. 자동화를 하려면 API 지원이 필수적이니까요.</p>

<p>이 이슈는 다음 편에서 GitHub의 라벨 관리 API 업데이트와 함께 어떻게 흘러갔는지 이어서 다뤄보겠습니다.</p>]]></content><author><name>Damesek</name></author><category term="기술" /><category term="GitHub" /><category term="자동화" /><category term="워크플로우" /><summary type="html"><![CDATA[GitHub이 라벨 제안과 아카이빙 기능을 전체 사용자에게 공개했다. 대규모 저장소를 혼자 운영하는 사람들에게 어떤 영향을 미칠까?]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1787893253/damesektok/github-label-management-ga-2026.svg" /><media:content medium="image" url="https://res.cloudinary.com/drw6zoumr/image/upload/v1787893253/damesektok/github-label-management-ga-2026.svg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>