본문 바로가기

Programming/.Net

ASP.NET Core & SignalR 의욕적으로 최근에 release된 ASP.NET Core 2.0 & Angular 조합하여 사용해 보려고 합니다. POC를 통해서 간단한 CRUD작업에는 아무런 문제 없는 것으로 확인했습니다.Angular에도 좀 익숙해 지고, ASP.NET Core에도 조금 익숙해 져서 괜찮겠다고 생각했죠.특히 다른 개발자들과 협업하려면 javascript라는 공통 분모를 갖춰야 할 것 같기도 하고요. 그런데 Real time communication 기능이 필요할 것 같아 SignalR을 사용을 검토해 보았더니 아직 지원하지 않네요. SignalR은 Core 2.1에서 지원할 예정이며 그 시점은 올해 4분기라고 합니다. ReleaseTime frame*2.0-preview1Q2 20172.0-preview2Q2 201.. 더보기
change file name to prevent overwrite 고전적인 형태로 게시판 기능에서 업로드한 파일명을 하나의 폴더에 관리할 때가 있습니다. 이 경우 동일한 이름의 파일이 업로드되는 것에 대한 처리를 해줘야 하는데. 이 때 간단하게 활용할 수 있는 method를 기록차원에서 남겨 둡니다. private string MakeUniqueFileName(string uploadFileName) { string path = Path.Combine(basePath, uploadFileName); var fileInfo = new FileInfo(uploadFileName); string extension = fileInfo.Extension; string fileName = fileInfo.Name.Replace(extension, string.Empty); int.. 더보기
String.Join method that ignores null or empty strings? string.Join() 메서드를 이용하면 Enumerable or params 값을 손쉽게 merge할 수 있습니다. 고전적으로 했던 것처럼, 마지막 항목에 대해서만 구분자(seperator)를 추가하지 않기 위한 별도의 로직구현이 필요치 않습니다. 다만 위 메서드는 null 을 string.Empty 로 취급하여 처리하며 string.Empty를 merge의 대상에 포함합니다. 경우에 따라서는 (=예쁘게 보여주기 위해서) null 이나 string.Empty 는 무시하고 싶을 수 있습니다. 이는 LINQ를 이용해서 간단히 구현할 수 있을 것 같습니다. public static class StringEx { public static string Join(string seperator, IEnumerab.. 더보기
ConfigurationSection을 이용한 App configuration #02 지난 달에 Configuration을 폼나게 하는 법을 알아 봤습니다. 그런데, 설정은 단순 자료형만으로는 불충분한 경우가 많습니다. 대표적으로 유사항목에 대한 Collection을 설정해야 하는 경우가 있을 수 있죠. 이러한 경우를 위해서 .net framework에서는 ConfigurationElementCollection을 제공하고 있습니다. 이는 abstract class여서 기본적으로 두 개의 method(CreateNewElement, GetElementKey)를 구현해 줍니다. 아래의 예제는 Id/Password collection을 .config 파일을 통해서 설정한다고 가정합니다. public class InterfaceConfiguration : ConfigurationSection {.. 더보기
(Workaround) return iterator with 'out' or 'ref' parameters IEnumerable 반환 메서드에서 yield return을 사용하는 것은 그리 낯설지 않습니다. 그러나 이 경우 out, ref 파라미터를 사용할 수 없다는 제약이 있는데요. 이를 피하는 방법을 찾아서 공유하고자 합니다. 활용 방안 예를 들어 특정 문서를 읽어 들여 각각의 page 개체를 반환해야 해야하는 기능이 있다고 합시다. 이 때 추가로 문서의 정보 (예, 페이지수) 등을 파악하고 싶습니다. 각각의 페이지를 반환하거나 특정 페이지를 반환하기 위해서는 문서에 접근하여 내용을 읽어들이는 행위를 해야 합니다. 이 때 발생하는 비용은 적지 않으므로 가급적 한 번 내용을 읽었을 때, 다양한 형태의 정보를 수집하는 것이 유리하겠지요, 문서의 정보를 수집하는 행위가 page를 반환하는 기능에 부수적으로 동반.. 더보기
Select object within min or max property value. 개체 collection 중에서 어떤 property or method 반환값의 최대 or 최소인 object를 찾는 방법은 어떤게 있을까? OrderBy를 통해 정령한 뒤 Take(1)을 하는 방법, 최소 or 최대값을 탐색한 뒤 그 값을 가지는 개체를 역으로 찾는 등 여러가지로 생각해 볼 수 있겠으나, 매우 깔끔한 방법을 찾아서 공유하고자 합니다. LINQ Aggregate()를 사용하는 방법입니다. 간단하나 예제 코드로 설명을 대신합니다. :) class Person { internal Person(int age, string name) { Age = age; Name = name; } public int Age { get; set; } public string Name { get; set; } p.. 더보기
ConfigurationSection을 이용한 App configuration App.config의 AppSettings를 통하여 손쉽게 configuration을 할 수 있습니다. 그렇지만 이는 일차원적인 KeyValuePair Collection 형태이다 보니 내용이 많아지면 혼돈이 찾아올 수 있습니다. 단적으로 복잡한 Hierarchy를 고려해서 key를 정의하다보면... Xml을 특성을 살려 계층적인 형태로 config를 작성할 수 있다면. 설정에서 보듯이 훨씬 직관적이고 configuration을 이해하고 수정할 수 있을 겁니다. 이를 위한 Westwind.Utilities.Configuration이라는 NuGet이 있으므로 이를 활용하면 훨씬 정돈된 setting configuration을 가져갈 수 있을 것 같습니다.최신버전 (2014-10-13) NuGet의 사용법은.. 더보기
문서변환 BYOD (bring your own device) 시대가 되다보니 mobility security 는 꽤 이슈가 됩니다. 문서를 열람하는 경우, 보편적으로 그 content의 security level과는 무관하게 mobile로 제공하려는 요구하는 것 같습니다. 당최 secret 문서를 mobile로 제공하겠다는 발상 자체을 이해하고 싶지는 않지만... 그러다보니 모든 문서는 동일한 level의 보안 절차를 거쳐서 user에게 제공하는데, 일반적으로 office, hwp 등의 문서는 pdf내지는 image로 제공하고 이 또한 download 방식이 아닌 streaming 방식으로 제공 하는 것으로 알고 있습니다. 개발자들은 문서의 유출을 (옆에서 카메라 들고 촬영하면 그만인 것을...) 막기 위해서, .. 더보기
Oracle Stored Procedure for .Net System.Data.OracleClient is Obsolete 예전 책이나 강좌에서 소개한 OracleClient assembly는 더 이상 사용하지 않는 게 나을 듯 합니다. http://msdn.microsoft.com/en-us/library/System.Data.OracleClient(v=vs.110).aspx Oracle에서 제공하는 Oracle Data Provider for .Net이 현재 가장 권장되는 방법입니다. http://www.oracle.com/technetwork/topics/dotnet/index-085163.html 이를 통해서 Stored procedure를 수행하는 방법을 정리해 봅니다. 설치 NuGet을 통해서 다운 받습니다. Install이 완료되면 해당 proje.. 더보기
[NuGet] ImageResizer Upload한 Image의 format을 변경하거나, resize, drop 등의 가공을 할 수 있는 손쉬운 방법은 어떤게 있을까? ImageResizer라는 open source가 이를 잘 지원하는 것으로 보입니다. NuGet install PM> Install-Package ImageResizer.MvcWebConfig PM> Install-Package ImageResizer.Plugins.DiskCache PM> Install-Package ImageResizer.Plugins.PrettyGifs Sample code Instance 생성 없이 대상 파일, 변환 파일, Resize Settings를 전달하는 것으로 간단하게 사용이 가능합니다. 간단한 기능을 제공하는 Free version은 GPL.. 더보기