웹소켓(web socket) 이 무엇일까?웹 소켓 프로토콜은 HTTP 와 다른 방식의 통신 프로토콜로 웹서버와 웹브라우저가 서로 실시간 메시지를 교환하는데 사용된다.웹소켓 연결을 맺기위해서 첫번째 handshake 를 주고받은 이후 지속적으로 연결이 유지되는 것이 특징이다.매번 메시지 전송시에 새롭게 연결을 맺을 필요가 없어서 빠르고 효율적이다.handshake 를 위해서 HTTP 프로토콜에 의존하는 애플리케이션 계층의 프로토콜에 불과하며, 자체적인 암호화나 보안장치를 지원하지 않는다.웹소켓과 HTTP 의 차이점은? 1) HTTP모든 HTTP를 사용한 통신은 클라이언트가 먼저 요청을 보내고, 그 요청에 따라서 웹서버가 응답하는 형태이며, 웹서버는 응답을 보낸 후 웹 브라우저와의 연결을 끊는다.양쪽이 데이..
현재파일이 있는 디렉토리의 절대경로를 반환한다. __dirname : Node.js에서 현재 실행중인 파일의 디렉토리의 절대경로를 나타내는 환경변수. path.join() : 주어진 경로를 하나의 경로로 연결하는 함수 예를 들면, 현재 파일이 /home/user/myapp/src/index.js 에 있는 경우 path.join(__dirname) 은 /home/user/myapp/src 을 반환한다. path.join(__dirname) 언제 사용하나요? 현재파일이 있는 디렉토리에 있는 파일이나 디렉토리에 액세스를 해야하는 경우 현재 파일이 있는 디렉토리의 절대경로를 얻어야하는 경우
학습차원으로 "클린아키텍쳐" 도서를 읽고 정리한 글입니다. ISP: 인터페이스 분리법칙 (문제사항) 다수의 사용자가 OPS클래스의 오퍼레이션을 사용한다. User1은 오직 op1을, User2는 op2만을, User3는 op3만을 사용한다고 가정한다. OPS 가 정적타입언어로 작성된 클래스라고 해보자 이경우 User1에서는 op2와 op3를 전혀 사용하지 않음에도 User1의 소스코드는 이 두 메소드에 의존하게된다. 이러한 의존성에 의해 OPS클래스에서 op2의 소스코드가 변경되면 User1도 다시 컴파일한 후 새로 배포해야한다. 사실 User1과 관련된 코드는 전혀 변경되지 않았음에도 말이다. 이러한 문제는 오퍼레이션을 인터페이스 단위로 분리하여 해결할 수 있다. User1의 소스코드는 U1Ops와 o..
학습차원으로 "클린아키텍쳐" 도서를 읽고 정리한 글입니다. SRP: 단일 책임 원칙 단일 모듈은 변경의 이유가 하나, 오직 하나뿐이어야한다. 하나의 모듈은 하나의, 오직 하나의 액터(actor)에 대해서만 책임져야한다. SRP가 말하는 “변경의 이유”란 바로 이들 사용자와 이해관계자를 가리킨다. 소프트웨어 시스템은 사용자와 이해관계자를 만족시키기 위해 변경된다. actor은 사용자/이해관계자 집단을 의미한다. 클래스는 하나의 유효범위가 되며, 유효범위 바깥에서는 private 멤버가 있는지를 전혀 알 수 없다. 단일 책임원칙은 메소드와 클래스 수준의 원칙이다. OCP: 개방-폐쇄 원칙 소프트웨어 개체(artifact)는 확장에는 열려있어야하고, 변경에는 닫혀있어야한다. 소프트웨어 개체의 행위는 확장할 수..
학습차원으로 "클린아키텍쳐" 도서를 읽고 정리한 글입니다. 좋은 소프트웨어 시스템은 깔끔한 코드로부터 시작한다. 좋은 벽돌을 사용하더라도 빌딩의 아키텍쳐를 엉망으로 만들 수 있다. 좋은 벽돌로 좋은 아키텍쳐를 정의하는 원칙이 필요한데, 그게 바로 SOLID다. SOLID S - SRP(Single Responsibility Principle): 단일책임법칙 소프트웨어 시스템이 가질 수 있는 최적의 구조는 시스템을 만드는 조직의 사회적 구조에 커다란 영향을 받는다. 각 소프트웨어 모듈은 변경의 이유가 하나, 단 하나여야만 한다. O - OCP(Open-Closed Principle): 개방-폐쇄 원칙 기존코드를 수정하기 보다는 반드시 새로운 코드를 추가하는 방식 시스템의 행위를 변경할 수 있도록 설계해야만..
구현 목표 (구현완료) PR 리뷰요청 이벤트가 발생하면, 슬랙채널에 알림을 보낸다. (아직 진행중) PR 완료후 develop 브랜치에 merge가 완료되면 슬랙채널에 알림을 보낸다. [방법1] 깃헙봇으로 Repository 에서 이벤트 발생할때 알림 메시지 보내기 1. Slack 워크스페이스와 깃헙봇 연동하기 앱 > Github > 관리 > 앱 찾아보기 앱 홈페이지 버튼 클릭 2. 내가 소식받고 싶은 채널에 깃헙봇을 구독하기 앱 > Github 클릭 > 좌측상단 Github 클릭 깃헙 이벤트가 발생하면, 알림을 받는 채널 선택하기 원하는 래포지토리 구독하기 [구독래포지토리명] 팀 내의 래포지토리를 구독할때: [팀명]/[래포지토리명] 개인 래포지토리를 구독할때: [개인깃헙닉네임]/[래포지토리명] 필자의 ..
Javascript Array 내장함수 활용하기 Array.prototype.find() ⇒ 조건에맞는 원소중 맨첫번째거를 리턴함 const array = [ 5, 12, 8, 130, 44, 11 ]; const found = array.find( e => e > 10 ); // 12 console.log(found); // 12 Array.prototype.find() - JavaScript | MDN Array.prototype.find() - JavaScript | MDN find() 메서드는 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환합니다. 그런 요소가 없다면 undefined를 반환합니다. developer.mozilla.org Array.prototype.includes() 배열..
node.js로 작업을 하고 있지만, 당연시하게 생각하면서도 막상 질문을하면 답변을 못하는 내모습이 상상되서 devDependencies 를 왜 따로 저장하는건지 궁금해졌다. devDependencies는 개발환경에서만 필요한 라이브러리들을 관리하는 곳 인줄만 알았다. devDependencies는 애플리케이션 동작과는 직접적인 연관이 없지만, 개발할때 필요한 라이브러리 들을 관리한다. 배포할때는 dependencies에 설치된 라이브러리들을 포함되지만 devDependencies에 설치된 라이브러리는 개발할때만 필요한 라이브러리라서 배포할때는 포함되지 않는다. 공식문서에서의 dependencies와 devDependencies 정의 "dependencies": Packages required by yo..
- Total
- Today
- Yesterday
- gem
- Nest.js
- vscode
- 바이트디그리
- 개발용어
- TDD
- 한달독서
- 미완
- 나도 할 수 있다
- 참고
- Jekyll
- nestjs jest
- jest
- Mongoose
- node.js
- 디지털디톡스
- 습관개선
- 갓생살자
- TypeScript
- RDBMS
- OS
- IT용어
- MongoDB
- 클린아키텍쳐
- nestjs
- 스마트폰중독
- 한달어스
- MySQL
- typeORM
- git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |