코딩부트캠프 (62) 썸네일형 리스트형 웹 풀사이클 데브코스 TIL 44일차 연산자 정적인 데이터들을 유기적으로 행동하게 하여 새로운 가치를 창출해 내는 것. 산술연산자, 대입연산자, 증감연산자, 관계연산자, 논리연산자, 비트연산자가 있다. 분기문 특정 조건에 의해서 나눈다. if 문이 대표적임. 수행조건에는 관계연산자가 사용된다. if문 int main() { int a; scanf("%d", &a); if(a>5) { printf("입력값은 5보다 큽니다\n"); } return 0; } //7 //입력값은 5보다 큽니다 if~else 문 else는 '그 밖의'라는 의미를 가진다. 수행조건이 참이면 if문에서, 거짓인 경우는 else 문에서 처리한다. int main() { int a; scanf("%d", &a); if(a>5) { printf("입력값은 5보.. 웹 풀사이클 데브코스 TIL 43일차 새로운 스프린트 새로운 스프린트에서는 컴파일 언어의 대표주자인 C언어에 대해 학습하고, 객체지향의 원리에 대해서 학습한후 타입스크립트와 리액트에 대해서 학습하게된다. 컴파일 언어 모든 프로그래밍 언어의 동작 원리는 거의 같다. 스크립트 언어는 컴퓨터 내부 동작원리를 이해하기 힘들다. C언어의 동작 원리들은 다른 프로그래밍 언어들의 동작 근간을 이룬다. 타입스크립트 학습에도 도움이 된다. 프로그래밍 프로그램 개발자가 소프트웨어를 개발하는 과정 구상 - 설계 - 구현 순서로 이어진다. 설계 - 원시코드 작성 - 컴파일 - 링크 설계: 머리속으로 구상한 것을 기록하는 것 원시코드 작성: 머리속으로 구상 한 것을 코드로 만듬 컴파일: 소스코드를 이진코드로 변환 링크: 라이브러리등의 링크를 걸어주어 실행파일로 만.. 웹 풀사이클 데브코스 TIL 42일차 camel vs snake http response 에서는 카멜 케이스 방식을 사용하는 것이 좋다. 하지만 데이터베이스에서는 스네이크 케이스를 사용하는데 응답을 전송하기 전에 이를 바꿔주어야 한다. conn.query(sql, values, (err, results) => { if(err) { console.log(err); // return res.status(StatusCodes.INTERNAL_SERVER_ERROR); } if(results.length){ results.map((result) => { result.pubDate = result.pub_date; delete result.pub_date; }); allBooksRes.books = results; } else return res.s.. 웹 풀사이클 데브코스 TIL 41일차 jwt 분리 auth.js 파일을 만들어서 jwt 부분을 모듈화 하였다. const jwt = require('jsonwebtoken'); const dotenv = require('dotenv'); dotenv.config(); const ensureAuthorization = (req, res) => { try{ let receivedJwt = req.headers["authorization"]; console.log("received jwt : ", receivedJwt); let decodedJwt = jwt.verify(receivedJwt, process.env.PRIVATE_KEY); console.log(decodedJwt); return decodedJwt; .. 웹 풀사이클 데브코스 TIL 40일차 jwt api 좋아요 api, 장바구니 api, 주문 api에 jwt가 필요하다. 쿠키에 jwt를 보내놓으면 http에서 기억해뒀다가 다음 요청에서 그 값을 쿠키에 자동으로실어서 보낸다. 이 값을 그대로 쿠키에 넣는것이 아닌 authorization 헤더에 넣어서 보낸다. 백엔드의 코드는 다음과 같다. // GET + "/jwt" : 토큰 발행 app.get('/jwt', function (req, res) { // 서명 = 토큰 발행 var token = jwt.sign({ foo: 'bar' }, process.env.PRIVATE_KEY); res.cookie("jwt", token, { httpOnly : true }); res.send("토큰 발행 완료") }) //.. 웹 풀사이클 데브코스 TIL 39일차 MySQL 데이터 삭제하는 방법 DELETE ```sql DELETE FROM 테이블명 (WHERE 조건); -- 조건이 없으면 모든 행이 삭제된다. 2. DROP ```sql DROP TABLE 테이블명; -- 테이블을 통쩨로 삭제 TRUNCATE ```SQL TRUNCATE 테이블명; -- 모든 행이 삭제됩니다.(테이블은 당연히 남아있다) **DELETE는 fk를 들고있는 테이블을 먼저 지우는것이 좋다.** ## Error Code: 1175 가장 최상위 테이블인 orderedBooks를 삭제하려고 보니 오류가 난다. 에러코드 1175이다. 이를 해결하는 방법은 다음과 같다. 설정에 들어가서 safe updates 를 비활성화해준 후 워크벤치를 껐다 키면 간단하게 해결된다. ## DELETE와 TRU.. 웹 풀사이클 데브코스 TIL 38일차 논 블로킹 I/O 비동기식 I/O 처리 전날의 강의에서 발생했던 문제는 이 비동기식 처리 때문에 발생한 일이다. 노드 js 한테는 순서가 의미가 없다. 그렇다면 여태까지는 왜 문제가 없었을까? Node.js 비동기 처리 방식 비동기 발생 : 실행되는 코드가 기다려야 하는 시간이 생긴다는 뜻. 이전 시간이 오래걸리면 안 기다려주고 다음코드를 무작정 실행 ex) setTimeOut(), setInterval(), query() 비동기 처리 : 비동기가 필요 없을 때가 있는데 이런 부분은 처리해주어야 한다. 이전 코드들의 시간을 다 기다려 준다. 순서를 맞춰서 코드를 실행해 주겠다 비동기 처리 콜백 함수 : 함수 할일 다하고 이걸 실행해줘(= 순서 맞춰서 이걸 뒤에 실행해 줘) Promise(resolve, .. 웹 풀사이클 데브코스 TIL 37일차 주문하기 Table delivery { id integer [primary key] address varchar receiver varchar contact varchar } Table orders { id integer [primary key] delivery_id integer book_title varchar total_quantity integer total_price integer created_at timestamp user_id integer } Table orderedBook { id integer [primary key] order_id integer book_id integer quantity integer } 세 개의 테이블을 사용한다. 테이블 상 delivery 부터 insert 하.. 이전 1 2 3 4 5 6 ··· 8 다음