Kevin
@kevin
Students
6,576
Reviews
271
Course Rating
4.8
์ฃผ๋ ฅ ์ธ์ด ๋๋ ๊ธฐ์ : Java, Spring Framework, RxJava, Reactor, Spring WebFlux
(์ฃผ) ํํ์ํ๋ฆฌํฐ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก ํ๋(From 2015.07 To 2022.01)
(์ฃผ)์ฝ๋์คํ ์ด์ธ (https://www.codestates.com)์์ Senior Educational Software Engineer(Backend)๋ก ํ๋
(From 2022.03 To 2024.01.31)
- ํ๋ฆฌ๋์ ๊ฐ๋ฐ์ ๋ฐ ๊ฐ์ฌ๋ก ํ๋(Since 2024.02)
- ์ ์
์๋ ํ์ธ์? Kevin์ด๋ผ๊ณ ํฉ๋๋ค. ^^
์ธํ๋ฐ์์ ์ด๋ ๊ฒ ๊ฐ์ฌ๋ก์ ์ฌ๋ฌ๋ถ๋ค์ ๋ง๋๊ฒ ๋์ด์ ๋๋ฌด ๋ฐ๊ฐ์ต๋๋ค.
์ด๋ค ๋ถ์ผ๋ ๋ง์ฐฌ๊ฐ์ง๊ฒ ์ง๋ง ํนํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ ๋์์์ด ๋ณํํ๋ ํธ๋ ๋์ ๋ค์ฒ์ง์ง ์๋๋ก ํญ์ ์๊ธฐ ์์ ์ ๊ฐ๊ณ ๋ฆ๋๊ฒ์ด ๊ฐ๋ฐ์๋ก์จ ์ด์๋จ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉฐ ํญ์ ๋ฐฐ์ฐ๋ ์์ธ๋ก ์ฆ๊ฒ๊ฒ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ํ๊ณ ์๋ ๊ฐ๋ฐ์ ์ค ํ ๋ช ์ ๋๋ค.
์ ๊ฐ ๊ฐ์ง๊ณ ์๋ ์ง์๊ณผ ๊ฒฝํ์ด ๋ค๋ฅธ ๋ถ๋ค์๊ฒ ์กฐ๊ธ์ด๋๋ง ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉด์ ์ธํ๋ฐ์์ ๊ฐ์ข๋ฅผ ์์ํ์์ต๋๋ค.
์์ผ๋ก ์๊ฐ์๋ถ๋ค์๊ฒ ํ์ค์ ์ผ๋ก ๋์์ด ๋๋ ๋ค์ํ ๊ฐ์ข๋ก ๊พธ์คํ ์ฐพ์๋ต๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์ง๋ฌธ์ด๋ ์๊ฒฌ์ ์ธ์ ๋ ์ง ํ์ํ๋, ์ด๋ฉ์ผ(it.village.host@gmail.com)๋ก ํธํ๊ฒ ์๊ธฐํด์ฃผ์ธ์.
Courses
Reviews
insamdrink3364
ยท
[Part 1: Basics] OpenClaw.AI Master Class: Creating Your Own Autonomous AI Agent with Gemini and Docker[Part 1: Basics] OpenClaw.AI Master Class: Creating Your Own Autonomous AI Agent with Gemini and Dockerkevin
ยท
[Part 1: Basics] OpenClaw.AI Master Class: Creating Your Own Autonomous AI Agent with Gemini and Docker[Part 1: Basics] OpenClaw.AI Master Class: Creating Your Own Autonomous AI Agent with Gemini and Docker- Kevin's Easy-to-Understand Java Developer Roadmap Story
jason
ยท
[Java Practical Project for Beginners] Object-Oriented Thinking Training - 3 Mini-Project Practices[Java Practical Project for Beginners] Object-Oriented Thinking Training - 3 Mini-Project Practices- Kevin's Easy-to-Understand Java Developer Roadmap Story
Posts
Q&A
auth-profiles.json ๋ด google_api_key ํ๋์ฝ๋ฉ ์ ๊ฑฐ์ ์ค๋ฅ
๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด, ์ด ํ์์ auth-profiles.json์ ๋น์๋ ๋๋๋ฐ, ์ค์ ์ปจํ ์ด๋ ์์์๋ API ํค ํ๊ฒฝ๋ณ์๋ฅผ ๋ชป ๋ณด๊ณ ์๋ ์ํ์ผ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ฅ ํฝ๋๋ค.ํด๊ฒฐ์ ์ํด์ ์ ์ผ ๋จผ์ WSL2 Ubuntu โ Docker ์ปจํ ์ด๋ ์๊น์ง ํค๊ฐ ์ ๋๋ก ์ ๋ฌ๋๋์ง ์์๋๋ก ํ์ธํด ๋ณด์ ์ผ ํฉ๋๋ค.- ์ถ์ธก๋ง ํด๋ณด๋ฉด, ์ง์๋์ด echo๋ก ํ์ธํ์ จ๋ค๋๊ฒ ์๋ง๋ ์๋์ฐ์ฆ์์ Ubuntu(WSL2์ Ubuntu)๋ฅผ ์ด์ด์ API ํค๊ฐ ์ถ๋ ฅ๋๋๊ฑธ ํ์ธํ์ จ์ ๊ฐ๋ฅ์ฑ์ด ๋์๋ณด์ฌ์.- ์ข ํท๊ฐ๋ฆฌ๊ธด ํ์คํ ๋ฐ ์ค์ ๋ก echo๋ก ํ์ธํด์ผํ๋ ๊ณณ์ WSL2์์ ๋์๊ฐ๋ Ubuntu๊ฐ ์๋๋ผ ๋์ปค ์ปจํ ์ด๋ ๋ด๋ถ์์ ๋์๊ฐ๋ ๋ฆฌ๋ ์ค OS(๋ฐ๋น์)์ธ๋ฐ์. ์ด๊ฑด ์๋์์ ์ด๋ป๊ฒ ํ์ธํ๋์ง ๊ฐ์ด๋๋ฅผ ๋จ๊ฒจ ๋์๊ฒ์.๋จผ์ ์ ๋ฆฌํ๊ณ ์ถ์ ์ ์, ์ด ๊ฐ์์์๋ Windows ์์คํ ํ๊ฒฝ๋ณ์๋ ์ ํ ์ฐ์ง ์๊ณ (์ด๊ฑด ๋น์ฐํ ๊ทธ๋ ๊ฒ ํ์ จ์๊ฑฐ๋ผ ์๊ฐํด์),๋ฐ๋์ WSL2 Ubuntu ํฐ๋ฏธ๋์์๋ง API ํค๋ฅผ export ํด์ ์ฌ์ฉํฉ๋๋ค.# WSL2 Ubuntu ํฐ๋ฏธ๋ ์์์ vi๋ก ~/.bashrc ์ด์ด์ export GEMINI_API_KEY="your-real-key" echo $GEMINI_API_KEY # ์ฌ๊ธฐ๊น์ง๋ WSL ์ธ์ ์์์๋ง ์ ํจ์ฌ๊ธฐ์ echo๋ก ๊ฐ์ด ๋ณด์ด๋ฉด โWSL2 ์ ธ ์์๋ ์ ๋ค์ด๊ฐ๋คโ๋ ๋ป์ด์ง๋ง,OpenClaw๋ Docker ์ปจํ ์ด๋ ์์์ ๋์๊ฐ๊ธฐ ๋๋ฌธ์, ์ปจํ ์ด๋ ๋ด๋ถ ํ๊ฒฝ๋ณ์์ ์ด ๊ฐ์ด ๋ค์ด์๋์ง๋ฅผ ๋ฐ๋ก ํ์ธํด์ผ ํฉ๋๋ค.1) docker-compose.yml์์ ์ปจํ ์ด๋๋ก ํ๊ฒฝ๋ณ์๋ฅผ ๋๊ธฐ๋์ง ํ์ธdocker-compose.yml์ environment: ๋ธ๋ก์ API ํค๋ฅผ ๋๊ฒจ์ฃผ๋ ์ค์ ์ด ์๋์ง ๋จผ์ ํ์ธํด ์ฃผ์ธ์. ์๋ฅผ ๋ค์ด:services: openclaw-gateway: environment: - GEMINI_API_KEY=${GEMINI_API_KEY}์ด ํญ๋ชฉ์ด ์๋ค๋ฉด, WSL2์์ export๋ฅผ ํด๋ ์ปจํ ์ด๋ ์์ผ๋ก๋ ํค๊ฐ ์ ๋ฌ๋์ง ์์ต๋๋ค.์ด ์ํ์์ auth-profiles.json์ "key": ""๋ก ๋น์๋๋ฉด, ํ์ผ์์๋ ๋ชป ์ฐพ๊ณ env์์๋ ๋ชป ์ฐพ์์ โAPI ํค๊ฐ ์๋คโ๊ณ ์๋ฌ๋ฅผ ๋ด๋ ๊ฒ ์ ์ ๋์์ ๋๋ค.2) ์ปจํ ์ด๋ ๋ด๋ถ์์ ์ค์ ๋ก ํ๊ฒฝ๋ณ์๊ฐ ๋ณด์ด๋์ง ํ์ธWSL2์ Ubuntu๊ฐ ์๋ ๋์ปค ์ปจํ ์ด๋ ์์ ๋ฆฌ๋ ์ค(๋ฐ๋น์)์์ ์ง์ echo๋ก ํ์ธํด ๋ณด์๋ฉด ๊ฐ์ฅ ํ์คํฉ๋๋ค.# WSL2 Ubuntu์์, ์ปจํ ์ด๋ ์์ผ๋ก ๋ค์ด๊ฐ๊ธฐ docker compose exec openclaw-gateway /bin/bash # ์ปจํ ์ด๋ ๋ด๋ถ๋ก ๋ค์ด์ค๋ฉด `node@0ec632f45846:/app$` ์ด๋ฐ์์ผ๋ก ์ ๋ ฅ์ฐฝ์ด ๋ฐ๋ # ์ปจํ ์ด๋ ๋ด๋ถ ์ ธ์์ API ํค ํ์ธ. node@0ec632f45846:/app$ echo $GEMINI_API_KEY์ฌ๊ธฐ์ ์ค์ ํค ๋ฌธ์์ด์ด ์ถ๋ ฅ๋๋ฉด โ ์ปจํ ์ด๋ ๋ด๋ถ๊น์ง env๊ฐ ์ ์ ๋ฌ๋ ์ํ์ ๋๋ค.์๋ฌด ๊ฒ๋ ์ ๋์ค๋ฉด โ ์์ง ์ปจํ ์ด๋ ์์๋ ํค๊ฐ ์๋ ์ํ์ด๊ณ ,environment:๊ฐ ๋น ์ก๊ฑฐ๋,ํค๋ฅผ exportํ ๋ค ์ปจํ ์ด๋๋ฅผ ์ฌ์์ํ์ง ์์๊ฑฐ๋,export๋ฅผ ๋ค๋ฅธ ์ ธ(๋ค๋ฅธ WSL ์ธ์ )์์ ํ ๊ฒฝ์ฐ์ผ ์ ์์ต๋๋ค.๊ทธ๋ฆฌ๊ณ ์ ์์ ์ผ๋ก WSL2์์ export ํ๊ณ , docker-compose.yml ํ์ผ์์ environment:๋ก ํ๊ฒฝ๋ณ์๋ฅผ ๋๊ฒจ์ฃผ๋ ์ค์ ์ ํ๋๋ผ๋ ์ด๋ ค์๋ Ubuntu ํฐ๋ฏธ๋ ์ฐฝ์ ์์ ํ ๊ป๋ค๊ฐ ๋ค์ ์ด์ด์ ํ์ธํ๋๊ฒ ํผ์ ์ ์ค์ด๋ ๋ฐฉ๋ฒ์ ๋๋ค.ํ๊ฒฝ๋ณ์ ์ค์ ์ ๋ฐ๊พผ ๋ค์๋:docker compose down๊ทธ๋ฆฌ๊ณ , WSL2์ Ubuntu ํฐ๋ฏธ๋ ์ฐฝ์ ์์ ํ ๋ซ๊ณ ๋ค์ ์ด์ด์,docker compose up -d๋ก ๊ฒ์ดํธ์จ์ด๋ฅผ ๋ค์ ์ฌ๋ฆฌ๋๊ฒ ๊ฐ์ฅ ํ์คํฉ๋๋ค.3) auth-profiles.json๊ณผ์ ๊ด๊ณauth-profiles.json์์ "key": ""๋ก ๋น์๋๋ฉด,โํ๋กํ์ผ ํ์ผ์๋ ํค๋ฅผ ํ๋์ฝ๋ฉํ์ง ์๊ณ , ํ๊ฒฝ๋ณ์์์ ๊ฐ์ ธ์ค๊ฒ ๋คโ๋ ์๋ฏธ๊ฐ ๋ฉ๋๋ค.๊ทธ๋์:์ปจํ ์ด๋ ์ ํ๊ฒฝ๋ณ์์ GEMINI_API_KEY ๊ฐ ์ ๋๋ก ๋ค์ด์ ์์ผ๋ฉด โ key: "" ์ํ์์๋ ์ ์์ ์ผ๋ก ๋์ํฉ๋๋ค.๋ฐ๋๋ก ์ปจํ ์ด๋ ์์์ echo $GEMINI_API_KEY๊ฐ ๋น์ด ์๋ค๋ฉด โ OpenClaw ์ ์ฅ์์๋ โ์ ๋ง๋ก ํค๊ฐ ์๋คโ ์ํ๋ผ์, key์ ์ง์ ๊ฐ์ ๋ฃ์ ๋๋ง ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ๋ฉ๋๋ค.์ ๋ฆฌํ๋ฉด,WSL2 Ubuntu์์๋ง export ํ๋ ๊ฒ์ด ๋ง๊ณ , Windows ํ๊ฒฝ๋ณ์๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.docker-compose.yml์ environment:๋ก API ํค๋ฅผ ์ปจํ ์ด๋์ ๋๊ฒจ์ฃผ๋์ง ํ์ธํด ์ฃผ์ธ์. ๊ทธ ๋ค์ docker compose exec openclaw-gateway /bin/bash๋ก ์ปจํ ์ด๋ ์์ ๋ค์ด๊ฐ์ echo $GEMINI_API_KEY ๋ช ๋ น์ด ์ค์ ํค๋ฅผ ์ถ๋ ฅํ๋์ง ํ์ธํด ๋ณด์๋ฉด, ์ key: ""์์ ์ค๋ฅ๊ฐ ๋๋์ง ๋ฐ๋ก ์์ธ์ ์ฐพ์ ์ ์์ ๊ฑฐ์์.์ด๋ ๊ฒ ํ์ธํด ๋ณด์๊ณ , ์ปจํ ์ด๋ ์ echo ๊ฒฐ๊ณผ์ docker-compose.yml์ environment: ๋ถ๋ถ์ ์คํฌ๋ฆฐ์ท์ผ๋ก ๋ณด๋ด์ฃผ์๋ฉด, ํ์ํ ๊ฒฝ์ฐ ๊ทธ ์ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ๋ฒ ๋ ๊ฐ์ด ๋ด ๋๋ฆด๊ฒ์.
- 0
- 2
- 24
Q&A
docker - WSL 2 distro could not be found ์ค๋ฅ
์ง์๋, ์๋ ํ์ธ์? ์๋ AI ์ธํด์ด ๋ต์ ์ ํด๋์๋๋ฐ ๋ค์ ํ๋ฒ ๋ต๋ณ ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค.๊ฐ์ ์ฆ์์ ๊ฒช๋ ๊ฒฝ์ฐ๊ฐ ๊ฝค ์์ด์, ๊ฑฑ์ ํ์ค ๋งํ ์ค๋ฅ๋ ์๋์์.ํ๋ง๋๋ก ๋งํ๋ฉด, ์ฌ๋ถํ ์ดํ์ โDocker Desktop โ WSL2(Ubuntu)โ ์ฐ๊ฒฐ์ด ์ ๊น ๋๊ฒผ๋ค๊ฐ, Refetch๋ก ๋ค์ ๋ถ์ ์ํฉ์ ๋๋ค. WSL2 Ubuntu ์์์ docker compose up -d๋ฅผ ์คํํ ๋The command 'docker' could not be found in this WSL 2 distro.We recommend to activate the WSL integration in Docker Desktop settings.์ด ๋ฉ์์ง๊ฐ ๋จ๋ ์ด์ ๋, WSL ์ชฝ์์ docker ๋ช ๋ น์ ๋ชป ์ฐพ์ ๋ ๋์ค๋ ํ์ค ์๋ด์ ๋๋ค.์ฃผ๋ก ๋ค์ ์ํฉ์์ ๋ฐ์ํฉ๋๋ค.Docker Desktop์ ์ผ์ ธ ์๋๋ฐ, ํด๋น Ubuntu ๋ฐฐํฌํ์ ๋ํ WSL Integration์ด ๊บผ์ ธ ์๊ฑฐ๋,Windows/Docker Desktop/WSL ์ ๋ฐ์ดํธ ์ดํ์ โ์ด๋ WSL ๋ฐฐํฌํ๊ณผ ์ฐ๋ํ ์งโ ์ ๋ณด๊ฐ ์ ๊น ๊ผฌ์์ ๋.๋ง์ํ์ ๊ฒ์ฒ๋ผDocker Desktop โ Settings โ Resources โ WSL integration ์์ Refetch distros๋ฅผ ๋๋ฅด๋ฉด,Docker๊ฐ ๋ค์ ํ ๋ฒ โํ์ฌ ์ค์น๋ WSL ๋ฐฐํฌํ ๋ชฉ๋กโ์ ์ค์บํ๊ณ , ๊ทธ ๋ฐฐํฌํ(Ubuntu ๋ฑ)์ docker ํด๋ผ์ด์ธํธ๋ฅผ ๋ค์ ์ฐ๊ฒฐํด ์ค๋๋ค.๊ทธ๋์ ๋ฒํผ ํ ๋ฒ์ผ๋ก ํด๊ฒฐ๋ ๊ฑฐ๊ณ , ๋์ ์์ฒด๋ ์ ์์ด์์. ์์ผ๋ก ๊ฐ์ ์ฆ์์ด ๋ค์ ๋์ฌ ์ ์์ด์(์ ๋ OpenClaw์ด์ธ์ ์๋์ฐ์ฆ๋ ๋์ปค ๋ฐ์คํฌํ์ ์ ๋ฐ์ดํธ๋ฅผ ์์ฃผ ํ๋ํธ์ด ์๋๋ผ ์์ง ๋ฐ์ํ์ง ์์์์๋ ์์ต๋๋ค), ๊ทธ๋ด ๋๋ ์๋ ์์๋๋ก ํ์ธํด ๋ณด์๋ฉด ๋ฉ๋๋ค.Docker Desktop์ด ๋จผ์ ์คํ ์ค์ธ์ง ํ์ธํฉ๋๋ค. (์์คํ ํธ๋ ์ด ๊ณ ๋ ์์ด์ฝ์ด Running ์ํ์ธ์ง)WSL2 Ubuntu ํฐ๋ฏธ๋์์ docker --version์ ์ณค์ ๋, ๊ฐ์ ์๋ฌ๊ฐ ๋์ค๋ฉด WSL Integration ๋ฌธ์ ๋ก ๋ด๋ ๋ฉ๋๋ค.Docker Desktop โ Settings โ Resources โ WSL integration์์โUse WSL 2 based engineโ์ด ์ผ์ ธ ์๋์ง,์ฌ์ฉ ์ค์ธ Ubuntu ๋ฐฐํฌํ ์ ํ ๊ธ์ด ์ผ์ ธ ์๋์ง ํ์ธํ๊ณ , ์ด์ํ๋ฉด Refetch distros ํ ๋ค์ ์ฒดํฌํฉ๋๋ค.ํ์ํ๋ฉด PowerShell์์ wsl --shutdown์ผ๋ก WSL์ ํ ๋ฒ ์์ ํ ๋๊ณ , Docker Desktop์ ์ฌ์์ํ ๋ค Ubuntu ํฐ๋ฏธ๋์ ๋ค์ ์ด์ด ๋ด ๋๋ค.์ ๋ฆฌํ๋ฉด, ์ด๋ฒ ์ค๋ฅ๋ ํ๊ฒฝ์ค์ ์ด ๋ง๊ฐ์ง ๊ฒ ์๋๋ผ, ์ฌ๋ถํ /์ ๋ฐ์ดํธ ์ดํ์ WSL ์ฐ๋์ด ์ ๊น ๋๊ธด ๊ฒ์ ๊ฐ๊น๊ณ ,์ง๊ธ์ฒ๋ผ WSL Integration ํญ์์ ๋ค์ ์ฐ๊ฒฐํด ์ฃผ๋ฉด ์ ์์ ๋๋ค. ๊ฐ์ ํ์์ด ๋ฐ๋ณต๋๋ฉด ์ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ํ ๋ฒ์ฉ ๋ฐ๋ผ๊ฐ ๋ณด์๋ฉด ๋ฉ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 37
Q&A
๋์ปค ์ค๋ฅ๋ฐ์
์๋ ํ์ธ์ ์ ํธ๋.์ง๋ฌธ์ฃผ์ ๋ด์ฉ์ ๋ํ ๋ต๋ณ์ ๋๋ ค๋ณด๊ฒ ์ต๋๋ค. openclaw-gateway ์ค์ ์ ์ง๊ธ ๊ฐ์์์ ์๋ด๋๋ฆฐ ๊ตฌ์กฐ(demo/config, demo/workspace)๋ ์ ๋ง๊ฒ ์์ฑํด ์ฃผ์ จ์ด์.๋ง์ํ์ โDocker Desktop Files ํญ์์ ์ ์์ด ๋๋ค ์ ๋๋ค ํ๋คโ๋ ์ฆ์์, Mac์ฉ Docker Desktop์ด ํธ์คํธ ํด๋๋ฅผ ๋ง์ดํธํ ๋ ์๊ธฐ๋ ์ด์์ผ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.ํ์ฌ .env๋ฅผ ๋ณด๋ฉด:OPENCLAW_CONFIG_DIR=./config OPENCLAW_WORKSPACE_DIR=./workspace์ด๋ ๊ฒ ์๋ ๊ฒฝ๋ก๋ก ๋์ด ์์ต๋๋ค.์ด ์์ฒด๋ โ๋ฐ๋์ demo ํด๋ ์์์ docker compose up์ ์คํํ๋คโ๋ ์ ์ ์์๋ ๊ด์ฐฎ์๋ฐ,Mac์์๋ ๋ค์ ๋ ๊ฐ์ง ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ด์.docker compose up์ ์คํํ ์์น๊ฐ demo ํด๋๊ฐ ์๋ ๋์๋ฅผ ๋ค์ด ์์ ํด๋์์ docker compose up์ ์คํํ๋ฉด,Docker ๊ธฐ์ค ./config, ./workspace๋ ๋ค๋ฅธ ์ค์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋ฉ๋๋ค.์ด ๊ฒฝ์ฐ, ์ปจํ ์ด๋์ ๋ง์ดํธ๋ ๊ฒฝ๋ก๊ฐ ๊ณ์ ๋ฐ๋๋ฉด์ Files ํญ์์ ํด๋๊ฐ ๋ณด์๋ค ์ ๋ณด์๋ค ํ ์ ์์ต๋๋ค.demo ํด๋ ์์น๊ฐ Docker Desktop์ File sharing ํ์ฉ ๋ฒ์ ๋ฐ์ผ ๋Docker Desktop โ Settings โ Resources โ File sharing์์demo ํด๋๊ฐ ์์นํ ์์ ๊ฒฝ๋ก(์: /Users/๊ณ์ ๋ช /Projects ๋ฑ)๊ฐ ๊ณต์ ํ์ฉ์ผ๋ก ๋ฑ๋ก๋์ด ์์ง ์์ผ๋ฉด,./config, ./workspace ๋ฐ์ธ๋ ๋ง์ดํธ๊ฐ ์คํจํ ์ ์์ต๋๋ค.์ด ๋๋ Files ํญ์์๋ ๋ง์น ์ ์์ด ๋ถ์์ ํ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ต๋๋ค.๊ทธ๋์ ์๋ ์์๋ก ํ ๋ฒ ์ ๊ฒํด ๋ณด์๋ฉด ์ข๊ฒ ์ต๋๋ค:ํญ์ demo ํด๋ ์์์๋ง ์คํํ๊ธฐcd /Users/๋ด๊ณ์ ๋ช /path/to/demo docker compose down docker compose up -d openclaw-gateway์ด๋ ๊ฒ ํ๋ฉด .env์ ์๋ ./config, ./workspace๊ฐ ํญ์ demo/config, demo/workspace๋ฅผ ์ ํํ ๊ฐ๋ฆฌํค๊ฒ ๋ฉ๋๋ค.Docker Desktop File sharing ์ค์ ํ์ธ (Mac ์ ์ฉ)Docker Desktop โ Settings โ Resources โ File sharing์์demo ํด๋๊ฐ ๋ค์ด ์๋ ์์ ๊ฒฝ๋ก(์: /Users/๋ด๊ณ์ ๋ช /Dev, /Users/๋ด๊ณ์ ๋ช /Documents ๋ฑ)๊ฐ ๋ชฉ๋ก์ ํฌํจ๋ผ ์๋์ง ํ์ธํด ์ฃผ์ธ์.์๋ค๋ฉด ์ถ๊ฐ ํ Apply & Restart๋ฅผ ๋๋ฌ Docker๋ฅผ ์ฌ์์ํฉ๋๋ค.Files ํญ์์ ๋ณด๋ ๊ฒฝ๋ก ํ์ธ์ปจํ ์ด๋ ๋ด๋ถ ๊ธฐ์ค์ผ๋ก:/home/node/.openclaw โ demo/config์ ์ฐ๊ฒฐ (์ค์ , ๋ด๋ถ workspace ๋ฑ)/home/node/workspace โ demo/workspace์ ์ฐ๊ฒฐ (์ค์ ๊ฐ์์์ ์ฐ๋ ์์ ํด๋)Files ํญ์์ ์ฃผ๋ก /home/node/workspace ์๋๋ฅผ ๋ณด์๊ณ ,demo/workspace์ ํ์ผ์ ํ๋ ๋ง๋ค์ด์ ์์ชฝ์์ ๊ฐ์ด ๋ณด์ด๋์ง ํ์ธํด ์ฃผ์ธ์.์ด๋ ๊ฒ ํ์ ๋๋ Files ํญ ์ ์์ด ๊ณ์ ๋ค์ญ๋ ์ญํ๋ค๋ฉด,Mac Docker Desktop ๋ฒ์ ๋ฌธ์ ๋, iCloud/๋ณด์ ์ํํธ์จ์ด ์ชฝ ๊ฐ์ญ ๊ฐ๋ฅ์ฑ๋ ์์ํ ๋ฐ,docker-compose logs -f ๋ช ๋ น์ผ๋ก ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋๋๊ฒ ์๋์ง ํ์ธํด๋ณด์๊ณ , ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ์๋ฉด ๋ค์ ํ๋ฒ ๋ถ์์ ํด๋ณด๊ฒ ์ต๋๋ค. ํด๊ฒฐ ๋์๊ธธ ๋ฐ๋๊ฒ์!๊ฐ์ฌํฉ๋๋ค!
- 0
- 3
- 133
Q&A
์์
Sol๋, ์๋ ํ์ธ์?๋ ธ์ ๋ฌธ์๋ฅผ PDF ๋ฌธ์๋ก ๋ณํํ๋ ๊ณผ์ ์์ ๊ธ์๊ฐ ์๋ฆฐ๊ฒ์ ํ์ธํ์ต๋๋ค.PDF ๋ฌธ์๋ฅผ ์ ๋ฐ์ดํธ ํด๋๊ฒ ์ต๋๋ค.์ฐ์ ๋ ธ์ ๋ฌธ์์ ๋งํฌ ์์ฒด์ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ํด๋๋ฆดํ ๋, ์๋ ๋งํฌ๋ก ์ ์ํ์ ์ ๋ฌธ์ ํ์ธํ์๋ฉด ๋๊ฒ ์ต๋๋ค. Stream API ๊ฐ์ ์๋ฃ ๋ฐ ์ฐ์ต๋ฌธ์ ๋งํฌ https://www.notion.so/section1-class03-Stream-API-e2177c8ca10e469bb80f145ad7a01a3a?source=copy_link๋ถํธ์ ๋๋ ค์ ์ฃ์กํฉ๋๋ค!
- 0
- 2
- 48
Q&A
์๋ฐ 2ํ 3ํ ์ปค๋ฆฌํ๋ผ ๋ฌธ์
์๋ ํ์ธ์? ์ถ์ ์ฐํด๋ ์ ๋ณด๋ด์ จ๋์? ๋ต๋ณ์ด ์ข ๋ฆ์ด์ ์ฃ์กํ๊ณ ์ข์ ์ง๋ฌธ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ^^์ง๋ฌธ ์ฃผ์ ๋ถ๋ถ๋ค์ ๋ํด์ ์ ์๊ฒฌ์ ์ ๊น ๋ง์ ๋๋ฆด๊ฒ์. "๊ฐ์ฌ๋์ ๊ฐ์ ์ฒ ํ๊ณผ ๊ฐ์ด ์๋ฐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ๋ค์ ๋ฐฐ์ฐ๊ณ ๋ค์ํ ์์ ๋ฅผ ๋จ๊ณ๋ณ๋ก ํ์ด๋ณด๋ฉฐ ๋น๋ก์ ์ ์ด๋ ๊ฒ ๋์๊ฐ๋์ง ๋ฉ์ปค๋์ฆ์ด ๊ถ๊ธํ ๋ ์์ ๋ฅํ ๊ฐ์๋ฅผ ์ฐพ์๋ณด๋๊ฒ ๋ซ๋ค๊ณ ์๊ฐ์ด ๋ญ๋๋ค"--> ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋ฐฐ์ธ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ๊ฐ์ง ๋ฐฉ์์ ํ์ต ๋ฐฉ๋ฒ์ด ์๋ค๋๊ฑด ์ ์๊ณ ๊ณ์ค๊ฑฐ์์. ํ๋๋ ํน์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌธ๋ฒ ๋ฐ ์ฌ์ฉ๋ฒ ์์ฃผ์ ๊ฐ์๋ ์ฑ ์ ๋ชจ๋ ์๊ฐ ๋๋ ์๋ ํ๊ณ ๋ ํ์ ๋ค์ ์คํ ์ ๋ฐ๋๊ฒ. ๋ ํ๋๋ ์ผ๋จ ์์ฃผ ์ต์ํ์ ์ฌ์ฉ๋ฒ๋ง ์ตํ ๋ค ๊ฐ๋จํ๊ฑฐ๋ผ๋ ๋ง๋ค์ด ๋ณด๋ฉด์ ๋งํ๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ๋ค์ ์ฑ ์ ์ฐพ์๋ณด๋ฉด์ ๋งํ๋ ๋ถ๋ถ์ ํด๊ฒฐํ๋ฉด์ ์์ผ๋ก ๋์ ๊ฐ๋ ๊ฒ.๋ ์ค์ ์ด๋ค๊ฒ ๋ ๋ซ๋ค ๊ทธ๋ ์ง ์๋ค๋ผ๊ณ ๋ง์ ๋๋ฆฌ๊ธด ์ด๋ ต๊ฒ ์ง๋ง(์ฌ๋๋ง๋ค ์์ ์๊ฒ ๋ง๋ ํ์ต ๋ฐฉ๋ฒ์ด ๋ค๋ฅผํ ๋๊น์) ์ ๊ฒฝํ์ ํ์ ์ชฝ์ด ํฅ๋ฏธ๋ฅผ ์์ง ์๊ณ ์ฑ์ฅํ๊ธฐ๊ฐ ๋ ์ฌ์ด ๊ฒ ๊ฐ์์ต๋๋ค.๊ทธ๋์ Java ๊ด๋ จ ๋ฏธ๋ ํ๋ก์ ํธ ๊ฐ์๋ฅผ ๋ง๋ค๊ณ ์๋ ์ค์ด๊ตฌ์. ์์ฆ์ ํ๊ตญ์ธ๋ค๋ ์์ด๋ก ์ ๋งํ๋ ๋ถ๋ค์ด ๋ง์ง๋ง ์ ๊ฐ ์์ด๋ฅผ ๋ฐฐ์ธ๋๋ง ํด๋ ๋ฌธ๋ฒ ์์ฃผ๋ก ์์ด๋ฅผ ๋ฐฐ์ ๋๋ฐ ๊ฒฐ๊ตญ ์ธ๊ตญ์ธ๋ค ๋ง๋์ ๋ง ํ๋ง๋ ๋ชปํ๊ณ , ์ธ๊ตญ์ธ์ด ๋งํ๋ ๋ด์ฉ์ ์์ ๋ฃ์ง๋ ๋ชปํ๋ ๊ทธ๋ฐ ์ํ๊ฐ ๋์ด๋ฒ๋ ธ๋๋ฐ์. ^^;ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ฐ๋ ์์ด๋ผ๋ ์ธ์ด๋ฅผ ๋ฐฐ์ฐ๋๊ฒ๊ณผ ๊ฝค๋ ๋น์ทํ ๊ฒ ๊ฐ๋๋ผ๊ตฌ์.๊ธฐ๋ณธ ๋ฌธ๋ฒ์ด๋ ๊ณ ๊ธ ๊ธฐ๋ฒ์ ๋ฐฐ์๋ ์ด๊ฑธ ์ด์ฉํด์ ์์ฃผ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ ๋ง๋ค์ด๋ณด์ง ์์ผ๋ฉด ์ด๊ฑธ ์ ๋ฐฐ์ฐ๊ณ ์ด๋์ ์จ๋จน์ ์ ์๋์ง ๊นจ๋ซ๊ธฐ ์ด๋ ต๋ค๋ ์ฌ์ค์ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ฐ๋ ๋ง์ ๋ถ๋ค์ด ๋๋ผ๋ ๊ณ ๋ฏผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.์์ด๋ก ์์ ์๊ฒ ๋งํ ์ ์๋ค๋๊ฑด Java๋ก ๋ด๊ฐ ์๊ฐํ๋๋๋ก ๊ตฌํ์ ํ ์ ์๋ค๋ ๋ง๊ณผ ๊ฐ์ ๊ฒ ๊ฐ๊ณ , ์์ด๋ฅผ ์ ์์ ๋ฃ๋๋ค๋ ๊ฑด ๋ค๋ฅธ ์ฌ๋์ด ์ง ์ฝ๋(Chat GPT ๊ฐ์ AI ํฌํจ)๋ฅผ ์ ์ดํดํ ์ ์๋ค๋ ๋ง๊ณผ ๋น์ทํ๊ฒ ๊ฐ์์.์ด๋ฐ ์ด์ ๋๋ฌธ์ ์ ๊ฐ์ ์๊ฐ์ ์ธ์์ด ์ ๊ธดํ์ง๋ง ๋๋ฆ ํ์ค์ ์ผ๋ก ๋์์ด ๋ ๋งํ ๊ด์ฐฎ์ ๊ฐ์๋ผ๊ณ ์๊ฐํ๊ณ ์์ต๋๋ค. ^^; "ํน์๋ ์ด ์์ธ์ ์๊ฒฌ์ ๊ธ์ ์ ์ผ๋ก ๋ณด์๊ณ ๊ด๋ จ๋ ๋ด์ฉ์ด ๋ฐ์ ๋๋ค๋ฉด ์ ๋ฐ ์ฃผ๋์ด ์ ์ฅ์์ ์์ธํ ์ค๋ช ๊ณผ ์ฌ์ด๊ฑฐ ๋ถํฐ ๋จ๊ณ๋ณ๋ก ๋ค์ํ ๋ฌธ์ ๋ก ๋ถํ ๋๋ฆฝ๋๋ค"--> 1๋ถ ๊ฐ์์ ์ธ ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค ๋ง๋ค์ด๋ณด์ จ๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง 1๋ถ ๊ฐ์์ ๋์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ง ๋ง๋ค์ด ๋ณด์ ๋ ๋์ค์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋ Java์ ์ ๋งํ ๋ฌธ๋ฒ๋ค์ ์ ์ฌ์ฉ์ ํ์ค๊ฑฐ๋ผ๊ณ ์๊ฐํด์. ๊ฒฐ๋ก ์ 1๋ถ ๊ฐ์๊ฐ ์ ์ผ ์ฌ์ด ๋จ๊ณ์ ๋๋ค. ^^; ๊ทธ๊ฒ๋ณด๋ค ๋ ์ฌ์ด๊ฑด ์ค๋ฌด์ ์ผ๋ก๋ ๋์์ด ์๋ ๊ฑฐ ๊ฐ์์ ์ ์ธํ ๋ถ๋ถ๋ ์์ต๋๋ค. ^^; 2๋ถ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ด๋ฒ๋ฌ์ ์คํ ์์ ์ธ๋ฐ ๊ต์ฅํ ์ค์ํ ์ฃผ์ ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ ์์ ์ด์์. ํ๊ฒฝ๋ ์ฃผ๋ณ์ ๋์๋ณด๋ฉด '์ฃผ๋ฌธ'๊ณผ ๊ด๋ จ๋ ์๋น์ค๊ฐ ๊ต์ฅํ ๋ง๋ค๋๊ฑธ ์์ค ์ ์์ํ ๋ฐ์. ์๋ฅผ ๋ค๋ฉด ๋ฐฐ๋ฌ ์ฑ, ์ผํ๋ชฐ, ์คํ ๋ง์ผ, ํฐ์ผ ์๋งค ๋ฑ๋ฑ ๋ฌด์ํ ๋ง์ ์๋น์ค๊ฐ ๋ฌด์ธ๊ฐ๋ฅผ ์ฃผ๋ฌธํ๋ ์์คํ ์ด์ฃ . ๊ทธ๋์ ์ฃผ๋ฌธ์ด๋ผ๋ ๋๋ฉ์ธ์ ํ์ฉํด์ ์ด๋ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ๋ง๋ค์ด๋ณด๋๊ฑด ๊ต์ฅํ ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.์ฐธ๊ณ ๋ก 2๋ถ ๊ฐ์๋ 1๋ถ ๊ฐ์๋ณด๋ค๋ ์กฐ๊ธ ๋ ๋์ด๋๊ฐ ์๊ธฐ๋๋ฌธ์ 1๋ถ์์ ๊ตฌํ์ ๋ํ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ์ ์์ผ์ ๋ค์์ ์๊ฐํ์๋๊ฒ ๋จธ๋ฆฌ๊ฐ ๋ ์ํ์ง ์์๊น ํ๋ ์๊ฒฌ๋๋ฆฝ๋๋ค. ^^; 3๋ถ๋ ์์์ ํ๊ฒฝ๋๊ป์ ์ ๊น ์ธ๊ธํ์ จ๋ Thread๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง ์ ์ฌ์ฉํ๋์ง์ ๋ํ ๋ถ๋ถ์ด ํฌํจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๊ฐ์๋ฅผ 2๋ถ ๊ฐ์ ์คํ ํ์ ์์ฐจ์ ์ผ๋ก ์คํํ ์์ ์ด์์.JavaFX๋ฅผ ์ด์ฉํด์ UI๊ฐ ์๋ ๊ต์ฅํ ์ฌ๋ฏธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ด ๋ณผ ์์ ์ ๋๋ค. "๋ง์ง๋ง์ผ๋ก ใ ..์ด๋ฌ๋ฉด ์๋์ง๋ง.. ใ ..ํน์ 2, 3ํ ใน..๋ก ์นญ ํ ์ธ ํ ์ธ ์ฟ ํฐ์ ์ ๊ณตํด์ฃผ์ค ์์ ์ด ์์ผ์ ๊ฐ์ฅ..?"--> ์ฟ ํฐ ์ ๊ณตํ๋๊ฒ ๊ทธ๋ฆฌ ์ด๋ ค์ด ์ผ์ด ์๋๋ผ์ ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ต๋๋ค. ใ ใ ์ฐธ๊ณ ๋ก ์คํ๋๋ ํ ์ธ๋ ๊ฐ๊ฒฉ์ผ๋ก ์คํ์ ํ ์์ ์ด๋ ๊ฐ๊ฒฉ์ ๋ํ ๋ถ๋ด์ ํฌ์ง ์์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋๋ค์.ใ ๊ทธ๋ฆฌ๊ณ 1๋ถ ๊ฐ์๋ณด๋ค 2๋ถ ๊ฐ์๋ ์คํ๋ ค ์กฐ๊ธ ๋ ๋ฎ๊ฒ ์ฑ ์ ํ ์์ ์ด์์. ๊ฐ์ ํ๋ฆฌํฐ๊ฐ ๋ฎ์์๊ฐ ์๋๋ผ Java ์ ๋ฌธํ์๋ ๋ถ๋ค ์ ์ฅ์์ 1๋ถ๋ ์ค์ํ์ง๋ง 2๋ถ๊ฐ ๋ ์ค์ํ๋ค๊ณ ํ๋จ๋์ด์ ํน์ฌ๋ ๋ถ๋ด๋๋ ๊ฐ๊ฒฉ๋๋ฌธ์ ์ ๊ฐ์๋ฅผ ์๋ฃ๋ ์ผ์ด์ค๋ฅผ ์ค์ด๊ณ ์ถ์ ๋ฐ๋จ์ด ์์ด์ ๊ทธ๋ ์ต๋๋ค.์ ๊ฐ ์ ๋ช ํ ๊ฐ์ฌ๊ฐ ์๋๋ค๋ณด๋ ๊ฐ๊ฒฉ์ด ๋๋ฌด ๋ฎ์ผ๋ฉด ์คํ๋ ค ๊ฐ์ ํ๋ฆฌํฐ ์์ฌ์ด ๋ฐ๋ฅผ์๋ ์๊ฒ ์ง๋ง ๊ทธ๊ฑด ์ด์ฉ ์ ์์ฃ . ์ ๊ฐ์ ๋ค์ผ์ ๋ถ๋ค์ด ์ ํ๋จํด ์ฃผ์ ์ ์ข์ ๊ฐ์๋ผ๊ณ ๋ง์ํด ์ฃผ์๊ธธ ๋ฐ๋ ๋ฟ์ ๋๋ค. ใ ใ ์ง๋ฌธํด ์ฃผ์ ๋ถ๋ถ์ ๋ํ ๋ต๋ณ์ด ์ ๋์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค์.๋ ๊ถ๊ธํ๊ฒ ์์ผ์๋ฉด ์ธ์ ๋ ์ง ํธํ๊ฒ ๋ง์ํด ์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค~
- 0
- 1
- 60
Q&A
๊นํ๋ธ ์ฃผ์ ์ค๋ฅ
์๋ ํ์ธ์? ๋ถํธ์ ๋๋ ค์ ์ฃ์กํฉ๋๋ค.'๊ฐ์ ์๊ฐ > ํ์ต ์๋ฃ' ์น์ ์ ์ด 4๊ฐ์ Github ๋งํฌ๊ฐ ์๊ณ , ํ์ธํด๋ณด๋ ๋ชจ๋ Public Repository๋ก ์ ์ฐ๊ฒฐ์ด ๋๋๋ฐ ํน์ ์ด๋ค ๊ฒฝ๋ก๋ก ์ ์ํด๋ณด๋ ์ ์์ด ์๋์๋์ง ์ฌ์ญค๋ด๋ ๋ ๊น์?
- 0
- 3
- 83
Q&A
window ์์ 1๋ฒ request(n) * maxSize ๋ถ๋ถ์ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์๋ ํ์ธ์? ์ ๊ฐ ํด์ธ์ ์์ด์ ๋ต๋ณ์ด ์กฐ๊ธ ๋ฆ์ด์ง ์ ์ํด ๋ถํ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ง๊ธ์ฏค ์ฃผ๋ฌด์๊ณ ๊ณ์ค๊ฒ ๊ฐ์๋ฐ ์ฌ๊ธด ์์นจ์ด๋ผ์ ์์นจ ๋จน๊ณ ๋ฐ๋ก ๋ต๋ณ์ฐ๊ณ ์์ต๋๋ค. ^^; ๊ถ๊ธํด ํ์๋ ๋ด์ฉ์ด ์๋ง๋ window()๋ผ๋ operator๋ฅผ ์ด๋ค ์ํฉ์์ ์ ์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋์ง ๋ผ๊ณ ์๊ฐ๋์ด์ ์ด ๋ถ๋ถ์ ๋ง์๋๋ฆด๊ฒ์. ๊ณต์ ๋ฌธ์์์๋ ์ค๋ช ์ด ๋์ด ์์ง๋ง window() operator๋ upstream์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ ๊ฐ์๋งํผ ํฌํจํ flux window๋ก ์ชผ๊ฐ์ด์ downstream์์ ์ฒ๋ฆฌํ๋๋ก ํ๋ค ๋ผ๊ณ ๋์์์ต๋๋ค.flux window๋ผ๋๊ฑด ๋ง ๊ทธ๋๋ก window๋ผ๋ ๋จ์๋ก ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์๋๋ฐ ์ด ๋ฐ์ดํฐ๋ค์ ๊ฐ๊ฐ์ flux๋ฅผ ์ด์ฉํด์ ๊ฐ๋ณ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค๋ผ๋๊ฑด๋ฐ์(๊ฐ๋ณ์ ์ผ๋ก ์ฒ๋ฆฌํ ์๋ ์๊ณ , List๋ก ๋ณํํด์ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌํ ์๋ ์์ํ ๊ตฌ์).๋ค๋ง, buffer(maxSize) ๊ฐ์ ๊ฒฝ์ฐ์๋ maxSize๋งํผ ๋ฐ์ดํฐ๋ฅผ ์ชผ๊ฐ์ ๋ฒํผ์ ๋ด์ง๋ง Downstream์ผ๋ก ๋ด๋ ค์ค๋ flux๊ฐ ์๋ List ํํ๋ก ๋ด๋ ค์ค๋๋ค.flux๋ก ๋ด๋ ค์ฃผ๋๋ List๋ก ๋ด๋ ค์ฃผ๋๋๋ ํ์ฐํ ์ฐจ์ด์ ์ด ์์ต๋๋ค.flux๋ฅผ ์ ๋ฌ๋ฐ์ผ๋ฉด flux์์ emit๋๋ ๊ฐ๋ณ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ค๋ฅธ Operator ๋ค์ ์ด์ฉํด์ ์ ์ฐํ๊ฒ ์ฒ๋ฆฌํ ์์๊ณ , ๋น๋๊ธฐ์ ์ธ ์ฒ๋ฆฌ๋ ์์ฝ๊ฒ ํ ์ ์๊ธฐ ๋๋ฌธ์ buffer ๋ณด๋ค ์กฐ๊ธ ๋ ์ํฉ์ ๋ง๋ ์ ์ฐํ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค๋ผ๊ณ ์๊ฐํฉ๋๋ค. buffer()๋ ์ชผ๊ฐ์ด์ List์ ๋ด๊ธด ๋ฐ์ดํฐ๋ค์ ํ ๋ฒ์ ๋ชจ์์ ์ผ๊ด ์ฒ๋ฆฌํ๋๋ฐ ์ค์ ์ ๋ operator์ด๊ธฐ ๋๋ฌธ์ window() operator๋ณด๋ค๋ ์ข ๋ ์ฒ๋ฆฌ๊ฐ ์ฌํํ ํ ๊ตฌ์. ๋ฌผ๋ก buffer๊ฐ ์๋๋ผ window operator๋ฅผ ์ด์ฉํด์ buffer์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ผ๊ด ์ฒ๋ฆฌํ ์๋ ์์ํ ๋ฐ ์ด ๊ฒฝ์ฐ์ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ฑ ์ธก๋ฉด์์ ๋ ๋์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ๋ง๋๋ก buffer๋ ์ชผ๊ฐ์ด์ง ๋ฐ์ดํฐ์ ๋ํ ๋จ์ ์ผ๊ด ์ฒ๋ฆฌ, window๋ ๋จ์ ์ผ๊ด ์ฒ๋ฆฌ ์ด์์ ์์ ๋ค(๋น๋๊ธฐ ์ฒ๋ฆฌ, ๋ฐ์ดํฐ์ ๋ณต์กํ ๊ฐ๊ณต์ฒ๋ฆฌ, ์ง์ฐ ์ฒ๋ฆฌ ๋ฑ)์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ค. ์ด๋ ๊ฒ ์๊ฐํ์๋ฉด ๋ ๊ฒ ๊ฐ์์. ๋ต๋ณ์ด ๋์ ๋์ จ์ผ๋ฉด ์ข๊ฒ ๋ค์.๊ฐ์ฌํฉ๋๋ค! ์ข์ ๊ฟ ๊พธ์ธ์~
- 0
- 2
- 52
Q&A
subscription signal ์ upstream ์ผ๋ก ์ด๋ํ๋ ์์
์๋ ํ์ธ์. ์ข์ ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.์๋ ๋งํฌ๋ฅผ ๋ณด์๋ฉด Reactor์์ signal์ด ์ด๋ค ํ๋ฆ์ผ๋ก ๋ฐ์ํ๋์ง ์ ๋ฆฌ๊ฐ ์ ๋์ด ์๋๋ฐ, ํ๋ฒ ์ฝ์ด๋ณด์๋ฉด ๋์์ด ๋์ค ๊ฒ ๊ฐ์์.https://itvillage.tistory.com/entry/Reactor-Sequence%EC%97%90%EC%84%9C-%EB%B0%9C%EC%83%9D%ED%95%98%EB%8A%94-signal%EC%9D%98-%EC%A0%84%ED%8C%8C-%ED%9D%90%EB%A6%84์ผ๋จ ํต์ฌ๋ง ๊ฐ๋ตํ๊ฒ ๋ง์๋๋ฆฌ๋ฉด, Reactor์ Operator๋ ๊ธฐ๋ณธ์ ์ผ๋ก์ผ๋ก Operator ํ๋๋ฅผ Operator ์ฒด์ธ์ ์ฐ๊ฒฐํ ๋ ๋ง๋ค ๋ด๋ถ์ ์ผ๋ก subscribe()๊ฐ ํ๋ฒ์ฉ ๋ฐ์๋๋ฉด์ Upstream ์ชฝ์ผ๋ก subscription์ด ์ ํ๋๋ ์์ผ๋ก ์ ํ๊ฐ ๋๋๋ฉด ๋ฐ์ดํฐ๊ฐ Downstream ์ชฝ์ผ๋ก emit ๋๋ ํํ๋ก ๋์์ ํ๋๋ฐ์.์ด ํ๋ฆ์ ๋ง์ถฐ์ Context์ ๋์๋ ๋ฐ์ ๋ง์ถ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐ์ ํฉ๋๋ค.๊ทธ๋ฐ๋ฐ ์ด๋ค Operator ๋ค(ํนํ Thread ๊ด๋ จ๋)์ ๋ด๋ถ ๋์์ด ๊ฝค ๋ณต์กํด์ ์ ์๋๋ก ์๋ค ๊ฐ๋คํ๋ ํ๋ฆ๋ ๋ณด์ ๋๋ค.์๋ฌดํผ ๋งํฌ์ ์ ํ ๋ด์ฉ๋ค ์ฒ์ฒํ ์ฝ์ด๋ณด์๋ฉด ๋์๋์ค ๊ฒ ๊ฐ์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค~
- 0
- 2
- 80
Q&A
Webflux์ Non-Blocking ํน์ฑ์ ๋ํด ๋ฌธ์ ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์. Non-Blocking์ ๊ดํด์ ์ง๋ฌธ์ ์ฃผ์ จ๋๋ฐ์.WebFlux์์ Non-Blocking์ด๋ผ๋ ๊ฐ๋ ์,Java์์ ์ฐ๋ ๋๋ฅผ ์ถ๊ฐ๋ก ํ ๋นํด์ ๋์์ฑ์ ํํ๋ก ์ฌ๋ฌ ์์ฒญ์ ๋ฒ๊ฐ์ ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ๋ผ๊ธฐ๋ณด๋ค๋,์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ฐ๋ ๋(์ด๋ฒคํธ ๋ฃจํ)๊ฐ ํน์ ์์ ์ ๋ฌถ์ด์ง ์๊ณ ์์ ๋กญ๊ฒ ์์ง์ผ ์ ์๋ ์ํ, ์ฆ Blocking ๋์ง ์์ ์ํ๋ฅผ ๋งํฉ๋๋ค.์ฆ, Reactor ์ฒด์ธ์์ ๋ณ๋์ ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ์ง ์์๋, Reactor-Netty ์๋ฒ๋ ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ํ๋ฆ์ด Blocking๋์ง ์์ผ๋ฉด ํ๋์ ์ด๋ฒคํธ ๋ฃจํ ใ ๋ ๋๋ก๋ ์ฌ๋ฌ ์์ฒญ์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ๋ง์ฝ ์ด๋ค ์์ฒญ์ด ์์ฐจ์ ์ผ๋ก๋ง ์ฒ๋ฆฌ๋๊ณ , ๋ค๋ฅธ ์์ฒญ์ด ๊ธฐ๋ค๋ฆฌ๋ ํ์์ด ๋ฐ์ํ๋ค๋ฉด,๊ทธ๊ฑด ๋ณดํต ์์ฒญ ์ฒ๋ฆฌ ๋ก์ง์์ Blocking ์ฐ์ฐ์ด ์๊ฑฐ๋, CPU ์ฐ์ฐ์ด ์ค๋ ๊ฑธ๋ ค์์ด๋ฒคํธ ๋ฃจํ๊ฐ ๋ค์ ์์ฒญ์ผ๋ก ๋์ด๊ฐ์ง ๋ชปํ๊ณ ์ฐ๋ ๋๊ฐ ์ ์ ๋ ์ํ์ผ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.์ฆ, WebFlux์ Non-Blocking์ ์ฐ๋ ๋๊ฐ ์์ ๋์ค Blocking ๋์ง ์๊ฒ ๋ง๋๋ ์ฒ๋ฆฌ ๋ฐฉ์์์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.์์ง 3๋ถ๋ฅผ ์ ์ํ์ง ์์ ์ํ์ฌ์ Spring MVC์ Spring WebFlux๋ฅผ ๋น๊ตํ๋ ์ํ ํ ์คํธ์์๋ ํด๋ผ์ด์ธํธ์์ ๋จ์ for๋ฌธ์ ์ด์ฉํด์ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๋๋ฐ์.๋ง์ฝ์ ์ค๋ฌด์ ์ผ๋ก ์ฐ๋ ๋๊ฐ Blocking ๋์ง ์๋๋ค ๋ผ๋ ์ฌ์ค์ ํ์ธํ๋ ค๋ฉด ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ๋์ ๋ค๋ฐ์ ์ผ๋ก ์์ฒญ์ ๋ณด๋ด๋ ์ํฉ์ ๋ง๋ค์ด์ผ ํ๊ณ , ์๋ฒ์ธก WebFlux ์ ํ๋ฆฌ์ผ์ด์ ์์๋ DB ๋ฑ์ I/O๊น์ง Fully Non-Blockingํ๊ฒ ์ฒ๋ฆฌํ๋ ์ํฉ์ ๋ง๋ค์ด์ ํ ์คํธ ํด์ผํ๋๋ฐ, ๋ง์ํ์ ์ฝ๋๋ฅผ ์ง๊ธ ๋ค ๋ง๋ค๊ธฐ์๋ ์ฌ์ค์ ๋ฌด๋ฆฌ๊ฐ ์์ด์ 3๋ถ ๊ฐ์ ๋ ๋ง์๋๋ ค์ผ ํ ๊ฒ ๊ฐ์์.์ด์ ์ํด ๋ถํ๋๋ฆฌ๊ณ , Non-Blocking์ ์๋ฏธ๋ ์ฐ๋ ๋๊ฐ Blocking ๋์ง ์๊ฒ ํ๋๊ฒ์ด์ง ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ๋ฉํฐ ์ฐ๋ ๋ ์์ ์ฒ๋ฆฌ ๋ฐฉ์์ฒ๋ผ ๋์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋๊ฒ์ ์๋๋ผ๋ ์ฌ์ค์ ๊ผญ ๊ธฐ์ต์ ํด์ฃผ์๋ฉด ๊ฐ์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
- 1
- 3
- 196
Q&A
Downstream Mono, Flux๊ฐ subscriber์ธ๊ฐ์?
์๋ ํ์ธ์? Downstream Flux, Mono์ ๋ํด์ ์ง๋ฌธ์ ์ฃผ์ จ๋๋ฐ์.์๋ ๊ฐ๋จํ ์ฝ๋๋ฅผ ์๋ก ๋ค๋ฉด(Mono๋ ๊ฐ์ ์๋ฆฌ๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.)Flux .just(1, 2, 4) .filter(num -> num % 2 == 0) .subscribe(result -> System.out.println(result));just()๋ ์ผ๋ฐ์ ์ผ๋ก ์ต์ด๋ก ๋ฐ์ดํฐ๋ฅผ emitํ๊ธฐ ๋๋ฌธ์ ์์ฐ์, Publisher, ๋ฐํ์๋ก ์ดํดํ๋ฉด ๋ฉ๋๋ค.๊ทธ๋ฐ๋ฐ filter() ์ ์ฅ์์๋ just()๊ฐ Upstream Flux๊ฐ ๋๊ณ , ๋ฐ๋๋ก just() ์ ์ฅ์์๋ filter()๊ฐ Downstream Flux๊ฐ ๋ฉ๋๋ค.์ด๋ ๊ฒ ๋ถ๋ฅด๋ ์ด์ ๋ just()์ filter() ๊ฐ์ Operator๋ค์ด ๋ฆฌํดํ๋ ๋ฆฌํด ํ์ ์ด Mono ๋๋ Flux์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.์ฆ, filter() ์ ์ฅ์์๋ ์์ชฝ์ ์๋ just()๊ฐ ๋ฆฌํดํ๋ Flux๋ฅผ ์ด์ฉํด์ ๋ค์ ํ๋ฆ์ ์ด์ด๊ฐ๊ธฐ ๋๋ฌธ์ just()๊ฐ Upstream Flux๊ฐ ๋๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ Subscriber๋ ๋ด๋ถ์ ์ผ๋ก ์ข ๋ณต์กํ ๊ณผ์ ์ ๊ฑฐ์น๋๋ฐ ๋ค ์ดํดํ์ค ํ์๋ ์๊ณ , ์ผ๋ฐ์ ์ผ๋ก .subscribe(...) ์ฌ๊ธฐ์์ ... ์ ํด๋น๋๋ ๋๋ค ํํ์์ด Subscriber๋ผ๊ณ ์ดํดํ์ ๋ ๋ฌด๋ฐฉํ ๊ฒ ๊ฐ์ต๋๋ค. ํน์ ์ ์ค๋ช ์ด ์ข ์ด๋ ค์ฐ์๋ค๋ฉด just()์ filter() ๊ฐ์ Operator ๋ด๋ถ๋ก ๋ค์ด๊ฐ์ ์ ๋ฆฌํด ํ์ ์ ์ง์ ๋์ผ๋ก ํ์ธํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์์. ๊ฐ์ฌํฉ๋๋ค!
- 0
- 1
- 149





