글 목록 보기

Lyn
조회 수 1782 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

https://www.visualstudio.com/visualstudio-release-event-vs

 

많이 봐주세요

TAG •
?

Lyn
조회 수 1742 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

OS보다 조금 일찍나오는군요.

 

http://blogs.msdn.com/b/somasegar/archive/2015/06/29/save-the-date-visual-studio-2015-rtm-on-july-20th.aspx

 

?

Lyn
조회 수 2791 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

Windows 는 Vista 부터 고 DPI 지원을 하기 시작 했는데, 이게 버전마다 좀 차이가 있다.

 

Vista : DPI 변경시 재부팅 필요함

7 : DPI 변경시 로그아웃 필요함

8 : DPI 변경시 로그아웃 필요함.

8.1 : DPI 변경시 로그아웃 필요 없음!!!

 

여기서 중요한 이슈가 발생 하는데, 8.1에서 로그아웃이 필요 없다는 것은 프로그램 실행중에 DPI 가 바뀔 수 있다는점이다. 결국 MS는 이 문제를 해결하기 위해 메시지 하나를 추가하는데 바로 WM_DPICHANGED 이다. 당연하겠지만 Windows 8.1 이상에서만 발생하며, Windows SDK 도 8.1 이상을 써야한다(뭐 어차피 달랑 정수값 하나니 그냥 선언해서 써도 되긴 하지만 ...)

 

 

참조 : https://msdn.microsoft.com/en-us/library/windows/desktop/dn312083(v=vs.85).aspx

TAG •
?

Lyn
조회 수 2219 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

컴퓨터의 발전과 함께 발전해온 것 중 하나가 바로 폰트(Font) 이다.

컴퓨터를 초창기에는 계산용으로 사용했고, 그 다음으로 컴퓨터가 널리 보급 된 이유는 역시나 사무용이다. 타자기를 대체하기 위한 WordProcessor 라는 프로그램이 등장 한 이후, 압도적인 수정/복제의 편리함으로 타자기를 순식간에 밀어내고 컴퓨터가 널리 쓰이게 되었는데, 타자기에서 절대 흉내낼 수 없었던 워드프로세서의 장점 중 하나가 바로 다양한 폰트를 사용 할 수 있다는 것이다.

 

당연히 많은 폰트가 개발 되어 왔고, 프로그래머들은 그 폰트를 담을 파일 포맷 역시 설계해야 했다.
 

초창기에는 컴퓨터 모니터의 해상도가 워낙 낮았고, PC 성능또한 처참했기에 폰트 하나하나를 픽셀로 표현하는 방법을 사용했다. 바로 비트맵 폰트 라고 하는 녀석인데, 이것은 FON 확장자를 사용한다.
하지만 출력물의 해상도는 당시에도 모니터보다 훨씬 높았기 때문에(이것은 현재에도 대부분의 경우 마찬가지다. 자세한것 후술) 비트맵 폰트로는 좋은 출력물을 얻을 수 없었으며, 그 연구의 결과물이 바로 Adobe 가 만든 PostScript 포맷이다.
 

그 이후 애플이 Adobe에 대응하기 위해 새 포맷을 만들었는데, 바로 트루타입 폰트이다. PS 와 한가지 다른 특징을 가지고 있는데, 바로 2차원 베지어 곡선을 이용한다는 점이다. 이는 용량,속도에서 장점이 있고, 해상도가 낮은 모니터에서도 비교적 깔끔하게 보이는 특징이 있다. 나중에 LCD 같은 고정밀도의 디스플레이에 대응하기 위해 힌팅이 추가되었다(MS에서는 ClearType 이란 이름으로 XP 이후부터 지원한다). 확장자는 TTF 를 사용한다. TTF는 패밀리 폰트(이탤릭, 굵게 등등..) 을 넣을 수 없으므로, TTF 여러개를 묶는 컨테이너 포맷이 등장하게 되는데 이 포맷의 확장자는 TTC를 사용한다.

 

