'Technical Stubs/etc'에 해당되는 글 3건

  1. 2014.09.03 티스토리 블로그에 소스코드 넣기 #1 Syntax Highlighter
  2. 2010.02.01 VirtualBox 파티션 확장 하기
  3. 2009.07.20 Kubuntu에서 VirtualBox OSE 3.0.2 build 하기
2014.09.03 10:43

티스토리 블로그에 소스코드 넣기 #1 Syntax Highlighter

티스토리 블로그를 사용하다 보면 소스 코드를 올려야 할 경우가 종종 발생한다. 코드야 첨부 파일로 업로드 하는 경우도 있지만, 블로그 내용에 포함 시키려면 어지간하지 귀찮아진다.

간략하게는 Courier 계열의 Font만 사용하기도 하지만 이쁘게 보이지도 않고, 결국에는 별도 Editor 화면을 캡쳐해서 첨부하기도 하는데 그것도 이미지로 첨부하는 거라 꽤 귀찮은 일이다.


다른 블로그에서는 어떻게 제공하는가 봤더니 꽤 다양한 방법을 제시하고 있었고 그 중 다음 두 가지로 압축되었다.


1. HightlightJS - https://highlightjs.org

- 장점 : 깔끔한 UI, CDN 배포, Apple Swift 지원

- 단점 : Line Number 표시하려면 별도 Branch에서 받아야 함


2. Syntax Highlighter - http://alexgorbatchev.com/SyntaxHighlighter

- 장점 : Line Number 표시, 다양한 설정

- 단점 : 기본 Theme 구림, CDN 없음 (홈페이지에서 배포하고 있으나 PoC용임)


일단, 사용법은 둘 다 비슷하지만, 일단은 Syntax Highligter를 먼저 선택해 보았다.


<link href="http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css" rel="stylesheet" type="text/css" />

<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js" type="text/javascript"></script>

<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shAutoloader.js" type="text/javascript"></script>


그리고 body의 제일 마지막 부분에 다음과 같은 코드를 추가한다.


<script type="text/javascript">

SyntaxHighlighter.defaults.toolbar = false;

SyntaxHighlighter.all()

</script>


다음은 필요한 Hightlight를 할 Brush를 추가해야하는데 현재 버젼 (3.0.83)에서 지원하는 Brush 종류는 꽤 다양하다. 일단은 JavaScript만 먼저 테스트를 해 보자.


JavaScript에 대한 Brush는 shBrushJScript.js 이므로 다음과 같이 추가한다.

<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js" type="text/javascript"></script> 


다른 언어에 대한 Brush는 다음 링크를 참고 한다.


http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/


Sample Code는 <pre><code>로 담으면 자동으로 언어를 인식한다. 만약 제대로 동작하지 않는다면 <code> 태그에 class attribute로 해당 코드의 언어 이름을 넣어준다. 예를 들면 다음과 같다.


<pre class="brush: js;">

var a = 100;

function test() {

   return 'Hello, World'

}

</pre>


그러면 아래와 같이 라인 번호와 함께 나온다.

참고로, 3.0.83 버젼에는 swift에 대한 Brush가 빠져 있다. 


다음 글을 참고하여 Brush를 하나 마련해 보자.


http://wordpress.org/plugins/syntaxhighlighter-evolved-swift-brush/


기본적인 작성 방법은 다른 Brush 처럼 해당 언어에서 사용하는 주석이나 keyword에 대한 부분을 별도로 묶고 해당 부분을 어떤 색으로 보여줄 지에 대한 구성으로 되어 있다. Swift의 경우 Language Spec에 각종 정보들이 들어 있으며 다음과 같이 Brush에서 사용할 keyword 들을 정리했다.


1. datatypes

Character Bool Double Float

Int Int8 Int16 Int32 Int64

UInt UInt8 UInt16 UInt32 UInt64

AnyObject String Void


2. keywords

IBAction IBOutlet true false nil

super self Self copy

as break case class

continue convenience dynamic final private

default get set willSet didSet

else enum if is in infix internal for fallthrough func import inout

let lazy mutable

naked namespace new noinline noreturn nothrow NSCopying NSManaged mutating objc override operator optional prefix protocol

private public required return

static struct switch

T typealias UnsafePointer var

unowned weak where while


3. functions

advance enumerate find filter join

min map max print println sizeof sort init


shBrushSwift.js

Trackback 0 Comment 0
2010.02.01 12:35

VirtualBox 파티션 확장 하기

Virtual Box에 Guest OS를 설치해서 사용할 때 처음 할당했던 디스크 크기가 부족해질 수 있다.

