글

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...

React app Amazon s3에 배포하기.

이미지
React app Amazon s3에 배포하기. 이번에 2주 동안 어드민 사이트를 개발 하게 되면서 Frontend 단에 있었던 문제나 해결 방법에 공유할까 합니다. 2주동안 가능할수 있었던 이유는 따로 대시보드 차트에 대한 페이지 가 따로 필요하지 않았고, 단순한 페이지 2개에 대해서 읽기, 쓰기, 수정에 대한 기능만 지원하면 되어서 2주 동안 개발을 완료할수 있었습니다. 개발에 사용한 스펙의 경우에는 Design coreui bootstrap reactstrap Frontend 는 React Redux Redux-thunk Redux-logger React-router Backend Node.js express mysql sequelize Deploy Frontend : AWS s3 를 통해 static html 을 서빙하는 방식 Backend : docker + elastic beanstalk 을 통해서 배포하였습니다. 이런식으로 구성했으며, 지금은 Frontend에 배포에 대해서 설명할까 합니다. 이게 제일 쉽고, 제가 처음 하던 작업이라 메뉴얼 하게 한 부분도 몇개 있거든요. Requirements AWS 계정 amazon console command coreui에서 제공하는 react 버전의 app https://coreui.io/react/ 일단 이정도만 가지고도 충분히 배포는 가능할것 같네요. Steps 배포 과정은 간단합니다. AWS에서 호스팅 관련된건 다 지원해주고, react-scripts에서 build를 통해 static 페이지로 바로 나올수 있도록 지원해줘요. AWS bucket 생성 AWS bucket에 대해서 public으로 권한 변경 static hosting 기능 켜기. frontend 프로젝트에서 npm run build 명령어 실행. aws s3 sync build/ s3://MY_BUCKET_NAME --acl public-read ...

RubyOnRails 배우기. #1

RubyOnRails 배우기. Python을 배웠던 내가 Ruby을 배워야 겠다고 생각한 이유는, 반 프리랜서로 지내면서  외국에서 일을 하고 싶다는 생각에 외주를 찾아보거나 외국의 회사를 찾아보고 있었는데, 생각보다 Ruby개발자를 찾는 needs가 너무 많이 있었고, Python에 대한 Needs는 생각보다 적어서 Rails를 할수 있을 경우에 얻을수 있는 JOB이나 TASK들이 생각보다 많았습니다.  그래서 이참에 Ruby를 공부 하면서 Django와 비교해서 어떤게 좋은지 아니면 어떤게 불편한지 (지극히 개인적인 생각입니다)에 대한 이야기를 할까 합니다.  RubyOnRails의 스터디의 경우는 기존에 제가 했던 Python Django와 비교해보면서 공부할 예정이고,  짧게는 1주~2주정도로 Tutorial을 익힌 다음에 Django로 되어 있는 Side project를 Ruby + React기반의 프로젝트로 옮기는 작업을 진행하면서,  RubyOnRails에 대한 심화공부를 진행 할것 같습니다.  모든 코드는 Github에 올라와있습니다. 기존 Django Project에 대한 github주소 공부하고 있는 Rails에 대한 코드 https://github.com/bongster/RubyOnRailsTutorial 1. RubyOnRails Tutorial 따라 하기. https://guides.rubyonrails.org/getting_started.html 처음에는 RubyOnRails 에 있는 Tutorial 그대로 따라 하는 방법으로 진행하겠습니다. 아마 web site에 있는걸 따라 하는 수준이라서 따로 공유 드릴것이 없을것 같은데, 하다가 문제가 발생하거나 이슈가 발생하면 그때 맞춰서 따로 적도록 하겠습니다. 여기서 부터 gem install rails를 실행하고 rails new blog 라는 명령어를 입력시 `sudo`로 해달라는 이슈...