본문 바로가기

Programing

(392)
[NUnit] 닷넷 환경의 테스트 주도 개발 Visual Studio 2008 환경을 사용하고 있다.닷넷에는 [테스트] 메뉴가 존재하지만 써 보았는데 JUnit+이클립스 같이 깔끔하게 돌아가는 환경은 아니다. 테스트를 할 때마다 생기는 로그 파일이 뭔가 부담스럽다. 그래서 NUnit이라는 오픈소스프로젝트를 사용하는데 많이 이용하는 것 같다.NUnit은 아래와 같은 GUI Runner를 제공한다. 하지만 이클립스 처럼 IDE 환경 내에서 바로 돌아가지 않아서 Visual Studio 따로 NUnit 따로 창을 두 개를 띄워서 개발을 해야 하니 뭔가 개발~테스트가 분리되어 있는 느낌이다. NHibernate를 검토하다 보니 비주얼 스튜디오에 플러그인 할 수 있는 도구가 있어서 써보니 괜찮았다.이름은 TestDriven.Net인데 오픈소스의 경우 Per..
[Node.js] SQL Server native 연결 github에 보면 모듈을 정리해 놓은 것이 있는데 https://github.com/joyent/node/wiki/modules데이터베이스에서는 Node.js는 Monngo DB가 대세 인 것 같다. RDBMS에서는 My-SQL이 그나마 라이브러리로 언급이 된다. 정작 회사에서 주로 사용하는 SQL Server이다.어제 찾아보니 TDS protocol로 구현되어 있는 계열 빼고는 node-sqlserver이 유일한 네이티브 모듈인 것 같았다. 문제는 npm install node-sqlserver로 단순히 설치가 안된다는 사실.C++ add on 때문에 빌드를 해야 하는데 솔루션 파일 인식 에러가 뜬다. https://github.com/windowsazure/node-sqlserver 에 보면 준비물..
[설계] 건축과 소프트웨어 개발 디자인패턴도 건축에서 나온 것으로 알고 있다.과거부터 소프트웨어를 만드는 것은 건축에서 따온 메타포가 많았다. 하지만 과하면 문제가 생기기 마련. 요구사항 분석 / 설계 / 구현 / 검증(테스트)로 이루어지는 폭포수 모델은 비판이 많았다. 건축과 소프트웨어 개발의 차이점: http://earlybird.kr/1512글쓰는 프로그래머 :: 소프트웨어 설계가 완벽할 수 없는 다섯 가지 이유: 글쓰는 프로그래머 :: 소프트웨어 설계가 완벽할 수 없는 다섯 가지 이유 켄트 벡의 테스트주도개발에서는 소프트웨어를 정원관리하듯 개발을 하는 것에 대해 저자의 글에서 다루고 있다.p.276)역자 주: 기존의 소프트웨어 공학에서는 소프트웨어 분야에 건축학의 메타포를 주로 적용해왔다. 건축학의 메타포를 적용하여 우리는 소프..
[Node.js] Add on, Buffer 객체 C++로 넘기기 중국쪽 블로그로 보이는 Dead Horse's Blog를 참고하면 된다.Creating a Proper Buffer in a Node C++ Addon라는 제목의 글도 해당 내용을 담고 있다.Wrapping a C++ Object to a v8 Object in a Node Addon 도 자바스크립트 객체를 C++ 클래스로 바꾸는 유용한 글이다. 알아둘 것1. node::Buffer는 node_buffer.h를 include 하면 된다. (node-v0.x.y.tar.gz의 src/node_buffer.h) - 처음에 Buffer라는 클래스를 사용하길래 어디있지 생각했는데, node.h만 include한다고 되는 것이 아니였다. - 어차피 node.lib를 이용해서 빌드할 것이라면 node_buffer...
[JSTL] 나눗셈 연산 우리 팀 막내 민상이가 영훈이에게 무엇인가 도움을 청하는데, 왠지 불안해서 확인해보니.문제는 JSTL에서 시간을 단위로 줄이기 위해 나누기 60를 했는데 소수가 나오는 것이 문제였다고 한다. JSTL의 연산자 : http://blog.daum.net/kimslovehouse/8239530 참고 JSP를 대충 만들어보면 아래와 같을 것이다. 아래서 굵은 부분은 1이 아닌 1.0이 나오게 된다.${seconds div 60} 영훈이가 내준 해결책은 Java에서 integer 연산을 해서 문자열로 변수를 채우는 방법이다.이 방법은 Java에서 HTML 문자열을 직접 전달해주는 것 만큼 나쁜 해경 방법이다. (유지보수가 어려워진다.) 가장 먼저 생각했던 것은 JavaScript에 값을 넣고 페이지가 로드 되었을..
원격제어:키보드 시물레이션 원격제어의 기능 중 하나는 원격지의 화면을 보는 것이고 다른 하나는 기능(마우스, 키보드)을 수행하는 것이다.원격지에 기능을 수행하기 위해서는 가상으로 마우스나 키보드가 눌리도록 명령을 주어야 한다. 윈도우 API 중에는 keybd_event가 있는데 현재는 SendInput를 사용하라고 msdn에는 권장을 한다. keybd_event: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspx SendInput: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx 아래 프로그램은 3초후에 키보드 오른쪽 키를 누른 것 같은 효과를 준다..
[Node.js] - 윈도우 지원의 역사 전에 유투브에서 Node.js를 만든 Ryan Dahl이 "윈도우는 매우 중요하다. php처럼"이라는 말을 진지하게 했다가 사람들은 농담인지 알고 웃었던 장면을 본적이 있다. (아래 동영상에서 52초 부근~1:20초) node.js가 v0.10.21이 나오도록 아래 아키텍처 그림은 계속 검색이 된다. 하지만 Node.js는 v0.5부터 획기적인 변화가 있었다. 2011년 5월 5일 (어린이날!)에 발표한 로드맵 문서(http://nodejs.org/nodeconf.pdf)를 보면v0.5의 주요 목표는 윈도우 호환성이었다!!! 윈도우로의 포팅이 왜 중요한지는,서버의 33%가 윈도우이고, 웹 브라우저의 87%가 윈도우에서 돌아가고 있다는 것이다.(지금은 모바일 %가 높아졌지만) 이전까지는 윈도우에서 노드제이..
[JavaScript] 부동소수점의 오류 예 컴퓨터의 부동소수점의 정밀도 문제는 오래전 부터 알려진 사실이다. 자바스크립트에서도 그 예를 쉽게 찾을 수 있는데, 기록을 해놓지 않으면 예를 들 때 바로 생각해 내지 못하는 경우가 있어서 기록을 해둔다. 예)> 0.1 + 0.2;0.30000000000000004 이런 것은 결합법칙에서 문제가 된다. (A + B ) + C = A + (B + C)> (0.1 + 0.2) + 0.3;0.6000000000000001> 0.1 + (0.2 + 0.3);0.6> 돈과 관련된 경우에는 정밀도는 민감한 사항이기 때문에 실수가 아닌 정수형으로 계산을 하라고 한다.최소 단위를 일의 단위로 이용을 한다면 문제가 없다.> (1 + 2) + 3;6> 1 + (2 + 3);6> ((1 + 2) + 3)/10;0.6> (1..