전체 글 126

node.js - mysql 수업을 마치며/ 더 해보면 좋을 것들

1. 검색 기능 만들기 hint : 을 이용해서 검색창을 만들고, 사용자가 검색을 했을 때, get 방식으로 전송 되도록 한다. select *from topic where title ='keyword' 혹은 index 기능 사용해보기! 2. 정렬 기능 만들어 보기 먼저 작성된 글이 먼저 보이거나, 나중에 저자의 이름 순으로 select*from topic order by ~ 3. 페이지 기능 select*from topic limit 0 offset 20 4. Not Only SQL 정보 기술은 SQL의 한계에 갖혀 있기 때문에 SQL을 벗어나면 새로운 방식들을 엿볼 수 있다.

SQL injection

현재 내가 만든 홈페이지는 url에 있는 query 데이터를 통해서 알맞은 정보를 보여준다. 해당 부분의 코드는 다음과 같다. exports.desc = function(request,response){ var _url = request.url; var queryData = url.parse(_url,true/*true는 객체형식으로 받아옴*/).query; db.query(`select * from topic`, function(error,topics){ if(error){ throw error; } db.query(`select * from topic left join author on topic.author_id = author.id where topic.id=?`,[queryData.id], fu..

저자 관련 기능 구현

저자 관련 만들기/읽기/수정/삭제 기능을 구현 하였음 const template = require('./template.js'); const db = require('./db'); const url = require('url'); const qs = require('querystring'); exports.authors = function(request, response){ db.query(`select * from topic`, function(error,topics){ db.query(`select*from author`, function(error2, authors){ var list = template.list(topics); var title = 'Author List'; var html = t..

mysql로 node.js에서 만든 수업을 옮기다.

아래 코드는 node.js로 파일시스템 하에 만들었던 홈페이지를 database 시스템 아래로 옮긴 것이다. topic이라는 라이브러리를 만들어 각 페이지를 모듈화 하여 간결하게 만들었다. const http = require('http'); const url = require('url'); const path = require('path'); const topic = require('./lib/topic'); const app = http.createServer(function(request,response){ var _url = request.url; var queryData = url.parse(_url,true/*true는 객체형식으로 받아옴*/).query; var pathname = url.p..

node.js와 mysql 연결하기

생활코딩에서 말해주신 것을 따라 npm을 통해 mysql을 설치 했으면 www.npmjs.com/package/mysql 에 써있는 데로 var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'me', password : 'secret', database : 'my_db' }); connection.connect(); connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) { if (error) throw error; console.log('The solution is: ', results[0].s..

npm과 package.json

npm은 node package manager의 약자. node.js에 모듈을 설치하고 관리하는 것을 도와주는 것으로 보인다. package.json은 프로젝트의 정보와 패키지 버전 정보를 명시하는 파일. 특히 dependecies는 프로젝트가 의존하는 패키지들을 말한다. npm에 모듈을 설치할 때 npm install --save mysql 이런 식으로 설치하면 package.json에 dependencies에 등록이 된다. 아래 링크는 npm install option들이다. docs.npmjs.com/cli/v6/commands/npm-install

http 수업 정리

아래는 http의 header 정보다. 아래 주소는 HTTP response code를 설명하는 위키피디아 페이지다. ko.wikipedia.org/wiki/HTTP_상태_코드 http수업을 마치며... 더 공부 해 볼 주제들 1) https, ssl 2) cache(성능 향상) 3) 개인화(cookie, 사용자 식별) / web storage 4) proxy(클라이언트와 서버 사이에 있는 중개 서버) chache를 대신해주거나 보안을 담당하거나 트래픽 분산 등을 할 수 있다고 한다. 5) network monitoring 도구 * developer tools -> network * wireshark ( 컴퓨터의 모든 네트워크 도구를 감시 할 수 있는 도구)

생활코딩/HTTP 2021.01.07

DNS 수업 정리

IP 주소와 호스트 호스트 : Domain name과 IP 주소를 연결한 리스트 DNS의 원리 내가 주소창에 어떤 이름을 치면 DNS server에 그 이름과 매칭되는 IP 주소를 받음. 그럼 그 IP 주소에 접속하는 것! 도메인 이름 구조 sub, second-level, top-level, root 각 부분을 담당하는 서버가 있다고 한다. (root 부분은 URL에서 생략되어 있다고 함. 실제로 naver.com. 이런식으로 주소창에 입력해도 잘 작동된다) 7he8oy.tistory.com 각 레벨을 담당하는 서버는 바로 아랫단의 서버의 정보만을 갖고 있다. 따라서, 내가 위 주소로 접속하려고 하면 1. root를 담당하는 서버 -> .com을 담당하는 서버의 정보를 알려줌 2. .com을 담당하는 ..

router와 NAT, port forwarding

내가 인터넷 사업자와 계약을 맺으면 나는 하나의 ip 주소를 부여받음. 이것은 public ip. 그리고 거기에 공유기를 설치해 연결하면, 그 내부는 각각 사설 ip로 연결됨. iptime 무선 공유기 설정에 192.168.0.1로 접속하는 이유를 알았다! NAT (Network address translation) 라우터와 그 라우터에 연결된 기기들에는 각각 사설 ip가 부여되어 있다. 따라서 이것은 외부와 통신을 할 때는 사용할 수 없음. 그러므로 외부와 통신하기 위해서는 라우터가 가정내에 어느 기기가 어디에 접속하고 싶은지 그 정보를 받아서 외부와 대신 정보를 주고 받은 후에 다시 사설 ip주소를 이용하여 요청한 기기에 정보를 제공해주는 과정이 필요함. 이 시스템을 NAT라고 한다. Port For..