옹실이의 개발이야기

분류 전체보기 46

(node.js/express.js)Login route 만들기

Login route 만들기 1. DB에서 요청한 email 찾기(이메일 검증) 2. DB에서 요청한 email이 있다면 비밀번호가 같은지 확인 3. 비밀번호까지 같다면 토큰 생성 후 쿠키에 저장 4. 확인 ※ router(라우터) 란 route는 '길'이라는 뜻으로 네트워크 상에서 출발지에서 특정 목적지로 데이터를 보내는 경로. route를 찾아내는 역할을 하는 장비를 router(라우터)라고 한다. * 참고사항 * 진행방식 : User.js(User 스키마)에서 User 관련 function 만든 후 Index.js에서 호출 사용한 라이브러리/프로그램(서비스) : jsonwebtoken, cookie-parser, postman DB : MongoDB(몽고DB) 1. 요청한 email를 DB에서 찾기..

Node.js 2021.10.23

Node.js와 Express.js로 간단한 어플리케이션 만들기

Node.js와 Express.js 의 개념 node.js : javascript를 서버side에서 사용할 수 있는 언어 express.js : node.js를 쉽게 이용하게 해주는 프레임워크로, node.js 이용 시 express를 사용하면 웹 어플리케이션을 좀 더 쉽게 만들 수 있다. 별도 설치 필요 Node.js 설치 + 패키지 폴더 만들기 1. node.js 설치여부 확인 - cmd > node -v 입력 => 버전 나오면 다운로드 되어있는 것! 2. nodejs 다운 - https://nodejs.org/ko/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 3. 앞으로 사용할 ..

Node.js 2021.10.09

Spring 특징 - AOP

AOP(Aspected Oriented Programming) : 관점지향 프로그래밍. 객체지향 프로그래밍에서 사용 공통적인 기능을 따로 분리해 모듈화 -> XML 또는 annotation으로 이용 가능 AOP의 주요 개념 Join Point : 실행가능한 특정 위치. 지점 or 연결고리 Pointcut : 어떤 point에 어떤 Join Point를 사용할지 결정하는 선택 기능 특정 클래스에 있는 모든 메소드 호출 Advice : 결합점. Join Point에 삽입되어 동작하는 코드 Advice 결합점 결합 타입 - Before advice : jointpoint 전에 수행되는 advice - AFter returning advice : joinpoint 성공적으로 리턴 후 동작하는 advice - A..

카테고리 없음 2021.10.09

XA란? XA의 개념과 분산 트랜잭션

오라클 DB와 msSQL DB에 각각 데이터를 insert 하는데 원자성이 보장되어야 할 경우 한 쪽에서 오류가 난다면 어떻게 해야할까? 이를 하나의 트랜잭션으로 묶어 roll-back 시키는 기능이 필요해진다. 그러나 이러한 기능은 각각의 DBMS에서 실행할 수 없으므로 외부에서 이 작업을 수행해주어야 한다. 이럴 때 필요한 것이 XA(eXtended Architecture) Transaction이다. 본격적인 개념 설명에 앞서 분산 트랜잭션에 대해 알아둘 필요가 있다. 분산 트랜잭션(Distributed Transaction) = 전역 트랜잭션(Global Transaction) 하나 이상의 트랜잭션 집합. 통합으로 관리된다. 여러개의 분산된 resource들(예: Database) 각각에 대한 tr..

DataBase 2021.09.04

API 아임포트 결제 API : ③환불하기

전에는 아임포트 API의 토큰과 주문 번호를 이용해 결제 정보 갖고오기를 포스팅했었는데, 이번에는 환불하는 기능에 대해 포스팅해보고자 한다. 사실 처음엔 결제 기능을 구현하면서 환불 기능까진 생각을 못했었다. 아임포트 API 테스트용 결제는 별도의 환불 과정이 없어도 자동 환불이 되기 때문이다. 하지만 환불 기능은 결제와 함께 반드시 필요한 기능인걸........ 나중에 깨닫고 구현했다. 환불하는 것도 결제정보 갖고오는 것과 마찬가지로 토큰과 주문 번호(merchant_uid)가 필요하다. 구현순서는 대략 이렇다. 1. 아임포트에서 결제 토큰 가져오기 2. 주문 번호와 결제 토큰을 이용해 환불하기 1번 아임포트에서 결제 토큰 가져오기는 전에 포스팅 했으므로 패스하겠다. 아래 링크에서 확인 가능하다. on..

API 2021.01.22

API 아임포트 결제 API : ②결제 정보 가져오기

