이 문제는 의외로 오래 전에(?) 알려졌던 문제이다. 이 프로그램이 설치되고 나면 언인스톨이 깔끔하게 되지 않는데, 이걸 수작업으로 지우면 문제가 터지는 것. nProtect Firewall Core Driver가 일단 설치되면 언인스톨을 하더라도 컴퓨터 어딘가에 숨어서 암약하고 있다. 1. 수작업 제거 1단계 명령행을 관리자 권한으로 실행한 뒤 아래와 같이 입력하면 관련 프로세스가 제거된다. 그리고... 인터넷이 죽는다. sc stop TKFWFV sc delete TKFWFV 2. 수작업 제거 2단계 명령행에서 다음과 같이 입력한다. netcfg -s n 윈도우에 설치된 각종 네트워크 구성 요소들이 화면에 표시되는데, 이 중 아래와 같은 내용을 찾는다. 관리자 권한으로 실행된 명령행에서 아래와..
언젠가부터 지메일이나 유튜브 접속 속도가 묘하게 느려졌다. 구글이 아니더라도 뭔가 느릴 이유가 없는데 접속이 느려보이는 사이트들이 좀 있었다. 그러다 클리앙에서 글을 하나 보고서 따라했더니 효과가 커서 공유. 현재까지 공식적으로 널리 사용되는 HTTP 표준은 2.0이다. 그리고, 이 한계를 극복하기 위해 연구되고 있는 게 3.0. 여기 사용될 기술이 QUIC이라는 프로토콜이다. 골자는 기존 TCP 기반의 한계를 극복하기 위해 UDP 기반으로 더 빠르고 훌륭한 프로토콜을 만든다는 것. 그리고, 이미 구글을 포함한 많은 사이트들이 HTTP 3.0을 시범지원하고 있는데, 여기서 뭔가 문제가 벌어진 듯. HTTP 3.0(QUIC)이 정식으로 지원되고, 안정화가 이루어지기 전까지는 잠시 꺼두어도 괜찮을 것 같다...
드디어 그 날이 오고야 말았다. 구글의 G Suite 서비스는 10년 넘게 무료로 도메인 메일을 제공해주는 고마운 서비스였다. 하지만, Google Workspace라는 유료 서비스로 통합된다는 얘기가 있었고, 드디어 2022년 7월 1일로 고지를... 받았다. 이 서비스를 소규모 회사 등에서 사용하는 건 큰 무리가 없을 것이다. 계정 1개당 6달러이므로 30명 규모 조직이라면 월 180달러라는 꽤 만만한 가격에 훌륭한 서비스를 활용할 수 있다. 하지만, 단지 도메인 메일만을 사용하는 개인이라면 얘기가 다르다. 계정이 2개만 되어도 월 만원 이상의 비용이 나가는데, 은근 부담스럽다. 다음 스마트워크를 사용할까 했다가 이왕 있는 장비를 잘 써먹기 위해 시놀로지 NAS를 활용하기로 했다. Synology M..
HW(그래픽 카드) 전문 사이트들에서는 이미 꽤 다뤄졌던 얘기 같은데, 실제로는 잘못 꽂는 경우가 많아서 포스팅. 대부분의 PC용 파워 서플라이의 사용설명서 등에는 아래와 같이 보조전원에 대한 설명이 나와있다. 간단히 말해 전력 소모가 큰 경우엔 전원 케이블 하나에 보조전원 둘을 동시에 연결하지 말라는 것. 그리고, nVidia의 홈페이지에 가면 아래와 같은 내용을 볼 수 있다. 20시리즈의 경우 RTX 2070 Super는 보조전원을 215W 필요로 한다고 한다. 즉, 2070 Super 이상에선 별도의 전원 케이블 2개를 꽂아야 하는 것 같다. 30 시리즈의 경우 3070Ti가 무려 290W를 사용한다. 즉, 3070Ti 이상에서는 전원 케이블을 별도로 꽂아야 한다는 것 같다. 그런데, 실제로 레퍼런..
C/C++ 언어에서 헤더의 중복 선언을 방지하기 위해 #pragma once를 사용한다. 그런데, #pragma once를 써도 링크 오류가 발생하는 경우가 있다. 아래와 같은 간단한 프로그램들을 보자. // CTest1.h: 헤더 파일 // #pragma once class CTest1 { public: int Func(); }; // CTest1.cpp: 클래스 동작을 정의함 // #include "CTest1.h" int CTest1::Func() { return 1; } #include #include "CTest1.h" int main() { CTest1 test1; std::cout
이전 포스팅들에서 OpenDDS를 Visual Studio 환경에서 컴파일하는 법을 정리했다. 이후 OpenDDS 자체의 변경사항도 있고, 뭔가 이상한 점이 확인되기도 해서 좀 더 정리함. 1. 3.18.1 → 3.19 깃허브에 올라온 공식 버전이 3.19로 업데이트 됐다. 그리고, 공식적으로 Visual Studio 2022를 지원한다. 최신 버전을 사용한다면 configure 파일을 수정할 필요가 없음. 2. static 모드 사용 비추 다양한 테스트들을 돌려봤는데, static 모드로 컴파일하면 DDS 통신이 제대로 되지 않는다. TransportRegistry::create_inst() 함수가 오동작하는 것 같은데, 정확한 문제는 더 추적이 필요함. 일단은 정적 라이브러리에서 MFC 사용 옵션은 ..
갑자기 Log4j 사태 때문에 관련 업계 쪽에선 폭탄이라도 맞은 분위기인 것 같다. 상당수의 자바 개발자가 사용하는 애드온에 서버의 모든 권한을 가져올 수 있는 오류가 있다니... 정부를 비롯해서 관련 기관/업계에선 부랴부랴 난리가 났고, 이번에도 어김없이 가짜뉴스가 판친다. 해당 오류는 2.x 대에 있는데, 전자정부는 1.2 사용하니까 문제 없다고?? 물론, 답글은 뭐 이런 식이고... 하지만, 이건 조금만 찾아보면 쉽게 진위여부를 확인할 수 있다. 전자정부 표준 프레임워크는 3.1부터 Log4j2.0을 사용하고 있었다. 그리고, 이 3.x는 '14년~'15년부터 사용되었고. 세줄 요약 1. 전자정부 프레임워크는 6년 전 503 시절부터 Log4j 2.x 사용 2. 원 글 올린 사람은 이 사실을 알면서..
10. 프로젝트 설정 당연한 얘기지만, 모든 프로젝트를 선택해서 설정하면 C/C++ 항목이 표시되지 않는다. 이 점을 신경 써서 C/C++ 항목이 표시되는 모든 프로젝트에 대해 다음의 전처리기를 정의한다. 이 부분은 빼도 상관은 없지만, 경고가 너무 많이 표시되어 보기 싫기 때문에 하는 것을 추천. _WINSOCK_DEPRECATED_NO_WARNINGS _CRT_SECURE_NO_WARNINGS 그리고, 하는 김에 다중 프로세서 컴파일을 예(/MP)로 설정한다. 환경에 따라 다르지만 요즘 환경이라면 적어도 2배 이상은 더 빨리 컴파일된다. 11. /bigobj 설정 몇몇 프로젝트는 섹션 수가 한도를 초과한다는 메시지와 함께 컴파일 실패가 발생한다. 이 프로젝트들은 C/C++ 명령줄에서 /bigobj를 ..
7. 수정 #3 다음 수정들은 좀 지저분하다. NetworkConfigMonitor.h 파일에서 다음과 같은 부분을 찾는다. virtual void add_interface(const NetworkInterface& interface) { NetworkInterface::AddressSet addresses = interface.get_addresses(); for (NetworkInterface::AddressSet::const_iterator pos = addresses.begin(), limit = addresses.end(); pos != limit; ++pos) { add_address(interface, *pos); } } virtual void remove_interface(const Net..
VS 환경에서 OpenDDS를 컴파일하는 것 자체는 그렇게 어려운 일이 아니다. 다운을 받아 압축을 풀고 configure.cmd를 실행시킨 뒤 VS로 컴파일하면 된다. 컴파일 오류가 몇 개 발생하긴 하지만 잘 고쳐보면 된다. 그럼 쉬운 게 아니잖아. 하지만, 이걸 정말로 써먹을 수 있도록 컴파일하는 것은 쉽지 않다. 앞 글에서도 얘기했듯이 윈도우에서 제대로 쓸 수 있는 수준에 맞춰야 하는데 쉬울리가... 현 시점에서 릴리즈된 OpenDDS의 최신 버전은 3.18.1이다. 이 버전은 공식적으로 VS2019 까지만을 지원한다. VS2019 사용자라면 그냥 쓰면 되지만, VS2022 사용자라면 선택을 해야 한다. configure를 좀 수정하거나 이후 버전을 다운받아야 한다. 0. 사전 준비 물론 이 작업을..
1. OpenDDS란? 미들웨어 중에 DDS라는 녀석이 있다. Publisher-Subscriber 모델을 사용하며, 상당히 신뢰도가 높아 국방체계에도 사용되는 미들웨어다. RTI DDS가 비싸도 널리 사용되는 것 같고, 이 외에도 OpenSplice DDS, 국산인 스마트DDS, 구름DDS도 있다. DDS도 다른 기술들과 마찬가지로 표준화가 이루어져 오픈소스 버전도 만들어져 깃허브에서 관리되고 있다. 깃허브에서 소스가 관리되는 DDS는 위에 언급된 OpenSplice DDS 외에도 OpenDDS가 있다. 이 중 OpenDDS를 윈도우 환경에서 적용해보기로 했다. 2. 윈도우 환경과 기타 환경의 미묘한 차이 우리나라에서 프로그램을 개발할 때는 당연히 유니코드를 적용해서 개발해야 한다. 호환성 때문에 멀티..
최근 인텔 12세대 CPU가 발표되었지만, 인텔의 주장과는 달리 성능의 엄청난 향상을 보여주진 못하고 있다. 성능 향상폭은 크지 않은데, 보드도 새로 사고, DDR5도 새로 사야할만한 필요성은 전혀 느껴지지 않는다. 물론 DDR5도 언젠간 수율이 올라가고 기술력이 안정화되어 DDR4를 대체하겠지만, 아직은 아닌 것 같다. 라이젠 계열을 계속 쓰는 게 낫다고 판단해서 없는 돈에 영혼 한 방울까지 끌어모아 라이젠 5900X로 업그레이드 했다. 메인보드도, 메모리도 아무것도 살 필요 없이 CPU만 사면 되니 가성비는 일단 비교할 수 없이 높고... 일단 떠나보내는 CPU(및 그 외에 안 바뀌는 시스템) 사양은 아래와 같았다. 그리고 새로 영입한 CPU는 이렇다. 당연히 새로운 CPU가 성능이 좋겠지만, 어느 ..
윈도우 11도 32비트는 지원하지 않고 64비트 환경만 지원하더니, 드디어 비주얼 스튜디오도 64비트로 넘어갔다. 16비트에서 32비트로 넘어갈 때도 눈 깜박할 사이에 넘어갔는데 64비트로의 전환 역시 신속하게 진행되고 있다. 이전에 VS2019에서 돌리던 프로젝트들을 하나씩 VS2022로 이관했는데, 이 과정에서 묘한 컴파일 실패가 발생했다. 아래의 코드를 32비트 릴리즈 모드에서 컴파일하면 환경을 어떻게 설정해도 컴파일이 중단된다. 64비트나 디버그 모드에선 이상 없이 잘 되지만, 딱 32비트 릴리즈 모드에서만 컴파일러 자체가 멈춘다. 식을 좀 더 단순하게 써보라는 조언만 남기고 그냥 중단된다. #pragma loop(hint_parallel(0)) #pragma loop(ivdep) for (int..
Visual Studio 2022의 Preview 버전이 4.1까지 나왔다. 이제 충분히 안정화되었을 것이라 보고 VS2019로 만들었던 프로젝트들을 하나씩 이관하기 시작했다. 언제나 그렇듯 대부분의 프로젝트들은 별 문제 없이 잘 이관되었고, 몇 개만 문제를 일으켰다. 그리고, 언제나 그렇듯 이런 프로젝트들은 해결책 찾기가 너무나 어려웠다. 그중 가장 고갱님 당황하셨어요? 시추에이션은 Paint.NET 프로젝트. C/C++ 프로젝트와 달리 별다른 마이그레이션도 필요없을 줄 알았는데, 현실은 언제나 시궁창... 그렇지 않아도 무슨 얘긴지 모르겠는데, 기계번역된 결과는 너무나 읽기 어렵다... 좌우지간 버전 간의 충돌이란 얘긴데... 1. 안일한 불의의 길 Paint.NET 포럼을 뒤져보니, 이미 많이 벌어..
실망으로 가득 찼던 지난 포스팅 이후 다시 한 번 NOTHING ear(1) 구매에 도전했다. 당시는 무x사에서 한정판매하는 것이었고, 이 글을 쓰는 지금까지도 거기서 구매에 성공했다는 글은 여전히 볼 수 없다... 며칠 뒤 본진 홈페이지에서 판매를 시작할 것이라는 메일을 받고 다시 한 번 도전했다. 이번엔 그 때처럼 시간에 맞춰 대기하지도 았았고, 그냥 생각날 때 접속하여 구매에 성공했다. 그리고 바로 다음 날 택배가 도착했다. 택배 상자에는 한자가 잔뜩 적혀있었지만, 인천에서 발송됐다. 박스를 뜯으니 거대한 에어캡으로 안전하게 포장되어 있다. 에어캡을 벗기니 다시 한번 스티로폼에 쌓인 물건이 나온다. 그리고, 짜잔! 바로 이것이 NOTHING ear(1)의 상자이다!!! 상자 뒷면에는 충전 관련 정보..
투명한 디자인과 액티브 노이즈 캔슬링에 더해 저렴한 가격까지 갖춘 NOTHING ear(1)이 한달전 영국에서 출시됐다. 가격이 무려 99달러로 책정돼 업계 끝판왕 에어팟 프로의 ⅓ 수준인데다 디자인이 훌륭해서 온라인에서 화제가 됐었다. 리뷰들을 보면 어떤 리뷰어는 과장광고일 뿐이라 하고, 어떤 리뷰어는 가성비 끝판왕이라고도 한다. 어쨌거나, 디자인이 예쁜 건 맞고, 가격 대비해서 부족한 제품은 아닌 것 같다. 국내 발매를 기다리던 중에 무x사에서 선발매한다는 소식이 들려왔다. 그런데, 무x사의 기사는 처음부터 뭔가 쎄했다. 낫싱은 안드로이드의 아버지로 불리는 앤디 루빈이 구글을 떠나 처음으로 론칭한 이라니... 앤디 루빈이 구글을 떠나 처음으로 설립한 회사는 에센셜이다. 참고로, 구글에서의 그의 부적절..
0. 윈도우 어플에서의 아이콘 크기 윈도우용 아이콘은 파일 하나에 여러 종류의 크기를 담을 수 있으며, 상황에 맞춰 윈도우가 선택한다. 이게 상식이고, 모든 얘기의 시발점이다. 윈도우 98/2000 까지는 4bpp 아이콘을 주로 사용했지만, XP 이후로는 8bpp/32bpp를 기본으로 한다. 현재 4bpp 아이콘은 단순히 하위 호환성을 위해 존재할 뿐 실제 프로젝트에 적용할 필요는 없다고 봐도 무방. 아이콘 파일의 스펙을 보면 가로/세로 크기는 256이 최대이고, 32bpp 까지만 적용이 가능하다. XP 까진 비트맵 포맷만 지원했지만, 비스타 이후는 PNG 포맷도 적용이 가능하다. 1. 실제로 만들어야 하는 아이콘의 크기들 실제 어플리케이션에서 만들어야 하는 아이콘의 크기는 스택오버플로우에 잘 정리되어있..
집 인터넷으로 유플러스를 사용하고 있다. 사소한 문제가 하나 있었는데... 계약 속도는 500Mbps인데, 실제론 100Mbps밖에 못 쓴다는 것. 유명 유튜버 ITSub의 바로 그 사태와 같은 문제는 전혀 아니고... 아파트 구조가 좀 구려서 통신단자함에 전원도, 여유공간도 없는데, 여기로 방마다 연결을 해야 했다. 그래서, 궁여지책으로 선택한 것은 8가닥 대신 4가닥으로 연결해서 집안 유선의 속도를 100Mbps로 떨어뜨리는 것. 내부망은 TP-Link의 Deco Mesh로 연결해서 모두가 무선을 빠방하게 쓸 수 있었지만 본질적인 한계는 명확했다. 이번에 시간이 좀 생겨서, 이를 대폭 개선해봤다. 일단, 통신단자함에 전원이 없는 문제는, 분전반에서 전력을 직접 따오기로 했다. 그리고 단자함 내에 기가..
SK하이닉스 SSD 구매 세간에 평이 상당히 좋은 SK하이닉스 SSD를 구매했다. NVMe, SATA 각각 하나씩. 그런데, 문제는 기존에 사용하던 M.2에 설치된 윈도우를 어떻게 복원하는가 하는 것. SATA 인터페이스만 쓸 때엔 Macrium Reflect Free가 극강의 솔루션이었지만, M.2에선 얘기가 좀 다르다. 내 PC에는 NVMe M.2 인터페이스가 하나밖에 없기 때문이다. 일단 새로 설치하는 건 엄두가 나지 않는다. 그렇다고 NVMe M.2 SSD 복제 장치를 구매하는 건 수지타산이 맞지 않는다. 구글링을 해보니 현재 본 블로그 스킨을 만들어주신 친절한효자손님께서 솔루션을 친절하게 적어두셨다. 아래에 적은 절차는 친효님 블로그 내용과 별 차이가 없으며, 실제 작업한 절차를 정리해둔 내용...
이전 포스팅에서 간략히 얘기했듯이, BIG INTEGER WITH C++를 클래스 형식으로 포팅하기로 했다. 이 코드는 벡터를 사용해서 BigInt를 구현했는데, 전체적으로 코드가 간략하다는 점이 돋보였다. 하지만, 단점이 몇 있었는데, 무엇보다도 음수를 지원하지 않는다는 점이었다. 그 외에도 로그 함수에 오류가 있었고, sqrt 함수는 성능이 너무 느렸다... 포팅을 진행하며 손을 댄 내용들을 간략히 정리해본다. #include 원본 코드는 stdc++.h를 사용하도록 되어있다. 이 헤더는 잡다한(?) 헤더를 몽땅 포함시키는 코드인데, 실제 상황에선 그닥 쓸모가 없다. 찾아보니 대회 같은 데 나가면 쓸만하다는데, 글쎄... 잘 모르겠다... 간략하게 쓸 내용만 추가하는 것으로 변경. #include #..
최근 공유기 2대를 사용해오면서 모두 DD-WRT를 설치해서 사용해왔다. 이로써 순정 펌웨어에서 느낄 수 없는 다양한 기능들을 마음껏 사용할 수 있었다. DD-WRT에는 Mesh 기능도 갖춰져있고, 공유기가 두 대라 이를 적용할 수도 있었다. 그런데, 막상 적용을 해보려니 무엇부터 시작해야될지 알 수 없었다. 내친 김에 많이들 추천하는 Mesh 구성을 나도 해보고 싶었다. 요즘은 심지어 ipTIME에서도 Mesh를 지원하는 공유기들이 많이 나와서 선택의 여지도 많은 편이다. 내가 선택한 것은 tp-link의 Deco X20. 이 시리즈는 아예 Home Mesh 라는 이름을 달고 나와서 무진장 편한 Mesh 설정을 제공해준다. 박스를 벗기면 이렇게 두 대가 나란히 들어있다. 이 제품은 일단 심플하고 작다...
역률(Power Factor)이란 부하가 사용하는 유효전력과 부하에 공급되는 피상전력에 대한 비율을 의미한다. 간단하게 적으면 \( 역률 cos \phi = \frac {유효전력 P}{피상전력 Pa} \)으로 나타낼 수 있다. 발전기/인버터 단위에서 유효전력이 양수인 경우만 다루기 때문에 \(cos\phi\)는 항상 양수라 볼 수 있다. IEC 61850-7-520 국제전기협회(IEC)에서 사용하는 역률의 부호는 위에서 말한 설명과 수학적 이론에 부합한다. 그런데, 실제 인버터를 역률로 제어하려면 이것으론 부족하다. 지상(lagging, inductive) 또는 진상(leading, capacitive)을 구분해서 발전시킬 수 없기 때문이다. IEC 표기법으로는 무효전력에서는 역률을 계산할 수 있지만, ..
MFC의 CDialogEx는 CDialog에서 파생된 클래스로 기능은 거의 비슷하며, 배경을 지정하는 기능이 추가되었다. 참고로, 상속관계는 아래와 같고... CObject CCmdTarget CWnd CDialog CDialogEx CDialogEx에 추가된 메소드들은 아래와 같다. void SetBackgroundColor( COLORREF color, BOOL bRepaint=TRUE); void SetBackgroundImage( HBITMAP hBitmap, BackgroundLocation location=BACKGR_TILE, BOOL bAutoDestroy=TRUE, BOOL bRepaint=TRUE); BOOL SetBackgroundImage( UINT uiBmpResId, Backgr..
여차저차 해서 T-Mobile의 TM-AC1900 한 대가 손에 들어왔다. 그런데, 사실 TM-AC1900 유무선 공유기는 다름 아닌 ASUS RT-AC68U를 리브랜딩한 제품이다. 다시 말해 잘만 하면 DD-WRT를 설치할 수도 있는 공유기가 한대 생긴 것이다. 그런데, 이게 쉽지가 않다. 리브랜딩 제품이라 그런지 순정 펌웨어나 써드파티 펌웨어로 교체하는 것을 근본적으로 다 막아두었다. 펌웨어 버전 2827 이후부터 이런 작업을 철저하게 차단한다. 이건 비단 펌웨어 단 뿐만 아니라 그 밑에 있는 CFE에서도 이를 철저히 차단한다. 즉, 펌웨어를 교체하기 위해서는 펌웨어를 구버전으로 교체한 뒤, 다시 CFE를 구버전으로 교체해야 되는 것이다. 펌웨어는 1703, CFE는 1.0.2.0을 사용하는 것이 대..
어째저째 여차저차 해서 지인의 집을 정리할 일이 있었다. 옛날 물건들 몇 점이 추억을 떠오르게 해서 그것들만 따로 간략히 포스팅 플로피 디스켓 지금은 저장 아이콘모양으로만 겨우들 알고 있는 3.5" 플로피 디스켓을 몇 장 찾았다. HD니까 1.44MB의 용량을 저장할 수 있는 매체이다. 왼쪽 아래의 네모난 부분이 쓰기 방지 장치... 난 이 이전 규격인 5.25" 부터 사용했었고, 전산실 정리하면서 8" 디스켓을 실제로 보기도 했다. ZIP 디스켓 이제 완전히 사멸해버렸지만, 1990년대를 주름잡았던 아이오메가의 ZIP 디스켓이다. 난 병렬 포트를 사용하는 100MB 버전을 사용했는데, 그 때 250MB 버전은 저 높은 하늘 같은 존재였다. 750MB 버전이나 그 이후에 나온 1GB/2GB 짜리 재즈 드..
깃헙에서 북극에 오픈소스를 아카이빙하는 Arctic Vault program이라는 프로그램을 진행했었다. 소스코드를 특수한 필름에 QR 코드로 인쇄해서 북극의 노르웨이령 지역에 보관하는 것이다. 이를 통해 혹시나 깃헙 저장소 전체가 소실되더라도 다음 세대에 이를 넘겨주는 게 목표라고 한다. 근데, 엊그제 보니 내가 참여한 소스도 여기 아카이빙 되어 나도 Arctic Code Vault Contributor 배지를 받았었다. 내가 참여한 코드도 다음 세대에 확실히 넘어가게 된 것이다. 근데, 대체 이 배지를 받은 걸 왜 지금까지 못 봤지? ※ 참고글: GitHub Archive Program: the journey of the world’s open source code to the Arctic Every..
트위터 계정이 완전히 사라졌다. 상황 진행은 단순했다. 1. 웬 일본인(으로 추정되는 ㅅㄲ)가 종군 위안부 피해자는 미군도 동의한 성매매 였고, 일본은 배상했고... 같은 장문의 멘션 몇 개를 사진들과 함께 보냄 2. 꺼져, 쪽빠리야 멘션 보내고 신고함 3. 내가 인종차별로 계정 정지 당함 4. 트위터에 나를 신고한 놈이 비윤리적 멘션을 보낸 것이며, 그가 역사적 죄를 지은 것이라 장문의 답변 보냄 5. 인종차별 맞다고 다시 경고 메일 받음 6. 더러워서 더 이상 대응하지 않음 트위터는 대체 누가 인간을 차별하고, 인간성을 말살하는지 판단할 능력도 없는 쓰레기 회사이다. 깨끗한 척 사용자를 평가한다 오만방자를 떨어대지만, 조금만 들춰도 썩은내가 진동하는, 최악의 윤리 회사이며, 오히려 전쟁범죄국 일본의 ..
윈도우 10은 이전 버전의 윈도우들에 비해 사용자 편이성이 대폭 향상되었다. UI는 기존 스타일을 대체로 따라가지만, 들여다보면 편리하게 추가된 기능들이 한둘이 아니다. 그 중 하나는 시작 프로그램 관리. 검색창에서 시작 프로그램 또는 시작 앱을 검색해서 실행하면 시작 프로그램을 손쉽게 관리할 수 있다. 그리고, 이를 쉽게 실행할 수 있는 URI도 공개했다. ms-settings:startupapps 이를 프로그램에서 직접 사용하는 것도 대단히 쉽다. 대략 아래와 같은 한 줄이면 가능하다. ShellExecute(NULL, NULL, _T("ms-settings:startupapps"), NULL, NULL, SW_SHOWDEFAULT); 그런데, 이를 프로그램에서 직접 사용하려면 생각을 좀 해야 한다...
2013/10/29 - Windows 8.1에서 GetVersionEx() 함수가 버전을 제대로 인식하게 하려면… 전통적으로(?) Visual C++에서 윈도우의 버전 번호를 읽는 함수는 GetVersion() / GetVersionEx() 였다. 그런데, MS는 윈도우 8.1을 출시하면서 이 함수의 기능을 OS의 버전 대신 manifest 정보를 리턴하도록 변경했다. MS의 입장은 알겠지만, 많은 개발자들에게 이 수정은 커다란 혼란을 가져왔고, 여전히 이해가 어려운 게 사실이다. 이에 다양한 버전 번호를 읽는 방식들과 동작 결과 등을 간략하게 정리한다. 아래의 실행 환경은 모두 윈도우 10 Pro (x64)임을 미리 얘기해둔다. 1. GetVersionEx() OS의 버전을 읽는 방식은 앞에서 기술한 ..