전체 글
-
프로그래머스 / lv2 / 카펫Algorithm 2020. 2. 19. 15:34
문제 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 빨간색으로 칠해져 있고 모서리는 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 빨간색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 빨간색 격자의 수 red가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. ====================================================================================================== 제한사항 갈색 격자의 수 brown은 8 이상 ..
-
프로그래머스 / lv2 / 라면공장Algorithm 2020. 2. 19. 14:29
문제 라면 공장에서는 하루에 밀가루를 1톤씩 사용합니다. 원래 밀가루를 공급받던 공장의 고장으로 앞으로 k일 이후에야 밀가루를 공급받을 수 있기 때문에 해외 공장에서 밀가루를 수입해야 합니다. 해외 공장에서는 향후 밀가루를 공급할 수 있는 날짜와 수량을 알려주었고, 라면 공장에서는 운송비를 줄이기 위해 최소한의 횟수로 밀가루를 공급받고 싶습니다. 현재 공장에 남아있는 밀가루 수량 stock, 밀가루 공급 일정(dates)과 해당 시점에 공급 가능한 밀가루 수량(supplies), 원래 공장으로부터 공급받을 수 있는 시점 k가 주어질 때, 밀가루가 떨어지지 않고 공장을 운영하기 위해서 최소한 몇 번 해외 공장으로부터 밀가루를 공급받아야 하는지를 return 하도록 solution 함수를 완성하세요. dat..
-
GCP app engine deployToday I Learned 2020. 2. 7. 15:07
문제 이번 프로젝트는 Amazon AWS가 아닌 GCP app engine을 이용해 deploy를 시도해보았다. gcloud SDK를 설치하고 command line 만을 이용해서 프로젝트를 생성하고 로컬 환경에 있는 프로젝트를 원격으로 deploy 할 수 있다. 해결 package.json app.yaml 설치 및 방법 출처 https://cloud.google.com/appengine/docs/flexible/nodejs/runtime Node.js 런타임 | Node.js 문서용 App Engine 가변형 환경 | Google Cloud 개요 Node.js 런타임은 애플리케이션의 코드 및 종속 항목을 설치하고 애플리케이션을 실행하는 소프트웨어 스택입니다. 이 런타임은 app.yaml에서 runtim..
-
Youtube data API quota limitToday I Learned 2020. 2. 5. 11:47
문제 유튜버 랭킹 웹 서비스 프로젝트는 youtube에서 제공하는 API를 얼마나 잘 활용하느냐에 따라 프로젝트의 성공 여부가 갈린다고 해도 과언이 아니다. API 사용 연습 도중, 문제점이 발견되었다. youtube에 따로 요청을 하지 않으면, APP KEY 당 하루 할당량이 10000이라는 사실이다. 10000이라는 수치가 요청 10000번이 아니고 요청에 따라 가중치를 달리 주기 때문에 꽤 적은 숫자라는 것을 알 수 있다. 해결 https://developers.google.com/youtube/v3/determine_quota_cost YouTube Data API (v3) - Quota Calculator | Google Developers YouTube Data API (v3) - Quota ..
-
Github issue의 중요성Today I Learned 2020. 2. 5. 11:37
문제 유튜버 랭킹 웹 서비스 프로젝트 개발 중, 업데이트 이전의 데이터들을 백업할 필요성이 생겼다. 기존에 mongoose의 메소드를 이용해 구현할 수 있으나, 다른 개발자가 모듈화하지 않았을까 하는 생각해 npm을 둘러봤다. 역시 mongodb-backup 이라는 모듈이 존재했다. 그러나, 비어있는 폴더만 생성되는 문제가 발생했다. 해결 구글링한 결과, 이 모듈에서 사용한 메소드가 더이상 mongodb에서 지원하지 않아 폴더만 생성하고 백업 데이터는 나오지 않은 것이였다. 2 가지 방법이 있는데 첫 번째는 mongoose를 다운그레이드하는 방법. 두 번째는 다른 누군가가 구현한 개선된 모듈을 사용하는 것이다. 한번도 찾아본 적 없는 issue를 둘러보니 모든 해결책이 존재했다. 다운그레이드 했더니 정상..
-
socket.io를 이용한 채팅 서비스 구현Javascript/Node.js 2020. 1. 29. 14:19
schema 본 프로젝트에서는 nosql인 mongoDB를 사용했다. 스키마 설계는 다음과 같이 하였다. Room은 채팅방에 관한 정보가 들어있으며, 비밀번호가 있으면 비밀방이다. Chat에 존재하는 room을 이용해 Room schema를 참조할 수 있다. packages 소스 코드(핵심) app.js socket.js 실행화면 출처 https://github.com/zeroCho/nodejs-book ZeroCho/nodejs-book Contribute to ZeroCho/nodejs-book development by creating an account on GitHub. github.com
-
socket.ioJavascript/Node.js 2020. 1. 28. 15:02
socket.io ws 모듈과 비슷하나 편의 기능들이 많이 추가되어 있어 많이 사용한다. socket.js connection 이벤트는 클라이언트가 접속했을 때 발생하고, 콜백으로 소켓 객체를 제공한다. socket.id로 소켓 고유의 아이디를 가져올 수 있다. disconnect, error는 기존에 존재하는 이벤트이며, reply와 news는 사용자가 직접 만든 이벤트이다. 클라이언트에서 reply라는 이벤트명으로 데이터를 보낼 때 서버에서 받으면 해당 이벤트 리스너를 호출한다. views/index.pug /socket.io/socket.io.js는 socket.io에서 클라이언트로 제공하는 스크립트이다. 스크립트가 제공하는 io 객체에 서버 주소를 적어 연결한다. ws 프로토콜이 아닌 http 프..
-
웹 소켓Javascript/Node.js 2020. 1. 28. 14:41
웹 소켓 HTML5에서 새로 추가된 스펙으로 실시간 양방향 데이터 전송을 위한 기술이다. HTTP와 다르게 WS라는 프로토콜을 사용한다. 이전에는 폴링이라는 방법(HTTP가 클라이언트에서 서버로 향하는 단방향 통신으므로 주기적으로 서버에 새로운 업데이트가 없는지 확인하는 요청을 보내, 있다면 새로운 내용을 가져오는 단순무식한 방법)을 사용했으나 브라우저와 웹 서버가 지속적으로 연결된 라인을 통해 실시간으로 데이터를 주고받을 수 있는 웹 소켓이 등장했다. 업데이트할 내용이 생겼다면 바로 클라이언트에게 알려준다. 그리고 HTTP 와 포트를 공유할 수 있어 다른 포트에 연결할 필요도 없다. socket.io는 웹 소켓을 편리하게 사용할 수 있는 라이브러리이다. ws 모듈 bin/www express 서버와 웹..