윈도우 소켓 깔끔하게 작성해보기
·
C++/네트워크
#pragma comment(lib,"ws2_32.lib")#include #include #include class WSAInitializer {public: WSAInitializer() { int result = WSAStartup(MAKEWORD(2, 2), &wsaData_); if (result != 0) { throw std::runtime_error("WSAStartup failed"); } } ~WSAInitializer() { WSACleanup(); } WSADATA& GetWSAData() { return wsaData_; }private: WSADATA wsaDa..
Modern C++ Thread 간결하게 사용하기
·
C++/기초
#include #include #include #include #include #include using namespace std::chrono_literals;void ThreadFunction(int threadNumber, std::latch& latch) { for (int i{ 0 }; i threads; for (int i{ 0 }; i  std::jthread를 사용합니다. 이는 C++20에서 도입된 새로운 스레드 클래스로, 자동으로 join을 수행하며 취소 요청을 지원합니다.std::latch를 사용하여 모든 스레드의 완료를 동기화합니다. 이는 C++20에서 도입된 새로운 동기화 프리미티브입니다.std::format을 사용하여 문자열 포매팅을 수행합니다. 이는 C++20의 새..
c++20 간결하게 코드쓰기(1)
·
C++/기초
struct OddAndEvens { std::vector odds, evens; };OddAndEvens separateOddsAndEvens(const std::vector& arr) { std::vector odds, evens; for (int i : arr) { i % 2 == 1 ? odds.emplace_back(i) : evens.emplace_back(i); } return OddAndEvens{ .odds = odds,.evens = evens };}int main(){ std::vector vecUnSplit{ 1,2,3,4,5,6,7,8,9,10 }; auto oddAndEvens{ separateOddsAndEvens(vecUnSplit) }; auto [odds, eve..
다시써보는 에코서버2 window 버전
·
C++/네트워크
이전버전에서 쓰레드를 추가했다. #include #include #include #include #include #include #pragma comment(lib, "ws2_32.lib")auto EchoHandler(SOCKET clientSocket)->void{ int receiveSize; std::array receivedBuffer; while ((receiveSize = ::recv(clientSocket, receivedBuffer.data(), receivedBuffer.size(), 0)) > 0) { ::send(clientSocket, receivedBuffer.data(), receiveSize, 0); std::cout.write(rec..
다시써보는 에코클라이언트 Linux 버전
·
C++/네트워크
#include #include #include #include #include #include #include #include // linux versionint main(){ int sock = 0; sockaddr_in server_addr = { .sin_family = AF_INET, .sin_port = htons(8888), }; std::array buffer{}; std::string message = "Hello, Server!"; // 소켓 생성 if ((sock = socket(AF_INET, SOCK_STREAM, 0)) (&nOpt), sizeof(nOpt)); // 서버 IP 주소 ..
다시 써보는 에코서버 window 버전
·
C++/네트워크
#include #include #include #include #pragma comment(lib, "ws2_32.lib")int main() { WSADATA wsaData; if (::WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { std::cerr (&serverAddress), sizeof(serverAddress)) == SOCKET_ERROR) { std::cerr (&clientAddress), &clientAddressSize)) != INVALID_SOCKET) { std::cout receivedBuffer; while ((receiveSize = ::recv(clientSocket, rec..
비전공자를 개발자로 만들면서...(2부)
·
글쓰기
1부에서는 내 친동생을 개발자로 만들었다면2부에서는 내 여자친구(예비신부)를 개발자로 만들었다. 우선 나와 내 여자친구의 관계에 대해서 말해보면 5년간 연애를 진행 중인 커플이고 현재 둘 다 개발자로 일을 하고 있다. 우리는 대학교 때부터 만나 지금까지 진행 중이다. 내가 대학생 때 여자친구도 대학생이었고 내가 취준생일 때 여자친구도 취준생 그리고 직장인일 때도 둘 다 직장인이어서 다행이도(?) 항상 동일한 신분에서 만날 수 있었다. 그러면 이제 여자친구를 어떻게 개발자로 만들었는지 알려주려고 한다. 여자친구는 서울에 중위권 대학교에서 화학공학과를 전공했다. 무려 화공기사를 가지고 있는 뇌섹녀다. 여자친구의 꿈은 공기업에 입사하는 것이어서 졸업을 하고 본격적으로 공기업을 준비했었다. 그러나 NCS의 벽은..
비전공자를 개발자로 만들면서...(1부)
·
글쓰기
옛날부터 글을 작성하고 싶은 마음은 있었지만 시간적인 이유로 또는 내 게으름 (이게 가장 크다) 때문에 글 쓰는 것을 미뤄왔다. 매번 블로그에 글을 작성하자고 다짐을 해도 그럴 때마다 미뤄져 왔던 것 같다. 그런데 그런 나에게도 이제 시간이 많아졌다. 왜냐하면 퇴사를 했기 때문이다. 하하하하 그래서 남는 시간 동안 밀린 블로그를 작성해보려고 한다. 이 블로그는 항해를 하면서 기록용으로 만든것이지만 이제는 내 이야기들을 써보려고 한다. 제목처럼 나는 비전공자를 개발자로 만들었다. 무려 2명이나 ㅋㅋㅋㅋ 표현이 다소 과장된듯 하지만 나도 2년 차 밖에 되지 않은 주니어 개발자이다. 그러나 이것은 꽤 큰 성취라고 생각한다. 개발자 취업 시장이 어려운 상황에서 비전공자들을 취업을 시켰으니 말이다. 그래서 이 블..