이제 이 정도면 우분투에서 개발하기 위한 환경으로 쓰기에 큰 부족함은 없을 겁니다. 단지 부족한 면이 있다만 LibreOffice로 오피스 작업은 어느 정도 가능하지만, OutLook과 같은 강력한 오피스 소프트웨어가 없는 것이 아쉽네요.

이제 Mono개발 도구인 MonoDevelop과 몇 가지 유용한 소프트웨어를 찾아서 설치해 봅시다. 이번에는 우분투의 "우분투 소프트웨어 센터" 를 통해 설치하려고 합니다. 지금까지 터미널로 작업했던 소프트웨어 설치 작업은 이 우분투 소프트웨어 센터를 통해 가능합니다만, 터미널은 리눅스 사용에 있어서 꼭 익숙해져야 하기에 좀 고생해서 터미널로 작업을 한 것이니, 이 전의 터미널 작업들은 꼭 반복해서 외우시기 바래요.

   

먼저 아래와 같이 프로그램에서 우분투 소프트웨어 센터를 실행합니다.

   

우분투 소프트웨어 센터의 검색에서 "mono"라고 검색해 보세요. 많은 Mono와 관련된 소프트웨어가 검색이 됩니다.

   

오호! 저 아래에 MonoDevelop이 보이는군요. 자자! 잠시 바로 설치를 누르시 마시고, "더 많은 정보" 버튼을 클릭해 보세요.

   

설치 작업은 관리자의 권한이 필요하므로 암호를 입력해 줍시다.

   

그럼 아래와 같이 "확장 기능"이 보이는데요. 걍 모두 선택해서 설치하세요. 모두 피가 되고 살이 되거나, 어쩌다가 한번씩 필요한 기능들입니다.

   

그리고 "우분투 소프트웨어 센터에서" 아래의 몇 가지 추가적인 소프트웨어도 설치해 줍시다.

  • Mono IL Contract
  • Mono Runtime
  • Mono Documentation
  • Mono Runtime (Terminal)
  • gsharp
  • Monodoc (Http)

   

이쁘게 Mono Develop이 설치가 되었네요.

   

실행시 켜보시면 아래와 같이 MonoDevelop이 실행이 됩니다. 깔쌈한 화면이 금방이라고 코드를 짜고 싶어지네요. 이것 저것 한번씩 만져보시고 Visual Studio와 비교해 보시면서 좋은 점, 나쁜점을 찾아보시면 더 재미있겠죠?


여기까지 따라오시면서 우분투의 사용자 인터페이스와 몇 가지 명령어가 어느 정도 자연스러워 지셨는지요? 몇 번 우분투를 사용해 보시면 알겠지만, "우분투 소프트웨어 센터"에서 필요하신 소프트웨어를 편하게 모두 다운로드 받으실 수 있답니다. 급하신 분들은 먼저 개발 도구와 툴 들을 설치하셔도 됩니다. ^^*

어제 오늘 할 것은 우분투의 테마를 좀 바꾸어볼까 합니다. 기본 테마가 나쁘지는 않지만, 제가 주로 사용하는 개발 툴은 아이콘을 크기를 줄이고, 더 넓은 화면으로 쓰고 싶습니다. 이럴 때 유용한 소프트웨어가 있으니, 다음의 링크를 참고하시기 바랍니다.

   

Gnaom Classic 테마입니다. 다음의 링크에 자세한 내용을 소개하고 있습니다.

http://ioriy2k.pe.kr/archives/4357

   

   

자! 그럼 설치 후 재 부팅을 하면 로그인 화면이 나타납니다. 여기에서 아래의 그림과 같이 사용자 이름 오른쪽의 아이콘을 클릭해 보세요.

   

Gnome Classic 테마를 선택하시고 로그인을 합니다.

   

   

호호~! 아래와 같이 예쁘게 테마가 바뀌었습니다. 약간 MAC OS와 같은 스타일 비슷하네요.

좌측 상단의 영역은 윈도우의 "시작" 과 비슷한 기능으로 소프트웨어의 목록을 볼 수 있습니다.

