2011. 8. 6. 02:39
Visual C++ 10은 기본적으로 ASCII 인코딩으로 파일을 만든다. (VC#은 기본적으로 유니코드 파일로 생성된다는거 같다)

근데 이게 git와 함께 쓰이면 gitweb 등에서 한글이 깨져보이는 현상이 발생하는데 이는 gitweb이 UTF-8 인코딩을 기본 인코딩으로 보여주기때문이다.

이를 위해 소스파일들의 인코딩을 변경해줘야되는데 메뉴의 File -> Advanced Save Options에서 Encoding을 UTF-8로 변경해야하는 번거로움을 감수해야한다.

그만좀 보고싶다.


프로그래머의 힘은 자동화다. 언제까지 이 노가다를 할텐가?
자동화 방법은 다음과 같다.

매크로 에디터에 들어가 EnviromentEvents에서 코드 맨 윗부분의 Module들을 Imports 하는 부분에
Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics '여기까지 기존 모듈
Imports System.IO 
위와 같이 System.IO 모듈을 포함시키고 Automatically generated code, do not modify 다음에 다음 코드를 붙여넣고 저장한다.

Sub MakeUTF8File(ByVal path As String)
    Dim input As New FileStream(path, FileMode.Open)

    'Check BOM
    Dim isUTF8 As Boolean = (input.ReadByte = &HEF And input.ReadByte = &HBB And input.ReadByte = &HBF)
    input.Close()

    If (Not isUTF8) Then
        Dim s As String
        s = File.ReadAllText(path, System.Text.Encoding.Default)
        File.WriteAllText(path, s, System.Text.Encoding.UTF8)
    End If
End Sub

Public Sub DocumentEvents_DocumentSaved(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentSaved
    Dim path As String = Document.FullName
    MakeUTF8File(path)
End Sub

'이 핸들러는 왠만하면 빼는게 좋다. 라이브러리 파일들을 디버깅 차원에서 열때 자동으로 바꿔버리면 조금 곤란할듯
Public Sub DocumentEvents_DocumentOpening(ByVal path As String, ByVal flag As Boolean) Handles DocumentEvents.DocumentOpening
    MakeUTF8File(path)
End Sub 
이제 다음과 같은 상황에서 파일이 UTF-8 인코딩으로 자동변환이 된다.

1. 파일을 열때
2. 파일을 생성 (생성할때 자동으로 열리니까)
3. 파일을 저장할때

이제 UTF-8 BOM과 함께하는(?) 코딩을 하면 된다.

추가내용1: 
@waan26
님이 알려주신 새파일 생성시 UTF-8을 적용하는 좀 더 좋은 방법이 있다. (C++ Class 생성에는 안먹힌다)
위 방법을 사용시 새 파일을 생성하면 파일 변환이 변환됬다는 메세지 박스가 무조건 뜨게 되는데 (파일 로딩 후에 변환을 시도하는거 같다)
새 파일 생성시 무조건 UTF-8 파일을 생성하는 좀 더 깔끔한 해법으로 다음과 같은 방법이 있다.

1. Visual Studio 설치된 위치(보통 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcprojectitems)에 간다.
2. hfile.h, newc++file.cpp 과 같은 템플릿 파일의 인코딩을 UTF-8로 변경한다
3. 그 뒤로는 항상 UTF-8 파일이 생성된다.

추가내용2:  클래스 템플릿을 따로 만드는 방법도 있다. 이건 좀 있다가 해보고 적어야지 [...]

P.S. 그건 그렇고 코드를 이쁘게 보여줘야되는데.. ( --) 
Posted by envi
2011. 5. 13. 16:20

아직 바꾸는 중...


 미루고 미루던 Visual studio의 색상을 어두운 색으로 바꾸는 작업을 하고 있다. 역시 어두운 색이 눈에 편하다.

바꾸는 방법은 Visual studio의 메뉴에서 Tools > Options > Environment > Fonts and Colors 에서 
당분간 작업을 할걸 포기하고(?) 일일이 바꿔주는 바꿔주는 노가다를 하면 된다 [...]
본인이 일일이 바꾸기 귀찮다면 Studio Styles 같은 곳에 가서 만들어져있는 것을 다운 받아도 좋다.

그리고 Text editor 영역을 제외한 영역의 색상은 기본 설정에선 못바꾸고 Visual Studio Color Theme Editor라는 Extension을 설치해야 가능하다.
설치후 메뉴에 Theme 라는 항목이 생기는데 Theme > Customize Colors 를 누르면 다음과 같이 화면이 나오며 이 화면에서 'New Theme' 를 누르고 새 테마를 생성하여 색상을 바꾸면 된다.

본인이 만약 일일이 바꾸기 귀찮고 나도 그냥 어두운 색의 테마를 쓰고 싶다! 라면 다음과 같이 Emerald 테마를 베이스로 새 테마를 생성하고


컬러 설정 화면에 있는 모든 항목을 선택 후 'Modify Hue/Saturation/Lightness' 에서 다음과 같이 Saturation(채도)를 최하로 주고 다른 항목들을 적절하게 줄여주면 된다.
 



이제 다른건 다 됬는데 Solution Explorer와 Scroll bar만 안바꼈다. 대체 어디서 바꿔야되지?
결론만 말하면 Visual studio 2010세팅으론 바꾸는게 불가능하다. Solution Explorer 계열의 Pane들은 WPF base가 아닌 Native Win32 controls를 사용하기에 WPF인 Visual studio와의 렌더러의 주체가 달라 고칠 수 없다 (단 Win32 control들은 윈도우 테마를 따라가므로 테마를 고치면 된다). 또한 Scroll bar는 기본 스타일만을 따라가므로 역시 고칠 수 없다고 한다.

만약
 나는 Solution Explorer 의 색깔이라도 어떻게든 고치고 싶다! 라면 Productivity Power Tools를 쓰는 것을 추천한다. 이 Extension을 설치하면 기존 Solution Explorer에 기능을 추가한 Solution Navigator라는 Pane이 하나 생기는데 이것은 
Visual Studio Color Theme Editor 의 설정을 따라가므로 통일성을 가질 수 있다.










참조:
Is it possilbe to override hardcoded styles?
Changing Visual Studio’s Color Palette
Posted by envi
2010. 4. 27. 10:29
VS2010부터는 WPF Renderer의 영향으로 Bitmap 타입 Font를 못쓴다고 끄적거린바가 있습니다.
그래서 어쩔 수 없이 기존에 잘쓰던 Fixedsys폰트를 버리고 다른걸 쓸까 생각했지만 역시 버릴 수 없어서 (Fixedsys는 진리잖아요!) Truetype Fixedsys를 구해서 적용시켰습니다. 근데....

으아니! 이게 뭡니까.

같은 컴에서 위가 VS2008, 아래가 VS2010 에서 Truetype Fixedsys를 적용하여 10배 확대


WPF Renderer의 특징인듯 한데. 원래 Cleartype이 안먹는 폰트인 Fixedsys가 VS2010 의 경우 적용이 되있는 것을 볼수 있습니다. 이는 딱히 Fixedsys에 한정된 문제가 아니고 다른 몇몇 폰트에서도 이런 현상을 발견할 수 있습니다.
이건 뭐 3D 안경쓰고 보면 입체로 보일 기세 ㅜㅜ 오래보면 눈아파뒤질듯한데. orz

Cleartype을 안먹히게 하는 방법이 있을거 같아 인터넷을 찾아봐도 딱히 해결책은 보이지 않더군요. 외국쪽 포럼쪽에서도 '글자가 흐려!! 흐리다구!!' 하면서 투덜대고 있는 글이 종종 보이지만 이곳에도 별로 답은 없는듯.. 모니터 설정에서 Cleartype을 조정하라는 소리도 있긴한데 이건 아닌거 같고...

아아.. VS2010으로 넘어가기 힘드네요 orz..
Posted by envi
2010. 4. 21. 09:45
...잠깐잠깐 써보면서 파악한거 걍 메모삼아 낙서..

추가된거
1. C++0x
2. Parallel Patterns Library(PPL)
3. MFC Class Wizard 부활.
4. 코드 창을 다른 모니터로 이동가능. (WPF 로 작성되면서 얻은 이득인듯)

향상된거
1. Intelisense
(1) 좀 빨라지고 똑똑해졌다고하는데... 많이 안써봐서 모르겠다. 좀 이쁘게 뜨긴하는듯.
(2) .ncb -> .sdf
(3) ipch 폴더 생성됨. 실시간으로 Error List에 에러 뜨는거때문에 생긴걸까?

변경된거
1. MSDN Library -> Help Library Agent
2. Tools>Options>VC++Directories -> Project user property sheet>VC++ Directories (즉, 전역 디렉토리 설정이 불가능. 충돌이 줄어드니 좋아진거 같기도하고 아닌거 같기도하고... 근데 프로젝트 별로 설정하면 프로젝트 파일에 기록이 남나? 그럼 협업시엔 어쩔? 확인해봐야지..)
3. 라이브러리 링크시 프로젝트 디펜던시를 걸어도 링크가 안된다고 한다. 이제는 Common Properties>Framework and References 에서 설정해야 링크가 된다고한다. (whiteberry.egloos.com/3233616)

불가능해진거
1. Emacs keyscheme (WPF로 다시 작성하면서 우선순위에서 빠졌다고함)
2. Editor 폰트로 Bitmap, Raster Font 선택불가. (WPF Renderer에서 Truetype font만 지원함.. 지못미 Fixedsys..)


결론: 원수같은 WPF.. orz
Posted by envi