생활코딩/WEBn
-
[Node.js & MySQL] main.js 정리 - DB접속 정보/쿼리 분리생활코딩/WEBn 2021. 1. 12. 02:08
main.js에 실제 실행 부분의 코드가 포함되어 있으면 복잡해져서 전체맥락을 파악하기 쉽지 않다. main.js는 index, 목차처럼 사용하는 것이 바람직하고, 그렇게 하기 위해서는 구체적인 정보들의 분리가 필요하다. 먼저 DB접속 정보를 분리했다. data/lib/db.js 파일 생성 후 접속 정보를 가져온다. var mysql = require('mysql'); var db = mysql.createConnection({ host : 'localhost', user : 'root', password : 'password', database : 'data' }) db.connect(); module.exports = db; // 외부에서 임포트할 모듈이 하나라면 이렇게 하면 된다 main.js에서는..
-
[Node.js & MySQL] 목록 콤보박스 생성 / 디폴트값 설정생활코딩/WEBn 2021. 1. 5. 21:03
DB에서 가져온 데이터를 반복문을 이용해 html 콤보박스() 형태로 작성 그중 원하는 데이터를 디폴트로 설정(selected) [강의 출처] opentutorials.org/course/3347/21193 html에서 콤보박스를 생성하는 태그는 select다. Value1 Value2 Value3 Value1 Value2 Value3 이 박스에서 Value1을 선택하고 해당 FormData를 전송하면, 데이터는 {"전송되는 데이터 이름": "1"}처럼 객체형태로 전달된다. 이 기능과 반복문을 이용해 특정한 데이터로 콤보박스를 생성할 수 있다. (MDN Web Docs js 루프와 반복 페이지에도 비슷한 예시가 있으니 나중에 헷갈리면 참조!) 자바스크립트의 배열을 이용해 콤보박스를 생성하는 경우: var..
-
[Node.js & MySQL] LEFT JOIN으로 가져온 데이터 출력생활코딩/WEBn 2020. 12. 9. 21:32
LEFT JOIN SELECT * FROM table1 LEFT JOIN table2 ON table1.key=table2.key 테이블에 같은 이름의 컬럼이 있는 경우, 테이블.컬럼 형태로 표시해주어야 ambiguity error가 나지 않는다. SELECT topic.id, title, author.name, author.description FROM topic LEFT JOIN author ON topic.author_id=author.id; +----+-----------+--------+-------------+ | id | title | name | description | +----+-----------+--------+-------------+ | 0 | Home | banana | fru..
-
[Node.js & MySQL] 데이터 처리방식: 파일 -> MySQL 이식생활코딩/WEBn 2020. 12. 9. 18:03
[강의 출처] opentutorials.org/course/3347 Node.js - MySQL - 생활코딩 수업소개 이 수업은 Node.js와 MySQL을 이용해서 웹애플리케이션을 만드는 방법에 대한 수업입니다. 수업대상 예를들어 1억 개의 페이지로 이루어진 웹사이트에서 필요한 정보가 파일에 하나하나 opentutorials.org 데이터 리스트 얻기 기존에는 파일 시스템을 이용했었기 때문에, 데이터 리스트를 얻으려면 아래처럼 파일 시스템을 읽어와야 했다. fs.readdir('./data', function(err, dataList){ /* code */ }; 이제 데이터는 MySQL에 저장되므로 이 부분은 이렇게 대체해야 한다. /* var db = mysql.createConnection({ ho..
-
[Node.js & MySQL] Intro, 환경설정생활코딩/WEBn 2020. 11. 3. 15:34
[강의 출처] opentutorials.org/course/3347 Node.js - MySQL - 생활코딩 수업소개 이 수업은 Node.js와 MySQL을 이용해서 웹애플리케이션을 만드는 방법에 대한 수업입니다. 수업대상 예를들어 1억 개의 페이지로 이루어진 웹사이트에서 필요한 정보가 파일에 하나하나 opentutorials.org 필요성 & Intro. 기존에 Node.js로 작성했던 Web2 페이지에서는 유저 게시판 기능(HTML Form - post)을 file 생성/편집 형태로 구현했었다. 여기에 검색, 정렬 기능을 추가하거나, 기존 데이터 양식을 일괄 변경하는 등의 작업이 필요하다면 데이터베이스를 사용하는 것이 바람직하다. (파일 시스템으로 처리하기는 너무 번거로운데다, DB를 이용하면 보안,..
-
[OAuth2.0] OAuth2.0 개요생활코딩/WEBn 2020. 9. 30. 17:57
[강의 출처] opentutorials.org/course/3405 WEB2 - OAuth 2.0 - 생활코딩 수업소개 사용자가 가입된 서비스의 API에 접근하기 위해서는 사용자로부터 권한을 위임 받아야 합니다. 이 때 사용자의 패스워드 없이도 권한을 위임 받을 수 있는 방법이 필요합니다. 이를 위� opentutorials.org OAuth2.0란? 언제: 사용자(Resource Owner)가 나의 서비스(Client)를 이용할 때, 무엇을: 나의 서비스가 사용자가 이용하는 다른 서비스(구글이나 페이스북 등 Resource Server)와 상호작용할 수 있도록 구글 캘린더에 이벤트를 대신 추가해준다거나 어떻게: 다른 서비스쪽에서 사용자 로그인 정보를 받아서, 나의 서비스에게 특정 권한을 부여한 acce..
-
[DNS] Domain Name System 개요생활코딩/WEBn 2020. 9. 28. 18:30
[강의 출처] opentutorials.org/course/3276 WEB2 - Domain Name System - 생활코딩 수업소개 이 수업은 도메인 이름을 자신의 서버 컴퓨터에 부여하는 방법을 알려드리는 수업입니다. 원래 서버 컴퓨터에 접속을 하려면 그 컴퓨터의 ip 주소를 알아야 합니다. 그런데 이 주소를 � opentutorials.org Domain Name System이란? 인터넷에 연결된 컴퓨터 한 대 한 대를 host라고 하고, host와 host가 연결될 수 있도록 각 host의 주소를 표현해주는 IP address라고 한다. 숫자의 나열인 IP주소는 그 자체로 기억하기 어렵기 때문에, 이를 텍스트 형태의 '이름(Domain)'으로 표현하기로 하고, DNS Server에 그 쌍을 기록해..
-
[Node.js] 입출력 데이터의 보안 이슈생활코딩/WEBn 2020. 9. 18. 17:57
[강의 출처] opentutorials.org/course/3332/21150 App - 입력 정보에 대한 보안 - 생활코딩 수업소개 입력정보와 관련해서 보안적으로 처리해야 할 이슈를 살펴보겠습니다. 강의 소스코드 main.js (변경사항) var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('queryst opentutorials.org 입력정보 보안 데이터 저장 형태와 아래와 같다고 할 때, directory /data /data1 /data2 /data3 /main.js /password.js URL에 ?id=../password.js와 같은 쿼리스트링을 입력함으로써 해당 정보에 접..