오른쪽 상단은 뭐 그 전과 지금과 마찬가지고요.

좌측 하단에 아이콘을 DRAG&DROP 하시면 빠른 아이콘으로 등록하실 수 있습니다. 아이콘을 우측 하단쪽으로 등록하시면 좌측/우측으로 정렬하여 빠른 아이콘을 등록할 수 있답니다.

그리고 마지막으로 오른쪽 하단은 4개의 네모 상자가 보이는데요. 이것은 가상 윈도우로 윈도우 화면을 너 넓게 쓸 수 있답니다. 단축키를 쓰는게 더 빠르겠죠? CTRL+ALT+상/하/좌/우 로 빠르게 쓸 수 있습니다.


윈도우 서버의 Active Directory로 전사적인 리소스를 관리하는 회사가 많이 있을 겁니다. 그래서 로그인을 도메인 계정으로 로그인을 해야 할 필요가 있는데, 우분투에서는 likewise 로 도메인 서비스에 가입하여 로그인을 할 수 있답니다.


도메인 계정으로 로그인해야 하는 환경이 아니라면 패스!!

   

도메인 가입

우선 도메인을 가입하기 위해 필요한 likewise-open 패키지를 다운로드 받아 설치합시다.

다음과 같이 입력하세요. sudo apt-get install likewise-open

   

이제 도메인에 가입할 도메인 주소와 도메인 계정을 알고 있으면 됩니다. 저는 저희 집에 Active Directory가 POWERUMC.KR 주소로 되어있습니다. FQDN 은 대소문자를 구분하니 정확히 입력하셔야 합니다.

   

다음과 같이 입력합니다. sudo domainjoin-cli join POWERUMC.KR umc

=> sudo domainjoin-cli join 도메인주소 도메인계정

   

그리고 도메인 계정의 비밀번호를 입력하면 도메인 가입이 완료가 됩니다.

다음과 같이 입력합니다. sudo /etc/init.d/likewise start

   

   

관리자 권한으로 변경

일단 현재 머신으로 도메인에 가입하였고, 현재 머신에 해당 도메인 계정을 관리자 계정으로 줍시다. 이건 뭐 윈도우에서도 마찬가지죠? ^^

   

다음과 같이 입력합니다. sudo adduser POWERUMC.KR\\umc admin 또는 administrator

 

   

SUDO 권한 주기

말씀 드렸던 최고 관리자 권한으로 명령을 실행하기 위해 sudo 라는 명령을 쓴다고 말씀 드린바 있습니다. 이 sudo 도 이를 사용할 수 있는 계정을 구분해 주는데, 도메인 계정으로 sudo 를 사용할 수 있게 해야 합니다.

먼저 root 권한으로 로그인을 해볼까요? 굳이 로그 오프하지 마시고, su 명령으로 다른 계정의 권한으로 변경할 수 있습니다.

   

다음과 같이 입력하세요. sudo su root

   

sudo 명령을 사용할 수 있는 권한들은 sudoers 라는 파일에 텍스트로 기록이 됩니다. 이 파일을 편집할 수 있는 사람은 최고 관리자 권한인 root 밖에 없답니다.

다음과 같이 입력합니다. sudo gedit /etc/sudoers


여기까지 오시는데 조금 지치지는 않으셨나요? 그래도 리눅스의 몇 가지 시스템에 대해서 알아가는 과정이니 빠득 빠득 따라오시기 바랍니다. 뭐 윈도우에서도 개발 환경 세팅 하려면 어느 정도 시간을 투자해야 하니까용~

 

   

자 이제 다 되었습니다. sudo clear를 입력하여 오류가 나지 않으면 설정이 올바르게 된 겁니다. clear 명령은 화면을 깨끗하게 지우고 커서를 최상위로 옮기는 명령인데, 윈도우에서는 cls 랑 맘먹는 놈입니다.

다음과 같이 입력하세요. sudo clear


이 부분은 우분투의 한글 드라이버인 ibus가 좀 오동작을 합니다. 쩝.. (한글 입력기라고 부르는군요.).

