just-coding-it 썸네일형 리스트형 PayPal 결제 API 사용 후기 아직까진 시스템에 적용해서 배포한건 아니다. 지금 개발중인 크롬 익스텐션의 BM을 구독으로 하려고 한다. 그 과정에서 회원 관리는 Firebase Authentication을 사용하고 구독 결제는 PayPal의 Subscription시스템을 이용하려 한다. 그리고 user_id와 subscription_id의 매칭은 Firestore Database에 저장해서 관리하고 간단한 백엔드는 Firebase Functions로 구성해서 개발공수를 최대한 줄이고 시스템을 이용하려했다. PayPal을 사용하기로 결정한 이유는널리 쓰여지고있는만큼 기존 사용자가 많아서 고객들이 좀 더 결제하는데 어려움을 덜 느낄거라고 생각했다한국의 다른 결제 서비스들은 구독과 같은 정기결제를 적극적으로 지원해주는 곳이 없다. 카드 .. 더보기 python패키지 관리를 poetry로 해보자 지금까지는 pip을 사용해서 python패키지 관리를해왔다. 그 과정에서 불편했던 점들이 있었고 그런 문제를 해결할 수 있었던 npm같은 패키지 관리툴이 부러웠다. 기존에는 다운로드했던 패키지들을 pip freeze > requirements.txt로 export한 후에 다른 작업공간에서 pip install -r requirements.txt로 불러들였다. 혹시라도 pip install로 설치해놓고 깜박해서 pip freeze를 해두지 않으면 문제가 생길수밖에 없는 구조이다.또 기존에는 pip install을 통해 새로 패키지를 추가할때마다 기존 패키지의 버전을 보장할수 없었다. 예를들어 어떤 패키지가 requests그리고 기존 방법으로는 개발환경에서만 설치하는 패키지를 분리할수 없었다. black, .. 더보기 integrity나 crossorigin속성은 어떤일을 하는걸까 bootstrap이나 react 등과 같은 라이브러리를 cdn을 통해 불러올때 자주 확인할 수 있는 속성이 있다.바로 integrity와 crossorigin 속성이다. 이 둘이 어떤 역할을 하는지 알아보자. 우선 crossorigin속성은 말 그대로 크로스 오리진 요청(CORS, Cross-Origin Resource Sharing) 처리를 제어한다. integrity없이 이 속성만 사용할수도 있지만 integrity속성이 있으면 crossorigin속성이 수반된다. 값으로는 두 가지 값을 가질수 있다.anonymous: 인증 정보를 포함하지 않고 요청use-credentials: 쿠키나 인증 정보를 포함하여 요청integrity속성은 CDN에서 제공되는 파일이 악의적으로 수정되거나, 전송 중 변조되지.. 더보기 firebase authentication을 이용하여 회원가입 및 로그인을 구현하자 OAuth2.0을 사용한 회원가입 및 로그인은 거의 동일한 구조로 구현된다. 이 기능을 내가 직접 구현할 필요없이 firebase에서 제공하는 firebase authentication을 이용하면 간단하게 구현할수 있다. 당연히 firebase회원가입이 되어 있어야하고 로그인해서 프로젝트를 만들어보자프로젝트가 만들어지면 들어가서 Authentication에 들어가서 "시작하기" 를 해보자보다시피 다양한 로그인 방법을 추가할 수 있다. 나는 Google로그인만 추가해서 관리할 생각이다.이렇게 "사용 설정" 토글을 on으로 해서 나머지 정보를 채워두면 된다. 이제 간단히 코드를 구성해서 회원가입을 할 수 있도록해보자.웹용 코드를 생성할생각인데, 프로젝트 설정에 들어가보자.태그 모양이 웹 전용 코드다.호스팅은.. 더보기 내가 만든 javascript 코드의 난독화를 해보자 요즘은 javascript를 사용하여 여러 프로덕트를 만들수 있다. 웹 프론트뿐만 아니라 크롬 익스텐션을 만들어서 배포할수도 있고 electron기술을 사용해서 데스크톱 프로그램을 만들어서 배포할수도 있다. 그런데 이렇게 만들어서 배포한 프로그램. 역공학이 너무 쉽지는 않을까. 위에 기술한 웹 기반 프로그램들은 본질적으로 javascript코드가 공개될수밖에 없다. 완벽하게 보호하진 못하더라도 난독화를 통해 역공학을 어렵게 만드는 방법을 알아보자. javascript-obfuscator라는 라이브러리를 사용해서 난독화를 할 수 있다. 특히 나는 vite를 사용해서 빌드를 했기 때문에 vite-plugin-javascript-obfuscator라는 plugin을 추가하는 방법으로 난독화를 했다. 아래는 v.. 더보기 가계도는 어떤 자료구조로 저장하고 시각화 할 수 있을까 문득 가계도를 그리는 프로그램 아이디어를 떠올리고는 바로 설계를 시작해봤다. 그런데 가족계보를 어떤 구조로 저장을 해야할까. 자료조사를 해봐도 특별히 관련 자료를 찾기 어려웠다. 시각화 라이브러리도 가계도에 최적화된 라이브러리는 찾기 어려웠다.챗GPT가 FamilyTreeJS 라는 솔루션도 추천해줬는데 유료에다가 내가 구상한 기능을 모두 소화해내진 못했다. 조금더 자료조사를 해보고 관련한 오픈소스가 없다면 직접 라이브러리를 만들어볼 생각이다. 더보기 카카오 로그인을 구현해보자 우리가 흔히 사용하는 구글이나 카카오 등의 로그인. 이런 로그인을 구현하려면 어떻게 해야할까.우선 이러한 기능들은 oauth2.0 프로토콜을 따른다. 웹상에서 구현해볼건데 플로우를 간단히 요약하면 아래와 같다. 1. 카카오 로그인을 누른다.2. 카카오 로그인 페이지로 이동한다. (우리 페이지로 다시 돌아올수 있도록 redirect_url을 적어준다.)3. 카카오 로그인이 완료되면 redirect_url로 리다이렉트 된다. 이때 현재 url의 쿼리스트링을 확인해보면 authorization code를 가지고 있다.4. authorization code를 가지고 access token을 발급받는다.5. access token을 가지고 kakao의 다양한 api를 사용한다. 우선 kakao developers.. 더보기 파이썬으로 네이버 웹툰을 압축해보자 지난번엔 네이버 웹툰을 다운로드 하는 과정을 경험해봤다. 파이썬으로 네이버 웹툰을 다운로드 받아보자 오늘은 네이버 웹툰을 다운로드 해볼 예정이다. 네이버 웹툰은 처음 응답받는 HTML에 모든 이미지 src가 들어있기 때문에 굉장히 쉽게 다운로드 받을 수 있다. 시험대에 오를 작품은 호랑이형님 1 f-three.tistory.com 이번엔 파일 하나하나를 파일로 만들지 않고, 바로 압축파일로 저장해보도록 하겠다. 파이썬에서는 압축하는 기능을 ZipFile이라는 클래스를 통해서 제공한다. 간단하게 사용법을 보면 아래와 같다. from zipfile import ZipFile with ZipFile('test.zip', 'w') as zf: file_name = 'test.txt' zf.write(file_n.. 더보기 이전 1 2 다음