Server 188

Discord Bot 무료배포

간단하게 슬래시커맨드를 사용할 수 있는 디스코드 봇을 만들었다.https://github.com/Juzdalua/JuniWorld_bot GitHub - Juzdalua/JuniWorld_bot: Create discord bot with my friendsCreate discord bot with my friends. Contribute to Juzdalua/JuniWorld_bot development by creating an account on GitHub.github.com Vercel은 서버리스로 NestJS를 배포할 수 있다.응답이 없으면 서버가 죽는게 서버리스인데, 디스코드 봇은 client.login처럼 소켓 방식으로 봇이 길드 채널에 입장하고 수신을 대기한다. 서버리스에서는 봇이 입장 ..

Server/Infta 2025.06.16

싱글스레드에서 비동기 함수의 이해

node.js, NestJS를 처음 시작하고 await을 사용한 비동기는 펜딩 결과를 기다려주는 것이라고 이해했다.await을 사용하지 않고 결과값을 출력해보면 Pending만 남았었기 때문이다.async/await 비동기 함수는 pending이 아닌 결과값을 기다리기 위한 수단이라고 이해하고 있었다. C++을 1년 넘게 사용하면서, 멀티스레드 환경에서 비동기 방식을 다룰 때 혼동이 있었다.TCP 통신에 대한 간단한 로직을 살펴보자. 스레드를 1개만 사용할 경우,메인스레드 A는 데이터를 수신하기 위해 recv함수에 진입하고 결과값을 기다린다.이 상태는 시스템이 멈춘 블락킹 상태이다.recv함수에서 결과값을 받은 A 스레드는 다음 로직을 수행한다. 스레드를 2개 사용할 경우,메인스레드 A는 데이터를 수신하..

MySQL) Window 로컬 환경에서 Master-Slave 테스트

권한사용자Master쓰기/읽기기본 사용자복제용 사용자Slave읽기기본 사용자 Master는 3306 포트로 실행한다.Slave는 3307 포트로 실행한다. Master에서 쓰기(insert)가 발생하면, 바이너리 로그를 저장한다.Master의 로그를 Slave의 DB에 복제한다.1. 마스터 DB 설치MySQL이 기본적으로 설치되어있다고 가정한다.이미 설치된 MySQL은 Master가 될 것이다. 2. 슬레이브 DB 설치윈도우 환경에서 인스톨러를 다시 실행하면 추가로 설치되지 않는다.Archive에서 .zip파일을 다운 받아 특정 경로에 압축을 해제한다.윈도우 권한 문제로, 마스터가 설치된 곳 이외에 폴더를 위치시킨다. 3. 환경설정 파일 생성 또는 수정# 슬레이브의 my.ini[mysqld]port=33..

Server/DB 2025.06.12

Java) VSCode로 자바 시작하기

1. 개요Java언어 Spring Framework프레임워크 Spring BootSpring Framework를 편하게 사용할 수 있게 만든 도구https://start.spring.io/Maven외부 라이브러리 관리 도구설정파일: pom.xmlSpring Boot 프로젝트를 만들면 Maven은 자동으로 포함된다. 2. 준비물JDK 설치java를 실행할 수 있는 환경https://adoptium.netJava Extension Pack Spring Boot 프로젝트 https://start.spring.io/ https://code.visualstudio.com/docs/java/java-tutorial Getting Started with Java in VS CodeJava tutorial showi..

Server/Java 2025.05.20

DB) LIMIT 1 & index

sql에서 limit1을 사용함에 있어 오해가 있었다.데이터를 select할 때 limit1을 작성하면, 전체 데이터를 긁어온 후 1개를 반환하는 것으로 알고있었다.실제 1억개가 넘는 데이터에서 경험했기 때문이다. 그런데 아래 영상을 보던 중, 쿼리 성능에 대한 이야기를 해주시는데 limit1을 사용해보라는 이야기가 있었다.그래서 당연히 내가 잘못된 경험을 했고 잘못 알고있을 거라 확신한 후 다시 찾아보게 되었다. 결론은 조건절에 들어가는 컬럼이 인덱싱이 잡혀있다면 limit 만큼 조회하고 쿼리는 종료된다.내 과거 경험에서는 인덱스를 설정하지 않았기 때문에 모두 검색 후, limiit에 해당하는 결과를 출력하느라 속도가 느렸던 것이다. 인덱스 설정 O인덱스 설정 X만족하는 조건 검색 하자마자 종료전체 스..

Server/DB 2025.04.23

C++ 환경변수 .env 파일 사용하기

C++에서 .env 파일을 사용하는데, getenv 함수가 deprecated 되었다.직접 환경변수를 저장하지 않고 메모리상 map에 key-value 값으로 사용하게끔 만들었다.간단하다. 파일을 읽어오고 "="라는 delimiter를 기준으로 key-value로 map에 저장하고 메모리에 갖고있게끔 했다.프로젝트 root 폴더에 .env 파일을 위치시킨다. // Utils.h#pragma once#include #include #include class Utils{public: Utils() = delete;public: static void Init(const std::string& filePath = "../.env"); static std::string getEnv(const std::string..

Server/C++ 2025.01.03

JSON 사용하기 - nlohmann json

1. 헤더파일 다운로드json.hpp 파일을 다운로드한다.https://github.com/nlohmann/json/releases  Releases · nlohmann/jsonJSON for Modern C++. Contribute to nlohmann/json development by creating an account on GitHub.github.com 2. VS 세팅편의성을위해 다운로드 받은 헤더파일을 위치를 옮겼다.   프로젝트 속성 - C/C++ - 일반 - 추가 포함 디렉터리 3. 예제#include using json = nlohmann::json;void TestJSON(){ json j = { {"name", "John"}, {"age", 30}, {"city", "New Yo..

Server/C++ 2024.11.20