컴퓨터에서 음수 양수를 구별 하기위해 최상위 비트=MSB를 부호비트로 쓰는것이다.

최상위 비트가 0이면 양수, 1이면 음수로 표현 한다.
 

0001은 1, 1001은 -1

여기엔 문제가 있다.

2진수의 계산이 힘들어 진다는 것이다.

 1001 + 0001 = 1010

 (-1)    (1)    (0 이어야 함)
 

의미상으로 는 0000이나와야 하나 실제는 다르게 나온다
 

이 것을 해결하기 위해 나온것이 1의 보수이다.


1의 보수란, 음수 표현시에 0을 1로, 1을 0으로 바꿔주는 것
 

1의 보수로 표현하자면,

0001은 1, 1110은 -1이 된다.

계산을 다시 해보면
 

1110 + 0001 = 1111

 (-1)   (1)    (0이어야 함)


 

계산 해보면 0000이 아닌 1111이 나왔다.

이렇게 나오는 이유는 1의 보수가 1111,0000의 두가지 의 영을 갖기 때문이다.(이것이 1의 보수의 문제점)


 

1101 + 0001 = 1110

(-2)      (1)      (-1)

계산이 맞다.


 

1의 보수의 문제점을 해결 하기 위해 나온것이 2의 보수이다.

2의 보수란 0을 1로, 1을 0으로 모두 바꿔준후에 1을 더하는 방법이다.

0001은 1, 1111은 -1이된다.


 

다시 계산해 보면
 

1111 + 0001 = 10000

(-1)   (1)      (0이어야 함)
 

의 결과 가 나오는데 이 값은 맞게 된다. 최상위 비트가 1이지만 범위를 벗어났기 때문에

무시하기 때문이다. 따라서 0000 => 0이 된다.
 

1의 보수나 2의보수 는 감산기가 필요 없이 더하기만으로 뺄셈이 가능하다.

1의 보수는 결과에 캐리가 발생시 캐리값을 연산해주어야 한다.

그에 반해 2의 보수는 발생한 캐리를 무시 하기때문에 다른 처리를 할필요 가 없다.


쉽게 2의 보수를 표현하는 방법으로는 밑의 13을 예로 들면
오른쪽에서 왼쪽으로 가는도중 최초로 나오는 일까지 그대로 써주고 나머지는 보수를 취해주면
2의보수가된다.


<컴퓨터가 보수를 쓰는이유>

보수를 쓰는 이유는 컴퓨터가 (-)라는 개념이 없기 때문이다.

컴퓨터가 인식할 수 있는 것은 전기가 들어왔다(ON)전기가 나갔다(OFF)이것만 인식이

가능한데 음(-)이라는 개념은 컴퓨터에서 인식할수 없기 때문에 보수를 씁니다

1의 보수는 0이라는 개념이 없을때는 그냥 사용해도 좋으나

0의 개념이 들어갈 경우 1의 보수로 한다면 (+)0과 (-)0이 나오게 됩니다

분명히 0은 하나밖에 없는데 음, 양의 개념으로 나뉜다면 컴퓨터가 오작동 합니다

이를 방지하기 위해 2의 보수를 사용합니다.

2의 보수는 0의 개념이 단 하나로 지정되기 때문에 컴터가 오작동 할 이유가 없죠

그냥 쓰실때는 1의 보수도 괜찮으나

0의 개념을 쓰실경우는 2의 보수를 이용하여 사용하시는게 낫죠

결론은

음수 계산 및 기타 계산은 1의 보수 또는 2의 보수 둘 다 사용이 가능하지만

0의 개념을 하나로 통합하여 사용하기 위해서는

2의 보수를 사용하는게 좋다.

 

'이론 > 컴퓨터구조' 카테고리의 다른 글

2의 보수를 쓰는이유와 2의 보수 표현법  (2) 2015.05.29
블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요

ssh

서버/pass 2015. 5. 22. 13:36

http://ko.wikipedia.org/wiki/%EC%8B%9C%ED%81%90%EC%96%B4_%EC%85%B8


시큐어 셸(Secure ShellSSH)은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜을 가리킨다. 기존의 rshrlogin텔넷 등을 대체하기 위해 설계되었으며, 강력한 인증 방법 및 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공한다. 기본적으로는 22번 포트를 사용한다.

SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다 하더라도 이해할 수 없는 암호화된 문자로 보인다.

•SSH(Secure Shell)는 버클리 서비스들(rsh, rcp, rlogin, rexec)및 telnet, ftp 서비스를 좀 더 보안이 강화된 명령으로 대체하기 위해 만들었다. 1995년 핀란드의 Tatu Ylönen이 개발해공개했고, 많은 반향을 이뤘다. 1995년 말 Ylönen은 SSH Communications Security사를 설립하고, 상용화되었다. 소스코드는 공개되었지만 여러가지 제약이 있었다고 하는데, 이에 SSH 1.2.12 릴리즈를 기반으로 OpenSSH 프로젝트가 결성되고 BSD 라이선스로 개발하기 시작했다. OpenSSH가 처음 선보인건 1999년 OpenBSD 2.6 릴리즈 부터다. 이후 계속 보완되어 오늘날에 이르게 되었다. •SSH의 주요 기능은 다음과 같다. ◦보안 접속을 통한 rsh, rcp, rlogin, rexec, telnet, ftp 등을 제공 .◦IP spoofing (IP스푸핑, 아이피 위/변조 기법중 하나)을 방지하기 위한 기능을 제공. ◦X11 패킷 포워딩 및 일반적인 TCP/IP 패킷 포워딩을 제공.

•SSH에 사용되는 암호화 알고리즘은 유럽에서 개발되었기 때문에, 미국의 수출 제한에도 걸리지 않는다.



'서버 > pass' 카테고리의 다른 글

ssh  (0) 2015.05.22
블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

Tag ssh

댓글을 달아 주세요

출처 : http://rayg.tistory.com/81

 

 

2, 3년 전 ETL 비슷한 프로그램을 개발해서 여러 기관에 있는 서버에 배포한 적이 있었다. 각각 서버나 DBMS 환경이 다르긴 했지만, 운영하는데 별 문제는 없었다. 그렇게 운영하다가 신규 기능을 배포하게 되었는데, 유독 한 곳에서만 ORA-01861 이 발생했다. 


java.sql.SQLException: ORA-01861: literal does not match format string


처음에는 DBMS에 대한 의심을 하지 못했다. 서버 환경이 비슷한 다른 기관들은 이미 적용해서 운영 중이었기 때문이다. 인터넷이 안되는 기관이라 검색도 못해보고, 후일을 기약하며 철수했던 기억이 난다. 며칠 뒤 별 준비없이 다시 방문을 했는데, 이상없이 동작 하는게 아닌가. 뭐에 홀린 듯 했지만 바쁜 상황이었던 터라 그냥 지나갔었다. 


오늘 검색을 하다가 우연히 당시의 일을 떠올리게 되었다. 오라클에서 TO_DATE, TO_CHAR 함수를 사용할 때 형식을 지정하지 않는 경우, NLS_DATE_FORMAT 에 따라 위와 같은 오류가 발생할 수 있다는 것이다. 유추해 보건대 누군가 공교롭게도 마침 그 시점에 설정을 바꾸었다가, 원복을 시킨게 아닐까 싶다. 


아무튼 오늘의 결론은 오라클에서 TO_DATE, TO_CHAR을 사용한다면 반드시 형식을 지정해야 한다는 것!

블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요

1. 현재까지 작성한 예약 프로시저

