본문 바로가기

Programing

(392)
libuv libuv는 Node.js에서 사용하고 있는 고성능 이벤트 I/O를 위한 라이브러리이다.최초의 Node.js는 Marc Lehmann의 libev와 V8를 사용해서 만들어졌다. 하지만 libev는 Unix에서만 동작하고 Windows에서는 동작을 하지 않는다는 단점이 있었다. 이전에 쓴 Node.js 윈도우 지원의 역사에도 나와있지만 리안 달역시 윈도우가 중요한 플랫폼으로 생각하고 윈도우의 IOCP를 이용해 이벤트 I/O를 편입을 하려고 하였다. 그래서 도입한 것이 libuv이다. 처음에는 libev와 libuv가 동시에 사용이 되다가 Node.js v0.9에서 libev가 제거되었다. Node.js가 V8을 이용한 자바스크립트 인터프리트 엔진이 들어가다보니 런타임 메모리가 클 수 밖에 없었다.그래서 자..
Node.js winston 표준 시간이 안맞는 경우 해결 방법 winstone의 날짜는 winston.transports설정시 timestamp 프로퍼티를 이용하여 설정할 수 있다.var winston = require('winston');winston.add(winston.transports.File, { filename: '2014-03-20.log', timestamp: true, json: false }); 그런데 이렇게 했을 때 시간의 아래와 같은 형태로 찍힌다.'2014-03-20T08:26:15.861Z'그런데 이 시간은 UTC이기 때문에 지역시간과 다를 수 있다. KST를 사용하는 한국에서는 -9 한 값이 나온다. winston의 기본 시간 표시는 whitelife님의 블로그를 보면 알 수 있듯이 node_modules/winston/lib/winst..
TDD 디자인 패턴(design pattern) JUnit in ActionPetar Tahchiev, Felipe Leme, Vincent Massol, Gary Gregory, 2010JUNIT IN ACTION: 단위 테스트의 모든 것(인사이트, 이복연 옮김. 2011) 퍼사드(facade) p.27제어 구조 역전 p.36싱글톤(singleton) p.98제어 역전(Inversion of Control, IoC) p.140
TDD 모범사례(best practice) '베스트 프렉티스'를 모범사례로 번역을 한 것은 참고문헌 MAS10 p.xx/p.2를 따른 것이다. "한 번에 하나의 객체만 테스트하라." - MAS10 p.43"assert 호출 시에는 실패 원인을 기술하라." - MAS10 p.47"하나의 @Test 메서드에서는 하나의 테스트만 수행하라." - MAS10 p.50"실패할 가능성이 잇는 모든 것을 테스트하라." - MAS10 p.53"테스트를 통해 코드를 개선하라." - MAS10 p.57"예외 테스트도 읽기 쉽게 만들어라." - MAS10 p.59"테스트를 통해 코드를 개선하라." - MAS10 p.59"테스트를 건너뛸 때는 반드시 그 이유를 명시하라." - MAS10 p.62"같은 패키지, 다른 디렉터리" - MAS10 p.67"리팩터링하라" - M..
[NHibernate] 현재 시간 current_timestamp DB 마다 시간 구하는 함수가 다르다. 하이버네이트에서는 방언(dialect)라는 개념을 이용해서 쿼리를 변환해주는 기능이 있는데,보니 current_timestamp를 괄호없이 사용하면 된다.eg) UPDATE sdh2k_device_map SET sdh2000_ip = :sdh2000IP, updated_datetime = current_timestamp WHERE mfp_ip = :mfpIP; 구현은 아래 URL을 참고MsSqlServer : https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate/Dialect/MsSql2000Dialect.cs (current_timestamp -> getdate) PostgreSQL : ..
[C#] 애플리케이션 경로 윈도우 API에 보면 현재 디렉토리의 경로를 구하는 함수가 있다.MSDN GetCurrentDirectory 함수 : http://msdn.microsoft.com/en-us/library/windows/desktop/aa364934(v=vs.85).aspxC#에서는 Directory.GetCurrentDirectory 메서드가 그 역할을 수행한다. 사실 이 경로보다 exe의 경로가 더 알고 싶을 경우가 있다. 예를 들면 서비스 애플리케이션의 경우 시스템이 실행을 시켜주기 때문에 현재 디렉터리나 상대 디렉터리를 사용하게 되면 엉뚱한 SYSTEM 폴더 경로를 참고하게 되기 때문이다. 이럴 경우에는 GetModuleFileName 함수를 이용하면 된다.MSDN GetModuleFileName 함수 : htt..
[C#] WinForm - Drag & Drap 구현하기 (아이콘 변화) DragEnter라는 이벤트가 발생할 때 인자로 넘어온 DragEventArgs의 Effect 속성을 부여해주는 것으로 구현 가능하다. 처음에 보이는 기본 뼈대는 아래와 같다.private void MainForm_DragEnter(object sender, DragEventArgs e){} 여기에 e.Effect에 DragDropEffects.Copy 라는 지정을 하면 아래 그림처럼 아이콘이 바뀐다.private void MainForm_DragEnter(object sender, DragEventArgs e){e.Effect = DragDropEffects.Copy;} DragDropEffects 열거형은 Scroll, All, None, Copy, Move, Link의 6가지 경우가 있다.파일을 드..
[이럴수가] 바이트 배열을 숫자로 바꾸다 발견한 점 우선 퀴즈, 다음 코드를 실행했을 때 어떤 글자가 화면에 출력될까?class Test {public static void main(String[] args) {byte b = (byte)0xe9;int i1 = b;int i2 = b & 0xff;System.out.println(i1);System.out.println(i2);}} 정답은 아래에서 확인해보고... 아래서 확인한 내용과 머리로 생각했던 결과가 다르다면 이 글을 읽어보아라. 이런 현상은 왜 나타나게 된 것일까?byte 배열을 정수로 바꾸는 기능을 java.nio.ByteBuffer를 이용해서 구현을 했다.import java.nio.ByteBuffer; class ByteToInteger {public static int ToInt(byte..