Windows 10에 다시 추가된 Aero Glass 효과

약 1년 전 윈도우즈 블로그에 아래와 같은 글 하나가 등록되어있었다.

We’ve also heard loud in clear that many Windows Insiders want to see Aero Glass from Windows 7 make a comeback. We’ve been working out how to satisfy this request, and are trying some things out with this build to see how you like them. We’re running a little A/B test with this build. 50% of you will normal transparency on the Start menu and taskbar while the other 50% will see a blur effect on the Start menu and taskbar (like frosted glass). If Windows Insiders really like the blur effect, we will add it to more areas and even consider making it the default instead of standard transparency. Which one did you get? Send us feedback about it via the Windows Feedback app!

원문 글: https://blogs.windows.com/windowsexperience/2015/04/29/new-windows-10-insider-preview-build-10074-now-available/

어쩐지 어느 순간부터 단순 반투명이 아닌 시작 메뉴의 배경에 번짐효과가 은근슬적 적용되었다 싶었다.
windows 10 aero glass

무려 1년이 지난 지금도 MSDN에는 이러한 효과를 사용하기위한 내용은 없다. 컴백이라더니 왜 공개 안하는지는 모르겠는데… 그냥 예상되는거라면 너도나도 남용할거같아서? 그래도 능력자들이 리버스 엔지니어링을했는지 이것의 적용법을 WPF, Delphi XE버전으로 남겨진 글이 있다.

WPF: http://withinrafael.com/adding-the-aero-glass-blur-to-your-windows-10-apps/
Delphi: http://stackoverflow.com/questions/32724187/how-do-you-set-the-glass-blend-colour-on-windows-10

문제는 이게 C로 정의된걸 꼬박 하루동안 찾지못해 엉뚱한 삽질을 했다는거… 역시나 중국은 무섭게도 C언어로 함수 원형과 구조체들을 정리한것이 나왔다. (Microsoft에서 공개한 문서도 없는데 저런걸 어떻게 다 찾아내서 이름까지도 정하는건지 신기하다.)

C: https://git.oschina.net/ysc3839/codes/djcx0y3b9a5pmtrzgq6ki (여담이지만 코멘트로 달려있는 소스의 마지막 라인에 FreeLibrary(hUser); 한줄이 더 추가되어야 맞을것이다.)

처음엔 WPF 버전의 코드를 보고 C로 옮겼지만 왜인지 되어야하는데 안된다 싶었다. 저 코드를 찾기 전만해도 계속 #pragma pack(push, 1), #pragma pack(pop)을 쓰고있었고, 해당 구조체는 이러한 packing이 필요 없던것이였다(…). OS 레벨의 구조체는 packing이 일반적이라 당연히 필요한 줄 알았건만 이것이 하루 삽질하게 만들고, 그나마 다행인건 좀 더 완전하게 정의 된 C버전의 코드를 찾았다는 정도다.

암튼 현재 만들고있는 프로그램에서 정의하여 사용하는 구조체와 함수 원형은 아래와같다. Continue reading Windows 10에 다시 추가된 Aero Glass 효과

Visual Studio 2015의 Clang 컴파일러 지원

이 글은 단순한 사용기 겸 삽질기이다.


Visual Studio 2015 SP1에서부터 Clang/C2라는 명칭으로 Clang/LLVM 컴파일러를 지원/재공한다. 이상하게도 이 도구가 설치관리자에서 보면 ‘플랫폼 간 모바일 개발’ – ‘Visual C++ 모바일 개발’항목에 있다는것인데… Clang/LLVM이 모바일용 컴파일러도아니고 왜 모바일이라는 단어가 붙어있는지 모르겠다.

vs2015
PS) 만약 Visual Studio 2015를 쓰고있지않거나 서비스팩이 적용되지않은 버전, 아니면 추가로 설치한다면 https://www.visualstudio.com/ko-kr/products/visual-studio-community-vs.aspx 이곳에서 설치관리자 받아서 설치/업데이트 가능