안 불편하시면 걍 쓰시고, 전 불편해서 다른 한글 입력기로 바꿀겁니다.

   

다음과 같이 입력해서 앱 스토어에서 nabi 한글 입력기를 다운로드 받습니다. (앱 스토어는 그냥 친숙한 의미로 부르는 것이니, 또 이런 문장 문장 하나에 죽자고 덤비지 마시길)

   

다음과 같이 입력하여 nabi를 설치합니다. sudo apt-get install nabi

   

   

    


혹시 노트북을 쓰신다면,

한글 키보드 101/104 가 ALT L과 한/영 키를 구분 못하는 경우가 있습니다. 그래서 ALT L 단축키를 다른 키로 변경할겁니다. 그래야 한/영 키가 올바로 먹습니다.

   

   

윈도우 키 + Space 로 변경

영어 울렁증이 있으시다면 한글 우분투로 변신시켜 봅시다. 영어 버전도 충분하시면 패스!!

   

   

   

   

   

   

   

   

   

   

재 부팅 후


이제 우분투에 로그인이 되셨습니까? 그럼 우분투에서 매우 자주 쓰는 몇 가지 명령어를 터미널을 이용해서 작업을 할겁니다. 우분투는 X-Windows 환경도 좋지만, 리눅스답게 터미널을 못쓰면 리눅스답게 쓰기가 힘들 수 있습니다.

터 미널 작업은 매우 강력하고, GUI 기반+마우스 작업으로 하는 것보다 훨씬 빨라서 터미널이 점점 재미있어질 겁니다. 윈도우의 커맨드 라인 작업은 왠지 지루한 감이 있지만, 리눅스의 터미널 작업은 왠지 즐기게 되는… 음… 그 기분… 아마 써보지 않은 분들은 못 느끼실 겁니다.

   

   

터미널 실행하기

아래의 마우스 위치가 바로 "Dash Home" 아이콘 입니다. 그곳을 클릭해서 terminal을 검색하시면 됩니다. 근데 CTRL+ALT+T 키를 누르면 바로 터미널 뜬답니다.

   

   

ROOT 계정 비밀번호 설정

   

우 선 root 계정의 비밀번호부터 변경해 봅시다. root 계정은 윈도우의 administrator(관리자), 우분투의 admin 보다 더 계급이 높은 계정입니다. 원래 우분투에서는 root 계정은 사용하지 않는 것이 관례인데, 필자가 뭔가 작업을 잘못해서 이를 되돌리려니 root 권한을 얻지 못해서 큰 코 다친 적이 있습니다. 그래서 그 후 부터는 root 계정을 살려놓죠 ^^; 우분투를 써보신 분들은 아실만한 내용인데, sudoers 파일에 오타를 넣어 저장을 해버려서, sudo 를 실행하지 못해 완죵 고생했었죠.



sudo, 수도 꼭지의 수도가 아닙니다. sudo 는 우분투를 쓰면서 가장 많이 쓸 명령어인데, 이 명령어는 보안과 관련된 부분에서 최고 관리자 권한(root)의 을 얻는 명령입니다. 이와 비슷한 윈도우의 명령어는 runas.exe 가 있지요.

   

리눅스 : sudo cp * /usr/local/umc <--- 최고 권한으로 모든 파일을 umc 디렉토리로 복사하라!

   

이 명령어를 윈도우와 유사하게 사용하면 이렇게 됩니다.
윈도우 : runas /user:administrator copy * C:\user\umc\documents

   

다음과 같이 입력하세요. sudo passwd root

   

   

RPM 과 APT-GET

RPM! 이건 또 머꼬! RPM(Redhat Package Manager) 로 레드헷(유형의 회사나 단체)에서 만든 리눅스인데, 좀 먹어주는 리눅스 버전입니다. 레드헷 계열은 대부분 상용적인 서비스를 목표로 만든다고 하네요. 이 RPM으로 뭔가의 패키지를 자동으로 설치해 줍니다. 윈도우에 비교하자면 MSIEXEC 와 비슷하지만, GUI 기반이 아니라는 점이 다르지요.

