본문 바로가기

Programing

(405)
[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..
[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가 바뀌었을지도 모르겠다. 그럼 이번에는 어떤 변화가 있을지?