신기한점은 Visual C컴파일러와 목적파일이 호환된다는것. 이것은 LLVM을 직접 받아서 clang을 사용해도 마찬가지였다.  LLVM의 clang-cl에서 /MD 옵션을 주고 빌드하면 msvcrt120.dll과 같은 dll이 링크되어있다(흠좀 무섭다). 문제는 여기까지는 좋은데… 딱히 활용 방안이 없다. 분명 Clang/LLVM이 타 컴파일러에비하면 컴파일 속도가 상당한 수준으로 빠르다는것인데 왠만한 덩치가 큰 소스가 아니면 직접적으로 컴파일 속도에 대한 이점을 느끼기 힘들다는 점이다.

Qt 5.6 기준으로 리눅스/맥에서는 Clang 컴파일러를 지원하지만(애초 맥은 Xcode에서 재공하는 컴파일러가 LLVM이니…) 윈도우에서는 공식지원을 하지않는다. 직접 해본결과 처음 qmake가 빌드되기까지는 warning이 수없이 많이뜨지만 헤더 하나, 한줄만 수정하면 에러가 없이 빌드가 된다. 경고 메시지에 의한 오버헤드 때문인지 MSVC 환경에서는 약 33초만에 qmake가 빌드되고 Qt의 빌드준비가 끝나는반면, Clang을 사용하면 1분 33초나 걸린다. nmake 명령으로 Qt의 라이브러리를 빌드하려하면 잘 되는것처럼 보이지만 결국 미리 컴파일 된 헤더옵션에서 에러가 나버린다. pch옵션을 끄고 다시 시도해볼까 했지만 역시나 의미를 찾지못하여 더이상 삽질은 안했다.

Chromium같은경우 버그리포트를 보면 윈도상에서의 Clang 경고나 에러에대한 패치가 소스트리에 커밋되었다. 윈도 환경에서의 Clang 컴파일러를 사용한 빌드를 지원하는거같은데… 웹킷이란것 하나 빌드하는데 몇시간 단위로 소모되기때문에 엄두가 나질않는다. 어차피 크롬을 쓰면되니까 크로니움을 직접 빌드해 봐야 그닥 이점이 없다(…) 그저 아래 비교표에서 Clang이 월등히 빠른것과같이 아마 MSVC환경에서의 빌드보다 빠르지않을까 추측만 할 뿐.

llvm performance
윈문페이지: http://www.yosoygames.com.ar/wp/2013/12/microsoft-we-need-to-talk-about-visual-studio/


그냥 떠들다보니 이상한 방향으로 나아가버렸는데(…) MSVC에서 Clang을 쓰기위해서는 먼저 첫번째 이미지와같이 Clang with Microsoft CodeGen 항목을 깔아야하고, 플랫폼 도구 집합에서 Clang with Microsoft CodeGen을 선택하면 된다.

clang ms godegen
추가적으로 LLVM에서 직접 Clang을 받아서 설치했다면 다음과같이 LLVM이 도구 집합에 함께 나타난다. 문제라면 LLVM은 MSVC와는 컴파일러 옵션이 다르기때문에 선택해서 빌드 해 봤자 프로젝트에서 설정 된 내용들이 무용지물이다. (Clang/LLVM에서 별도로 재공하는 clang-cl은 Clang/C2처럼 MSVC와 거의 동일하게 옵션을 재공한다.)

llvm from visual studio
만약 아래화면과 같은 윈도의 지역설정이 한국어가 아닌경우 한국어 버전의 비쥬얼 스튜디오가 깔려있다면 소스파일이 유니코드 형식으로 저장되는데… 왜 혼자서 UTF-8이 아닌 UTF-16으로 저장되는지 모르겠다. Clang에서는 UTF-16을 지원 안하기때문에 각각 파일을 열어서(또는 컴파일 안되는 파일 하나하나) ‘파일’ – ‘고급 저장 옵션’에서 인코딩 항목을 ‘유니코드(서명 있는 UTF-8) – 코드 페이지 65001’로 선택하여 확인, 저장해야한다.

