2012. 10. 24. 01:58


VirtualBox 설치

저장소를 추가한다. /etc/apt/sources.list를 열어 다음을 추가한다.

deb http://download.virtualbox.org/virtualbox/debian precise contrib

VirtualBox 저장소의 APT key를 추가한다.

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -

소스 리스트를 업데이트한다.

sudo apt-get update

virtualbox 를 설치한다.

sudo apt-get install virtualbox-4.2

kernel module 올리기 위해 dkms를 설치한다.

sudo apt-get install dkms

vbox 유저계정과 vboxusers 그룹을 추가한다.

sudo useradd -g vboxusers vbox
sudo passwd vbox
sudo mkdir /home/vbox
sudo chown vbox:vboxusers /home/vbox

phpvirtualbox 설치

http://code.google.com/p/phpvirtualbox/downloads/list

에 VirtualBox 버젼에 맞는 phpvirtualbox 소스를 다운받는다.

다운 받은 후 /var/www 루트에 압축을 푼다. (/var/www/phpvirtualbox)

config.php-example를 config.php로 복사후 열어 계정정보를 올바르게 입력한다.

/* Username / Password for system user that runs VirtualBox */
var $username = 'vbox';
var $password = 'password';

/* SOAP URL of vboxwebsrv (not phpVirtualBox's URL) */
var $location = 'http://127.0.0.1:18083/';

/etc/default/virtualbox 파일을 열어 다음을 추가한다.

VBOXUSER=vbox
VBOXWEB_USER=vbox
VBOXWEB_HOST=127.0.0.1
VBOXWEB_PORT=18083
LOGFILE=/var/log/vbox.log
VBOXWEB_LOGFILE=/var/log/vboxwebsrv.log

vboxweb-service 를 시작한다. 위치는 /etc/init.d/vboxweb-service 에 있다.

sudo /etc/init.d/vboxweb-service start

이제 http:///phpvirtualbox 로 접속이 가능할 것이다.

기본 username과 password는 다음과 같다.

ID: admin
Pass: admin

Oracle extension pack 설치

extension pack을 설치하기 위해 virtualbox 버젼을 알아낸다.

$ virtualbox --help
Oracle VM VirtualBox Manager 4.2.2
...

위에서처럼 4.2.2면 http://download.virtualbox.org/virtualbox/4.2.2 경로로 들어가보면 각종 파일들이 존재한다. 해당 파일중 원하는 파일을 받아 설치하면 된다.

여기서는 Oracle extension pack을 받을 것이므로 아래 명령을 내리고 설치한다.

$ wget http://download.virtualbox.org/virtualbox/4.2.2/Oracle_VM_VirtualBox_Extension_Pack-4.2.2-81494.vbox-extpack 
$ sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.2.2-81494.vbox-extpack

이제 컴퓨터를 재부팅 한다.

재부팅이 끝나면 vboxweb-service를 부팅시 시작하도록 하기위해 다음 명령어를 내린다.

sudo update-rc.d vboxweb-service defaults

이제 설치가 끝났다.

virtualbox guest addons 설치

guest vm을 생성후 생성한 vm에서 guest addons를 설치할 필요가 있다.

http://download.virtualbox.org/virtualbox/ 에서 버젼에 맞는 VBoxGuestAdditions를 받는다.

예를들어 VirtualBox 버젼이 4.2.2이면 아래와 같다.

http://download.virtualbox.org/virtualbox/4.2.2/VBoxGuestAdditions_4.2.2.iso

이제 다운 받은 iso를 마운트한다.

mount <iso location> <mount location> -t iso9660 -o loop

VBoxLinuxAdditions을 실행한다.

sudo ./VBoxLinuxAdditions.run

그리고 다음을 실행할 필요가 있다.

sudo apt-get install build-essential xorg linux-headers-$(uname -r)

원격 설정

설정시 각 vm에 윈도우 터미널로 접속이 가능하다. 이미지 이름과 원하는 포트를 설정한다.

# vboxmanage modifyvm VMNAME --vrde on
# vboxmanage modifyvm VMNAME --vrdeport PORTNUMBER

또는 phpvirtualbox에서 Settings 버튼을 누르면 해당 항목이 있다.

설정이 끝나면 다음주소로 원격 데스크톱 연결을 한다.

VM서버아이피주소:PORTNUMBER

방화벽이 설정되어있다면 해당 포트를 꼭 허용시켜야한다.

$ sudo ufw allow PORTNUMBER

phpvirtualbox 비밀번호 변경

접속후 File -> Change password 메뉴를 통해 변경한다.

phpvirtualbox 비밀번호 복구

비밀번호 변경 후 잊어버렸을 때 phpvirtualbox 를 설치한 경로 (/var/www/phpvirtualbox) 에 가서 recovery.php-disabled 를 recovery.php 로 복사후 다음 주소로 접속하면 비밀번호가 초기화된다.

