프로그래밍(Basic)

    [바미] 알고리즘 수업 - 알고리즘의 수행 시간 4

    https://www.acmicpc.net/problem/24265 24265번: 알고리즘 수업 - 알고리즘의 수행 시간 4 오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시 www.acmicpc.net 코드 function menOfPassionAlgorithmPerformance(n) { // 코드1의 수행 횟수, n(n-1)/2번 console.log((n * (n - 1)) / 2); // 코드1의 수행 횟수를 다항식으로 나타냈을 때, 최고차항의 차수는 2 console.log(2); } const readline = require('node:rea..

    [바미] 알고리즘 수업 - 알고리즘의 수행 시간 3

    https://www.acmicpc.net/problem/24264 24264번: 알고리즘 수업 - 알고리즘의 수행 시간 3 오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시 www.acmicpc.net 코드 function menOfPassionAlgorithmPerformance(n) { console.log(n * n); // 코드1의 수행 횟수, n^2번 console.log(2); // 코드1의 수행 횟수를 다항식으로 나타냈을 때, 최고차항의 차수는 2 } const readline = require('node:readline'); const rl..

    알고리즘 수업 - 알고리즘의 수행 시간 2

    https://www.acmicpc.net/problem/24263 24263번: 알고리즘 수업 - 알고리즘의 수행 시간 2 오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시 www.acmicpc.net 코드 function menOfPassionAlgorithmPerformance(n) { console.log(n); // 코드1의 수행 횟수, n번 console.log(1); // 코드1의 수행 횟수를 다항식으로 나타냈을 때, 최고차항의 차수는 1 } const readline = require('node:readline') const rl = read..

    [바미] 알고리즘 수업 - 알고리즘의 수행 시간 1

    https://www.acmicpc.net/problem/24262 24262번: 알고리즘 수업 - 알고리즘의 수행 시간 1 오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시 www.acmicpc.net 코드 function menOfPassionAlgorithmPerformance(n) { console.log(1); // 코드1의 수행 횟수는 항상 1 console.log(0); // 코드1의 수행 횟수를 다항식으로 나타냈을 때, 최고차항의 차수는 0 } // 예제 입력 menOfPassionAlgorithmPerformance(1); 풀이 설명 이 문..

    [바미] 미들웨어 패턴(Middleware Pattern)

    미들웨어 패턴(Middleware Pattern)이란? 미들웨어 패턴은 소프트웨어 엔지니어링에서 클라이언트 요청과 서버 응답 사이에 위치하는 중간 처리 계층을 의미하는데 이 패턴을 통해 개발자는 요청 처리 파이프라인에 여러 처리 단계를 도입할 수 있으며, 각 단계는 순차적으로 요청을 처리하고, 필요에 따라 다음 미들웨어로 요청을 전달하거나 응답을 반환할 수 있습니다. 예시 미들웨어 패턴은 Node(Express)에서 사용하여 로깅, 인증, 세션 관리 등의 기능을 구현할 때 어떻게 구현하는 지 예시를 들어보겠습니다. app.js const express = require('express'); const app = express(); // 로깅 미들웨어 app.use((req, res, next) => { ..

    [바미] 스트래티지 패턴(Strategy Pattern)

    스트래티지 패턴(Strategy Pattern)? 스트래티지 패턴은 알고리즘의 그룹을 정의하고, 각 알고리즘을 캡슐화하며, 이들을 상호 교체 가능하게 만듭니다. 이를 통해 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있습니다. Node.js에서 스트래티지 패턴은 로깅, 데이터 검증, 통신 프로토콜 등 다양한 방법에서 사용될 수 있습니다. 예제 그럼 스트래티지 패턴을 사용하여 여러 로깅 메커니즘(예: 콘솔, 파일, 원격 서버)을 지원하는 간단한 예제로 알아봅시다. LoggerStrategy.js class LoggerStrategy { static toConsole(message) { console.log(`Console: ${message}`); } static toFile(messa..

    [바미] On-premises와 Off-premises

    안녕하세요. 오늘은 온-프레미스와 오프-프레미스에 대해 알아보겠습니다. IT 인프라 및 서비스의 배치 및 관리 위치에 관한 용어이면서 데이터, 애플리케이션, 서비스 등을 호스팅하는 방법을 어떻게 선택할 것인가?를 의미합니다. Premises? Premises는 특정한 물리적 장소나 부지를 의미합니다. IT 관점에서 보았을 때 On-premises는 조직의 내부 네트워크 및 물리적 공간 내에서 인프라와 서비스가 관리되고 실행되는 것을 말하고, Off-premises는 외부에 위치한 인프라(대개 클라우드 서비스 제공자의 데이터 센터)에서 관리되고 실행되는 것을 의미합니다. 이제 이 두개에 대해 자세히 살펴보겠습니다. On-premises 조직이 자체 데이터 센터에 서버와 인프라를 두고 직접 관리하는 방식을 ..

    [바미] Nest - Websocket 구현

    안녕하세요. 오늘은 Nest에서 Websocket을 구현하려 할 때 어떻게 하는 지 포스팅해보겠습니다. 웹소켓은 Nest에서만 다루는 개념이 아니기 때문에 따로 웹소켓이 무엇인지 여기에서 다루진 않겠습니다. 웹소켓에 대해 궁금하시다면 아래 부분을 참고하고 보시면 됩니다. [바미] WebSocket과 Socket.io차이는 무엇일까? 들어가기전에.. Socket.io와 WebSocket 모두 실시간 양방향 통신을 가능하게 하는 기술인데요. 지금 다니는 회사에서는 Socket.io를 주로 사용하고 있어요. 처음 Socket.io를 공부할 때 WebSocket에 대해 먼저 codesk.tistory.com 구현 WebSocket 모듈 설치 WebSocket 통신을 쉽게 구현할 수 있도록 @nestjs/webs..

    [바미] Nest - 마이크로서비스(Microservices)

    마이크로서비스(Microservices)? 마이크로서비스는 애플리케이션을 작고, 독립적으로 배포 가능한 서비스로 나누는 아키텍처 스타일을 말하는데 이 모듈을 사용하여, 독립적으로 배포 가능한 작은 서비스들을 구축하고, 이 서비스들 간의 효율적인 통신을 관리할 수 있게 해줍니다. 대표적으로 TCP, Redis, MQTT, NATS, 드의 다양한 메시지 전달 매커니즘을 지원하여, 마이크로 서비스 간의 비동기 통신을 쉽게 구현 할 수 있게 해줍니다. 그래서 애플리케이션의 각 기능을 독립된 서비스로 분리하고 싶을 때, 서비스를 개별적으로 업데이트 하거나 확장하고 싶을 때, 서비스마다 가장 적합한 기술 스택을 사용하고 싶을 때 자주 사용합니다. 마이크로 서비스의 장점 시스템의 특정 부분만 확장할 수 있기 떄문에 ..