분류 전체보기 66

MongoDB 간단한 데이터 마이그레이션 방법 (덤프 / 리스토어를 통한 마이그레이션)

몽고디비에서 간단한 마이그레이션 작업을 진행했는데 그 방법을 기록해두려고 한다.하는 방법은 간단한데 먼저 Dump라는 작업을 진행해서 기존 디비 데이터를 내 로컬에 백업으로 복제를 해두고Restore라는 작업을 통해서 새로 만든 클러스터의 데이터베이스로 넣어주게 된다. 1. 먼저 터미널을 내 프로젝트 작업 경로로 맞춰준다.(vs코드나 커서 등 개발환경에서 보통 그 경로에서 작업하므로 그 경우 따로 세팅안해줘도 됨) 2. 덤프 관련 명령어를 아래와 같이 입력한다.mongodump --uri="mongodb://localhost:27017/design-market" --out=./backup 여기서 mongodb://localhost:27017/ 여기까지는 몽고디비 Compass의 기본 로컬 주소이며desi..

Paddle을 이용한 결제 기능 구현 (VAT 계산, 영수증 발행 등 결제 관련 문제 한번에 해결!)

준비하고 있는 서비스의 정책을 짜던 중 깊은 고민에 빠졌었다.글로벌 서비스로 준비 중인데, 부가가치세(VAT) 부분이 각국마다 세법이 다르다는 점!장기적으로 봤을 때 이 부분을 해결하지 않고서는 비즈니스에 차질이 생길 것으로 예상되었다.그래서 gpt와 이런저런 상담을 하던 중 Paddle이라는 서비스를 알게 되었다. 이 서비스를 사용하면 vat 부분을 Paddle이 알아서 처리해준다는 것이었다!이것은 Paddle이 MoR(상점 기록자, Merchant of Record)이라는 서비스를 제공하기 때문인데상점과 고객 간의 거래에 있어서의 모든 세무 처리나 법적 책임, 통화 처리 등을 대신해서 처리해주는 비즈니스이다.이런 MoR서비스는 현재 나와같이 국제 상거래 비즈니스를 함에 있어여러가지 법적, 세무적 문제..

개인 사업자 등록하는 방법 (홈택스에서 간편하게 온라인 신청)

진행하는 개인 프로젝트를 좀 더 프로페셔널하게 진행하기 위해 오늘 사업자 등록을 진행했다.홈택스에서 온라인으로 간편하게 진행할 수 있었어서 그 방법을 많은 분들과 공유해보고자 이렇게 포스팅으로 남겨본다. 먼저 홈택스에 접속하고 '증명 등록 신청' 탭에서 개인사업자 등록 신청을 찾아서 들어간다.(이 이 화면에 들어가려면 이전에 본인인증 과정을 거친다.) 그러면 이런 식의 간단한 기본정보 + 설문 형태의 사업특성 조사를 진행한다.나의 정보와 사업 특성에 따른 선택을 잘 진행해서 다음 페이지로 넘어간다. 그러면 이런 사업자 등록신청 페이지가 뜨는데 여기가 메인 정보들을 입력하는 곳이다.대부분 큰 어려움 없이 입력할 수 있다. 잘 모르는 부분은 도움말을 눌러보면 상세한 설명이 되어있다. 이 페이지에서 ..

생활 팁 2025.02.16

페이팔(Paypal) 결제 기능 구현하기 (Sandbox를 활용해서 테스트 버전 만들기) #javascript #nodejs #paynemt

준비 중인 프로젝트에 글로벌 페이먼트를 구축하는데 있어서 스트라이프로 개발을 진행했었다.페이팔이 국내 계정으로 결제할 수 없다는 이유가 있어서 그렇게 진행을 했었는데당시 챗GPT에게 물어보니 스트라이프는 문제가 없다고 해서 그렇게 개발을 진행했었다. 그런데 이게 왠걸..스트라이프는 알고보니 더 큰 문제가 있었다.국내 사업자는 스트라이프로 사업을 할 수 없다는 사실 @ㅁ@;;바보같게도 뒤늦게 이 사실을 알게되어서 어쩔 수 없이 개발 방향을 페이팔로 선회했다.(ai가 천연덕스럽게 거짓말을 잘하기 때문에 조심해야 한다.) 페이팔은 샌드박스의 미국 계정을 만들어서 진행해야해서 초반에 좀 번거로운 부분이 있다.(한국 계정으로 하면 튕기게 된다. 규제가 좀 풀렸으면...) 먼저 페이팔을 가입 후 개발자 대쉬보드로 ..

