C#
-
[.NET] List 배열을 Random 정렬하는 간단한 소스코드 예시.NET/개념 및 유용한 팁 2021. 2. 12. 11:47
개인프로젝트 진행하다가 .NET에서 코드 1줄로 랜덤 정렬 구현하는 방법을 정리할 겸 작성. using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; namespace RandomArrayTest { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); List list = new List() { 1,2,3,4,5,6,7,8,9,10 }; // 랜덤으로 정렬시킬 List (어떤 유형이건 상관없음) list.Sort((a, b) => new Random().NextDouble() >= 0.5? 1 : -1); /..
-
[.NET] 상업 목적에서도 무료로 사용할 수 있는 엑셀(Excel) 편집 라이브러리 ClosedXML 소개. (feat. EPPlus 사용시 주의사항).NET/유용한 라이브러리 2021. 1. 28. 23:23
.NET에서 엑셀을 다룰 때 주로 어떤 라이브러리를 쓰는가? Interop? EPPlus? Interop은 과거에 설정에 애먹었던 기억이 있으며, Excel이 설치되어있는 환경에서만 사용가능했던 것으로 기억하고 있다. (옛날 기억이다. 지금은 잘 모르겠다.) EPPlus는 훌륭한 라이브러리이지만 비상업목적으로 사용했을때만 무료이다. 상업적 목적으로 사용하려면 돈 내고 라이선스를 사도록 하자. 비용은 2021.01 기준 연간 1인당 최대 299 USD 라고 한다. (만약 사용중인 EPPlus가 4버전 이하이고, 해당 라이브러리를 직접 수정한 것이 아닌, 원본소스를 이용했다면 LGPL 라이선스 정책에 따라 고소는 면할 수 있다. 그런데 EPPlus를 자체적으로 수정했다면 소스코드에 대한 공개의무가 있다.) ..
-
[ASP.NET Core] "An error occurred while starting the application." 떴을 때 상세 오류 확인방법.NET/개념 및 유용한 팁 2021. 1. 9. 11:28
ASP.NET Core 기반 웹서비스를 개발한 후, IIS에 올려 정식서비스 오픈을 준비중이었다. 그런데 Kestrel 과 개발PC 내 IIS 에선 정상동작하던 웹 서비스가 실제 구축할 서버에서는 아래와 같은 메시지가 떴다. "An error occurred while starting the application." Dotnet core 호스팅 번들을 다시설치해보고, 서버도 껐다 켜보고, Core SDK도 설치해봤지만 해결되지 않던 중 stackoverflow에서 아래와 같은 방법을 통해 원인을 찾아보는 방법을 알게되었다. 총 2가지를 수정해야 한다. Program.cs public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateD..
-
[Async/Await] Invoke보다 간편하게 UI 접근하기.NET/개념 및 유용한 팁 2019. 12. 19. 23:46
비동기 프로그래밍(async, await)에 대한 올바른 사용법에 대한 문서가 있습니다. https://ddochea.tistory.com/212 를 참조해주세요. 2015년도에 작성했던 포스트 "2015/01/11 - [C#] - [Invoke & BeginInvoke] 1. 다른 Thread 에서 UI 접근하기 (1)" 가 현재까지도 부동의 1순위를 기록하고 있다. 일간 방문자수의 절반이상이 해당 포스트 관련 접근이다. 멱살잡고 캐리중 그런데 좀 찝찝하다. 2012년쯤? 부터 .NET 4.5 및 C# 5.0가 발표되면서 async, await가 소개되었었고, 2015년에 Invoke & BeginInvoke 다루는 나도 참 늦게배운다 생각했는데, 2020년이 오는 중에도 Invoke와 BeginInv..
-
[UiPath] C#.NET <-> VB.NET 코드 컨버팅 사이트UiPath RPA/Tips 2019. 12. 8. 17:46
UiPath 를 다루면서 불편했던 점은 변수값을 초기화하거나, Invoke Code를 통해 소스를 작성할 때 비주얼베이직(Visual Basic)으로 작성하는 점입니다. 물론 VB 출신개발자거나 VB에 익숙하시면 문제되진 않지만, C# 으로 .NET을 다루던 개발자는 욕나오는 상황이 아닐 수 없습니다. 19.10 버전 이후로 C#도 지원한다고 하지만 변수 선언 시 기본값 초기화생성은 여전히 VB 방식이며, 구버전으로 운영되는 곳은 VB를 사용해야 합니다. C#을 사용할 수 없을때, 아래 사이트를 이용해보세요. http://converter.telerik.com/ Code Converter C# to VB and VB to C# – Telerik Copyright © 2019, Progress Softwa..
-
[WCF] 3. 이중계약으로 콜백기능 구현하기.NET/개념 및 유용한 팁 2015. 4. 5. 16:35
WCF는 .NET Core 및 새로운 .NET 에서 소개하는 gRPC로 대체되었습니다. 유지보수 외 신규 개발에선 추천하지 않습니다. 참조 : https://docs.microsoft.com/ko-kr/aspnet/core/grpc/why-migrate-wcf-to-dotnet-grpc?view=aspnetcore-5.0#grpc-as-a-migration-path-for-wcf-to-net-core-and-net-5 HelloWorld 예제에선 WCF 클라이언트가 계약으로 구성된 서비스 클라이언트 객체를 통해 서비스를 호출함으로서 WCF 기능을 사용하였다. 그렇다면 반대로 서비스에서 브로드캐스팅 목적으로 클라이언트에게 전파해야 할 필요성이 있을땐 어떻게 해야할까? WCF 시스템 바인딩에서는 이를 해결하..
-
[WCF] 1. Helloworld.NET/개념 및 유용한 팁 2015. 2. 18. 20:50
WCF는 .NET Core 및 새로운 .NET 에서 소개하는 gRPC로 대체되었습니다. 유지보수 외 신규 개발에선 추천하지 않습니다. 참조 : https://docs.microsoft.com/ko-kr/aspnet/core/grpc/why-migrate-wcf-to-dotnet-grpc?view=aspnetcore-5.0#grpc-as-a-migration-path-for-wcf-to-net-core-and-net-5 WCF 학습을 위해 작성한 소스이다. 콘솔 프로젝트에서 작성하였다. (해당 소스를 실행하기위해선 Visual Studio가 관리자모드로 실행되어야 한다. 완성된 프로그램이 관리자권한을 요청할 수 있도록 제작하려면 app.manifest를 프로젝트에 추가하여 파일 내용중 requestedEx..
-
[ADO.NET] DSN없이 ODBC 연결로 DB에 대한 Table 정보 가져오기.NET/개념 및 유용한 팁 2015. 2. 7. 22:27
ADO.NET 및 ODBC를 이용한 전통적인 쿼리 연동 방식은 더 이상 선호되지 않습니다. EntityFramework 또는 Dapper를 이용한 ORM 방식의 DB연동을 사용해보세요. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using System.Data.Odbc; namespace DynamicDBread { class Program { /// /// DB가 구축된 서버의 IP /// static string IP = "localhost"; /// /// DB 드라이버명 'odbc 데..