그리고 apt-get 이 있습니다. apt-get(Advanced Packaging Tool)은 인터넷을 기반으로 패키지를 설치하는 방법입니다.

   

자! 정리하면 RPM은 로컬 실행용 패키지! APT-GET은 인터넷 앱 스토어(?)에서 다운받아 설치하는 방식!

이 apt-get 은 먼저 update 를 해주어야 합니다. apt-get 은 소스 서버에 있는 소프트웨어 목록 등을 인덱싱하여 캐싱합니다.

다음과 같이 입력합니다. sudo apt-get update

   

그리고 RPM 을 설치합니다. 다음과 같이 입력합니다. sudo apt-get install rpm

   

   

   

apt-get 소스 서버 변경

이건 해도 되고 안해도 됩니다. 다만 소스 서버를 좀 더 빠른 곳으로 바꾸면 apt-get 설치가 좀더 빨라지겠죠.

   

   

   

역시 우리나라의 소프트웨어 회사인 다음 서버군요. 멋집니다. 다음!

   

소스 서버가 변경되었습니다. 다시 캐시를 업데이트 해야겠지요?

다음과 같이 입력합니다. sudo apt-get update


첫 회부터 너무 쌘건가? 독자 분들도 제목에서 볼 수 있듯이 "크로스 플랫폼 개발 환경 만들기"라는 주제인데, 혹여 뭔가 대단한 것을 만들려고 하는 것은 아니니 너무 큰 기대는 하지 않길 바랍니다. 이 글은 필자가 크로스 플랫폼 개발 환경을 만들면서 여러 번 수행 착오를 겪은 부분을 공유하기 위함입니다.  

일단, 크로스 플랫폼 개발 환경을 만들기 위해 필자가 선택한 운영체제는 우분투 12 LTS 버전입니다. 맥OS는 리눅스 기반이면서 맥에서만 100% 설치 성공 가능한 운영체제입니다. 뭐 해적판도 있겠지만, 그런 고생은 불법적인 방법이므로 피하는게 좋겟지요.  

우분투12를 선택한 김에 우분투 운영체제에 대한 소개 좀 해봅니다. 우분투는 리눅스라고 하는 수 십 년 전 멀티 테스킹(멀티 쓰레딩)을 지원하는 운영체제 입니다.

   

필 자가 리눅스를 접했던 때는 초등학교 때였는데, 그 때는 플로피디스크 4장으로 설치를 하던 까만 바탕화면의 그런 운영체제 였습니다. 초롱불 같은 좀 허접한 사설 BBS를 날로 뚫었던, 난 "크래커야!" 라는 뿌듯한 자부심으로 사용하던 것이 바로 리눅스였습니다. 더불어 리눅스는 소스 코드가 공개가 되어 있어서 상당한 보안 취약점이 존재했습니다. 그 중에서도 vi 와 같은 것들은 해커들이 가장 좋아하던 공격 대상이었지요. 그러면서 리눅스에 X-Windows 라고 하는 GUI 그래픽 인터페이스이 탑재가 되었고, 쭉쭉 발전해서 현재와 같은 모습이 되었습니다.

   

우분투데비안 계열에서 파생된 운영체제 입니다. 또 데비안은 머꼬?? 이 데비안 리눅스는 굉장히 많은 CPU의 아키텍처를 지원하기 때문에, 서버 용도로 안성맞춤이었죠. 심지어 ARM 코어도 지원하고, 듣도 보지도 못했던 아키텍처들도 지원을 하네요.  

데비안에서 파생된 우분투는 이러 저러 잡다한 것들 다 빼고, 사용자가 친숙하게 사용하기 위한 용도로 설계가 되었고, 데스크 탑 용도로는 안성 맞춤이지요. 이 우분투는 서버와 데스크 탑 용이 별도로 존재하는데, 그 중 데스크 탑 우분투는 가장 널리 사용되는 X86과 AMD64 아키텍처를 지원합니다. 쩝.. 그러니까 여러 분이 가진 PC나 노트북에서는 다 돌아 가겠고요. ARM 코어 컴퓨터가 있으면 당장이라도 ARM 코어를 지원하는 우분투 서버 버전을 이용하시면 되겠습니다. 아무튼 쥑이는군요.

   

  

