레이블이 windows인 게시물을 표시합니다. 모든 게시물 표시
레이블이 windows인 게시물을 표시합니다. 모든 게시물 표시

2013년 1월 3일 목요일

Unix vs. Windows

얼마 전에 썼던 [조엘 온 소프트웨어]의 다른 부분 얘기입니다.

<더불어 살기>라는 제목의 글인데 원어로는 Biculturalism이군요.

시작은 Unix와 Windows의 차이점에서 시작을 했는데,
이내 The Art of Unix Programming (에릭 S. 레이몬드 저)이라는 책이 중심이 됩니다.

전체적인 이야기의 흐름은, TAOUP를 읽고 난 후의 감상문(?) 정도의 글입니다.

하지만 TAOUP에 대해 소개하는 부분과 글의 마지막 부분 정도를 제외하면 꽤 비판적인 어조로 글을 썼습니다. 특히 중간에 다음 문장을 읽을 때에는 '적대감'마저 느끼게 되어 사뭇 놀라웠습니다.

미네소타의 도시 세인트 폴을 한번도 벗어나보지 못한 촌뜨기 미국아이처럼 단일 문화 성향을 보이는 프로그래머가 너무도 많은데, 이런 프로그래머는 문화적인 가치와 핵심적인 인간 가치에 놓인 차이점 조차 제대로 구분하지 못합니다. 저는 윈도우가 미개하며 멍청하다고 생각하면서 윈도우 프로그래밍을 비웃는 유닉스 프로그래머를 많이 만나봤습니다. 레이몬드 또한 종종 배경을 무시한 채 다른 문화의 가치를 얕보는 함정에 빠져 있습니다.

조엘의 논조가 너무 비판적이어서 마지막에 TAOUP에 대해 언급한 장점이 오히려 비아냥거림으로 들릴 정도였습니다.


저는 TAOUP를 읽어보지도 않았고, 에릭 레이몬드에 대해서도 아는 바가 없었는데, 조엘과 에릭 둘 중에 누군가가 심하게 편향적이거나, 혹은 둘 사이가 몹시 좋지 않다는 것은 짐작할 수 있겠습니다.

지금 다시 읽어 보니, 이런 문구들도 있네요.
종종 물의를 일으키는 에릭 S. 레이몬드가... 
그런데 레이몬드의 논조가 너무 극우주의(Anti-Idiotarian)에 가까워서...
조엘이 에릭을 꽤 싫어하나 봅니다.


이 글에 대한 다른 사람들의 생각이 어떤지 궁금해서 그의 블로그에 가 보았으나, 블로그에 댓글을 달 수가 없습니다.--;
http://www.joelonsoftware.com/articles/Biculturalism.html

2012년 12월 14일 금요일

GTK+ on MS-Windows

MS-Windows에서 GUI를 작성하는 방법은 Win32 SDK를 근본으로 합니다.

Win32 SDK에서 파생된 것으로 Microsoft의 MFC가 있으며, 그 외에도 여러가지 GUI 라이브러리들이 존재하는데, Linux에서 시작된 GTK+라는 라이브러리를 이용하는 방법을 알아보고자 합니다.

GTK+는 Gimp Tool Kit의 약자로 Gimp라는 유명한 공개 Graphic Software가 있는데,
아마도 이 software를 개발하면서 만든 라이브러리를 범용으로 확장한 것이 아닌가 추측이 됩니다.

Gimp의 특징은 Linux / MS-Windows / Mac 등에서 모두 사용이 가능하다는 점과 C 언어 인터페이스를 제공하므로 C와 C++에서 모두 사용이 가능하는 장점이 있습니다.

홈페이지는 http://www.gtk.org 입니다.

MS-Windows용 라이브러리는 다음에서 받을 수 있습니다.
http://www.gtk.org/download/win32.php

GTK+는 여러가지 라이브러리가 모여서 하나의 패키지를 이루고 있습니다.
이 모든 것을 별도로 받을 수도 있으나 번거로우므로 all-in-one bundle을 제공합니다.
http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.10-20120208_win32.zip

다운로드 받아서 적당한 폴더에 압축을 풀면 다음과 같은 형태의 파일과 폴더가 나옵니다.
GTK+ 압축을 푼 결과

저기에 보이는 README 파일을 읽어 보면 해야할 일이 간단하게 나옵니다.

1) bin 폴더를 PATH에 추가한다.
2) "pkg-config --cflags gtk+-2.0"를 수행했을 때 적절한 문자열이 나오는지 확인한다.
3) "gtk-demo"가 제대로 수행되는지 확인한다.
4) MS-Windows theme engine을  사용하려면, etc/gtk-2.0/gtkrc에
    gtk-theme-name = "MS-Windows"
   라는 줄을 넣어 준다.

2번의 pkg-config는 여러가지 옵션이 있는데, 자세한 사용법은 "pkg-config --help"로 찾아 볼 수 있습니다.
몇가지 사용 결과는 다음과 같습니다.
pkg-config 사용 예