예를 들어, Guest OS로 Windows XP를 설치하고 MS Office를 설치할 경우 Service Pack이니 Update등을 실행하면 처음 XP를 설치했을 때 점유했던 공간보다 훨씬 더 많은 용량을 순식간에 잡아 먹는다. 게다가 메모리 Swap와 휴지통 그리고 인터넷 임시 저장 공간까지 사용할 경우 더욱 더 부족해 진다.

만약 가상 디스크 공간을 10GB로 설정 할 경우 위와 같은 경우는 여유 공간이 1GB이하가 된다. 그 외 다른 프로그램을 사용하려면 별도의 설치가 필요한 경우가 대부분이고 보통 C:\Program Files에 설치되니 디스크 용량이 더 부족하다고 경고창이 떠서 매우 귀찮게 된다.

이런 경우 상용 App인 VMWare에서는 가상 디스크의 크기를 자동으로 조절해 주는 유틸리티를 제공하므로 이를 이용하면된다. 그러나, Virtual Box는 별도의 유틸이 없으므로 고민을 하게 된다.

그냥 XP를 처음부터 다시 설치할까? 아니면 Norton Ghost 같은 것으로 백업후 다시 복구 하는 방법도 있을 수 있다. 인터넷에 보니 다양한 유틸리티를 이용하는 방법이 있었는데, 그중 번거롭지 않은 방법을 소개하고자 한다.

원본 링크 : http://www.my-guides.net/en/content/view/122/26/

요점은 간단하다. 원하는 크기의 가상 디스크를 생성하고 Open Source Linux형태로 제공되는 파티션 관리 Tool을 CD 부팅한 후 기존 파티션을 새로운 디스크의 파티션으로 복사하는 것이다.

1. 먼저 파티션 관리 Tool인 GParted ISO파일을 아래의 링크에서 다운로드 받는다.
GParted 홈페이지 : http://sourceforge.net/projects/gparted/

2. 디스크 등록
Virtual Box의 디스크 관리자를 실행하여 다운로드 받은 GParted를 CD 이미지로 등록하고
원본을 복사할 새로운 디스크를 생성한다. 새로운 디스크는 필요에 따라 넉넉히 생성한다.

3. 가상 머신 환경을 설정한다.
기존에 사용하던 가상 머신 환경을 그대로 이용하여 사용할 수도 있지만
설정이 번거롭게 될 수 있으므로 새로운 가상 머신 환경을 만들어 사용한다.

GParted는 리눅스이므로 Guest OS로 Linux, Version은 Other Linux를 선택한다.
메모리는 크게 상관 없을 것 같긴 하지만 되도록 1G 이상을 추천한다. 아무래도 RAM은 많을 수록 좋다.

초기 디스크 설정은 기존 하드 디스크 사용하기를 이용하여 복사할 원본 디스크를 선택한다.
이 때 선택된 디스크는 이 가상 머신에서는 Primary Master로 설정이 된다.
따라서, 가상 머신 생성을 완료 후 머신/설정에 진입한 후 '저장소' 탭에서 아래와 같이 변경해 주어야 한다.

4. 디스크 설정
초기 가상 머신은 IDE Controller에 하나의 디스크 (Primary Master)와 하나의 CD-ROM (Primary Slave)이 설정되어 있다.
파티션을 복사하려면 혼동을 막기 위해 Secondary 채널을 추가해야 한다.

IDE Controller 항목을 선택하면 우측 끝에 Add Hard Disk라는 아이콘이 있다. 이를 클릭하면 새로운 디스크가 하나 추가되며
이제 다음과 같은 방법으로 설정을 한다.

a. CD-ROM : Primary Master (gparted iso 연결)
b. 원본 가상 디스크 : Primary Slave
c. 복사 대상 디스크 : Secondary Slave

이제 설정을 저장하고 가상 머신을 시작하여 CD-ROM 부팅을 한다.
만약 CD-ROM으로 부팅되지 않을 경우 가상 머신 설정에서 '시스템' 탭에 부팅 우선 순위 정보를 확인하여 CD-ROM이 우선 부팅되도록 해야 한다.

7. Virtual PC를 시작한다.
부팅과 함께 나타나는 화면에서 선택 화면은 무조건 기본 선택 (Enter key만 사용) 한다.

a. Gnome Partition Editor
-> GParted Live (Default settings)
b. Policy for handling keymaps:
-> Don't touch keymap
c. Which language do you prefer?
-> [33] US English
d. Which mode do you prefer?
-> (0) Continue to start X to use GParted automatically

