일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gptapi
- GPT3.5
- nvmrc
- aiapi
- 호스팅영역
- openaiapi
- git
- class
- chatGPTAPI
- 클라우드
- nodejs
- 웹소켓연결끊김
- aws
- 자바
- 클래스
- db
- Express
- java
- 노드버전
- 웹소켓연결
- gpt3.5turbo
- Database
- 웹소켓재시작
- javascript
- 패키지설치에러
- Github
- ChatGPT
- iam사용자
- gitlab
- 버킷생성
- Today
- Total
목록Backend (23)
IT's Jenna

하나의 서비스를 완성하기 위해선 수많은 개발자들이 투입된다. 그렇기 때문에 개발을 함에 있어서 협업은 굉장히 중요하다. 백엔드 엔지니어가 API를 만들면 프론트엔드 엔지니어가 해당 API를 활용해야 하기 때문에 그에 대한 정보 공유가 필수다. 따라서 백엔드 엔지니어는 각각의 API가 어떤 매개변수를 입력받아서 어떤 결과를 내놓는지 등의 API 스펙에 관한 문서를 만든다. 하지만 이것을 워드나 엑셀로 만든다면 만드는 사람도 상당히 귀찮고 그것을 확인하는 입장에서도 굉장히 불편하다. 따라서 보다 편하게 API문서를 자동으로 관리할 수 있도록 나온 것이 swagger다. swagger 공부를 처음 시작할 때 참고하기 좋은 사이트가 있다. Swagger에서 자체적으로 개발자들을 위한 Editor을 오픈해두었다 ..
이제 본격적으로 DB의 데이터를 활용하는 서버 API를 만들어 보자. 우선 코딩 설명을 들어가기 전에 다시 한번 express 프레임워크의 구조를 정리해보았다. bin - www : 통신 관련 설정 (포트 및 http 관련) components : 모든 routes 에서 사용되는 공통 API들을 구분하여 정리 config : 데이터 베이스 연결 models : 각 routes에서 사용하는 데이터 베이스의 CRUD API 정의 (insert, update, delete, getList) public : 정적 파일 보관 장소 routes : 라우팅 경로별 client에 응답 동작 설정 (POST, PUT, DELETE, GET) app.js : express 프레임워크의 메인 스크립트로서 라우팅 서버 추가 ..

데이터베이스 모델링 - 현실에 존재하는 복잡한 데이터들을 체계화 및 단순화하여 컴퓨터상의 데이터베이스로 옮기는 과정 - 데이터베이스 모델링을 어떻게 하느냐에 따라 데이터 품질 및 서비스의 질이 달라질 수 있다 데이터베이스 모델링 설계할 때 가이드 - 데이터 중복 줄이기 - 유연하게 설계 (서비스 동작이 변경될 때 대응할 수 있도록 설계되어야 함) - 일관적으로 설계 (설계 및 명명 기준이 명확할 수 있도록) - 데이터베이스에 null 값이 없도록 설계 but, 현실적으로 위 규칙을 지키는 것이 쉽지는 않다.. ERD (Entity Relationship Diagram) - Entity : 하나의 독립적인 데이터 (테이블), Entity는 관계에 따라 다른 데이터를 속성으로 가질 수 있다. - ERD : ..

기본적으로 http 통신 프로토콜에선 req, res에 텍스트를 전달하면서 통신한다. 텍스트 외의 파일을 업로드하기 위해서는 form-data 형식으로 통신을 해야 하고 form-data 형식을 사용하기 위해선 추가 모듈이 필요하다. 이때 사용하는 모듈이 formidable이다. formidable 모듈은 npm i formidable --save로 설치해서 사용할 수 있다. 공부하고 있는 단계에서는 서버와 Database 그리고 파일을 저장하는 storage까지 하나의 PC에서 사용하지만 실무에서는 server 컴퓨터, database 컴퓨터, storage 컴퓨터를 모두 분리해서 사용한다. 이렇게 PC를 분리해서 사용해야 추후에 PC 확장이 용이하다. 파일을 업로드할 때의 절차를 한번 알아보자. 예를..
이번 포스팅에선 데이터 암호화에 대해 이야기해보겠다. 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) 코드를 모듈화 해보자 반복되는 ..