본문 바로가기

반응형

진리는어디에

(291)
구조체 비트 단위 멤버 우리가 프로그램을 작성하다 보면 꼭 1byte, 2byte 같은 바이트 단위 크기의 자료를 저장 할 필요가 없을 경우가 있다. 예를 들자면 남/녀 성별을 구분하고자 할때 이것은 딱 1bit만이 필요 할 뿐이다. 하지만 가장 작은 자료형인 char 조차도 8bit를 차지한다. 여기서 그에 대한 대안을 제시한다. 다음과 같이 구조체를 생성하게 되면 각 멤버는 콜론 뒤에 적인 수 만큼의 비트단위로 자료를 저장 할 수 있게 된다. ※ 일반 변수에는 적용이 되지 않으니 일반 변수 잡고 삽질하는 짓은 하지 말자. struct STRUCTURE { int member1: 1; // 1 bit int member2: 2; // 2 bit int member3: 4; // 4 bit }; 위와 같이 멤버 변수 뒤에 콜론..
XPath - attribute 값으로 특정 엘리먼트 찾기 동일한 엘리먼트 사이에서 특정 속성 값을 가진 엘리먼트만 찾고자 한다면 어떻게 해야 할까? 이래 저래 자료를 찾아 보다 귀찮아진 나는 자칭 xml 고수라 하는 Rhea君 에게 물어 보았다. 기대와는 달리 Rhea君의 대답은 절대 못한다 였다. (사실..절대 라고까지는 하지 않았고...특정 케이스를 한정 지어 줬지만...어떻게든 깎아 내리고 싶은 내 맘을 알아 줬으면 좋겠다). 하.지.만 MSDN 문서(http://msdn.microsoft.com/en-us/library/ms256135.aspx)에는 분명히 attribute의 값을 이용해 특정 엘리먼트를 찾아 내는 방법이 있었다. 예를 들어 : 와 같은 xml 문서가 있다고 하자. 위의 element들 중에서 attr이 name1 인 경우만 찾고자 한다..
블로킹 소켓에서의 send 동작 얼마전에 간단한 서버/클라이언트 프로그램을 만든적이 있다. 어떤 놈이 나에게 못 미더운 듯이 묻기를 왜 recv를 처리하는 곳에는 while을 이용해서 read operation에 대한 오류 처리를 해주는데 send에 대해서는 아무런 처리를 하지 않냐고 했다. 블록킹 소켓일 경우 send 함수는 지정된 바이트를 모두 전송하기 전까진 리턴을 하지 않기 때문에 괜찮다라는 이야기를 친절(?)하게 해주었지만 이 샹콤한 놈의 자식이 아니라고 바득 바득 우기는데야...결국에 실험으로 보여주기는 너무 귀찮아져 man page를 찾아 보여주는 수고까지 해야 했다. When the message does not fit into the send buffer of the socket, send normally blocks,..
[C++] C++ 스타일 타입 캐스팅 들어가며 C 스타일의 타입 캐스팅은 자유도가 높은 대신 서로 캐스팅될 수 없는 타입임에도 불구하고 암시적으로 캐스팅 해버리고, 그 결과 정의 되지 않은 오류가 발생하게 되고 그 책임을 사용자에게 떠넘겨(?) 버린다. 이런 오류를 미연에 방지하고자 C++에는 새로운 스타일의 타입 캐스팅이 도입 되었고 의도된 대로 사용되지 않는 타입 캐스팅에 대해 컴파일 타임 오류 발생 시키도록 하였다. 이번 포스트에서는 새로이 추가된 C++ 스타일 캐스팅에 대해 살펴 보도록 하겠다. C++ 스타일 타입 캐스팅 : static_cast const_cast reinterpret_cast dynamic_cast static_cast static_cast는 상속 트리 내에서의 포인터형 번환만이 가능한 캐스팅 방법이다. 즉, 상속..
DrawPrimitive와 DrawPrimitiveUP의 차이 Which should I use - the DrawPrimitive family of functions, or the DrawPrimitiveUP family? Both construct primitives for the pipeline. However, the big difference is in their source data - DrawPrimitive takes it from the current streams (vertex buffers), which DrawPrimitiveUP takes it from a pointer you pass in (your own array). 둘다 얼주 비슷해 보이기는 한다. 하지만 두 함수계열의 함수가 그리는 것에 있어서는 상당한 차이점을 보인다. 바로 소스 ..
[PHP]Fatal error: Maximum execution time of 30 seconds Fatal error: Maximum execution time of 30 seconds exceeded in *.php on line n /** php를 이용해 로그 파일을 분석하는 프로그램을 작성 중 이다. 처음에는 php의 간단하면서도 강력한 문자 처리 능력에 반했으나, 곧 거대한 작업(지금 처리하고 있는것은 9백만건 정도 된다)에 있어서는 상당히 불리 한 언어라는 것을 알게 되었다. 하지만 어쩌겠는가 부탁하는 사람이 유지 보수를 위해서 php로 해달라는데. */ 이 에러는 소스 상에 무한 루프를 돈다던지 실제로 결과가 나오기 까지 max_execution_time을 초과 할 경우 던져진다. 첫번째 해결 방법은, php.ini 파일을 열어 max_execution_time을 수정하고 restart한..
Reference list 일반적으로 스켈레톤이 reference count 대신 자신을 가리키는 프록시의 reference list를 유지한다. Reference list는 다음과 같은 특징들을 가진다 : Reference list가 이미 프록시에 대한 정보를 가지고 있다면 프록시 정보 추가 요청에 대해 아무런 오퍼레이션도 하지 않는다. Reference list에 프록시에 대한 정보가 없다면 프록시 정보 삭제 요청에 대해 아무런 오퍼레이션도 하지 않는다. 위와 같은 특성을 idempotent하다고 하며, 한글로는 '멱등'의 뜻을 가지고 있다. Reference list의 경우에는 신뢰성이 없는 분산시스템에서 사용하기 적합하며 이유는 아래에서 살펴보도록 하자. Create 프로세스 p가 객체 o에 대한 remote referen..
Generation reference counting GRC(Generation reference counting)에 대해서 설명하기 전에 분산 시스템에서의 객체는 레퍼런스를 통해 접근되며, 객체쪽에는 객체를 대신하는 스켈레톤이, 레퍼런스 쪽에는 프록시가 있으며, 이 둘은 항상(proxy, skeleton) 짝을 이룬다는 것을 기억해 보자. GRC에서 프록시는 그 자신이 몇 번이나 복사 되었는지에 대한 카피 카운터(이하 count)와 몇 번째 세대인지(몇 번째로 복사 된 레퍼런스 인지)를 나타내는 generation number(이하 generation)을 가지고 있다. 스켈레톤은 추후 generation과 count에 대한 정보를 유지할 테이블 G를 가지고 있다. 1. Initialze 객체 o가 프로세스 P에 생성 되면, o의 레퍼런스 p는 : p.ge..
CSS 로딩하는 세 가지 방법 아무 생각 없이 작성한 포스트였는데 알고보니 100번째로 작성한 포스트군요. 작성 도중에 지워 버린 포스트도 있고, 시작만 하고 완성하지 못해 공개 해놓지 못한 포스트들도 있어서 컨텐츠의 개수는 100개가 안되지만 어쨌거나 100번째로 작성하고 있는 포스트라니..감회가 새롭습니다. 예전에 네이버 블로그를 사용 할 때는 거의 모든 포스트들이 다른 블로그의 내용들을 가지고 온 것들이었는데, 이 블로그의 포스트들은 모두 제 손을 거쳐 탄생된 것들이어서 더욱 애착이 가네요^^; 가장 먼저 해야 할 일은 CSS를 작성하는 것이지만 작성에 결과를 바로 바로 보면서 진행 해 나갈 수 있도록 하기위해 CSS를 로딩하는 방법에 대해 먼저 알아 보도록 하겠습니다. 만일 이 포스트를 읽고 계시는 분 중에 CSS작성에 대해서..
[CSS] Selectors CSS는 단순한 HTML태그에 여러가지 스타일 속성을 부여해서 보다 아름다운(?) 웹 페이지를 만들 수 있도록 도와줍니다. 하지만 모든 태그에 동일한 스타일 속성을 지정한다면 정말 무미건조 해지겠지요. 그래서 특정 태그만을 지정 하여 속성을 적용 할 수 있도록 범위를 한정 지을 수 있습니다. 그 때 사용되는 것이 바로 CSS Selector 입니다. CSS Selector를 사용하여 스타일 적용 범위를 한정 하는 것에는 간단하게 세 가지 방법으로 나뉩니다. 물론 앞의 세 가지 방법들을 조합해서 사용하는 것도 가능하구요 : 태그를 이용해 구분하는 방법 클래스를 이용해 구분하는 방법 아이디를 이용해 구분하는 방법 그럼 위의 세 가지 방법에 대해서 보다 자세히 알아 보도록 하겠습니다. 태그를 이용해 구분하는 ..

반응형