90년대 들어와서 MS는 새 파일 포맷을 만드는데, PS와 TTF 의 장점만을 취한 포맷으로 확장자는 OTF이다. PS 처럼 3차원 베지어 곡선을 사용하고, 자체적으로 패밀리 폰트를 지원한다. 3차원 베지어 곡선을 사용하므로 속도가 느리고 용량도 크며, 모니터에서는 곡선의 복잡도로 인해 제대로 표현히 되지 않는다는 단점이 존재한다. 주로 PS와 마찬가지로 출력물에서 사용한다.

 

그 외 HFT 같은 한컴에서 만든 폰트 포맷도 존재한다.
 

그러나 2015년 현재 시점에는 굉장히 아이러니한 상황이 벌어졋는데, MS Windows 에서 가장 많이 쓰는 포맷이 Apple 이 만든 TTF 이고, Apple OSX 에서 가장 많이 사용하는 포맷이 MS가 만든 OTF이다 (....) 
또 디스플레이도 상황이 많이 달라졋는데, "일반적인" 출판물의 DPI 는 지금도 300정도로 변함이 없지만, 스마트폰의 경우 500이 넘는 무식한 PPI를 지원하는 녀석들이 등장했다. 마찬가지로 PC에서도 250PPI를 넘는 디스플레이들이 많이 등장했는데, 당장 지금 본인이 쓰는 노트북만 해도 13.9인치 크기에 3200*1800 해상도를 자랑한다. 비교적 "저해상도" 를 지원하기 위한 기술들이 디스플레이가 고해상도화 되면서 난감한 상황이 된것. 이 상황이 오면서 가장 치명타를 입은게 MS Windows 인데, Windows 는 속도와 가독성 양쪽을 다 잡기 위해 2차원베지어곡선을 이용하는 TTF 포맷을 쓰면서 강력한 힌팅 알고리즘과 데이터를 이용해 가독성을 올리는 방법을 택했기 때문이다. 하지만 그대로 해상도가 깡패인 (...) 환경에서 이런 알고리즘은 도움이 되지 않았고, OS의 폰트가 전체적으로 예쁘지 않게 보이는 결과를 낳게 되었다(구형 맥을 보면 생각보다 폰트가 안이쁜걸 알 수 있다... 폰트가 정말 이뻐진건 레티나 디스플레이 장착한 머신 부터. 논리 해상도를 1440*900으로 1/4토막을 내면서 까지 극단적으로 폰트의 미려함을 추구한 OS이다). Windows 8 이후 추가된 UWA(윈도우 10 이전엔 Modern UI 라고 불럿다)에서는 결국 다른 방법으로 랜더링한다. ClearType 은 낮은 해상도에서 높은 가독성을 얻기 위함이지 높은 해상도에 최적화된 방법이 아니었기때문에..

?

2015.04.20 14:08

Resharper C++ 사용기 - 1

Lyn
조회 수 3606 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

코드의 네이밍 스타일을 지정하는 옵션입니다.
 

1.png2.png

 

더블클릭하면 스타일을 지정 할 수 있게 되어있습니다.
기본은 C++표준에서 자주 쓰이는 전부소문자 형태이네요. 전 Windows API 에서 주로 쓰는 Pascal 스타일을 주로 쓰니 본격적으로 쓰기 시작하면 바꿔놔야 할 것 같습니다

 

 

아래는 특정 코드 패턴에 대해 색으로 표시를 해 주는 기능입니다(보통 정적분석이라고들 부르죠)
목록을 보면 boost를 사실상 표준 라이브러리 취급을 해줘 버리는 느낌이네요. boost 라이브러리 관련 기능도 들어 있습니다.
사실 저도 굉장히 많이 씁니다. 특히 boost::format 같은건. stringstream 은 정말 극혐이라서요.


어쨋든 잘못된 패턴의 코드에 눈에 띄게 색을 입혀준다는것은 코딩 실수를 방지하기 위해 아주 좋은 방법이지요. 몇가지만 테스트 해 보겠습니다.

