728x90 ์ ์ฒด ๊ธ185 ๐ผ๏ธ C# ์ด๋ฏธ์ง ์ฒ๋ฆฌ ์ ๋ฆฌ (Bitmap / Graphics / MemoryStream) 1๏ธโฃ ์ด๋ฏธ์ง ๋ณํ (Image → Base64)๐ ๊ฐ๋ ๐ ์ด๋ฏธ์ง ํ์ผ์ ๋ฌธ์์ด(Base64)๋ก ๋ณํํด์๋ฉ์ผ ์ ์กAPI ์ ์กHTML ์ฝ์ ํ ๋ ์ฌ์ฉ๐ก ํ๋ฆ์ด๋ฏธ์ง ํ์ผ → Bitmap → MemoryStream → byte[] → Base64 ๋ฌธ์์ด โ ์ฝ๋ using System.Drawing;using System.Drawing.Imaging;using System.IO;public string ImageToBase64(string imagePath){ Bitmap bmp = new Bitmap(imagePath); using (MemoryStream ms = new MemoryStream()) { bmp.Save(ms, ImageFormat.Png); return Convert.ToBase6.. 2026. 4. 13. SMTP๋ก ๋ฉ์ผ ๋ณด๋ด๊ธฐ (์ฒจ๋ถํ์ผ ํฌํจ) โ๏ธ 1. SMTP๋?๐ SMTPSMTP๋ ์ด๋ฉ์ผ์ ๋ณด๋ด๊ธฐ ์ํ ํต์ ๋ฐฉ์(ํ๋กํ ์ฝ)์ด๋ค.โ๏ธ 2. ๋์ ๊ตฌ์กฐ๋ด ์ฝ๋ → SMTP ์๋ฒ → ์๋๋ฐฉ ๋ฉ์ผ ์๋ฒ → ์์ ์ ๐ ๋ด๊ฐ ์ง์ ๋ฉ์ผ์ ๋ณด๋ด๋ ๊ฒ์ด ์๋๋ผ๐ SMTP ์๋ฒ๊ฐ ๋์ ์ ๋ฌํด์ค๋คโ๏ธ 3. ์ SMTP๋ฅผ ์ฌ์ฉํ ๊น?Outlook ๊ฐ์ ํ๋ก๊ทธ๋จ ์์ด ๋ฉ์ผ ์ ์ก ๊ฐ๋ฅ์๋ํ(RPA, ๋ฐฐ์น ์์ )์ ์ ํฉ์ฝ๋ ํ ๋ฒ์ผ๋ก ์ฌ๋ฌ ๋ช ์๊ฒ ์ ์ก ๊ฐ๋ฅโ๏ธ 4. SMTP ํต์ฌ ์ค์ ํญ๋ชฉ์ค๋ช ์๋ฒsmtp.gmail.comํฌํธ587๋ณด์TLS (EnableSsl = true)์ธ์ฆ๊ณ์ + ์ฑ ๋น๋ฐ๋ฒํธโ๏ธ 5. ์ ์ฒด ์ฝ๋ ์์ (์ฒจ๋ถํ์ผ ํฌํจ) using System;using System.IO;using System.Net;using System.Net.Mail;usi.. 2026. 4. 8. ๐ฆ NuGet์์ DLL ๋ค์ด๋ก๋ํด์ CheckMate์ ์ ์ฉํ๊ธฐ 1. ์ NuGet์ ์จ์ผ ํ ๊น?CheckMate์์๋ Visual Studio์ฒ๋ผ NuGet์ ์๋์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.๊ทธ๋์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ ๋ค์ด๋ก๋ํด์ DLL ํํ๋ก ๋ฃ์ด์ค์ผ ํ๋ค.๐ ์ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด NuGet ํจํค์ง(.nupkg)2. NuGet์ด๋?NuGet์ .NET ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ํจํค์ง ์ ์ฅ์๋ค.์๋ฅผ ๋ค์ด:SeleniumNewtonsoft.JsonDapperNLog๐ ๋๋ถ๋ถ์ .NET ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ๊ธฐ์ ๋ฐ์ ์ ์๋ค.3. ๋ค์ด๋ก๋ ๋ฐฉ๋ฒโ 1๏ธโฃ NuGet ์ฌ์ดํธ ์ ์https://www.nuget.org/ NuGet Gallery | HomeThe NuGet Gallery is the central package repository for NuGet, the packa.. 2026. 4. 3. ๐งฉ CheckMate์์ Selenium ์ค์ ํ๊ธฐ (์๋ฌ ํด๊ฒฐ ํฌํจ) 1. ๋ฌธ์ ์ํฉCheckMate์์ Selenium์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.WebDriver, Version=4.0.0.0 ์(๋ฅผ) ์ฐพ์ ์ ์์ต๋๋คSystem.IAsyncDisposable ๊ด๋ จ ์ค๋ฅ2. ์์ธ๋ฌธ์ ์ ํต์ฌ์ Selenium ๋ฒ์ ๊ณผ .NET ํ๊ฒฝ์ ๋ถ์ผ์น์๋ค.CheckMate๋ .NET Framework ๊ธฐ๋ฐSelenium ์ต์ ๋ฒ์ (4.x)์ .NET Core / .NET 6 ์ด์ ํ์๐ ์ฆ, ์๋ก ํธํ๋์ง ์์ํด๊ฒฐ ๋ฐฉ๋ฒโ 1. Selenium ๋ฒ์ ๋ฎ์ถ๊ธฐ๐ ๋ฐ๋์ ์๋ ๋ฒ์ ์ฌ์ฉ (์ง๊ธ checkmate ๋ฒ์ ์์ ์ต์ selenium ๋ฒ์ ์ ์ธ์ํ์ง ๋ชปํจ ใ )Selenium 3.141.0โ 2. DLL ์ ํ๋ค์ด๋ก๋ ํ ์๋ ํด๋ ์ ํnet45 (๋๋ net4.. 2026. 4. 3. ๐ Factory Class๋? ๊ฐ์ฒด ์์ฑ์ ๋์ ํด์ฃผ๋ “๊ณต์ฅ ํด๋์ค” 1๏ธโฃ ์ Factory๊ฐ ํ์ํ ๊น?์ฝ๋๋ฅผ ์ง๋ค ๋ณด๋ฉด ์ด๋ฐ ์ํฉ์ด ์์ฃผ ์๊น๋๋ค.ํ๊ฒฝ(WebView / Native / API) ์ ๋ฐ๋ผ ์คํ ๋ฐฉ์์ด ๋ค๋ฅด๋ค.ํ์ง๋ง ๋ก์ง์ ํ(์: ๋ก๊ทธ์ธ ๊ณผ์ ) ์ ๊ฐ๋ค.๋งค๋ฒ if๋ฌธ์ผ๋ก ๋ถ๊ธฐ์ํค๋ฉด ์ฝ๋๊ฐ ์ง์ ๋ถํด์ง๋ค. ๐ฉ์ด๋ด ๋ ์ ์ฉํ ๊ฒ ๋ฐ๋ก Factory Class์ ๋๋ค.2๏ธโฃ Factory Class์ ๊ฐ๋ Factory๋ ๋ง ๊ทธ๋๋ก “๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ณต์ฅ”์ ๋๋ค.์ฝ๋์์ new๋ฅผ ์ง์ ์ฐ์ง ์๊ณ , Factory๊ฐ ๋์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ค๋๋ค.๐ก ์ฆ, “๋ฌด์์ ๋ง๋ค์ง”๋ง ์๋ ค์ฃผ๋ฉด“์ด๋ป๊ฒ ๋ง๋ค์ง”๋ Factory๊ฐ ์์์ ์ฒ๋ฆฌํฉ๋๋ค.3๏ธโฃ ๊ฐ๋จํ ์์๐ฏ ๋ชฉํํ๊ฒฝ์ด WebView์ธ์ง Native์ธ์ง์ ๋ฐ๋ผ ๋ก๊ทธ์ธ ๋์์ด.. 2025. 10. 21. ๐Groovy์ Closure ์ ๋ฆฌ ๐ Closure๋ ๋ฌด์์ธ๊ฐ?Closure๋ Groovy์์ ์ ๊ณตํ๋ ์ผ๊ธ ๊ฐ์ฒด ํจ์(First-class function)๋ก,์ฝ๋ ๋ธ๋ก(์ต๋ช ํจ์)์ ๋ณ์์ ๋ด๊ฑฐ๋ ๋ค๋ฅธ ํจ์๋ก ์ ๋ฌํ ์ ์๋ ๋ฌธ๋ฒ์ ๋๋ค.์ฆ, “ํจ์๋ฅผ ๊ฐ์ฒ๋ผ ๋ค๋ฃฐ ์ ์๊ฒ ํ๋ ๊ฒ”์ด ๋ฐ๋ก Closure์ ๋๋ค.๊ธฐ๋ณธ ๋ฌธ๋ฒdef greet = { name -> return "Hello, $name" } println greet("์ํ") // Hello, ์ํ{ name -> ... } : Closure ์ ์greet("์ํ") : ๋ณ์์ฒ๋ผ ์ฌ์ฉํ๋ฉด์ ํจ์ ํธ์ถ ๊ฐ๋ฅ๐ Closure์ ํน์ง์ต๋ช ํจ์ → ์ด๋ฆ ์๋ ํจ์ ๋ธ๋ก์ ๋ณ์์ ์ ์ฅ ๊ฐ๋ฅ์ธ๋ถ ๋ณ์ ์บก์ฒ ๊ฐ๋ฅ → Closure ๋ด๋ถ์์ ์ธ๋ถ ์ค์ฝํ์ ๋ณ์ ์ฌ์ฉ ๊ฐ๋ฅ๋ฉ์๋ ์ธ์๋ก ์ ๋ฌ.. 2025. 10. 2. ์ด์ 1 2 3 4 ยทยทยท 31 ๋ค์ 728x90