๐ป C# / .NET ยท ์ฃผ๊ฐ
-
.NET 8 Clean Architecture ์คํํฐ ํ
ํ๋ฆฟ (2026๋
ํ) โ EF Core + JWT ํฌํจ
"๋น์ฆ๋์ค ๋ก์ง์ ์ด๋์ ๋๋๊ฐ"๋ผ๋ ํ ๋ด ๋จ๊ณจ ๋ ผ์์ ๋๋ด๊ธฐ ์ํด ๋ง๋ Clean Architecture ์คํํฐ ํ ํ๋ฆฟ์ GitHub์ MIT ๋ผ์ด์ ์ค๋ก ๊ณต๊ฐํ ๊ธ์ ๋๋ค. Domain, Application, Infrastructure, Presentation 4๊ฐ ํ๋ก์ ํธ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์๊ฒฉํ ์์กด์ฑ ๋ฐฉํฅ๊ณผ ์์ฒด ๋ถ๋ณ ์กฐ๊ฑด์ ์์ ํ๋ ๋๋ฉ์ธ ์ํฐํฐ๊ฐ ํน์ง์ ๋๋ค. Application ๋ ์ด์ด๋ Moq๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ด๋ ๋จ์ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋์ด ์์ผ๋ฉฐ, EF Core์ JWT ์ธ์ฆ์ด ๋ด์ฅ๋์ด `dotnet run` ํ ์ค๋ก ๋ฐ๋ก ์คํ๋ฉ๋๋ค. ์ ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ๊ตฌ์กฐ ์ค๊ณ์ ๋๋ ์๊ฐ์ ์ค์ด๊ณ ์ถ์ ํ์๊ฒ ์ค์ฉ์ ์ธ ์ถ๋ฐ์ ์ด ๋ ์ ์์ต๋๋ค.
-
์คํ ํธ๋ ์ด์ค์์ ์์ ์ ์๊น์ง 4์ด โ Self-Healing .NET API Gateway ๊ตฌ์ถ๊ธฐ
Semantic Kernel, Groq, Hangfire, SignalR์ ์กฐํฉํด ์์ธ ๋ฐ์ ์ LLM์ด ์์ ์์ ์ ์ํ๊ณ ์ค์๊ฐ ๋์๋ณด๋์ ํธ์ํด์ฃผ๋ .NET 10 API ๊ฒ์ดํธ์จ์ด ๊ตฌ์ถ ๊ฒฝํ์ ๊ณต์ ํ ๊ธ์ ๋๋ค. ์์ธ ๋ฐ์ ํ 4์ด ์ด๋ด์ AI ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ์ ๋ฌ๋๋ ๊ตฌ์กฐ๋ก, ์ด์ ์๋น์ค์ ์๊ฐ ์น์ (self-healing) ๊ฐ๋ฅ์ฑ์ ์ค์ ๋ก ๊ตฌํํด ๋ณด์ธ ์ ์ด ์ธ์์ ์ ๋๋ค. Hangfire๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ถ์ ์์ ์ ์ฒ๋ฆฌํ๊ณ , SignalR์ด ๊ฒฐ๊ณผ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ๋ฌํ๋ ๋ฑ ๊ฐ ์ปดํฌ๋ํธ์ ์ญํ ์ด ๋ช ํํ ๋ถ๋ฆฌ๋์ด ์์ด ์ํคํ ์ฒ ์ฐธ๊ณ ์ฉ์ผ๋ก๋ ์ ์ฉํฉ๋๋ค. .NET 10 ํ๊ฒฝ์์ ์ต์ AI ๋๊ตฌ๋ค์ ์ค์ ์ ์ ์ฉํ ์ฌ๋ก๋ผ ๊ด์ฌ์ ๋๋ฉฐ, ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๋ง๋ฌผ๋ฆฌ๋์ง ํ์ตํ๊ธฐ์๋ ์ข์ ๊ธ์ ๋๋ค.
-
API ํคยทํด๋ผ์ฐ๋ ๋น์ฉ ์ ๋ก โ .NET 8 + Ollama + React๋ก 30๋ถ ๋ง์ RAG ์ฑ๋ด ๋ง๋ค๊ธฐ
.NET 8๊ณผ React, ๋ก์ปฌ LLM ๋๊ตฌ์ธ Ollama๋ฅผ ์กฐํฉํด PDF ์ง์์๋ต ์ฑ๋ด์ ์์ ํ ๋ด PC ์์์ ๊ตฌ๋ํ ๊ฒฝํ๋ด์ ๋๋ค. ์ ์ฒด ์์ค๊ฐ ๋จ 9๊ฐ ํ์ผ, ์ฝ 400์ค์ ๋ถ๊ณผํ ์ ๋๋ก ๊ฐ๊ฒฐํ๊ฒ ๊ตฌ์ฑ๋์ผ๋ฉฐ, ์ธ๋ถ API ํค๋ ์์ ์ก ๋น์ฉ ์์ด RAG(Retrieval-Augmented Generation) ์ํคํ ์ฒ๋ฅผ ๋ก์ปฌ์์ ์คํํ ๊ฒ์ด ํต์ฌ์ ๋๋ค. ๊ฐ์ธ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ์๋ฒ์ ๋ณด๋ด์ง ์์๋ ๋๋ฏ๋ก ๋ณด์ ๋ฏผ๊ฐ ํ๊ฒฝ์์ ํนํ ์ ์ฉํ ์ ์์ต๋๋ค. ์์ฑ์๊ฐ ๊ฐ๋ฐ ๊ณผ์ ์์ ์ค์ํ ๋ค์ฏ ๊ฐ์ง๋ ์์งํ๊ฒ ๊ณต์ ํด ์ค๋ฌด ๊ฐ๊ฐ์ ํจ๊ป ์ตํ ์ ์์ผ๋ฉฐ, 30๋ถ ์์ฑ์ ๋ชฉํ๋ก ํ ๋งํผ ๋ฐ๋ผํ๊ธฐ ์ข์ ๋์ด๋์ ๋๋ค.
-
์ฌ์์ฑ ์์ด ๋ ๊ฑฐ์ .NET ์ ํ๋ฆฌ์ผ์ด์
ํ๋ํํ๊ธฐ
12๋ ๋ .NET Framework 4.5 Web API๋ฅผ ์ ๋ฉด ์ฌ์์ฑ ์์ด ๋จ๊ณ์ ์ผ๋ก ํ๋ํํ ์ค์ ์ฌ๋ก๋ฅผ ๋ค๋ฃฌ ๊ธ์ ๋๋ค. ๋น ๋ฑ ๋ฐฉ์ ๋์ ์คํธ๋ญ๊ธ๋ฌ ํผ๊ทธ(Strangler Fig) ํจํด ๋ฑ์ ํ์ฉํด ๊ธฐ์กด ์์คํ ์ ์ด์ํ๋ฉด์ ์กฐ๊ธ์ฉ ๊ต์ฒดํด ๋๊ฐ๋ ์ ๋ต์ด ํต์ฌ์ ๋๋ค. ๋ ๊ฑฐ์ ์ฝ๋๋ฒ ์ด์ค์ ์จ๋ฆํ๋ ํ์ด๋ผ๋ฉด ๊ณต๊ฐํ ๋ด์ฉ์ด ๋ง์ผ๋ฉฐ, ์ค์ ๋ง์ฃผ์น๋ ์์กด์ฑ ๋ฌธ์ ์ ํ ์คํธ ์ ๋ต๋ ํจ๊ป ์ค๋ช ํฉ๋๋ค. ๋น์ฆ๋์ค ์ฐ์์ฑ์ ์งํค๋ฉด์ ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ค์ฌ์ผ ํ๋ ํ์ค์ ์ธ ์ ์ฝ์ ๋ฐ์ํ ์ ๊ทผ๋ฒ์ด๋ผ ์ฐธ๊ณ ๊ฐ์น๊ฐ ๋๊ณ , '์ธ์ ๋ฆฌ๋ผ์ดํธ ๋์ ์ ์ง์ ๊ฐ์ ์ ํํด์ผ ํ๋๊ฐ'๋ฅผ ํ๋จํ๋ ๊ธฐ์ค๋ ํจ๊ป ์ ์ํฉ๋๋ค.
-
AI๋ก MSBuild ๋น๋ ์คํจ ๋ถ์ โ Microsoft Binlog MCP Server ๊ณต๊ฐ
Microsoft๊ฐ MSBuild ๋น๋ ์คํจ์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ AI๋ก ์ง๋จํ ์ ์๋ Binlog MCP Server๋ฅผ .NET ๊ณต์ ๋ธ๋ก๊ทธ๋ฅผ ํตํด ๊ณต๊ฐํ์ต๋๋ค. ์ด ์๋ฒ๋ 15๊ฐ์ ์ ๋ฌธ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ฉฐ, GitHub Copilot ๊ฐ์ AI ์ด์์คํดํธ๊ฐ ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ(.binlog ํ์ผ)๋ฅผ ์ง์ ๋ถ์ํ ์ ์๊ฒ ํด์ค๋๋ค. ๋น๋๊ฐ ์ ๋๋ฆฐ์ง, ์ด๋ ํ๊ฒ์์ ์คํจํ๋์ง AI์๊ฒ ๋ฌผ์ด๋ณด๋ฉด ์๋์ผ๋ก ํ์ ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก, ๋ณต์กํ ๋น๋ ๋ก๊ทธ๋ฅผ ์๋์ผ๋ก ๋ค์ง๋ ์๊ณ ๋ฅผ ํฌ๊ฒ ์ค์ฌ์ค ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค. Model Context Protocol(MCP)์ ํ์ฉํด AI์ ๋น๋ ์์คํ ์ ์ฐ๊ฒฐํ ๊ฒ์ด ํต์ฌ์ด๋ฉฐ, .NET ์ํ๊ณ์์ AI ๋๊ตฌ ํ์ฉ์ด ๊ฐ๋ฐ ์ธํ๋ผ ์์ญ๊น์ง ํ์ฅ๋๊ณ ์์์ ๋ณด์ฌ์ฃผ๋ ์ฌ๋ก์ ๋๋ค.
-
EF Core ๊ฐ์ฌ ๋ก๊ทธ(Audit Log), ์ด์ ์ง์ ์ง์ง ๋ง์ธ์
๊ท์ ์ค์(compliance) ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ํ์ด๋ผ๋ฉด ์ด๋ ์๊ฐ ๊ฐ์ฌ ๋ก๊ทธ ๊ตฌํ ํ์๋ฅผ ํผํ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด ๊ธ์ EF Core์์ ๊ฐ์ฌ ๋ก๊ทธ๋ฅผ ๋งค๋ฒ ์์ผ๋ก ๊ตฌํํ๋ ๋์ , EF Core์ ChangeTracker๋ ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด ํจ์ฌ ์ ์ ์ฝ๋๋ก ๊น๋ํ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค. ๋ณ๊ฒฝ ์ด๋ ฅ ์ถ์ ์ด๋ ๊ท์ ์ค์๊ฐ ํ์ํ ํ๋ก์ ํธ๋ฅผ ์งํ ์ค์ธ ๋ถ๋ค์๊ฒ ์ค์ง์ ์ธ ๋์์ด ๋ ๊ธ์ ๋๋ค.
-
.NET ์์ด์ ํฑ ํ๋ํ(Agentic Modernization) ๋ผ์ด๋ธ์คํธ๋ฆผ ๊ฐ์ต ์์
Microsoft๊ฐ '.NET Day on Agentic Modernization' ๋ผ์ด๋ธ์คํธ๋ฆผ ๊ฐ์ต๋ฅผ ๋ฐํํ์ต๋๋ค. ASP.NET Core, Aspire, Azure, GitHub Copilot, Microsoft Foundry ๋ฑ์ ํ์ฉํด ๊ธฐ์กด .NET ์ฑ์ AI ์์ด์ ํธ ๊ธฐ๋ฐ์ผ๋ก ์ ํํ๋ ๋ฐฉ๋ฒ์ ์ง์ค์ ์ผ๋ก ๋ค๋ฃน๋๋ค. ๋ ๊ฑฐ์ .NET ํ๋ก์ ํธ๋ฅผ AI ์๋์ ๋ง๊ฒ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ์ค์ ๋ ธํ์ฐ๋ฅผ ๋ผ์ด๋ธ๋ก ๋ณผ ์ ์๋ ๊ธฐํ์ด๋, ๋ ๊ฑฐ์ ํ๋ํ๋ฅผ ๊ณ ๋ฏผ ์ค์ธ ํ์ด๋ผ๋ฉด ์ฃผ๋ชฉํด๋ณผ ๋งํฉ๋๋ค.
-
.NET ๋ฐ .NET Framework 2026๋
6์ ์ ๊ธฐ ๋ณด์ ์
๋ฐ์ดํธ
.NET๊ณผ .NET Framework์ 2026๋ 6์ ์ ๊ธฐ ์๋น์ค ์ ๋ฐ์ดํธ๊ฐ ๋ฆด๋ฆฌ์ฆ๋์์ต๋๋ค. ๋งค๋ฌ ์งํ๋๋ ๋ณด์ ํจ์น ๋ฐ ์์ ์ฑ ๊ฐ์ ์ ๋ฐ์ดํธ๋ก, ํ๋ก๋์ ํ๊ฒฝ์ ์ด์ ์ค์ด๋ผ๋ฉด ๋น ๋ฅธ ์์ผ ๋ด์ ํ์ธํ๊ณ ์ ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ตฌ์ฒด์ ์ธ ๋ณ๊ฒฝ ์ฌํญ ๋ชฉ๋ก์ ๊ณต์ ๋ธ๋ก๊ทธ์์ ํ์ธํ ์ ์์ต๋๋ค.
-
Microsoft Build 2026์ .NET ์ฃผ์ ์ธ์
์ด์ ๋ฆฌ
Microsoft Build 2026์์ .NET ๊ด๋ จ ๋ค์ํ ๋ฐํ๊ฐ ์์์ก์ต๋๋ค. .NET 11 ์ ๊ธฐ๋ฅ, C#์ ์๋ก ๋์ ๋๋ union types, AI ๋น๋ฉ ๋ธ๋ก, agentic web, .NET MAUI ๋ฑ ํญ๋์ ์ฃผ์ ๊ฐ ๋ค๋ค์ก์ต๋๋ค. ๊ณต์ ๋ธ๋ก๊ทธ์์๋ '๊ผญ ๋ด์ผ ํ ์ธ์ ' ๋ชฉ๋ก์ ์ ๋ฆฌํด๋์ด, ์ปจํผ๋ฐ์ค์ ์ฐธ์ํ์ง ๋ชปํ ๋ถ๋ค๋ ์์์ผ๋ก ํต์ฌ ๋ด์ฉ์ ๋น ๋ฅด๊ฒ ๋ฐ๋ผ์ก์ ์ ์์ต๋๋ค. AI์ .NET์ ๊ฒฐํฉ์ด ๋์ฑ ๊น์ด์ง๋ ํ๋ฆ์ ํ๋์ ํ์ธํ ์ ์๋ ์๋ฆฌ์์ต๋๋ค.
-
.NET 11 Preview 5 ์ถ์
Microsoft๊ฐ .NET 11 Preview 5๋ฅผ ๊ณต์ ๊ณต๊ฐํ์ต๋๋ค. ์ด๋ฒ ํ๋ฆฌ๋ทฐ์๋ .NET ๋ฐํ์, SDK, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ASP.NET Core, .NET MAUI, C#, Entity Framework Core ๋ฑ ์ ์์ญ์ ๊ฑธ์น ์๋ก์ด ๊ธฐ๋ฅ๋ค์ด ๋ด๊ฒจ ์์ต๋๋ค. ์์ง ์ ์ ๋ฆด๋ฆฌ์ฆ๋ ์๋์ง๋ง, .NET 11์ด ์ด๋ค ๋ชจ์ต์ ๊ฐ์ถ์ง ๋ฏธ๋ฆฌ ์ดํด๋ณผ ์ ์๋ ์ข์ ๊ธฐํ์ ๋๋ค. Microsoft Build 2026์์ ๊ณต๊ฐ๋ C# union types ๊ฐ์ ๊ตต์งํ ์ธ์ด ๊ธฐ๋ฅ๋ ์ด๋ฒ ํ๋ฆฌ๋ทฐ์์ ํ์ธํ ์ ์์ต๋๋ค. ์ ๊ท ๊ธฐ๋ฅ์ ๋ฏธ๋ฆฌ ์ฒดํํด๋ณด๊ณ ์ถ์ ๋ถ๋ค์ ๊ณต์ .NET ๋ธ๋ก๊ทธ์์ ์์ธ ๋ด์ฉ์ ํ์ธํด ๋ณด์ธ์.
-
Squirix๊ฐ .NET ๋ถ์ฐ ์บ์์ ์๊ฒฉํ ํด๋ผ์ด์ธํธ/์๋ฒ ์ํคํ
์ฒ๋ฅผ ์ ํํ ์ด์
์คํ์์ค .NET ๋ถ์ฐ ์บ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ Squirix์ ์ค๊ณ ์ฒ ํ์ ์ค๋ช ํ๋ ๊ธ์ ๋๋ค. ๋ง์ ์บ์ ์๋ฃจ์ ์ด ์๋ฒ ๋๋ ๋ฐฉ์์ ํํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, Squirix๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ฅผ ๋ช ํํ ๋ถ๋ฆฌํ๋ ์ํคํ ์ฒ๋ฅผ ๊ณ ์งํฉ๋๋ค. ์ด ๋ฐฉ์์ ์บ์ ์ํ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ฝ๊ณ , ์๋ฒ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ค์ผ์ผ์์ํ ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ ์๋น์ค๊ฐ ํ๋์ ์บ์ ์๋ฒ๋ฅผ ๊ณต์ ํ๊ธฐ ํธ๋ฆฌํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋ถ์ฐ ์์คํ ์์ ์บ์๋ฅผ ์ค๊ณํ ๋ ์ด๋ค ํธ๋ ์ด๋์คํ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋์ง ์ค์ ๊ตฌํ ์ฌ๋ก๋ฅผ ํตํด ์ดํด๋ณผ ์ ์์ด, ๋น์ทํ ๋ฌธ์ ๋ฅผ ๊ณ ๋ฏผํ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์์๊ฒ ์ข์ ์ฐธ๊ณ ๊ฐ ๋ฉ๋๋ค.
-
Cursor + .NET ์ฃผ๊ฐ ์์: ์๋์ด C#/.NET ๊ฐ๋ฐ์๋ฅผ ์ํ 6๊ฐ์ง ๊ท์น๊ณผ ์์ธ์ด
AI ์ฝ๋ฉ ๋๊ตฌ์ธ Cursor๋ฅผ C#/.NET ๊ฐ๋ฐ์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊พธ์คํ ์ ๋ฆฌํด์จ 'Agentic Architect' ์๋ฆฌ์ฆ์ ์ฃผ๊ฐ ๋ค์ด์ ์คํธ์ ๋๋ค. ์ด๋ฒ ํธ์๋ ์ฌ๋ฌ ์ธ์ ์ ๊ฑธ์ณ Cursor๊ฐ ์ผ๊ด๋ ์ปจํ ์คํธ๋ฅผ ์ ์งํ๋๋ก ๋๋ ์๋์ด ์์ค์ ๊ท์น 6๊ฐ์ง์, ๊ทธ ๋ฐฐ๊ฒฝ ์ฒ ํ์ ๋ด์ ์์ธ์ด 1ํธ์ด ๋ด๊ฒจ ์์ต๋๋ค. AI ๋๊ตฌ๊ฐ ๋น ๋ฅด๊ฒ ์ ๋ฌด์ ์ค๋ฉฐ๋ค๊ณ ์๋ ์ง๊ธ, .NET ์ํ๊ณ์์ ์ด๋ฅผ ์ด๋ป๊ฒ ๊ท์จ ์๊ฒ ํ์ฉํ ์ง ๊ณ ๋ฏผํ๋ ๊ฐ๋ฐ์์๊ฒ ์ ์ฉํ ์ฐธ๊ณ ์๋ฃ์ ๋๋ค. AI์ ํจ๊ป ์์ ํ ๋ ๋ฐ์ํ๋ ์ธ์ ๊ฐ ๋งฅ๋ฝ ์ ์ค ๋ฌธ์ ๋ฅผ ์ค์ ํ์ฅ ๊ฒฝํ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฃฌ๋ค๋ ์ ์ด ์ธ์์ ์ ๋๋ค.
-
C# 14์ ์๋ก์ด `field` ํค์๋ ์์ ์ ๋ณต
C# 14(.NET 10 / VS2026)์ ์๋กญ๊ฒ ์ถ๊ฐ๋ `field` ํค์๋๋ฅผ ์๊ฐํ๋ ๊ธ์ ๋๋ค. ๊ธฐ์กด์๋ ํ๋กํผํฐ ์ ๊ทผ์์ ์ปค์คํ ๋ก์ง์ ๋ฃ์ผ๋ ค๋ฉด ๋ณ๋์ backing field๋ฅผ ์ง์ ์ ์ธํด์ผ ํ๋๋ฐ, ์ด์ `field` ํ ํฐ์ ์ฐ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ์์ฑํ backing field์ ๋ฐ๋ก ์ ๊ทผํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด `set { field = value.Trim(); }` ์ฒ๋ผ getter/setter ์์์ `field`๋ง ์ฐ๋ฉด ๋๋ ์ฝ๋๊ฐ ํจ์ฌ ๊ฐ๊ฒฐํด์ง๋๋ค. ์๋ ํ๋กํผํฐ์ ํธ๋ฆฌํจ๊ณผ ์๋ ํ๋กํผํฐ์ ์ ์ฐํจ์ ๋์์ ๋๋ฆด ์ ์๋ ์ค์ฉ์ ์ธ ๊ธฐ๋ฅ์ ๋๋ค. ์ฃผ๋์ด ๊ฐ๋ฐ์๋ผ๋ฉด ํ๋กํผํฐ๋ฅผ ์์ฃผ ์ฐ๋ ๋งํผ ๊ผญ ์์๋๋ฉด ์ข์ ๋ณํ์ ๋๋ค.
-
dateutil vs DateTimeOffset: ํ์์คํฌํ 100๋ง ๊ฐ ํ์ฑ ์ฑ๋ฅ ๋น๊ต โ 19๋ฐฐ ์ฐจ์ด
Python์ `dateutil.parser.parse`์ C#์ `DateTimeOffset.TryParseExact`๋ฅผ ํ์์คํฌํ 100๋ง ๊ฑด ์ฒ๋ฆฌ ๊ธฐ์ค์ผ๋ก ์ง์ ๋ฒค์น๋งํฌํ ๊ฒฐ๊ณผ๋ฅผ ๊ณต์ ํ๋ ๊ธ์ ๋๋ค. `dateutil`์ ํ์์ ์๋์ผ๋ก ์ถ๋ก ํ๋ ML ๋ฐฉ์์ ํ ํฌ๋์ด์ ๋ฅผ ์ฌ์ฉํด ํธ๋ฆฌํ์ง๋ง, `DateTimeOffset.TryParseExact`๋ ๋ฏธ๋ฆฌ ์๊ณ ์๋ ํ์์ ๋ํด ์ปดํ์ผ๋ lookup ํ ์ด๋ธ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ฌด๋ ค 19๋ฐฐ ๋น ๋ฅธ ์๋๋ฅผ ๋ณด์ฌ์คฌ์ต๋๋ค. ๋๋์ ๋ก๊ทธ๋ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์๋น์ค๋ผ๋ฉด ๋ ์ง ํ์ฑ ๋ฐฉ์ ํ๋๊ฐ ์ ์ฒด ์ฑ๋ฅ์ ํฐ ์ํฅ์ ์ค ์ ์๋ค๋ ์ ์ ์ค์ ์์น๋ก ํ์ธํ ์ ์์ต๋๋ค. ํ์์ด ๊ณ ์ ๋์ด ์๋ค๋ฉด `TryParseExact`๋ฅผ ์ฐ๋ ์ต๊ด์ ๋ค์ด๋ ๊ฒ ์ข๊ฒ ์ต๋๋ค.
-
๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ฆด ์ ์๋ EF Core์ฉ audit log ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์ ๋ง๋ค๊ธฐ
๋น์ฆ๋์ค ์ฑ์ ๋ช ๊ฐ ๋ง๋ค๋ค ๋ณด๋ฉด audit log(๋ณ๊ฒฝ ์ด๋ ฅ ๊ธฐ๋ก)๋ฅผ ๋ฐ๋ณตํด์ ๊ตฌํํ๊ฒ ๋๋ค๋ ๊ฒฝํ์์ ์ถ๋ฐํ ์คํ์์ค ํ๋ก์ ํธ ์๊ฐ ๊ธ์ ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํต์ฌ์ ๋จ์ํ ๊ธฐ๋ก์ ๊ทธ์น์ง ์๊ณ , ํน์ ๋ณ๊ฒฝ์ ์ค์ ๋ก ๋๋๋ฆฌ๋(undo) ๊ธฐ๋ฅ๊น์ง ์ง์ํ๋ค๋ ์ ์ ๋๋ค. EF Core์ ๋ณ๊ฒฝ ์ถ์ (change tracking) ๊ธฐ๋ฅ์ ํ์ฉํด ์ํฐํฐ ์์ ์ ํ ์ํ๋ฅผ ์ ์ฅํ๊ณ , ํ์ ์ ์ด์ ์ํ๋ก ๋ณต์ํ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค. ๊ณตํต ๊ธฐ๋ฅ์์๋ ๋งค๋ฒ ์๋ก ์ง์ผ ํ๋ ๋ถํธํจ์ ํด์ํ๋ ค๋ ์๋๋ก, EF Core๋ฅผ ์ฐ๋ ํ๋ก์ ํธ๋ผ๋ฉด ๋์ ์ ๊ฒํ ํด๋ณผ ๋งํฉ๋๋ค.
-
๋๊ท๋ชจ PDF ํ
์คํธ ์ถ์ถ ์ฑ๋ฅ ๋น๊ต: pypdf vs PdfPig โ ์ต๋ 6๋ฐฐ ์ฐจ์ด
Python์ PDF ํ์ pypdf์ C# ๋๋ฑ ๊ตฌํ์ฒด์ธ PdfPig๋ฅผ ๋๊ท๋ชจ ํ ์คํธ ์ถ์ถ ์๋๋ก ๋น๊ตํ ๊ธ์ ๋๋ค. ๋์ผํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ ๋ PdfPig(C#)๊ฐ 4~6๋ฐฐ ๋ ๋น ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ ๋๋ค. Python์ ๋ชจ๋ ๋ฐ์ดํธ๊ฐ CPython ์ธํฐํ๋ฆฌํฐ๋ฅผ ๊ฑฐ์น๋ ๋ฐ๋ฉด, C#์ ์ปดํ์ผ๋ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์คํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. PDF ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถ ์ค์ด๊ฑฐ๋ Python ๊ธฐ๋ฐ ์์คํ ์ .NET์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ ๊ฒํ ์ค์ธ ํ์๊ฒ ์ค์ง์ ์ธ ๊ทผ๊ฑฐ ์๋ฃ๊ฐ ๋ ์ ์์ต๋๋ค. ๊ฐ์ ๋ก์ง์ด๋ผ๋ ์ธ์ด ์ ํ์ด ์ฒ๋ฆฌ ์๋์ ์ผ๋ง๋ ํฐ ์ํฅ์ ๋ฏธ์น๋์ง๋ฅผ ์ ๋ณด์ฌ์ฃผ๋ ์ฌ๋ก์ ๋๋ค.
-
ardalis/CleanArchitecture โ ASP.NET Core 10 ์ง์ Clean Architecture ์๋ฃจ์
ํ
ํ๋ฆฟ (18,000+ โ
)
GitHub์์ 18,000๊ฐ ์ด์์ ์คํ๋ฅผ ๋ฐ์ ardalis์ Clean Architecture ์๋ฃจ์ ํ ํ๋ฆฟ์ด ASP.NET Core 10 ๋ฒ์ ์ ์ง์ํฉ๋๋ค. DDD(Domain-Driven Design) ์์น์ ๊ธฐ๋ฐํด ๋๋ฉ์ธ, ์ ํ๋ฆฌ์ผ์ด์ , ์ธํ๋ผ, UI ๋ ์ด์ด๊ฐ ๋ช ํํ๊ฒ ๋ถ๋ฆฌ๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ฒ์ฆ๋ ์ํคํ ์ฒ ํจํด์ด ๋ฏธ๋ฆฌ ์ธํ ๋์ด ์์ด ํ ๊ท๋ชจ์ ๊ด๊ณ์์ด ์ ์ง๋ณด์ํ๊ธฐ ์ข์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋น ๋ฅด๊ฒ ์์ํ ์ ์์ต๋๋ค. ์๋ก์ด ASP.NET Core ํ๋ก์ ํธ๋ฅผ ์์ํ๊ฑฐ๋ ๊ธฐ์กด ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ๊ณ ์ ํ๋ ํ์๊ฒ ํ๋ฅญํ ์ถ๋ฐ์ ์ด ๋ฉ๋๋ค. Hacktoberfest๋ ์ง์ํ๊ณ ์์ด ์คํ์์ค ๊ธฐ์ฌ๋ฅผ ์ํ๋ ๊ฐ๋ฐ์์๊ฒ๋ ์ข์ ๊ธฐํ์ ๋๋ค.
-
.NET MAUI Android ์ฑ์ Material 3 ๋์์ธ ์ ์ฉํ๊ธฐ
Microsoft๊ฐ .NET MAUI Android ์ฑ์ Material 3(Material You) ๊ณต์ ์ง์์ ์ถ๊ฐํ์ต๋๋ค. Material 3๋ Android์ ์ต์ ๋์์ธ ์ธ์ด๋ก, ์ฌ์ฉ์ ๋ง์ถคํ ์์ ํ ๋ง์ ์ธ๋ จ๋ UI ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ณต์ .NET ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์๋ Material 3๋ฅผ ํ์ฑํํ๋ ๋ฐฉ๋ฒ, ํ์ฌ ์ ์ฉ ๊ฐ๋ฅํ ๋ณ๊ฒฝ ์ฌํญ, ์์ผ๋ก ์ถ๊ฐ๋ ๊ธฐ๋ฅ๋ค์ ๋จ๊ณ๋ณ๋ก ์๋ดํฉ๋๋ค. ๊ธฐ์กด MAUI ํ๋ก์ ํธ์๋ ๋น๊ต์ ์ฝ๊ฒ ์ ์ฉํ ์ ์์ด ์ค๋ฌด Android ์ฑ ๊ฐ๋ฐ์์๊ฒ ์ฆ์ ํ์ฉ ๊ฐ๋ฅํ ์ ๋ฐ์ดํธ์ ๋๋ค. ์ต์ Android ๋์์ธ ํธ๋ ๋๋ฅผ ๋ฐ๋ผ๊ฐ๊ณ ์ถ์ ๊ฐ๋ฐ์๋ผ๋ฉด ๊ผญ ํ์ธํด๋ณด์ธ์.
-
.NET ๊ฐ๋ฐ์๋ฅผ ์ํ GitHub Copilot ํ์ฉ ๊ฐ์ด๋
Microsoft .NET ๊ณต์ ๋ธ๋ก๊ทธ์์ .NET ๊ฐ๋ฐ์๊ฐ GitHub Copilot์ ๋ ์ค๋งํธํ๊ฒ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ์ต๋๋ค. Visual Studio์ VS Code์์์ ํตํฉ ํ์ฉ๋ฒ๋ถํฐ GitHub Copilot CLI ์ฌ์ฉ ํ๊น์ง ๋ค์ํ ๋ด์ฉ์ ๋ด๊ณ ์์ต๋๋ค. ASP.NET Core ํ๋ก์ ํธ์์ AI ์ฝ๋ ์ด์์คํดํธ๋ก ๋ฐ๋ณต ์์ ์ ์ค์ด๊ณ ์์ฐ์ฑ์ ๋์ด๋ ์ค์ง์ ์ธ ์์๋ค๋ ํฌํจ๋์ด ์์ต๋๋ค. Copilot์ ์ฒ์ ์ ํ๋ .NET ๊ฐ๋ฐ์๋ผ๋ฉด ์ฝ๊ฒ ๋ฐ๋ผํ ์ ์๋ ์ ๋ฌธ ๊ฐ์ด๋๋ก ์์์ด ์์ต๋๋ค. AI ๊ธฐ๋ฐ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ผ์ ์ํฌํ๋ก์ ๋ น์ฌ๋ด๊ณ ์ถ๋ค๋ฉด ์ฐธ๊ณ ํด๋ณผ ๋งํฉ๋๋ค.
-
ArrayPool๋ก ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์ด 10๋ง ์ ํธ์ง ๊ฑฐ๋ฆฌ(Edit Distance) ๊ณ์ฐ โ 14์ด โ 200ms
Python์ textdistance ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ .NET์ ArrayPool ๊ธฐ๋ฐ ๊ตฌํ์ ๋น๊ตํ ์ฑ๋ฅ ๋ฒค์น๋งํฌ์ ๋๋ค. Python์ ๋ฌธ์์ด ์๋ง๋ค O(mรn) ํฌ๊ธฐ์ ํ๋ ฌ์ ์๋ก ํ ๋นํ๊ธฐ ๋๋ฌธ์ 10๋ง ์ ์ฒ๋ฆฌ์ 14์ด๊ฐ ์์๋ฉ๋๋ค. .NET์์๋ ArrayPool๋ก ํ ํ๋๋ฅผ ๋ฏธ๋ฆฌ ํ ๋นํ ๋ค ๋ชจ๋ ํธ์ถ์์ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ ์์ ์ 200ms ๋ฏธ๋ง์ ๋๋ผ ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์ฒด๊ฐ ๋ณ๋ชฉ์ธ ์๋๋ฆฌ์ค์์ ArrayPool์ด ์ผ๋ง๋ ๊ฐ๋ ฅํ์ง๋ฅผ ์์น๋ก ์ฆ๋ช ํ ์ฌ๋ก์ ๋๋ค. ํ ์คํธ ์ ์ฌ๋ ๊ฒ์ฌ๋ ํผ์ง ๋งค์นญ ๊ธฐ๋ฅ์ ๊ตฌํ ์ค์ธ .NET ๊ฐ๋ฐ์๋ผ๋ฉด ๊ผญ ์ฐธ๊ณ ํด๋ณผ ๋งํ ์ต์ ํ ํจํด์ ๋๋ค.