8. 파티션 복사
초기 화면에 보이는 파티션 화면은 원본 가상 디스크이므로 마우스를 이용하여 파티션을 선택한 후
Ctrl+C 를 눌러 복사하거나 메뉴의 Partition/Copy 항목을 선택하여 파티션을 복사해 둔다.

9. 파티션 복사할 디스크 선택
화면 우측 상단에 보면 하드디스크 아이콘과 함께 다른 디스크를 선택 할 수 있다.
혹은, 메뉴 GParted/Devices에서 파티션을 복사할 디스크를 선택 할 수 있다.

10. 파티션 테이블 생성
복사 대상 디스크를 선택하면 처음 만들어진 디스크이므로 초기 파티션 테이블조차 없으므로
메뉴의 Device/Create Partiontion Table을 이용하여 기본 파티션을 설정한다.
복사할 파티션이 NTFS일 경우 MS-DOS이므로 기본 파티션 테이블 포맷으로 생성한다.

11. 파티션 붙여넣기
원본 디스크에서 복사한 파티션을 새로운 파티션에 붙여넣기 위해 Ctrl-V나 메뉴Partition/Paste를 선택하면
디스크에 맞춰 복사할 파티션 및 전체 사용할 용량을 결정하는 창이 뜬다.

이때 복사될 파티션 및 추가 할 공간을 지정하게 되는데 마우스를 이용하여 최대 공간을 사용하도록 한다.
만약 별다른 설정이 없다면 디스크만 변경될 뿐 디스크에 할당된 파티션은 원본과 동일하게 된다.

12. 복사 진행
이제 복사를 할 준비가 되었으므로 툴바의 Apply를 누르거나 메뉴 Edit/Apply All Operations를 선택하여 복사를 진행한다.

13. Boot flag 선택
원본 파티션이 부팅되는 경우라면 복사한 디스크에도 부팅 정보를 넣어주어야 한다. 따러서, 복사 후 새롭게 생성된 파티션을 선택하여 메뉴 Partition/Manage Flags에서 boot 플래그를 체크화여 활성화 한다.

14. 완료
모든 과정이 완료되었으므로 GParted의 EXIT 아이콘을 눌러 종료한다.
만약 종료시 어쩌구 메시지가 출력되면 그냥 무시해도 된다.

15. 재설정 및 부팅
원본 디스크가 설정되어 있던 가상 머신에 기존 디스크 대신 새롭게 복사된 디스크를 설정 후 재부팅을 한다.
만약, 원본 파티션이 Windows XP였다면 부팅하면서 디스크 검사가 자동으로 실행되며 부팅 후 변경된 디스크 정보를 업데이트 하므로 재부팅을 한다.

그러나, 리눅스일 경우 Mount 정보가 달라지므로 /etc/fstab 정보를 수정해야 한다. 따라서, 리눅스 복구 CD로 부팅 복구 모드를 이용하여 정보를 갱신해 주어야 한다.
Trackback 0 Comment 0
2009.07.20 15:12

Kubuntu에서 VirtualBox OSE 3.0.2 build 하기

무료 가상 PC 환경으로 유명한 VirtualBox가 최근 3.0.2 버젼까지 release되었다.

** 링크 : VirtualBox Home Page

VirtualBox Homepage에는 WIndows 환경을 비롯해서 MacOSX나 리눅스 환경용으로 생성된 Binary가 있으므로 이를 받아서 설치하면 된다. 그런데 지금 사용하고 있는 Kunbutu 용 버젼은 없다.

Ubuntu 버젼도 있는데 -_-; 게다가 Kubuntu의 Synaptic S/W Manager에서 제공하는 version은 VirtualBox OSE 2.1.4 가 끝으로 더 이상의 update도 안된다.

해서, 목마른 사람이 우물은 판다고 OSE 3.0.2 Source를 내려 받아 Build 해 보기로 했다.


1. 소스 다운로드
SVN을 이용하여 받거나 VirtualBox Home에서 소스 코드를 내려 받을 수 있다.

링크 : http://download.virtualbox.org/virtualbox/3.0.2/VirtualBox-3.0.2-OSE.tar.bz2

2. 압축 해제

tar와 bzip2으로 압축되어 있는 모듈은 다음과 같이 해제 할 수 있다.

$ tar xjvf ./VirtualBox-3.0.2-OSE.tar.bz2

압축이 해제되면 VirtualBox-3.0.2_OSE 란 폴더가 생성된다.

3. 환경 설정

VirtualBox를 Build하기 위해선 다양한 Package 가 필요하다. Kubuntu에서는 다음과 같은 Package를 설치한다.

$ cd VirtualBox-3.0.2_OSE

$ sudo apt-get install gcc g++ bcc iasl xsltproc uuid-dev zlib1g-dev libidl-dev \