--seatcodes라는 배열 타입 생성 CREATE OR REPLACE TYPE SEATCODES AS TABLE OF VARCHAR(3); --예약 프로시저 CREATE OR REPLACE PROCEDURE ReserveProc (bookingcode in varchar2, email in varchar2, timecode in varchar2, screencode in varchar2, moviecode in varchar2, totalprice in integer, seatcount in integer, --seatcodes라는 타입을 만들었다. seatcodearr in seatcodes, email in varchar2, class in varchar2 ) IS I BINARY_INTEGER; BEGIN --멤버 마일리지 업데이트 UPDATE MEMBER SET MILEAGE = CASE WHEN class = 'D' THEN MILEAGE+totalprice*0.02 WHEN class = 'C' THEN MILEAGE+totalprice*0.04 WHEN class = 'B' THEN MILEAGE+totalprice*0.06 WHEN class = 'A' THEN MILEAGE+totalprice*0.08 WHEN class = 'S' THEN MILEAGE+totalprice*0.1 END; --BOOKING테이블 예약레코드 삽입 INSERT INTO BOOKING VALUES (bookingcode,email,timecode,screencode,moviecode,totalprice,seatcount); --seatcodearr을 루프 돌면서 BOOKED_SEATS에 삽입하고 PERFORMANCE_SEAT의 사용여부 업데이트. FOR I IN 1 .. seatcodearr.COUNT LOOP --BOOKED_SEATS에 INSERT INSERT INTO BOOKED_SEATS VALUES(bookingcode,seatcodearr(I)); --PERFORMANCE_SEAT UPDATE UPDATE PERFORMANCE_SEAT SET SEATSTATUS=1 WHERE SEATCODE= seatcodearr(I) and TIMECODE= timecode; END LOOP; --커밋. commit; END;


오류타입

  • 오류: PL/SQL: Compilation unit analysis terminated
  • 오류(1,1): PLS-00410: duplicate fields in RECORD,TABLE or argument list are not permitted 



해결 ?


위와 같은오류는 아규먼트 선언부분에 중복변수가 있을 때 발생 

위의 코드를 보면 email이 중복이다. 

중복변수를 지워주면서 변수명도 바꿔주었다. 


CREATE OR REPLACE PROCEDURE RESERVEPROC
(p_bookingcode in varchar2,
 p_email in varchar2,
 p_timecode in varchar2,
 p_screencode in varchar2,
 p_moviecode in varchar2,
 p_totalprice in integer,
 p_seatcount in integer,
 p_seatcodes in seatcodes,
 p_class in varchar2
 )
 IS 
    I INTEGER;
 BEGIN
    --멤버 마일리지 업데이트
    UPDATE MEMBER
    SET MILEAGE = CASE 
                   WHEN class = 'D' THEN MILEAGE+p_totalprice*0.02
                   WHEN class = 'C' THEN MILEAGE+p_totalprice*0.04
                   WHEN class = 'B' THEN  MILEAGE+p_totalprice*0.06
                   WHEN class = 'A' THEN  MILEAGE+p_totalprice*0.08
                   WHEN class = 'S' THEN  MILEAGE+p_totalprice*0.1
                   END;
                   
    --BOOKING테이블 예약레코드 삽입               
    INSERT
    INTO BOOKING 
    VALUES (p_bookingcode,p_email,p_timecode,p_screencode,p_moviecode,p_totalprice,p_seatcount);               
     
    --seatcodearr을 루프 돌면서 BOOKED_SEATS에 삽입하고 PERFORMANCE_SEAT의 사용여부 업데이트.  
    FOR I IN 1 .. p_seatcodes.COUNT
    LOOP
        --BOOKED_SEATS에 INSERT
        INSERT
        INTO BOOKED_SEATS 
        VALUES(p_bookingcode,p_seatcodes(I));
         
        --PERFORMANCE_SEAT UPDATE
        UPDATE
        PERFORMANCE_SEAT 
        SET SEATSTATUS=1 
        WHERE SEATCODE= p_seatcodes(I)
        and TIMECODE= p_timecode;
    END LOOP;
    --커밋.
    commit;
END;



프로시저를 조회하니..


 select * from user_objects where object_type = 'PROCEDURE'; 

status가 valid하다고 나온다.성공!

블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요

출처 - http://www.gurubee.net/lecture/1041


프로시저(Procedure)란?

  특정 작업을 수행 하는, 이름이 있는 PL/SQL BLOCK 이다.

  매개 변수를 받을 수 있고, 반복적으로 사용 할 수 있는 BLOCK 이다.

  보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL BLOCK을 데이터베이스에 저장하기 위해 생성 한다.

프로시저 문법

 
CREATE OR REPLACE procedure name 
   IN argument 
   OUT argument 
   IN OUT argument 

IS 

   [변수의 선언]

BEGIN  --> 필수 

   [PL/SQL Block] 
   -- SQL문장, PL/SQL제어 문장 

   [EXCEPTION]  --> 선택
  -- error가 발생할 때 수행하는 문장

