전체 글

전체 글

    Node.js(express) koyeb에 배포하기

    Node.js(express) koyeb에 배포하기

    토이 프로젝트로 진행하던 Subway Tour가 이런저런 일들로 개발이 딜레이 되고 있었다. [React] SubwayTour - 1. Firebase 연동 여자친구와 데이트를 하던 중, 서울의 지하철 역을 모두 한번씩 놀러가자는 얘기가 나왔다. 가봤던 역들을 일일히 설정하기도 어렵고, 새로운 역을 정하는 것도 어렵다고 생각해 개발자의 장점 velog.io 원래 년초에 완성해서 배포까지 마무리하려고 했지만 4월이 1/3이나 지나간 지금도 구현해야 할 것들이 산더미이다. 일단은 MVP(Minimum Viable Product)라고 부를 정도는 구현이 완료되었기에 일단은 배포를 해보고자 한다. 위의 블로그 글에서는 React와 Firebase만 사용해서 서버리스한 어플리케이션을 만들었지만, 회사에서 Node..

    개발자의 글쓰기

    개발자의 글쓰기

    학교 전공 수업 중에 "과학과 기술 글쓰기"라는 글쓰기 수업이 있었다. 글쓰기를 좋아하지 않아 이과를 선택했던 나에게 또다시 글쓰기를 해야 한다는 사실은 달갑지 않은 소식이었다. 수업을 나름 열심히 들었지만 성적이 좋지 않았고, 결국 재이수를 하게 되었다. 그 후로 글쓰기는 앞으로 인생에 없을거라 생각했는데, 남들 다 하는 기술 블로그를 하게 되면서 글쓰기 능력을 기를 필요가 있었다. 회사에 출근한 어느 날, 동기가 개발자의 글쓰기라는 책을 가지고 있길래 이걸 보고 기술 블로그를 좀 더 체계적으로 써보자! 하는 마음으로 훔쳐가듯 빌려왔다. 책을 읽고 나서 가장 충격받았던 사실은 개발자에게 글쓰기는 숨 쉬는 것과 같다는 것이었다. 코드를 작성하는 것도 글쓰기, 코드 리뷰도 글쓰기, 주석, 제안서, 릴리즈 ..

    JavaScript Immutability

    JavaScript Immutability

    다른 언어와 마찬가지로, 자바스크립트에도 불변성(Immutability)라는 것이 존재한다. 불변성은 함수형 프로그래밍을 만드는 기초적이면서도 핵심적인 원리이며, 불변성을 통해 의도하지 않았던 side effect를 줄일 수 있다. 이름에 대한 불변함 // 기존 코드 var a = 1; console.log(a); // 1 위와 같은 코드가 있다고 가정해보자. 실제로 일을 할 때는 여러 사람이 하나의 파일에서 작업을 할 가능성이 굉장히 많다. // 누군가의 손을 거친 코드 var a = 1; ... // 무수히 많은 코드 a = 2; console.log(a); // 2 중간에 누군가 a에 2를 할당함으로써 원래 a라는 변수를 선언한 사람의 의도와는 다른 값이 출력되고 있다. 이를 방지하기 위해 JS에서..

    Next.js에서 dotenv 사용하기

    서버 주소, API key 등과 같은 중요한 정보는 드러내지 않는 것이 가장 중요하다. 그럴 때 사용하는 것이 환경변수 파일(dotenv, .env)이다. Next.js에서 dotenv를 사용하기 위해서는 dotenv-webpack 라이브러리를 설치하면 된다. $ npm i dotenv-webpack 이후 next.config.js 파일에서 dotenv를 webpack에 연결해주면 된다. // next.config.js const Dotenv = require("dotenv-webpack"); const nextConfig = { ..., webpack: (config) => { config.plugins.push(new Dotenv({ silent: true })); return config; }, }..

    백준 2589번 보물섬 // Java

    백준 2589번 보물섬 // Java

    문제 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 이동은 상하좌우로 이웃한 육지로만 가능하며, 한 칸 이동하는데 한 시간이 걸린다. 보물은 서로 간에 최단 거리로 이동하는데 있어 가장 긴 시간이 걸리는 육지 두 곳에 나뉘어 묻혀있다. 육지를 나타내는 두 곳 사이를 최단 거리로 이동하려면 같은 곳을 두 번 이상 지나가거나, 멀리 돌아가서는 안 된다. 예를 들어 위와 같이 지도가 주어졌다면 보물은 아래 표시된 두 곳에 묻혀 있게 되고, 이 둘 사이의 최단 거리로 이동하는 시간은 8시간이 된다. 보물 지도가 주어질 때, 보물이 묻혀 있는 두 곳 간의 최단..

    백준 3649번 로봇 프로젝트 // JAVA

    문제 로봇 프로젝트 상근이와 선영이는 학교 숙제로 로봇을 만들고 있다. 로봇을 만들던 중에 구멍을 막을 두 레고 조각이 필요하다는 것을 깨달았다. 구멍의 너비는 x 센티미터이고, 구멍에 넣을 두 조각의 길이의 합은 구멍의 너비와 정확하게 일치해야 한다. 정확하게 일치하지 않으면, 프로젝트 시연을 할 때 로봇은 부수어질 것이고 상근이와 선영이는 F를 받게 된다. 구멍은 항상 두 조각으로 막아야 한다. 지난밤, 상근이와 선영이는 물리 실험실에 들어가서 레고 조각의 크기를 모두 정확하게 재고 돌아왔다. 구멍을 완벽하게 막을 수 있는 두 조각을 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 구멍의 너비 x (1 ≤ x ≤ 20, x는 정수)..

    백준 3109번 빵집 // JAVA

    문제 빵집 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 중에, 가스비가 제일 크다는 것을 알게되었다. 따라서 원웅이는 근처 빵집의 가스관에 몰래 파이프를 설치해 훔쳐서 사용하기로 했다. 빵집이 있는 곳은 R*C 격자로 표현할 수 있다. 첫째 열은 근처 빵집의 가스관이고, 마지막 열은 원웅이의 빵집이다. 원웅이는 가스관과 빵집을 연결하는 파이프를 설치하려고 한다. 빵집과 가스관 사이에는 건물이 있을 수도 있다. 건물이 있는 경우에는 파이프를 놓을 수 없다. 가스관과 빵집을 연결하는 모든 파이프라인은 첫째 열에서 시작해야 하고, 마지막 열에서 끝나야 한다. 각 칸은 오른..

    백준 1009번 분산처리 // JAVA

    문제 분산처리 재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다. 1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... , 10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ... 총 데이터의 개수는 항상 a^b개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 이를 수행해주는 프로그램을 작성하라. 입력 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가..