목록전체 글 (106)
개발스토리
JWT(JSON Web Token) JSON 형식의 데이터를 저장하는 토큰 JWT는 다음과 같이 세 부분으로 구성되어 있다. 헤더 : 토큰 종류와 해시 알고리즘 정보가 들어있다. 페이로드 : 토큰의 내용물이 인코딩된 부분 시그니처 : 일련의 문자열이며, 시그니처를 통해 토큰이 변조되었는지 여부를 확인할 수 있다. 시그니처는 JWT 비밀 키로 만들어 진다. 이 비밀 키가 노출되면 JWT 토큰을 위조할 수 있으므로 비밀 키를 철저하게 숨겨야 한다. JWT에는 민감한 내용을 넣으면 안된다. 내용을 볼 수 있기 때문이다. 내용이 노출되는 토큰을 왜 사용할까? 모순적이지만 내용이 들어있기 때문이다. 변조한 토큰은 시그니처를 비밀 키를 통해 검사할 때 들통이 난다. 변조할 수 없으므로 내용물이 바뀌지 않았는지 걱정..
문제 https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 차근차근 기본부터 풀다가 예전에 풀어봤던 문제를 find() 함수를 써서 다시 풀어보았다. ■ 파이썬 문자열 안에서 문자의 위치를 찾는 함수 중 대표적인 것이 find()이다. find() 함수는 찾는 값이 없으면 -1을 리 턴하므로 문제의 취지에 잘 맞았다. ■ 알파벳들을 a,b,c, ... 처럼 입력하는 것이 아니라 미리 파이썬에서 소문자 데이터를 상수로 정의해 놓았기 때문에..
Mongoose 노드와 몽고디비를 연동해줄 뿐만 아니라 쿼리를 만들어주는 라이브러리이다. 몽구스는 시퀄라이즈와 달리 ODM(Object Document Mapping)이라고 불린다. 몽고디비는 relation이 아니라 document를 사용하기 때문이다. 몽고디비 자체가 이미 자바스크립트인데도 굳이 자바스크립트 객체와 매핑하는 이유는 몽고디비에 없어서 불편한 기능들을 몽구스가 보완해주기 때문이다. 먼저 스키마라는 것이 생긴다. 몽고디비는 테이블이 없어서 자유롭게 데이터를 넣을 수 있지만, 때로는 자유로움이 불편함을 초래한다. 실수로 잘못된 자료형의 데이터를 넣을 수도 있고, 다른 다큐먼트에는 없는 필드의 데이터를 넣을 수도 있다. 몽구스는 몽고디비에 데이터를 넣기 전에 노드 서버 단에서 데이터를 한 번 ..
시퀄라이즈 사용 MySQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리이다. 시퀄라이즈는 자바스크립트 객체와 데이터베이스의 릴레이션을 매핑해주는 도구이다. MariaDB, PostgreSQL 등 다른 데이터베이스도 같이 쓸 수 있다. 시퀄라이즈에 필요한 sequelize와 sequelize-cli, mysql2 패키지를 설치하자. sequelize-cli는 시퀄라이즈 명령어를 실행하기 위한 패키지이고, mysql2는 MYSQL과 시퀄라이즈를 이어주는 드라이버이다. 그 다음 sequelize init 명령어를 호출한다. 그러면 config, models, migrations, seeders 폴더가 생성된다. models 폴더 안의 index.js 내용을 수정하자. models/index.js const ..
그래프 탐색 ■ 하나의 정점으로부터 시작해서 차례대로 모든 정점들을 한 번씩 방문하는 탐색 과정 EX) 특정 도시에서 다른 도시로 갈 수 있는 지 없는 지에 대한 탐색 과정 DFS(깊이 우선 탐색) ■ root node나 다른 임의의 노드에서 시작하여 다음 branch로 넘어가기 전에 해당 branch를 완벽하게 탐색하는 방법 ■ 넓게 탐색하기전에 깊게 탐색하는 것 ■ DFS가 BFS보다 좀 더 간단함 DFS(깊이 우선 탐색)의 특징 ■ 전위 순회를 포함한 다른 형태의 트리 순회는 모두 DFS의 한 종류이다. ■ 그래프 탐색의 경우 어떤 노드를 방문했었는 지 여부를 반드시 검사해야 한다. ■ DFS는 스택 자료구조(혹은 재귀함수)를 이용하며, 구체적인 동작 과정은 다음과 같다. 1. 탐색 시작 노드를 스..