3번의 gtk-demo를 수행하면 다음과 같이 실행이 됩니다.

여러가지 GUI component에 대한 예제를 볼 수 있으며 그 소스도 참조가 가능합니다.

그런데 이 데모를 수행하면서 다음과 같은 경고/에러 메시지가 나오는군요.
라이브러리 소스를 따로 받아서 확인해야 할 듯 합니다.


4번째의 Theme Engine이라는 것은 효과가 있는지 없는지 아직은 잘 모르겠습니다.


이제는 실제 코딩하여 빌드하는 것이 가능한지 확인해 보겠습니다.

Code:Blocks에서 Project 종류로 GTK+를 선택하면 몇가지 설정 중, GTK+의 경로를 물어보는 과정이 있습니다.
그리고 GTK+를 처음 사용하는 것일 경우에는 다음과 같이 GTK+에 대한 Global Variable 설정을 해 주어야 합니다.
GTK+에 대한 설정 화면
여기에 base, include, lib를 지정해 주고, cflags는 "pkg-config --cflags gtk+-2.0"에서 나온 문자열을 넣어 줍니다. (cflags는 효과가 있는지 의심스럽습니다.)

이렇게 만들어진 기본 소스를 빌드해 보면 헤더파일을 찾지 못해서 에러가 수없이 나오게 됩니다.
그 원인을 찾아 보니 프로젝트가 만들어지면서 GTK와 관련된 헤더파일의 경로가 자동으로 추가되는데 몇개의 경로는 추가가 안되기도 하고 쓸데없는 경로가 추가되는 등, 좀 어처구니 없이 만들어집니다.
처음에 만들어졌을 때, 추가된 헤더파일의 경로

추가된 헤더파일의 경로를 수정한 결과
아마도 이것은 Code:Blocks의 오류인 듯 싶습니다.

앞서의 Global Variable 설정에서 cflags에 있는 대로 여기에 경로가 추가되었다면 문제가 없었을 것인데, Code:Blocks 내부에서 임의로 경로를 추가하는 게 아닌지 의심스럽습니다.

암튼, 이렇게 수정하고 나면 문제 없이 빌드되고 다음과 같이 실행도 됩니다.

2012년 7월 24일 화요일

MS-Windows를 원격 제어하는 방법?

떨어져 사는 부모님댁에 컴퓨터와 관련된 문제가 일어날 때가 종종 있다.

컴퓨터는 아버지께서만 사용하시니, 문제가 생기거나 하면 아버지께서 내게 도움을 요청하시곤 한다.

하지만...여러 가지로 도움을 드리긴 어렵다.
어떤 문제는 대체 왜 그런 일이 일어났는지 경험도 못 해 본 일인 경우도 있고,
대략 몇가지 가능성을 예상할 수 있는 경우도 있고,
명확하고 자주 겪는 문제인 경우도 있다.

마지막의 경우에도 전화통화만으로 쉽게 해결되지 않는 경우가 있으니,
나는 너무도 당연하게 생각하는 일이 칠순 노인인 아버지께는 그러하지 않은 경우가 많기 때문이다.
일일이 과정 과정을 설명하고, 과정마다의 결과를 확인하고 하면 진이 빠지는 경우도 많다.

그나마 이건 다행인 경우이고,
몇가지 원인이 가능한 경우에는, 각각의 원인을 확인해서 문제의 원인을 밝혀 내야 하는데, 다시 위와 같은 과정을 몇번씩 반복해야 하며, 만일에 말로 설명하기 곤란하거나 확인하기 곤란하다면 이건 그야말로 인내심의 바닥을 확인하게 되기도 한다.

차라리 상상도 못할 문제가 일어난 경우에는 A/S를 부르시라고 권하고, 애초에 포기해 버리니 오히려 부담도 없다.


이런 문제들의 원인은 여러가지가 있으나,
모르는 사람에게 지시를 내리기 어렵다는 것이 근본적인 한계가 아닌가 싶다.

이런 어려움을 피하기 위해서 Remote Desktop을 가능하도록 몇가지 설정이나 툴을 아버지의 컴퓨터에 설치해 두었으나 이를 사용하는 것에도 어려움이 많았다.
가령, 문제가 발생한 경우에, Remote Desktop으로 연결하기 위해서는 IP address를 알아야 가능한데, 아버지께 IP address가 무엇인지 알아내는 방법을 설명하는 것 조차 쉽지 않은 일이다.
여기에, 문제가 쉽게 해결이 되면 좋겠으나, 비교적 장시간이 소요될 수도 있다. 그러면 아버지께 시간이 걸리니 다른 일 보시라 말씀을 드리고 싶으나, rebooting이 필요한 작업의 경우에는 rebooting 후에 다시 IP address가 무엇인지 알아내는 과정부터 반복을 해야 하는 고로 이만 저만 귀찮은 일이 아니다.

무언가 간단하게 상대방과 연결하여 조치를 하거나 확인할 수 있는 방법은 없는걸까?