본문 바로가기

Programming

Implement controller Abstract class를 상속(inherits)하여 구현하는 예제입니다.Controller 생성자에 $controller를 전달한 뒤 아래 예제와 같은 형태로 상속이 가능합니다.$scope를 injecting하기 위해서 두 번째 param를 전달합니다.기술적으로 상속이 아니기 때문에 title을 implement라고 한 듯 하네요. :)이를 이용하면 duplicate code between controllers 상황을 해결할 수 있습니다. 'use strict'; angular.module('Diary') // base controller containing common functions for add/edit controllers .controller('Diary.BaseAddEditControll.. 더보기
MyBatis.Net pass value to using SQL's In clause Foreach element 사용 일반적인 방법으로는 MyBatis 자체적 지원하는 기능을 사용하는 것입니다. Example (.Net, Java platform 간 차이가 있을 수 있음) SELECT * FROM POST P WHERE ID in #{item} Joined string 사용 Join() function을 활용하여 생성한 문자열을 인자로 전달합니다. 이를 위해서는 parameter를 ‘#’이 아닌 ‘$’로 감쌀 필요가 있습니다. (쿼리에 작은 따옴표를 붙이지 않음) Example (Javascript, SQL) var array = [1, 2, 3, 4]; var joined = array.join(); UPDATE TABLE SET VALUE = #value# WHERE ID IN ($.. 더보기
How to increase max json length for ASP.Net MVC Error Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property. 파일 업로드를 angularJs의 base64 uploader를 이용했더니, 파일 용량이 크거나, 한 번에 전송하는 파일 개수가 많아지는 경우 위와 같은 오류 메시지를 받았습니다. ASP.Net MVC의 Default max json length는 100K이며, 이를 넘기는 경우 요청이 MVC API, Action 께 도달하지 않고, 500 http status code가 반환됩니다. (즉, 요청이 contro.. 더보기
ngOptions, how to use repeat object in select. Select, option tag를 이용하는 경우, select의 option의 value는 object를 설정할 수 없고, 단순 string 만 가능합니다.이 때문에, ng-model에 object를 설정하여 사용하기에 어려움이 있는데요.이는 현재 angularJs의 spec이 object를 지원하지 않기 때문입니다. 이를 해결하기 위해서는 단순 string을 바인딩 하거나,Select > ng-model, option > ng-repeat 조합을 사용하지 않고,Select > ng-model / ng-options 조합을 사용하면 됩니다. 예를 들어 선택목록의 구조가 [{Id: 1, name: ‘Male’}, {Id: 2, name: ‘Female’}] 이고, name을 display하되 ng-mod.. 더보기
TechDays2015Korea 후기 .NET 2015 TechDays 2015 Korea 행사에 잘 다녀왔습니다.궂은 날씨였지만, 행사장의 열기는 대단했습니다. 가장 인상적인 었던 점은 MS 라는 거대한 조직이 정말로 기민하게 시장에 대해서 이해하고 대응한다는 점이었습니다.Windows 10 이라는 운영체제는 디바이스를 가리지 않고 녹아들어 통합을 이뤄내고 있으며, Azure 는 VM 뿐만이 아닌 PaaS로써의 역할을 위해서 다양한 서비스들이 빠르게 릴리즈되고 있습니다.(특히, IoT와 관련한 Azure IoT Suite를 이용하면 data collector 만 직접 만들면 누구나 손쉽게 데이터를 수집하고 편하게 모니터링할 수 있었습니다.) 다만, 개발자로서 우려되는 한 가지는 현재의 ASP.NET 4 / MVC 5의 경우는 현 패러다임의 마지막 버전이 될.. 더보기
C# 코딩의 기술 -기본편- 평소 elegant 한 코드를 작성하기 위해서 고민을 많이 하는 편입니다.귀차니스트 개발자로서 코딩 한 줄 덜 하고 싶고, 잘 읽히는 코드를 쓰고 싶습니다. 동료들과 술 한잔 기울일 때는 이런 얘기들을 종종 나누기도 합니다.다만, 이러한 소통이 제한된 사람들 사이에서만 이뤄지다 보니 '우물안의 개구리'는 아닐까 하는 걱정이 늘 마음 한 켠에 있었습니다. 이 책은 다른 사람의 이야기를 들어 볼 수 있는 기회로 생각했습니다.나와 어떻게 다른 생각을 하는 지, 어떤 고급진 기술을 사용하는 지 호기심을 해결할 수 있었습니다. 책의 구성작은 사례들을 기준으로 악마와 천사의 가이드를 받는 주인공이 나옵니다.악마가 단편적인 해결책을 제시하면, 천사가 원론적인 문제 해결책을 제시하면서 각각의 작은 챕터들이 마무리 됩니.. 더보기
Export excel file via Asp.NET MVC, using OpenXml 개요 Web에서 고전적인 형태로 엑셀 파일을 내려주는 경우(Html table element 활용), 정확한 excel 파일 포맷을 준수하지 않기때문에, viewer가 이를 후 보정하여 보여주는 형태로 동작하게 됩니다. 이를 방지하기 위해서 정확하게 format을 준수하는 excel 파일을 생성하여 제공하기 위해 ExcelDocument와 ExcelResult를 정리하였습니다. 아래의 코드는 References에서 제공하는 것을 살짝 modify한 것입니다.개발하던 중 막히는 부분을 찾아보다가, 거의 그대로 유용할 수 있는 sample을 확보해서... Install Packages OpenXml SDK를 이용하기 위해서는 WindowsBase.dll이 필요하며, SDK를 손쉽게 활용하기 위하여 Simpl.. 더보기
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.. 더보기
Automatically convert viewmodel properties to camel case. .NET conversion은 Pascal case 인데 반해, Javascript 는 대체적으로 camel case이다 보니 script 작업 간 어색하게 느껴질 때가 많았습니다. 물론 기술적인 이슈가 발생하는 것은 아닙니다만,간단한 처리를 통해서 친숙한 형태의 JSON data를 만드는 방법이 있어 공유합니다. 이를 위해서는 Newtonsoft 의 Nuget 이 필요합니다. Package manager 를 통해서 다음을 설치합니다.Install-Package Newtonsoft.Json 이후 App_Start 폴더의 WebApiConfig 파일에 아래의 내용을 추가합니다. (6, 7 line) public static void Register(HttpConfiguration config) { conf.. 더보기
폴리글랏 프로그래밍 뉴욕의 프로그래머 및 '나는 프로그래머다' 팟캐스트로 유명한 임백준님 저서입니다.수백개의 컴퓨터 언어가 존재하는 지금 중요한 것은 어떤 언어들을 사용할 수 있느냐 보다, 어떤 언어를 빠르게 습득할 수 있느냐가 중요한 패러다임이다라는 이야기를 하고 있습니다.중요한 점은 그 근저에 언어의 철학이라는 점을 강조하고 있으며,그러한 철학이 출현하게 된 배경 및 창시자들의 소개는 흥미 진진합니다. 언어별 코드가 일부 출현하지만, .NET이 주력인 저로서도 별 무리없이 읽을 수 있던 것 같습니다. 또한, 저자가 하고자 하는 개념적인 내용은 대부분 서장 및 3장(스칼라)에 표현되어 있습니다.철학과 역사를 살펴보는 느낌은로 편하게, 재미있게 읽었던 것 같습니다. Linkshttp://iamprogrammer.io/htt.. 더보기