5.png

 

아래처럼 구형 C스타일의 캐스팅을 사용하면 녹색으로 밑줄이 그어지면서 전구 모양의 아이콘이 생깁니다.
어떤 문제로 전구가 떳는지 알려며, 아래같은 경우는 Use static_cast 를 클릭하면 자동적으로 C++ 스타일의 캐스팅 연산자를 쓰도록 변환됩니다

6.png

 

 

아래처럼 printf(위 메뉴목록을 보시면  알겠지만 boost::format 도 지원 합니다) 의 파라메터가 잘못된것은 빨간줄로 나타납니다.
이 줄 색은 등급을 어떤것으로 해 놓았냐의 문제인데, 기본 옵션에서 format string이 잘못된 것은 error 취급하게 되어 있으므로 빨간줄입니다.11.png

 

잘못된 format string에 커서를 갖다 대면 빨간 전구 아이콘이 뜨고, 클릭하면 %s를 %d로 자동으로 변환 해 줍니다.

12.png

 

의외로 모르는 사람이 많은 부분인데 64bit 정수의 경우 %d로 출력할 수 없고 %lld 를 사용해야 합니다.(gcc의 경우 %I64d를 사용합니다)
이 부분에 대해서도 정확히 처리를 해 주고 있습니다.

20.png

 

한가지 아쉬운것은 error로 세팅을 하더라도 빌드 자체는 문제 없이 진행됩니다.
오류 메세지를 띄워서 빌드를 막아줫으면 좀더 좋지 않았을까 하는 아쉬움이 있습니다

13.png

 

하지만 처음부터 하는게 아니라 프로젝트 중간에 툴을 도입하여 코드를 정리하려고 하면 눈으로 일일히 찾으려면 고생좀 해야 할텐데요...

Next Issue in File 을 클릭하면 이슈를 하나 하나 추적해서 고쳐나갈 수 있습니다.

14.png

아래는 코드를 ReFormatting 할때 사용할 옵션들입니다.
거의 모든 경우의 옵션을 다 지원 합니다... 만 이미 VS2013의 Format 옵션도 충분히 다양해져서 그리 큰 의미가 있어 보이진 않습니다.
 

코드가 어떻게 바뀌는지 미리보기 하는 기능도 VS 자체에서 이미 제공되는 기능입니다.

 

3.png

 

그나마 장점이라면 VS에 내장된 옵션의 불성실한(....) 미리보기 화면과 달리 유저가 실제로 보게 되는것과 같은 코드 색을 입혀준 정도의 장점이 있겠습니다.
옵션도 아주 쬐금 더 다양하구요. 유명한 프리셋을 몇 종류 제공한다는것도 일단 장점이라면 장점입니다(애초에 편의성때문에 사용하는 툴이니까)

21.png

 

Source Reformat 은 영역 선택으로도 가능하고, 파일 전체 역시 가능합니다.
이 역시 원래 VS 내장 기능으로도 제공되던 부분입니다.

10.png

뭐 별로 눈에 띄지 않는 헤더 자동완성입니다.

8.png

 

만약 헤더를 못찾을 경우 붉은 밑줄을 그어 주며, 자신이 어디에서 include를 시도했는지 알려줍니다.

7.png

 

이거 굉장히 맘에 들었던 기능인데... 사용 하지 않는 헤더를 어둡게 처리 해 줍니다.
다른 언어에선 많이들 지원되는 기능인데(주로 VM 언어들에서...) C++ 에서는 쓰는지 안쓰는지 잘 몰라서 그냥 냅둔 경우가 많았습니다.
안그래도 다른 언어에 비해 거지같이 컴파일 느린 C++인데 쓸데없는 헤더를 제거하는것으로 조금이나마 컴파일 속도를 올릴 수 있다면 그것만으로도 유용하겟죠 

9.png

 

제가 굉장히 많이 쓰는 기능중 하나인, 헤더 선언하고 구현부 자동생성하는 기능입니다.

