1. WixSharp 소개 Windows Desktop 어플리케이션 배포용 설치 파일을 작성해 보신 분들은 wix toolset을 한 번 쯤 사용해 보셨을겁니다. 오픈소스에 무료로 제공되는 강력한 툴이지만 XML tag를 일일이 작성해줘야하는 번거로움이 있습니다. 특히 설치 dialog 커스터마이징을 위해서 컨트롤 하나하나의 좌표를 일일이 지정해서 배치하고 확인을 위해서는 msi 파일 생성 후 실행해 보아야만 확인이 되는 등의 불편함도 있습니다. WixSharp은 이런 불편한 XML 태그 작성을 C# 코드로 작성 할 수 있도록 해주는 아주 훌륭한 도구입니다. 특히 설치 대상 파일의 harvest를 위해 heat 커맨드 사용법과 필터 방법을 따로 배울 필요가 없이 C# Linq 를 사용해 간단하게 구현이 ..
요즘 서로다른 앱 혹은 서비스간 메세지를 주고받을때 복잡한 구조의 데이터는 대부분 JSON으로 변환해서 주로 주고 받습니다. 물론, XML을 사용하는 곳도 아직은 많을겁니다. 그래서 이 XML로 전달받은 데이터를 JSON으로 그대로 직렬화 해서 보관하거나 다른 노드로 전송해야하는 경우들이 있습니다. 이런 경우 Json.NET을 사용하면 아주 간단하게 method 호출만으로 직렬화 할 수 있습니다. string xml = @" Alan http://www.google.com Louis http://www.yahoo.com "; XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); string json = JsonConvert.SerializeXmlNode(doc..
.NET 6 부터 C# language version 10을 지원합니다. 여러 개선 사항중에 Lambda expression에 몇가지가 개선이 되었는데요, 한 번 알아보겠습니다. 원문 링크: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/lambda-expressions#explicit-return-type 1. Natural type of a lambda expression 아래와 같이 가변형 변수에 람다식을 할당하면 이전 버전에서는 에러를 뿜어내서 var 대신 Func로 타입을 명시적으로 선언해줘야 하는 불편함이 있었는데 컴파일러가 이제 조금 똑똑해져서 람다 표현식으로 부터 추론해서 리턴하는 값이 타입을 알아서..
Python을 써 본 사람들은 다들 Jupyter Notebook을 사용해 본적이 있을겁니다. Jupyter Notebook을 사용하면 단순 playground 용도로 여러가지 간단한 코드블럭을 시험해 보는 용도로 사용한다거나 직접 수정하고 실행해 볼 수 있는 튜토리얼 문서를 만드는 등 단순히 주석달린 소스코드로 보관하거나 공유하는 것보다 훨씬 유용합니다. 이제는 이 Jupyter Notebook에서 C# 코드로된 노트북을 만들 수 있는데요 현재 PC에 Anaconda/Miniconda 환경 혹은 Python가 Jupyter Notebook 그리고 .Net 개발환경이 이미 설치되어 있는 환경이라고 가정하면 아래 순서대로 커맨드라인 명령어들만 실행해주면 간단히 사용 가능합니다. 1. Microsoft.do..
C#에 HMACSHA256 클래스를 사용하면 아주 간단한 코드로 사용자 비밀번호를 암호화된 문자열로 바꿀 수 있습니다. public static class CredentialHelper { public static string GetHMACSHA256Hash(string username, string password) { var key = Encoding.ASCII.GetBytes(username); var data = Encoding.ASCII.GetBytes(password); return Convert.ToBase64String(new HMACSHA256(key).ComputeHash(data)); } } 위와같이 static class를 하나 만들어두고 사용자가 입력한 username과 passw..
주 원인은 파일 경로가 너무 길어서 발생합니다. 그래서 프로젝트 폴더명을 줄이고 좀 더 상위 폴더에 위치시키는 방법을 써서 경로명 길이를 줄여주면 되지만 불가피하게 긴 이름과 깊은 level에 폴더에 위치시켜야한다면 Windows Registry를 변경 하는 방법이 있습니다. 아래 registry 경로로 가서 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled를 1로 설정해 주면 해결 됩니다. 해당 property가 없다면 DWORD 타입으로 하나 생성해서 값을 1로 설정하면 됩니다. (리부팅 필요하지 않음)