본문 바로가기

전체보기272

6.10 방향성에 대해서 로재의 개발 일기 Next..? TCP/IP에 대해서 공부를 진행하면서 스스로 부족한 점이 많다고 느낀다.학교에서 C에 대해서 깊게 공부한 수업도 없었고 그러한 과정도 없었기 때문에file control에 관한 fcntl 함수에 관한 이해가 부족했고...파일 디스크립터에 대한 내용도 꽤나 부족했었다. (다른 부분도 마찬가지) 생각해보면 학교에서 java 위주로 수업을 진행했기 때문에 어쩔 수는 없지만.. (핑계) 그러다..겨울방학때 C 수업을 들었고 포인터에 대한 이해도가 전보다 상당히 나아졌고생각해보면 C++ 공부를 하길 정말 잘 했던 것 같다.이후에는 무엇을 공부하면 좋을까? 코딩 테스트 최근 기업에서 코딩 테스트 (줄여서 코테)를 실시하는 곳이 많아졌다.BTS DP DFS GRDDY 부분은 꾸준하게.. 2019. 6. 10.
[TCP/IP] [epoll] epoll을 사용한 소켓 프로그래밍 예제 로재의 개발 일기 epoll (사건 기반 파일 처리) epoll을 사용하여 server가 모든 클라이언트의 입력을 일일이 반복문을 순회하면서 검사하지 않고사건이 발생한 파일 디스크립터만 검사하도록 하였습니다. epoll이란? -> https://redcoder.tistory.com/123 클라이언트는 select와 fd_set 함수들을 사용하였고이에 대한 정보를 가까운 시일 내에 정리해서 올리겠습니다. Server.c1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586.. 2019. 6. 10.
epoll 함수와 구조체에 대해서 알아보자 로재의 개발 일기 epoll? select나 poll과 비슷하게 관심 있는 파일 디스크립터를 모두 등록하고 이벤트 발생을 감지하는 것에는 차이는 없지만epoll은 사건이 발생한 fd들만의 구조체 배열을 셋팅하여 관리한다.=> 상태 변화에 대해서 일일이 확인이 필요한 전체 파일 디스크립터를 대상으로 반복문을 돌려 일일이 확인할 필요가 없다123456789101112typedef union epoll_data{ void *ptr; int fd; // 이벤트가 일어나게 될 파일 디스크립터 _unit32_t u32; _unit64_t u64;} epoll_data_t; struct epoll_event{ __unit32_t events; // 관찰한 이벤트 epoll_data_t data;}Colored by .. 2019. 6. 8.
[QT] QT 5.10 리눅스에서 설치하기! 로재의 개발 일기 QT 리눅스 다운 QT를 다운하기 위해서 사이트로 직접 들어갑니다.(저는 5.10을 다운 받았습니다) http://download.qt.io/archive/qt/ 미리 빌드 된 파일을 설치를 하면 빠르지만개개인의 필요에 따라서 설치하도록 합니다. 설치 과정 C/C++ 관련 컴파일러 헤더 파일 등이 포함되어 있는build-essential을 설치합니다. (makefile도 포함) 1sudo apt-get install build-essentialcs 이후 다운로드 된 폴더로 들어가서1sudo chmod +x qt-opensource-linux-x64-5.10.0.runcs chmod로 권한을 변경 시킵니다. 1./qt-opensource-linux-x64-5.10.0.runcs실행을 시킵.. 2019. 6. 7.
[선악을 넘어서] 괴물이 된다는 것 로재의 개발 일기 괴물과 싸우기 위해서 괴물이 된다는 것 초등학교 시절, 어릴 적 이야기이다. 생각해보면 난 바보 같으면서 세상 아름다운 것들에 관심이 많았다. 등교하는 시간, 길거리에 피어 있는 민들레 꽃들을 쭈그려 앉아 멍하니 보기도 하고 당시 초등학교 주위에서 병아리를 팔고 계신 아주머니 앞에서 병아리들을 멍하니 바라보며 쓰다듬었던 기억이 있다. 물론 그렇다고 정상적으로 공부나 인간관계가 비 정상적인 아이는 아니었고. 말 주변이 좋지는 않지만, 다가가기 어렵지는 않았던 평범한 아이였던 것 같다. 그랬던 나에게도 소중한 친구들이 더러 있었던 것 같다. 지금 생각해보면 참 좋은 친구들이였다. 그중에서는 괴물들에 못 이겨, 자신이 괴물이 되어버린 친구들도 있었지만 괴물들을 이기기 위해서 괴물이 되었지만 .. 2019. 6. 7.
Blocking, Unblocking 봉쇄/비봉쇄 통신 로재의 개발 일기 Blocking I/O를 직접 user level에서 작업이 불가능하다.이를 커널 장치에서 설정을 할 수 있으며일반적인 프로그래밍에서 별도의 작업이 없다면 봉쇄 통신을 사용하여 통신을 한다. 일반적으로 생각하는 server의 역할에서 client의 수신을 기다리는 동안 다른 작업을 하지 못하는 행위를 예시로 들 수 있다.생각해보면 자원 낭비가 일어나는 것이다. Unblocking 비봉쇄 통신을 사용하여 통신을 한다.read()를 예시로 들면, 프로세스가 입력을 기다리는 동안 다른 작업을 할 수 있도록 처리를 한다.이때 입력이 없는 상태에서 특별한 오류가 없다면 정상적인 return 처리를 해주고특정 오류가 발생 시, err 처리를 해준다. 이를 소켓에 적용하기 위해서 fcntl() 함수.. 2019. 6. 6.