[알고리즘 연습] 부분집합 (DFS) 부분집합 자연수 N을 입력받는다. 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램을 작성하시오. 입력예제 3 출력예제 1 2 3 1 2 1 3 1 2 3 2 3 풀이 #include using namespace std; int n; int ch[11]; void DFS(int level) { if (l > n) { int i; for (i=1; i 💻 CS/알고리즘 연습 2021.02.05
Node.js - bcrypt bcrypt 암호를 해시처리하는데 도움을 주는 라이브러리이다. 패키지 설치 $ npm install bcrypt기본사용법 const bcrypt = require('bcrypt'); const saltRounds = 10; const myPlaintextPassword = 's0/\/\P4$$w0rD'; const someOtherPlaintextPassword = 'not_bacon'; 해시처리를 위한 기본값들이다. saltRounds : 일종의 노이즈값으로 이 값을 높일 수록 해시처리하는데 드는 시간이 올라가 보안성이 높아진다. myPlaintextPassword : 내 비밀번호값 someOtherPlaintextPassword : 비밀번호와 다른 값 (비교.. 🛠 기타/WEB 2021.02.04
JWT (JSON Web Token) JWT (JSON Web Token) JSON 객체를 사용하여 가볍고 자가수용적(self-contained)으로 정보를 전달한다. HTTP 헤더 혹은 URL의 파라미터로 두 개체 사이에서도 손쉽게 전달된다. Java, Python, C++, PHP, JavaScript, Go, Swift 등 대부분의 주류 프로그래밍 언어에서 지원된다. 자가수용적(self-contained)? 필요한 모든 정보를 자체적으로 지니고 있다. 자체적으로 기본정보, 전달정보, 서명(signature)를 포함한다. 회원 인증을 하거나, 정보교류를 할 때 유용하게 사용된다. 토큰 내부에 검증증명이 포함되어 있기 때문에 이를 확연하여 인증정보 혹은 정보의 조작여부를 확인할 수 있다. A.B.C와 같이 .을 구분자로 하여 3가지 문자열.. 🛠 기타/WEB 2021.02.03
서버기반 인증시스템과 토큰기반 인증 시스템 서버기반 인증시스템 원리 서버측에서 사용자들의 정보를 기억하고 관리한다. 메모리나 디스크, 데이터베이스 등에 세션정보를 유지한다. 클라이언트에게 요청을 받으면 세션의 상태를 유지하고 해당 정보를 서비스에 이용한다. 이를 Stateful 서버라고 한다. 단점 세션의 사용량이 많아질 경우 서버컴퓨터의 메모리 혹은 데이터베이스에 무리를 줄 수 있다. 서버를 확장할 때 세션을 분산시키는 시스템을 설계하기 어려워 확장에 방해가 된다. 세션의 기반이 되는 쿠키는 단일 도메인 및 서브 도메인에서만 작동하기 때문에 여러 도메인에서 관리하기 어렵다. 토큰기반 인증시스템 원리 서버 기반 시스템의 단점을 극복하기 위해 등장했다. 인증받은 사용자에게 토큰을 발급하고, 서버에 요청할 때 헤더에 토큰을 함께 보내 유효성검사를 한.. 🛠 기타/WEB 2021.02.03
Node.js - Passport.js 기초 Passport.js express 프레임워크 상에서 사용되는 인증 미들웨어 라이브러리이다. 기본적인 인증시스템 지원과 더불어 페이스북, 구글과 같은 소셜 로그인을 할 수 있도록 도와주기 때문에 매우 편리하다. 패키지 설치 $ npm install passport passport.js 패키지를 설치한다. Strategies passport.js에서는 다양한 인증방법을 'strategie' 라는 이름으로 제공한다. 기본적인 사용자 ID 및 PASSWORD를 사용하는 방법부터, OAuth를 사용한 위임 인증 등 다양한 strategies가 존재한다. 그중 가장 기본으로 단순히 ID와 PASSWORD를 사용한 인증방법인 local strategie를 사용해보자. 물론 단순한 로그인만 사용할 것이.. 🛠 기타/WEB 2021.02.03
[알고리즘 연습] Ugly Numbers Ugly Numbers 어떤 수를 소인수분해 했을 때 그 소인수가 2 또는 3 또는 5로만 이루어진 수를 'Ugly Number'라고 부른다. (1포함) ex. 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ... N번째 Ugly Number를 출력하는 프로그램을 작성하시오. 풀이 #include #include #include using namespace std; int main() { int n, i, p2=0, p3=0, p5=0, minValue; cin >> n; vector a(n); a[0] = 1; for(i=1; i 💻 CS/알고리즘 연습 2021.02.02
[알고리즘 연습] 영지 선택 (DP 맛보기) 영지 선택 세로 H, 가로 W의 영지가 있다. 영지의 각 좌표에는 해당 좌표의 오렌지나무 개수정보가 주어진다. 황제가 나에게 이 중 세로 HH, 가로 WW의 영지를 준다고 한다. 그런데 나는 최대한 많은 오렌지나무를 가지고 싶다. 가능한 모든 경우를 찾아 가장 많은 오렌지나무를 얻었을 때의 개수를 출력하시오. 풀이 #include #include using namespace std; int main() { int h, w, hh, ww, i, j, tmp, max=0; cin >> h >> w; vector oranges(h+1, vector(w+1)); vector doranges(h+1, vector(w+1)); for(i=1; i oranges[i][j]; dor.. 💻 CS/알고리즘 연습 2021.02.02
Node.js - session session 쿠키를 좀 더 개선하여 더 안전하도록 만든 것이 세션이다. 쿠키의 기능에 서버 데이터 공간을 합친 개념이라고 생각하면 된다. 사용자의 식별값만을 브라우저에 쿠키로 저장하고, 실제 데이터는 서버에 저장한다. 세션을 node.js express 상에서 간단하게 활용하기 위해선 추가적인 패키지 설치가 필요하다. 패키지 설치 $ npm install express-session node.js가 session을 생성하고 관리할 수 있도록 도와주는 미들웨어이다. 사용예제 var express = require('express'); var session = require('express-session'); var app = express(); app.use(session({.. 🛠 기타/WEB 2021.02.02
Node.js - cookie Cookie 웹브라우저는 기본적으로 cookie(쿠키)라는 것을 지원한다. 쿠키를 활용하면 서버로부터 받은 데이터 중 일부를 브라우저 자체적으로 저장해놓고 추후 활용할 수 있다. (접속 URL은 동일해야함) 따라서 사용자가 브라우저를 사용하는 동안은 이러한 쿠키를 기반으로 정보가 저장 및 관리될 수 있다는 것이다. 이러한 cookie를 관리하려면 node.js express에서는 별도의 패키지가 필요하다. 패키지 설치 $ npm install cookie-parser cookie-parser는 이러한 브라우저의 쿠키데이터를 node.js가 확인하고 관리할 수 있도록 도와주는 패키지(미들웨어)이다. 사용예제 var express = require('express'); var cookieParser = re.. 🛠 기타/WEB 2021.02.02
Node.js - multer (파일 업로드) multer express 기본 기능에는 파일 업로드 기능이 포함되어 있지 않다. multer는 사용자 파일 업로드 기능을 제공하는 패키지로, 사용자가 전송한 파일을 처리하는 작업을 수행한다. 패키지 설치 $ npm install --save multer 사용 예제 📄app.js var express = require('express'); var multer = require('multer'); var upload = multer({ dest: 'uploads/' }); var app = express(); app.set('view engine', 'pug'); app.set('views', path.join(__dirname, 'html')); app.get('/upload', function(req,.. 🛠 기타/WEB 2021.01.31