본문 바로가기

전체 글

(432)
헤어스타일 바꾸다 내 나이도 이제 어느덧 27이다. 언제나 내 나이 함수의 리턴은 상수 20이라고 외치던 것이 엊그젠데 지금은 수염 더덕더덕 난 완전 아저씨 feel이다. 새해가 밝아 오기전 한 살이라도 더 먹기 전에 하고 싶은 일 한가지를 하자고 마음 먹고 그 동안 생각해 왔던 호일 퍼머를 했다. 하고난 바로 뒤에는 그럭저럭 봐줄만 했는데...보름정도 지나고 나니 영락없는 폐인 개발자 모습이군.. 사진은 회사에서 같이 일하시는 분이 찍어줬다. (나이 값 못한다고 그러기도 하지만...그렇기에 한살이라도 더 먹기 전에 이 머리를 해야만 했다. 그래도 내가 여지껏 한 머리중에서 가장 나에게 잘 어울리는 헤어 스타일 같다)
CentOS 이리 저리 일 좀 할려고 하니 온 동네가 CentOS 업데이트 한다고 난리다. 이래저래 kernel 2.6이 필요 하고 그 중에 만만한 놈이 CentOS/Ubuntoo 정도 인가보다. 그런데 이 놈에게서 심각한 보안 취약점이 발견되었다고 하긴 하나 나야 뭔지 알수 없고. 그래도 CentOS라는 놈이 어떤 놈인지 궁금하여 Google한테 물어 보니 아래와 같은 답을 주는구먼.. Cent OS란 레드헷 계열 오픈소스 프로젝트 중 하나인 CentOS는 Redhat Enterprise Linux AS 기반의 리눅스 배포판입니다.CentOS는 RedHat 또는 Redhat Enterprise Linux 설치단계부터 운영하는 방법등이 거의 비슷합니다. 눈에 띠는 것은 페도라와 마찬가지로 업데이트용 프로그램인 yum..
코드 날려먹다 이런 염병에 우라질... 열라리 짜놓은 코드를 rm 커맨드 한방에 날려 버리다니.. 뭐..어차피 세그폴트 뜨면서 죽는 찌질한 놈이었기에 그렇게 아깝지는 않다만..그래도..lock하나만 걸어 주면 되는 거였단 말이다(만고 내 생각이긴 하지만)... 이것을 기회 삼아 디자인 부터 다시 해보도록 하자 (일단 오늘은 자고...)
Singleton in Multi Thread 들어가며 이번 포스트는 멀티 스레드 환경에서 싱글톤을 사용할 때 흔히 할 수 있는 실수 한가지에 대해서 살펴 보고자한다. 설명을 위해 한가지 상황을 만들어보자. 우리는 지금 부터 싱글톤 이벤트 큐를 만들어야 한다고 가정. 각종 read/write 작업들을 '싱글톤' 이벤트 큐에 집어 넣고, 몇 개의 '스레드'들이 큐를 감시하다, 큐에 새로운 이벤트가 들어 오면 이벤트에 따라 적적한 작업을 해주는 방식인 전형적인 producer/consumer 방식이다. 이 상황에서 중요한것은 '싱글톤'과 몇개의 '스레드'들이다. 그리고 스레드를 만들게 되면 의례 그렇듯이 아래와 같이 레이스 컨디션이 발생하게 된다. 시간 ThreadA ThreadB 1 if(queue.empty()) -> not empty 2 if(qu..
TIME_WAIT state vs SO_REUSEADDR option 아래와 같은 non-blocking socket 서버를 간단하게 나마 제작(말이 non-blocking이지 어차피 read에서 block되기 때문에 non-blocking이라고 하기에 상당히 민망함) #include #include #include #include #include #include #include int main(int argc, char** argv) { if(argc != 2) { std::cout
Edge trigger vs Level trigger 문제 : read가 가능한지를 알아 보기위해 select를 호출 하고 wait time을 NULL로 주어 무한히 대기 하게 했다. 하지만 어찌 된 일인지 아무런 입력이 없을때는 가만히 있다가 한번 입력을 하고 나면 입력 read가 가능 하다는 메시지가 미친듯이 나오기 시작했다. 코드를 잠시 살펴 보자면 아래와 같다. fd_set rset; FD_ZERO(&rset); // 0 은 stdin을 나타낸다. FD_SET(0, &rset); while(1) { fd_set tmp_rset = rset; int state = select(1024, &tmp_rset, &tmp_wset, NULL, NULL); if(state > 0) { for(int fd=0; fd
나는 금성에서 온 사람?? 금성에서 온 사람 당신은 아름다움을 사랑하는 사람으로, 말끔하게 차려입고 고급스런 장신구를 걸치는 것을 좋아합니다. 사교성이 뛰어난 당신은 언제나 환영받는 인기인입니다. 누구에게나 따뜻한 당신의 마음씨는 이미 정평이 나있으며 모두가 당신을 친구로 여깁니다. 하지만 조심하세요! 다른 사람을 행복하게 해주려는 욕구가 지나쳐 판단력이 흐려질 수 있습니다. 스스로에게 충실하세요. 그리고 무엇이 당신에게 중요한 것인지 곰곰이 따져보세요. 그러면 더욱 사랑받는 사람이 될 것입니다. 너 어느 별에서 왔니? /** 아무리 생각해 봐도.. 난 결코 몸에 무엇인가를 걸치는 것을 좋아하지 않는다.. 솔찍히 옷도 두껍게 입는 것을 싫어한다.(그렇다고 노출증 환자는 아니다..-_-) */
[C++] const 와 mutable 키워드 이번 포스트는 변수를 상수화 시켜 코드에서 변수의 값을 변경하려고 할 경우 컴파일 타임에 에러를 발생 시키는 const 키워드와 const를 무효화 시킬 수 있는 mutable 키워드에 대해 살펴 보도록 하겠다. C++에서는 절대 변경 되어서는 안되는 변수(변수라는 것 자체가 변경을 할 수 있다는 의미인데 그것을 변경하지 못하게 막겠다는게 개념적으로 아이러니 하긴하지만)에 const라는 한정자를 더해, 변수를 변경하려고 시도 할 경우 컴파일 타임에 감지하여 에러를 발생 시킨다. const 이전에는 #define 전처리 명령어를 이용했지만 전처리 명령어를 이용하는 것은 스코프를 한정 할 수도 없고, 타입에 대한 제약도 없어 여러 모로 실수를 만들 요소를 가지고 있다. 하여 const 키워드 이후 부터는 상..

반응형