diff --git a/README.md b/README.md index 1f692805..ed88f6e5 100644 --- a/README.md +++ b/README.md @@ -155,9 +155,9 @@ Open `/src/BlazorApp/wwwroot/sample-data/heroimages.json` and update images with The about section helps to give people a bit more information about your skills and passions. Open `/src/BlazorApp/wwwroot/sample-data/aboutme.json` and update those 3 properties: -* `description`: short sentence or two describing yourself, career goal, and/or passions -* `skillsList`: an [array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array) of your skills to list on the site, can be as many or little as you wish -* `detailOrQuote`: longer block for you to add more detail about yourself, or even a quote you like +- `description`: short sentence or two describing yourself, career goal, and/or passions +- `skillsList`: an [array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array) of your skills to list on the site, can be as many or little as you wish +- `detailOrQuote`: longer block for you to add more detail about yourself, or even a quote you like ### 4๏ธโƒฃ Add items you've worked on and detail text @@ -204,8 +204,8 @@ Project includes the setup needed for you to deploy **free** to both [Azure Stat You'll need both Azure and GitHub accounts to deploy your web application. If you don't yet have an Azure account you can create it from within during the deploy process, or from below links: -* [Create a (no Credit Card required) Azure For Students account](https://azure.microsoft.com/free/students/?WT.mc_id=dotnet-82024-juyoo) -* [Create a new Azure account](https://azure.microsoft.com/free/?WT.mc_id=dotnet-82024-juyoo) +- [Create a (no Credit Card required) Azure For Students account](https://azure.microsoft.com/free/students/?WT.mc_id=dotnet-82024-juyoo) +- [Create a new Azure account](https://azure.microsoft.com/free/?WT.mc_id=dotnet-82024-juyoo) With your project open in Codespaces: @@ -285,8 +285,8 @@ Your environment comes with preinstalled extensions. You can change which extens To find the unique identifier of an extension: -* Navigate to the extension's web page, like so [https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow](https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow&WT.mc_id=dotnet-82024-juyoo) -* Locate the _Unique Identifier_ field under **More info** section on your right side. +- Navigate to the extension's web page, like so [https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow](https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow&WT.mc_id=dotnet-82024-juyoo) +- Locate the _Unique Identifier_ field under **More info** section on your right side. > ๐Ÿ’ก Learn more here, @@ -367,11 +367,11 @@ In your Codespaces, your portfolio application should be running and will reload ## ๐Ÿ“š Resources -* [GitHub Codespaces docs overview](https://docs.github.com/codespaces/overview) -* [GitHub Codespaces guides](https://docs.github.com/codespaces/guides) -* [Use dev containers locally with VS Code and Docker](https://github.com/microsoft/vscode-remote-try-dotnet#vs-code-dev-containers) -* [Get started with Blazor](https://learn.microsoft.com/training/paths/build-web-apps-with-blazor/?WT.mc_id=dotnet-82024-juyoo) -* [Web Development for Beginners](https://github.com/microsoft/Web-Dev-For-Beginners) +- [GitHub Codespaces docs overview](https://docs.github.com/codespaces/overview) +- [GitHub Codespaces guides](https://docs.github.com/codespaces/guides) +- [Use dev containers locally with VS Code and Docker](https://github.com/microsoft/vscode-remote-try-dotnet#vs-code-dev-containers) +- [Get started with Blazor](https://learn.microsoft.com/training/paths/build-web-apps-with-blazor/?WT.mc_id=dotnet-82024-juyoo) +- [Web Development for Beginners](https://github.com/microsoft/Web-Dev-For-Beginners) > #### Codespaces Browser App > diff --git a/translations/README.md b/translations/README.md index ea8b4afa..9a136aa2 100644 --- a/translations/README.md +++ b/translations/README.md @@ -2,3 +2,4 @@ In this folder, you can find translations of this repository in their appropriat - [Espaรฑol](./es/README.md) - [Portuguรฉs](./pt-BR/README.md) +- [ํ•œ๊ตญ์–ด](./ko-kr/README.md) diff --git a/translations/ko-kr/README.md b/translations/ko-kr/README.md new file mode 100644 index 00000000..384f487c --- /dev/null +++ b/translations/ko-kr/README.md @@ -0,0 +1,393 @@ +[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=education/codespaces-project-template-dotnet) + +# GitHub Codespaces๋กœ .NET Blazor ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ + +_๋‹จ ๋ช‡ ๋ถ„ ๋งŒ์— ๊ฐœ์ธ ํฌํŠธํด๋ฆฌ์˜ค ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์ˆ˜์ •ํ•ด์„œ ๋ฐฐํฌํ•ด ๋ณด์„ธ์š”._ โœจ + +์ด ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” ๊ณง๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ์ฝ”๋“œ ์„ธํŠธ์™€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ„๋‹ค๋ฅธ ์„ค์ • ์—†์ด๋„ ๊ณง๋ฐ”๋กœ Codespaces๋ฅผ ์‹คํ–‰ํ•ด ์›น์‚ฌ์ดํŠธ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +- **๋ˆ„๊ฐ€ ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‚˜์š”?** __๋ˆ„๊ตฌ๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค__. ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์€ __๋ˆ„๊ตฌ๋‚˜__, ์›น ๊ฐœ๋ฐœ์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ __๋ˆ„๊ตฌ๋‚˜__, Codespaces๋ฅผ ํ…Œ์ŠคํŠธํ•ด ๋ณด๊ณ  ์‹ถ์€ __๋ˆ„๊ตฌ๋‚˜__ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +- **๊ฒฝ๋ ฅ์ด ํ•„์š”ํ•œ๊ฐ€์š”?** __ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค__. ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฉด ์žˆ๋Š”๋Œ€๋กœ ์—†์œผ๋ฉด ์—†๋Š”๋Œ€๋กœ, ์‹œ๊ฐ„์ด ์žˆ์œผ๋ฉด ์žˆ๋Š”๋Œ€๋กœ ์—†์œผ๋ฉด ์—†๋Š”๋Œ€๋กœ ์›ํ•˜๋Š” ๋งŒํผ ์ˆ˜์ •ํ•ด์„œ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค. +- **๊ฐœ๋ฐœ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•œ๊ฐ€์š”?** _ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค_. ์•„๋ฌด๊ฒƒ๋„ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. +- **์ „์ œ ์กฐ๊ฑด์ด ์žˆ๋‚˜์š”?** _์—†์Šต๋‹ˆ๋‹ค_. ์ด ํ…œํ”Œ๋ฆฟ์€ ์ž์‹ ์˜ ํฌํŠธํด๋ฆฌ์˜ค ์›น์‚ฌ์ดํŠธ๋ฅผ ์ œ์ž‘ํ•ด์„œ ๋ฐฐํฌํ•  ๋•Œ ๊นŒ์ง€ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ค€๋น„ํ•ด ๋’€์Šต๋‹ˆ๋‹ค. + +## ์ด ํฌํŠธํด๋ฆฌ์˜ค ํ…œํ”Œ๋ฆฟ์€ ... + +์ด "choose your own adventure" ํฌํŠธํด๋ฆฌ์˜ค ํ…œํ”Œ๋ฆฟ์—๋Š” [Blazor](https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor?WT.mc_id=dotnet-82024-juyoo) ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋“ค์–ด์žˆ์–ด, ์›น ๋ธŒ๋ผ์šฐ์ €๋งŒ์„ ์ด์šฉํ•ด ์‰ฝ๊ฒŒ ์ˆ˜์ •ํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +![Blazor WebAssembly profile web application](./images/blazorwasm-portfolio-site.gif "Blazor WebAssembly profile web application") + +### ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜๊ธฐ + +1. **Use this Template** ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
[![Use this Template](/images/template-button.svg)](https://github.com/education/codespaces-project-template-dotnet/generate) +1. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์†Œ์œ ์ž๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ์‹œ: ์ž์‹ ์˜ GitHub ๊ณ„์ •) +1. ์ƒˆ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. +1. **Code** ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. +1. **Create Codespace on main** ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. +1. [ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค](#-customize-your-site-in-4-steps). +1. [ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค](#-deploy-your-web-application). + +
+ ๐ŸŽฅ Codespaces์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜ ๋น„๋””์˜ค ํŠœํ† ๋ฆฌ์–ผ์„ ์‹œ์ฒญํ•ด ๋ณด์„ธ์š”. + + [![Codespaces Tutorial](https://img.youtube.com/vi/ozuDPmcC1io/0.jpg)](https://aka.ms/CodespacesVideoTutorial "Codespaces Tutorial") +
+ + +
+ +## ๐Ÿ—ƒ๏ธ .NET Blazor ํฌํŠธํด๋ฆฌ์˜ค ํ…œํ”Œ๋ฆฟ + +์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” Blazor WebAssembly ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .NET ๊ธฐ๋ฐ˜์˜ ๊ฐœ์ธ ํฌํŠธํด๋ฆฌ์˜ค์šฉ ํ”„๋ก ํŠธ์—”๋“œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ GitHub ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. Codespaces๋ฅผ ํ†ตํ•ด ๊ฐœ์ธ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์žˆ์–ด์„œ ๊ณง๋ฐ”๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•˜๊ณ ์ž ํ•จ์ž…๋‹ˆ๋‹ค. + +์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค : + +- `/.devcontainer` + - `.devcontainer/Dockerfile`: Codespaces๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑ ํŒŒ์ผ๋กœ, ์šด์˜ ์ฒด์ œ ๋ฐ ๊ธฐํƒ€ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Œ + - `.devcontainer/devcontainer.json`: Codespaces๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” Visual Studio Code ํ™˜๊ฒฝ ์„ค์ •์„ ์œ„ํ•œ ํŒŒ์ผ๋กœ, ์ถ”๊ฐ€ ์ต์Šคํ…์…˜ ์ •๋ณด ๋“ฑ์„ ๋‹ด๊ณ  ์žˆ์Œ + - `.devcontainer/on-create.sh`: Codespaces๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ถ”๊ฐ€์ ์ธ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ, ํŒŒ์›Œ์…ธ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€์ ์ธ ๋„๊ตฌ ์„ค์น˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Œ +- `/src`: ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ Blazor WebAssembly ํ”„๋กœ์ ํŠธ +- `.editorconfig`: Codespaces์—์„œ ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ฝ”๋”ฉ ์Šคํƒ€์ผ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ [EditorConfig](https://editorconfig.org/) ์„ค์ • ํŒŒ์ผ +- `global.json`: Blazor WebAssembly ํ”„๋กœ์ ํŠธ์—์„œ .NET์˜ ํ”„๋ฆฌ๋ทฐ ๋ฒ„์ „ ๋Œ€์‹  ์ •์‹ ๋ฒ„์ „๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š” ํŒŒ์ผ +- `swa-cli.config.json`: Codespaces์—์„œ Blazor WebAssembly ์•ฑ์„ [Azure SWA CLI](https://azure.github.io/static-web-apps-cli/)๋กœ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์„ค์ • ํŒŒ์ผ +- `MyPortfolio.sln`: Blazor WebAssembly ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํ•จํ•œ ์†”๋ฃจ์…˜ ํŒŒ์ผ + +
+ +## ๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ + +์ด ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ ํ”„๋กœ์ ํŠธ๋Š” ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์žˆ์–ด, ๋ฐ”๋กœ Codespaces๋ฅผ ์—ด์–ด ์›น ์•ฑ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์–ธ์ œ๋“  ๋ฐฐํฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. + +์‹œ์ž‘ํ•  ๋•Œ ํ•„์š”ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋ชจ๋‘ ๋งˆ๋ จํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค [.NET Codespaces ํ…œํ”Œ๋ฆฟ](https://github.com/education/codespaces-teaching-template-dotnet)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ: + +- ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ์˜ ๊ฐ ์„น์…˜์— ๋Œ€ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํฌํ•จํ•œ ๊ฐ„๋‹จํ•œ [Blazor WebAssembly](https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor?WT.mc_id=dotnet-82024-juyoo) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ +- ๋ฐฐํฌ ์‹œ ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ [SWA CLI](https://azure.github.io/static-web-apps-cli/) +- ์ฝ”๋“œ ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด [EditorConfig](https://editorconfig.org/)๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ ๋ฆฐํŒ… ๋ฐ ํ˜•์‹ ์ง€์ • + +### ๊ฐœ์ธ ํฌํŠธํด๋ฆฌ์˜ค ์ƒ์„ฑํ•˜๊ธฐ + + +1. ์ด ํ…œํ”Œ๋ฆฟ์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด [๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ƒ์„ฑํ•˜๊ธฐ](https://github.com/education/codespaces-teaching-template-dotnet/generate)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์†Œ์œ ์ž๋ฅผ ์„ ํƒํ•˜๊ณ  ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฆ„๊ณผ ์„ค๋ช…์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๊ณต๊ฐœ ๋˜๋Š” ๋น„๊ณต๊ฐœ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. +1. ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. +1. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„ ์•„๋ž˜์— ์žˆ๋Š” ์ฝ”๋“œ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜๊ณ  Codespaces ํƒญ์—์„œ "Create codespace on main"์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. + + Create codespace + +1. GitHub์—์„œ Codespaces์˜ ์ดˆ๊ธฐํ™” ๊ณผ์ •์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. + + Codespaces initializing + +1. ์ดˆ๊ธฐํ™”๊ฐ€ ๋๋‚˜๋ฉด ํ•˜๋‹จ์— ํ„ฐ๋ฏธ๋„ ์„น์…˜๊ณผ ํ•จ๊ป˜ Codespaces๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ `dotnet restore && dotnet build` ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ ์ค‘์ธ ๊ฒƒ์ด ๋ณด์ž…๋‹ˆ๋‹ค. ์‹คํ–‰์ด ๋๋‚˜๋ฉด `swa start` ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ„ฐ๋ฏธ๋„ ํ”„๋กฌํ”„ํŠธ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. + + ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋ฉด **Your application running on port 4280 is available.**๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ณ  ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ ํ•ด๋‹น ์‚ฌ์ดํŠธ๋ฅผ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + + Web application started on port 4280 + +
+ +## โœจ ๋„ค ๋‹จ๊ณ„์— ๊ฑธ์ณ ์‚ฌ์ดํŠธ ์ˆ˜์ •ํ•˜๊ธฐ + +์ด ํ”„๋กœ์ ํŠธ๋Š” ์›ํ•˜๋Š” ๋Œ€๋กœ ์‰ฝ๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ์˜ ๊ฐ ์„น์…˜์€ ๋ณ„๋„์˜ ์ปดํฌ๋„ŒํŠธ์ด๋ฉฐ, ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋Š” ํ•œ ๊ณณ์—๋งŒ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์—…๋ฐ์ดํŠธ๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ณ , ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ Blazor ์ปดํฌ๋„ŒํŠธ์— ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +๊ฐ ๋‹จ๊ณ„๋ณ„๋กœ Codespaces์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฐ ๋‹ค์Œ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +> ์ž์„ธํ•œ Codespaces ์†Œ์Šค ์ฝ”๋“œ ์ œ์–ด ๋ฐฉ๋ฒ•์€ [Codespaces์—์„œ ์†Œ์Šค ์ฝ”๋“œ ์ œ์–ด ์‚ฌ์šฉํ•˜๊ธฐ](https://docs.github.com/codespaces/developing-in-codespaces/using-source-control-in-your-codespace)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. + +### 1๏ธโƒฃ ์„ธ๋ถ€ ์ •๋ณด ๋ฐ ์†Œ์…œ ๋ฏธ๋””์–ด ๊ณ„์ • ์ถ”๊ฐ€ํ•˜๊ธฐ + + `/src/BlazorApp/wwwroot/sample-data/siteproperties.json` ํŒŒ์ผ์„ ์—ด๊ณ  JSON ๊ฐœ์ฒด์—์„œ ํ•„์š”ํ•œ ํ‚ค์™€ ๊ทธ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„, ์ œ๋ชฉ, ์ด๋ฉ”์ผ ๋ฐ ์†Œ์…œ ๋ฏธ๋””์–ด ๊ณ„์ •์„ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ˆ˜์ •ํ•˜์„ธ์š”. + +```jsonc +{ + "name": "Alexandrie Grenier", + "title": "Web Designer & Content Creator", + "email": "alex@example.com", + "gitHub": "microsoft", + "devDotTo": null, + "instagram": "microsoft", + "linkedIn": "satyanadella", + "medium": "", + "twitter": "microsoft", + "youTube": "microsoft", +}; +``` + +์‚ฌ์ดํŠธ ์ƒ๋‹จ์— ๋ณด์ด๋Š” ์ด๋ฆ„๊ณผ ์ œ๋ชฉ์„ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ˆ˜์ •ํ•˜์„ธ์š”. + +์ด๋ฉ”์ผ ์ฃผ์†Œ์™€ ์†Œ์…œ ๊ณ„์ • ์ž…๋ ฅ์€ _์„ ํƒ ์‚ฌํ•ญ_ ์ด๊ณ , `Footer` ์ปดํฌ๋„ŒํŠธ์— ์“ฐ์ž…๋‹ˆ๋‹ค. ์ด๋“ค์„ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋นˆ ๋ฌธ์ž์—ด("")๋กœ ์„ค์ •ํ•˜๋ฉด ํ•ด๋‹น ์•„์ด์ฝ˜๊ณผ ๋งํฌ๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. + +### 2๏ธโƒฃ ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝํ•˜๊ธฐ + +์ด ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ์—๋Š” ์„ธ ๊ฐ€์ง€ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: ์ƒ๋‹จ ์„น์…˜ ๋ฐฐ๊ฒฝ, "About me" ์„น์…˜ ๋ฐฐ๊ฒฝ, ํฌํŠธํด๋ฆฌ์˜ค ์„น์…˜(์ฑ…์ƒ ์‚ฌ์ง„). ์ด ๊ธฐ๋ณธ ์„ธ ๊ฐ€์ง€ ์ด๋ฏธ์ง€๋“ค ๋Œ€์‹  ์ €์ž‘๊ถŒ ๋ฌธ์ œ ์—†์ด ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€๋‚˜ ์ž์‹ ์ด ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์ด๋ฏธ์ง€ ์ค‘ **๊ฐ€๋กœ ํ˜•ํƒœ**์˜ ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. + +[Pixabay](https://pixabay.com/) ๋˜๋Š” [Unsplash](https://unsplash.com) ๊ฐ™์€ ์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์ง„์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ง„, ์ผ๋Ÿฌ์ŠคํŠธ, ๋ฒกํ„ฐ ์ด๋ฏธ์ง€ ๋“ฑ ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ฐพ์œผ๋ฉด ๊ฐ๊ฐ์„ `/src/BlazorApp/wwwroot/images` ์— ๊ฐ„๊ฒฐํ•˜๊ณ  ์˜๋ฏธ ์žˆ๋Š” ํŒŒ์ผ๋ช…์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. + +`/src/BlazorApp/wwwroot/sample-data/heroimages.json` ์„ ์—ด์–ด ๊ฐ ์ด๋ฏธ์ง€์˜ `alt` ํ…์ŠคํŠธ๋ฅผ ์ˆ˜์ •ํ•˜์„ธ์š”: + +```jsonc +[ + { + // Home component + // section at top of the page, main image you will see when site loads (woman standing by server wall in sample) + "name": "home", + "src": "images/server-wall.jpg", + "alt": "woman holding laptop standing by server room with glass wall" + }, + { + // About me component + // background behind the detailed "about me" section (abstract mosaic in sample) + "name": "about", + "src": "images/mosaic.svg", + "alt": "purple and blue abstract background" + }, + { + // Portfolio component + // image highted in left hand side of section (design desk photo in sample) + "name": "portfolio", + "src": "images/design-desk.jpeg", + "alt": "desktop with books and laptop" + } +] +``` + +### 3๏ธโƒฃ "about me" ์ถ”๊ฐ€ํ•˜๊ธฐ + +"about me" ์„น์…˜์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ธฐ์ˆ ๊ณผ ๊ด€์‹ฌ์‚ฌ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค. `/src/BlazorApp/wwwroot/sample-data/aboutme.json` ์„ ์—ด๊ณ  ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์†์„ฑ์„ ์ˆ˜์ •ํ•˜์„ธ์š”: + +- `description`: ์ž์‹ , ์ง์—… ๋ชฉํ‘œ ๋ฐ ๊ด€์‹ฌ์‚ฌ์— ๋Œ€ํ•œ ์งง์€ ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๋ฌธ์žฅ +- `skillsList`: ์‚ฌ์ดํŠธ์— ๋‚˜์—ดํ•  ๊ธฐ์ˆ  [๋ชฉ๋ก](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)์€ ์›ํ•˜๋Š” ๋งŒํผ ์ž‘์„ฑ +- `detailOrQuote`: ์ž์‹ ๊ณผ ๊ด€๋ จํ•œ ๋” ๋งŽ์€ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ข‹์•„ํ•˜๋Š” ๋ช…์–ธ์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ธด ๋ธ”๋ก + +### 4๏ธโƒฃ ์ž‘์—…ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์„ธ๋ถ€ ํ…์ŠคํŠธ ์ž…๋ ฅํ•˜๊ธฐ + +์ด ์„น์…˜์€ ์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์—…ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ํฌํŠธํด๋ฆฌ์˜ค์ž…๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ, ๋น„๋””์˜ค, ๋กœ๊ณ  ๋””์ž์ธ, GitHub ํ”„๋กœ์ ํŠธ ๋“ฑ ์ž์‹ ์„ ๋ถ€๊ฐํ•˜๋Š” ๋‚ด์šฉ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! + +`/src/BlazorApp/wwwroot/sample-data/projects.json` ํŒŒ์ผ ๋‚ด JSON ๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ์—๋Š” **์ œ๋ชฉ, ์„ค๋ช…, URL** ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. + +์˜ˆ์‹œ ๋‚ด์šฉ์—๋Š” ๋„ค ๊ฐœ์˜ ํ•ญ๋ชฉ๋งŒ ์žˆ์ง€๋งŒ, ํ•ญ๋ชฉ ์ˆ˜๋Š” ์ž์œ ๋กญ๊ฒŒ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. + +```jsonc +[ + { + "title": "10 Things To Know About Azure Static Web Apps ๐ŸŽ‰", + "description": "Collaboration to create a beginner friendly article to help explain Azure Static Web Apps and tooling to get started.", + "url": "https://dev.to/azure/10-things-to-know-about-azure-static-web-apps-3n4i" + }, + { + "title": "Web Development for Beginners", + "description": "Contributed sketch note imagery to accompany each lesson. These help provide visual representation of what is being taught.", + "url": "https://github.com/microsoft/web-dev-for-beginners" + }, + { + "title": "My Resume Site", + "description": "Created from Microsoft's resume workshop and deployed to GitHub pages. Includes my experience and design abilities.", + "url": "https://github.com/microsoft/workshop-library/tree/main/full/build-resume-website" + }, + { + "title": "GitHub Codespaces and github.dev", + "description": "Video interview to explain when to use GitHub.dev versus GitHub Codespaces, and how best to use each tool.", + "url": "https://www.youtube.com/watch?v=c3hHhRME_XI" + } +] +``` + +
+ +## ๐Ÿƒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌํ•˜๊ธฐ + +์ด ํ”„๋กœ์ ํŠธ๋Š” **๋ฌด๋ฃŒ**๋กœ [Azure ์ •์  ์›น์•ฑ](https://azure.microsoft.com/products/app-service/static/?WT.mc_id=dotnet-82024-juyoo) ๋ฐ [GitHub Pages](https://pages.github.com/)์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +### Azure ์ •์  ์›น์•ฑ + +[Azure ์ •์  ์›น์•ฑ](https://azure.microsoft.com/products/app-service/static/?WT.mc_id=dotnet-82024-juyoo)์€ Microsoft์˜ ์ •์  ์‚ฌ์ดํŠธ(๋˜๋Š” ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง์ ‘ ๋ณด์ด๋Š” ์‚ฌ์ดํŠธ)๋ฅผ ์œ„ํ•œ ํ˜ธ์ŠคํŒ… ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค๋Š” Azure Functions, ์ธ์ฆ, ์Šคํ…Œ์ด์ง• ๋ฒ„์ „ ๋“ฑ Azure๋ฅผ ํ†ตํ•ด ์‚ฌ์ดํŠธ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋ ค๋ฉด Azure ๊ณ„์ •๊ณผ GitHub ๊ณ„์ •์ด ๋ชจ๋‘ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Azure ๊ณ„์ •์ด ์•„์ง ์—†๋‹ค๋ฉด, ๋ฐฐํฌ ๊ณผ์ • ์ค‘์— ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์•„๋ž˜ ๋งํฌ์—์„œ ์ƒ์„ฑํ•˜์„ธ์š” : + +- [ํ•™์ƒ์šฉ Azure ๊ณ„์ • ๋งŒ๋“ค๊ธฐ(์‹ ์šฉ ์นด๋“œ ํ•„์š” ์—†์Œ)](https://azure.microsoft.com/free/students/?WT.mc_id=dotnet-82024-juyoo) +- [์ƒˆ๋กœ์šด Azure ๊ณ„์ • ๋งŒ๋“ค๊ธฐ](https://azure.microsoft.com/free/?WT.mc_id=dotnet-82024-juyoo) + +1. Codespaces์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. +1. ์™ผ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”์˜ Azure ์•„์ด์ฝ˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋กœ๊ทธ์ธํ•˜๊ณ , Azure๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. +1. Azure ๋ฉ”๋‰ด์—์„œ "โž•" ๊ธฐํ˜ธ๋ฅผ ๋ˆ„๋ฅธ ๋‹ค์Œ "Create Static Web App"์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. + + Create Static Web App + +1. GitHub์— ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋กœ๊ทธ์ธํ•˜๋ผ๋Š” ์•ˆ๋‚ด๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์•„์ง ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ, ์ปค๋ฐ‹ ์š”์ฒญ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค. +1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•  ๋•Œ: + 1. **Name for Static Web App**: ์ •์  ์›น์•ฑ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. + 1. **Region**: ์—ฌ๋Ÿฌ๋ถ„์˜ ์ง€์—ญ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณณ์„ ๊ณ ๋ฆ…๋‹ˆ๋‹ค. + 1. **Project structure**: "Blazor"๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. + 1. **Location of application code**: `/src/BlazorApp` ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. + 1. **Output location**: `wwwroot` ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. +1. ์ž…๋ ฅ์ด ๋๋‚˜๋ฉด ํ™”๋ฉด ํ•˜๋‹จ์— ์•Œ๋ฆผ์ด ๋‚˜ํƒ€๋‚˜๊ณ , ์ƒˆ๋กœ์šด GitHub Action ์›Œํฌํ”Œ๋กœ ํŒŒ์ผ์ด ํ”„๋กœ์ ํŠธ์— ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. "Open Action in GitHub"์„ ํด๋ฆญํ•˜๋ฉด ๋ฐฉ๊ธˆ ๋งŒ๋“ค์–ด์ง„ ์ž‘์—…์ด ๋ณด์ด๊ณ , ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +> ๐Ÿคฉ **๋ณด๋„ˆ์Šค** : [Azure ์ •์  ์›น์•ฑ์— ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋„๋ฉ”์ธ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ](https://learn.microsoft.com/shows/azure-tips-and-tricks-static-web-apps/how-to-set-up-a-custom-domain-name-in-azure-static-web-apps-10-of-16--azure-tips-and-tricks-static-w/?WT.mc_id=dotnet-82024-juyoo) + +### GitHub Pages + +[GitHub Pages](https://pages.github.com/)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์›น์‚ฌ์ดํŠธ๋ฅผ ์ง์ ‘ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์˜ ํฌํŠธํด๋ฆฌ์˜ค ์•ฑ์„ GitHub Pages์— ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ฐฐํฌํ•ด ๋ณด์„ธ์š”. + +GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ: + +1. "Settings" ํƒญ์œผ๋กœ ์ด๋™ํ•˜๊ณ  "Pages" ๋ฉ”๋‰ด๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. +1. _Build and deployment_ ๋ถ€๋ถ„์—์„œ, source๋ฅผ **GitHub Actions**์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. + + Choose GitHub Actions for deployment to GitHub Pages + +1. GitHub Pages์˜ visibility๋ฅผ **Public**์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. +1. ์ฝ”๋“œ๋ฅผ ํ‘ธ์‹œํ•˜๊ฑฐ๋‚˜ ์ˆ˜๋™์œผ๋กœ ํ˜ธ์ถœํ•˜์—ฌ GitHub Action ์›Œํฌํ”Œ๋กœ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. + + Invoke GitHub Actions + +1. GitHub Pages์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค. + + Visit GitHub Pages + +> ๐Ÿคฉ **๋ณด๋„ˆ์Šค**: [GitHub Pages์— ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋„๋ฉ”์ธ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ](https://docs.github.com/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site) + +
+ + +## ๐Ÿ† ๋„์ „๊ณผ์ œ + +์ถ”๊ฐ€์ ์œผ๋กœ ์•„๋ž˜ ๋„ค ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  Codespaces, CSS, HTML ๋ฐ JavaScript๋ฅผ ์ตํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + + 1. [Codespaces ์ž‘์—… ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ](#1-customize-your-codespaces) + 1. [์„น์…˜ ์ด๋™์— ๋ถ€๋“œ๋Ÿฌ์šด ์Šคํฌ๋กค ํšจ๊ณผ ์ ์šฉํ•˜๊ธฐ](#2-update-to-smooth-scroll-to-a-section) + 1. [์ฑ…์ƒ ์‚ฌ์ง„์— ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€ํ•˜๊ธฐ](#3-animate-desk-photo) + 1. [์ƒˆ๋กœ์šด ์„น์…˜ ์ถ”๊ฐ€ํ•˜๊ธฐ](#4-add-a-new-section) + +### 1. Codespaces ์ž‘์—… ํ™˜๊ฒฝ ์„ค์ •ํ•˜๊ธฐ + +`.devcontainer/devcontainer.json`์—๋Š” Codespaces ํ™˜๊ฒฝ ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค. Codespaces๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์›ํ•˜๋Š” ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๊ณผ์ •์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•˜์„ธ์š”: + +1. ํŒŒ์ผ `.devcontainer/devcontainer.json` ์„ ์—ด๊ณ  **extensions** ์†์„ฑ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. + + ```jsonc + "extensions": [ + "GitHub.copilot", + "GitHub.copilot-chat", + "ms-dotnettools.csdevkit", + "ms-vscode.PowerShell", + "ms-vscode.vscode-node-azure-pack", + "VisualStudioExptTeam.vscodeintellicode" + ] + ``` + +1. **extensions** ํ•ญ๋ชฉ์œผ๋กœ ์ด๋™ํ•˜์—ฌ `indent-rainbow` ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”: + + ```jsonc + "oderwat.indent-rainbow" + ``` + + ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ [indent-rainbow](https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow&WT.mc_id=dotnet-82024-juyoo)์˜ ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. Codespaces ์ดˆ๊ธฐํ™” ๊ณผ์ •์—์„œ ์ž๋™์œผ๋กœ ์ด ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. + +ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ์ฐพ์•„ ๋ณด์„ธ์š”: + +- ์ด ๋งํฌ๋ฅผ ํ†ตํ•ด ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์˜ ์›น ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. [https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow](https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow&WT.mc_id=dotnet-82024-juyoo) +- ์˜ค๋ฅธ์ชฝ์˜ **More info** ์„น์…˜ ์•„๋ž˜์— ๊ณ ์œ  ์‹๋ณ„์ž ํ•„๋“œ๋ฅผ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. + +> ๐Ÿ’ก ์ด์™€ ๊ด€๋ จํ•œ ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. +> + + + +### 2. ์„น์…˜ ์ด๋™์— ๋ถ€๋“œ๋Ÿฌ์šด ์Šคํฌ๋กค ํšจ๊ณผ ์ ์šฉํ•˜๊ธฐ + +ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ ํ—ค๋”์—๋Š” ์•„๋ž˜ ์„น์…˜์œผ๋กœ ์ด๋™ํ•˜๋Š” ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํ•ด๋‹น ์„น์…˜์œผ๋กœ ํŽ˜์ด์ง€๊ฐ€ ์Šคํฌ๋กคํ•ด์„œ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ด๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์ง„ ์•Š์ฃ ? + +์Šคํฌ๋กค ์†๋„ ์กฐ์ ˆ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œ์ผœ ๋ด…์‹œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž๋Š” ํŽ˜์ด์ง€์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋˜๋Š” ํŽ˜์ด์ง€์˜ ์–ด๋Š ๋ถ€๋ถ„์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +1. `/src/BlazorApp/wwwroot/css/app.css`๋ฅผ ์—ฝ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ํฌํŠธํด๋ฆฌ์˜ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์Šคํƒ€์ผ์‹œํŠธ์ž…๋‹ˆ๋‹ค. `html` ํƒœ๊ทธ์— ๋Œ€ํ•œ ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ์‹œ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ํ˜„์žฌ `html`๊ณผ `body` ์Šคํƒ€์ผ์„ ํ•จ๊ป˜ ์„ค์ •ํ•œ ๊ฒƒ์ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ `html`์š”์†Œ์˜ ์Šคํฌ๋กคํ•˜๋Š” ๋ฐฉ์‹์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ CSS ์Šค๋‹ˆํŽซ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”: + + ```css + html { + scroll-behavior: smooth; + } + ``` + +ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ๊ฐ€ Codespaces์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๋•๋ถ„์— ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค ์ด๋ฅผ ์ž๋™์œผ๋กœ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋‹จ ํ—ค๋”์˜ ๋งํฌ๋ฅผ ํด๋ฆญํ•ด์„œ ๋ถ€๋“œ๋Ÿฌ์šด ์Šคํฌ๋กค ํšจ๊ณผ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. + + + +### 3. ์ฑ…์ƒ ์‚ฌ์ง„์— ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€ํ•˜๊ธฐ + +์• ๋‹ˆ๋ฉ”์ด์…˜์œผ๋กœ ํŽ˜์ด์ง€ ์š”์†Œ๋ฅผ ์›€์ง์—ฌ์„œ ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์„ ๋†’์ด๊ณ  ํŠน์ • ํ•ญ๋ชฉ์„ ๊ฐ•์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌํŠธํด๋ฆฌ์˜ค ์„น์…˜์˜ ์ฑ…์ƒ ์‚ฌ์ง„์— ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”. + +1. ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ์˜ ์Šคํƒ€์ผ์‹œํŠธ์ธ `/src/BlazorApp/wwwroot/css/app.css`๋ฅผ Codespaces ๋‚ด์—์„œ ์—ฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  `@keyframes` ์ •์˜๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์™ผ์ชฝ์—์„œ ์Šฌ๋ผ์ด๋“œํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œํ€€์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”: + + ```css + @keyframes slideInLeft { + 0% { + transform: translateX(-100%); + } + 100% { + transform: translateX(0); + } + } + ``` + +1. ์ด์ œ `slideInLeft` ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œํ€€์Šค๋ฅผ ์ •์˜ํ–ˆ์œผ๋ฏ€๋กœ, ์ฑ…์ƒ ์‚ฌ์ง„์ด ์‹œํ€€์Šค๋Œ€๋กœ ๋™์ž‘ํ•˜๊ฒŒ๋” ํ•ฉ๋‹ˆ๋‹ค. `/src/BlazorApp/Components/Portfolio.razor`๋ฅผ ์—ด๊ณ  `img` ํƒœ๊ทธ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ด ํƒœ๊ทธ๋ฅผ ๊พธ๋ฏธ๊ธฐ ์œ„ํ•ด ์ธ๋ผ์ธ CSS๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ€์ผ ์ •์˜ ๋‚ด์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”: + + ```css + animation: 1s ease-out 0s 1 slideInLeft; + ``` + + ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค: + + ```html + @(hero.Alt) + ``` + +ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ๊ฐ€ Codespaces์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๋•๋ถ„์— ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค ์ด๋ฅผ ์ž๋™์œผ๋กœ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๋ฅผ ์œ„์•„๋ž˜๋กœ ์Šคํฌ๋กคํ•˜์—ฌ ์ฑ…์ƒ ์‚ฌ์ง„์ด ๋ฏธ๋„๋Ÿฌ์ง€๋“ฏ ์›€์ง์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์„ธ์š”. + +> ๐Ÿคฉ **์ถ”๊ฐ€ ์‚ฌํ•ญ**: ์Šคํฌ๋กค ๋‹ค์šด ํ™”์‚ดํ‘œ์— ๋™์ž‘ ์ถ”๊ฐ€ํ•˜๊ธฐ + + + +### 4. ์ƒˆ๋กœ์šด ์„น์…˜ ์ถ”๊ฐ€ํ•˜๊ธฐ + +์•ž์„  ๊ณผ์ •์„ ํ†ตํ•ด ๊ธฐ๋ณธ์œผ๋กœ ์ฃผ์–ด์ง„ ์„น์…˜๋งŒ์œผ๋กœ ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋” ๋‹ด๊ณ  ์‹ถ์€ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ์— ์„น์…˜์„ ์ถ”๊ฐ€ํ•ด ๋ณด์„ธ์š”. + +์˜ˆ๋ฅผ ๋“ค์–ด์„œ ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ์— ๊ต์œก ์„น์…˜์„ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. + +1. `Components` ํด๋” ๋‚ด์— ์ƒˆ ์„น์…˜์„ ์œ„ํ•œ ์ƒˆ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. `Education.razor`๋ผ๋Š” ์ƒˆ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. + +1. `Education.razor` ํŒŒ์ผ์— ์•„๋ž˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”: + + ```razor +
+

Education

+
+ ``` + +1. `Index.razor` ํŒŒ์ผ์„ ์—ด๊ณ  ํŽ˜์ด์ง€ ๋‚ด์—์„œ ๋ณด์ด๊ธธ ์›ํ•˜๋Š” ์œ„์น˜์— Education ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”: + + ```razor + + ``` + +ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ๊ฐ€ Codespaces์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๋•๋ถ„์— ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค ์ด๋ฅผ ์ž๋™์œผ๋กœ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. + +
+ + +## ๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ + +- [GitHub Codespaces ๋ฌธ์„œ ๊ฐœ์š”](https://docs.github.com/codespaces/overview) +- [GitHub Codespaces ๊ฐ€์ด๋“œ](https://docs.github.com/codespaces/guides) +- [VS Code์™€ Docker๋ฅผ ์ด์šฉํ•˜์—ฌ ๋กœ์ปฌ์—์„œ dev containers ์‚ฌ์šฉํ•˜๊ธฐ](https://github.com/microsoft/vscode-remote-try-dotnet#vs-code-dev-containers) +- [Blazor ์‹œ์ž‘ํ•˜๊ธฐ](https://learn.microsoft.com/training/paths/build-web-apps-with-blazor/?WT.mc_id=dotnet-82024-juyoo) +- [์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์›น ๊ฐœ๋ฐœ](https://github.com/microsoft/Web-Dev-For-Beginners) + +> #### Codespaces ๋ธŒ๋ผ์šฐ์ € ์•ฑ +> +> Edge ๋˜๋Š” Chrome์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, Codespaces๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ Codespaces ์•ฑ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. Codespaces ์•ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋ธŒ๋ผ์šฐ์ € ์™ธ๋ถ€์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฑ ์•„์ด์ฝ˜์„ ์ฐพ์•„๋ณด๊ณ  ํŒ์—… ์ฐฝ์œผ๋กœ Codespaces ์•ฑ์„ ์„ค์น˜ํ•ด ๋ณด์„ธ์š”. +> +> Codespaces browser app + +
+ +## ๐Ÿ”Ž ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๊ฑฐ๋‚˜ ๊ฐœ์„ ํ•˜๊ธฐ ์›ํ•˜๋Š” ๋‚ด์šฉ์ด ์žˆ๋‚˜์š”? + +[GitHub Issue ์—ด๊ธฐ](/../../issues/new)๋กœ ์ด ํ…œํ”Œ๋ฆฟ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๊ธฐ์—ฌํ•˜์„ธ์š”!