선언적 코드를 사용한 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 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...
지난 포스트에 이어… 지난 포스트에서 런타임에 동적으로 결정되는 속성 이름을 사용한 시퀀스 정렬과 CreateDelegate 메서드를 사용한 최적화 방법에 대해 살펴봤습니다. 정렬 작업과 더불어 Linq에서 가장 많이 사용되는 연산은...
목록 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 구현에 대한 멋진 글을 읽었습니다. 마음 같아서는 당장이라도 한국어로 번역해 널리 퍼뜨리고 싶을 정도로 내용이 알차고 이해하기 쉽게 쓰여진 글이었지만 제 허접한 영어 실력이...
Brackets 얼마 전 정말 별 상관없는 내용에 대해 구글링하다가 우연히 MIT 라이선스의 다중 플랫폼(Linux, OS X, Windows) 지원 웹 개발 도구 Brackets(brackets.io)를 알게 되었습니다. 최근 이래 저래 자주...
개발 도구로 Sublime Text를 사용한다면 빌드 시스템을 작성해서 코드를 빌드 할 수 있습니다. Grunt를 사용하여 Node.js 응용프로그램을 개발할 때에도 Sublime Text에 빌드 시스템을 등록하면 편리합니다. 이 포스트는 Sublime Text...
JSHint란 MyClass.prototype.myMethod = function() { return 42; } // No semicolon here. (function() { // Some initialization code wrapped in a function to create a scope for locals....
공식 튜토리얼을 따라하며 재밌게 AngularJS를 배우고 있습니다. 3단계 예제에서 보여준 뷰 계층만을 위한 데이터 바인딩은 WPF와 Silverlight에서 많이 봐왔지만 KnockoutJS는 지원하지 않는 멋진 기능입니다. End-to-end 테스트 역시 저로서는 처음...
KnockoutJS를 통해 웹 개발에 MVVM 패턴을 적용하며 재미를 느낀 것이 그리 오래되지 않은 것 같은데 어느새 AngularJS가 웹 MVW 프레임워크 점유율 1위로 조사되었습니다. 한동안 기웃기웃 만 하다가 마침...
개요 국내에서도 다소 늦었지만 TDD가 주목 받고 있습니다. UI를 포함하는 프로그램의 경우 Coded UI Test 등의 기술이 발전되고 있지만 MVVM 디자인 패턴을 적용할 경우 UI의 많은 부분을 전통적...