분류 전체보기 썸네일형 리스트형 CTE 일반적으로 Group은 재귀적으로 참조하는 형태입니다.(Group.ParentGroupId = Group.Id 형태) 이에 데이터 조회시 반복처리를 해야 하는 형태가 발생함으로 이를 쉽게 처리할 수 있는 방법은 없을까요?해답은 MSSQL 2005 이후 버전에서 지원하는 CTE(Common Table Expression) 입니다. Anchor set을 설정하고, 이를 재귀적으로 순환하며 참조하게 하는 SQL를 작성할 수 있습니다. Example WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS ( -- Anchor SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel FROM dbo.MyEm.. 더보기 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의 사용법은.. 더보기 log4net MS Enterprise library (EntLib)를 사용하기 싫어서, log4net을 쓰려고 열심히 찾아보고 테스트해 보았는데 지속적으로 Exception 이 발생하는 현상이 발생하였습니다. 확인 결과, 예상치 못한 포인트에서 문제를 일으켰는데... 원인은 .Net 4.5 였습니다. 공식적으로 log4net은 4.0까지 지원합니다. 4.5에서도 실행은 할 수 있으나 이러한 내용 때문에 .config 파일의 아래 설정에 의해서 실행할 수 없게 됩니다. Test 때는 위의 설정을 빼서 실행되는 것을 확인했으나, 불안요소라서 제품에 적용할 수는 없겠네요. 검토 결과 어떤 logger가 가장 우수하냐는 건 개발자들 사이에서 진부한 논쟁거리인 것 같습니다. EntLib는 MS의 지원이 가장 큰 무기인데 상대.. 더보기 Create table with sequence.nextval in oracle Oracle에 대한 경험은 거의 없는데. MSSQL DB instance 의 clone을 Oracle에 만들어야 하는 경우가 발생했습니다. 편의를 위해서 IDENTITY() 설정을 하고 싶어서 찾아봤더니 12c 이후에 MSSQL과 유사한 형태의 지원이 가능하네요. 하필 11g를 돌리고 있어서 최신 기술을 쓰지 못하는 상황이 매우! 안타깝습니다... 11g 이전의 방식은 이러한 case에 대한 직접적인 방법이 없어서, Insert trigger를 이용하여 IDENTITY column value가 없는 경우 자동으로 sequence.NextVal 을 가져다 사용하는 형태입니다. CREATE OR REPLACE TRIGGER my_trigger BEFORE INSERT ON qname FOR EACH ROW .. 더보기 주민등록번호 관리. 공공 project를 진행하면서 여러가지로 실망을 많이 하게됩니다.이 카테고리에 글이 많이 올라가질 않길 바랍니다. 주민등록번호를 보호하기 위해서 만든 아이핀.이 또한 문제가 엄청 많은 것 같네요.사이트에 ActiveX가 덕지덕지 붙은 것 하며... 관련하여, '그것은 알기 싫다' 를 들어 보기를 권장합니다. (1:22.48) 일본의 경우는 '주민등록번호' 와 같은 관리 번호는 존재하지 않는다고 합니다.관리상의 어려움으로 정부에서는 '유사관리 번호' 를 도입하려했으나 '한국' 이 레퍼런스가 되어서 시행되지 못했다고 합니다... References그것은 알기 싫다(95화): http://xsfm.co.kr/wp/?p=135아이핀: https://mirror.enha.kr/wiki/i-PIN마이핀: http.. 더보기 Encrypt specific Table.column 주민등록번호의 저장을 지양하고 있고, 저장을 하더라도 암호화 하도록 권고하고 있습니다. 그럼에도 불구하고 legacy system에서 주민등록번호가 반드시 필요한 경우가 있기 때문에... 주민등록번호를 저장해야 하는 경우가 많습니다... (어쩌라고...) 그 외에도 민감한 정보를 감추기 위해서 Db에 값을 저장할 때, 암호화 하여 저장해야 할 필요가 있습니다. Db자체적으로 암호화를 하거나, Code에서 할 수 있는데, Db에서 처리함으로써 취할 수 있는 장점은 다음과 같습니다. 1. batch 처리 시에 business logic을 경유할 필요가 없음. (DB2DB 작업의 단순화) 2. 복수의 Application에서 암호/복호화 로직을 적용할 필요가 없음. 다만, ARIA, SEED 알고리즘의 적용은.. 더보기 TDE (Transparent Data Encryption) Database의 보안을 위한 첫 단계. TDE는 물리적인 미디어를 도난 당한 경우를 대비하기 위한 설정입니다. TDE는 그 말 그대로 투명한 암호화이므로, 설정 이후로는 특별한 작업을 할 필요가 없습니다.등록 및 조회 등을 위한 쿼리에 변경 사항이 없습니다. 즉, 개발자들은 신경쓰지 않고 개발할 수 있습니다. :) 적용방법 1. Master key 생성 // @master DB 2. Certificate 생성 // using master key 3. Database encryption key 생성 4. Turn on TDE Db의 properties > Options > State > Encryption Enabled: True SQL 괄호로 묶은 부분을 치환하여 실행하면 됩니다. USE master .. 더보기 이전 1 2 3 4 5 6 7 8 ··· 10 다음