<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>지속 가능한 꾸준함</title>
    <link>https://developer0hye.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 9 Aug 2026 21:56:45 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>developer0hye</managingEditor>
    <item>
      <title>codex claude 사용중 투덜투덜</title>
      <link>https://developer0hye.tistory.com/941</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;codex도 많이 쓰고 claude도 많이 쓰는데 요새 claude가 더 좋게 느껴진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 /goal 로 목표 및 목적 정의를 확실히 할 수 있는 케이스에는 /goal 로 명령어 주면서 auto mode 세팅해두고 돌려놓으면 정말 개입 없이 일을 완료하는 능력이 뛰어나다고 느껴진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 codex는 /goal 기능을 활용해도 중간 중간 손이 너무 많이 가서 claude 가 정말 해결 못 하는 문제나, 중간 중간 yes를 누를 체력이 남아돌때, claude 한도량을 다 채웠을때, codex-plugin-cc 이용해서 claude 코드 자동 리뷰시킬때 아니면 손이 덜 간다.&lt;/p&gt;</description>
      <category>기타</category>
      <author>developer0hye</author>
      <guid isPermaLink="true">https://developer0hye.tistory.com/941</guid>
      <comments>https://developer0hye.tistory.com/941#entry941comment</comments>
      <pubDate>Sat, 25 Jul 2026 17:47:34 +0900</pubDate>
    </item>
    <item>
      <title>클로드코드 9to6 근무 시간 기준 5h 세션 3번 사용하는 방법</title>
      <link>https://developer0hye.tistory.com/940</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;claude code를 오전 9시에 처음 사용하면 5h 세션 구간이 보통&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;09:00&amp;ndash;14:00&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;14:00&amp;ndash;19:00&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;으로 잡혀 근무시간 중 2개 구간을 활용하게 됩니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;반면 평일 오전 6시 20~30분경&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;/schedule&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&quot;안녕&quot;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;같은 짧은 작업을 미리 실행해두면, 리셋 시점이 점심 전과 오후 4시 30분 전후로 이동해 9&amp;ndash;6 근무시간 동안 최대 3개 세션 구간에 걸쳐 사용할 수 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;다만 이 방법은 5시간 사용량 Max에 자주 도달하는 경우에만 체감 효과가 있습니다. 주간 총한도가 늘어나는 것은 아니며, 예약 전에 Claude를 먼저 사용하면 기준 시각이 달라질 수 있습니다. 예약 작업도 소량의 사용량을 소비하고, 실행 시각에는 몇 분 정도 지연이 있을 수 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;claude code 실행 후 아래의 명령어를 입력하면 됩니다. 아마 앱에서도 schedule 생성해달라고 요청하면 될 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1784428814466&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/schedule 매주 월요일부터 금요일까지 Asia/Seoul 시간대 기준 오전 6시 20분에 실행해. 실행할 때 웹 검색, 파일 확인, 저장소 수정, 외부 도구 사용이나 추가 설명은 하지 말고 &quot;안녕&quot;만 출력한 뒤 즉시 종료해.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타</category>
      <author>developer0hye</author>
      <guid isPermaLink="true">https://developer0hye.tistory.com/940</guid>
      <comments>https://developer0hye.tistory.com/940#entry940comment</comments>
      <pubDate>Sun, 19 Jul 2026 11:40:22 +0900</pubDate>
    </item>
    <item>
      <title>mcp-atlassian contribution</title>
      <link>https://developer0hye.tistory.com/939</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://github.com/sooperset/mcp-atlassian/pull/1222&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/sooperset/mcp-atlassian/pull/1222&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1783864738854&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;feat: resolve Confluence tiny links and page URLs in get_page by developer0hye &amp;middot; Pull Request #1222 &amp;middot; sooperset/mcp-atlassian&quot; data-og-description=&quot;Summary Allow confluence_get_page to accept numeric page IDs, full Cloud or Data Center page URLs, and Confluence tiny links. Decode tiny links locally, including 64-bit content IDs and Confluence...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/sooperset/mcp-atlassian/pull/1222&quot; data-og-url=&quot;https://github.com/sooperset/mcp-atlassian/pull/1222&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/A8O63/dJMb9iISRMJ/ogFskIXZMkmXwnHbUHkZyk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/Rl2IM/dJMb9gxxwtc/mCKYGgZB8S1ZwZadaFYPYk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/sooperset/mcp-atlassian/pull/1222&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/sooperset/mcp-atlassian/pull/1222&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/A8O63/dJMb9iISRMJ/ogFskIXZMkmXwnHbUHkZyk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/Rl2IM/dJMb9gxxwtc/mCKYGgZB8S1ZwZadaFYPYk/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;feat: resolve Confluence tiny links and page URLs in get_page by developer0hye &amp;middot; Pull Request #1222 &amp;middot; sooperset/mcp-atlassian&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Summary Allow confluence_get_page to accept numeric page IDs, full Cloud or Data Center page URLs, and Confluence tiny links. Decode tiny links locally, including 64-bit content IDs and Confluence...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;confluence 게시글 링크 복사해서 나오는 주소로 ai한테 던져주면 인식을 못 하길래 인식할 수 있게 수정했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;내가 ai rush 출전했을때 같이 참가하여 레전드 퍼포먼스를 보여주신 현수님의 repo다. 여전히 레전드시구나&lt;/p&gt;</description>
      <category>Contribution 일지</category>
      <author>developer0hye</author>
      <guid isPermaLink="true">https://developer0hye.tistory.com/939</guid>
      <comments>https://developer0hye.tistory.com/939#entry939comment</comments>
      <pubDate>Sun, 12 Jul 2026 23:00:19 +0900</pubDate>
    </item>
    <item>
      <title>tistory blog polyfill.io 로그인 창 없애기</title>
      <link>https://developer0hye.tistory.com/938</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;425&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p8axI/dJMcafmxH2T/sfAQAMAN74HYjLajojuk8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p8axI/dJMcafmxH2T/sfAQAMAN74HYjLajojuk8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p8axI/dJMcafmxH2T/sfAQAMAN74HYjLajojuk8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp8axI%2FdJMcafmxH2T%2FsfAQAMAN74HYjLajojuk8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;564&quot; height=&quot;425&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;425&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;언제부터인가... 내 블로그 들어오는데 이런 게 떴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;해결 방법은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HjJfv/dJMcahkns9X/g0u318uak5gWOcYKul2so0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HjJfv/dJMcahkns9X/g0u318uak5gWOcYKul2so0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HjJfv/dJMcahkns9X/g0u318uak5gWOcYKul2so0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHjJfv%2FdJMcahkns9X%2Fg0u318uak5gWOcYKul2so0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;681&quot; height=&quot;541&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZjUXI/dJMcaaestQu/12QcTugH2cRXUKkWp0IEB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZjUXI/dJMcaaestQu/12QcTugH2cRXUKkWp0IEB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZjUXI/dJMcaaestQu/12QcTugH2cRXUKkWp0IEB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZjUXI%2FdJMcaaestQu%2F12QcTugH2cRXUKkWp0IEB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;342&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;1292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mjRwT/dJMcagsa9In/OvnQkHn7U55UZ4SdWGSabk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mjRwT/dJMcagsa9In/OvnQkHn7U55UZ4SdWGSabk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mjRwT/dJMcagsa9In/OvnQkHn7U55UZ4SdWGSabk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmjRwT%2FdJMcagsa9In%2FOvnQkHn7U55UZ4SdWGSabk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;993&quot; height=&quot;1292&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;1292&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;845&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cti73K/dJMcaaestRC/UvBnLUt4rdOqBFfqKSCrN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cti73K/dJMcaaestRC/UvBnLUt4rdOqBFfqKSCrN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cti73K/dJMcaaestRC/UvBnLUt4rdOqBFfqKSCrN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcti73K%2FdJMcaaestRC%2FUvBnLUt4rdOqBFfqKSCrN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1001&quot; height=&quot;845&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;845&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;lt;script&amp;nbsp;src=&quot;&lt;a href=&quot;https://polyfill.io/v3/polyfill.min.js?features=es6&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://polyfill.io/v3/polyfill.min.js?features=es6&lt;/a&gt;&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이 라인을 찾아 지우고 적용을 눌렀더니 해결됐다.&lt;/p&gt;</description>
      <category>기타</category>
      <author>developer0hye</author>
      <guid isPermaLink="true">https://developer0hye.tistory.com/938</guid>
      <comments>https://developer0hye.tistory.com/938#entry938comment</comments>
      <pubDate>Tue, 2 Jun 2026 09:27:18 +0900</pubDate>
    </item>
    <item>
      <title>Windows Terminal, 새 탭을 현재 경로에서 열기 (Mac처럼)</title>
      <link>https://developer0hye.tistory.com/937</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Windows&amp;nbsp;Terminal은&amp;nbsp;새&amp;nbsp;탭(+)&amp;nbsp;버튼을&amp;nbsp;누르면&amp;nbsp;늘&amp;nbsp;홈&amp;nbsp;디렉터리(C:\Users\...)로&amp;nbsp;가버린다.&amp;nbsp;Mac&amp;nbsp;터미널처럼&amp;nbsp;지금&amp;nbsp;탭&amp;nbsp;경로&amp;nbsp;그대로&amp;nbsp;새&amp;nbsp;탭을&amp;nbsp;열고 &lt;br /&gt;&amp;nbsp;&amp;nbsp;싶다면&amp;nbsp;단축키&amp;nbsp;두&amp;nbsp;개면&amp;nbsp;끝이다. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Ctrl&amp;nbsp;+&amp;nbsp;Shift&amp;nbsp;+&amp;nbsp;D&amp;nbsp;&amp;mdash;&amp;nbsp;현재&amp;nbsp;탭&amp;nbsp;경로&amp;nbsp;그대로&amp;nbsp;새&amp;nbsp;탭&amp;nbsp;열기 &lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;Alt&amp;nbsp;+&amp;nbsp;Shift&amp;nbsp;+&amp;nbsp;D&amp;nbsp;&amp;mdash;&amp;nbsp;현재&amp;nbsp;경로로&amp;nbsp;패널&amp;nbsp;분할 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&quot;+&quot;&amp;nbsp;버튼&amp;nbsp;자체는&amp;nbsp;현재&amp;nbsp;경로를&amp;nbsp;물려받지&amp;nbsp;못하니(항상&amp;nbsp;startingDirectory로&amp;nbsp;열림),&amp;nbsp;위&amp;nbsp;두&amp;nbsp;단축키를&amp;nbsp;쓰면&amp;nbsp;된다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <author>developer0hye</author>
      <guid isPermaLink="true">https://developer0hye.tistory.com/937</guid>
      <comments>https://developer0hye.tistory.com/937#entry937comment</comments>
      <pubDate>Mon, 1 Jun 2026 20:18:07 +0900</pubDate>
    </item>
    <item>
      <title>맥os 스크린샷 프로세스 종료 명령어</title>
      <link>https://developer0hye.tistory.com/936</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;killall&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span&gt;screencaptureui&lt;/span&gt;&lt;/p&gt;</description>
      <category>기타</category>
      <author>developer0hye</author>
      <guid isPermaLink="true">https://developer0hye.tistory.com/936</guid>
      <comments>https://developer0hye.tistory.com/936#entry936comment</comments>
      <pubDate>Tue, 12 May 2026 23:12:06 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu에서 Duck DNS로 Dynamic DNS 설정하기 (SSH 외부 접속)</title>
      <link>https://developer0hye.tistory.com/935</link>
      <description>&lt;h1&gt;Ubuntu에서 Duck DNS로 Dynamic DNS 설정하기 (SSH 외부 접속)&lt;/h1&gt;