사설은 여기서 마치고, 일단 설치부터 해보아야겠지요? 우분투는 2가지 방식의 설치를 지원합니다. 매우 중요한 부분이지요.

   

첫 번째, 설치 방식은 별도 파티션을 나누지 않고도 멀티 부팅이 가능한 우비(wubi) 버전입니다. 우비는 NTFS 파일 시스템(일반적으로 윈도우에서 쓰는)을 마치 물리적인 파티션으로 인식하도록 하여, 설치를 합니다. 가령, C:\ubuntu 폴더가 하나의 파티션이 되는 것이지요. 그냥 짬짬히 쓸 생각이라면 우비 버전으로 설치하시면 되겠습니다.

두 번째, 가장 일반적인 파티션을 분할하여 설치하는 방법입니다.

   

아참… 여기서 아마 VirtualBox나 HYPER-V에 설치하려고 하는 분 계실 겁니다. 제가 정말 장담하건데 개인용 컴퓨터에서 가상화하여 설치하면 얼마 못가서 지울 겁니다. 그리고 제 성능도 안나옵니다. 영화를 아이폰으로 보는 것과 iMAX 로 보는 것과의 차이입니다. 꼭 한번쯤은 우비나 파티션을 나누어서 설치해 보세요. 후회하지 않을 겁니다.

   

   

   

   

첫 번째, 우비(wubi) 버전으로 설치해 봅시다. (구경만 해보실 분)

먼저 http://www.ubuntu.com/download 링크로 가봅시다. 아래에 우분투 데스크탑 버전으로 클릭합니다.

   

그리고 화면 스크롤은 반 쯤 내려보세요. 그럼 "Windows Installer" 설치 다운로드가 보입니다. 요거 그냥 따블 클릭해서 실행 파일을 실행하면 됩니다. 아까 얘기한대로 이것을 설치하면 가상 파티션이 생성되어 멀티 부팅이 가능합니다. 그리고 "소프트웨어 설치/제거"에서 wubi 를 삭제하시면 우분투도 금방 삭제가 됩니다. 정말 획기적입니다.

   

아래와 같이 설치할 드라이브와 적당한 가상 파티션의 크기를 지정해 주세요. 왠만하면 30GB 선택해 주시면 되겠습니다. 그리고 설치하기를 선택하시고 그 이후의 일은 여러분에게 맡기겠습니다….

   

   

   

   

두 번째, 진정한 리눅스의 성능을 느끼시려면, 파티션을 나누어 설치를 해야겠지요.

먼저 http://www.ubuntu.com/download 링크로 가서 설치하고자 하는 우분투 버전을 선택하면 됩니다. (32bit, 64bit 택일). 32bit 가 추천으로 되어있지만, 필자는 추천 항목은 안씁니다^^. 그래서 저는 64bit 버전을 선택해서 ISO 파일을 다운로드 받았답니다.

   

   

이 ISO 를 USB나 CD로 구우시면 되겠습니다만, USB로 구우실 거면 이 http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/ 링크에서 USB로 금방 구워주는 소프트웨어를 사용해 봅시다. 이 소프트웨어는 아래처럼 생긴 물건입니다.

   

그리고 설치할 파티션을 미리 확보하시기 바랍니다. 용량이 모자라시면 파티션 축소하셔서 남은 용량을 짜 내시면 됩니다. 물론 파티션은 "주 파티션"으로 만들어야겠지요?

그리고 아래의 스크린 샷을 쭉쭉 보시면서 설치하시면 됩니다. 쭉쭉 보시다가 중요한 부분에서 다시 말씀 드리겠습니다.

   

   

   

   

   

   

자 여기에서 당황하지 마시고, 아래와 같이 멀티 부팅이 가능하도록 첫 번째 항목을 유지한 채 다음으로 넘어가면 됩니다.

   

