본문 바로가기

분류 전체보기423

방탄소년단(BTS) - MAP OF THE SOUL : 7 앨범 구입 방탄소년단이 전세계적으로 인기라고 한다. 방탄소년단을 처음 본 것은 2011년 쯤? 군대에서 본 것 같다. 당시 비스트와 같은 아이돌이 있었고 노래도 나쁘지 않았었다. 반면 방탄소년단은...음.. 그때 당시 주목 받지 못했던 것으로 기억한다. 그런데 요근래 갑자기 빵뜬 느낌. 이번에 정규 4집이 발매 되었다. 인기에 힘입어 나도 한번 구입해 보았다. YES24에서 19000원에 팔고 있는데 무려 19곡이나 수록되어있다. 갓성비. 지관통때문에 박스가.. 큰게 들어있다. 포스터는 솔직히 이제 필요없다. 앨범 사이즈가 상당히 크다. 보관이 난감할 만큼 너무 크다. .. 휴대폰에 붙이는거 같은데 어떻게 쓰는지 모르겠는 사은품?이 들어있다. 포스터를 열어 보았다. 이제 아재인지라 아는 얼굴이 하나도 없다. 앨범을.. 2020. 3. 2.
UINT32[4] IPv6를 스트링으로 변환하기 / MFC, C++ 이전에 쓴 IPv4 UINT32 자료형을 String으로 변환하는 것에 이어 이번에는 UINT32[4] 자료형으로 된 IPv6 String으로 변환해 보는 코드를 작성해 보았다. 물론 ipv6의 축약 포맷은 구현되지 않았다. IPv6는 128비트로 조합된 주소 형식이다. // UINT32 ipv6[4]; CString IPv6ToString(UINT32 ipv6[]) { CString strIPv6; strIPv6.Format(_T("%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x"), (ipv6[3] >> 16) & 0xFFFF, (ipv6[3] >> 0) & 0xFFFF, (ipv6[2] >> 16) & 0xFFFF, (ipv6[2] >> 0) & 0xFFFF, (ipv6[1].. 2020. 2. 19.
insidekernels.blogspot.com / Windows Kernel 관련 inside kernels insidekernels.blogspot.com https://insidekernels.blogspot.com/ Windows 커널 관련 개발 블로그 WFP 등 네트워크 드라이버 개발에 참고 2020. 2. 19.
DeviceIoControl에서 Overlapped I/O 사용하기 DeviceIoControl에서 Overlapped I/O 사용하기 커널드라이버에서 발생한 빈번한 대량의 이벤트를 유저모드에서 하나하나 모니터링 하기위해서 이벤트를 이용하여 동기화, polling으로 이벤트를 계속 수신하거나 하는 방법 등 다양한 방법이 쓰일 수 있다. 문제의 시나리오 비교적 간단한 polling으로 이벤트를 계속 수신한다고 생각해보자. 커널드라이버에서는 발생한 이벤트를 큐에 큐잉하고 유저모드 애플리케이션에서는 IOCTL을 발생시켜 큐의 내용을 꺼내온다. 이런식의 로직에서 유저모드 애플리케이션은 While과 같은 반복문을 수행하며 DeviceIoControl를 호출하여 드라이버와 계속 통신할 것이다. while(true) { BOOL ret = DeviceIoControl(hDevice,.. 2020. 2. 18.
macOS에서 타입스크립트(Typescript)개발환경 구축하기 macOS에서 Typescript개발환경 구축하기 with NPM TypeScript개발 환경 구축 방법에는 두가지 방법이 있는데 하나는 Visual Studio를 이용하는 것이고 다른 하나는 npm 패키지관리자를 이용하는 것이다. NodeJS설치 npm을 이용하기에 앞서 NodeJS를 설치해야한다. https://nodejs.org/en/ NodeJS를 설치하고나서 terminal을 실행해 node명령어를 이용하여 nodeJS가 제대로 설치 되었는지 확인한다. lucidmaj7@Wonheeui-MacBookPro ~ % node --version v12.16.0 lucidmaj7@Wonheeui-MacBookPro ~ %npm도 정상적으로 실행 되는지 확인한다. lucidmaj7@Wonheeui-Mac.. 2020. 2. 16.
UINT32 정수형 IP주소 스트링 변환하기 / MFC / C++ 네트워크 관련 프로그래밍을 하다보면 IP주소를 정수로 표현하고 이를 String으로 바꾸거나 다시 String에서 정수형 IP주소로 바꾸는 경우가 잦다. Socket 라이브러리를 통해 바꿀 수 도 있지만 비트연산을 조합하여 변환도 가능하다. UINT32 IP 주소 -> CString IPv4의 IP주소는 본래 8비트짜리가 4개 합처진 형태이다. 때문에 8비트씩 시프트연산을 통해 각 옥텟 값을 가져올 수 있다. 아래는 MFC에서 UINT32 IP주소를 CString으로 변환하는 예시 코드이다. CString ipToString(UINT32 ipaddr) { CString ipStr; ipString.format(_T("%d.%d.%d.%d"), (ipaddr>>24) & 0xFF, (ipaddr>>16) .. 2020. 2. 13.
해커랭크(HackerRank) - Insert a node at the head of a linked list / C++ 문제 : 해커랭크 - Insert a node at the head of a linked list 난이도: Easy 언어 : C++ SinglyLinkedListNode* insertNodeAtHead(SinglyLinkedListNode* llist, int data) { SinglyLinkedListNode* ret ; if(llist == nullptr) { llist = new SinglyLinkedListNode(data); ret = llist; }else { SinglyLinkedListNode* nNode = new SinglyLinkedListNode(data); nNode->next = llist; ret = nNode; } return ret; } 2020. 2. 13.
해커랭크(HackerRank) - Insert a Node at the Tail of a Linked List / C++ 문제 : 해커랭크 - Insert a Node at the Tail of a Linked List 난이도: Easy 언어 : C++ SinglyLinkedListNode* insertNodeAtTail(SinglyLinkedListNode* head, int data) { if(head == nullptr ) { head = new SinglyLinkedListNode(data); } else { SinglyLinkedListNode* node = head; while(node->next!= nullptr ) { node= node->next; } node->next = new SinglyLinkedListNode(data); } return head; } 2020. 2. 13.
해커랭크(HackerRank) - Left Rotation / C++ 문제 : 해커랭크 -Left Rotation 난이도: Easy 언어 : C++ int main() { string nd_temp; getline(cin, nd_temp); vector nd = split_string(nd_temp); int n = stoi(nd[0]); int d = stoi(nd[1]); string a_temp_temp; getline(cin, a_temp_temp); vector a_temp = split_string(a_temp_temp); vector a(n); vector r(n); for (int i = 0; i < n; i++) { int a_item = stoi(a_temp[i]); a[i] = a_item; int idx = (n-d +i)%n; r[idx] = a[i.. 2020. 2. 11.