END;  --> 필수 
    
  • CREATE OR REPLACE 구문을 사용하여 생성 한다.
  • IS 로 PL/SQL의 블록을 시작 한다.
  • LOCAL 변수는 IS 와 BEGIN 사이에 선언 한다.

프로시저 작성 예제

-- 프로시저의 이름은 update_sal이다 
-- update_sal 프로시저는 사번을 입력받아 급여를 인상 한다. 
-- 프로시저를 끝마칠 때에는 항상 "/"를 지정 한다.
SQL> CREATE OR REPLACE PROCEDURE update_sal 
     /* IN  Parameter */
     (v_empno    IN    NUMBER) 
         
     IS 

     BEGIN 

       UPDATE emp 
       SET sal = sal  * 1.1 
       WHERE empno = v_empno; 

       COMMIT; 

     END update_sal; 
     /     
    

프로시저 실행 예제

EXECUTE 문을 이용해 프로시저를 실행 한다.

SQL> EXECUTE update_sal(7369);
PL/SQL 처리가 정상적으로 완료되었습니다.

-- 7369번 사원의 급여가 10% 인상 되었는지 확인해 보기 바란다.
    


블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요

1. ERD 모델링



- 모델링에서 어려웠던 점


좌석을 등록하게 되면 SEAT테이블에 등록이 되는데 SEAT테이블에서는 일정에 따른 좌석의 사용여부를 관리할 수 없다.

SEAT에 사용여부 컬럼을 넣게 되면 TIME테이블에서 일정코드를 외래키로 받아서 따로 관리해야 되는데, 그렇게 되면 관리자가 좌석을 등록할 때 일정도 함께 등록해야 하는 모순이 생겨버린다. 설령 일정을 NULL허용을 해놓고 SEAT을 등록한다 하더라도 NULL값이 들어가게 되면 나중에 일정등록할 때 SEAT테이블에 UPDATE를 해주면서 다시 등록을 해야하는데 이 쿼리가 좀 만만치 않다.

그래서 PERFORMANCE_SEAT 테이블을 만들어 놓고 SEATSTATUS라는 사용여부 컬럼을 두었다. 관리자는 SEAT테이블에 좌석만 등록하고 일정을 등록할 시에 일정에 따른 좌석정보를 PERFORMANCE_SEAT테이블에 등록하는 데 이 때 다음과 같은 쿼리를 쓴다.




- 코딩시 어려웠던 점


예약할때 BOOKING테이블MEMBER테이블PERFORMANCE_SEAT 테이블, BOOKED_SEATS 테이블 이렇게 4개에 INSERT하고 UPDATE할 때 쿼리가 복잡하다. 이를 프로시저를 통해 해결하고자 한다(추후작성)


2. TEST ROWS


insert into movie values('M1','미쓰홍당무','코믹','200분','김종환','12세','서울시립대','한국','공효진','미쓰홍당무.jpg','2015/04/01','정말 끝내주게 웃깁니다.');

insert into movie values('M2','킹스맨','액션','150분','강주희','15세','서울시립대','미국','Dan Brown','킹스맨.jpg','2015/04/02','멋진액션!');

insert into movie values('M3','살인의추억','스릴러','300분','최윤주','19세','서울시립대','한국','송강호,김상경','살인의추억.jpg','2015/04/25','과연 누가 살인자일까?');

insert into movie values('M4','포화속으로','전쟁','150분','김종환','15세','서울시립대','한국','탑,권상우','포화속으로.jpg','2015/04/21','6.25 현장');

insert into movie values('M5','신세계','느와르','200분','김종환','19세','서울시립대','한국','이정재,황정민,최민식','신세계.jpg','2015/03/24','황정민 이정재 최민식 세남자의 느와르');

insert into movie values('M6','파파로티','드라마','150분','강주희','전체','서울시립대','한국','이제훈,한석규','파파로티.jpg','2015/03/21','테너의 감동적인 실화');

insert into movie values('M7','완득이','드라마','300분','최윤주','전체','서울시립대','한국','김윤석,유아인','완득이.jpg','2015/05/23','사제지간을 그린 드라마');

