본문 바로가기

Programming

Mobile Enterprise summit 2015 후기 Mobile Enterprise summit 2015 에 다녀왔습니다. 일시: 2015/05/13장소: 신도림 디큐브시티호텔 오후에는 모바일 플랫폼 track을 들었습니다.이런 행사에서 상업적인 부분이 없을 수는 없겠지만, 삼성은 좀 거시기...마지막의 한컴 세션은 '읍소' 전략을 보일 수도 있겠으나, 개인적으로는 꽤 인상적이었고 시장에서의 한컴의 위치를 정확하게 읽고 있다는 느낌을 받았습니다. 더보기
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.. 더보기
해커와 화가 후배의 추천으로 존재만 알고 있다가, 퇴근 길 지하철에서 독자를 보고 꽂혀서 읽게 된 책.제게는 옮긴이인 임백준씨가 더 친근합니다, 친분이 있는 건 아닙니다... :) 역자 서문에서 옮긴이가 밝히듯 보수적이고 엘리트적인 사고가 근저에 깔려 있는 인상을 많이 받았습니다.보편적으로 타당하다고 생각했던 부분들에 대해서 부정하는 내용도 많아 개발자로서 깊은 생각에 빠지게 만듭니다. 그렇지만 통념에 반하거나, 경험적인 공감이 많지 않은 내용들이 많아 사실 재미있게 읽지는 못했습니다. :( 가장 인상적이었던 부분은 종장에 언급된 내용인데...일부 발췌해 봅니다."화가가 작품을 완성하는 경우는 없다. 단지 그는 작업을 멈출 뿐이다." 이 책의 제목은 '해커와 화가' 였네요. 더보기
Entity framework timeout 서버 구성에서 DB는 단독으로 운영하는 게 안정적일텐데.Test환경이 충분하지 않아, WAS + Process + DB를 하나의 서버에 몰아 넣었더니...Entity framework에서 connection timeout오류가 났습니다. 올려둔 Process가 한 번에 8개씩 돌면, CPU full은 기본이고 memory도 간당간당할 수준이라어쩌면 충분히 예상했어야 했던 일인지도 모르겠네요. 동시에 실행할 Process 개수를 적당히 줄이는 게 모범 답안이겠지만,일단 timeout 관련한 내용을 찾아봤습니다. Default timeout value는 provider의 그것에 따릅니다. (MS-SQL, MySQL의 경우 30sec)이는 .Config 파일 및 source code 상에서 설정이 가능합니다... 더보기
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를 반환하는 기능에 부수적으로 동반.. 더보기
Web cache ASP.NET WebApi2를 처음으로 써봤습니다. 그 간결함에 '우오우오~' 이렇게 놀라게 되네요 :) 서비스 자체는 간단한데, 서버에 부하가 좀 있는 기능이라서 cache를 적용하려고 알아보다가 CacheOutput라는 Nuget을 알게되었습니다. Scott Hanselman이 극찬을 했네요 :) Server 뿐 아니라, Client 에도 cache을 적용합니다. 이는 HTTP Header에 ETag 및 Last-Modified 값을 통해서 행해집니다. Package Manager를 통해서 손쉽게 install합니다. Install -Package Startweb.CacheOutput.WebApi2 그리고 서비스의 Attribute를 다음과 같이 달아주면 끝입니다. :) [CacheOutput(Cli.. 더보기
Access message queue from windows service. Window service를 두어번 개발한 경험이 있는데...이 녀석이 구조적으로는 매우 단순함에도 불구하고 그 특성상 항상 개발이 쉽지 않았습니다. 이번에는 Window service에서 Message queue (이하 MSMQ)를 monitoring 하는 기능을 개발하게 되었습니다.그간의 경험을 바탕으로 Window service는 최소한의 code로 동작을 시키도록 작성하였습니다. 버뜨 그러나!!시작과 동시에 죽어버리는 service... 다시는 이런 일을 겪지 않으리라 다짐하면서...간단하게 window service에 대한 개발 방법을 정리하고, MSMQ 접근에 대한 issue 처리를 살펴 보겠습니다. Window Service 개발Window service를 등록하여 실행할 때, 제대로 동작하.. 더보기
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의 사용법은.. 더보기