본문 바로가기

전체 글235

[AWS] s3와 RDS의 차이점 마지막 배포 과정을 배우면서 드는 한 가지 의문. RDS는 왜 필요하지? s3가 가상 컴퓨터면 가상 컴퓨터 안에 mysql을 그냥 설치하면 되는 거 아닌가? 오늘은 이 둘의 차이점에 대해 알아보자. 원본은 아래에 있으니 참고하시길 바란다. https://hevodata.com/learn/s3-vs-rds/ Amazon S3 vs RDS: 5 Critical Differences - Learn | Hevo In this article, you will learn about Amazon S3 and Amazon RDS and comparing Amazon S3 vs RDS based on 5 critical parameters. hevodata.com AWS RDS와 S3 이해하기 RDS 최근의 프로그램들은.. 2022. 1. 6.
[Express] json()과 urlencoded() 메소드에 관하여 오늘은 json()과 urlencoded() 메서드에 대해 알아보자 본 포스팅은 아래 블로그를 참조했으니 참고하길 바란다. https://dev.to/griffitp12/express-s-json-and-urlencoded-explained-1m7o Express's json() and urlencoded() Explained Express is a Node.js framework best known by beginners for simplifying syntax in building basic back-... dev.to Express's json() and urlencoded() Explained 1) json()과 urlencoded()는 미들웨어 함수 미들웨어란 무엇일까? 미들웨어는 서버가 클라이.. 2022. 1. 6.
[Express] res.send와 res.json의 차이 Express를 다루다 보면 res.send()와 res.json()을 혼용해서 사용하는 경우가 많다. 대강 res.json()은 JSON 데이터를 보낼 때 사용한다고 알고 넘어갔는데, 사실 res.send()로도 JSON 데이터가 넘어간다는 사실! 엥? 그럼 둘의 차이가 도대체 뭐지? res.json() VS res.send() 익스프레스 어플리케이션 서버는 HTTP 요청을 받으면, 서버는 흔히 res라고 불리는 객체를 응답으로 전송한다. res 객체는 기본적으로 API 콜의 보내지는 응답의 한 부분이라고 생각하면 된다. res.send()는 content type을 "text/Html"로 설정해 클라이언트가 그것을 텍스트로 다루게끔 한다. 반면, res.json()은 content type "appl.. 2022. 1. 4.
[CORS] Corse의 credentials: true의 의미 웹 개발에서 다양한 도메인의 리소스를 사용하기 위해 필수적으로 알아야 할 개념 CORS! 위 사진은 CORS의 특성과 하는 역할을 아주 잘 묘사하는 짤이라고 생각된다. CORS를 배우고 Cookie에 대해 학습하다 보면, 처음 보는 Cors option을 발견하게 된다. Credentials: true 요 녀석은 어떤 옵션이고 왜 필요한 것일까? 일단 시간이 없는 사람을 위해 한 마디로 설명하겠다. 클라이언트와 서버 간에 쿠키를 주고받고 싶으면 그냥 저 옵션을 넣으세요. 자 아래는 왜 그런지 이유를 설명해 보겠다. 기본적으로, CORS는 cross-origin 요청에는 쿠키를 담아 데이터를 전송하지 않는다. Json-P의 경우 항상 요청에 쿠키를 담아 보낸다는 점에서 CORS와 차이점이 있는데 이처럼 쿠.. 2022. 1. 3.
[MySql] 연속된 여러 쿼리문 질의하기 서버 측에서 데이터베이스에 여러 개의 쿼리문을 연속적으로 보내기 위해선 어떻게 해야 할까? mysql 라이브러리에는 위와 같은 상황도 처리할 수 있도록 .query() 함수를 설정해 놓았다. 하지만, 라이브러리 설명에 따르면 연속된 여러 쿼리문을 지원하는 것은 SQL injection 공격에 취약하기 때문에 기본적으로 기능을 사용할 수 없도록 설정해 놓았다. Multiple statement queries 위와 같은 이유로 multiple statement query를 사용하기 위해선 아래와 같이 설정을 변경해주어야 한다. var connection = mysql.createConnection({multipleStatements: true}); 위와 같이 설정을 바꾸면 아래와 같이 쿼리문이 들어가는 파라.. 2022. 1. 2.
[MySql] 하나의 쿼리문을 여러번 반복하려면? 3 tier 아키텍처의 마지막 관문, 드디어 Database 기초학습을 완료했다. 이제 Mysql를 프로그래밍적으로 제어하기 위해서 서버에서 쿼리문을 보내는 방법을 실습해보다가 한 가지 문제에 부딪혔다. '하나의 쿼리문을 인자만 바꿔서 반복해야 하면 어떻게 해야 하지?' 예를 들어, order_items과 같은 주문-주문제품 조인 테이블에 한 주문에 포함되어 있는 여러 제품에 대한 정보(어떤 주문에 어떤 제품들이 포함되어 있고 각 제품 당 가격 정보)를 insert 해야 하는 상황이면 어떻게 해야 할까? for문을 떠올릴 수 있지만 for문은 올바른 해결법이 아니다. for문을 사용하면 insert 쿼리문을 여러번 서버 측에 보내게 되는데 만약 error가 발생하면? 이는 쿼리문의 ACID 법칙을 위배할.. 2022. 1. 2.
Cookie와 그 특성들 오늘의 포스팅은 Stateless 한 HTTP(S) 통신을 STATE 하게 만들어주는 '쿠키'와 그 특성들에 대해 알아보려고 한다. 우선 쿠키란 인증과 관련되어 광범위하게 쓰이기 때문에 front-end나 back-end 두 곳 모두 그 개념에 대해 자세히 알 고 있어야 한다. 쿠키는 마치 로컬 저장소와 같이 작은 단위의 파일을 저장할 수 있는 공간을 뜻하는데, 이곳에 세션 혹은 토큰과 같이 "나는 여기에 로그인한 상태에요"라는 데이터를 남김으로써 서버가 안심하고 개인적인 데이터 통신을 할 수 있도록 만들어 준다. 하지만 쿠키는 클라이언트 상에 저장되는 것이기 때문에 언제든지 탈취될 가능성이 있으며 이에 따라 여러 가지 특성들로 쿠키가 악의적으로 사용되는 것을 방지하고 있다. 아래 블로그에 관련되어 잘 .. 2021. 12. 29.
[Express] CORS Configuration Options 오늘 Express 코드를 만지다가 CORS를 설정해야 하는 상황이 있었다. 분명 공부했는데... 분명 알고있는 개념인데... 왜 기억이 하나도 나지 않는 걸까... 그래서 오늘은 힘들게 CORS의 옵션들에 대해 알아보자. Simple Usage 우선은 가장 기본적인 Simple Usage. 즉 모든 CORS 요청을 허용한다는 의미의 코드이다. app.use(cors()) 아마, 'CORS를 설정하라'라는 말에 뇌절이 온 이유는 아마 내가 위 코드만 주야장천 사용했기 때문이다. Single Usage 뿐만 아니라 단 하나의 라우팅에서만 CORS를 허용하는 방법도 있다. app.get('/products/:id', cors(), function (req, res, next) { res.json({msg: .. 2021. 12. 27.
Google Dinosaur 게임 해킹하기 다들 학교나 회사에서 인터넷이 끊기면 구글 크롬에서 무료한 시간을 때울 수 있는 공룡 게임을 해본 경험이 있을 것이다. 오늘 알수없는 유튭 알고리즘을 통해 이 게임을 해킹할 수 있는 방법에 대해 영상을 시청하게 되었는데, 아주 재미있어서 포스팅으로 옮겨본다. 우선 공룡게임 실행을 하려면 URL에 chrome://dino 라고 친다. 그러면 게임 실행창이 나오게 되는데, ctrl + shift + i를 눌러 아래와 같이 콘솔창에 입력하면 끝이다. 그러면 공룡이 장해물에 부딪혀도 게임오버되지 않고 끝까지 나아가는 진풍경을 볼 수 있다. 2021. 12. 26.
[React] 다른 OS에서 React 작업 시 유의할 점 집에서 작업할 때는 보통 Window 운영체제를 사용한다. (카카오톡 때문에...) 하지만 노트북의 경우 Linux 운영체제를 사용하기 때문에 오늘 사람 구경도 좀 할 겸 카페에 나가서 노트북으로 git clone을 해서 react 프로젝트 리파지토리를 복사를 했다. 그리고 여느 때와 마찬가지로 npm run start를 누르는 순간 에러가 발생하기 시작했다. 정확한 에러 코드는 기억이 나지 않지만, 대충 chlid-compiler is not a function 위와 같은 에러코드 였던 것 같다. 아무리 생각해도 운영체제와 관련된 문제인 듯하여 구글링을 해보니 아니나 다를까 운영체제가 다름으로서 나타나는 문제였다. 필자는 이 현상을 아래와 같은 방식으로 해결했다. node_modules를 삭제한다. n.. 2021. 12. 25.
[Git] 리파지토리에 파일을 클릭할 수 없을때?! 오늘 야심 차게 미뤄뒀던 프로젝트를 시작하며, Git에 local repository를 remote repository로 push 했다. 근데 뭔가가 이상한 느낌?! 파일에 커서표시만 뜰뿐 파일 안의 폴더를 Github을 통해 확인을 할 수 없는 것이었다. 뭐지? 이미지를 남겨놓진 않았지만 대략 아래와 같은 상황이었다. 원인은 .git 폴더가 root 폴더 아래 다른 폴더에도 있기 때문이었다. 아마 git init을 남발하면서 여러 폴더에 .git 폴더가 생성이 된 모양이었다. 이럴 경우 root의 .git폴더를 제외하고 나머지 폴더를 삭제하고 다시 push 하면 간단히 해결된다. 2021. 12. 25.
[Sequelize] 비동기 함수와 Sequelize 오늘 ORM 툴 중 하나인 Sequelize를 학습하다가 여러 번 키보드에 샷건을 때려 버렸다. 공식문서를 보면서 최대한 열심히 학습을 해보려 했지만 도대체가 코드가 작동을 할 기미를 보이질 않았다. 그러다가 아하! 하는 순간이 있었으니... 아래는 공식문서의 가장 첫 번째 설명 줄의 내용이다. Sequelize is a promise-based Node.js ORM for Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server. It features solid transaction support, relations, eager and lazy loading, read replication and more. Sequelize는 프로미스 기반의 node.js.. 2021. 12. 23.