insert into movie values('M8','화이','스릴러','100분','김종환','19세','서울시립대','한국','여진구,김윤석','화이.jpg','2015/04/21','여진구를 다시보게 되는 작품');



insert into screen values('S1','1관');

insert into screen values('S2','2관');

insert into screen values('S3','3관');

insert into screen values('S4','4관');

insert into screen values('S5','5관');

insert into screen values('S6','6관');

insert into screen values('S7','7관');

insert into screen values('S8','8관');



insert into screen_movie values('S1','M1','2015-04-01','2015-05-29');

insert into screen_movie values('S1','M2','2015-03-28','2015-04-29');

insert into screen_movie values('S1','M3','2015-04-25','2015-06-02');

insert into screen_movie values('S1','M4','2015-03-17','2015-05-10');

insert into screen_movie values('S2','M1','2015-04-01','2015-05-29');

insert into screen_movie values('S2','M2','2015-03-28','2015-04-29');

insert into screen_movie values('S2','M3','2015-04-25','2015-06-02');

insert into screen_movie values('S2','M4','2015-03-17','2015-05-10');

insert into screen_movie values('S3','M1','2015-04-01','2015-05-29');

insert into screen_movie values('S3','M2','2015-03-28','2015-04-29');

insert into screen_movie values('S3','M3','2015-04-25','2015-06-02');

insert into screen_movie values('S3','M4','2015-03-17','2015-05-10');

insert into screen_movie values('S4','M1','2015-04-01','2015-05-29');

insert into screen_movie values('S4','M2','2015-03-28','2015-04-29');

insert into screen_movie values('S4','M3','2015-04-25','2015-06-02');

insert into screen_movie values('S4','M4','2015-03-17','2015-05-10');

insert into screen_movie values('S5','M1','2015-04-01','2015-05-29');

insert into screen_movie values('S5','M2','2015-03-28','2015-04-29');

insert into screen_movie values('S5','M3','2015-04-25','2015-06-02');

insert into screen_movie values('S5','M4','2015-03-17','2015-05-10');

insert into screen_movie values('S6','M1','2015-04-01','2015-05-29');

insert into screen_movie values('S6','M2','2015-03-28','2015-04-29');

insert into screen_movie values('S6','M3','2015-04-25','2015-06-02');

insert into screen_movie values('S6','M4','2015-03-17','2015-05-10');

insert into screen_movie values('S7','M1','2015-04-01','2015-05-29');

insert into screen_movie values('S7','M2','2015-03-28','2015-04-29');

insert into screen_movie values('S7','M3','2015-04-25','2015-06-02');

insert into screen_movie values('S7','M4','2015-03-17','2015-05-10');

insert into screen_movie values('S8','M1','2015-04-01','2015-05-29');

insert into screen_movie values('S8','M2','2015-03-28','2015-04-29');

insert into screen_movie values('S8','M3','2015-04-25','2015-06-02');

insert into screen_movie values('S8','M4','2015-03-17','2015-05-10');



insert into time values('S12015-05-011','07:20','09:20','2015-05-01',1,'S1','M1');

insert into time values('S12015-05-012','10:20','12:20','2015-05-01',2,'S1','M2');

insert into time values('S12015-05-013','13:20','15:20','2015-05-01',3,'S1','M3');

insert into time values('S12015-05-014','16:20','18:20','2015-05-01',4,'S1','M4');



insert into time values('S22015-05-011','07:20','09:20','2015-05-01',1,'S2','M1');

insert into time values('S22015-05-012','10:20','12:20','2015-05-01',2,'S2','M2');

insert into time values('S22015-05-013','13:20','15:20','2015-05-01',3,'S2','M3');

insert into time values('S22015-05-014','16:20','18:20','2015-05-01',4,'S2','M4');

insert into time values('S22015-05-015','18:40','20:20','2015-05-01',5,'S2','M1');



insert into time values('S32015-05-011','07:20','09:20','2015-05-01',1,'S3','M1');

insert into time values('S32015-05-012','10:20','12:20','2015-05-01',2,'S3','M2');

insert into time values('S32015-05-013','13:20','15:20','2015-05-01',3,'S3','M3');

insert into time values('S32015-05-014','16:20','18:20','2015-05-01',4,'S3','M4');



