글

Axios request 사용시 self signed certificate chain Error

이미지
 기존에 Axios를 통해 request 를 요청하던중 self signed certificate chain 에러가 발생해서 코드가 다운 되는 이슈가 발생했습니다. 해당 이슈에 대해 확인 해보던 중에 알게 된 사실은 OpenSSL 이슈라는 걸 확인해서 찾아보던 중에 해결 방법으론 2가지가 있는데  1. axios instance 생성시에 httpsAgent 세팅을 통해서 해결 하는 방법 2. NODE_TLS_REJECT_UNAUTHORIZED Environment 세팅을 통해 해결     NODE_TLS_REJECT_UNAUTHORIZED=0 REFERENCES https://github.com/axios/axios/issues/535

Docker build시에 특정 라인 캐싱 제거하기.

이미지
 Docker 빌드 시에 특정 라인 캐싱 제거하기. Docker compose를 사용해서 여러개의 container를 동일한 Dockerfile 파일을 사용해서 만들때, ARGS에 따라서 다르게 빌드 되어야하는 경우, 캐싱처리로 인해서 올바르게 동작하지 않는 이슈가 발생하였습니다. 그래서 이 이슈를 해결 하기 위해 사용했던 방법에 대해서 적을까 합니다. --no-cache Argument 추가하기. docker build시에 --no-cache 추가하면 기존에 캐시 되는 Docker image를 제거 할수 있음. CACHEBUST Argument 사용하기. no-cache의 경우는 모든 Docker image cache를 제거 해서 파일은 업데이트 되는데 필요 없는 라인까지 업데이트 되는 경우가 발생.  CACHEBUST를 사용할 경우 해당 라인 밑에 있는 docker command에 대해서 캐시 처리 없이 항상 실행 됨. 저의 경우 barbel-node 를 사용하는데 그때 CACHEBUST를 추가해서 항상 코드가 업데이트 되도록 세팅함.

June Leetcode

2020/06/15 Cheapest Flights Within K Stops week-2-june-8th-june-14th Which language are used python3 How to solving Graph를 만들고, BFS를 사용해서 Graphql를 순회하면서 min_price를 찾고, 리턴하는 방식으로 개발함. Code class Solution: def findCheapestPrice(self, n: int, flights: List[List[int]], src: int, dst: int, K: int) -> int: # dp = value, step n = len(flights) dp = collections.defaultdict(list) for u, v, w in flights: dp[u].append((v, w)) queue = [] queue = [(src, 0, 0)] min_price = 100000 while len(queue): cur, queue = queue[0], queue[1:] cur_dst, cur_price, cur_step = cur if cur_dst == dst: min_price = min(min_price, cur_price) continue if cur_step<=K and cur_price<=min_price: for d, price in dp[cur[0]]: queue.append((d, price + cur_price, cur_step + 1)) ...

Ruby EBS Platform에서 webpacker not found 이슈 해결하기.

이미지
이번에 적어볼 내용은 Elastic Bean Stalk(EBS) 에서 webpacker not found 이슈 해결하기. 해당 내용을 적는 이유는 기존에 rails를 EBS ruby 2.6 버전에서 작업후 배포 하는 중에 webpack을 찾을수가 없다는 이슈가 발생하였고, 해결하기 위해 log를 찾아보던 중에 기존에 EBS instance에 설치 되어있는 노드 버전이 6으로 설정 되어있어 특정 패키지가 설치 되지 않아서 서버가 동작하지 않는 이슈였습니다. 그 후 구글을 통해 많은 검색을 해서 Node version을 업데이트 하는 스크립트를 찾아서 작성을 했습니다. 이게 초반에 구글을 통해 작성해서 넣었던 스크립트 내용입니다. TODO      EBS Container 스크립트를 통해 Node 업데이트하기. VERSION 1 아래 보시는 스크린샷이 초반에 노드 버전을 container에서 업데이트 하기 위한 초기 스크립트 입니다.  간단하게 설명 드리면 스크립트에 대해서 설명 해 드리면 Node를 curl을 통해 다운받아서 yarn 을 통해 nodejs와 yum을 업데이트 하는 스크립트 입니다. 해당 스크립트 사용시에도 여전히 node version이 업데이트 되지 않는 이슈가 있었습니다. RESULT     FAILURE DEBUG 해당 이슈에 대해 확인해보니  container를 통해서 12버전의 node를 다운 받았더라도,  yum -y install nodejs command 실행시에 기존에 다운 받은 6버전과 충돌 이 발생해 여러개의 repository가 있어서 업데이트 할수 없다는 이슈였습니다. VERSION 2 Version1에서 발생한 이슈를 해결 하기 위해 container에서 node 설치시에 기존에 설치 되어있는 nodesource repo를 제거 하고 배포하는 방식으로 변경하였습니다. 해당 내용은 기존에 node repo를 다운받기 전에 nodesource-re...

GitLab에서 dependatbot 연동하기.

