선언적 코드를 사용한 ASP.NET Web API 데이터 검사
일반적으로 선언적(declarative) 코드는 명령형 코드에 비헤 가독성이 높고 테스트하기 쉬우며 코드의 양도 더 적습니다. System.ComponentModel.DataAnnotations 네임스페이스는 데이터를 검사하는 ValidationAttribute 하위 특성(attributes) 집합을 제공하며 이 특성들을 사용하면 데이터의 유효성을...
일반적으로 선언적(declarative) 코드는 명령형 코드에 비헤 가독성이 높고 테스트하기 쉬우며 코드의 양도 더 적습니다. System.ComponentModel.DataAnnotations 네임스페이스는 데이터를 검사하는 ValidationAttribute 하위 특성(attributes) 집합을 제공하며 이 특성들을 사용하면 데이터의 유효성을...
일반적으로 선언적(declarative) 코드는 명령형 코드에 비헤 가독성이 높고 테스트하기 쉬우며 코드의 양도 더 적습니다. System.ComponentModel.DataAnnotations 네임스페이스는 데이터를 검사하는 ValidationAttribute 하위 특성(attributes) 집합을 제공하며 이 특성들을 사용하면 데이터의 유효성을...
시작하기 어쩌다보니 당찮게도 모바일 서비스 스타트업에 CTO(라고 쓰고 ‘기술 잡부’라고 읽는다) 타이틀로 합류한지 몇 달 되었습니다. 그런데 함정은 제가 합류 당시 모바일 개발 경험이 전혀 없었다는 것입니다. 모바일...
시작하기 지난 포스트에서 함수의 강한 참조를 사용하는 메신저 구현 방법과 이 방법을 사용할 때 변수에 저장되지 않는 개체가 가비지 컬렉션에서 생존하게 되는 현상을 살펴봤습니다. 이러한 현상이 항상 문제라고...
Mark and Sweep 가비지 컬렉션과 함수 기반 Mediator 패턴 – I Mark and Sweep 가비지 컬렉션과 함수 기반 Mediator 패턴 – II Mark and Sweep 가비지 컬렉션과 함수...
예제 코드가 약간의 오해의 소지를 가지고 있어 조금 수정했습니다. – 2014년 6월 29일 - 요즘 가장 뜨거운 관심을 받고있는 프로그래밍 언어인 JavaScript는 정보 보호(또는 은닉, information hiding)를 언어...
어제 집에서 빈둥거리던 중 Why Functional Programming in Java is Dangerous란 제목의 글을 읽었습니다. 이글은 다음과 같은 Clojure 코드를 Java로 구현하면 OutOfMemeryError 혹은 StackOverflowError의 재앙이 닥칠 것이라 경고하고 있습니다....
어제(2014년 6월 16일) 추가된 Java 코드가 공정하지 못했습니다. 예상보다 Java 코드가 느려서 검토해본 결과, 기존의 C++, C#, Node.js는 모두 rand() 네이티브 함수를 사용해 난수를 만들었기 때문에 난수 도메인의...
단위 테스트 만큼이나 통합 테스트는 필요하며 통합 테스트에 있어서도 자동화는 중요합니다. 단위 테스트를 통과한 모듈도 서로 조합되면 운영 환경에서 오류를 발생시킬 가능성이 존재하며 다양한 이유로 인해 단위 테스트가...
다중 계층 아키텍처는 관심사 분리(SoC, Separation of Concerns) 원칙 구현의 하나로, 각 계층은 전체 프로세스 흐름 중 담당하는 작업에만 집중하여 프로그램 코드의 복잡도를 낮출 수 있습니다. 하지만 계층간...
5/15/2014 추가 Microsoft ASP.NET Identity EntityFramework 패키지가 2.0.1 버전으로 업데이트 되었습니다. IdentityUser 클래스에 이메일 주소가 포함되었고 UserValidator 클래스를 사용해 이메일 주소 중복 여부를 검사할 수 있습니다. 사용자 모델...
현재 ASP.NET 웹 응용프로그램은 기본적으로 확장자가 json인 파일에 대한 MIME 맵이 설정되어있지 않습니다. 그래서 브라우저에서 JSON 정적 컨텐트에 접근하려하면 404.3 상태가 반환됩니다. HTTP Error 404.3 - Not Found The...
Introduction to IoC Container Dependency Injection 등의 IoC Container는 현대적 소프트웨어 설계에 아주 중요한 요소입니다. TDD, BDD를 비롯한 단위 테스트를 기반으로한 개발 프로세스는 IoC Container 없이 상상하기 힘들며...
Introduction to TPL 지난 주 회사 팀에서 발표한 TPL(Task Parallel Library) 소개 세미나 자료입니다. Future 디자인 패턴, Thread와 Task의 차이, 비동기(IAsyncResult) Task, PLINQ(Parallel LINQ) 등을 간략히 설명합니다. 슬라이드 원본...
개요 Apache Thrift는 Facebook에서 개발되어 Apache에서 오픈 소스화된 통신 프레임워크로 다양한 프로그래밍 언어로 개발된 구성요소 사이의 인터페이스를 제공하는 역할을 합니다. 며칠 전 회사 팀에서 Thrift를 위한 .NET 클라이언트 라이브러리인 Thrift#에...
개요 얼마 전 Justin Yoo님의 논리 연산자와 이진 연산자의 차이에 대한 블로그 포스트가 그 분의 의도와는 다르게 페이스북 ‘생활코딩’ 그룹에 콜로세움(?)을 세운 사건이 있었습니다. 저는 포함되지 않아서 아쉬운...
w3techs.com은 웹 기술에 대한 조사 결과를 공유하는 사이트입니다. 이곳에서 웹 서버 개발 플랫폼의 시장 위치에 대한 보고서를 읽고 ASP.NET 개발자 입장에서 느낀점을 정리합니다. 저의 웹 개발 환경 경험은 ASP.NET...
* 작성중인 미완성의 글입니다. 개요 Passport에 Mongoose를 적용해 Node.js 응용프로그램의 사용자 인증을 구현하는 방법을 정리합니다. 인증 전략(strategy) Passport는 사용자 인증 요청을 처리하기 위해 전략(strategy)이라는 개념을 사용합니다. 인증 방법에...
지난 포스트에 이어… 지난 포스트에서 런타임에 동적으로 결정되는 속성 이름을 사용한 시퀀스 정렬과 CreateDelegate 메서드를 사용한 최적화 방법에 대해 살펴봤습니다. 정렬 작업과 더불어 Linq에서 가장 많이 사용되는 연산은...
배경 최근에 codeproject.com에서 정렬 키 속성 이름을 입려받아 동적으로 시퀀스에 OrderBy 연산을 적용하는 방법에 대한 포스트를 접했습니다. 데이터를 보여주고 분석하는 프로그램에서 동적으로 속성을 입력받는 상황은 흔히 발생합니다. 실제로 몇...
목록 JavaScript koa.js – ES6 generator 기반 Node.js 웹 응용프로그램 프레임워크 Grunt Devtools – Grunt를 위한 Chrome 개발 도구 확장 node-webkit - Chromium과 Node.js 기반의 데스크탑 응용프로그램 개발 도구...
Two-way Binding in MVVM Frameworks JSConf 2013에서 발표된 대표적인 웹 클라이언트용 MVVM(Model-View-ViewModel) 프레임워크인 Angular, Ember, Knockout의 양방향(two-way) 바인딩에 대한 비교 발표입니다. 요즘 많이 주목받는 SPA(Single-Page Application)에 빠질 수...
Promise 얼마전 JavaScript의 promise 구현에 대한 멋진 글을 읽었습니다. 마음 같아서는 당장이라도 한국어로 번역해 널리 퍼뜨리고 싶을 정도로 내용이 알차고 이해하기 쉽게 쓰여진 글이었지만 제 허접한 영어 실력이...
Entity Framework Code First를 사용해 ASP.NET 개발을 하는 과정 중 데이터베이스를 완전히 삭제하고 새로 생성하고 싶을 때가 있습니다. 이때 App_Data 폴더의 파일을 삭제하는 것만으로는 충분하지 않습니다. 이렇게만 하면...
최고의 프로그래밍 언어가 무엇이냐는 물음에 답은 못하겠지만, C#이 가장 현대적으로 발전된 언어 중 하나라는 의견에 전적으로 동의합니다. C#은 급변하는 소프트웨어 환경의 요구에 발빠르게 대응해 왔습니다. 특히 Linq는 프로그래밍...
Brackets 얼마 전 정말 별 상관없는 내용에 대해 구글링하다가 우연히 MIT 라이선스의 다중 플랫폼(Linux, OS X, Windows) 지원 웹 개발 도구 Brackets(brackets.io)를 알게 되었습니다. 최근 이래 저래 자주...