전체 글

전체 글

    Frontend 효율적으로 배포하기 (React + Nginx + Docker)

    프로젝트를 진행할 때, 프론트엔드 배포는 주로 nginx를 base image로 하여 빌드된 결과물을 nginx가 서빙하는 폴더 내에 위치시켜 보여주는 식으로 진행했다. 인터넷에 React 배포 / React + Docker 배포 검색했을 때 가장 쉽고 많이 찾을 수 있어 당연하게 했던 것 같다. 그러던 중 프론트엔드 도커 파일을 작성할 일이 있었다. 당연히 위 방식으로 진행했다. 근데 특히나 오타나 약간의 UI 변경 등 잦은 수정이 필요한 프론트엔드에서 위의 방식대로 진행하면 비효율적이라는 피드백을 받았다. nginx 이미지가 변경되는 것이 아닌 굳이 오타 수정하는데 해당 이미지도 다시 받고 올린다는 게 맞는가? 에 대한 얘기였다. 빌드 파일만 달라지지 nginx 이미지 자체에 대해서는 변경이 없다는 ..

    Vite Alias 설정하기

    파일 구조가 복잡해질수록 다른 디렉터리의 파일을 import 하는 게 지저분해진다. (ex) ../../pages/signUp/index) 이때 path alias 설정을 해주면 보다 깔끔한 코드 작성이 가능하다! 프로젝트 환경은 Vite + Typescript 기준이다. Alias란? 경로에 별칭을 붙이는 것으로 ../../pages/signUp/index 을 @/pages/signUp/index 로 변경 가능하다. Alias 적용하기 yarn add -D path yarn add -D @types/node vite.config.ts import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import path from..

    [Vue.js] Watch vs Computed

    [Vue.js] Watch vs Computed

    watch와 computed의 차이점에 대해 알아보려고 한다. watch와 computed는 둘 다 Vue 인스턴스 내에 정의된 데이터 값에 변경이 일어나는지를 감시하고 변경될 때마다 정의된 함수가 실행된다. ✅ computed 만약 message라는 문자열을 뒤집어서 출력하고 싶다면 여러 가지 구현 방법이 있다. 1. 첫 번째로 문자열 표현식인 이중 중괄호를 이용하여 내부에서 연산을 하여 데이터 값을 보여준다. message: {{ message }} revsersedMessage: {{ message.split("").reverse().join("") }} 2. 두 번째로 함수를 이용하여 데이터 값을 보여준다. message: {{ message }} revsersedMessage: {{ messag..

    [백준] 20056번 : 마법사 상어와 파이어볼 (Python)

    [백준] 20056번 : 마법사 상어와 파이어볼 (Python)

    https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net ✅ Solution fireballs 에는 파이어볼의 좌표를, data에는 해당 좌표에 위치하는 파이어볼의 정보(질량, 속도, 방향)를 담아준다. 이때 처음 주어지는 좌표는 (0, 0)을 (1, 1)로 주기 때문에 -1 씩 해줘야 한다. 안 해서 계속 틀렸다. 그리고 k번 파이어볼을 이동시킨다. 파이어볼의 정보 r, c, m, s, d를 가져온 뒤, 이동 후..

    [백준] 21608번: 상어 초등학교 (Python)

    [백준] 21608번: 상어 초등학교 (Python)

    https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net ✅ Solution 문제에 나온 대로 구현하면 된다! students 배열을 돌면서 각 학생이 앉을 수 있는 자리를 모두 구해 정렬한 뒤, 학생의 자리를 정한다. 먼저 모든 자리를 돌면서 빈자리가 있는지 확인한다. 만약 빈자리가 있다면, 그 자리에서 거리가 1인 방향을 모두 확인하여 주위에 학생이 좋아하는 학생이 있는지 확인한 후, prefer 변수에 더해준다. 그리고 주위에 빈자리가 ..

    [백준] 23288번: 주사위 굴리기2 (Python)

    [백준] 23288번: 주사위 굴리기2 (Python)

    https://www.acmicpc.net/problem/23288 23288번: 주사위 굴리기 2 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 가장 왼 www.acmicpc.net ✅ Solution 14499 주사위 굴리기 문제에 조건을 좀 더 추가한 구현 문제이다. 참고 : [14499 주사위 굴리기] - https://ye0nn.tistory.com/61 문제를 읽으면서 차례대로 구현하면 된다. k번만큼 주사위를 굴린다. 이때, 만약 이동방향에 칸이 없다면 반대 방향으로 굴린다. 이 부분은 원래 방향의 값에 -1을 곱해준 값을 더해주면 된다. 그리고 ..

    [백준] 14499번: 주사위 굴리기 (Python)

    [백준] 14499번: 주사위 굴리기 (Python)

    https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net ✅ Solution 구현문제로, 주사위를 동서남북 방향으로 굴렸을 때의 모양만 알면 쉽게 풀린다. 예를 들어 아래와 같이 초기 값이 있다고 하면 맨 위가 1인 주사위를 [1, 2, 3, 4, 5, 6]으로 나타낸다. 그리고 서쪽으로 굴렸을 때를 생각해 보면 3이 제일 위로 위치하게 되는 [3, 2, 6, 1, 5, 4]로 나타낼 수..

    [백준] 17144번: 미세먼지 안녕! (Python)

    [백준] 17144번: 미세먼지 안녕! (Python)

    https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net ✅ Solution 단순한 구현 문제이다. 그런데 공기청정기 동작 구현이 좀 어려워서 찾아봤다. 먼저 확산의 경우, 상하좌우를 체크해서 범위 내에 있고 공기청정기의 위치가 아닐 때 확산되는 양을 더해준다. 그리고 그만큼의 양을 원래 양에서 빼준다. 다음으로 공기청정기 동작은 시계방향, 반시계방향을 따로 처리해 줬다. 방향대로 쭉 밀어서 위치하도록 한다. 위의 과정을 t번만큼 반복하고 미세먼지의 ..