windows region
Clang이 MinGW32나 Cygwin과는 다르게 MSVC와 동일한 바이너리 파일을 생성한다는 것이 흥미로운데, 만약 Qt에서 Clang for Windows 버전을 지원하게되면 다시한번 빌드를 시도 해 봐야겠다.

암튼 두서없는 글 끝!

6개월만에 마비노기 접속

이번에도 오랜만에 접속을 해보는데… 어째서 캐릭터와 팻이 다 사라져있는걸까?!

mabinogi_2016_08_15_001
OTP도 사용하고있는데 -_-;;;;
일단 당장 고객센터에 글 남겨봐야겠다.

charactor list

그와중에 웃긴건 캐릭터 리스트에 내 캐릭터들 잘 나온다(…)
약간은 희망이 생긴다.

Boost + Visual Studio 환경에서 라이브러리 빌드

Boost 버전: 1.61.0
Visual Studio 버전: Community 2015

Boost는 헤더만 include하면 되는것이 기본이지만 아래와같은 라이브러리는 빌드해야한다.
Chrono, Context, Filesystem
GraphParallel, IOStreams
Locale, MPI, ProgramOptions
Python, Regex, Serialization
Signals, System, Thread, Timer, Wave

아래 라이브러리는 상황에 따라 빌드 필요.
DateTime, Graph, Math
Random, Test, Exception

참고: http://www.boost.org/doc/libs/1_61_0/more/getting_started/windows.html#header-only-libraries
다운로드: http://www.boost.org/users/download/

빌드 방법:

Continue reading Boost + Visual Studio 환경에서 라이브러리 빌드

윈10 1607 버전에서 유튜브 등 전체화면 시 작업표시줄이 나타나는 문제

분명 얼마 전 업데이트 된 윈도 10이전에는 본적 없는 문제였지만 이번 1607빌드에서는 전체화면 창모드라던지, 유튜브, VLC등의 전체화면 모드에서 작업표시줄이 감춰지지 않는 문제가 생겨버렸다.

시스템 정보
(윈10 버전 1607)

작업표시줄
(이런식으로 하단을 가려버린다. 온도와 습도가 표시되는게 항상 위에표시되는 창.)

 

거의 일주일동안 왜 그런지 몰랐는데… ‘항상 위에 표시’되는 창 덕분이였다. 정확하게는 프로그램이 문제가 아니라 윈도 버그인거같다. 평소 모니터를 두개쓰고 항상 위에 표시되는 창을 보조 모니터에 두고 사용하니 유튜브든 VLC건 게임이건 자꾸 작업표시줄이 나타나는것이였다. ‘항상 위에 표시’가 되는 프로그램을 종료시키니 드디어 작업표시줄이 전체화면 창모드 윈도우를 가리지 않게된다.

작업표시줄이 왜 다른 프로그램에서 항상 위에 표시되는 창을 가지고있으면 덩달아 무조건 가장 위에 표시되는건지 도저히 납득이 가지않는 현상(…) 저번의 MSHelpsKorea 트위터 계정의 김빠지는 답변도 그렇고 문의해봐야 고객센터에 전화하라고 할거같으니 귀찮아서 멘션주기 싫어진다. MS 커뮤니티에 올려봐야 공식 보고가 되는거같지는 않고… 어차피 나만 이런거 겪는거 아닐테니 언젠가 패치되겠지(…)

 

이 문제 말고 다른 문제이지만 유튜브 같은경우엔 발생 예로 맥북에서 브라우저 띄워진 상태로 덮개를 닫고 열다보면 파이어폭스같은경우 종종 전체화면을 사용할 수 없다는 메시지가 뜨고, 크롬같은경우엔 브라우저 내에서 꽉찬화면으로 전환되고 전체화면이 안되는 때가 가끔 발생한다. 이때는 브라우저를 다시 실행하면 간단하게 해결된다.