그러면 아래와 같이 칸막이 조절 막대가 있는데, 참 애매해 보이네요. 파티션 이름이나 파티션 주체에 대한 내용이 나오지 않아 혼란스럽습니다. 아래에 "고급 파티션 도구" 보이시죠? 그냥 고급 파티션 도구를 써서 설치해 봅시다.

   

설치를 시작하기 전에 파티션을 마련해 놓으라고 했는데, 여기에서 그 파티션을 선택하면 되겠군요. "주 파티션"으로 설치하면 멀티 부팅이 됩니다. 그리고 리눅스에서 즐겨 쓰는 EXT4 파일 시스템을 선택하고, 마운트 위치를 / 로 잡아줍니다.

   

여기서 잠깐 파일 시스템에 대해서 얘기하자면, 윈도우에서는 NTFS 파일 시스템을 사용하죠. 과거 FAT 파일 시스템은 최대 디스크 용량과 파일 길이에 제한이 있었고, 점점 파일들의 크기가 증가하면서 파일당 할당되는 블록이 점점 높아졌습니다. FAT16, FAT32가 대표적이죠. 쉽게 말해 MS-DOS 에서 주로 기반한 파일 시스템이었죠. FAT16 시절에는 파일명 최대 8, 확장자 최대 3… 8.3 법칙이랍니다.

이후 윈도우에서 NTFS 파일 시스템이 나왔습니다. NTFS 파일 시스템으로 암호화를 한다던가, 복구를 한다던가 하는 작업이 가능합니다.

반면, 우분투에서는 EXT 파일 시스템을 주로 사용하는데, EXT4 파일 시스템으로 포멧하시고 설치하시면 됩니다. 혹시 구형 하드 디스크인 경우 EXT2 를 선택하시면 되겠고요.

아 참… 중요한 마운트라는게 있는데, 이는 디렉토리 단위로 관리되는 디바이스라고 보시면 됩니다. 윈도우에서는 C드라이브, D드라이브로 구분이 됩니다. 하지만 리눅스에서는 마운트라고 하여 물리적인 디바이스 단위를 논리적으로 트리 형태의 디렉토리로 관리됩니다. 쉬운 예를 들면, / 는 첫 번째 하드 디스크이고요, /dev/NewDrive 는 새로 산 하드 디스크를 붙였습니다. CD-ROM 도 붙여 볼까요? /dev/cdrom 위치에 놓을 수 있습니다. 원하는 위치에 마운트 시킬 수 있다는 것이죠.

   

   

자 그럼 이제 설치합시다. 그 전에 아래의 붉은 동그라미에 설치가 되므로, 올바르게 멀티 부팅이 되기 위해서 주 파티션을 제대로 선택했는지 재차 확인 합시다.

   

   

키보드는 별탈 없으면 101/104로 선택하세요. 차후에 정신건강에 이롭습니다.

   

사용자 이름과 컴퓨터 이름은 원하는대로 입력하고 후닥 넘어가시죠.

   

   

   

   


 2012년 4월 26일, 고대하던 우분투 12 LTS 가 릴리즈 되었습니다. 우분투는 데비안 계열에서 파생된 사용자에게 친숙한 데스크탑 운영체제입니다. (더 자세한 내용은 이 링크를 참고하세요) 왜 갑자기 쌩뚱맞게 우분투 얘기가 나오는 것인가라고 의아할 수 있을 겁니다. 이유는 우분투에서 Mono를 이용하여 크로스 플랫폼을 지원하는 소프트웨어를 만들자는 것에 의미가 있습니다.

 

  

 

 

그 중, Mono는 .NET 플랫폼과 .NET Framework를 충실하게 구현한 오픈 소스이며, 크로스플랫폼을 위한 내부적인 기술 및 지원은 오히려 .NET 보다 앞섭니다. .NET의 복제품이 아닌, .NET의 확장판으로 보시기 바랍니다. .NET 플랫폼이라는 어떤 무형/유형의 구현체는 ECMA라는 비영리 표준화 기구와 ISO인 국제 표준화 기구에서 표준으로 정의되고 있습니다. 즉, Mono는 표준화 기구에서 인정한 표준을 구현한 것일 뿐이며, Microsoft 와는 어떠한 라이선스 관계도 맺지 않는 자유 소프트웨어 진영입니다.
(정확히 비표준 및 표준에 등재된 것들은 언어 스팩과 CIL 스팩입니다. 그 외적인 CLR 부분은 Mono가 크로스 플랫폼을 위해 자체적으로 구현한 레벨이 되겠지요. 전반적인 내용의 의도만 이해하시기 바랍니다.)


   

