๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
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.
728x90