결제 기능을 구현하다보면, 주문 내역을 보여주기 위해 결제 정보를 가져와야할 때가 있다. 이전에도 아임포트 API를 이용한 결제창 연결을 포스팅했었는데 전에는 정말 날 것 그대로(?) 노가다를 통해 결제 정보를 넘겨주는 방식을 포스팅했었다면, 이번에는 API에서 토큰을 받아온 후, 받아온 토큰을 이용해 결제 정보를 가져오는 기능을 포스팅해보려 한다. 이 방법은 아임포트 API에서 결제 정보를 가져오는 것이기 때문에 정보가 더 정확하다는 장점이 있다. 결제 정보를 가져오려면 토큰과 주문 번호(merchant_uid)가 필요하다. (나는 주문 번호(merchant_uid)를 jsp > form에서 input 태그를 통해 넘겨주었다.) 구현 순서는 대략 이렇다. 1. 아임포트에서 결제 토큰 가져오기 2. 주문..

API 2021.01.05

API 아임포트 결제 API : ①결제창 연결하기

웹개발 프로젝트 시 굿즈를 판매하는 웹페이지를 만들면서 아임포트 API를 활용한 가상 결제 기능을 사용하게 됐다. 아임포트 API는 개발자를 위한 무료 결제연동 서비스로 사업자 등록증을 연결하면 결제가 가능하다고 하는데, 그것까진 시도해보지 않아서 모르겠다. 처음에는 API를 사용해본 경험이 별로 없어서 시작 전부터 이거 어떻게 풀어나가야하나 고민을 많이 했다. 그런데 하다보니 생각보다 어렵진 않았다. 참고로, 정통 방식은 결제 후 결제 정보 확인을 위해 API를 통해 결제 데이터를 가져오는 기능을 써야한다. 그런데 나는 결제 정보를 비공개로 넘기는 방식을 선택했다. 여기서는 1. 아임포트 API 시작하는 방법 과 2. 결제창 jsp 연결, 3. 결제창에서 결제 정보 비공개로 넘기기 를 포스팅할 예정이다..

API 2020.12.29

JavaScript/jQuery 클립보드 복사 : (공유)버튼눌렀을 때 주소 클립보드에 복사

웹 프로젝트를 진행하다가 공유하기 버튼을 눌렀을 때, 해당 페이지의 주소를 클립보드에 복사시키는 작업을 해야할 때가 있었다. (물론, 카카오/페이스북 등 다양한 방법으로 공유할 수 있지만 나는 클립보드에 해당 페이지의 주소 링크를 복사하는 방식으로 구현했다.) 처음에 이 부분 구현할 때 구글링 하느라 헤맸던 것 같은데, 알고보니 그렇게 복잡한 건 아니었다. 1. 버튼 태그에 class 이름 주기 / data-clipboard-text / onclick 이벤트 걸기 (공유)버튼 태그에 임의로 class 이름과 data-clipboard-text, onclick 이벤트를 걸어주어야 한다. 1 2 3 4 Colored by Color Scripter cs 1. class 이름주기 : 나는 class 이름을 g..

jQuery 2020.12.16

Java IO/equals() : 파일 내용 읽어온 후 equals()로 텍스트 비교

요즘 나는 전에 했던 연상퀴즈게임 프로젝트를 종종 손보고 있다. 오늘은 최근에 했던 정답비교(텍스트의 내용 비교)하는 부분을 포스팅해봐야겠다. 텍스트는 String 이기 때문에 내용 비교를 위해서는 아래와 같이 equals() 메소드를 써야 한다. (== 연산자는 주소값 비교) 1 2 3 4 5 6 7 8 String str1 = "몽몽"; String str2 = "몽몽"; if( str1.equals(str2) ) { //str1과 str2의 내용이 같다면 System.out.println("내용이 같다"); } else { //내용이 같지 않다면 System.out.println("내용이 같지 않다"); } Colored by Color Scripter cs 텍스트 내용 비교 예시 :equals()..

Java 2020.12.10

Java 타이머 : 멀티스레드를 이용한 10초 타이머

전에 했던 프로젝트를 다시 손보면서 멀티 스레드를 활용해 타이머를 작업하게 됐다. 구글링해보니 Timer와 TimerTask를 활용해 타이머를 구현하는 방법도 있었지만 나는 좀 더 쉬운 방식으로 구현했다. 내가 사용한 방식은 이해하기는 더 쉽지만 타이머를 제어하는 게 Timer랑 TimerTask를 이용하는 것보다 더 복잡한 듯 (로직 새로 생각해봐야함) 1. 스레드를 이용한 10초 타이머 클래스 생성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 int sec = 10; //타이머 시간 10초로 지정 class myTimer extends Thread { final long timeInterval = 1000; public void run()..

Java 2020.12.06