본문 바로가기

전체 글156

[운영체제] 스케줄링 (Scheduling) Scheduling 보다 효율적인 자원의 활용을 위해 어떤 작업을 메모리에 올리고 어떤 작업에게 자원을 할당 해야하는 지 결정 CPU-burst : CPU 자원을 많이 요구하는 작업 I/O-burst : I/O 사용이 많은 작업 Non-preemptive : 프로세스가 스스로 자원을 반납하는 방식 Preemptive : 프로세스가 스스로 자원을 반납하기 전에 강제로 회수할 수 있는 방식 스케줄링 알고리즘 성능 판단 기준 CPU Utilization - cpu를 최대한 바쁘게 Throughput - 시가 단위안에 실행이 완료되는 프로세스의 수 Turnaround Time - 하나의 프로세스가 시작에서 종료까지 걸리는 시간 Waiting Time - 하나의 프로세스가 레디큐에서 기다린 총 시간 Respons.. 2021. 1. 18.
[Node.js] 익스프레스로 웹 서버 만들기 2 - 자주 쓰이는 미들웨어 익스프레스로 웹 서버 만들기 1에서 미들웨어를 사용해 보았고, 미리 만들어진 미들웨어를 사용하여 서버의 기능 구현을 쉽게 할 수 있다고 했습니다. 이번 글에서는 그러한 미들웨어들을 알아보겠습니다. 목차 static 미들웨어 body-parser 미들웨어 router 미들웨어 cookie-parser 미들웨어 express-session 미들웨어 static 미들웨어 static 미들웨어는 서버에있는 특정 폴더의 파일들을 특정 패스로 접근할 수 있도록 만들어 줍니다. % npm install serve-static --save 명령어로 해당 모듈을 설치합니다. 다음은 path로 같은 경로에있는 public 폴더에 접근할 수 있도록 하는 예제입니다 var express = require('express');.. 2021. 1. 15.
[Node.js] 익스프레스로 웹 서버 만들기 1 - 익스프레스 서버와 미들웨어 노드로 가장 기본적인 웹 서버를 만드는 법을 알아보고 클라이언트에 응답을 보내 웹 페이지를 띄우는 법을 알아보겠습니다. 목차 익스프레스 서버 만들기 미들웨어로 클라이언트에 응답 보내기 익스프레스로 서버 만들기 익스프레스 모듈을 사용하기 전에 노드에 기본으로 들어있는 http 모듈을 사용하여 서버를 만드는 법을 보겠습니다. 급하신 분들은 express를 사용한 부분만 봐도 됩니다. var http = require('http'); // 웹 서버 객체 만들기 var server = http.createServer(); // 웹 서버를 시작하여 3000번 포트에서 대기 var port = 3000; server.listen(port, function(){ console.log('웹 서버가 시작되었습니다 %d .. 2021. 1. 14.
[Node.js] 뷰 템플릿 적용하기 - ejs 뷰 익스프레스에서 뷰 템플릿을 적용하는 법을 알아보겠습니다. 목차 MVC 패턴과 뷰 엔진 ejs 뷰 템플릿 사용 1 ejs 뷰 템플릿 사용 2 MVC 패턴과 뷰 엔진 MVC 패턴이란 Model, View, Controller로 구성되는 구조입니다. 눈에 보이는 부분을 뷰, 뷰로 표현되는 데이터를 제공하는 것은 모델, 처리되는 과정을 담당하는 것을 컨트롤러라 합니다. 뷰 에서는 모델에서 얻는 데이터와 뷰 템플릿을 바탕으로 사용자에게 응답할 웹문서를 만들어 응답합니다. ejs 뷰 템플릿 사용 1 ejs란 embedded javascript의 약자로 html 문서 내에 자바스크립트 코드를 넣을 수 있게 해 줍니다. 위의 그림에서 를 통해 userid란 변수를 사용한 것 처럼 말입니다. 이 ejs를 통해 뷰를 구현.. 2021. 1. 11.
[Node.js] windows에서 노드 버전 변경 - downgrade/upgrade 사용해야되는 모듈이 현재 node 버전을 지원하지않아서 버전 downgrade를 해야됐습니다. linux나 mac 환경에서 노드 버전 관리 방법은 정리해주신 분들이 많았지만, 윈도우 환경에서 방법을 정리해주신 분은 없어서 작성합니다. 일단 노드 버전 관리를 위해 nvm을 사용하는데, 불행히도 윈도우 환경에선 작동하지 않았습니다. 그래서 검색한 결과 윈도우용 nvm을 제작하신분이 있었습니다. Releases · coreybutler/nvm-windows A node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windows github.com 먼저 위의 링크로 들어가 nvm-setup.zip을 받.. 2021. 1. 11.
[Node.js] 익스프레스에서 몽고디비 사용법 4 - 비밀번호 암호화 저번 몽고디비 사용법 3에 이어서 알아보겠습니다. 목표 암호화 과정 몽구스 스키마의 virtual 메소드 비밀번호 암호화하여 저장 암호화 과정 데이터베이스를 암호화 하여 저장하기 위해선 다음과 같은 절차가 필요합니다. 1. 사용자로부터 비밀번호를 받음 2. 암호화를 위한 salt 값을 생성함 3. 비밀번호를 암호화 함 4. 암호화한 비밀번호와 salt 값을 저장 암호화하기전 비밀번호를 받기위해 virtual 메소드를 사용합니다. 이를 사용하면 스키마에 가상으로 속성을 설정하여 값을 받을 수 있습니다. 그리고 virtual 메소드 내에서 받은 값을 암호화하여 데이터베이스에 저장할 수 있습니다. salt 값은 암호화를 위한 key입니다. 같은 비밀번호, 같은 salt를 encryptPassword 메소드에 .. 2021. 1. 8.
[Node.js] 익스프레스에서 몽고디비 사용법 3 - 몽구스로 DB 다루기 저번 몽고디비 사용법 2에 이어서 알아보겠습니다. 목표 몽구스와 스키마 몽구스로 DB 연결 및 모델 정의 몽구스로 DB 문서 추가와 조회 몽구스와 스키마 몽고디비는 한 컬렉션에 여러 문서를 저장하는데, 이 문서들의 속성이 제각각으로 저장할 수도 있습니다. 이렇게 되면 문서가 어떤 속성을 갖고있는지 알기 힘들기 때문에 데이터를 조회할 때 어려움이 생깁니다. 이 때문에 문서를 저장할 때 일정한 틀이 있어야하는데 이를 제공하는 대표적인 모델이 몽구스(mongoose)입니다. 그리고 이런 틀을 스키마(Schema)라고 합니다. 몽구스로 스키마를 정의하고, 이를 사용할 컬렉션과 매핑하기 위해 모델을 정의합니다. 그리고 이 모델을 통해 문서를 저장할 수 있습니다. 몽구스로 DB 연결 및 모델 정의 먼저 % npm .. 2021. 1. 7.
[백준] 1697(숨바꼭질) 파이썬 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 풀이 및 리뷰 전형적인 BFS 문제이므로 풀이는 크게 어렵지 않다. .. 2021. 1. 5.