<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>하루하나</title>
    <link>https://cpdev.tistory.com/</link>
    <description>개발 &amp;amp; 라이프 &amp;amp; 취미</description>
    <language>ko</language>
    <pubDate>Sun, 7 Jun 2026 02:29:39 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>하루하나_</managingEditor>
    <image>
      <title>하루하나</title>
      <url>https://tistory1.daumcdn.net/tistory/1959106/attach/d901488eea1143f6ade988e8651fb64e</url>
      <link>https://cpdev.tistory.com</link>
    </image>
    <item>
      <title>oh-my-claudecode</title>
      <link>https://cpdev.tistory.com/244</link>
      <description>&lt;h1&gt;oh-my-claudecode 분석&lt;/h1&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;Claude Code를 위한 멀티 에이전트 오케스트레이션 플러그인&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;개요&lt;/h2&gt;
&lt;p&gt;oh-my-zsh가 zsh 설정을 단순화한 것처럼, oh-my-claudecode(OMC)는 Claude Code의 복잡한 설정과 명령어를 추상화하여 즉시 사용 가능하게 만든 플러그인이다. 자연어 의도 감지를 통해 적절한 에이전트와 실행 모드를 자동으로 활성화한다.&lt;/p&gt;
&lt;h2&gt;핵심 특징&lt;/h2&gt;
&lt;h3&gt;1. Zero Learning Curve&lt;/h3&gt;
&lt;p&gt;명령어를 외울 필요 없이 자연어로 의도를 전달하면 자동으로 적절한 동작이 활성화된다. 예를 들어 &amp;quot;plan this&amp;quot;라고 말하면 planning interview가 시작되고, &amp;quot;don&amp;#39;t stop until done&amp;quot;이라고 하면 persistence mode가 활성화된다.&lt;/p&gt;
&lt;h3&gt;2. 5가지 실행 모드&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;모드&lt;/th&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;strong&gt;Autopilot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;완전 자율 실행&lt;/td&gt;
&lt;td&gt;단일 태스크 자동화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ultrapilot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;최대 5개 병렬 워커 (3-5x 빠름)&lt;/td&gt;
&lt;td&gt;멀티 컴포넌트 시스템, 대규모 리팩토링&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Swarm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;N개 독립 에이전트가 공유 풀에서 태스크 claim&lt;/td&gt;
&lt;td&gt;대량의 독립적 태스크 (타입 에러 수정 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pipeline&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;순차적 에이전트 체이닝&lt;/td&gt;
&lt;td&gt;단계별 워크플로우 (review → implement)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ecomode&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Haiku 우선 사용, 필요시 Sonnet/Opus fallback&lt;/td&gt;
&lt;td&gt;토큰 비용 30-50% 절감&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;3. 32개 전문 에이전트&lt;/h3&gt;
&lt;p&gt;architect, researcher, explore, designer, writer, vision, critic, analyst, executor, planner, qa-tester, scientist 등 역할별로 특화된 에이전트가 존재한다. scientist 에이전트는 3개 티어(low/standard/high)로 분리되어 모델별 비용/성능 최적화가 가능하다.&lt;/p&gt;
&lt;h3&gt;4. 40+ 스킬&lt;/h3&gt;
&lt;p&gt;orchestrate, autopilot, ultrawork, ultrapilot, swarm, pipeline, ecomode, ralph, tdd, build-fix, code-review, security-review, git-master, frontend-ui-ux 등 다양한 내장 스킬을 제공한다.&lt;/p&gt;
&lt;h2&gt;주요 기능 상세&lt;/h2&gt;
&lt;h3&gt;Magic Keywords&lt;/h3&gt;
&lt;p&gt;자연어 외에도 파워 유저를 위한 명시적 키워드 지원:&lt;/p&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;ralph&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Persistence mode - 완료될 때까지 멈추지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ralplan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;합의 기반 반복적 계획 수립&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ulw&lt;/code&gt; / &lt;code&gt;ultrawork&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;최대 병렬 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ultrapilot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;병렬 autopilot (3-5x faster)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;swarm&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;N개 협업 에이전트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pipeline&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;순차 에이전트 체이닝&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;eco&lt;/code&gt; / &lt;code&gt;ecomode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;토큰 효율적 병렬 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;조합 사용 가능: &lt;code&gt;ralph ulw: migrate the database&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Auto Skill Learning (v3.5.0)&lt;/h3&gt;
&lt;p&gt;대화 중 문제 해결 패턴을 감지하고 재사용 가능한 스킬로 자동 추출한다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;패턴 감지&lt;/strong&gt;: 문제-솔루션 쌍 인식&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;스킬 추출&lt;/strong&gt;: &lt;code&gt;/oh-my-claudecode:learner&lt;/code&gt;로 재사용 가능한 지식 추출&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;자동 매칭&lt;/strong&gt;: Fuzzy matching으로 새 문제에 스킬 적용&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;자동 호출&lt;/strong&gt;: 신뢰도 80+ 시 프롬프트 없이 자동 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;스킬 저장 위치:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;User-level: &lt;code&gt;~/.claude/skills/sisyphus-learned/&lt;/code&gt; (프로젝트 간 공유)&lt;/li&gt;
&lt;li&gt;Project-level: &lt;code&gt;.omc/skills/&lt;/code&gt; (프로젝트 전용)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Analytics &amp;amp; Cost Tracking (v3.5.0)&lt;/h3&gt;
&lt;p&gt;세션 전체의 Claude Code 사용량을 자동 추적한다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;omc backfill                      # 모든 트랜스크립트 분석
omc backfill --from 2026-01-01    # 특정 날짜부터
omc stats                         # 전체 세션 통계
omc stats --session               # 현재 세션만
omc stats --json                  # JSON 출력&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;추적 항목: 세션 수, 토큰 사용량, 비용, 에이전트별 비용 분석&lt;/p&gt;
&lt;h3&gt;Persistent Python REPL&lt;/h3&gt;
&lt;p&gt;데이터 분석용 scientist 에이전트는 Python REPL에서 변수가 세션 간 유지된다. pickle/reload 오버헤드 없이 연속적인 분석 작업이 가능하다.&lt;/p&gt;
&lt;h3&gt;Research Workflow&lt;/h3&gt;
&lt;p&gt;병렬 scientist 에이전트 오케스트레이션:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;/oh-my-claudecode:research &amp;lt;goal&amp;gt;       # 체크포인트 기반 연구
/oh-my-claudecode:research AUTO: &amp;lt;goal&amp;gt; # 완료까지 완전 자율
/oh-my-claudecode:research status       # 현재 세션 확인
/oh-my-claudecode:research resume       # 중단된 세션 재개&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;연구 프로토콜:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Decomposition&lt;/strong&gt;: 목표를 3-7개 독립 단계로 분해&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parallel Execution&lt;/strong&gt;: 최대 5개 scientist 에이전트 동시 실행&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-Validation&lt;/strong&gt;: 발견 사항 간 일관성 검증&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Synthesis&lt;/strong&gt;: 종합 마크다운 리포트 생성&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;MCP Server 지원&lt;/h3&gt;
&lt;p&gt;Model Context Protocol 서버 연동으로 Claude Code 확장:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;서버&lt;/th&gt;
&lt;th&gt;설명&lt;/th&gt;
&lt;th&gt;API 키 필요&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;Context7&lt;/td&gt;
&lt;td&gt;라이브러리 문서/코드 컨텍스트&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exa&lt;/td&gt;
&lt;td&gt;향상된 웹 검색&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Filesystem&lt;/td&gt;
&lt;td&gt;확장된 파일 시스템 접근&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;GitHub API (issues, PRs, repos)&lt;/td&gt;
&lt;td&gt;Yes (PAT)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;HUD Statusline&lt;/h3&gt;
&lt;p&gt;Claude Code 상태바에 실시간 오케스트레이션 상태 표시:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rate limits 및 리셋 시간&lt;/li&gt;
&lt;li&gt;컨텍스트 윈도우 사용량&lt;/li&gt;
&lt;li&gt;활성 에이전트 (타입/모델 티어별 코드)&lt;/li&gt;
&lt;li&gt;Todo 진행 상황&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;설치&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Step 1: 플러그인 설치
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode

# Step 2: 셋업 실행
/oh-my-claudecode:omc-setup&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;요구사항&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code CLI&lt;/li&gt;
&lt;li&gt;Claude Max/Pro 구독 (개인) 또는 Anthropic API 키&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;라이선스&lt;/h2&gt;
&lt;p&gt;MIT&lt;/p&gt;
&lt;h2&gt;참고 링크&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Yeachan-Heo/oh-my-claudecode&quot;&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Yeachan-Heo/oh-my-claudecode#documentation&quot;&gt;Full Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Yeachan-Heo/oh-my-claudecode#coming-from-2x&quot;&gt;Migration Guide (2.x → 3.0)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ohmyopencode</category>
      <author>하루하나_</author>
      <guid isPermaLink="true">https://cpdev.tistory.com/244</guid>
      <comments>https://cpdev.tistory.com/244#entry244comment</comments>
      <pubDate>Sat, 24 Jan 2026 23:26:12 +0900</pubDate>
    </item>
    <item>
      <title>rocky 서버에 nginx 설치하기</title>
      <link>https://cpdev.tistory.com/243</link>
      <description>&lt;p&gt;&lt;strong&gt;Rocky Linux에서 Nginx 설치 및 설정&lt;/strong&gt;&lt;br&gt;&lt;strong&gt;1. 시스템 업데이트&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;먼저 패키지 목록을 최신 상태로 업데이트합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;sudo dnf update -y&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. Nginx 패키지 설치&lt;/strong&gt;&lt;br&gt;Rocky Linux 공식 저장소에는 Nginx 패키지가 포함되어 있으므로, &lt;code&gt;dnf&lt;/code&gt; 명령어를 사용하여 설치할 수 있습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;sudo dnf install -y nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;설치가 완료되었는지 확인:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;nginx -v&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3. Nginx 서비스 시작 및 부팅 시 자동 실행&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Nginx 서비스를 시작합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;sudo systemctl start nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;부팅 시 자동으로 실행되도록 설정:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;sudo systemctl enable nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;현재 상태 확인:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;sudo systemctl status nginx&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;4. 방화벽(Firewalld) 설정&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Nginx가 HTTP 및 HTTPS 요청을 처리할 수 있도록 방화벽 규칙을 추가합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;현재 방화벽 설정 확인:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;sudo firewall-cmd --list-all&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;5. 기본 Nginx 페이지 확인&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;웹 브라우저에서 서버의 IP 주소를 입력하여 Nginx가 정상적으로 실행되는지 확인합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;http://your_server_ip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;정상적으로 실행되면 기본 Nginx 환영 페이지가 표시됩니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. Nginx 설정 파일 변경&lt;/strong&gt;&lt;br&gt;기본 설정 파일은 &lt;code&gt;/etc/nginx/nginx.conf&lt;/code&gt;에 있습니다. 수정하려면 다음을 실행하세요.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;sudo vi /etc/nginx/nginx.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;또는 개별 사이트 설정을 &lt;code&gt;/etc/nginx/conf.d/default.conf&lt;/code&gt;에서 관리할 수도 있습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;sudo vi /etc/nginx/conf.d/default.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;변경 후 설정 파일에 오류가 없는지 확인:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;sudo nginx -t&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이상이 없다면 Nginx를 다시 로드합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;sudo systemctl restart nginx
``&lt;/code&gt;&lt;/pre&gt;</description>
      <author>하루하나_</author>
      <guid isPermaLink="true">https://cpdev.tistory.com/243</guid>
      <comments>https://cpdev.tistory.com/243#entry243comment</comments>
      <pubDate>Sat, 8 Mar 2025 15:36:08 +0900</pubDate>
    </item>
    <item>
      <title>[리액트네이티브] react native android 뒤로가기 이슈</title>
      <link>https://cpdev.tistory.com/242</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;react native 로 앱을 개발중인데 거의 마무리 단계에 와서야.. 안드로이드에서 뒤로가기 버튼을 누르면 앱이 종료되듯이 홈화면으로 이동하는것을 발견하였다. BackHandler를 이용해서 하면 된다고 하던데.. 아무리 BackHandler를 적용해도 내 앱에는 적용이 되지 않았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3시간에 걸친 삽질결과,,,,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AndroidManifest.xml에 있는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;enableOnBackInvokedCallback=&quot;true&quot; 옵션을 삭제했더니 정삭적으로 BackHandler를 인식하였다..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거기다 중요한건 BackHandler를 따로 설정하지 않아도 앱에서 바로 나가지지 않고..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제대로 stack navigation에서 뒤로 잘 움직여진다는거다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-0- 내 3시간 돌려줘....&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;save your time..&lt;/p&gt;</description>
      <category>React Native</category>
      <category>리액트 네이티브 android backhandler</category>
      <author>하루하나_</author>
      <guid isPermaLink="true">https://cpdev.tistory.com/242</guid>
      <comments>https://cpdev.tistory.com/242#entry242comment</comments>
      <pubDate>Sat, 1 Mar 2025 18:23:31 +0900</pubDate>
    </item>
    <item>
      <title>git 여러계정 (회사/개인) 사용하기</title>
      <link>https://cpdev.tistory.com/241</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;회사에서도 git 엔터프라이즈 버전을 사용하고 있고, 개인적으로 github도 사용하고 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제대로 clone을 받아서 사용하면 문제가 없는데.. 가끔 계정관련해서 꼬일때가 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를들면 회사 git의 권한으로 개인 git에 push하려고 한다던지..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 ssh key config 파일을 만들어서 쉽게 관리할수 있다.&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;~/.ssh/config file&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;#&amp;nbsp;개인&amp;nbsp;GitHub&amp;nbsp;계정&lt;br /&gt;Host&amp;nbsp;github.com-p&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HostName&amp;nbsp;github.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;User&amp;nbsp;git&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IdentityFile&amp;nbsp;~/.ssh/id_rsa&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;회사&amp;nbsp;GitHub&amp;nbsp;계정&lt;br /&gt;Host&amp;nbsp;github.com-c&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HostName 회사git도메인&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;User&amp;nbsp;git&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IdentityFile&amp;nbsp;~/.ssh/id_rsa_backup&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;ssh&amp;nbsp;-T&amp;nbsp;git@github.com-c&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;개인git으로 접속할떄는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ssh -T git@github.com-p&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;물론 id_rsa파일은 만들어서 각각 등록해놓아야한다~&lt;/p&gt;</description>
      <category>Programming/Git</category>
      <author>하루하나_</author>
      <guid isPermaLink="true">https://cpdev.tistory.com/241</guid>
      <comments>https://cpdev.tistory.com/241#entry241comment</comments>
      <pubDate>Fri, 21 Feb 2025 10:24:43 +0900</pubDate>
    </item>
    <item>
      <title>쿠베플로우(Kubeflow) 입문 가이드</title>
      <link>https://cpdev.tistory.com/240</link>
      <description>&lt;h1 data-end=&quot;88&quot; data-start=&quot;58&quot;&gt; ️ 쿠베플로우(Kubeflow) 입문 가이드&lt;/h1&gt;
&lt;p data-end=&quot;205&quot; data-start=&quot;90&quot; data-ke-size=&quot;size16&quot;&gt;쿠베플로우(Kubeflow)는 쿠버네티스(Kubernetes) 기반의 머신러닝(ML) 워크플로우 자동화 도구입니다. 데이터 과학자와 엔지니어가 머신러닝 모델을 손쉽게 배포하고 관리할 수 있도록 돕습니다.&lt;/p&gt;
&lt;p data-end=&quot;266&quot; data-start=&quot;207&quot; data-ke-size=&quot;size16&quot;&gt;이 문서는 &lt;b&gt;쿠베플로우를 처음 접하는 사람&lt;/b&gt;이 체계적으로 학습할 수 있도록 단계별 가이드를 제공합니다.&lt;/p&gt;
&lt;hr data-end=&quot;271&quot; data-start=&quot;268&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;297&quot; data-start=&quot;273&quot; data-ke-size=&quot;size26&quot;&gt;  1단계: 쿠베플로우 개념 이해&lt;/h2&gt;
&lt;p data-end=&quot;332&quot; data-start=&quot;299&quot; data-ke-size=&quot;size16&quot;&gt;먼저, 쿠베플로우의 기본 개념을 익히는 것이 중요합니다.&lt;/p&gt;
&lt;p data-end=&quot;349&quot; data-start=&quot;334&quot; data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;쿠베플로우란?&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;460&quot; data-start=&quot;350&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;387&quot; data-start=&quot;350&quot;&gt;쿠버네티스(Kubernetes) 위에서 실행되는 ML 플랫폼&lt;/li&gt;
&lt;li data-end=&quot;424&quot; data-start=&quot;388&quot;&gt;ML 모델 개발, 학습, 배포를 자동화하는 파이프라인 제공&lt;/li&gt;
&lt;li data-end=&quot;460&quot; data-start=&quot;425&quot;&gt;MLOps(ML + DevOps) 구현을 위한 필수 도구&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;485&quot; data-start=&quot;462&quot; data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;쿠베플로우의 주요 구성 요소&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;648&quot; data-start=&quot;486&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;533&quot; data-start=&quot;486&quot;&gt;&lt;b&gt;Kubeflow Pipelines(KFP)&lt;/b&gt;: 머신러닝 워크플로우 자동화&lt;/li&gt;
&lt;li data-end=&quot;562&quot; data-start=&quot;534&quot;&gt;&lt;b&gt;Katib&lt;/b&gt;: 자동 하이퍼파라미터 튜닝&lt;/li&gt;
&lt;li data-end=&quot;606&quot; data-start=&quot;563&quot;&gt;&lt;b&gt;KFServing&lt;/b&gt;: ML 모델 서빙(배포 및 예측 API 제공)&lt;/li&gt;
&lt;li data-end=&quot;648&quot; data-start=&quot;607&quot;&gt;&lt;b&gt;Notebooks&lt;/b&gt;: Jupyter Notebook 환경 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;664&quot; data-start=&quot;650&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;학습 자료&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;795&quot; data-start=&quot;665&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;717&quot; data-start=&quot;665&quot;&gt;&lt;a href=&quot;https://www.kubeflow.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-end=&quot;715&quot; data-start=&quot;667&quot;&gt;Kubeflow 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;800&quot; data-start=&quot;797&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;823&quot; data-start=&quot;802&quot; data-ke-size=&quot;size26&quot;&gt;  2단계: 실습 환경 구축&lt;/h2&gt;
&lt;p data-end=&quot;861&quot; data-start=&quot;825&quot; data-ke-size=&quot;size16&quot;&gt;쿠베플로우를 실행하려면 쿠버네티스(K8s) 환경이 필요합니다.&lt;/p&gt;
&lt;p data-end=&quot;876&quot; data-start=&quot;863&quot; data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;설치 옵션&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1099&quot; data-start=&quot;877&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1007&quot; data-start=&quot;877&quot;&gt;&lt;b&gt;로컬 환경에서 실행&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1007&quot; data-start=&quot;900&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;923&quot; data-start=&quot;900&quot;&gt;Minikube + Kubeflow&lt;/li&gt;
&lt;li data-end=&quot;956&quot; data-start=&quot;927&quot;&gt;K3s (경량 쿠버네티스) + Kubeflow&lt;/li&gt;
&lt;li data-end=&quot;1007&quot; data-start=&quot;960&quot;&gt;Docker Desktop + Kind(Kubernetes in Docker)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1099&quot; data-start=&quot;1009&quot;&gt;&lt;b&gt;클라우드에서 실행&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1099&quot; data-start=&quot;1031&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1064&quot; data-start=&quot;1031&quot;&gt;Google Kubernetes Engine(GKE)&lt;/li&gt;
&lt;li data-end=&quot;1082&quot; data-start=&quot;1068&quot;&gt;Amazon EKS&lt;/li&gt;
&lt;li data-end=&quot;1099&quot; data-start=&quot;1086&quot;&gt;Azure AKS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;1114&quot; data-start=&quot;1101&quot; data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;설치 방법&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1287&quot; data-start=&quot;1115&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1196&quot; data-start=&quot;1115&quot;&gt;&lt;a href=&quot;https://www.kubeflow.org/docs/started/installing-kubeflow/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-end=&quot;1194&quot; data-start=&quot;1117&quot;&gt;Kubeflow 설치 가이드&lt;/a&gt;&lt;/li&gt;
&lt;li data-end=&quot;1287&quot; data-start=&quot;1197&quot;&gt;&lt;a href=&quot;https://kirenz.github.io/codelabs/codelabs/kubeflow-install/#0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-end=&quot;1285&quot; data-start=&quot;1199&quot;&gt;MiniKF (로컬 실행용 경량 버전)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1306&quot; data-start=&quot;1289&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;추천 학습 자료&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1441&quot; data-start=&quot;1307&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1374&quot; data-start=&quot;1307&quot;&gt;쿠버네티스 기본 개념: &lt;a href=&quot;https://www.kubeflow.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-end=&quot;1372&quot; data-start=&quot;1322&quot;&gt;쿠버네티스 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li data-end=&quot;1404&quot; data-start=&quot;1375&quot;&gt;Docker &amp;amp; Kubernetes 기초 강의&lt;/li&gt;
&lt;li data-end=&quot;1441&quot; data-start=&quot;1405&quot;&gt;클라우드 플랫폼 무료 체험 (GCP, AWS, Azure)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1446&quot; data-start=&quot;1443&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1482&quot; data-start=&quot;1448&quot; data-ke-size=&quot;size26&quot;&gt;  3단계: Kubeflow Pipelines 실습&lt;/h2&gt;
&lt;p data-end=&quot;1535&quot; data-start=&quot;1484&quot; data-ke-size=&quot;size16&quot;&gt;쿠베플로우의 핵심 기능인 **Kubeflow Pipelines(KFP)**를 실습합니다.&lt;/p&gt;
&lt;p data-end=&quot;1550&quot; data-start=&quot;1537&quot; data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;기본 실습&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1716&quot; data-start=&quot;1551&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1577&quot; data-start=&quot;1551&quot;&gt;Kubeflow Dashboard 접속&lt;/li&gt;
&lt;li data-end=&quot;1614&quot; data-start=&quot;1578&quot;&gt;Jupyter Notebook에서 간단한 ML 모델 작성&lt;/li&gt;
&lt;li data-end=&quot;1695&quot; data-start=&quot;1615&quot;&gt;&lt;b&gt;Kubeflow Pipeline 생성&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1695&quot; data-start=&quot;1648&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1658&quot; data-start=&quot;1648&quot;&gt;데이터 로딩&lt;/li&gt;
&lt;li data-end=&quot;1669&quot; data-start=&quot;1662&quot;&gt;전처리&lt;/li&gt;
&lt;li data-end=&quot;1682&quot; data-start=&quot;1673&quot;&gt;모델 학습&lt;/li&gt;
&lt;li data-end=&quot;1695&quot; data-start=&quot;1686&quot;&gt;모델 서빙&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1716&quot; data-start=&quot;1696&quot;&gt;실행된 Pipeline 확인&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;1735&quot; data-start=&quot;1718&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;추천 학습 자료&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1912&quot; data-start=&quot;1736&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1819&quot; data-start=&quot;1736&quot;&gt;&lt;a data-end=&quot;1817&quot; data-start=&quot;1738&quot;&gt;Kubeflow Pipelines 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li data-end=&quot;1912&quot; data-start=&quot;1820&quot;&gt;&lt;a data-end=&quot;1910&quot; data-start=&quot;1822&quot;&gt;Kubeflow Pipelines 튜토리얼&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1917&quot; data-start=&quot;1914&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;1950&quot; data-start=&quot;1919&quot; data-ke-size=&quot;size26&quot;&gt;  4단계: MLOps &amp;amp; 하이퍼파라미터 튜닝&lt;/h2&gt;
&lt;p data-end=&quot;1982&quot; data-start=&quot;1952&quot; data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;하이퍼파라미터 최적화 (Katib 활용)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2018&quot; data-start=&quot;1983&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2018&quot; data-start=&quot;1983&quot;&gt;Katib을 사용하여 자동으로 최적의 하이퍼파라미터 찾기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2052&quot; data-start=&quot;2020&quot; data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;모델 서빙(KFServing) 이해 및 실습&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2092&quot; data-start=&quot;2053&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2072&quot; data-start=&quot;2053&quot;&gt;학습된 모델을 API로 배포&lt;/li&gt;
&lt;li data-end=&quot;2092&quot; data-start=&quot;2073&quot;&gt;실시간 추론 가능하도록 서빙&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2111&quot; data-start=&quot;2094&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;추천 학습 자료&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2248&quot; data-start=&quot;2112&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2178&quot; data-start=&quot;2112&quot;&gt;&lt;a data-end=&quot;2176&quot; data-start=&quot;2114&quot;&gt;Katib 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li data-end=&quot;2248&quot; data-start=&quot;2179&quot;&gt;&lt;a data-end=&quot;2246&quot; data-start=&quot;2181&quot;&gt;KFServing 실습&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2253&quot; data-start=&quot;2250&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2278&quot; data-start=&quot;2255&quot; data-ke-size=&quot;size26&quot;&gt;  5단계: 실제 프로젝트 적용&lt;/h2&gt;
&lt;p data-end=&quot;2313&quot; data-start=&quot;2280&quot; data-ke-size=&quot;size16&quot;&gt;이제 직접 프로젝트를 만들어 쿠베플로우를 활용해 봅니다.&lt;/p&gt;
&lt;p data-end=&quot;2330&quot; data-start=&quot;2315&quot; data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;추천 프로젝트&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2403&quot; data-start=&quot;2331&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2354&quot; data-start=&quot;2331&quot;&gt;MNIST 손글씨 분류 모델 자동화&lt;/li&gt;
&lt;li data-end=&quot;2381&quot; data-start=&quot;2355&quot;&gt;자연어 처리(NLP) 모델 학습 및 서빙&lt;/li&gt;
&lt;li data-end=&quot;2403&quot; data-start=&quot;2382&quot;&gt;이미지 분류 모델 구축 및 배포&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2423&quot; data-start=&quot;2405&quot; data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;프로젝트 진행 순서&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2546&quot; data-start=&quot;2424&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2440&quot; data-start=&quot;2424&quot;&gt;데이터 수집 및 정리&lt;/li&gt;
&lt;li data-end=&quot;2456&quot; data-start=&quot;2441&quot;&gt;머신러닝 모델 설계&lt;/li&gt;
&lt;li data-end=&quot;2485&quot; data-start=&quot;2457&quot;&gt;Kubeflow Pipelines로 자동화&lt;/li&gt;
&lt;li data-end=&quot;2508&quot; data-start=&quot;2486&quot;&gt;하이퍼파라미터 튜닝(Katib)&lt;/li&gt;
&lt;li data-end=&quot;2530&quot; data-start=&quot;2509&quot;&gt;모델 서빙(KFServing)&lt;/li&gt;
&lt;li data-end=&quot;2546&quot; data-start=&quot;2531&quot;&gt;성능 평가 및 배포&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-end=&quot;2551&quot; data-start=&quot;2548&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h1 data-end=&quot;2562&quot; data-start=&quot;2553&quot;&gt;  결론&lt;/h1&gt;
&lt;p data-end=&quot;2648&quot; data-start=&quot;2564&quot; data-ke-size=&quot;size16&quot;&gt;쿠베플로우를 배우려면 &lt;b&gt;기본 개념 &amp;rarr; 환경 구축 &amp;rarr; Pipelines 실습 &amp;rarr; MLOps 적용 &amp;rarr; 프로젝트 실습&lt;/b&gt; 순서로 접근하면 효과적입니다.&lt;/p&gt;
&lt;p data-end=&quot;2667&quot; data-start=&quot;2650&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;추천 학습 경로&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;2783&quot; data-start=&quot;2668&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;2693&quot; data-start=&quot;2668&quot;&gt;쿠버네티스와 Docker 기초 익히기&lt;/li&gt;
&lt;li data-end=&quot;2715&quot; data-start=&quot;2694&quot;&gt;쿠베플로우 설치 및 환경 설정&lt;/li&gt;
&lt;li data-end=&quot;2742&quot; data-start=&quot;2716&quot;&gt;Kubeflow Pipelines 실습&lt;/li&gt;
&lt;li data-end=&quot;2767&quot; data-start=&quot;2743&quot;&gt;Katib과 KFServing 활용&lt;/li&gt;
&lt;li data-end=&quot;2783&quot; data-start=&quot;2768&quot;&gt;실제 프로젝트 진행&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;2802&quot; data-start=&quot;2785&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;추천 실습 환경&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2859&quot; data-start=&quot;2803&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2830&quot; data-start=&quot;2803&quot;&gt;로컬 환경(Minikube, Docker)&lt;/li&gt;
&lt;li data-end=&quot;2859&quot; data-start=&quot;2831&quot;&gt;클라우드 환경(GCP, AWS, Azure)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2909&quot; data-start=&quot;2861&quot; data-ke-size=&quot;size16&quot;&gt;이제 쿠베플로우를 활용한 &lt;b&gt;자동화된 머신러닝 워크플로우&lt;/b&gt;를 구축해 보세요!  &lt;/p&gt;</description>
      <category>쿠베플로우 kubeflow</category>
      <author>하루하나_</author>
      <guid isPermaLink="true">https://cpdev.tistory.com/240</guid>
      <comments>https://cpdev.tistory.com/240#entry240comment</comments>
      <pubDate>Wed, 19 Feb 2025 14:34:16 +0900</pubDate>
    </item>
    <item>
      <title>Expo EAS</title>
      <link>https://cpdev.tistory.com/239</link>
      <description>&lt;p&gt;&lt;a href=&quot;https://docs.expo.dev/eas/&quot;&gt;https://docs.expo.dev/eas/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; [Expo Application Services&lt;/p&gt;
&lt;p&gt;Learn about Expo Application Services (EAS) for Expo and React Native apps.&lt;/p&gt;
&lt;p&gt;docs.expo.dev](&lt;a href=&quot;https://docs.expo.dev/eas/&quot;&gt;https://docs.expo.dev/eas/&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;--&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expo EAS(Expo Application Services)란?&lt;/strong&gt; &lt;strong&gt;Expo EAS(Expo Application Services)&lt;/strong&gt;는 Expo에서 제공하는 클라우드 기반의 빌드 및 배포 서비스로, 네이티브 코드 변경 없이도 iOS 및 Android 앱을 쉽고 빠르게 배포할 수 있도록 도와준다. 기존의 &lt;strong&gt;Expo Managed Workflow&lt;/strong&gt; 를 보완하며, &lt;strong&gt;Bare Workflow&lt;/strong&gt; 에서도 활용할 수 있다.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;주요 기능&lt;/strong&gt;  &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;EAS Build&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;로컬 환경 설정 없이 클라우드에서 iOS 및 Android 앱을 빌드&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apple Developer 계정 없이도 iOS 테스트 앱 생성 가능 (Development Build)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;네이티브 코드 수정이 필요한 프로젝트도 지원&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;EAS Submit&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;빌드한 앱을 App Store 및 Google Play Store에 자동으로 업로드&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Expo CLI에서 간단한 명령어로 제출 가능&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;EAS Update&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;앱스토어 재배포 없이 코드 변경 가능 (Over-the-Air 업데이트)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;특정 사용자 그룹에만 업데이트 배포 가능 (Channel 및 Rollout 기능)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;기존 &lt;code&gt;expo publish&lt;/code&gt;의 확장된 기능&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;EAS Insights&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;배포 후 크래시 리포트 및 성능 모니터링 기능 제공 (Sentry 등과 연동 가능)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;EAS 사용 방법&lt;/strong&gt;  &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;EAS CLI 설치&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;npm install -g eas-cli&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;EAS 초기 설정&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;eas init&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;eas.json&lt;/code&gt; 설정 파일이 생성됨&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;빌드 환경 구성 (&lt;code&gt;development&lt;/code&gt;, &lt;code&gt;preview&lt;/code&gt;, &lt;code&gt;production&lt;/code&gt; 등)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;앱 빌드&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;eas build -p android --profile production&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;eas build -p ios --profile production&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;-p&lt;/code&gt; 옵션: 플랫폼 선택 (&lt;code&gt;android&lt;/code&gt; 또는 &lt;code&gt;ios&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;--profile&lt;/code&gt; 옵션: &lt;code&gt;eas.json&lt;/code&gt;에서 정의한 프로필 사용&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;스토어에 앱 제출&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;eas submit -p android&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;eas submit -p ios&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;&lt;strong&gt;OTA 업데이트 배포&lt;/strong&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;eas update --branch production&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--branch&lt;/code&gt; 옵션: 특정 브랜치로 업데이트 배포&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;</description>
      <category>React Native/Expo</category>
      <author>하루하나_</author>
      <guid isPermaLink="true">https://cpdev.tistory.com/239</guid>
      <comments>https://cpdev.tistory.com/239#entry239comment</comments>
      <pubDate>Sun, 16 Feb 2025 12:27:50 +0900</pubDate>
    </item>
    <item>
      <title>LINODE MYSQL DB 시간 설정</title>
      <link>https://cpdev.tistory.com/238</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;LINODE에 devian서버에 MYSQL을 설치하였는데 시간이 맞질않음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인해보니 time zone이 etc/UTC로 설정되어있더라&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;서버에서 time존 확인방법&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;&amp;gt;&amp;gt; timedatectl&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sudo timedatectl set-timezone Asia/Seoul&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;&amp;nbsp;&lt;/p&gt;</description>
      <author>하루하나_</author>
      <guid isPermaLink="true">https://cpdev.tistory.com/238</guid>
      <comments>https://cpdev.tistory.com/238#entry238comment</comments>
      <pubDate>Wed, 11 Dec 2024 22:40:32 +0900</pubDate>
    </item>
    <item>
      <title>[webstorm] prettier &amp;amp; lint 설정 방법</title>
      <link>https://cpdev.tistory.com/237</link>
      <description>&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;프로젝트 설정&lt;/strong&gt; &lt;h4&gt;패키지 설치&lt;/h4&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install --save-dev prettier eslint eslint-config-next eslint-plugin-prettier eslint-config-prettier&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;prettier&lt;/code&gt;: 코드 포맷터&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;eslint&lt;/code&gt;: 코드 린터&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;eslint-config-next&lt;/code&gt;: Next.js에 적합한 ESLint 설정&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;eslint-plugin-prettier&lt;/code&gt;: ESLint에서 Prettier 포맷팅 체크&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;eslint-config-prettier&lt;/code&gt;: ESLint와 Prettier 간 충돌 방지&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;Prettier 설정&lt;/strong&gt; 프로젝트 루트에 &lt;code&gt;.prettierrc&lt;/code&gt; 파일 생성 후 아래 내용 추가:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &amp;quot;semi&amp;quot;: true,
  &amp;quot;singleQuote&amp;quot;: true,
  &amp;quot;trailingComma&amp;quot;: &amp;quot;all&amp;quot;,
  &amp;quot;printWidth&amp;quot;: 80,
  &amp;quot;tabWidth&amp;quot;: 2
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;또는 &lt;code&gt;.prettier.config.js&lt;/code&gt;로 작성:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;module.exports = {
  semi: true,
  singleQuote: true,
  trailingComma: &amp;#39;all&amp;#39;,
  printWidth: 80,
  tabWidth: 2,
};&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;ESLint 설정&lt;/strong&gt; &lt;code&gt;eslint&lt;/code&gt; 초기화:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx eslint --init&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 명령어로 초기화 후 &lt;code&gt;.eslintrc&lt;/code&gt; 또는 &lt;code&gt;.eslintrc.json&lt;/code&gt; 파일을 수정합니다.&lt;code&gt;.eslintrc&lt;/code&gt; 예시:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &amp;quot;extends&amp;quot;: [
    &amp;quot;eslint:recommended&amp;quot;,
    &amp;quot;plugin:react/recommended&amp;quot;,
    &amp;quot;plugin:@typescript-eslint/recommended&amp;quot;,
    &amp;quot;next/core-web-vitals&amp;quot;,
    &amp;quot;plugin:prettier/recommended&amp;quot;
  ],
  &amp;quot;plugins&amp;quot;: [&amp;quot;@typescript-eslint&amp;quot;],
  &amp;quot;parser&amp;quot;: &amp;quot;@typescript-eslint/parser&amp;quot;,
  &amp;quot;rules&amp;quot;: {
    &amp;quot;prettier/prettier&amp;quot;: [&amp;quot;error&amp;quot;],
    &amp;quot;react/react-in-jsx-scope&amp;quot;: &amp;quot;off&amp;quot;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;Prettier와 ESLint 통합&lt;/strong&gt; &lt;code&gt;package.json&lt;/code&gt;에 아래 스크립트 추가:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;&amp;quot;scripts&amp;quot;: {
  &amp;quot;lint&amp;quot;: &amp;quot;eslint . --ext .js,.jsx,.ts,.tsx&amp;quot;,
  &amp;quot;format&amp;quot;: &amp;quot;prettier --write .&amp;quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WebStorm 설정&lt;/strong&gt; &lt;/p&gt;
&lt;h4&gt;Prettier&lt;/h4&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Preferences &amp;gt; Languages &amp;amp; Frameworks &amp;gt; Code Style &amp;gt; Prettier&lt;/strong&gt;  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Prettier package&lt;/code&gt; 경로 설정: &lt;code&gt;node_modules/prettier&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Run for files&lt;/code&gt; 확장자 추가: &lt;code&gt;.js,.jsx,.ts,.tsx&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Editor &amp;gt; File Watchers&lt;/strong&gt;  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Prettier&lt;/code&gt; File Watcher 추가.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;ESLint&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Preferences &amp;gt; Languages &amp;amp; Frameworks &amp;gt; Code Quality Tools &amp;gt; ESLint&lt;/strong&gt;  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Automatic ESLint configuration&lt;/code&gt; 선택.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Run eslint --fix on save&lt;/code&gt; 활성화.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;ol start=&quot;6&quot;&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;저장 시 자동 적용&lt;/strong&gt;&lt;br&gt;WebStorm에서 저장 시 자동으로 ESLint와 Prettier를 실행하려면:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Preferences &amp;gt; Tools &amp;gt; Actions on Save&lt;/strong&gt; : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Run ESLint --fix&lt;/code&gt; 활성화.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;Reformat with Prettier&lt;/code&gt; 활성화.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;ol start=&quot;7&quot;&gt;
&lt;li&gt;&lt;strong&gt;필수 파일 추가&lt;/strong&gt;  &lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.eslintignore&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-txt&quot;&gt;node_modules/
.next/
out/&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.prettierignore&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-txt&quot;&gt;node_modules/
.next/
out/&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;ol start=&quot;8&quot;&gt;
&lt;li&gt;&lt;strong&gt;VS Code와의 호환&lt;/strong&gt; WebStorm에서 설정한 Prettier와 ESLint는 VS Code에서도 그대로 사용 가능하며, &lt;code&gt;Prettier&lt;/code&gt;와 &lt;code&gt;ESLint&lt;/code&gt; 확장 프로그램만 설치하면 됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;추가 참고&lt;/h3&gt;
&lt;p&gt;이제 저장할 때 Prettier가 코드 포맷팅을, ESLint가 코드 스타일과 규칙을 자동으로 검사합니다. 필요에 따라 설정을 조금씩 조정해 프로젝트에 맞게 최적화하세요.&lt;/p&gt;</description>
      <category>Programming/Tool</category>
      <category>ESlint</category>
      <category>Prettier</category>
      <category>webstorm</category>
      <author>하루하나_</author>
      <guid isPermaLink="true">https://cpdev.tistory.com/237</guid>
      <comments>https://cpdev.tistory.com/237#entry237comment</comments>
      <pubDate>Sun, 8 Dec 2024 00:58:20 +0900</pubDate>
    </item>
    <item>
      <title>asrock x300 데스크미니 / WUHD 모니터 테스트 hdmi, dp</title>
      <link>https://cpdev.tistory.com/236</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;cpu는 5600g&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;모니터는 LG 울트라 와이드 &lt;a style=&quot;background-color: #ffffff; color: #0f0f0f; text-align: left;&quot; href=&quot;https://prod.danawa.com/info/?pcode=16246481&amp;amp;keyword=40wp95c&amp;amp;cate=112757&quot;&gt;&lt;b&gt;40WP95C&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;760&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bX1PkU/btsK7CTV50U/LS3QKQcBGM5gR6kKqFrrU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bX1PkU/btsK7CTV50U/LS3QKQcBGM5gR6kKqFrrU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bX1PkU/btsK7CTV50U/LS3QKQcBGM5gR6kKqFrrU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX1PkU%2FbtsK7CTV50U%2FLS3QKQcBGM5gR6kKqFrrU0%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;760&quot; height=&quot;632&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전에 5600g는 WUHD를 지원안할거 같아서 외장그래픽을 달았었는데.. 게임은 하지않고 사무용으로만 쓰는지라..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에x x300 데스크미니로 테스해보았다.&amp;nbsp;&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;DP에 경우 5120x2160 으로 72Hz까지 잘나온다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HDMI에 경우 5120x2160으로 하게되면 30Hz까지밖에 안나온다..&amp;nbsp;&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;데스크미니에 WUHD 모니터를 고려중이신분은 참고하시길..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 윈도우가 필요없다면.. 맥미니 m4가 더 좋은선택이 아닐까..ㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Life/리뷰</category>
      <author>하루하나_</author>
      <guid isPermaLink="true">https://cpdev.tistory.com/236</guid>
      <comments>https://cpdev.tistory.com/236#entry236comment</comments>
      <pubDate>Thu, 5 Dec 2024 10:10:28 +0900</pubDate>
    </item>
    <item>
      <title>비스타 워커힐 아이(둘)랑 호캉스 / 내돈내산 후기</title>
      <link>https://cpdev.tistory.com/235</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;아이랑 비스타 워커힐 호캉스를 다녀왔습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;저희는 10살5살 두딸 ㅎ아빠 엄마 4인가족이고, 이번에 프리즘에서 프로모션이 괜찮은거 같아서 급다녀왔어요~&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;조식포함 한강뷰 트윈룸 평일 35만원쯤에 다녀온거 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;내돈내산으로 후기를 남겨보자면,,,&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;장점&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 가깝습니다. (경기도에서 가까워요.. 30분이면 호텔도착)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 수영장 무제한 이용가능 (수영자주가고 싶어하는 아이들에게 좋습니다)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 물온도도 적당함&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 침대가 넓직함&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 나름 한강뷰를 만끽할수 있음&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 미니바 무료~&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 포레스트 파크에서 다람쥐 좋아함.ㅎ&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 스키야드에서 족욕하면서 한강보기 좋음&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;단점&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 한강뷰가 5만원더 비쌌는데... 다음에는 가을정도면 마운티뷰도 좋을거같아요 (굳이..)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 7층배정 받았는데 한강뷰라기엔.. 서서 보면 한강뷰.. 침대에 앉으면 시티뷰&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 그리고 스키야드에서 보이기떄문에 ㅎ커튼 치고 있어야해요&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 화장실 욕실 분리안되고,, 유리로 되어있는거..&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 커플(?)은 좋을거같은데.ㅎㅎ 이건뭐 볼일도 맘편히 못보고.. 샤워부스는 고정안되고 계속 열리고.ㅎ&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 욕실에 욕조가 있는건 좋은데.. 중간에 문이 없어요.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;10살5살아이들은 조식이라곤.. ㅎ빵몇개먹고 끝&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;음식은 다양한편이라 맛있게먹었어요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;체크인전에 포레스트파크에서 놀았던게 좋았는데.. 나중에 알았는데 입구에서 셔틀이나 픽업요청하면 제네시스 전기차로 태워주더라구요&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;체크인전에 가서 포레스트파크가서 놀고 체크인후에는 수영장가서 놀고&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;체크아웃할때 또 포레스트파크가서 놀고싶다고했는데.. 체크아웃되면 이용불가라고 하네요. 참고하세요&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 호텔 아래 중국집이 있었는데 간짜장이 너무 맛있었어요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;끝!&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&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;4000&quot; data-origin-height=&quot;3000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xcPm4/btsKZvIjq7G/Kk41jPGWElKs9LVXeqIx9K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xcPm4/btsKZvIjq7G/Kk41jPGWElKs9LVXeqIx9K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xcPm4/btsKZvIjq7G/Kk41jPGWElKs9LVXeqIx9K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxcPm4%2FbtsKZvIjq7G%2FKk41jPGWElKs9LVXeqIx9K%2Fimg.jpg&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;4000&quot; height=&quot;3000&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;3000&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;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEzpwA/btsK0GoD0ZH/yoWuD3VwbtkGl9PaFjMgrk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEzpwA/btsK0GoD0ZH/yoWuD3VwbtkGl9PaFjMgrk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEzpwA/btsK0GoD0ZH/yoWuD3VwbtkGl9PaFjMgrk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEzpwA%2FbtsK0GoD0ZH%2FyoWuD3VwbtkGl9PaFjMgrk%2Fimg.jpg&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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&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;3000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rG0h0/btsK1gv7CqM/0kDJkIOMySxQuxhJNukh71/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rG0h0/btsK1gv7CqM/0kDJkIOMySxQuxhJNukh71/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rG0h0/btsK1gv7CqM/0kDJkIOMySxQuxhJNukh71/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrG0h0%2FbtsK1gv7CqM%2F0kDJkIOMySxQuxhJNukh71%2Fimg.jpg&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;3000&quot; height=&quot;4000&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Life</category>
      <author>하루하나_</author>
      <guid isPermaLink="true">https://cpdev.tistory.com/235</guid>
      <comments>https://cpdev.tistory.com/235#entry235comment</comments>
      <pubDate>Thu, 28 Nov 2024 22:26:21 +0900</pubDate>
    </item>
  </channel>
</rss>