15.png

 

이부분이 Visual Assist 대비 장점이 있는데, VA 는 여러번 클릭하면 컴파일이 되던말던 중복생성 (....) 해 주는 무식한 짓을 하는데 비해, Resharper 의 경우 즉시 아이콘이 navigate 로 바뀝니다.

16.png

 

흔히 사용하는 Extract Method 기능입니다.
뭐 대부분의 툴과 비슷해서 별로 설명할게 없습니다.

17.png

 

Refactoring 기능은 좀 많이 아쉽습니다.
코드가 어떻게 바뀌는지 전혀 미리 보여주지 않습니다. 실수하기전에 체크할수 없고 바뀐 뒤에 한번 더 코드를 눈으로 확인해야합니다.

18.png

 

 

아래 기능은 코드 자동생성 기능인데... 뜬금없이 닷넷용 소스 생성 기능이 들어 있습니다.
문제는 이 글을 쓰기 위해 새로 세팅한 VM위에 달랑 VS2013과 Resharper C++만 설치해 놓은 상태인데도 이게 뜹니다 (....) 절대로 닷넷용 Resharper 가 설치되어 있는 상황이 아닙니다. 심지어 C++/CLI 는 없고 vb.net 과 C#만 있습니다;

4.png

 

 

 

PS. Resharper 는 생각하는 중입니다 (....)

19.png

 

PS2. 가격은 Visual Assist 279달러 Resharper C++ 229달러로 50달러 쌉니다.
가격을 생각하면 선택 해 볼만한 툴중 하나입니다.

 

PS3. 전체적으로 Visual Assist 는 결과가 좀 이상하더라도 일단 빨리 보여주는 쪽으로 개발이 되어있는-0-;; 느낌이 강하게 나는데(코드 분석하는 동안엔 정말 말도 안되는 결과도 가끔 보여주죠....) 이쪽은 확실히 정확한 결과를 보여줍니다. 단지 분석이 좀 느리네요

 

PS4. 사실 치명적인문제는... 베타시절보단 많이 빨라 졋지만 그래도 느립니다.
제가 예전에 작업하던 중대형 프로젝트(프로젝트 크기가 약 25만라인)를 열어 봤는데... 이건 머 코딩이 불가능할 정도입니다. 정말 심각하게 느려요.
사실 전 툴이 느리다고 불평하는 사람한텐 똥컴쓰지 말고 장비좀 좋은거 쓰라고 하는데(특히 맥북에어 쓰면서 느리다고 징징대는놈들한테....) 이건 뭐 답이 안나옵니다.

이클립스랑 IntelliJ 느린건 뭐 애교로 보이는 수준으로 툴이 느려집니다.
컴퓨터를 업그레이드 하려고 해도 제가 저 프로젝틀을 열어봣던 장비가 Intel i7 4770K이 달려있어서.. 더이상 딱히 올릴 방법도 없는 상태구요

 

가장 골때리는건 Visaul Assist 처럼 Enable/Disable 전환이 그리 쉽지 않아서 필요할때만 켜는것도 좀 애매하단 겁니다... 차기 버전에서 속도 개선이 필수적으로 이루어 져야 겠네요. 뭐 중규모 정도의 프로젝트라면 별 문제 없어 보입니다만...

 

일단 어차피 생겼으니 더 써보면서 두번째 글 올려보겠습니다.

TAG •
?

Lyn
조회 수 2725 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

https://www.jetbrains.com/resharper-cpp/

구매 해서 사용해보고 후기 한번 올려 보겠습니다.

 

과연 Visual Assist 를 대체할수 있을까?

?

Lyn
조회 수 9698 추천 수 0 댓글 0
Atachment
첨부 '10'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

nuget이 뭔가 하니... 

java의 maven, ruby의 gem, node.js 의 npm 같은 패키지 저장소입니다. ms가 만든거죠


