* HTML
웹페이지에 글쓰고 그림 넣기 위해 만들어진 언어
* JS ?
HTML 페이지에 '종속' 된 언어
HTML 페이지를 위해 만들어진 언어 !!!
' HTML 조작 ' 을 위해서 만들어진 언어
그럼, JS는 누가 동작시켜주냐 ?!
이 js를 해석하는게 '브라우저'이다
'브라우저'마다 자쓰 해석 엔진이 있는데, 크롬은 v8 , 모질라는 스파이더몽키
크롬이 v8를 만들어내고 나서 js엔진이 너무 뛰어난 나머지 v8를 브라우저에서 똑 떼서 출시를 하게 됌
그것이 바로 Node.js !!!!!!!!
( 노드.js 는 크롬의 자쓰 해석 엔진으로 이루어져 있음 )
node.js를 만든 이유?
자쓰를 브라우저 내에서 말고도 다른 환경에서 쉽게쉽게 실행하기 위해서 (자바스크립트 런타임)
그러다 node.js로 서버를 만듦
=> 이유 : Non-blocking I/O
* Node.js의 특징
문제점 : 중간에 버거운 요청이 들어오면, 그 요청을 처리하는 동안 너무 시간이 오래 걸림
- Non-blocking I/O
node.js는 일단 요청을 한번에 다 받고 처리 속도가 빠른 것부터 먼저 처리해서 보내준다.
완료가 된 것부터 갖다주는 것
SNS, 채팅서비스 같은 경우 서버가 1초에 몇 십만개의 요청을 처리할 수 있어야 된다.
(1초에 카톡보내는 사람들이 개많지)
일반 서버 같은 경우 이런 무거운 요청을 처리하는데 대기 시간이 오래 걸리는데
node.js의 경우 요청이 많거나 오래걸리는 요청이 있어도 멈추거나 요청 대기시간이 있지 않음)
=> 일반 서버같은 경우 , 서버 스케일링이나 멀티쓰레딩을 통해 해결할 수도 있다고 함
- Event-driven
- 이미지 처리가 필요한 서버인 경우엔 node.js가 적합하지 않다고 한다.
이유 : 같이 쓸 수 있는 라이브러리가 별로 없다고 함
-> 수학 계산, 이미지 처리 같은 경우엔 python을 사용하는게 더 좋다고 한다.
터미널 명령어에
node
라고 입력하면, 바로 js를 실행할 수 있는 런타임이 실행이 된 것
express 설치하기 -> 서버를 쉽게 만들 수 있게 도와줌
npm -> 라이브러리 설치를 쉽게 도와주는 도구
npm init
// npm init 하고 나서
// enter- enter 누르다 entry-point에서 "server.js" 입력
npm install express
내가 어떤 라이브러리를 설치했는지 기록하기 좋으니 pacakage.json를 생성해주기
(npm init하면 알아서 생성된다)
mysql 설치
brew install mysql //brew로 Mysql 설리
mysql --version //버전 확인
mysql.server start // mysql server 실행
mysql 기본 설정 해주기
mysql_secure_installation
질문들 -
1) VALIDATE PASSWORD COMPONENT ( 복잡한 비밀번호 여부 ) : n
2) set the password (비밀번호 설정 & 확인)
3) Remove anonymous users? (익명 사용자 삭제) : y
4) Disallow root login remotely? (원격 접속 허용하지 않을 것인지) : y
5) Remove test database and access to it? (test DB 삭제 여부) : n
6) Reload privilege tables now? (변경된 권한을 반영하여 테이블 다시 로드) : y
기본 설정 한 다음에 mysql 접속해주기
mysql -uroot -p
.....
갑자기 진도 쫙 빼고 돌아오기 ^_^
const express = require("express");
const path = require("path");
const app = express();
const mysql = require("mysql2/promise");
const db_config = require("./config/db-config.json");
const pool = mysql.createPool({
host: db_config.host,
port: "3306",
user: db_config.user,
password: db_config.password,
database: db_config.database,
});
const getConn = async () => {
return await pool.getConnection(async (conn) => conn);
};
app.use(express.static(path.join(__dirname, "../public")));
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "../public/index.html"));
});
app.get("/testSelect", async (req, res) => {
const conn = await getConn();
const query = "SELECT TEST_ID, TEST_TXT FROM TB_TEST";
let [rows, fields] = await conn.query(query, []);
conn.release();
res.send(rows);
});
app.listen("8080", () => {
console.log("Server started");
});
mysql 테이블 생성하고 mysql workbrench도 깔아보고 중간에 정상적으로 연결안되는것도 해결하고 그러다보니
갑자기 진도 뽝 나가서 돌아왔음 ㅎㅅㅎ....
아무튼 매우 알차게 궁금햇던 node.js도 사용해보고 express, mysql 사용해서 서버 실행도 해보고 재밌었던 시간
'✍ 따뜻한 개발 공부' 카테고리의 다른 글
객체지향 프로그래밍? (0) | 2023.05.09 |
---|---|
CORS 에러! 복습하기 (0) | 2023.05.08 |
오버라이딩과 오버로드 ? (0) | 2023.05.05 |
바이트 단위 (0) | 2023.05.04 |
피보나치 수열 - DP 적용 (1) | 2023.05.03 |
댓글