일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 호스팅영역
- class
- gptapi
- iam사용자
- nodejs
- 웹소켓재시작
- Express
- aws
- db
- 패키지설치에러
- 버킷생성
- openaiapi
- Github
- gpt3.5turbo
- chatGPTAPI
- 노드버전
- javascript
- nvmrc
- aiapi
- 클래스
- java
- GPT3.5
- 웹소켓연결
- ChatGPT
- gitlab
- 웹소켓연결끊김
- git
- 클라우드
- Database
- 자바
- Today
- Total
목록전체 글 (86)
IT's Jenna
이번 포스팅에선 데이터 암호화에 대해 이야기해보겠다. 1. SHA-2(Secure Hash Algorithm 2) SHA-2란 값을 입력받으면 고정된 길이의 해시값을 출력하는 알고리즘이다. 즉, 사용자가 test1을 입력하던 test12345를 입력하던 같은 길이로 암호화를 해서 데이터 베이스에 저장이 된다. 이때 Hash는 단방향 암호화 기법이기 때문에 입력된 값을 해시값으로 변경하는 것은 가능하지만 해시값을 역산해서 값을 찾는 것은 불가하다. 그래서 데이터베이스에 유저 정보를 저장할 때 해시 알고리즘을 적용해서 저장하게 되고 그러면 해커들이 데이터베이스에 접근을 하더라도 실제 유저 정보를 확인할 수 없다. Hash와 함께 사용하는 것이 솔트라는 랜덤 텍스트이다. 입력 값을 해싱하기 전에 랜덤으로 문자..
전체 코드는 제 github에서 볼 수 있습니다. https://github.com/Jungeun-Pyun/ASYNC_DESIGN_PATTERN Jungeun-Pyun/ASYNC_DESIGN_PATTERN Contribute to Jungeun-Pyun/ASYNC_DESIGN_PATTERN development by creating an account on GitHub. github.com 코드를 작성하다보면 반복되는 동작이 많다. 불필요한 반복을 제거하기 위해 자주 사용되는 동작을 하나의 함수로 저장해 두고 필요할 때마다 가져와서 쓸 수 있다. 또한 이렇게 반복적으로 사용되는 함수들을 종류별로 파일에 정리한다. 이것을 모듈화라고 한다. Database 상태변화(CRUD) 코드를 모듈화 해보자 반복되는 ..
목표 : DB에 CRUD 동작을 하는 쿼리문을 만들어 보자 1. createPool 우선 express를 활용해서 goods라는 라우팅 환경을 하나 만들었다. 여기서 mysql과 통신해서 쿼리문을 동작시키고자 한다. 이때 서버와 mysql의 연결을 위해 사용하는 것이 createPool이다. Pool은 database 연결 캐시*이다. Pool을 사용하면 다수의 connection을 관리할 수 있고, 매번 connection을 새로 만들 필요 없이 기존의 connection을 재활용할 수 있다. 캐시 : 데이터나 값을 미리 복사해둔 임시 장소. 데이터에 접근하는 시간이나 계산하는 시간이 오래 걸릴 때 시간을 절약하기 위해 미리 복사본을 만들어 둔 것 아래와 같이 config라는 폴더 내 index.js파..
Javascript는 기본적으로 비동기 (Non-Blocking) 프로그래밍이다. 비동기 시스템이란, 동작이 스크립트가 작성된 순서대로 진행되는 것이 아니라 결과값이 먼저 나오는 순서대로 진행되는 것이다. 비동기 시스템은 주로 퍼포먼스가 극대화되어야 하는 웹/앱에서 많이 사용된다. 1. Non-Blocking fs.readFile('./file.md', (err, data) => { if (err) throw err; console.log('non blocking data : ',data); }); console.log('wow') //result //wow //non blocking data : 스크립트가 작성된 절차대로 수행된다면 데이터가 먼저 출력되고 wow가 출력되겠지만, 비동기 방식은 그렇지 않..
Injection attack이란? 외부에서 서버에 쿼리문을 보내, 데이터 베이스를 추출하거나 임의로 조작하는 행위 Injection attact 사례 router.get('/', function(req, res, next) { console.log('query : ', req.query) let {idx, name} = req.query console.log('idx : ', idx, 'name :', name 'idx type : ', typeof idx) // idx : 1 name : asdf idx type : string let sql sql = 'SELECT * FROM Goods WHERE idx = "'+idx+'"' pool.query(sql, function(error, results..

GROUP BY sql에서 그룹별로 개수를 알고 싶을 때 count함수와 함께 사용하는 것이 GROUP BY 이다. 설명보다 예시를 보면 명확이 이해가 될 것이기 때문에 바로 예시로 넘어가도록 하겠다. 다음과 같이 Type 별로 정리가 되어있는 group1 테이블을 하나 만들었다. 위의 그래프에서 Type 별 개수를 확인하고 싶은 경우 아래와 같이 COUNT함수와 함께 GROUP BY를 사용해서 type별로 묶어준다. 결과는 아래 그림과 같다. SELECT group1.type, COUNT(group1.name) AS cnt FROM group1 GROUP BY type; GROUP BY와 함께 사용할 수 있는 조건식이 2개가 있다. 하나는 이전에 포스팅에서 언급했던 WHERE이고, 다른 하나는 HAVI..