2011/08/27 18:42
SQLite 를 좀 수정해서 쓸 일이 있어서 repository를 찾아보니 fossil 이라는 듣도못한 잡 DVCS를 쓰고 있었다.
SQLite 개발자가 직접 만든 거 같은데 뭔가 특이하긴 하다. 최근엔 UnQL이란 NoSQL계열 DBMS 도 만드는거 같은데 backend 를 죄다 직접 만들 셈인가 보다.
어쨌거나 Fossil을 쓰려면 미리 만들어진 binary를 쓰거나 직접 컴파일을 해야하는데 직접 컴파일을 할때 2011-07-13 일자 1.18 버젼을 받아서 configure 명령을 치면 아래와 같은 에러가 난다. 이는 auto.def 파일의 문법이 잘못되서 그렇다. 다음과 같은 patch 파일을 만들어 patch한다. 아래를 auto-def-missing-bracket.patch 로 저장한다. 또는 간단한 문법 에러므로 직접 101번째 줄에 ] 가 빠진걸 넣어줘도 된다. 다음으로 make install을 하면 옮겨야할 곳의 디렉토리를 생성 안하고 mv 명령을 때리기 때문에 에러가 난다. --prefix 로 /usr/local/stow/fossil 이었을 경우 /usr/local/stow로 이동하여 fossil 과 fossil/bin 을 생성해준다.
SQLite 개발자가 직접 만든 거 같은데 뭔가 특이하긴 하다. 최근엔 UnQL이란 NoSQL계열 DBMS 도 만드는거 같은데 backend 를 죄다 직접 만들 셈인가 보다.
어쨌거나 Fossil을 쓰려면 미리 만들어진 binary를 쓰거나 직접 컴파일을 해야하는데 직접 컴파일을 할때 2011-07-13 일자 1.18 버젼을 받아서 configure 명령을 치면 아래와 같은 에러가 난다. 이는 auto.def 파일의 문법이 잘못되서 그렇다. 다음과 같은 patch 파일을 만들어 patch한다. 아래를 auto-def-missing-bracket.patch 로 저장한다. 또는 간단한 문법 에러므로 직접 101번째 줄에 ] 가 빠진걸 넣어줘도 된다. 다음으로 make install을 하면 옮겨야할 곳의 디렉토리를 생성 안하고 mv 명령을 때리기 때문에 에러가 난다. --prefix 로 /usr/local/stow/fossil 이었을 경우 /usr/local/stow로 이동하여 fossil 과 fossil/bin 을 생성해준다.
2011/08/06 02:39
Visual C++ 10은 기본적으로 ASCII 인코딩으로 파일을 만든다. (VC#은 기본적으로 유니코드 파일로 생성된다는거 같다)
근데 이게 git와 함께 쓰이면 gitweb 등에서 한글이 깨져보이는 현상이 발생하는데 이는 gitweb이 UTF-8 인코딩을 기본 인코딩으로 보여주기때문이다.
이를 위해 소스파일들의 인코딩을 변경해줘야되는데 메뉴의 File -> Advanced Save Options에서 Encoding을 UTF-8로 변경해야하는 번거로움을 감수해야한다.
프로그래머의 힘은 자동화다. 언제까지 이 노가다를 할텐가?
자동화 방법은 다음과 같다.
매크로 에디터에 들어가 EnviromentEvents에서 코드 맨 윗부분의 Module들을 Imports 하는 부분에
위와 같이 System.IO 모듈을 포함시키고 Automatically generated code, do not modify 다음에 다음 코드를 붙여넣고 저장한다.
추가내용2: 클래스 템플릿을 따로 만드는 방법도 있다. 이건 좀 있다가 해보고 적어야지 [...]
P.S. 그건 그렇고 코드를 이쁘게 보여줘야되는데.. ( --)
근데 이게 git와 함께 쓰이면 gitweb 등에서 한글이 깨져보이는 현상이 발생하는데 이는 gitweb이 UTF-8 인코딩을 기본 인코딩으로 보여주기때문이다.
이를 위해 소스파일들의 인코딩을 변경해줘야되는데 메뉴의 File -> Advanced Save Options에서 Encoding을 UTF-8로 변경해야하는 번거로움을 감수해야한다.
프로그래머의 힘은 자동화다. 언제까지 이 노가다를 할텐가?
자동화 방법은 다음과 같다.
매크로 에디터에 들어가 EnviromentEvents에서 코드 맨 윗부분의 Module들을 Imports 하는 부분에
Option Strict OffOption Explicit OffImports SystemImports EnvDTEImports EnvDTE80Imports EnvDTE90Imports EnvDTE90aImports EnvDTE100
Imports System.Diagnostics '여기까지 기존 모듈Imports System.IO
Sub MakeUTF8File(ByVal path As String)Dim input As New FileStream(path, FileMode.Open)
'Check BOMDim isUTF8 As Boolean = (input.ReadByte = &HEF And input.ReadByte = &HBB And input.ReadByte = &HBF)input.Close()
If (Not isUTF8) ThenDim s As Strings = File.ReadAllText(path, System.Text.Encoding.Default)File.WriteAllText(path, s, System.Text.Encoding.UTF8)End IfEnd Sub
Public Sub DocumentEvents_DocumentSaved(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentSavedDim path As String = Document.FullNameMakeUTF8File(path)End Sub
'이 핸들러는 왠만하면 빼는게 좋다. 라이브러리 파일들을 디버깅 차원에서 열때 자동으로 바꿔버리면 조금 곤란할듯Public Sub DocumentEvents_DocumentOpening(ByVal path As String, ByVal flag As Boolean) Handles DocumentEvents.DocumentOpeningMakeUTF8File(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 파일이 생성된다.
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. 그건 그렇고 코드를 이쁘게 보여줘야되는데.. ( --)
2011/07/17 03:05
2011/06/06 00:45
2011/05/18 13:57
Visual Studio 2010의 프로젝트 파일인 vcxproj를 CMake로 변환하는 스크립트를 만들고 있습니다.
개인적으로 윈도우에서 만들어서 돌리고 있던 서비스를 리눅스에서 돌려보고자 만드는건데...
만들다가 집에서 돌리고 있던 리눅스 서버를 업그레이드후 윈도우와 리눅스를 둘다 띄어놓는 방향으로 가게되서 쓸모없게 되버렸... o<-<
하지만 일단 계속 업데이트는 하고 있습니다. (제대로 동작하리란 보장은 없습니다 -_-;)
perl 기반으로 만들어져있으며 윈도우에서 쓰려면 StrawberryPerl이 필요합니다.
또한 몇개의 Perl module이 필요한데 프로젝트의 README 파일에 명시해놨으니 CPAN을 이용하여 설치하면 됩니다.
프로젝트 페이지: https://github.com/ainvyu/vcxproj2cmake
p.s: 근데 왠지 내 주변에 Win32 개발자들은 다들 python 유저라 perl 로 만들어놓은건 아무도 안쓸꺼 같다 [...]
개인적으로 윈도우에서 만들어서 돌리고 있던 서비스를 리눅스에서 돌려보고자 만드는건데...
만들다가 집에서 돌리고 있던 리눅스 서버를 업그레이드후 윈도우와 리눅스를 둘다 띄어놓는 방향으로 가게되서 쓸모없게 되버렸... o<-<
하지만 일단 계속 업데이트는 하고 있습니다. (제대로 동작하리란 보장은 없습니다 -_-;)
perl 기반으로 만들어져있으며 윈도우에서 쓰려면 StrawberryPerl이 필요합니다.
또한 몇개의 Perl module이 필요한데 프로젝트의 README 파일에 명시해놨으니 CPAN을 이용하여 설치하면 됩니다.
프로젝트 페이지: https://github.com/ainvyu/vcxproj2cmake
p.s: 근데 왠지 내 주변에 Win32 개발자들은 다들 python 유저라 perl 로 만들어놓은건 아무도 안쓸꺼 같다 [...]
2011/05/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
2011/05/08 21:07
UTF-8 경로를 넘기면 내부적으로 codecvt를 이용해 인코딩을 바꾸는듯하다.
그래서 boost::filesystem::basename 같은 것(내부적으로 b::f::path를 쓴다)을 쓰거나 path::filename, path::stem 같은 메소드를 썼을 때 반환하는 값이 UTF-8 문자열이 아니다. 조심하자. 자세한 내용은 좀 분석해서 쓰기로..
그래서 boost::filesystem::basename 같은 것(내부적으로 b::f::path를 쓴다)을 쓰거나 path::filename, path::stem 같은 메소드를 썼을 때 반환하는 값이 UTF-8 문자열이 아니다. 조심하자. 자세한 내용은 좀 분석해서 쓰기로..
2010/06/09 09:48
저만 그런지 모르겠지만 VS2010을 켜놓고 좀 지나면 인텔리센스를 갱신할때 쓰는 것으로 보이는 vcpkgsrv.exe이 CPU 점유율을 잡아먹으면서 하드를 무진장 긁어 병목현상이 발생합니다. 본체의 빨간램프가 켜지면 다른 프로그램들도 함께 작동을 멈춰버려서 한동안 아무것도 할수없더군요. orz...
게다가 이것때문에 캐쉬들을 뒤집어엎어놔서 그런지 빨간램프가 꺼져도 컴퓨터가 전체적으로 느려집니다.
이전 버젼에는 안그랬는데 VS2010부터 왜그럴까..는 잘모르겠지만 이를 임시적으로 해결하는 방법으로 인텔리센스 생성파일을 램디스크에 생성하는 방법이 있습니다.
램디스크는 인터넷에 찾아보면 프리웨어로 된것들이 있으니 그거쓰시면 되구요. ^^;
설정법은 다음과 같습니다.1. 메뉴바의 Tools -> Option -> Text Editor -> C/C++ -> Advanced
2. IntelliSense란의 "Always Use Fallback Location"을 True.
3. "Fallback location"에 생성될 위치 지정을 램디스크로.. (ex: 램디스크 드라이브가 R 이고 IS폴더에 저장하고싶으면 -> R:\IS)
하루동안 써본결과 이렇게하면 느려지는 현상도 사라지고 램디스크에 생성하니 체감하진 못했지만 어느정도 속도도 빨라지겠죠. :)
P.S: 이게 램디스크에 따라 안되는 현상이 있는거 같습니다. QSoft RamDisk 계열은 안되는게 확인됬고 Superspeed Ramdisk 는 됩니다.
2010/04/27 10:29
VS2010부터는 WPF Renderer의 영향으로 Bitmap 타입 Font를 못쓴다고 끄적거린바가 있습니다.
그래서 어쩔 수 없이 기존에 잘쓰던 Fixedsys폰트를 버리고 다른걸 쓸까 생각했지만 역시 버릴 수 없어서 (Fixedsys는 진리잖아요!) Truetype Fixedsys를 구해서 적용시켰습니다. 근데....
으아니! 이게 뭡니까.
WPF Renderer의 특징인듯 한데. 원래 Cleartype이 안먹는 폰트인 Fixedsys가 VS2010 의 경우 적용이 되있는 것을 볼수 있습니다. 이는 딱히 Fixedsys에 한정된 문제가 아니고 다른 몇몇 폰트에서도 이런 현상을 발견할 수 있습니다.
이건 뭐 3D 안경쓰고 보면 입체로 보일 기세 ㅜㅜ 오래보면 눈아파뒤질듯한데. orz
Cleartype을 안먹히게 하는 방법이 있을거 같아 인터넷을 찾아봐도 딱히 해결책은 보이지 않더군요. 외국쪽 포럼쪽에서도 '글자가 흐려!! 흐리다구!!' 하면서 투덜대고 있는 글이 종종 보이지만 이곳에도 별로 답은 없는듯.. 모니터 설정에서 Cleartype을 조정하라는 소리도 있긴한데 이건 아닌거 같고...
아아.. VS2010으로 넘어가기 힘드네요 orz..
2010/04/24 17:07
1>Linking...
1>CVTRES : fatal error CVT1100: duplicate resource. type:MANIFEST, name:1, language:0x0409
1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
위 에러가 났을때 발견한 두가지 해법.
1.
I dealt with this error in a Code Project sample by commenting out the resource file manifest. Turning off the embedded manifest in the project settings allowed the project to build, but at run time it was unable to find ATL80.dll.
Commenting the line
1 RT_MANIFEST "res\\TestApp.manifest"
그냥 간단히 말해 해당 프로젝트의 .rc 파일에 RT_MANIFEST 가 들어가있는 행을 찾아 주석처리한다.
2.
Project property -> Manifest Tool -> Input and Output -> Embed Manifest : yes -> no