insert into time values('S42015-05-011','07:20','09:20','2015-05-01',1,'S4','M1');

insert into time values('S42015-05-012','10:20','12:20','2015-05-01',2,'S4','M2');

insert into time values('S42015-05-013','13:20','15:20','2015-05-01',3,'S4','M3');

insert into time values('S42015-05-014','16:20','18:20','2015-05-01',4,'S4','M4');



insert into seat values('A1','S1','A','1');

insert into seat values('A2','S1','A','2');

insert into seat values('A3','S1','A','3');

insert into seat values('A4','S1','A','4');

insert into seat values('A5','S1','A','5');

insert into seat values('A6','S1','A','6');

insert into seat values('A7','S1','A','7');

insert into seat values('A8','S1','A','8');

insert into seat values('A9','S1','A','9');

insert into seat values('A10','S1','A','10');

insert into seat values('A11','S1','A','11');

insert into seat values('A12','S1','A','12');

insert into seat values('A13','S1','A','13');

insert into seat values('A14','S1','A','14');

insert into seat values('A15','S1','A','15');

insert into seat values('A16','S1','A','16');

insert into seat values('A17','S1','A','17');

insert into seat values('A18','S1','A','18');

insert into seat values('B1','S1','B','1');

insert into seat values('B2','S1','B','2');

insert into seat values('B3','S1','B','3');

insert into seat values('B4','S1','B','4');

insert into seat values('B5','S1','B','5');

insert into seat values('B6','S1','B','6');

insert into seat values('B7','S1','B','7');

insert into seat values('B8','S1','B','8');

insert into seat values('B9','S1','B','9');

insert into seat values('B10','S1','B','10');

insert into seat values('B11','S1','B','11');

insert into seat values('B12','S1','B','12');

insert into seat values('B13','S1','B','13');

insert into seat values('B14','S1','B','14');

insert into seat values('B15','S1','B','15');

insert into seat values('B16','S1','B','16');

insert into seat values('B17','S1','B','17');

insert into seat values('B18','S1','B','18');



블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요


1. 우선 npm install 명령어로 paypal rest api sdk 모듈을 설치해준다.



2. 환경설정을 해준다.(자신만의 config.js 파일을 만든다)



3. 필자는 MVC 패턴으로 config폴더에 route.js 폴더를 만들고 라우팅 해주었다.



4. controllers 폴더내에 paypalController.js를 생성하고 paypalCreate, paypalExecute 함수를 작성한다.


코드는 영화예매 사이트 결제에 관한 것으로 다른 로직은 무시하고 payment라는 객체를 생성하고 paypal.payment.create로 paypal 결제를 생성한다는 점과 paypal.payment.execute에서는 session에 저장해 놓은 paymentId를 parameter로 결제 실행을 한다는 점을 유의하여 보면 되겠다.



cf. 추가적으로 invoice생성을 하여 결제 완료시 invoice를 얻어와서 db처리를 해줄 수도 있는데 이는 https://github.com/paypal/PayPal-node-SDK/를 참조하길 바란다.


5. 뷰를 생성한다.


뷰 생성시에는 아까 라우팅했던 /paypalCreate 을 호출할 때 보내줄 인자에 신경을 써야한다.

즉, paypal.payment.create가 정상적으로 결제를 생성하려면 payment 객체가 정상이여야 하는데 

payment정보는 /paypalCreate를 호출할 때 보내준 parameter에 의해 결정된다.


반드시 포함해야 하는 인자를 알려주는 아래 폼을 보자.



method, amount, currency는 반드시 포함되어야 한다.

method는 paypal or credit 신용카드로 하여 credit일 때에는 신용카드 정보를 같이 넘겨주어 위의 paypalController.js에서 소개한 방법대로 처리하면 되겠고,

amount는 총 액이다.

currency는 통화단위이다.



'프로그램 > node.js' 카테고리의 다른 글

node.js와 paypal 결제시스템 연동(1)  (0) 2015.05.13
passport-local  (0) 2015.03.27
인코딩문제(iconv를 통한 해결)  (0) 2015.03.27
node.js http request 모듈  (0) 2015.03.27
node-gyp 관련에러  (0) 2015.03.27
npm install 관련 오류  (0) 2015.03.27
블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요