http://<domainname>/phpvirtualbox/recovery.php

초기화가 완료됬으면 복사했던 recovery.php를 지운다. 안그러면 접속시 지우라는 경고가 뜬다.

Posted by envi
2012. 8. 23. 00:43

아래 명령을 내리면 된다.

git submodule foreach "git checkout master; git pull origin master"

편하게 쓰고싶을 경우 다음과 명령을 내려 .gitconfig에 alias를 추가시킨다.

git config --global alias.smupdate 'submodule foreach "git checkout master; git pull origin master"'

또는 ~/.gitconfig를 열어 alias 항목에 다음을 추가한다.

smupdate = submodule foreach "git checkout master; git pull origin master"

그리고 git smupdate 명령을 내리면 된다.

Posted by envi
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. 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 로 만들어놓은건 아무도 안쓸꺼 같다 [...]
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. 6. 9. 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 는 됩니다.
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
2010. 4. 2. 10:24

지켜주지 못해 미안해 Emacs


Visual Studio 2010 에는 Emacs emulation 제공되지 않을수도 있다는 을 봤다.
이유인즉 WPF 로 재작성되면서 해당 기능에 대한 구현되지 않았다는건데...
평소 emacs key binding을 애용해오던 나에겐 거짓말이라고 믿고싶은 상황이다. (다른 곳엔 emacs key emulation을 살려달라는(?) 투표도 진행되고 있다. (투표가 맞긴하나?))

아무튼 사람들의 불평에 대한 MS의 답변을 보면 3rd party에게 구현을 맡길 수 있도록 할수도 있덴다. 왜 지들이 구현 안하고...
뭐.. 한편으론 이 상황이 좀 반갑기도한데 왜냐면 기존 emacs emulation은 매우 드럽기때문이다. -_-;;
기존 기능은 이건 emacs 같기도하고 visual studio 같기도한 애매한 emulation이라 상당수의 기능이 원래 동작과는 다르게 동작한다.
그래서 viemu(vi emulation) 처럼 3rd party 쪽에서 구현하면 좀더 완성도가 높게 나오지 않을까 싶기도하고..

어쨌거나 저 소식을 듣고 emacs key binding을 버리고 기본 키보드 세팅으로 돌아가려고 시도를 해봤는데.. 이미 늦은거 같다. emacs는 마약이다 orz (사실 vim은 viemu 같은 것도 있고 VS2010 도 지원해준다고하니 vim에 적응해서 넘어가보려고 시도중에 있긴한데 -_-; 아무래도 글렀다.) ※1

MS가 구현할 생각이 없다면 재빨리 다른 3rd party에서 add-on을 만들어줬으면 좋겠다... 아니.. 제발, 반드시, 빨리 만들어줘-_- 비싸도 사줄테니까말야. 화이팅.



※1. 기본 키보드 세팅을 사용하지 않는 이유로는 키보드에서 손을 많이 움직이는걸 싫어한다. emacs 키배치에 맛들리니 코딩할때 화살표키나 PageUp, PageDown 누르러 손을 이동하는 것도 귀찮..
Posted by envi
2009. 8. 20. 09:46
기존에 오프라인에서 돌아가는 무료 마인드맵 툴로 FreeMind를 쓰고있었는데.. XMind 라는 Eclipse Framework 기반으로 만들어진 툴을 알게 되었습니다.

몇시간 사용해본 결과 파악된 장단점은


장점:
1. FreeMind 보다 비교적 화려하다 (Mindmanager 같은 상용툴을 쓰는 기분..)
2. 웹상에 업로드 기능 제공
3. Theme 기능 (배경색을 파일 별로 바꿀 수 있어서 너무 좋다;;)
4. Boundary나 Summary 같은 기능으로 노드 묶음을 표현할 수있어 정돈되어 보인다. (FreeMind에는 Cloud 같은 기능이 있긴하나 적용시 더 산만해보인다;;)

단점:
1. 느리다. 노드가 많아지면 화면 이동시 버벅거린다. 노드 수에 비례해 저장 속도도 꽤 느리다.
2. 노드 배치 형태를 방사형 으로 할시 노드의 좌우측 위치를 사용자가 맘대로 못정한다. (좀 더 써보고 판단해야할듯..)

그 외:
1. 느리긴해도 메모리 사용량은 비슷한거 같습니다.
2. 저장 파일 형태는 FreeMind 가 XML 형식으로 저장되는 것에 반해 XMind는 binary로 저장되어 확장성(?)은 FreeMind 쪽이 더 나은거 같구요. (물론 XMind 에서 Export로 .mm 으로 변환하는 방법도 있긴합니다만..)
3. XMind의 아이콘들은 마인드맵으로 TODO 리스트를 관리하는 제게 최적화(?) 되있는듯. (아이콘으로 작업 진행 상황을 표현가능함..)

일단 러프하게 써놓고 계속 써보면서 갱신할 예정입니다. ;)
Posted by envi