웹서버를 구축할 때 직면하는 문제 중 하나가 보안에 관한 것이다.웹 프로토콜은 HTTP 와 HTTPS 가 있고 이중 HTTPS 가 보안 인증된 프로토콜이다. 번외로, SSL 은 인증 오래된 보안 인증이고 지금은 SSL 3.0을 기반으로 TLS 로 발전해서 현재는 TLS로만 사용되고 있지만 워낙 SSL이름이 유명해서 그냥 SSL이라고 부르기도 하는 거란다. SSL 보안인증을 수행하기 위해서는 웹서버에서 공인인증된 SSL 인증서를 구축해야 하나 비용과 저사양 서버를 사용할 때의 SSL 보안 동작 부하를 줄이기 위해서 Cloudflare 를 활용 할 수 있다.1. 웹 데이터 기본 흐름클라이언트 (웹브라우저) 는 브라우저에 사이트 주소를 입력하여 접속한다. 이때 사이트 이름을 도메인이라고 하고 도메인은 실제 구..
ServiceCollection 의 DI를 이용하여 클래스의 객체를 생성하고 그 객체의 클래스가 IDisposable 을 상속하여, 프로그램이 종료 또는 인스턴스가 종료될 때 Dispose 함수가 자동으로 호출되게 하기 위해서는 DI 컨테이너가 해당 서비스가 IDisposable을 구현해야 되는지를 명시적으로 등록해야 한다. 이를 위한 예제는 아래와 같다.using Microsoft.Extensions.DependencyInjection;using System;public interface ITrackedDownloadService{ void TrackDownload(string url);}public class TrackedDownloadService : ITrackedDownloadService..
1. Command 정의 및 Binding Oxyplot의 PlotController 에 원하는 이벤트에 대한 Command를 Binding 한다. 이를 위해서 어떤 데이터를 변수로 handle 할지를 정의한 Delegate를 선언한다. 그리고 원하는 이벤트에 Binding 을 한다. private PlotController BuildMainPlotcontroller() { var plotController = new PlotController(); // plotController.UnbindAll(); // Custom Command 함수를 위한 Delegate를 정의한다. HeatmapClicked = new DelegatePlotCommand((view, controller, args) => Hea..
1. 개요 Setting Service 를 구현하기 위해 사용되는 Package를 비교 분석한다. System.Configuration.ConfigurationManager 와 Microsoft.Extensions.Configuration 의 기능을 비교한다. 더보기 1. Historical Context: System.Configuration.ConfigurationManager: Part of the older .NET Framework. Commonly used to read settings from App.config for desktop apps and Web.config for ASP.NET apps. Built primarily for a world where apps had a single..
1. 개요 로깅 서비스를 통합관리하는 시스템으로 편리하게 소프트웨어 로깅을 기록하자. 2. 소개 여기에서는 .Net에서 사용할 수 있는 로깅 서비스로 NLog를 사용하려고 한다 간단한 설정에서 Dependency Injection 을 활용할 예정이다. 3. 구현하기 우선 Package 는 NLog와 NLog.Extension.Logging이 필요하다. NLog를 사용하기 위해서 Configuration 파일을 등록해야하는데 두가지 방법을 사용할 수 있다. # Configuration Config | NLog (nlog-project.org) NLog.config vs. appsettings.json 작성하는 방식의 차이일뿐 큰차이는 없다. 다만 NLog.config 를 사용할 경우에는 복잡한 layout..
버튼을 Click 한 이벤트를 ViewModel 의 Command 에 binding 하고, 이때 CommandParameter를 전달하는 방법이다. 이 때 전달하는 Parameter는 string 으로 입력을 하므로, 다른 타입으로 변환하여 전달하고 싶으면 Coverter를 정의해야한다. 간단하게 string to double converter를 구현하고 이를 CommandParameter의 내부 converter 속성에 conveter를 입력한다. 1, 2의 tag의 경우에는 CommandParameter는 string 으로만 입력할 수 있으므로, 매개변수를 string 또는 object 를 갖는 command 와 연결할 수 있다. 다른 것은 전달되는 타입만 다를뿐 값은 동일하다. 3번은 Command..
개별 view를 이용한 dialog Creating a dialog service in an MVVM application is a great way to show different types of dialogs (e.g., messaging, prompts, information windows) without directly depending on specific views from the ViewModel. This allows you to maintain separation of concerns and avoid tightly coupling the ViewModel to the UI. Here's a step-by-step guide on building a dialog service: 1. **..
1. 개요 WPF 을 개발하면 Xaml Designer 를 통해서 윈도우의 디자인을 구성하게 됩니다. 이때 프로그램 실행에는 문제가 없으나 개발을 진행하면서 어느 순간 Designer가 에러가 발생하여 Control을 제대로 렌더링하지 못하게 되는 경우가 있습니다. 일반 Runtime 에서의 디버깅은 Debug 모드에서 충분히 할 수 있지만, Desinger에서 발생하는 문제같은 경우에는 디버깅하기가 쉽지 않습니다. 이를 해결하는 방법을 알아보도록 합니다. 해당 내용은 Visual Studio 2022를 기준으로 합니다. 2. Designer 프로세스 알아보기 WPF 의 Designer는 어떻게 동작하는 걸까요? WPF Designer도 Application 실행과 비슷하게 내부적으로 'Microsoft..
1. 개요 Array 간의 데이터 타입 변환을 수행하고 성능을 비교한다. 2. 비교할 구현 코드 For loop Linq Select Array.ConvertAll [Test] public void TestConvertPerf() { PerfBenchmark bench = new PerfBenchmark("Convert Benchmark"); var intArr = RandomUtils.GenerateInt(500000); int repSize = 1000; bench.Start(); for (int i = 0; i < repSize; i++) { ToDoubleArray(intArr); bench.SaveCheckpoint(); } bench.Stop(); Console.WriteLine($"Avg, ..
영상처리를 하면서 많이 사용되는 패키지들의 차이를 알아보고 각각의 데이터 구조를 살펴보고 서로간의 데이터 전환을 하는 방법을 정리한다. OpenCV 그동안 제일 익숙한 패키지이다. OpenCV는 기본 적으로 BGR 채널을 사용한다. 내부적으로 Numpy 를 기반으로 데이터 접근이 가능하다. import cv2 from PIL import Image # Load an image with OpenCV image_cv = cv2.imread('path_to_your_image.jpg') # replace with your image path # Convert from BGR to RGB image_cv = cv2.cvtColor(image_cv, cv2.COLOR_BGR2RGB) # Convert to a P..