전체 글 98

[RN] Android13 (sdk33) 알림, 사진 접근 권한 설정하기

목차 - 문제 발생 배경 - 여러 가지 해결 방법 - 가장 간편한 해결 방법 문제 발생 배경 구글 플레이에서 안드로이드 SDK 버전 업그레이드가 강제되면서 Android 13(티라미슈) 으로 어플 버전을 올려 업데이트 하게 되었다. 초반에는 문제 없는 듯 보였으나, 서서히 밀려오는 CS 문의... " 사진 권한을 동의하라는데 어플 설정에 사진 권한이 없어요. " 뒤늦게 확인해보니 Android 13에서 파일 및 미디어 접근 권한이었던 항목이 이미지, 동영상, 오디오 권한 3가지로 분할 되었던 것이었다. 즉, Android13에선 이전 버전의 코드가 구동이 안된다....(그런 권한은 이제 존재하지 않으니까.....) 그리고 더불어, 기존엔 어플 다운로드 시 알림 on이 디폴트였는데 Android13이 되면..

[JS/React/RN] axios interceptors로 JWT 토큰 재발급 후 API 재호출 (feat. React-native Hook에서 사용하는 법)

목차 - axios interceptors 사용 시 장점 - JWT 토큰 요청 헤더에 넣어주는 법 - access, refresh token 만료 시 재발급 받기 - RN Hook에서 사용하는 법 Axios Interceptors를 사용하게 된 배경 및 장점 기존에는 api 요청을 보낼 때마다, 모든 요청에 JWT 토큰을 담은 header를 매번 넣어줬다. 개발 초기 단계일 땐 큰 문제가 없었지만, 유지보수와 업데이트를 하며 기능이 늘어 api 요청이 늘 때마다 중복된 코드가 계속해서 추가되었다. 100개가 넘어가는 api 요청 코드를 당장 뜯어고칠 수는 없었기에 현황을 유지했지만, 기존 코드는 JWT 토큰의 유효기간이 없다는 치명적인 단점이 존재했다...(100년이었으니 사실상 없는 거나 마찬가지) 이..

[Recoil] Recoil로 리액트 네이티브 컴포넌트 강제로 새로고침하기

목차 - recoil을 쓰게 된 이유, 장점 및 단점 -리액트 네이티브 RefreshControl + recoil selector 로 api 재호출하기 recoil을 쓰게 된 이유, 장점 및 단점 기존 프로젝트에서는 놀랍게도 state를 전역으로 관리하지 않았다(놀라움..) 따라서 개발 과정이 매우 번거로웠고, 매 페이지마다 회원 정보를 불러오는 api를 호출해야하는 치명적인 단점이 존재했다. 보다 효율 높은 유지보수를 위해 recoil을 사용하여 전역관리를 하기로 어렵게 결정하였다...! (사용법이 쉽고 요새 많이 쓰는 추세라서..) 무려 70개가 넘는 screen을 다 바꿔야했지만... 미래를 생각해서 진행하기로 했다. recoil selector를 사용했더니 loading 상태를 별도로 관리하지 않..

[nodejs] Error: Requires Babel "^7.0.0-0", but was loaded with "6.26.3". If you are sure you have a compatible version of @babel/core 에러 해결하기

레파지토리에서 clone받아온 파일의 모듈을 깔고, 실행을 해야하는데 npm install 부터 실패했다....... 뭔 짓을 해도 아래의 에러가 계속해서 발생하였다. 미치는 줄 알았다. Error: Requires Babel "^7.0.0-0", but was loaded with "6.26.3". If you are sure you have a compatible version of @babel/core babel도 지워보고 모듈을 깔았다 지웠다 반복했음에도 해결되지 않았다 --; 별의 별 짓을 다 해보면서 해결하게 됐는데, 안됐던 이유는 package.json에 다운로드한 모듈의 이름은 @babel/cli인데 열심히 npm uninstall babel-cli 를 하고 있었따 ^^; 본인이 설치한 라..

에러 해결 2022.11.29

[Ubuntu]Ruby: You don't have write permissions for the /var/lib/gems/2.7.0 directory 에러

깃허브 io를 위한 bundler jekyll 를 다운로드 해야했다. 그러려면 ruby언어의 명령어 gem이 필요한데 뭐가 잘 못 된건지 ruby가 설치가 됐는데도 gem을 실행하면 Ruby: You don't have write permissions for the /var/lib/gems/2.7.0 directory 에러가 발생했다. 해결 방법 sudo apt-get install ruby-full 위의 명령어로 ruby 설치를 했다면 echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bash..

에러 해결 2022.08.19

[typescript] NFT 토큰 민팅하는 dApp 간단히 구현하기

목차 - 디렉토리 구조 - 모듈 설치 및 기본 설정 - 구현 코드 - 결과 디렉토리 구조 모듈 설치 및 기본 설정 프론트 npx create-next-app@latest --typescript front npm i @chakra-ui/react @emotion/react@^11 @emotion/styled@^11 framer-motion@^6 npm install web3 샤크라라는 라이브러리를 사용해서 이미 만들어져있는 리액트 컴포넌트를 사용해서 편하게 작업할 것임 백 mkdir truffle cd truffle truffle init cd contracts npm init npm i openzeppelin-solidity truffle.config.js에서 development 주석 해제 https:..

[Remix IDE] Opensea 마켓에 NFT 토큰 생성해서 올려보기

목차 - NFT토큰과 그냥 토큰과의 차이점 - remix IDE로 NFT 토큰 생성해보기 - Opensea 마켓에 등록해보기 NFT토큰과 그냥 토큰과의 차이점 ERC 20 - Token fungible Token ERC-721 - Token Non-funfible Token fingible Token : 토큰을 값어치로 표현한다. 1개에 천원이면 2장 이천원 NFT - 토큰마다 가치가 다른 것. code로 구현하자면 어떤 느낌일까? 토큰이 생성될 때마다 고유키 값을 부여해주면 된다.(민팅) mint(msg.sender, 1) address) public owned; 가 존재한다. 키 값을 넣으면 계정주가 나옴. 영화관에 돈 넣으면 나오는 티켓처럼. 가치가 달라질 수 있음 (암표라던가.) 그래서 오늘 할 ..

[스마트 컨트랙트, open-zeppelin] 토큰 <-> 이더리움 스왑 구현해보기

목차 - ERC20 - open zeppelin - ERC20 변수타입, 메서드, 함수 - 직접 구현해보기 - 테스트 코드(jest) ERC20 이더리움에는 이더리움의 표준안을 만들기 위해 유저들이 의견을 내는 게시판같은 장소가 있다. 바로 Ethereum Improvement Proposals, EIPs이다.(EIPs 링크) 이 EIPs에는 Core/Networking/Interface/ERC의 네가지 카테고리가 있다. ERC는 Ethereum Request for Comment의 준말이다. 이 ERC20은 ERC 카테고리의 20번 글이다.(ERC20 링크) 이더리움의 창시자, 비탈릭이 제안한 코인 표준안이다. 인터페이스 규약이 정의되어있는 글이라 보면 된다. OpenZeppelin 이더리움 공식 문서..