๐บ๐ธ English | ๐ฏ๐ต ๆฅๆฌ่ช | ๐จ๐ณ ็ฎไฝไธญๆ | ๐ช๐ธ Espaรฑol | ๐ง๐ท Portuguรชs (Brasil) | ๐ฐ๐ท ํ๊ตญ์ด | ๐ฉ๐ช Deutsch | ๐ซ๐ท Franรงais
๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๊ธฐ๋ฐ Python ํ๋ ์ด๊ทธ๋ผ์ด๋.
Client Side Python์ Pyodide๋ก ๊ตฌ๋๋๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ Python ํ๋ ์ด๊ทธ๋ผ์ด๋์ด๋ค.
๋ชจ๋ Python ์ฝ๋๋ ๋ธ๋ผ์ฐ์ ํญ ๋ด๋ถ์์ ์์ ํ ์คํ๋๋ฉฐ(WebAssembly, ๋ฐฑ์๋ ์์), ๋ฐ๋ผ์ ์ฝ๋๊ฐ ์ฌ์ฉ์์ ์ปดํจํฐ ๋ฐ์ผ๋ก ๋๊ฐ์ง ์๋๋ค.
์ด ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ฉ๋์ ์ ํฉํ๋ค.
- ์์ Python ์ค๋ํซ์ ๋น ๋ฅด๊ฒ ์ํํด ๋ณด๊ธฐ
- ์์ ์ด๋ ์ํฌ์์์ Python ๊ธฐ์ด๋ฅผ ์์ฐํ๊ธฐ
- ์์ ํ ์๋๋ฐ์ค์์ ๊ฐ๋จํ ์์น ๊ณ์ฐ์ด๋ ์คํฌ๋ฆฝํธ ์์ ์ ์คํํ๊ธฐ
- WebAssembly + Pyodide๊ฐ ๋ธ๋ผ์ฐ์ ์ โ์ง์งโ Python์ ์ด๋ป๊ฒ ๊ฐ์ ธ์ฌ ์ ์๋์ง ๋ณด์ฌ์ฃผ๊ธฐ
-
์์ ํ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ์คํ
- Pyodide๋ฅผ ์ฌ์ฉํด WebAssembly์์ CPython์ ์คํํ๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ธ์ฆ์ด ํ์ ์๋ค.
-
๊ฐ๋จํ ์ฝ๋ ์๋ํฐ + ์ฝ์
- Python ์ฝ๋๋ฅผ ์ํ ํ ์คํธ ์์ญ.
stdout๋ฐstderr๋ฅผ ํ์ํ๋ ์ฝ์ ์์ญ.- ๋ฒํผ: Run, Stop, Clear, Load Sample, Copy Output.
-
๋ถ๋๋ฌ์ด โStopโ ๋ฉ์ปค๋์ฆ
- ์คํ์ ์ํํธ ์ทจ์ ํ ํฐ์ผ๋ก ๊ฐ์ธ์ ธ ์๋ค.
- Stop์ ๋๋ฅด๋ฉด ํ์ฌ ์คํ์ด ๋ ผ๋ฆฌ์ ์ผ๋ก ์ทจ์๋๋ฉฐ, ๋ฆ๊ฒ ๋์ฐฉํ ๊ฒฐ๊ณผ๋ UI๋ฅผ ๋ง๊ฐ๋จ๋ฆฌ๋ ๋์ ๋ฌด์๋๋ค.
-
๋ฐ์ํ ์น UI
- Expo / React Native Web๊ณผ Material UI ์ปดํฌ๋ํธ๋ก ๊ตฌ์ถ๋์๋ค.
- ๋ ์ด์์์ ๋ค์ํ ๋ทฐํฌํธ ํฌ๊ธฐ(๋ฐ์คํฌํฑ / ํ๋ธ๋ฆฟ)์ ๋ง๊ฒ ์กฐ์ ๋๋ค.
-
Docker๋ฅผ ํตํ ๊ฒฐ์ ์ CI
- Jest ํ
์คํธ๋
docker-compose.test.yml์ ์ฌ์ฉํด Docker ์ปจํ ์ด๋์์ ์คํ๋๋ค. - CI ๋ฐ Docker ๊ธฐ๋ฐ ํ ์คํธ๋ฅผ ์ํ GitHub Actions ์ํฌํ๋ก๊ฐ ์ ๊ณต๋๋ค.
- Jest ํ
์คํธ๋
-
GitHub Pages๋ก ์๋ ๋ฐฐํฌ
- GitHub Actions ์ํฌํ๋ก๊ฐ Expo ์น ๋ฒ๋ค์ ๋น๋ํ๊ณ
main๋ธ๋์น์ฉ GitHub Pages์ ๊ฒ์ํ๋ค.
- GitHub Actions ์ํฌํ๋ก๊ฐ Expo ์น ๋ฒ๋ค์ ๋น๋ํ๊ณ
์ฑ์ด ์ฒ์ ๋ก๋๋๋ฉด ๋ค์ ์์ ์ ์ํํ๋ค.
- CDN์์ Pyodide๋ฅผ ๊ฐ์ ธ์จ๋ค.
- Pyodide ๋ฐํ์์ ์ด๊ธฐํํ๊ณ
runPythonAsync๋ฅผ ๋ ธ์ถํ๋ค. - Python ์ถ๋ ฅ์ด ํ์ด์ง ๋ด ์ฝ์๋ก ์คํธ๋ฆฌ๋ฐ๋๋๋ก
stdout๋ฐstderr์ฉ ์ปค์คํ ํธ๋ค๋ฌ๋ฅผ ์ฐ๊ฒฐํ๋ค. - ๊ฐ๋จํ ์คํ ํ ํฐ์ ์ฌ์ฉํด soft Stop์ ๊ตฌํํ๋ค.
- ๊ฐ ์คํ๋ง๋ค ๋ด๋ถ
execId๊ฐ ์ฆ๊ฐํ๋ค. - ์ค๋๋
execId๋ฅผ ๊ฐ์ง ์คํ์ด ๋๋๋ฉด ํด๋น ์ถ๋ ฅ์ ๋ฒ๋ ค์ง๋ค. - ์ด๋ฅผ ํตํด ์ด์ ์คํ์ ์ค๋๋ ๊ฒฐ๊ณผ๊ฐ ์ฝ์์ ์ค์ผ์ํค๋ ๊ฒ์ ๋ง๋๋ค.
- ๊ฐ ์คํ๋ง๋ค ๋ด๋ถ
์ด ๋ชจ๋ ๊ณผ์ ์ ๋ธ๋ผ์ฐ์ ๋ด๋ถ์์ ์ด๋ฃจ์ด์ง๋ฉฐ, ๋ฐฑ์๋ API ํธ์ถ์ ์ ํ ํ์ํ์ง ์๋ค.
- Docker ๋ฐ Docker Compose
# set environment variables:
export REACT_NATIVE_PACKAGER_HOSTNAME=${YOUR_HOST}
# Build the image
docker compose build
# Run the container
docker compose updocker compose -f docker-compose.test.yml up --build --exit-code-from frontend_test - Apache License 2.0