&lt;p&gt;ISP에서 유동 IP를 사용하는 환경에서도 도메인으로 항상 SSH 접속이 가능하도록 Duck DNS를 설정하는 방법을 정리합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Dynamic DNS(DDNS)란?&lt;/h2&gt;
&lt;p&gt;ISP가 공인 IP를 주기적으로 변경하는 환경에서, 도메인 이름을 항상 현재 IP에 자동으로 매핑해주는 서비스입니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[ 문제 상황 ]
월요일: 118.37.94.241  →  ssh user@118.37.94.241 ✅
화요일: IP 변경됨!      →  ssh user@118.37.94.241 ❌ 접속 불가

[ DDNS 적용 후 ]
ssh user@mypc.duckdns.org  →  IP가 바뀌어도 항상 접속 가능 ✅&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;동작 원리&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;┌─────────┐    5분마다 IP 전송     ┌───────────┐
│  내 PC   │ ──────────────────→  │ Duck DNS  │
│          │  &amp;quot;내 IP는 지금       │  서버      │
│          │   xxx.xxx.xxx.xxx&amp;quot;  │           │
└─────────┘                       └───────────┘
                                       │
                                       │ DNS 응답
                                       ▼
┌─────────┐  mypc.duckdns.org       ┌───────────┐
│ 외부 PC  │ ──── DNS 질의 ────→    │ Duck DNS  │
│          │ ←── xxx.xxx.xxx.xxx ── │  서버      │
│          │                        └───────────┘
│          │  ssh xxx.xxx.xxx.xxx:22
│          │ ──────────────────────→  내 PC에 접속
└─────────┘&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2&gt;환경&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu 24.04 LTS&lt;/li&gt;
&lt;li&gt;SSH 서버 설치 및 실행 중 (&lt;code&gt;openssh-server&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SSH 서버가 없다면 먼저 설치합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo apt install openssh-server -y
sudo systemctl enable --now sshd&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;1. Duck DNS 도메인 등록&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://www.duckdns.org&quot;&gt;https://www.duckdns.org&lt;/a&gt; 접속&lt;/li&gt;
&lt;li&gt;GitHub, Google 등으로 로그인&lt;/li&gt;
&lt;li&gt;원하는 서브도메인 입력 (예: &lt;code&gt;mypc&lt;/code&gt;) → &lt;strong&gt;add domain&lt;/strong&gt; 클릭&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mypc.duckdns.org&lt;/code&gt; 도메인이 생성됨&lt;/li&gt;
&lt;li&gt;페이지 상단의 &lt;strong&gt;token&lt;/strong&gt;을 복사해둡니다&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2&gt;2. IP 자동 갱신 스크립트 생성&lt;/h2&gt;
&lt;p&gt;Duck DNS에 현재 IP를 주기적으로 알려주는 스크립트를 만듭니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir -p ~/duckdns&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nano ~/duckdns/duck.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;아래 내용을 작성합니다. &lt;code&gt;내도메인&lt;/code&gt;과 &lt;code&gt;내토큰&lt;/code&gt;을 본인 것으로 변경하세요.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;#!/bin/bash
echo url=&amp;quot;https://www.duckdns.org/update?domains=내도메인&amp;amp;token=내토큰&amp;amp;ip=&amp;quot; | curl -k -o ~/duckdns/duck.log -K -&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;예를 들어 도메인이 &lt;code&gt;mypc&lt;/code&gt;, 토큰이 &lt;code&gt;abcd1234-5678-efgh&lt;/code&gt;라면:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;#!/bin/bash
echo url=&amp;quot;https://www.duckdns.org/update?domains=mypc&amp;amp;token=abcd1234-5678-efgh&amp;amp;ip=&amp;quot; | curl -k -o ~/duckdns/duck.log -K -&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;실행 권한을 부여합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;chmod 700 ~/duckdns/duck.sh&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;3. 테스트 실행&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;~/duckdns/duck.sh
cat ~/duckdns/duck.log&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;OK&lt;/code&gt;가 출력되면 성공입니다. &lt;code&gt;KO&lt;/code&gt;가 출력되면 도메인이나 토큰을 다시 확인하세요.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. Cron으로 자동 실행 등록&lt;/h2&gt;
&lt;p&gt;5분마다 자동으로 IP를 갱신하도록 cron에 등록합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;crontab -e&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;맨 아래에 다음 줄을 추가합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;*/5 * * * * ~/duckdns/duck.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;저장 후 등록 확인:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;crontab -l&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2&gt;5. 외부에서 접속 확인&lt;/h2&gt;
&lt;p&gt;외부 PC에서 아래 명령어로 접속합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ssh 유저이름@내도메인.duckdns.org&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;비밀번호를 입력하면 접속됩니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;6. 보안 설정 (권장)&lt;/h2&gt;
&lt;p&gt;공인 IP에 SSH가 노출되면 봇들의 무차별 로그인 시도가 들어옵니다. 실제로 하루에 수천 건이 발생할 수 있습니다. 아래 보안 설정을 권장합니다.&lt;/p&gt;
&lt;h3&gt;fail2ban 설치&lt;/h3&gt;
&lt;p&gt;비밀번호를 여러 번 틀리는 IP를 자동 차단합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo apt install fail2ban -y&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;SSH 키 인증 설정&lt;/h3&gt;
&lt;p&gt;외부 PC에서 실행:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ssh-keygen -t ed25519
ssh-copy-id 유저이름@내도메인.duckdns.org&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;비밀번호 로그인 비활성화&lt;/h3&gt;
&lt;p&gt;키 등록이 완료된 후, 서버에서 실행:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo nano /etc/ssh/sshd_config&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;아래 항목을 변경합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PasswordAuthentication no&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;SSH 재시작:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo systemctl restart sshd&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이후 SSH 키가 없는 사람은 비밀번호를 알아도 로그인이 불가능합니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;요약&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;단계&lt;/th&gt;
&lt;th&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Duck DNS 가입&lt;/td&gt;
&lt;td&gt;도메인 등록 + 토큰 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;스크립트 생성&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/duckdns/duck.sh&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cron 등록&lt;/td&gt;
&lt;td&gt;5분마다 IP 자동 갱신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;보안 설정&lt;/td&gt;
&lt;td&gt;fail2ban + SSH 키 인증 + 비밀번호 로그인 차단&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;무료이고 설정도 간단해서 개인 서버 용도로 추천합니다.&lt;/p&gt;</description>
      <category>기타</category>
      <author>developer0hye</author>
      <guid isPermaLink="true">https://developer0hye.tistory.com/935</guid>
      <comments>https://developer0hye.tistory.com/935#entry935comment</comments>
      <pubDate>Fri, 3 Apr 2026 19:51:53 +0900</pubDate>
    </item>
    <item>
      <title>Headless 서버에서 GWS CLI 인증하기</title>
      <link>https://developer0hye.tistory.com/934</link>
      <description>&lt;h1&gt;Headless 서버에서 GWS CLI 인증하기&lt;/h1&gt;
&lt;h2&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;gws auth login&lt;/code&gt;은 OAuth 인증을 사용한다. 인증 흐름은 다음과 같다:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;서버에서 &lt;code&gt;gws auth login&lt;/code&gt; 실행 → 임시 HTTP 서버를 &lt;code&gt;localhost:{PORT}&lt;/code&gt;에 띄우고 대기&lt;/li&gt;
&lt;li&gt;출력된 URL을 브라우저에서 열고 Google 로그인&lt;/li&gt;
&lt;li&gt;Google이 &lt;code&gt;http://localhost:{PORT}&lt;/code&gt;로 리다이렉트하여 인증 코드 전달&lt;/li&gt;
&lt;li&gt;gws가 코드를 수신하여 인증 완료&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Headless 서버에는 브라우저가 없으므로 데스크탑 브라우저를 사용해야 하는데, 인증 후 리다이렉트되는 &lt;code&gt;localhost&lt;/code&gt;가 &lt;strong&gt;데스크탑의 localhost&lt;/strong&gt;를 가리키게 되어 서버의 gws가 콜백을 받지 못한다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;데스크탑 브라우저 → Google 인증 → redirect to localhost:{PORT}
                                        ↓
                                 데스크탑의 localhost (아무것도 없음) ❌
                                 서버의 localhost (gws 대기 중) — 도달 불가&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;해결: SSH 포트 포워딩&lt;/h2&gt;
&lt;p&gt;SSH 터널을 이용해 데스크탑의 &lt;code&gt;localhost:{PORT}&lt;/code&gt;를 서버의 &lt;code&gt;localhost:{PORT}&lt;/code&gt;로 연결한다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;데스크탑 브라우저 → Google 인증 → redirect to localhost:{PORT}
                                        ↓
                                 데스크탑의 localhost:{PORT}
                                        ↓  (SSH 터널)
                                 서버의 localhost:{PORT} (gws 대기 중) ✅&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;순서&lt;/h2&gt;
&lt;h3&gt;1. 서버에서 &lt;code&gt;gws auth login&lt;/code&gt; 실행&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ gws auth login
Open this URL in your browser to authenticate:

  https://accounts.google.com/o/oauth2/auth?...&amp;amp;redirect_uri=http://localhost:12345&amp;amp;...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;URL에서 &lt;strong&gt;포트 번호를 확인&lt;/strong&gt;한다 (위 예시에서 &lt;code&gt;12345&lt;/code&gt;). 포트는 매 실행마다 바뀐다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;이 상태에서 터미널을 닫지 말고 대기한다.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h3&gt;2. 데스크탑에서 SSH 터널 열기&lt;/h3&gt;
&lt;p&gt;새 터미널을 열고 SSH 터널을 설정한다. 포트 번호를 1단계에서 확인한 값으로 교체한다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ssh -L {PORT}:localhost:{PORT} {서버} -N&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;예시:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ssh -L 12345:localhost:12345 user@your-server -N&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;옵션&lt;/th&gt;
&lt;th&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-L {PORT}:localhost:{PORT}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;데스크탑의 PORT를 서버의 localhost:PORT로 포워딩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-N&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;원격 명령 실행 없이 터널만 유지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;(선택) 백그라운드로 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;3. 데스크탑 브라우저에서 인증&lt;/h3&gt;
&lt;p&gt;1단계에서 출력된 URL을 데스크탑 브라우저에 붙여넣고 Google 계정으로 로그인한다.&lt;/p&gt;
&lt;p&gt;인증이 완료되면 &lt;code&gt;localhost:{PORT}&lt;/code&gt;로 리다이렉트되고, SSH 터널을 통해 서버의 gws가 콜백을 수신하여 인증이 완료된다.&lt;/p&gt;
&lt;h3&gt;4. 정리&lt;/h3&gt;
&lt;p&gt;인증 완료 후 SSH 터널 터미널을 &lt;code&gt;Ctrl+C&lt;/code&gt;로 종료한다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-f&lt;/code&gt; 옵션으로 백그라운드 실행했을 경우:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 터널 프로세스 찾기
ps aux | grep &amp;quot;ssh -L&amp;quot;

# 종료
kill {PID}&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;요약&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. 서버에서 실행 (포트 확인 후 대기)
gws auth login

# 2. 데스크탑에서 SSH 터널 (포트 번호 맞춰서)
ssh -L 12345:localhost:12345 user@your-server -N

# 3. 데스크탑 브라우저에서 URL 열어 인증&lt;/code&gt;&lt;/pre&gt;</description>
      <category>기타</category>
      <author>developer0hye</author>
      <guid isPermaLink="true">https://developer0hye.tistory.com/934</guid>
      <comments>https://developer0hye.tistory.com/934#entry934comment</comments>
      <pubDate>Thu, 2 Apr 2026 16:42:52 +0900</pubDate>
    </item>
    <item>
      <title>rf detr contribution!</title>
      <link>https://developer0hye.tistory.com/933</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/roboflow/rf-detr/pull/167#event-23855087076&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/roboflow/rf-detr/pull/167#event-23855087076&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1774364476383&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Enhance WindowedDinov2 input validation and fix tensor reshaping by developer0hye &amp;middot; Pull Request #167 &amp;middot; roboflow/rf-detr&quot; data-og-description=&quot;Description Harden WindowedDinov2 input validation: replace the strippable assert with an explicit raise ValueError so the spatial-dimension check is always active (even under Python -O). No tensor...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/roboflow/rf-detr/pull/167#event-23855087076&quot; data-og-url=&quot;https://github.com/roboflow/rf-detr/pull/167&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bivoVH/dJMb83SimzV/kddpb09geXpkOmcaM9MKA0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/xnYd5/dJMb9iaQFS8/LKMTGvORVtjnNrZJF0NkdK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/roboflow/rf-detr/pull/167#event-23855087076&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/roboflow/rf-detr/pull/167#event-23855087076&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bivoVH/dJMb83SimzV/kddpb09geXpkOmcaM9MKA0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/xnYd5/dJMb9iaQFS8/LKMTGvORVtjnNrZJF0NkdK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Enhance WindowedDinov2 input validation and fix tensor reshaping by developer0hye &amp;middot; Pull Request #167 &amp;middot; roboflow/rf-detr&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Description Harden WindowedDinov2 input validation: replace the strippable assert with an explicit raise ValueError so the spatial-dimension check is always active (even under Python -O). No tensor...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1년 전쯤 올린건데 이제 검토하고 머지됐다. 잘 기억도 안나네&lt;/p&gt;</description>
      <category>Contribution 일지</category>
      <author>developer0hye</author>
      <guid isPermaLink="true">https://developer0hye.tistory.com/933</guid>
      <comments>https://developer0hye.tistory.com/933#entry933comment</comments>
      <pubDate>Wed, 25 Mar 2026 00:01:44 +0900</pubDate>
    </item>
    <item>
      <title>클로드코드 max 플랜 200달러 후기</title>
      <link>https://developer0hye.tistory.com/932</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ralph 같은 거로 며칠 내내 자동으로 돌아가게 하면 내 프로젝트 기준 3~4일 정도면 100% 찼고, 내가 수동으로 다 보면서 결정하고 진행시키면 한 일주일에 주간 한도량 기준 50~60% 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/developer0hye&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/developer0hye&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1774261391508&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;profile&quot; data-og-title=&quot;developer0hye - Overview&quot; data-og-description=&quot;practical. developer0hye has 257 repositories available. Follow their code on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/developer0hye&quot; data-og-url=&quot;https://github.com/developer0hye&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cPpxJw/dJMb9lMaWPx/aSQBEAgKNWn05CKPR8nje0/img.png?width=300&amp;amp;height=300&amp;amp;face=129_127_175_178,https://scrap.kakaocdn.net/dn/MyYp0/dJMb9lk6y9P/j2PUxjvkm5FCDnvy0pp6AK/img.png?width=300&amp;amp;height=300&amp;amp;face=129_127_175_178&quot;&gt;&lt;a href=&quot;https://github.com/developer0hye&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/developer0hye&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cPpxJw/dJMb9lMaWPx/aSQBEAgKNWn05CKPR8nje0/img.png?width=300&amp;amp;height=300&amp;amp;face=129_127_175_178,https://scrap.kakaocdn.net/dn/MyYp0/dJMb9lk6y9P/j2PUxjvkm5FCDnvy0pp6AK/img.png?width=300&amp;amp;height=300&amp;amp;face=129_127_175_178');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;developer0hye - Overview&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;practical. developer0hye has 257 repositories available. Follow their code on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업량 궁금하면 위 개인 깃헙 커밋 히스토리 참고해보면 될듯&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 회사에서도 하루종일 쓰고 퇴근하고도 쓰고 그럼&lt;br /&gt;&lt;br /&gt;회사거는 못올리기에~ 위 계정의 작업량이랑 비슷하거나 그 이상이라고 보면 됨&lt;/p&gt;</description>
      <category>인생</category>
      <author>developer0hye</author>
      <guid isPermaLink="true">https://developer0hye.tistory.com/932</guid>
      <comments>https://developer0hye.tistory.com/932#entry932comment</comments>
      <pubDate>Mon, 23 Mar 2026 19:24:09 +0900</pubDate>
    </item>
  </channel>
</rss>