2019/03 44

[VMware] Host와 VM 인스턴스간 파일 공유 - 우분투

웹 서버 개발시, 개인적으로 VM이나 AWS으로 서버를 생성한다. 그래야 나중에 뒷처리도 깔끔하고 향후 웹 서버 세팅시 바닥환경부터 필요한 패키지등등을 알 수 있기 때문이다. 그러나, VM을 설치할 때마다 필요한 파일을 USB나 기타 방법으로 옮길 수는 없다. 그래서 사용한것이 VMware에서 제공하는 파일 공유. (1) 현재 작업중인 인스턴스의 Settings->Options ->Shared Folders 에서, Add를 눌러 추가할 수 있다. (2) VM 웨어 세팅 VM웨어에서 바로 세팅된다면, 그대로 사용해도 무방하다. 만약 에러가 발생하여, 리눅스상에서 폴더가 설정되지 않는다면 VM 툴을 재설치 해야한다. 현재 사용중인 인스턴스탭을 우클릭하여, Reinstall VM tools를 선택하자.그러면 ..

[C, C++] 1~N 연속된 수로 이루어진 랜덤 배열

1~N, N~M으로 이루어진 배열 또는 이미 지정된 값들로 구성된 배열을 랜덤하게 생성하는 방법에 대해 누군가 질문한 적이 있다. 만일 테스트 용도로 그 값들을 랜덤하게 생성해야 한다면, 시간에 따른 RAND함수로 도출하는 것은 절대적으로 리소스 낭비가 크다. 예를 들어, 1~10까지의 수로 이루어진 배열 [1,2,3,4,5,6,7,8,9,10]을 랜덤하게 뽑으려면 확률상 몇번의 RAND()를 불러야 할까? 따라서 랜덤으로 배열을 만드는 것 보다. 이미 만들어진 배열을 랜덤으로 섞는 것이 더 유리하다. C++이나 Java와 같은 언어에서는 이미 이런 기능을 함수로 만들어 제공한다. 함수의 이름은 Shuffle이다. 만약 셔플 함수를 제공하지 않는 다면 아래와 같이섞을 수 있다. void shuffle(i..

[Node.js / Javascript] 초당 처리 횟수 제한을 위한 윈도우 함수

API 크롤링이나, 기타 데이터 수집을 위해서 함수 또는 특정 프로시저를 실행할 때 횟수제한에 걸리지 않도록 윈도우를 잡아서 처리하는 코드 다만, 이 코드는 setInterval을 사용하므로 CPU 소모량이 클 수 있다. 소스코드 function AWS(limit, secs){ this.list = []; this.limit = limit; this.window = secs*1000; this.push = function(a, b){ this.list.push([-1, a, b]); } this.pop = function(){ if(this.list.length==0) return "EMPTY"; var now = new Date().getTime(); var st = -1; for(var i = 0 ;..

[Node.js] Express-session 기반 로그인 세션 관리시, 로그인 리다이렉트 Ajax 처리

Node.js 상에서 로그인 세션을 관리하는 패키지인 Express-session을 사용하게 되면, 별도의 관리 로직을 구성하지 않아도 알아서 Request와 Response에 로그인 정보를 담아준다. 하지만 로그인에 따라 각 다른 페이지를 구성하거나, 노출 여부를 결정하는 경우라면 각 라우터의 URL 매칭마다 이를 확인해주어야 한다. 매번 똑같은 함수를 계속해서 호출하거나, 복붙 할 수 없으므로 Middleware 형태의 인증 확인 절차를 거친다. 아래와 같은 코드를 많이 보았을 텐데, 실제 이와 같이 처리하게 되면 해당 라우터를 거치는 모든 요청들이 ensureLoggedIn 함수를 거쳐 로그인 여부가 판단되고, 로그인 페이지로 리다이렉트하거나 라우터로 가던길 계속 간다. router.get('/',..

[Node.js] Node.js와 외부 프로그램(Java, C, C++) 연결 (bridge)

서버를 만들다 보면 NPM 패키지에 포함되지 않은 기능이 필요한 경우가 생긴다. 이런 경우, 어쩔수 없이 다른 프로그래밍 언어를 사용해야하는 경우가 발생한다. 또한 성능 문제로 반드시 C,C++를 써야하는 경우가 생기기도 한다. Node.js에서 타 언어 프로그램을 호출하는 경우 여러가지 방법이 있지만, 나의 경우에는 한가지 프로그램만 실행하면 되었기 때문에 child_process 패키지의 exec를 사용했다. (터미널 터맨드와 동일) (1) STDOUT을 이용한 처리 방법 물론 이 방법은 터미널 명령이기 때문에 위험하다. (하지만.. 뭐 소스가 변조되지 않는 이상은 문제가 없을 것이고, 이미 변조 단계에 들어섰다면 서버 소스와 DBMS 정보를 다 털린것과 다름없기 때문에..) var exec = re..

[Node.js] Jade(pug) 템플릿 엔진 속도 문제

요약 : 1. Node.js에서 사용하는 Pug 템플릿 엔진 (Jade)를 이용하면 간단한 페이지도 로드되는데 굉장히 오래 걸린다. 2. 코드를 구성하기 나름이지만, 쿼리 + Pug 컴파일 + 변수 대입 + 요청 응답의 4단계에서 컴파일 타임이 약 8할이상 시간이 걸린다. (응답시간 1초의 경우 약 800ms이상 소요) 3. Pug 엔진에서 캐시가 가능하다. 결과 : 컴파일 시간이 0ms으로, 응답시간이 5배 이상 빨라진다. var fn = pug.compileFile('파일.pug',{ basedir:__dirname, cache:true }); res.writeHead(200, {'Content-Type' : 'text/html'}); res.end(fn(varlist)); 캐시이므로, 서버 켜질때 ..

[웹 서버] Proxy 서버와 Forward, Reverse 프록시

1. 프록시 서버란 무엇인가? Proxy는 대리, 대리인 의미를 가진 단어이다. 이 처럼 단어 의미에서 짐작해볼 수 있듯, 서비스를 제공하는 서버 대신 무언가를 수행하는 서버이다. 프록시 서버의 주된 역할은, 웹 서비스 프로그램(이하 웹 서버)의 로드 감소이다. 좀 더 쉽게 이해하기 위해서 웹 서비스의 전체적인 과정을 아래의 그림을 보고 이야기 하자. 일반적으로 웹 서비스는 크게 (1) 클라이언트 - (2) 웹 - (3) 웹 서버의 3개의 영역을 관통하면서 제공된다. (1) 클라이언트는 서비스를 이용하는 사용자이며, 자신이 원하는 페이지, 파일을 (2) 웹을 통해 (3) 웹 서버에 요청하게 되며, (3) 웹 서버는 (1) 클라이언트의 요청에 맞는 데이터를 준비해서 응답한다. 위와 같이 연속된 웹 서비스 ..

[크롤링] 데이터 수집을 위한 크롤링 5편 : Yahoo 파이낸스를 이용한 환율 크롤링

데이터 수집을 위한 크롤링 연속 포스팅 [크롤링] 데이터 수집을 위한 크롤링 1편 : 크롤링이란 무엇인가? [크롤링] 데이터 수집을 위한 크롤링 2편 : 크롤링에 필요한 필수 요소들 [크롤링] 데이터 수집을 위한 크롤링 3편 : JSON, 더 자세한 설명 [크롤링] 데이터 수집을 위한 크롤링 4편 : Java의 설치와 간단한 Jsoup 예제 [크롤링] 데이터 수집을 위한 크롤링 5편 : Yahoo 파이낸스를 이용한 환율 크롤링 1. 크롤링전에 앞서 본격적으로 자신의 목적에 맞는 크롤러를 만들어보자. 이번에 만들 크롤러는 환율 정보를 가져오는 크롤러이다. 1편에서 다뤘던대로, 4단계로 나누어 그 과정을 살펴보자. - (1) 대상 선정 -> (2) 데이터 로드 -> (3) 데이터 분석 -> (4) 데이터 수..

[크롤링] 데이터 수집을 위한 크롤링 4편 : Java의 설치와 간단한 Jsoup 예제

데이터 수집을 위한 크롤링 연속 포스팅 [크롤링] 데이터 수집을 위한 크롤링 1편 : 크롤링이란 무엇인가? [크롤링] 데이터 수집을 위한 크롤링 2편 : 크롤링에 필요한 필수 요소들 [크롤링] 데이터 수집을 위한 크롤링 3편 : JSON, 더 자세한 설명 [크롤링] 데이터 수집을 위한 크롤링 4편 : Java의 설치와 간단한 Jsoup 예제 [크롤링] 데이터 수집을 위한 크롤링 5편 : Yahoo 파이낸스를 이용한 환율 크롤링 1. Java 설치 크롤링을 위한 언어로 Java와 JSoup 라이브러리를 이용한다. 만약 자신이 편리한 언어가 있다면 해당 언어를 사용해도 무방하다. Jsoup의 경우 Java 버전 라이브러리이며, 해당 언어에 맞는 크롤링 라이브러리가 존재할 것이다. Java를 설치하는 전체 과..

[크롤링] 데이터 수집을 위한 크롤링 3편 : JSON, 더 자세한 설명

데이터 수집을 위한 크롤링 연속 포스팅 [크롤링] 데이터 수집을 위한 크롤링 1편 : 크롤링이란 무엇인가? [크롤링] 데이터 수집을 위한 크롤링 2편 : 크롤링에 필요한 필수 요소들 [크롤링] 데이터 수집을 위한 크롤링 3편 : JSON, 더 자세한 설명 [크롤링] 데이터 수집을 위한 크롤링 4편 : Java의 설치와 간단한 Jsoup 예제 [크롤링] 데이터 수집을 위한 크롤링 5편 : Yahoo 파이낸스를 이용한 환율 크롤링 1. 크롤링이란? 이번 글에서는 JSON과 Javascript단에서 어떻게 사용하는지를 자세히 설명하려고 한다. 또한 앞서 모든 예제는 자바스크립트로 구성될 예정이므로, 잘 이해가 안된다면 웹 브라우저에서 F12(개발자모드)를 열어 예제 코드를 입력해보자. 우선 JSON은 Java..

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사