Promise 는 비동기처리를 위한 비동기 연산 후 결과값이 실패를 처리 하기 위한 처리기를 연결 할 수 있도록 합니다.

초기의 Javascript는 동기(Sync)형태만 지원하였으나, 이후 계속 발전을 계속 하여 비동기(aSync)형태를 지원하기 시작했습니다. (대표적으로 Ajax 등등.)

 

이후 계속 발전하여 JQuery가 발표 되었고. 더 이상 Promise/Deferred를 사용하지 않고서는 웹을 구현하기 조차 어려워졌습니다.

 

Promise 는 Common JS Promises/A 에서 표준스펙으로 정의 되었습니다.
이런 표준스펙이 여러가지 플렛폼에 정의 됩니다.(JQuery, AngularJS, nodeJS 등등) JQuery에서는 Deferred로 정의 되었습니다.

 

Promise의 역사에 대해서는 차후에 좀 더 자세히 알아 보도록 하고,  Promise가 무었인지에 대해 알아 보도록 하겠습니다.

 

우리가 가장 많이 사용한 ajax를 이용하여 이해도를 높혀 보도록 하겠습니다.

jQuery 1.5 이전
$.ajax({
 	  url : '/getOTP'
	, success : successFunction
	, error : errorFunction 
})

초기에는 Ajax를 위와 같이 구현하였는데. 

1.5 이후부터는 ajax를 promise 가 지원되어 아래와 같이 사용할 수 있게 되었습니다.

jQuery 1.5 이후 
var p = $.ajax({
	url : '/getOPT'
}

p.done(successFunction);
p.fail(errorFunction);

또한 아래와 같이 코딩 할 수 도 있습니다.

jQuery 1.5 이후 
var p = $.ajax({
	url : '/getOPT'
})

p.done(successFunction1);
p.done(successFunction2);
p.done(successFunction3);
p.fail(errorFunction);

또는 
$.ajax({
	url : '/getOPT'
})
.done(successFunction1)
.done(successFunction2)
.done(successFunction3)
.fail(errorFunction);

 이와 같이 chaincode 형태로 연결 할 수 도 있습니다.

이제 조금씩 이해가 가시죠?
그럼 어떻게 함수를 구현하면 done 또는 fail등을 이용할 수 있는지 알아 보도록 하겠습니다.

<Script>
$(document).ready(function() {
	function doSendSMS()
	{
		var dfd = $.Deferred();
		$.ajax({url:'./smssend.json'
				, headers: {
			        'Content-Type': 'application/json'
			    	}

				})
	    	.done(function(result){
	    		//var j = JSON.parse(result);
	    		//console.log(j.authno);
	    		dfd.resolve(result);
	        })
	        .fail(function(x) {
	        	//console.log(x);
	        	dfd.reject(x);
	        });
		return dfd.promise();
	}

	doSendSMS()
		.done(function(x) {
			console.log('SMS 인증 타이머 동작', x);
		})
		.fail(function(x) {
			console.log('SMS 인증 타이머 재시도', x);
		});
	})
</Script>

 

이제 조금씩 이해가 가시죠? resolve 는 done으로 전달되고, reject는 fail로 전달 됩니다.

쉽게 deferred 를 promise()로 리턴하면, 터널이 생긴다고 보시면 됩니다. 이 후 비동기적으로 resolve/reject 가 터널을 통해서 결과가 전달 된다고 보시면 됩니다.

 

Promise 호환성 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise

 

1회는 여기서 마치고 2회를 곧 준비하여 돌아 오겠습니다.

to be continue...

관련 유튜브  : https://youtu.be/pXmqYqQsIt0

 

sudo apt install -y apt-transport-https ca-certificates software-properties-common curl python unzip

sudo echo "hyper   ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

curl -sSL http://bit.ly/2ysbOFE | bash -s 1.4.0

sudo apt install golang-go python libltdl-dev python-pip

sudo npm install npm@5.6.0 -g

 

### docker install

curl -sSL https://get.docker.com/ | sh

sudo usermod -aG docker john

sudo curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

 

### 의존성 라이브러리

sudo apt-get install -y build-essential libssl-dev

 

####  docker images  all clear

docker stop $(docker ps -a -q)

docker rm -f $(docker ps -a -q)

docker rmi -f $(docker images -q)

 

### docker information all remove

docker image prune -a

docker image prune

docker volume prune

docker network prune -f

앱플레이어에서 VPN을 이용하여 아이피 분리 하는 방법(2)


너무 오래 기다리게해서 죄송합니다.
실은.. 앱플레이어가 VPN을 제공 하지 않아서, 프로그램도 만들어보고 했는데
결론적으로는 업체에서 제공하는 IPSec과 같은 VPN클라이언트를 사용해만 가능한것으로 잠정결론을 짓고, 포기하려고 했는데 좀전에 좋은 아이디어가 하나 생각이 나서 포스팅 합니다.

아래 조건이 만족되어야 합니다.
1. 집에 인터넷을 여러개 설치 할 수 있어야 한다.
2. 각 인터넷별로 공유기를 설치 해야 한다.(공유기 종류 상관없음)
3. 허브가 있어야함(공유기와는 다름.)

먼저 그림을 공개 하도록 하겠습니다.
아마 그림을 보시면 바로 이해 하실 수도 있을것 같습니다.

 


. 이해를 돕기 위해서 ISP별로 분리 한것이 아니라, 공인아이피를 각 공유기로 할당 할 수 있으면 됨.

각 스탭별 해야 할일과 자세한 설정화면은 차차 추가 하도록 하겠습니다.


이런 방법도 있습니다.

일반휴대폰에서처럼 모모나 다른 앱에뮬레이터에서는 운영체제에서 VPN을 지원하지는 않습니다.

하지만, 사설VPN프로그램(앱스토어에서 VPN으로 검색 하면 많이 나옵니다.)을 각 모모에 모두 설치 하시면 사용가능 하실겁니다.


만일 자체적으로 VPN서버를 구축 하실려면,

일반적으로 VPN을 가장 쉬운 방법이 IPTIME 공유기 여러개를 사서 구축 하는 방법이 있긴한데, 이것은 모모등에서 PPTP를 지원하지 않아서 안되는 것으로 알고 있어요.


차선책으로, openvpn으로 서버를 구축하시고, 각 클라이언트 마다 openvpn client를 설치 하시면 가능합니다.


만일 여유자금이 충분하시다면,

openvpn을 지원하는 장비들이 있어요. QNAP NAS(중고로 사시면 대당 10만원 안쪽)등이 OPENVPN을 지원하는데, 이걸로 사용해보셔도 좋을것 같습니다.

QNAP NAS 하나당 공인IP는 한개라고 생각하시고, 공인IP한개를 몇대 의 모모에서 사용할것인지를 생각하시고 QNAP NAS를 구매 하시는게 좋을것 같습니다.

(보통은 아이피하나를 4대 정도 공유하더군요.)


2017/09/06 - [Review] - 앱플레이어에서 VPN을 이용하여 아이피 분리 하는 방법(1)

2019/03/05 - [Review] - 앱플레이어에서 VPN을 이용하여 아이피 분리 하는 방법(2)



이상끝.



+ Recent posts