전체 글 (245) 썸네일형 리스트형 인터넷 프로토콜 헤더 출처 : http://nmap.org/book/tcpip-ref.html 프로젝트를 진행하다가 IP/UDP 헤더를 조작해야하는 변태스러운 짓(?!)을 하고 있다. TCP까지 열었으면 까무러칠뻔 ㅎㅎ 이 글은 스프링노트에서 작성되었습니다. Rhapsody :: Bit Field Rhapsody 클래스 에디터로 Bit Field를 표현하는 방법은 아직 없는것 같다.(7.5.1) 하지만 새로운 Type을 생성하여 직접 Bit Field 구조를 만들어 사용할 수가 있다. Type을 하나 만들고, Feature창에서 Declaration에서 Bit Field를 표현하면 된다. struct %s { unsigned int likes_ice_cream : 1; unsigned int plays_golf : 1; unsigned int watched_tv : 1; unsigned int reads_books : 1; }; 이 글은 스프링노트에서 작성되었습니다. Pyside http://www.pyside.org/ Python용 QT 바인딩 프로젝트. 라이센스가 LGPL이다. 참고로 PyQt는 GPL.pip로 다운로드 받을 수도 있지만(pip install pyside), 별도의 바이너리 파일들은 아래 링크에서 찾을 수 있다.https://download.qt.io/official_releases/pyside/ Rhapsody :: Wrapping Code with #ifdef - #endif 컴파일러 특성 또는 필요에 의해 Class, Attribute들을 #ifdef/#endif로 묶거나, #pragma와 같은 지시어로 묶으려면 아래의 Properties 항목을 이용한다. 예를 들어 _DEBUG가 선언되어 있을 경우에만 가용한 코드를 만들기 위해서는 아래와 같이 Properties를 설정한다. SpecificationProlog : #ifdef _DEBUG SpecificationEpilog : #endif ImplementationProlog : #ifdef _DEBUG ImplementationEpilog : #endif Specification은 헤더파일에 Implementation은 소스파일에 적용이 된다. 아래는 클래스 선언시 Byte Align을 1 byte로 하고자 할때 사용한.. Rhapsody :: Class의 Attribute들의 순서변경 Class의 Attribute들의 메모리 위치가 중요할 때가 있다. 이때는 Attribute들의 위치를 개발자가 원하는대로 바꿔야 한다. Rhapsody에서는 아래와 같이 해결한다. Attribute에 오른쪽 마우스 클릭으로 Edit Attributes Order 메뉴를 선택한다. Edit attributes declaration order 윈도우가 뜬다면 Use default order를 해제시키고 원하는 순서대로 정렬한다. 이 글은 스프링노트에서 작성되었습니다. Vxworks에서 arp관련 API http://www-kryo.desy.de/documents/vxWorks/V5.5/vxworks/ref/arpLib.html#arpAdd map에서 erase시 주의해야 할 사항!! 다음과 같은 코드가 있다고 하자. 루프를 돌면서 값이 value와 같다면 해당 원소를 map에서 지우는 것을 시도하는 코드이다. typedef std::map StringFloatMap; StringFloatMap coll; StringFloatMap::iterator pos; for ( pos = coll.begin(); pos != coll.end(); ++pos) { if ( pos->second == value ) { coll.erase(pos); // 런타임 에러!! } } coll.erase(pos)이후의 coll의 iterator인 pos가 무효화되므로, 런타임 에러가 발생하게 된다. 해결책은 아래와 같다. typedef std::map StringFloatMap; StringFloatMap.. Rhapsody :: static 배열변수 초기화 Header File class A { protected: static unsigned short m_aCrc16Tab[]; }; Source File unsigned short A::m_aCrc16Tab[] = { 1, 2, 3, 4 }; 위와 같이 초기화를 하려면 Rhapsody에서 다음과 같이 Properties를 설정하면 된다. Filter로 InitializationStyle을 검색하여 ByAssignment로 변경한다. 해당되는 값들은 Initial Value에 넣으면 된다. 또한 기본적으로 Accessor나 Mutator를 생성안함으로 해야한다. 이 글은 스프링노트에서 작성되었습니다.