반응형

전체 글 268

[JavaScript, Node.js] 유튜브 클론 정리 4장 (1) - Router

머리글 이번 시간에는 라우터에 대해서 알아보자. Router 컨트롤러와 URL의 관리를 쉽게 해주는 것이 라우터다. 미니 어플리케이션을 만들어준다고 생각하면 된다. 우선 라우터를 하나 생성해 보자. const globalRouter = express.Router(); const userRouter = express.Router(); const videoRouter = express.Router(); app.use("/", globalRouter); app.use("/videos", videoRouter); app.use("/users", userRouter); express에선 기본적으로 라우터 기능을 제공하므로, 이런 식으로 쉽게 라우터를 만들 수 있다. 이렇게 만들면 각 주소로 접근이 가능하다. 그렇..

[JavaScript, Node.js] 유튜브 클론 정리 3장 (2) - Middlewares, Morgan

머리글 이번 시간에는 Middelware은 무엇인지 알아보자 Middleware? Middleware란 request와 response 사이에 있는 소프트웨어다. 즉 브라우저가 request를 하고 서버가 response를 하기 전에 이루어지는 무언가를 뜻한다. 우선 Middleware를 하나 생성해 보자. const testMiddleware = (req, res, next) => { console.log("middleware"); next(); }; 이전에 만들었던 handleHome 함수와 크게 차이가 없어 보인다. 하지만 차이점은 next라는 인수를 받고 있다는 것인데, 이는 다음 함수를 호출하기 위해 사용한다. 예시를 보자. app.get("/", testMiddleware, hanldeHome..

[JavaScript, Node.js] 유튜브 클론 정리 3장 (1) - 서버 생성, GET Requests, Responses

머리글 이제 본격적으로 서버를 만들어보도록 하겠다. 서버 생성하기 우선 메인이 될 js 파일에 express를 import 한다. import express from "express"; 이렇게 하면 알아서 모듈을 express라는 이름으로 가져온다. 그리고 app을 생성해 준다. const app = express(); const PORT = 4000; const app = express(); const handleListening = () => console.log(`✅ Server listenting on port http://localhost:${PORT} 🚀`); app.listen(PORT, handleListening); 우선 서버에 대해서 이해를 해보자. 서버는 항상 켜져 있는 컴퓨터와 비슷..

[파이썬, Python] 백준 1927: 최소 힙

문제 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 코드 import sys import heapq input = sys.stdin.readline n = int(input()) heap = [] for i in range(n): a = int(input()) if a != 0: heapq.heappush(heap, a) else: if not heap: print("0") else: print(heapq.heappop(h..

[JavaScript, Node.js] 유튜브 클론 정리 2장 (3) - babel, nodemon

머리글 이번 시간에는 babel은 무엇인지, 그리고 nodemon은 무엇인지 알아보도록 하겠다. Babel? https://babeljs.io/ Babel · Babel The compiler for next generation JavaScript babeljs.io 'Babel은 JavaScript의 컴파일러다.' nodeJS는 대부분의 JavaScript 코드를 이해한다. 하지만 호환이 되지 않는 최신의 코드도 있을 것이다. 그래서 우리는 Babel을 사용해서 우리의 코드를 컴파일하는 방법을 사용한다. 우선 터미널에 명령어를 입력해 주자. npm i --save-dev @babel/core 다른 명령어는 이해가 가는데 --save-dev의 경우는 처음 보는 명령어다. 이는 package.json 파일..

[JavaScript, Node.js] 유튜브 클론 정리 2장 (2) - dependencies

머리글 이번 시간에는 package.json에 있는 dependencies와 devDependencies에 대해서 알아보겠다. dependencies? 우선 이전에 설치되었던 node_modules 파일과 package-lock.json 파일을 삭제해 보자. 그리고 터미널에 명령어를 입력한다. npm i 이전과는 다르게 그냥 install만 입력했다. 이렇게 입력을 하면 삭제했던 두 파일이 다시 생겨난다. 그 이유는 바로 package.json 파일에 dependencies 항목에 있다. package.json 파일은 license나 author 등의 정보도 담고 있지만, 프로젝트를 동작하기 위한 필요 모듈도 담고 있다. 그게 바로 dependencies 항목이다. 프로젝트를 혼자 개발하는 경우 크게 상..

[파이썬, Python] 백준 1026: 보물

문제 https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 코드 n = int(input()) a_list = sorted(list(map (int, input().split()))) b_list = sorted(list(map (int, input().split())), reverse = True) ans = 0 for i in range(n): ans += a_list[i] * b_list[i] print(ans) 설명 두 리스트의 수를 ..

[JavaScript, Node.js] 유튜브 클론 정리 2장 (1) - 프로젝트 생성, npm 사용

머리글 2장은 프로젝트를 생성하고, Express와 Babel, Nodemon을 배우게 된다. 바로 시작하겠다. 프로젝트 생성 우선 프로젝트를 담을 폴더를 하나 생성하고 VS Code로 열어주자 이런 경로에다가 생성을 해보았다. 그다음 package.json 파일을 생성한다. 이게 뭔지 몰라도 일단 생성을 해보도록 하자. json이라는 형식은 파일에 정보를 저장하기 위해 만든 방식 중 하나다. 이를 nods.js에선 package.json이라는 파일로 만들어서 사용하게 된다. 이는 변경이 불가능하며 Package.json과 같이 한 글자만 바뀌더라도 사용이 불가능하다! 이렇게 파일을 생성했다면 nods.js 프로젝트를 만드는데 성공했다! 근데 파일에 아무것도 없고 뭐를 해야할지도 모르겠고, 이렇게 만들다..

[JavaScript, Node.js] 유튜브 클론 정리 1장 - 강의 살펴보기

머리글 꾸준히 강의를 듣던 중 가장 호기심이 생겼던 강의였다. 유튜브 클론 강의인데, 클론 대상보다는 프론트엔드와 백엔드를 동시에 학습이 가능한 풀스택 개발이라는 점이 많은 관심을 끌었다. 근데 강의 가격이 싼 편은 아니었다. 기존 카카오톡 클론 챌린지 수강 보상으로 받은 30% 쿠폰을 사용해서 252,000원이라는 가격에 구매를 했다. 지금 와서 보면 그렇게 비싼 강의는 아닌 것 같다.(아닌가?) 학습할 수 있는 내용이 상당히 많고, 풀스택으로 개발을 해볼 수 있다는 것이 가장 큰 메리트였다. 방학 중에 쉬엄쉬엄 들어서 꽤 오랜 시간 들었던 것 같다. 이번에 유튜브 챌린지도 마무리하고 복습 겸 해서 글을 남겨보려고 한다. 가장 처음엔 강의를 위해 필요한 준비물과 오류가 생겼을 때, 도움을 요청하는 방법..

[파이썬, Python] 백준 1010: 다리 놓기

문제 https://www.acmicpc.net/problem/1010 코드 import math t = int(input()) for i in range(t): r, n = map(int,input().split()) print(math.factorial(n) // (math.factorial(r) * math.factorial(n - r))) 설명 경우의 수를 구하는 문제이다. https://namu.wiki/w/%EA%B2%BD%EC%9A%B0%EC%9D%98%20%EC%88%98 경우의 수 - 나무위키 모든 팀이 2경기를 치른 이후 마지막 경기를 앞둔 시점의 대한민국의 16강에 진출할 수 있는 경우의 수이다. 경우의 수 중 볼드체 표시된 것은 실제 경기 결과이다. 2002년 - 조 1위 16강 진..

반응형