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를 지운다. 안그러면 접속시 지우라는 경고가 뜬다.
아래 명령을 내리면 된다.
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
명령을 내리면 된다.
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 을 생성해준다.
근데 이게 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
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. 그건 그렇고 코드를 이쁘게 보여줘야되는데.. ( --)
개인적으로 윈도우에서 만들어서 돌리고 있던 서비스를 리눅스에서 돌려보고자 만드는건데...
만들다가 집에서 돌리고 있던 리눅스 서버를 업그레이드후 윈도우와 리눅스를 둘다 띄어놓는 방향으로 가게되서 쓸모없게 되버렸... o<-<
하지만 일단 계속 업데이트는 하고 있습니다. (제대로 동작하리란 보장은 없습니다 -_-;)
perl 기반으로 만들어져있으며 윈도우에서 쓰려면 StrawberryPerl이 필요합니다.
또한 몇개의 Perl module이 필요한데 프로젝트의 README 파일에 명시해놨으니 CPAN을 이용하여 설치하면 됩니다.
프로젝트 페이지: https://github.com/ainvyu/vcxproj2cmake
p.s: 근데 왠지 내 주변에 Win32 개발자들은 다들 python 유저라 perl 로 만들어놓은건 아무도 안쓸꺼 같다 [...]
아직 바꾸는 중...
미루고 미루던 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
그래서 boost::filesystem::basename 같은 것(내부적으로 b::f::path를 쓴다)을 쓰거나 path::filename, path::stem 같은 메소드를 썼을 때 반환하는 값이 UTF-8 문자열이 아니다. 조심하자. 자세한 내용은 좀 분석해서 쓰기로..