필요한 라이브러리를 매번 찾아서 세팅하려면 귀찮으니 인터넷에서 받아서 자동설치 하자... 의 개념입니다.
저도 C#으로 개발할 때는 매우 잘 이용하고 있었는데... 멍청하게도 이게 C++을 지원한다는걸 모르고있었습니다.

얼마전 알게된 김에 한번 테스트 해 보았습니다.


모든 스크린샷은 최근에 무료 배포되는 VS2013 Community Edition입니다.


그럼 새 Console 프로젝트를 하나 만들고, 

Project -> Manage Nuget Packages... 를 클릭합니다


1.png



그리고 Serch Online 텍스트박스에 설치하고자 하는 패키지명을 넣습니다.
전 흔히 쓰는 boost로 해 보겠습니다


2.png


VC++ 2013 는 버전으로는 12.0 이므로 boost-vc120 을 선택하여 설치합니다

3.png


install을 누르면 설치되는데 속도는 꽤 빠릅니다.
boost가 5분정도만에 설치 되더군요


4.png


설치가 끝나면 프로젝트에 패키지 파일하나만 달랑 추가됩니다. 깔끔하네요

5.png


그럼 정말 잘 되는지 테스트를 해야겟죠?

boost::shared_array 를 사용한 후 빌드를 해 봤습니다


6.png


깔끔하게 잘 진행 되네요.


그럼 패키지 파일들은 어디에 저장 되는지 궁금해 지는데,

솔루션 폴더(프로젝트가 아님!) 내의 package 폴더에 저장됩니다


7.png



그런데 이상한점이 있는데, 프로젝트 옵션 어디에도 저 Path에서 lib나 include 를 하고 있지 않습니다.
그럼 대체 어떻게 include 와 링크가 성공하는걸까요?

9.png


해답은 프로젝트파일에 있습니다.

ExtensionTargets 을 추가해서 빌드 targets 파일을 추가 해 주는거죠

10.png


그래서 프로젝트에 파일이 등록되어 있지 않아도 정상적으로 include 와 link 가 가능해 집니다.


PS. 다른 라이브러리는 몰라도 boost는 nuget 안쓰는게 좋을지도...

5G 가 프로젝트 생성될때마다 추가되면 (.....)


#본격_SSD_용량_줄어드는_파일.jpg

8.png


TAG •
?

Lyn
조회 수 3651 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

Devpia 에 질문 올라온김에 정리 해 두는데


크게 특별한 것이 아니라 ... 

http://www.jiniya.net/tt/788 여기 있는 내용 그대로다.
혹시 링크 깨졋으면 http://lunapiece.net/Article/27343 여길 봐라


하면안되는짓이 같은 이유는 InitInstance / ExitInstance  는 결국 DllMain 의 Reason 에 따라 분기하는 함수이기 때문


관련 자료는 아래 링크에서 찾을 수 있다 
https://msdn.microsoft.com/ko-kr/library/66f127e5.aspx


"MFC에서 제공하는 DllMain 함수는 DLL이 로드될 때 InitInstance를 호출하고, DLL이 언로드되기 전에 ExitInstance를 호출합니다"

TAG •
?

Lyn
조회 수 5322 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

업데이트 하다가 설정 꼬여서 오밤중에 쇼를 했구나 (...)


왜이리 웹서버 설정이 어려운거야...





근데 하고 나니 뭔가 좀 빨라진 느낌이 든...다?

?

Lyn
조회 수 1978 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

오오 멋지다...

안드로이드 허니콤 이후로는 블록킹 되는 네트워크 함수를 UI Thread에서 호출하면 android.os.NetworkOnMainThreadException 가 발생한다.

병신같은 코드를 양산하는 개발자들을 막기위해 플랫폼 차원에서 강제한것.



테스트 코드를 만들 때 조차 완전한 형태의 코드를 만들어야 해서 귀찮지만, 평균적인 App의 퀄리티를 올리기 위한 아주 좋은 선택이었다고 생각한다.
MS도 이런걸 해 줫으면 좋았을텐데.
TAG •
?

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13