본문 바로가기

Programing

(392)
[JavaScript] null 값과 비교할 때는 반드시 비교 연산자로 === 또는 !==를 사용 Maintainable JavaScriptp.129 null 비교 금지null 값과 비교할 때는 반드시 비교 연산자로 === 또는 !==를 사용해야 한다. 실제 잘못 사용 예) 문자열이 IP 패턴을 하고 있는지 확인하는 함수function isIPAddress(ip) { var ipFormat = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; return (ip.match(ipFormat)!=null);} 수정 예function isIPAddress(ip) { ..
[Node.js] Buffer 데이터 초기화 네트워크 패킷을 만들일이 있어 Buffer를 사용해야 했다.기본 모듈인지라 require는 따로 필요하지 않는다. 기본 메뉴얼은 => http://nodejs.org/api/buffer.html 처음에는 배열을 new로 생성해서 writeUInt8 메소드로 데이터를 추가했다. => http://nodejs.org/api/buffer.html#buffer_buf_readint8_offset_noassert예)var printQueue = new Buffer(7); packet.writeUInt8(0x02, 0); // Receive a printer job packet.writeUInt8(0x70, 1); // p packet.writeUInt8(0x72, 2); // r packet.writeUInt8(..
node.js v0.8.21 -> v0.10.16 오랫만에 node.js를 할 일이 있어 버전을 검토하니 0.8대에서 0.10으로 릴리즈 되었다.꾸준이 버전이 올라가는 것으로 보아 누군가가 열심히 개발을 하고 있다고 생각이 되었다. 무슨 기능이 추가되었는지는 둘째치고 성능상의 변화가 궁금해서 이전 버전을 idle 상태로 돌려보고 업그레이드 후 버전을 돌려서 비교를 해보았다. 메모상으로만 보면 16.7 MB에서 10.8 MB로 대폭 감소하였음을 볼 수 있다.v0.8.21 v0.10.16 이전에 지역 저장소에 0.6.17 버전의 소스코드(정확히는 헤더들)를 넣어둔 적이 있는데 0.8까지는 변화가 없었다. cpp가 바뀌었을지도 모르겠다. 그럼 이번에는 어떤 변화가 있을지?
이클립스의 자바빈 getter/setter 생성 버그 Foo라는 클래스의 String타입의 name이름의 프로퍼티가 있다고 할 때,JavaBean 규약에 의하면 getter와 setter의 이름은 각각,String getName()과 void setName()이 된다. 이클립스에서 POJO형태의 클래스를 만들때 보통 메소드 자동생성기능을 이용한다. Source > Generate Getters and Setters... 문제는 두번째 글자가 대문자일 경우에 이클립스는 첫 번째 문자를 대문자로 바꾸지 않고 소문자로 놔둔다는 것이다.nName이라는 프로퍼티는 아래처럼 바뀐다. 별로 상관없을지 모르나 리플렉션(reflection)을 통해 메소드를 가져오는 경우 아래와 같은 메세지가 나오면서 예외가 발생한다.java.beans.IntrospectionExcepti..
지역변수의 이름은 짧게 하는 것이 보기에 좋다. 프로그래밍 수련법 1장 스타일 > 1.1 이름에 나오는 이야기이다. (p.4) 전역변수에는 서술적인 이름을, 지역변수에는 짧은 이름을 붙여라 C#의 콤보 컨트롤이 바뀌었을 때 수행되는 이벤트 핸들러 메소드의 예이다. [수정전] [수정 후]코드가 길어졌다고 불평할지도 모르겠지만 3번째 줄의 using을 보여주기 위해서 앞부분을 추가한 것일 뿐이다. using을 사용함으로 42라인은 스크롤 하지 않고도 한번에 볼 수 있게 되었다.
클래스 이름짓기 네이밍(이름짓기)은 프로그래밍에서 하찮게 보일 수 있지만 중요한 문제이다.이름을 길게 지어야한다, 짧게 지어야한다, 카멜표기법을 준수해야 한다, 헝가리언 표기법은 좋지 않다 등의 많은 의견이 있겠지만 가장 중요한 것은 일괄적인 패턴이 있어야 한다는 것이다. 우리는 보통 관습(convention)이라고 부른다. 지문 데이터를 관리해주는 매니저 클래스를 만들어야 했는데 다음과 같은 후보를 정하고 후배에게 의미를 파악할 수 있는지 이름만으로 추측하게 하였다. 1. FPDM2. FPDMgr3. FPDManager4. FPDataManager5. FingerPrintingDataManager 1번에서는 전혀 의미를 파악하지 못했다.2번에서는 M이 Mgr로 바뀌었음을 인지했고, Manager의 약자라는 것까지 알게..
[NUnit] NUnit에서 x86 바이너리 테스트하기 NUnit은 .net 프레임워크를 위한 테스트 프레임워크이다.처음에는 AnyCPU로 선택해서 OS가 64비트라서 64비트로 동작하는 모듈을 테스트하는데,System.BadImageFormatException이 발생을 한다. 서드파티 라이브러리가 32비트용 dll이라서 그런 것 같았다. 제조사에게 64비트용 이미지를 요청하고, 시간이 없어서 개발은 32비트로 먼저 진행하기로 했다.그런데 이번에는 NUnit에서 아래와 같이 읽어오질 못한다. 알고보니 x86용 프로그램도 같이 제공되고 있었다. 런타임이 64비트인지 판단하는 정적 메소드static Boolean Is64Bit(){ return Marshal.Sizeof(typeof(IntPtr)) == 8;}
개발도구 - 이슈관리, CI 이슈/버그관리 Bugzilla - http://www.bugzilla.org/download/ Trac - http://trac.edgewall.org/ Mantis(사마귀) - http://www.mantisbt.org/download.php > Mantis 설치하기Redmine - http://www.redmine.org/ JIRA - http://www.atlassian.com/software/jira/pricing (참고로 상용) codeBeamer - http://www.intland.com/products/codebeamer (5명이하 2개미만 프로젝트/Open Source 프로젝트는 무료) > 프로젝트 협업을 위한 Trac, CodeBeamer, Jira, Mantis의 간단 비교> 이슈 추..