자체적으로 .NET Framework과 CLR(Common Language Runtime), CIL(Common Immutable Langauge), JIT(Just in Time) 등을 크로스 플랫폼에서 동작하도록 매우 심혈을 기울여 탄생한 독자적인 플랫폼입니다.

더불어 Mono가 혼자서 모든 것을 한 것이 아닙니다. 자유 소프트웨어 진영의 GTK(그래픽 툴 킷)을 이용하여 데스크탑 응용 프로그램을 리눅스, 윈도우, 맥, 모바일에서 돌릴 수 있습니다. 또한, ASP.NET 웹 응용 프로그램을 Apache Tomcat, FastCGI, 또 최근에 높은 성능으로 주목을 받고 있는 Nginx 와 같은 WAS(Web Application Server)에서 돌릴 수 있습니다.

 

  자 유 소프트웨어 진영의 훌륭한 운영체제와 어디에서나 돌아가는 개발 환경 및 서버 운영 환경의 크로스 플랫폼 인프라.. 그 동안 Microsoft가 제공하는 편안한 윈도우 운영체제와 IIS(Internet Information Service) 이 두 가지에 의존하며 개발하던 우물안의 개구리에서 이제는 더 큰 곳을 바라보아야 할 때인 것 같습니다. 그것을 시작하는 첫 걸음이 바로 Mono 입니다.

 

이 쯤에서 Mono 플랫폼과 그 인프라의 장점을 한번 살펴봅시다.

1. Mono 플랫폼 전체가 오픈 소스이며, 그 구현체는 매우 수준이 높고 확장 가능합니다. (.NET 플랫폼과 비교하여)

2. MonoDevelop라는 통합 개발툴(IDE)은 무료이며, 리눅스, 윈도우, 맥 등에서 설치하여 쓸 수 있습니다.

3. 운영체제 구매 비용이 없고, 웹 서버 구매 비용이 없습니다. 4. 호스팅 업체에서 우분투와 같은 리눅스(Linux) 호스팅 vs 윈도우 호스팅의 가격 = 1개월당 각각 1,000원 : 20,000원입니다. Linux는 쓸수록 금전절약입니다.

5. 가볍습니다. 운영체제 용량과 개발 환경 구성을 모두 다 해서 7.4GB 입니다.
(현 재 설치된 것들이 우분투 12 LTS, Gnome시리즈 유틸, Mono Runtime, MonoDevelop, JDK6, JDK7, OpenJDK6, OpenJDK7, Eclipse, STS(SpringSource Tool Suite), IntelliJ, NetBeans, KDevelop, Qdevelop 등등 )

6. 윈도우 기반의 .NET 응용 프로그램은 체감적으로 모든 것이 느립니다. 하지만 리눅스에서는 체감 실행 속도가 더 빠른 것 같습니다. (윈도우용 MonoDevelop보다 리눅스용 MonoDevelop 실행 속도가 나은 것 같습니다.-컴파일, 실행속도 등등)

   

 

이쯤에서 한 가지 알기 힘든 궁금증이 생깁니다. "왜 마이크로소프트는 충분히 기술력이 있음에도 크로스 플랫폼을 포기할까?". 정말 왜일까요? 언뜻 생각해보면 당연히 자사 운영체제에 특화되어야 혁신적인 기능이나 기술이 빠르게 추가될 수 있습니다. .NET Framework만 보아도 WINAPIs와 COM로 도배되어 있고, WCF만 보아도 IIS나 윈도우 서비스에서 편하게 쓸 수 있도록 하였으며, 알 수 없는 NetTcp, NetNamed, NetMsmq, MsmqIntegration 비표준 웹서비스 프로토콜을 사용하지요. 물론 이런 것들이 필요에 의해서 나오긴 했지만, 윈도우라는 족쇄에 묶어둘 수 있는 좋은 기술이기도 합니다.

   

   

