24.04.21 백준, 기획 백준 1107 리모컨 #include using namespace std; int n,btn_num, ans; bool crash[11]; string temp = ""; bool check(int n) { string str_n = to_string(n); for (int i = 0; i > n >> btn_num; int ch = 100; for (int i = 0; i < btn_num; ++i) { i.. Study/TIL(Today I Learned) 2024.04.23
24.04.19 C++ C++ C++ 입출력 성능 향상 ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); c++에서 ios::sync_with_stdio, cin.tie, cout.tie를 사용하는 주된 이유는 입출력 성능을 향상시키기 위해서 이다. ios::sync_with_stdio(false); 이 함수는 c++ 표준 입출력 스트림(cin, cout)과 c 표준 입출력 버퍼(stdin, stdout)의 동기화를 해제한다. 기본적으로 c++ 표준 입출력은 c의 표준 입출력과 동기화되어 있어서 입출력 작업 시 버퍼를 공유하고 동기화하는 과정에서 오버헤드가 발생한다. ios::sync_with_stdio(false);를 호출하면 c++과 c의 입출력 버퍼가 분리되어 동기.. Study/TIL(Today I Learned) 2024.04.20
24.04.10 서버 프로그래밍 게임 서버 프로그래밍 교과서 5장. 게임 네트워킹 5.1 UML 프로그램 구조 명세를 표현하는 대표적 수단이다. UML 시퀀스 다이어그램 UML 시퀀스 다이어그램에서는 객체와 메시지를 사용한다. 객체는 상호 작용의 주체(예 : 클라이언트, 서버)에 해당한다. 메시지는 상호작용의 내용(예 : 메시지 전달, 함수 실행, 이벤트 수신)으로 화살표이다. 화살표 방향을 보고 보내는 쪽과 받는 쪽을 구분할 수 있다. 시퀀스도의 주요용도는 객체 간 메시징 흐름을 일목요연하게 표현하는 것이다. 시퀀스도는 객체 사이에 메시지를 주고 받는 것을 한눈에 알아보기 쉽게 표현할 수 있다. 시퀀스도는 주고 받는 메시지를 어떻게 처리하는지 자세하게 표현하는 데는 한계가 있는데, 플로 차트를 함께 사용하면, 보다 자세하게 프로그램의.. Study/TIL(Today I Learned) 2024.04.10
24.04.08 서버 프로그래밍, 백준 게임 서버 프로그래밍 교과서 3장 소켓 프로그래밍 온라인 게임 프로그래밍에서 소켓은 파일 핸들 방식과는 약간 다르다. 게임 서버에서는 다루어야 하는 소켓 개수가 많다. TCP를 이용해서 통신하는 경우 클라이언트 개수만큼 소켓이 있어야 한다. 파일 핸들을 하는 동안 스레드가 대기하는 일이 없어야 한다. 디스크를 읽거나 쓸 때 사용하는 read(), write() 함수는 호출 후 실행이 완료될 때 까지 리턴하지 않는다. 소켓을 이용해서 읽기/쓰기를 하는 함수를 호출 했는데 즉시, 리턴하지 않는다면 이들을 호출한 메인 스레드는 사용자 입장에서 일시정지 하는 것 처럼 보인다. 이러한 이유 때문에 네트워크 프로그래밍에서 소켓은 보통 비동기 입출력(Asynchronous I/O) 상태로 다룬다. 소켓을 비동기 입출.. Study/TIL(Today I Learned) 2024.04.09
채용 설명회 : 크래프톤 크래프톤, PUBG 게임 회사 가면 뭐하나요? - 크래프톤에서 엔지니어로 일하기 어떤 일을 하는가 In-Game ↔ Out-Game 으로 나누어져있다. 엔지니어란? 세상의 문제를 푸는 사람들이다. 주어진 조건안에서 주어진 목적을 달성하기 위한 엔지니어이다. 개발 문화 코드리뷰 페어 프로그래밍 세미나 스터디 1 - on - 1 post mortem 어떤 사람을 원하는가? CS기초 문제 해결 능력 (의지) - 문제 푸는것을 좋아하는가 커뮤니케이션 QnA 시간과 타협해야 할 때 어떻게 하는지? 팀원한테 강조하는 부분이 가성비에 대해서 강조한다. 이 업무를 진행할 때 어떤 문제이냐, 얼마나 급하냐가 중요하다. PintOS가 도움이 되나요 도움이 된다. 문제를 직면했을 때 두려워하지 않는 법을 배울 수 있다. 일.. KraftonJungle/채용 설명회 2024.04.04
11Week 24.03.28 - 24.04.03 부제 : 야호!! 회고 야호!! 야호를 몇 번째 쓰는 줄 모르겠다. 하지만 진짜 정말로 즐겁다. 왜냐!! 왜냐하!!!!!!!! 왜냐하면!!!!!!!!!!!!!!!!!!! 잘 끝마쳤으니까 project 1,2,3 중 가장 힘들었지만, 가장 성취감있고, 가장 재미있었다. vm에 대해서 이론적으로 알고 있던 부분을 구현을 하면서 다양한 트러블 슈팅을 겪을 수 있었고, 개인적으로 많이 성장하는 시간을 가질 수 있었다. 핀토스 주차가 드디어 끝났다. 하지만 아직은 내가 했던 것들이 완전하게 내 것이 되었냐 하면 그것은 아니다. 내것으로 만드는 시간과 새로운 공부를 하는 시간의 비율을 잘 지켜 더욱 더 성장할 수 있게 해야겠다. 하루하루 강해지는 나.. 사이어인 아닐까? 더 더 더더더더더 강해지고 싶다. 할 수 이따!! KPT 회고.. Study/WIL(Weekly I Learned) 2024.04.04
24.04.03 PintOS 야호!!!!!! 성공적으로 project3를 끝마친 것 같다. 생각보다 너무 잘했고, 힘들었지만 그만큼의 성취감도 있었다. 야호~ PintOS bool file_backed_initializer(struct page *page, enum vm_type type, void *kva) { /* Set up the handler */ page->operations = &file_ops; struct file_page *file_page = &page->file; file_page->aux = page->uninit.aux; return true; } swap in을 위해서 page->uninit.aux를 file\_page->aux에 받아왔다. static bool file_backed_swap_out(str.. Study/TIL(Today I Learned) 2024.04.03
24.04.01 운영체제, PintOS, 백준 아니 벌써 4월임..ㄷㄷ 이거 신기한거시와요 하와와 어느새 4월이 왔슴니다.. 어느새 2분기가 시작했다구욧!! 시ㅣㄴ나기한거시에요… 운영체제 34. 분산시스템 웹브라우저가 지구상 어딘가에 있는 웹 서버에 접속하면 클라이언트/서버 분산 시스템이라는 구조에 한 구성원이 된다. 분산 시스템의 핵심 사안은 실패와 고장의 극복이다. 개별 구성요소들은 자주 고장나지만 기계들은 고장없는 시스템처럼 보이도록 만들 수가 있다. 또 다른 중요한 문제가 있다. 시스템 성넝은 매우 중요한 요소이다. 분산된 시스템들을 연결하는 네트워크에서는 시스템 설계자들은 주어진 목적을 달성하는데 많은 신경을 써야한다. 마지막으로 보안 역시 매우 중요한 요소이다. 원격 사이트를 접속할 때, 접속한 사이트가 진짜 원했던 사이트인지를 확신할 수.. Study/TIL(Today I Learned) 2024.04.02
24.03.31 운영체제, PintOS 운영체제 33. 데이터 무결성과 보호 33.1 디스크 오류 모델 디스크는 완전하지 않으며 오류가 발생할 수 있다. 현대의 디스크들은 정상적으로 동작하는 것처럼 보이지만 블럭들을 읽는데 실패하는 경우가 있다. 우리가 살펴볼 만한 것은 두 가지 종류의 단일 - 블럭 오류가 있다. 각각은 숨어있는 섹터 에러(Latent Sector error, LSE)와 블럭손상(block corruption)이다. LSE는 디스크 섹터가 어떤 이유로든 손상되었을 때 발생한다. 예를들어, 디스크 헤드가 표면에 어떤 이유로 닿았다면(head crash, 일반적인 상황에서는 일어나면 안된다) 표면을 망가뜨릴것이고 비트들을 읽을 수 없게 만든다. 강한 방사선도 역시 비트를 반전시켜서 내용을 부정확하게 만들 수 있다. 다행스러운 것.. Study/TIL(Today I Learned) 2024.03.31
24.03.30 운영체제, PintOS 운영체제 32. 크래시 일관성 : FSCK와 저널링 여타 자료구조와는 다르게 파일 시스템의 자료구조는 안전하게 저장되어야 한다. 파일 시스템이 가진 가장 큰 어려움은 전력 손실이나 시스템 크래시가 발생하는 상황에서도, 어떻게 안전하게 디스크 상의 내용을 갱신하는 가에 대한 문제이다. 전력손실이나 크래시 때문에 디스크 상의 자료구조를 안전하게 갱신하는 것은 상당히 까다로운 작업이 된다. 파일 시스템은 크래시 일관성(crash - consistency)라는 새롭고 흥미로운 문제에 직면한다. 어떤 특정 작업을 위해 자료구조 A와 B를 갱신해야 한다고 했을 때 디스크는 한 번에 하나의 요청만 처리할 수 있기 때문에 두 요청 중 하나의 요청이 먼저 디스크에 도달할 것이다. 하나의 쓰기 작업만 완료한 상태에서 시스.. Study/TIL(Today I Learned) 2024.03.31