이미지
GitLab에서 dependency 관리하기. 개인 프로젝트에서 github을 사용하고 있는데, 어느날 github을 통해 어느날 dependency 이슈가 될수 있거나,  오래 되서 업데이트가 필요한 libary에 대해서 알람 및 자동 PR까지 만들어서 알려주는 서비스가 있어서 이걸 gitlab에 적용하는 과정을 적을까 합니다.  그렇게 어렵지는 않고,  순서대로 따라만 하면 됩니다.  이걸 통해서 오래된 lib에 대한 변경을 조금이라도 빠르게 하면 좋겠네요. 요구사항 * gitlab access_token * forked  dependabot   project * dependency를 체크할 gitlab project 실행 순서 * dependatbot 프로젝트 fork해서 내 gitlab에 project 생성하기 * 내 계정 세팅에서 access_token 생성하기. * dependabot을 통해 생성된 프로젝트로 가서 settings/variables에 GITLAB_ACCESS_TOKEN 환경변수 세팅하기 * CI/CD에서 scheduler 생성하기. 프로젝트 생성하기 dependabot에서 사용할 gitlab access token 생성하기 dependabot에서 gitlab 환경 변수 세팅하기. scheduler에서 dependabot에서 사용할 환경 변수 세팅하기. TIPS 저의 경우에는 프로젝트 root에 있지 않고, 폴더 안에 package.json 파일이 있어서 찾아보니, 밑에 문서에는 없지만 DIRECTORY_PATH 라는 variable 세팅을 통해서 원하시는 폴더로 접근이 가능합니다. 저는 아래 링크를 참고해서 작업하였습니다. https://bobbybouwmann.nl/blog/dependabot-on-gitl...

Next.js 프로젝트 Firebase에 hosting 배포하기.

이미지
Next.js 프로젝트 Firebase에 배포하기. Why i Wrote This Posts 지난번 Apps script를 사용해서 Firebase 에 디비 연결하기 포스트에 이어서  이번에 Frontend로 사용한 Next.js를 Firebase에 배포하는 작업에 대해서 적을까 합니다.  이 방법은 정말 배포에 대해서만 말하고 있어서, 내용이 짧을수도 있을것 같습니다. 이 내용에 대해서 적는 이유는 저처럼 삽질을 하는사람이 적었으면 하는 바람에서 적습니다. How to work about next.js to deploy to firebase 이 글을 적기 전에 Next.js를 Firebase에 배포하기를 구글에 찾아보면 Firebase 에 있는 Function을 통해서 Next에 연결할수 있는 API를 만들고, hosting에서는 rewrite로 hosting으로 요청이 왔을 경우에 API로 redirect하는 형태로 배포가 진행 됩니다. Step Create Firebase Function Create Firebase Hosting use dummy `public` folder When attached hosting API Redirect to Function API Endpoint 이유는 기존에 react 의 다르게 `next build` 를 통해서 빌드시에 html 파일을 만들지 때문에 static file만 지원하는 firebase hosting에서는 파일을 읽을수 없다는 이슈가 나옵니다. 그래서 유명한 github 프로젝트에서도 public/ 폴더를 강제로 만들어주고,  거기안에 의미 없는 html 파일을 하나 넣어줘서 해결하였습니다. 이렇게 할 경우 API와 static에 대한 처리를 둘다 할수 있다는 장점이 있지만, 저의 경우에는 배포도 느려지고,  설정도 복잡해져서 제가 사용할려고 설치한 deps 들을 잘 찾지...

Apps script 이용해서 Firebase에 데이터 업로드 하기.

이미지
Apps script로 데이터 관리하기!!  이번에 새로운 파일럿 프로젝트를 들어가면서 개발자 한명 !! 이서 모든걸 관리해야하는 상황 이 왔습니다.  그 개발자가 바로 저였습니다. :( 그래서 일단 요구사항에 대해 생각 해보도록 하였습니다. * Something storage for saving information. * Web Hosting. * Frontend page. * Serving something for communicate between Database and Frontend. * Authentication.  음.. 그럼 필요한게 * Backend * Frontend * Infra * Database * Database Tools. 이정도 인것 같은데, 이걸 다 혼자 할 경우 Timeline에 원하는 기능을 만들지 못할것 같다는 생각을 했습니다. 그럼 어떻게 해야 줄일수 있을까? 생각하다가 담으로 생각한게 그럼 Infra를 줄여보자라고 생각해서 Serverless로 API쪽 개발을 하고 Frontend랑 묶어주자!! 라는 생각이 들었습니다.  그 이후에 그럼 Database Scheme는 어떻게? 제일 편한건 Mysql인데 이걸 쓰면 되나? 그럼 관리는?  디비는 어떻게 보여주지? 어드민은? 그냥 Client로 접근하라고 할까? 그럴경우 SQL을 가르쳐줘야하는데, 모를텐데 이런 생각이 들었습니다.  결국 주저리 주저리 했지만, 제가 정한 최종 스펙은, * Something storage for saving information. -> Firebase database, Apps scripts, Google Spread sheets * Web Hosting. -> Firebase hosting * Frontend page. -> React * Serving...