history.replaceState()와 pushState() 그리고 popstate로 브라우저 앞으로가기/뒤로가기 제어하기

하고있는 프로젝트가 점점 복잡해짐에 따라 라우팅 처리, 앞으로가기/뒤로가기 처리도 점점 난이도가 높아져갔다.특히 앞으로가기뒤로가기 처리를 하는데 있어서 햇갈렸던 개념이바로 history.replaceState()와 history.pushState() 그리고 popstate 였다. 일단 history.replaceState()와 history.pushState() 이 두 가지 부터 살펴보면이 두 개는 브라우저 히스토리 api에서 제공하는 중요 메소드이다.페이지나 상태를 히스토리에 남기는 방식인데 그 방식을 푸쉬할 것이냐 리플레이스 할 것이냐의 차이이다. history.pushState(state, title, url) 파라미터에는 위 구조의 인자들이 들어가는데 주로 state와 url위주로 들어간다.his..

자바스크립트로 PDF 다운로드, 프린트 기능 구현하기

개인 프로젝트를 구축하면서 영수증 발행 기능을 구현했고그 과정에서 유저가 영수증을 보관할 수 있게 하기 위해 PDF다운로드와 프린트 기능을 추가했다. pdf다운로드의 경우 라이브러리 스크립트를 사용하면 매우 쉽게 구현할 수 있다.먼저 html에 이 스크립트를 추가. script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js">script>    // PDF 다운로드 이벤트 리스너 추가 const downloadButton = document.getElementById('download-receipt'); if (downloadButton) { downloadButton.addEventListener..

자바스크립트를 이용한 모달(Modal) 창 켜고 끄기

웹 서비스를 설계하다보면 자주 사용하게 되는게 바로 모달(modal) 창 기능이다. 유저가 라우팅에 의한 페이지 이동을 해서 처리하기에는 애매한...간단한 정보를 보거나 간단한 액션 처리를 하는데 유용하다. 모달창을 켜고 끄는 것은 새로운 기술을 사용하다기보다는그냥 기존 ui 위에 새로운 ui를 덧대서 보여주는 기능이라고 보면 된다. 덧대서 보여주는 것을 영어로 오버레이(overlay)라고 표현하기 때문에모달 오버레이라고 부르기도 한다.export async function getContactModal() { const existingModal = document.getElementById('contact-modal'); if (existingModal) { existingModal.remove(); }..

디자인 마켓플레이스 - 주요기능 1차 개발 + 스켈레톤 + 기본 예외처리 적용

디자인 마켓플레이스 프로젝트 1차 개발물에 기본적인 예외처리를 적용하고 코드들을 한번 점검하는 시간을 가졌다.// 에러 메시지 상수 정의export const SYSTEM_MESSAGES = { // 에러 general: "We're having trouble with our service", category: "Unable to load categories", asset: "Unable to load assets", collection: "Unable to load collection", cart: "Unable to load cart", orderSummary: "Unable to load order summary", api: "Server communication error", cartDuplica..

웹컴포넌트를 파라미터를 통해 콘텐츠 제어하기

웹컴포넌트를 파라미터를 통해 콘텐츠 제어하는 예시를 기록해둔다.이렇게 하면 간단하게 파라미터 값으로 컴포넌트를 효과적으로 사용할 수 있다. class FooterComponent extends HTMLElement {    static get observedAttributes() {        return ['company-logo', 'copyright', 'reg-number1', 'reg-number2', 'ceo', 'width', 'visible'];    }    constructor() {        super();        this.companyLogo = '';        this.copyright = '';        this.regNumber1 = '';        thi..