그리고 오픈 소스 진영의 라이선스 정책이 마이크로소프트가 크로스 플랫폼을 지원하지 못하게 되는 장벽이 될 수도 있습니다. GPL이냐 LGPL이냐, 또는 정적 링크냐 동적 링크냐, 무료 배포이냐 상용 배포이냐에 따라 마이크로소프트의 제품의 상표권이 문제가 될 수도 있고, PDB 심볼에 원작자의 요구 문건이 포함될 수 있고, 최악의 경우에는 상용 소프트웨어의 소스 코드를 공개해야 할 수도 있을 겁니다. 물론 잘 알아보고 써야겠지만, 언젠가는 라이선스 정책은 변경이 될 수 있지요. 그런 오픈 소스 진영의 라이선스 정책 등으로 휘말리지 않는 방법이 독자 플랫폼으로만 살아가는 것일 겁니다.

하지만, 이제는 세상이 변해가고 있습니다. 초기에 아이폰의 iOS와 안드로이드 앱을 서로 다른 기술로 구현을 해야 했지만, 이제는 그런 개고생은 하지 않아도 되었습니다. C#이라는 언어만 알고 있으면, Mono for Android로 안드로이드 앱을 만들고, 이 코드를 재사용하여 MonoTouch for iOS로 아이폰 앱도 만들 수 있겠지요. 이 코드를 재사용하여 Windows Phone 앱도 만들 수 있겠죠.

   

필자는 BASIC, QBASIC, Turbo BASIC을 죽도록 해 본적이 있습니다. 그리고 Turbo C를 죽도록 해 본적이 있습니다. 그리고 Turbo Pascal을 죽도록 해 본적이 있습니다. 그리고 거의 7년 동안 .NET과 C#, ALM, Testing을 죽도록 한적이 있습니다. 그리고 최근에는 JAVA, Python, C++ COM 을 죽을 만큼은 아니고 적당히 공부하고 있습니다. 그 전에는 즐겨 사용하던 C#이라는 언어의 철학을 이해한다고 했지만, 이해하지 못했습니다. 다만, 이제서야 조금은 이해가 갑니다.

   

아주 작은 예를 들면,

왜 C# 언어의 람다식이 JAVA 언어의 람다식보다 좋은가?
왜 C# 언어의 Attribute이 JAVA 언어의 Annotation보다 좋은가?
왜 C# 언어의 익명 메소드가 JAVA 언어의 익명 메소드보다 좋은가?
왜 .NET의 보안 모델이 JAVA의 보안 모델보다 좋은가?

물론 JAVA가 더 좋은 것도 많답니다. 오해 마시길…

   

가장 큰 주제의 질문으로써, 왜 윈도우보다 크로스 플랫폼이 좋은가?

   

우 리가 사용하는 .NET 플랫폼이 생산성이 좋고, 성능이 좋고…를 우물 안에서 외치며 섣불리 판단하는 노예 아닌 노예가 되지 맙시다. 이제야 저도 느끼는 것이지만, 그런 바보 같은 사람이 되지 않기를 바랍니다. 자신의 종교만이 유일한 신이니까, 다른 종교를 무시하면 그 사람만큼 불쌍해 보이는 사람도 없습니다. 진정 과학이 발달하여 "신 같은 것은 없어!! 우리는 외계인의 후예!!" 라면… 완전 반전이죠^^; (과학적으로는 이런 얘기들의 이론이 뒷받침 되고 있습니다.)

   

현재 스스로 개발자라면 스스로에게 무언가의 질문을 던져볼 시기인 것 같습니다.

저와 함께 우분투 운영체제에 MonoDevelop을 써보느냐!! 아니면 윈도우에 Visual Studio를 쭉 쓰느냐!!

   

앞으로 총 11회의 연재를 통해 당신을 우분투와 MonoDevelop를 주무르는 멋진 개발자로 만들어 드리겠습니다.

기대해 주세요….