libsdl1.2-dev libxcursor-dev libasound2-dev libstdc++5 \

libhal-dev libpulse-dev libxml2-dev libxslt1-dev \

python2.5-dev libqt4-dev qt4-dev-tools libcap-dev \

libxmu-dev mesa-common-dev libglu1-mesa-dev


그리고 리눅스 커널 헤더를 설치해야 하는데 시스템마다 설치된 version이 다를 수 있으므로

$ sudo apt-get install linux-kernel-headers-$(uname -r)

그리고 64 bit system의 경우는 별도 패키지를 더 설치해야 한다. 자세한 것은 Home page의 Linux Host Build Instruction 을 참고하기 바란다.

4. 빌드

Build를 진행하면서 설치 및 시스템 정보 처리도 같이 진행하므로 root 권한으로 user를 전환한다.

$ sudo su
#

만약 전환이 되지 않을 경우 해당 계정이 admin 에 포함되지 않은 것이므로 이를 해결 해주고 진행 해야한다.

빌드 환경 설정을 한다. 이 때 hardening option은 build 한 binary를 배포할 경우 필요한 옵션이므로 hardening을 비활성화 한다.

# ./configure --disable-hardening

정상적인 configuration이 끝나면 다음과 같이 진행에 대한 정보를 알려준다.

Successfully generated '/home/mc500/Downloads/VirtualBox-3.0.2_OSE/AutoConfig.kmk' and '/home/mc500/Downloads/VirtualBox-3.0.2_OSE/env.sh'.

Source '/home/mc500/Downloads/VirtualBox-3.0.2_OSE/env.sh' once before you start to build VBox:

source /home/mc500/Downloads/VirtualBox-3.0.2_OSE/env.sh

kmk

To compile the kernel modules, do:

cd ./out/linux.x86/release/bin/src

make



이제 compile에 필요한 환경을 로딩하고 Build를 시작한다.

# source env.sh
# kmk


다른 리눅스 프로그램들이 그렇듯 별 다른 오류 메시지가 없다면 정상적으로 빌드가 된 것이다. 빌드된 Binary는 out/linux.x86/release/bin/ 폴더에 생성되어 있다.


5. 실행 준비

여기서 약간 중요한 것이 만약 VirtualBox를 처음 Build 해 보는 것이라면 실행에 앞서 몇 가지 설정을 해 주어야 한다.

먼저 다음과 같은 방법으로 VirtualBox Kernel Module을 생성 및 설치 해 주어야 한다.
* Note. 여기서 VBOX_SRC_ROOT는 download 받은 소스를 풀어 놓은 폴더를 말한다.

# cd $VBOX_SRC_ROOT/out/linux.x86/release/bin/src
# make
# make install
# cd ..
 
 그 다음은 아래와 같이 vboxdrv를 활성화 한다.

# modprobe vboxdrv
# chmod 777 /dev/vboxdrv

그리고 사용자 group을 vboxusers 그룹에 추가해 주어야 한다.

# vi /etc/group
...
vboxusers:x:200:user_id

아니면 groups user_id 명령을 이용해 user_id가 속한 group 정보를 얻고 useradd -g -G 옵션 등을 이용하여 vboxusers 그룹을 추가하는 방법을 이용한다.


마지막으로 다음과 같이 VBox Kernel을 다시 세팅 해 준다.

# /etc/init.d/vboxdrv setup

그러면 기존 VIrtualbox Kernel을 중지하고 커널 컴파일하여 다시 설정해 준다. 나의 경우는 여기서 약간 문제가 되었던 것이 Kernel Recompile 시 에러가 발생했다. /var/log/vbox-install.log를 확인 했더니 스크립드에서 참고하는 $INSTALL_DIR 값이 없어서 오류가 발생했던 것이었다.  이 값은 Build가 끝났을 때의 폴더인 bin이므로 다음과 같이 설정해 주고 실행해 보니 정상적으로 recompile이 되었다.

# export INSTALL_DIR=$VBOX_SRC_ROOT/out/linux.x86/release/bin

약간 좀 이상한 것은 vboxdrv라는 스크립트가 내 Kubuntu 에서는 없었다. 대신 virtualbox-ose 라는 파일이 있었는데 기능상 vboxdrv와 동일한 것 같다.


6. 실행

이제 일반 사용자로 전환 후 INSTALL_DIR 폴더에 있는 VirtualBox 파일을 실행하면 정상적으로 실행이 될 것이다.

# exit
$ cd $INSTALL_DIR
$ ./VirtualBox &



참고 : http://www.virtualbox.org/wiki/Linux%20build%20instructions
Trackback 0 Comment 0