'etc'에 해당되는 글 22건

  1. 2013.10.23 개수와 갯수 회수와 횟수
  2. 2013.09.16 그리스 문자
  3. 2013.09.13 EntityCode
  4. 2013.08.09 Bitstream + 맑은 고딕
  5. 2013.08.01 Eclipse 단축키
  6. 2011.12.27 씁쓸하구마잉~
  7. 2011.01.12 배포툴 NSIS
  8. 2010.11.24 GNU란 무엇인가? GNU는 유닉스가아니다!
  9. 2010.11.24 php 언어 사용자로서의 자세
  10. 2010.11.24 [안철수 의장] "개발자여! 꿈을 가져라"

개수와 갯수 회수와 횟수

etc 2013. 10. 23. 15:11


개수일까 갯수일까. 회수일까 횟수일까.

우리말에서 가장 헷갈리는 부분. 사이시옷과 관련된 문제이다.


사이시옷

1)앞말이 모음으로 끝나고 뒷말의 첫소리가 된소리로 나거나(나무+가지→나뭇가지, 해+볕→햇볕)

2)뒷말의 첫소리 ㄴ, ㅁ 앞에서 ㄴ 소리가 덧나거나(코+노래→콧노래, 아래+이→아랫니)

3)뒷말의 첫소리 모음 앞에서 ㄴ 소리가 덧날때(깻잎, 나뭇잎, 훗일)


※한자어는 사이시옷을 붙이지 않는 것이 원칙이다.

갯수(X)→ 개수(個數)

촛점(X)→ 초점(焦點)


하지만 예외가 6개 있다.

곳간, 셋방, 숫자, 찻간, 툇간, 횟수


그러므로 개수와 갯수에서는 개수가 맞고, 회수와 횟수중에서는 횟수가 맞는 표현이다


'etc' 카테고리의 다른 글

건전지 자가 교체  (1) 2013.10.28
태양계의 움직임  (0) 2013.10.28
그리스 문자  (0) 2013.09.16
EntityCode  (0) 2013.09.13
Bitstream + 맑은 고딕  (0) 2013.08.09
:

그리스 문자

etc 2013. 9. 16. 09:54

Α α 알파 (Alpha)

 

Β β 베타 (Beta)

 

Γ γ 감마 (Gamma)

 

Δ δ 델타 (Delta)

 

Ε ε 입실론 (Epsilon)

 

Ζ ζ  제타 (Zeta)

 

Η η 에타(Eta)

 

Θ θ 쎄타(Theta)

 

Ι ι 이오타 (Iota)

 

Κ κ 카파 (Kappa)

 

Λ λ 람다 (Lambda)

 

Μ μ 뮤 (Mu)

 

Ν ν 뉴 (Nu)

 

Ξ ξ 크사이 (Xi)

 

Ο ο 오미크론 (Omicron)

 

Π π 파이 (Pi)

 

Ρ ρ 로우 (Rho)

 

Σ σ 시그마 (Sigma)

 

Τ τ 타우 (Tau)

 

Υ υ 웁실론 (Upsilon)

 

Φ φ 화이 (Phi)

 

Χ χ 카이 (Chi)

 

Ψ ψ 프사이 (Psi)

 

Ω ω 오메가 (Omega)

'etc' 카테고리의 다른 글

태양계의 움직임  (0) 2013.10.28
개수와 갯수 회수와 횟수  (0) 2013.10.23
EntityCode  (0) 2013.09.13
Bitstream + 맑은 고딕  (0) 2013.08.09
Eclipse 단축키  (0) 2013.08.01
:

EntityCode

etc 2013. 9. 13. 11:39
CharacterEntity NameEntity NumberDescriptionWhy Is This Featured?
©©©Copyright
||Vertical Bar
···Medium List Dot
↑↑Up Arrow
€€Euro Symbol
²²²Superscript 2
½½½Fraction ½
♥♥Heart


CharacterEntity NameEntity NumberDescription
   Inserts A Non-Breaking Blank Space
&&&Ampersand
"""Quotation Mark
©©©Copyright Symbol
®®®Registered Symbol
™™Trademark Symbol
““Opening Double Quotes
””Closing Double Quotes
‘‘Opening Single Quote Mark
’’Closing Single Quote Mark
«««Angle Quotation Mark (Left)
»»»Angle Quotation Mark (Right)
‹‹Single Left Angle Quotation
››Single Right Angle Quotation
§§§Section Symbol
¶¶Paragraph Symbol
••Big List Dot
···Medium List Dot
……Horizontal Ellipsis
||Vertical Bar
¦¦¦Broken Vertical Bar
––En-Dash
——Em-Dash


CharacterEntity NameEntity NumberDescription
¤¤¤Generic Currency Symbol
$$Dollar Symbol
¢¢¢Cent Symbol
£££Pound
¥¥¥Yen
€€Euro Symbol


CharacterEntity NameEntity NumberDescription
<&lt;&#60;Less Than
>&gt;&#62;Greater Than
&le;&#8804;Less Than Or Equal To
&ge;&#8805;Greater Than Or Equal To
×&times;&#215;Multiplication Symbol
÷&divide;&#247;Division Symbol
&minus;&#8722;Minus Symbol
±&plusmn;&#177;Plus/Minus Symbol
&ne;&#8800;Not Equal
¹&sup1;&#185;Superscript 1
²&sup2;&#178;Superscript 2
³&sup3;&#179;Superscript 3
½&frac12;&#189;Fraction ½
¼&frac14;&#188;Fraction ¼
¾&frac34;&#190;Fraction ¾
&permil;&#8240;Per Mille
°&deg;&#176;Degree Symbol
&radic;&#8730;Square Root
&infin;&#8734;Infinity


CharacterEntity NameEntity NumberDescription
&larr;&#8592;Left Arrow
&uarr;&#8593;Up Arrow
&rarr;&#8594;Right Arrow
&darr;&#8595;Down Arrow
&harr;&#8596;Left Right Arrow
&crarr;&#8629;Carriage Return Arrow
&lceil;&#8968;Left Ceiling
&rceil;&#8969;Right Ceiling
&lfloor;&#8970;Left Floor
&rfloor;&#8971;Right Floor


CharacterEntity NameEntity NumberDescription
&spades;&#9824;Spade
&clubs;&#9827;Club
&hearts;&#9829;Heart
&diams;&#9830;Diamond
&loz;&#9674;Lozenge
&dagger;&#8224;Dagger
&Dagger;&#8225;Double Dagger
¡&iexcl;&#161;Inverted Exclamation Mark
¿&iquest;&#191;Inverted Question Mark


출처 - http://www.entitycode.com

'etc' 카테고리의 다른 글

개수와 갯수 회수와 횟수  (0) 2013.10.23
그리스 문자  (0) 2013.09.16
Bitstream + 맑은 고딕  (0) 2013.08.09
Eclipse 단축키  (0) 2013.08.01
씁쓸하구마잉~  (0) 2011.12.27
:

Bitstream + 맑은 고딕

etc 2013. 8. 9. 09:51


BitstreamVeraSansMono.ttf


'etc' 카테고리의 다른 글

그리스 문자  (0) 2013.09.16
EntityCode  (0) 2013.09.13
Eclipse 단축키  (0) 2013.08.01
씁쓸하구마잉~  (0) 2011.12.27
배포툴 NSIS  (0) 2011.01.12
:

Eclipse 단축키

etc 2013. 8. 1. 09:41

Eclipse 단축키 알람표-.

 

찾기/바꾸기

Ctrl + F  :  Find/Replace 다이얼로그 표시.

Ctrl + K, Ctrl + Shift + K  :  선택한 문자열과 동일한 다음/이전 문자열 찾기.

Ctrl + J, Ctrl + Shift + J  :   점증적 찾기.(incremental search)

Ctrl + H  :  Search 다이얼로그 표시.

 

소스 코드 편집

Ctrl + 1(숫자 1)  :  빠른 수정.

Ctrl + Space  :  컨텐트 어시스트.

Ctrl + Shift + Space  :  파라미터 힌트 표시.

Ctrl + /  :  주석 토글.('//' 사용)

Ctrl + Shift + /, Ctrl + Shift + \  : 블록 주석 추가/삭제.

Ctrl + Shift + F  :   소스 코드 형식 정리.

Ctrl + Shift + O  :  import 문 정리.

Ctrl + D  :  한 줄 삭제.

Alt + Up, Alt + Down  :  선택한 블록을 한 줄 위로(또는 아래로) 이동.

Alt + Shift + S  :  Source 메뉴 표시.

Alt + Shift + T  :  Refactor 메뉴 표시.

Alt + Shift + Z  :  Surround With 메뉴 표시.

 

리팩터링

Alt + Shift + R  :  Rename.

Alt + Shift + V  :  Move.

Alt + Shift + C  :  Change Method Signature.

Alt + Shift + M  :  Extract Method.

Alt + Shift + L  :  Extract Local Variable.

Alt + Shift + I  :  Inline.

 

소스 코드 네비게이션

Ctrl + Shift + Up, Ctrl + Shift + Down  :  클래스의 이전(또는 다음) 멤버로 이동.

Ctrl + Shift + P  :  매칭되는 괄호로 이동.

F3  :  선택한 요소가 선언된 곳으로 이동.

F4  :  현재 타입의 상속 구조 표시.

Ctrl + Alt + H  :  메서드 호출 구조를 표시.

Ctrl + Shift + T  :  Open Type 다이얼로그 표시.

Alt + Shift + B  :  브레드크럼에 현재 요소 표시.

Ctrl + O  :  빠른 개요 보기.

Ctrl + T  :  빠른 상속 구조 보기.

Ctrl + .   Ctrl + ,  :  다음/이전 어노테이션(에러 또는 경고)으로 이동.

Ctrl + Q  :  가장 최근에 편집한 위치로 이동.

Ctrl + L  :  지정한 행으로 이동.

Alt + Left, Alt + Right  :  뒤로/앞으로 이동.

Ctrl + E  :  다른 에디터로 이동.

Ctrl + PaUp, Ctrl + PaDn  :  다음/이전 에디터를 활성화.

Ctrl + F6, Ctrl + Shift + F5  :  다음/이전 에디터로 이동.

Ctrl + F7, Ctrl + Shift + F7  :  다음/이전 뷰 보기.

Ctrl + F8, Ctrl + Shift + F8  :  다음/이전 퍼스펙티브 보기.

F12  :  에디터 활성화.

Ctrl + M  :  현재 활성화된 뷰나 에디터 최대화.

 

실행 및 디버깅

Ctrl + F11  :  실행 모드로 실행.

F11  :  디버그 모드로 실행.

Ctrl + Shift + B  :  브레이크 포인트 토글.

F5  :  Step Into.

F6  :  Step Over.

F7  :  Step Return.

Ctrl + R  :  Run to Line.

F8  :  Resume.

Ctrl + F2  :  프로그램 종료.

 

'etc' 카테고리의 다른 글

EntityCode  (0) 2013.09.13
Bitstream + 맑은 고딕  (0) 2013.08.09
씁쓸하구마잉~  (0) 2011.12.27
배포툴 NSIS  (0) 2011.01.12
GNU란 무엇인가? GNU는 유닉스가아니다!  (0) 2010.11.24
:

씁쓸하구마잉~

etc 2011. 12. 27. 09:40
http://emptydream.tistory.com/2772

'etc' 카테고리의 다른 글

Bitstream + 맑은 고딕  (0) 2013.08.09
Eclipse 단축키  (0) 2013.08.01
배포툴 NSIS  (0) 2011.01.12
GNU란 무엇인가? GNU는 유닉스가아니다!  (0) 2010.11.24
php 언어 사용자로서의 자세  (0) 2010.11.24
:

배포툴 NSIS

etc 2011. 1. 12. 14:49

일단 프로그램을 만들었는데 배포를 하라면 어떻게 할까요.
그냥 압축해서 줄수도 있고 배포툴을 사용할수도 있겠지요.

배포툴이라니까 옛날에는 InstallShield 라는 것이 VS6 에 포함되서 들어와서 좋았는데
그 이후버전부터는 유료로 전환을 했지요.
뭐 그렇긴 해도 아직까진 매우 쓸만합니다.

하지만 돈도 없는 가난한 개발자가 300만원이 넘는 저걸 일일이 살수도 없는 일.
그래서 찾다보니 가장 먼저 눈에 띄는것이 InstallFactory 라는 프로그램이지요.
http://file.naver.com/pc/view.html?fnum=28516&cat=34

이것도 매우 좋았습니다.
장점으론 친절한 GUI 화면에 샘플까지 있어서 한번씩 해보면 다 이해가 간다는...
단지 다른 설치 프로그램으로 설치된 곳에 중복 설치시 구분을 못해준다는 것과
무인 설치로 만들지 못한다는 단점이 있지만 뭐 단점이라고도 할수 없지요.

이제 NSIS 를 봤습니다.
http://nsis.sourceforge.net/

친절합니다. 한쪽에 최종 버전을 바로 다운로드 가능하게 링크도 되어있지요.
설치까지 깔끔하게 되고 바탕화면에 아이콘 생성되지요.
실행을 했습니다.



아 이런 화면이 나오는군요.
아무래도 초보이다보니 Documentation 의 NSIS UsersManual 을 클릭했습니다.
.......
뭔가요. 이 원론수준의 메뉴얼은.
이걸로는 도움이 되지 않습니다. 2번째 튜토리얼을 봐도 뭘 어떻게 해야할지 감이 안잡혔습니다.

한참을 멍하게 있다가 그래 예제를 한번 보자! 하면서 Example scripts 를 봤습니다.
......
예제는 정말 풍부하게 있습니다. 단지 구조를 모르니 전체적인 이해가 안될뿐.
C 라면 main(){ } 도 모르고 시작하는 셈이지요.

검색을 했습니다. 아 뭔가 툴이 보입니다.

HM NIS EDIT: A Free NSIS Editor/IDE

라고 하는군요.
공짜랍니다. 역시 공짜는 일단 보고 가야겠지요.
http://hmne.sourceforge.net/

홈페이지에 들어가서 읽어보니, 오오. 한국어까지 지원을 합니다.
쭈욱 내려보니 인스톨 파일이 있군요.
다운로드 받아서 설치를 했습니다.

바탕화면에 아이콘이 생기고 실행하니 스크립트 작성 마법사가 보이는군요!

이제 만들어 볼까요.




마법사 버튼 클릭!



아. 한글입니다! 다음을 눌러 봅시다.



첫 화면은 프로그램 정보 입력 화면이 나오는군요.
알맞게 입력을 해줍시다.

그러고 다음.



설치파일에 들어갈 아이콘과 최종적으로 나올 설치파일 이름/ 인스톨러의 언어선택/
설치화면(Classic/Modern/사용안함?) / 압축방식(zlib,bzip2,LZMA,사용안함) 을
선택하는 화면이 나왔습니다.
일단 적당히 맞춰볼까요. 아이콘은 NotePad.exe 를 선택해주고 파일명 적당히 수정,
언어는 기본 Korean 으로 되어있군요.
나머진 놔두고 다음.



이제 설치할 목표 폴더를 선택하는 곳이 나왔네요.
적당히 맞춰주시고 다음.



이제 설치할 파일을 선택하게 나왔습니다.

왼쪽은 설치모드가 여러개일때 각각 이름을 정해주는 구문이고
오른쪽은 그 설치모드에서 설치될 파일들을 선택하는 곳이지요.

트리 모양의 아이콘을 선택하면 폴더채로 선택이 가능합니다.

단지 단점이라면 비어있는 폴더는 선택을 못하더군요.
이건 나중에 스크립트에서 수정하면 됩니다.

아래쪽의 체크박스를 선택하면 설치모드 선택화면이 뜹니다.


파일 선택을 눌렀을때 화면.

폴더 선택을 눌렀을때 화면

적당히 설정해주고 다음을 눌러줍시다.



이제 시작메뉴 설정하는 것과 바로가기를 만드는 구문이 나옵니다.
사용하면서 발견한 버그는 여기서 EXE 파일이 여러개일경우 제일 첫번째 EXE파일을
메인으로 선택해 놓는다는 것이 있으니 이건 나중에 스크립트가 만들어지면 수정을 해야합니다.

이건 테스트이니 그냥 적당히 설정후 다음.



이제 설치가 다 끝나고 자동 실행할 파일을 설정하는 화면입니다.
뭐 설명이 필요하겠습니까.

다음을 누릅시다.



언인스톨러를 만드는 화면이 나왔네요.
이건 뭐 맘에 들게 적당히 수정만 하시고 다음을 눌러주세요.



드디어 끝났군요.
사라질지도 모르니 스크립트 저장을 체크하고 완료를 합시다.

이제 스크립트가 작성 완료가 되었습니다.
지금부터 스크립트의 기능의 일부만 설명해 보겠습니다.

; HM NIS Edit Wizard helper defines

이라고 되어있는 부분은 마법사에 의해 만들어진 구문이니 적당히 변경할때만 수정하시면 됩니다.

; MUI x.xx compatible ------

부터

; MUI end ------

사이의 구문들은 보면 이해가 다 가시겠지만 설치할때 나오는 순서 와 기본 아이콘 설정입니다.
여기서 포인트는 자기가 적당히 수정을 가할수 있다는 것이겠지요.

; License page
!insertmacro MUI_PAGE_LICENSE "path\to\licence\YourSoftwareLicence.txt"

구문은 필요없으니 앞에 ; 를 넣어 없애겠습니다.
다른 구문도 마찬가지로 앞에 ; 를 붙여버리면 해당 창이 뜨지 않습니다.

완전 무인설치 하려면

; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\NOTEPAD.EXE"
!insertmacro MUI_PAGE_FINISH

부분만 남기고  ; 를 붙여버리면 되겠지요.

이제 다음 부분은 설치하거나 지울 파일들을 설정하는 부분인데,

필요한 부분만 설명하면

InstallDir "$PROGRAMFILES\Notepad Test"

은 말그대로 설치할 폴더를 지정해 줍니다. $PROGRAMFILES 같은 것은 F1 을 눌러보시면
NSIS 도움말로 연결되어 있으니 자세한 정보를 얻을 수 있습니다.
직접 찾으시려면 NSIS 도움말 4.2 Variables 내에 있습니다.

설치하는 과정에 보면 폴더를 만드는 과정이 생략이 됩니다.

단지 복사될 폴더를 지정하는 화면만 나오지요.

  SetOutPath "$INSTDIR"

요 명령어 입니다.
이 안에 폴더 지정과 없을경우 만드는 기능까지 들어있습니다.

아까 파일 지정할때 비어있는 폴더를 지정하지 못하였는데,

  SetOutPath "$INSTDIR\dir1"

식으로 지정하면 해당 폴더가 생성됩니다.

  CreateDirectory "$INSTDIR\dir1"

도 물론 가능합니다.

  File "WINNT\NOTEPAD.EXE"

로 하면 SetOutPath 로 되어있는 폴더에 해당 파일이 복사가 되지요.

아래쪽은 Uninstall 구문인데 뭐 File 추가하면 삭제할수 있게 다른 구문과
똑같이 붙여주면 되니 크게 힘들진 않을것입니다.

컴파일을하니....

아 .EXE 파일은 아이콘 인식을 못하는군요. 따로 ico 를 만들어놔야 하겠습니다.
NSIS 기본 제공 아이콘으로 변경하고 다시 컴파일.

네 완성되었습니다.
실행하면 바로 Notepad.exe 가 지정된 폴더에 설치되고 단축아이콘도 순식간에 나타납니다.

이제 기본은 되었고 물론 고급 사용을 하려면 Example Script 를 파고 들어야 할테지만
현재로는 잘 된다는 것에 만족을.

'etc' 카테고리의 다른 글

Eclipse 단축키  (0) 2013.08.01
씁쓸하구마잉~  (0) 2011.12.27
GNU란 무엇인가? GNU는 유닉스가아니다!  (0) 2010.11.24
php 언어 사용자로서의 자세  (0) 2010.11.24
[안철수 의장] "개발자여! 꿈을 가져라"  (0) 2010.11.24
:

GNU란 무엇인가? GNU는 유닉스가아니다!

etc 2010. 11. 24. 18:42

GNU란 무엇인가? GNU는 유닉스가아니다!
http://www.gnu.org/home.ko.html

GNU란 'GNU는 유닉스가 아니다'(Gnu is Not Unix)를 의미하는 재귀적 약어다. GNU는 유닉스와 완벽하게 호환하는 소프트웨어 시스템이며 사용 가능한 모든 이가 자유롭게 사용할 수 있도록 작성한 것이다. (1) 몇몇 다른 자원자들이 도움을 주고 있으며 많은 시간적, 금전적 지원과 프로그램과 장비가 절실히 필요한 상태이다.

지금까지 우리는 편집 명령을 작성하기 위한 인공 지능 언어 리스프(Lisp)를 갖춘 Emacs 문서 편집기, 소스 수준의 디버거(debugger), yacc 호환 파서 생성기(parser generator), 링커등 35개 가량의 유틸리티를 만들어 왔으며, 쉘(shell-명령어 번역기)은 거의 완벽한 수준에 이르렀다. 이식성 있게 최적화된 C 컴파일러가 새로이 제작되었으며 이번 해에 배포될 것이다. 이미 커널(kernel)을 갖고 있기는 하지만 유닉스를 구현하기 위해서는 보다 많은 사양들이 추가되어야 할 것이다. 커널과 컴파일러가 완성되면 프로그램 개발에 적합한 GNU 시스템을 배포할 수 있을 것이다. 우리는 문서 형식기(text formatter)로 TeX를 사용할 것이며, nroff도 여전히 사용될 것이다. 또한, 이식성을 갖춘 공개 소프트웨어인 X 윈도우 시스템도 사용할 것이다. 이런 후에 이식성을 확보한 Common Lisp, 게임 프로그램인 Empire, 스프레드시트(spreadsheet) 등과 수많은 다른 프로그램을 온라인 문서를 포함하여 추가할 것이다. 우리는 결국, 일반적인 유닉스 시스템의 모든 기능을 갖추게 될 것이다.

GNU는 유닉스 프로그램들을 사용할 수 있게 해주지만 유닉스와 동일한 것은 아니다. 우리는 다른 운영체제에서의 경험을 살려 가능한 사용하기 편리하도록 향상을 꾀했다. 특히, 긴 길이와 복잡한 조합 형태의 파일 명을 쓸 수 있게 하고, 파일 버전을 표시하고, 견고한 파일 시스템을 구축하고, 터미널 비 의존적인 디스플레이 장치를 지원할 계획이며 최종적으로 몇 개의 리스프 프로그램과 일반적인 유닉스 프로그램이 한 화면을 나누어 쓸 수 있는 리스프 기반의 윈도우 시스템을 만들 것이다. 시스템 프로그래밍 언어로 C와 리스프 두 가지를 다 사용할 수 있을 것이다. 일대일 네트워크 기능인 UUCP(Unix to Unix Copy Program), MIT Chaosnet, 인터넷 프로토콜을 지원할 것이다.

GNU는 본래 가상 메모리를 가진 모토롤라(motorola)사의 68000/16000 CPU 계열의 컴퓨터를 겨냥하고 제작되었다. 그 까닭은 그 기계들에서 GNU를 가장 쉽게 작동시킬 수 있기 때문이다. 보다 작은 컴퓨터에서 작동시키기 위해서는 사용하고자 하는 사람이 특별한 노력을 기울여야 할 것이다.

심각한 혼동이 야기될 수 있으므로 'GNU'가 소프트웨어 시스템이 아닌 이 프로젝트 자체를 지칭할 때는 'GNU'의 'G'를 반드시 발음해 주기 바란다.

왜 GNU를 작성해야만 했는가?
어 떤 프로그램을 좋아한다면 당연히 그것을 좋아하는 사람들과 함께 나누는 것이 황금률(대우받고자 하는 데로 대하라-성서)이라고 생각한다. 소프트웨어를 판매하는 사람들은 사용자를 각각 구분하고, 그들 위에 군림하고, 사용자 서로가 프로그램을 공유하는 것을 막고자 한다. 나는 이런 식으로 사용자간의 결속이 깨지는 것을 거부한다. 나는 올바른 양심으로 비공개 협정이나 소프트웨어 라이센스 협약에 서명할 수 없다. 여러 해 동안 인공지능 연구소에서 일하면서 그러한 경향과 다른 박정한 일들에 저항해 보았지만 결국에는 그들의 승리로 끝나고 말았다. 내 의지에 역행하는 그런 일들이 일어나는 연구소에 나는 더이상 머무를 수가 없었다.

내 가 계속해서 명예를 손상시키지 않고 컴퓨터를 사용하기 위해서 나는 사용이 제한되는 소프트웨어들을 더이상 이용하지 않고도 작업을 해 나갈 수 있는 충분한 자유 소프트웨어의 본체를 만들 결심을 했다. 나는 MIT(Massachusetts Institute of Technology) 측이 어떠한 법률적 근거에 의해서도 GNU의 자유로운 배포를 제지하지 못하도록 하기 위해서 연구소를 그만두었다.

유닉스와 호환성을 가지는 이유
유닉스가 이상적인 운영체제라고 생각하지는 않지만 제법 쓸만하다고 할 수 있다. 유닉스의 골자는 훌륭한 것이며 나는 유닉스의 장점을 해치지 않고도 부족한 점들을 메울 수 있으리라고 생각했다. 그리고 유닉스와 호환성을 가지면 다른 많은 사람들이 적응하기에도 편리할 것이라 생각했다.

GNU를 사용하는 방법
GNU 는 저작권이 인정되는(not public domain) 소프트웨어다. 누구나 GNU를 개작하고 배포할 수 있지만 어떤 이도 GNU가 보다 널리 배포되는 것을 제한할 수 없다. 즉, 변경한 내용을 독점할 수 없다는 것이다. 나는 모든 버전의 GNU가 공개된 채로 남아 있기를 보장받고 싶은 것이다.

많은 프로그래머들이 동참을 원하는 이유
나는 그 동안, GNU에 흥미를 느끼고 돕고자 하는 많은 프로그래머들을 찾을 수 있었다.

많 은 프로그래머들은 시스템 소프트웨어가 상용화된 것을 불쾌하게 생각한다. 이렇게 함으로 해서 보다 더 많은 돈을 벌 수는 있겠지만 일반적으로 이런 상황에서는 프로그래머들이 서로를 동지로 느끼기보다는 투쟁해야 할 대상으로 느끼게 된다. 프로그래머들 사이의 우정을 나타내는 가장 기본적인 행동은 프로그램을 나누는 것이다. 이제는 전형적인 핵심으로 여기는 마케팅 협정은 프로그래머들이 친구로서 다른 프로그래머를 대하는 것을 금하고 있다. 소프트웨어를 구입한 자는 우정과 준법 중 하나를 선택해야만 한다. 물론 자연적으로 많은 이들이 우정을 보다 중요시한다. 그러나 법의 존재 가치를 인정하는 사람들은 어떤 결정을 내리든 편한 마음을 가질 수 없다. 그들은 냉소적이 되어 프로그래밍은 단지 돈을 버는 수단이라고 생각하게 된다.

그러나 독점적인 프로그램들 대신 GNU를 사용하게 되면, 우리는 모든 이에게 온정을 가질 수 있으며 법도 준수하게 된다. 게다가 GNU는 공유의 표본으로써 다른 이가 우리와 함께 공유에 동참하도록 고무하는 깃발 노릇도 한다. 이는 우리가 상용 프로그램을 쓸 때는 느낄 수 없는 조화로운 느낌을 갖게 한다. 나와 대화한 프로그래머들 중 거의 반정도는 이것은 돈이 대신할 수 없는 중요한 행복이라는데 공감했다.

당신이 기여할 수 있는 방법
나는 제조업자들에게는 기계와 돈을, 개인들에게는 프로그램과 노동을 지원해 줄 것을 요청한다.

컴 퓨터를 기증해서 기대할 수 있는 중요한 점은 GNU가 머지않아 그 기계에서 작동 할 것이란 점이다. 기증된 컴퓨터는 완전해 질 것이며 따라서, 시스템을 사용할 준비를 모두 갖추게 되어 능력과 효율을 과대 포장할 필요가 없을 것이다.

나는 GNU를 위해 시간제로 일하기를 갈망하는 많은 프로그래머들을 찾을 수 있었다. 대부분의 프로젝트에서 이러한 시간제로 배치된 작업을 통합하고 조정하는 일은 매우 어려웠다. 독립적으로 쓰여진 부분들은 함께 동작하지 않았다. 그러나 유닉스를 이용할 경우에는 그러한 문제가 생기지 않는다. 완전한 유닉스 시스템은 개별적인 설명이 포함된 백여 개의 유틸리티를 포함한다. 대부분의 인터페이스 사양은 유닉스에 호환되도록 맞추어 진다. 만약 각각의 프로그래머가 유닉스 유틸리티 한 개를 유닉스에 호환하도록 재 구현하고 본래의 유닉스 시스템에서 충분히 작동하게 할 수 있으면, 이것들은 함께 묶어 놓아도 올바르게 작동할 것이다. 예기치 못한 문제 발생의 가능성을 고려한다 하더라도 전체적인 구성 요소들을 통합하는 작업은 충분히 가능할 것이다(커널을 만드는 작업은 세밀한 대화가 필요할 것이며, 소수의 호흡이 잘 맞는 집단이 적당할 것이다)

만일 내가 금전적인 지원을 얻는다면 약간의 인원을 전일제나 시간제로 고용할 수 있을 것이다. 일반적인 프로그래머의 수준보다 높은 봉급을 줄 수는 없겠지만 돈을 가지는 것만큼이나 공동체 의식을 정립하는 일도 중요한 의미를 가진다고 생각하는 사람들을 찾아 볼 것이다. 이런 사람들에게 적절한 보수를 제공하는 것은 그들이 생계에 대한 절박함에서 벗어나서 보다 자유롭게 그들의 모든 역량을 GNU에 집중할 수 있도록 할 수 있는 방법이 될 것이다.

모든 컴퓨터 사용자가 이득을 얻게 되는 이유
일단 GNU가 작성되니까, 마치 공기처럼, 모든 사람들이 훌륭한 시스템 소프트웨어를 자유롭게 얻을 수 있게 되었다. (2)

이 것은 단지 모든 이에게 유닉스의 사용에 대한 비용을 덜어 주는 것보다 훨씬 더 많은 의미를 가진다. 이는 시스템 프로그래밍에 드는 노력이 불필요하게 중복되는 것을 피할 수 있음을 의미한다. 대신, 절약된 노력은 기술 수준을 향상시키는데 사용될 것이다.

시 스템에 대한 모든 소스 코드가 모든 사람에게 제공될 것이다. 결과적으로, 시스템에 변화를 주고자 한다면 언제든지 스스로 자유롭게 수정할 수 있을 것이다. 혹은 적당한 프로그래머나 업체에 의뢰할 수도 있을 것이다. 사용자들은 더이상 프로그램 소스를 독점적으로 소유하거나 이를 수정할 수 있는 프로그래머나 회사에 의존하지 않아도 될 것이다.

학교는 모든 학생들이 시스템 코드를 배우고 향상시키도록 장려함으로써 보다 나은 교육 환경을 조성할 수 있을 것이다. 하버드 대학의 컴퓨터 연구소에서는 어떤 프로그램이든지 그 소스가 공개되지 않으면 시스템에 설치하지 못하게 하는 정책을 쓰곤 했다. 실제로 어떤 프로그램들을 설치하지 못하게 함으로써 이 정책을 고수했다. 나는 이것에서 커다란 영감을 받게 되었다.

결국에는, 누가 시스템 소프트웨어를 소유하고 있으며 누구에게 사용 자격을 부여할 것인가를 결정하는 문제들이 사라지게 될 것이다.

복 사 라이센스를 포함하여 프로그램 사용에 대한 지불을 준비할 때는 언제나 개인이 지불해야 할 돈이 얼마인가를 알아내야 하는 번잡한 과정에 의해서 사회에 많은 비용을 야기시킨다. 그리고, 오직 경찰 당국만이 모든 사람이 그것을 따르게 하도록 힘을 행사할 수 있다. 막대한 비용을 들여 공기를 생산하는 우주 정거장을 생각해 보자. 이런 경우 각각의 개인은 자신이 호흡하는 공기에 대해 리터(liter) 단위로 요금을 지불하는 것이 합당할 것이다. 그렇다고는 해도 호흡하는 공기의 양을 측정하기 위해서 계측기가 달린 방독면을 밤낮으로 쓰고 있어야 한다면 그런 방식은 지불 능력에 관계없이 타당한 것이 아니다. 그리고 TV 카메라는 당신이 마스크를 벗는 불법을 행하는지 어디서나 지켜보아야 할 것이며 따라서, 이것보다는 사람 수에 따라 일정한 세금을 부과하고 마스크를 벗어 던지는 것이 현명하다.

프로그램의 일부 혹은 전체를 복제하는 행위는 프로그래머에게 있어서는 숨을 쉬는 것만큼이나 자연스러운 일이며 생산적이다. 따라서, 프로그램은 마땅히 자유롭게 사용될 수 있어야 한다.

몇 가지 GNU의 목표에 대한 반대 의견
"무료라면 아무도 그것을 쓰지 않을 것이다. 왜냐하면 무료라는 것은 어떠한 지원도 기대할 수 없다는 것을 의미하기 때문이다."

"당신은 그 프로그램에 대한 지원과 도움을 제공하는 대가로 이에 관한 비용을 부과해야만 한다."

만약 사람들이 돈을 지불하고서 GNU에 대한 서비스를 받기를 희망한다면, GNU를 무료로 얻은 사람들에게 그런 서비스를 제공하는 회사도 이익을 얻을 수 있을 것이다. (3)

우 리는 반드시 실제 프로그래밍 작업과 단순 관리 작업을 구별해야 한다. 전자는 때때로 소프트웨어 판매 회사에게 의존할 수가 없다. 만일 당신의 문제가 보편적으로 발생되는 사안이 아니라면, 판매 회사는 그 문제를 끝까지 해결해 주려고 하지 않을 것이다.

만 일 당신의 사업이 지원에 대한 의존이 필요하다면, 필요한 모든 소스와 도구를 갖춰야 할 것이다. 그리고, 당신의 문제를 해결해 줄 수 있는 사람을 고용할 수 있을 것이다. 이것이 다른 사람의 자비를 얻는 것은 아니다. 유닉스에서는 이러한 부분에 있어서의 소스의 가격이 고려되어 있지 않지만 GNU의 경우는 이러한 문제를 용이하게 할 수 있을 것이다. 그러나, 유능한 사람을 구할 수 없을 가능성은 여전히 존재하고 이것을 배포에 따른 문제라고 비난할 수는 없다. GNU는 모든 세계의 문제를 제거하는 것은 아니며 단지 그중 하나일 뿐이다.

한편, 컴퓨터에 대해 전혀 모르는 사용자들은 여전히 단순한 관리 서비스를 필요로 한다. 이러한 일은 사용자 스스로 능히 처리할 수 있는 종류의 일이지만 그러한 방법을 모르기 때문이다.

이 런 서비스들은 단순한 수작업이나 복구 서비스를 지원하는 회사들이 제공할 수 있다. 사용자들이 제품을 사고 그에 대한 서비스를 받는 방식을 받아들인다면, 제품을 무료로 받고 서비스에 대한 비용을 지불하는 방식에도 기꺼이 동의할 것이다. 서비스를 제공하는 회사들은 가격과 질적인 면에서 모두 완벽을 기할 수 있을 것이며 사용자들은 특정한 업체에 얽매이지 않아도 될 것이다. 또한, 그러한 서비스가 필요하지 않은 사람들은 서비스에 대한 비용을 들이지 않고도 프로그램들을 쓸 수 있을 것이다.

"광고를 하지 않고는 많은 사람들에게 알릴 수 없을 것이며, 그러기 위해서는 필히 프로그램에 가격을 매겨야 한다.

"무료로 제공되는 프로그램을 광고하는 것은 무의미하다."

GNU 같은 프로그램을 많은 컴퓨터 사용자들에게 알릴 수 있는 방법에는 무료 혹은 극히 적은 비용으로 사용할 수 있는 다양한 정보 전파 방식이 있다. 그러나 광고를 하는 것이 보다 많은 컴퓨터 사용자에게 정보를 알릴 수 있는 방법일지도 모른다. 만일 실제로 이런 것이 사실이라면 복제와 배포를 하는데 돈을 받음으로써 능히 광고와 그 외의 부수적인 비용을 감당할 수 있을 것이다. 이런 방식에서는, 광고를 보고 배포본을 구입해서 이익을 얻을 수 있는 사용자가 광고 비용을 부담하게 되는 것이다.

반면, 많은 사람들이 GNU를 그 친구들을 통해서 구한다면, 이런 종류의 회사들은 성공할 수 없을 것이다. 이는 GNU를 보급하는데 광고가 필요한 것은 아님을 보여준다. 그렇다고 한다면 무료로 보급되고 있다는 사실이 무료로 알려지는 것을 바라지 않을 만한 이유가 있겠는가? 자유 시장 경제에서는 광고에 의하지 않은 전파 방식 또한 충분히 가능한 것이다. (4)

"나의 회사는 경쟁사들에 대한 우위를 차지하기 위해 독점적인 운영체제가 필요하다."

GNU 는 시스템 소프트웨어를 경쟁이라는 범주에서 제외시킬 것이다. 당신의 회사가 우위를 차지할 수 없는 것처럼 당신의 경쟁사들도 그 점에 있어서는 마찬가지일 것이다. 당신과 당신의 경쟁사들 모두 이 분야에서는 별반 이득을 볼 수 없겠지만 다른 분야에서 서로 경쟁하는 것은 가능할 것이다. 당신의 사업이 운영체제를 판매하는 것이라면 GNU가 마땅치 않게 생각 될 것이다. 당신의 사업이 이런 종류가 아니라면 GNU는 시스템 소프트웨어에 관련된 막대한 비용을 절감해 줄 것이다.

나는 제작자와 사용자들이 GNU의 발전에 기여해 나감으로써 서로의 비용을 절감할 수 있기를 희망한다. (5)

"프로그래머는 자신의 창의력에 대한 보상을 받을 자격이 있지 않은가?"

보 상받을 만한 일이란 사회적 공헌을 말한다. 창의성이란 그 결과물을 사회가 대가 없이 사용할 수 있을 때 사회적 공헌이 되는 것이다. 어떤 혁신적인 프로그램을 제작한 사람이 그에 대해 보상을 받아야만 한다면, 같은 맥락에서 그것을 자유롭게 사용하지 못하게 한다면 그때는 제재를 받아야 할 것이다.

"프로그래머는 그의 창의력에 대한 보상을 요구할 수 없는가?"

유해한 수단을 사용하지 않는다면, 노동에 대한 보수와 자신의 소득이 극대화되기를 바라는 것은 아무 문제가 없다. 그러나 지금 까지 소프트웨어 산업에서 보편화된 수단은 유해한 방법이다.

프 로그램을 사용하는 것에 제한을 둠으로써 돈을 벌어들이는 행위는 프로그램이 사용되는 범위와 방식을 제한하기 때문에 유해한 것이다. 이는 인간들이 프로그램으로부터 얻을 수 있는 인간적인 풍요로움을 전체적으로 감소시키는 것이다. 프로그램의 자유로운 사용에 대한 제한은 결국, 유해한 파괴 행위라고 할 수 있다.

선량한 시민이라면 자신이 보다 부유해지기 위해 그런 수단을 쓰지 않는다. 그 까닭은, 만일 모든 사람들이 그렇게 한다면 상호간의 유해한 행위로 인해 결과적으로 우리 모두는 보다 빈곤해 질 것이기 때문이다. 이것은 칸트의 윤리학(네 의지의 준칙이 언제나 보편적 입법의 원리로서 타당하게 행동하라-실천이성비판)이나 황금률같은 분명한 것이다. 나는 모든 사람들이 자기만의 정보를 축적해 나가는 것은 바람직하다고 여기지 않기 때문에, 누군가 그런 일을 한다면 그것이 잘못된 일이라고 생각한다. 특히, 한 개인의 창의성을 보장받고자 하는 욕구가 일반적으로 전체의 창의성이나 혹은 그 일부분을 저하시키는 행위를 정당화시키는 것은 않는다.

"프로그래머들의 밥줄이 끊기지 않을까?"

나는 모든 사람이 프로그래머가 될 필요는 없다고 답하고 싶다. 아마 우리들 대부분은 거리에 나가 인상을 써서 간신히 약간의 돈을 벌어 살아갈 수는 없을 것이다. 그러나 결과적으로, 우리는 거리에 나가 인상 써서 돈을 번다고 비난받을 필요도 없고, 또한 빈궁해질 필요도 없을 것이다. 우리는 그와는 다른 일을 할 수 있을 것이다.

그러나 이것은, 프로그래머는 소프트웨어를 소유하지 않으면 단 한푼도 벌 수 없다 라는 질문하는 사람의 독단적인 가정을 받아 들였다는 점에서 오답이라 할 수 있다. 아마도, 이런 생각은 극단적일 것이다.

프로그래머가 생계에 지장을 받지 않을 것에 대한 진정한 이유는 지금과 같은 정도는 아니겠지만 여전히 프로그래밍으로 돈을 벌 방법들이 있기 때문이다.

프 로그램의 복제를 제한하는 것이 소프트웨어 사업에 있어서 유일한 이윤 창출 방법은 아니다. 이런 방식이 보편화된 것은 이렇게 함으로써 가장 돈을 많이 벌 수 있기 때문이다. 고객들에 의해 이런 방식이 거부되거나 금지된다고 해도, 소프트웨어 사업은 지금까지 흔하지는 않았던 새로운 방식으로 전환해 나갈 길을 모색할 수 있을 것이다. 사업에 있어서 이윤 창출 방법은 무궁 무진한 것이다.

아마 새로운 기반 하에서의 프로그래밍은 지금처럼 수익성이 높은 일은 아닐 것이다. 하지만 이것이 변화의 쟁점은 아니다. 지금의 판매 사원들은 그들의 봉급을 버는 방식이 불합리한 것이라고 생각하지는 않는다. 프로그래머들이 그와 같은 방법으로 소득을 올린다 해도 하등 정당하지 못할 이유가 없다(실제적으로 프로그래머들은 여전히 그들보다 월등히 많은 소득을 올리고 있다)

"창작물의 사용 제한 여부는 창작자 자신이 갖고 있는 권리가 아닐까?"

"특정 창작물에 대한 사용을 통제하는 것"은 결국 다른 사람들의 삶에 대한 통제를 의미한다. 이는 다른 사람들의 삶을 위축시키는 것이기 때문이다.

지적 소유권에 관해 상세하게 공부한 사람들(변호사 등)은 그 자체로서 완벽한 지적 소유물은 없다고 주의 깊게 말한다. 정부가 인정하는 추상적인 지적 소유권들은 특정 목적을 위한 특정 법률 조항으로부터 발생한 것이다.

예 를 들어, 특허제도는 발명가가 그의 고안품의 세부 사항을 공개하는 것을 장려하고자 설립된 것이다. 그 목적은 발명한 사람을 돕기보다는 사회를 돕기 위한 것이다. 시간의 측면에서 보면, 특허가 갖는 17년간의 유효기간은 기술이 발전하는 비율과 비교해 볼 때 짧다. 특허권은 생산 업자들 사이의 문제이고 생산을 향상시키는 것과 비교해서 특허권 계약에 드는 비용과 노력은 적다고 보기 때문에 특허권은 일반적으로 그다지 해롭게 작용하지 않는다. 또한, 그것은 대부분의 개인들이 특허 받은 제품을 사용하는 것을 제한하지는 않는다.

고대에는 저작권이라는 것이 존재하지 않았으며 그 시대의 작가들은 빈번하게 다른 이의 작품 상당량을 소설 이외의 작품에 복제하기도 했다. 이런 작업들은 유용한 것이었으며 비록, 그 일부분이기는 하지만 많은 사람들의 작품이 계속해서 전수되는(존재해 나가는) 유일한 방법이었다. 저작권 제도는 작가 의식을 고취시키려는 의도로 만들어진 것이다. 이것이 처음 만들어 질 때 주로 염두에 두었던 책의 범주에서 보면 책은 별도의 비용에 의해서 인쇄기를 사용해서만이 복제가 가능하기 때문에 저작권은 그다지 해롭지는 않았다. 또한, 대다수의 사람들이 책을 읽는 것을 제한하지도 않았다.

모든 지적 소유권은 그것들이 어떻든지 그를 허용함으로써 사회 전체에 이득이 된다고 여겨져서 사회가 허용할 때만 정당하게 되는 것이다. 그러나 어떤 특정 상황에서든 우리는 "그런 허가를 내주는 것이 정말로 우리에게 유익한가? 어떤 종류의 허가를 내줄 것인가?" 하는 질문을 해보아야만 한다.

오늘날의 프로그램들의 경우는 백여년전의 책의 경우와 크게 다르다. 프로그램이 이웃간에 손쉽게 복사될 수 있다는 사실, 소스 코드와 목적 코드로 구분된다는 점, 단순히 읽거나 즐기기 위해서 사용되지는 않는다는 사실들이 묶여져서 저작권을 강요하는 사람들은 사회 전체에 정신적, 물질적으로 해를 끼치는 상황을 만들고 있으며 법적 허용 여부에 상관없이 사용자들의 이용을 제한하고 있는 것이다.

"경쟁함으로써 보다 나은 결과를 얻을 수 있는가?"

경쟁의 기본 원리는 경주(race)이며 승자에게 상을 줌으로써 주자들이 더욱 빨리 달리도록 장려할 수 있는 것이다. 만약 자본주의가 실제로 이런 방식을 따른다면 이는 바람직한 것이다. 그러나 자본주의 옹호론자들은 실제로 항상 이런 방식으로 움직인다고 단정짓는 잘못을 범한다. 만일, 주자들이 상이 주어지는 이유를 망각한 채 승리에만 집착한다면 말할 것도 없이 그들은 다른 주자를 공격한다든지 하는 색다른 전략은 찾게 될 것이다. 주자들이 먼저 싸우기부터 한다면 그들은 결국 모두 늦어질 수밖에 없는 것이다.

독 점적이고 비밀에 싸인 소프트웨어는 도덕적으로 먼저 싸우기부터 하는 주자들과 동일하다. 슬픈 일이지만 우리의 유일한 심판은 그다지 공정해 보이지 않으며 "매 10 야드(yard)마다 한번씩 상대방을 가격할 수 있다."는 규정을 적용하는 정도일 것이다. 싸움에 대한 조짐이 있을 때조차도 벌칙을 주어야 하는데도 말이다.

"금전적인 특혜가 없다면 아무도 프로그래밍을 하지 않을 것이다."

실 제적으로, 많은 사람들이 분명한 금전적인 특혜가 없이도 프로그래밍을 할 것이다. 프로그래밍은 어떤 사람들에게는 저항할 수 없는 매력인 것이며 보통 프로그래밍에 능숙한 사람에게 더욱 그렇다. 비록 생활의 기반이 될 가망이 없더라도 꾸준히 계속해 가는 직업적인 음악인들이 많이 있다.

그러나 실제로 이 질문은 비록 일반적으로 많이 제기 되지만 조금은 다른 관점의 문제라고 할 수 있다. 프로그래머들의 소득원이 없어지는 것이 아니라 단지 수입이 줄어드는 것이기 때문이다. 따라서, 올바른 질문은 "금전적인 보상이 줄어들더라도 사람들이 프로그래밍을 하게 될까?"일 것이다. 내 경험에 의하면 그렇게 할 것이라고 생각한다.

십 년 이상 동안, 세계 정상급 프로그래머들이 인공 지능 연구소에서 일했었지만 그들이 받은 보수는 다른 어떤 곳에서 기대할 수 있는 것보다 훨씬 적은 것이었다. 그들은 사회적 인정이나 명성과 같은 다양한 종류의 비금전적인 보상을 받았다. 그리고 창의력은 그 자체가 이미 보상과 흥미를 내포하고 있는 것이다.

그후, 그들 대부분은 이전의 작업처럼 그들이 흥미롭게 생각하는 일을 높은 보수를 받으며 할 수 있는 기회가 주어지자 연구소를 떠났다.

이 사실에서 알 수 있는 것은 사람들은 부유해지기보다는 나름대로의 어떤 까닭을 위해서 프로그래밍을 한다는 것이며 그런 조건 위에 상당한 보수까지 받을 기회가 주어진다면 그를 예상하고 요구하게 되는 것이다. 보수가 낮은 조직은 높은 보수를 받는 조직과의 경쟁에서 뒤지겠지만 만일, 높은 보수를 받는 조직이 허용되지 않는다면 훌륭하게 활동할 수 있을 것이다.

"우리는 프로그래머가 절대적으로 필요하다. 만일 그들이 우리의 이웃을 돕지 말라 하면 우리는 따를 수밖에 없다."

당신들은 결코 그런 종류의 요구에 복종해야 할만큼 절박하지 않다. 명심하라. 열 장정이 도둑 하나를 막지 못하는 법이다.

"프로그래머들도 어떤 식으로든 그들의 생계를 꾸려 나가야 하지 않은가?"

요 컨대 이것은 진실이다. 그러나 프로그램의 사용에 대한 권리를 파는 것 이외에도 생계를 꾸릴 수 있는 수많은 방법들이 있다. 현재 사용에 대한 권리를 파는 것이 보편적으로 받아들여지는 것은 그런 방식으로 프로그래머나 사업자들이 보다 많은 돈을 벌 수 있기 때문이지 결코 이것이 생계를 유지하는 유일한 방법이기 때문은 아니다. 다른 방법을 찾고자 한다면 얼마든지 가능할 것이다. 여기 여러 가지 예들이 있다.

새로운 컴퓨터를 내놓는 제조업자는 새 기계에 운영체제를 이식하기 위한 비용을 지불하게 된다.

교육, 단순 관리 작업, 지속적인 서비스들을 제공하는 회사에서도 역시 프로그래머는 필요한 것이다.

사 용자의 마음에 흡족하다면 그에 대한 기부를 지원해 달라고 요구하는 프리웨어(freeware)라는 새로운 아이디어로 프로그램을 배포하는 사람들도 있다. 혹은 단순 관리 서비스를 제공하고 보수를 받는 사람들도 있다. 나는 이미 이런 방식으로 성공한 사람들을 만났다.

도움이 필요한 사용자들은 사용자 그룹을 결성하고 회비를 조성할 수 있을 것이다. 그룹은 프로그래밍 회사와 계약을 맺고 회원들이 원하는 프로그램을 주문 제작할 수 있을 것이다.

모든 종류의 발전에 필요한 기금은 소프트웨어에 대한 세금으로 조성할 수 있을 것이다.

만 약, 컴퓨터를 구입하는 모든 사람들이 가격의 몇 퍼센트를 소프트웨어에 대한 세금으로 지불해야 한다면, 정부는 그 돈이 소프트웨어 발전에 쓰여지도록 국립 과학 재단(NSF-National Science Foundation) 같은 단체에 위임할 수 있을 것이다.

여기에는 컴퓨터 구입자가 세금을 납부하는 것 대신에 개별적으로 소프트웨어의 발전을 위해서 특정 부문에 기부하는 형식이 포함될 수 있을 것이다. 그는 스스로 어느 프로젝트에 기부할 것인지를 결정할 수 있을 것이며 때론, 그 결과를 쓸 수 있을 것이란 기대를 품고 결정을 내리게 될 것이다. 얼마를 기부하든 지불해야 할 세금 전액을 대신할 수 있을 것이다.

세금의 전체적인 세율은 납세자들이 투표를 해서 결정할 수 있을 것이며 지불할 액수에 따라 차등 조정될 것이다.

따라서, 결론은 다음과 같다:

컴퓨터 사용자 공동체는 소프트웨어의 발전을 지원한다.

어느 수준의 지원을 할 것인가에 대한 사항을 공동체 모두가 함께 결정한다.

자신의 몫이 어떤 프로젝트에 쓰일 것인가에 관심 있는 사용자들은 이를 스스 결정 할 수 있다.

프 로그램을 자유롭게 만든다는 것은 결국, 더이상 생계를 위해 고되게 일할 필요가 없는 풍요로운 세계로 가는 한 단계인 것이다. 사람들은 법률 제정이나 가정 상담, 로보트 수리, 천체 관측 등의 주당 열 시간 정도의 근무 시간을 마친 후에는 프로그래밍과 같은 자신이 흥미를 가질 수 있는 일에 자신을 몰입할 수 있는 자유를 갖게 될 것이다. 더이상 프로그래밍을 생계의 수단으로 삼을 필요가 없게 될 것이다.

우리가 이미 풍요로운 사회를 만들기 위해 많은 일들을 했음에도 불구하고 여가 시간이 아직 충분히 보장되지 않고 있는 이유는 자유 경쟁에 반하는 관료 제도와 저항들에 의해서 생산적인 활동에 많은 비생산적 요소들이 개입되기 때문이다. 자유 소프트웨어는 이러한 문제들을 충분히 개선시켜 나갈 수 있을 것이고 그렇게 함으로써 풍요를 위한 우리의 기술적 성과들이 우리들 자신의 노동을 감소시킬 수 있도록 해야 할 것이다.



--------------------------------------------------------------------------------
각 주
(1) 자유라는 의미를 명확하게 설명하지 못했다. 본래의 의도는 GNU 시스템을 사용 하기 위해서 '사용 허가'에 대한 별도의 비용을 지불할 필요가 없다는 뜻이다. 이러한 점을 명확히 하지 않음으로 해서 GNU 프로그램은 항상 무료나 이에 준 하는 가격에 의해서만 제공된다는 잘못된 해석이 가능할 수 있었다. GNU 선언 문은 이러한 부분에 대해서 이윤 추구를 위한 상업적 배포 업체 또한 충분히 가능할 수 있다는 사실을 뒤에 언급하고 있다. 나는 금전적인 측면의 자유와 구속되지 않는다는 관점에서의 자유를 주의 깊게 구분해서 사용해야 한다는 교 훈을 얻게 되었다. 자유 소프트웨어란 사용자가 배포와 수정의 자유를 갖는 소프트웨어를 의미한다. 자유 소프트웨어는 유료 또는 무료로 구입할 수 있 으며 유료 구입에 의한 기금의 확충은 해당 소프트웨어를 보다 우수하게 향상 시키는데 기여할 수 있을 것이다. 자유 소프트웨어의 핵심은 소프트웨어의 자 유로운 이용을 통해서 사용자 상호간의 협력의 자유를 보장받는다는 데 있다.

(2) 자유라는 두 가지 다른 의미 중에서 본래의 의도를 명확히 제시하지 못한 것 같다. 자유가 다른 의미를 내포할 수도 있지만 여기서는 가격을 지불하지 않는 다는 뜻으로 사용된 것이다. 즉, GNU 소프트웨어는 친구나 네트워크를 통해서 무료로 얻을 수 있다.

(3) 이러한 종류의 몇몇 회사들이 이미 활동하고 있다.

(4) 자유 소프트웨어 재단은 이윤 추구를 목적으로 하지 않음에도 불구하고 대부분 의 운영 자금을 배포본 판매에 따른 수익금에 의해서 충당하고 있다. 아무도 우리로부터 제품을 구입하지 않는다면 우리는 재단을 지탱해 나가지 힘들게 될 것이다. 그러나, 이것이 모든 사용자에게 유료 구입을 강요하는 제한 사항이 될 수는 없다. 제품 구입에 대한 소수의 도움으로도 자유 소프트웨어 재단은 충분히 유지될 수 있으며 우리는 일반 사용자들이 이러한 방식으로 우리를 지 원해 주기를 요청한다.

(5) 최근 들어 컴퓨터 회사들의 모임 중 하나는 GNU C 컴파일러의 개발을 지원하기 위한 기금을 조성했다.

--------------------------------------------------------------------------------

- 출처 : linux.co.kr
:

php 언어 사용자로서의 자세

etc 2010. 11. 24. 16:23
Java의 강점 중의 하나는.. 대단위 시스템의 레퍼런스 모델이나 솔루션이 많다는 겁니다.
컴파일 언어이다보니 네이티브하게 작동이 가능하므로 산출물이 다양하고 하드웨어 적인 것 부터 웹까지 다양한 영역에서 개발이 가능하고 밀접하게 붙어서 동작되는 컨테이너 들이 있습니다.
커버리지 자체가 PHP와 Java가 다른데 이 둘을 비교 하는건 어떻게 보면 PHP개발자의 자위이라고 봅니다.

PHP언어 자체의 한계를 빨리 파악을 하고, 그부분을 채울 수 있는 수많은 솔루션을 도입해서 완성된 그림을 그리는 것, 그리고 경험으로 여러 솔루션의 장단점을 파악하는것.
이것이 PHP 중급 이상 개발자의 범위 라고 봅니다.

PHP로 발을 들이셨다면, 여러 GNU라이브러리들과 친해져야 하고 오픈소스 솔루션들의 소식에 귀 기울이셔야 하며, 때에 따라 C++ 같은 다른언어와도 친해 져서 오픈소스 베이스 미들웨어도 만들어야 합니다.
발빠른 개발 대응과 초급인력의 빠른 실무 적응 같은 PHP의 가장 큰 장점을 잘 살려서 높은 생산성과 가용성을 달성 한다면  비로소 제대로 된 웹 개발자라고 할 수 있을거 같습니다.

PHP는 웹 개발의 일부분일 뿐인거죠. 웹이라는 영역을 쉽고 좁게 보면 아니됩니다.

PHP를 집중하더라도, 다른 랭귀지 한두개 정도는 더 해야 하며, 아울러 알고리즘, 개발방법론같은, 기초 이론도 충실히 공부해야 합니다.

- 출처: php 스쿨 포럼 게시판 중에서..
:

[안철수 의장] "개발자여! 꿈을 가져라"

etc 2010. 11. 24. 13:15

[안철수 의장] "개발자여! 꿈을 가져라"  
안철수 의장의 '2008 대한민국 SW 개발자 컨퍼런스' 기조연설 전문

"개발자여 ! 꿈을 가져라"


안철수 의장이 밝히는 개발자로 성공하기 위한 5가지 비결

처음 컴퓨터를 공부했을 때가 생각이 납니다. 컴퓨터라는 것은 상상하는 것을 모두 만들 수 있다고 생각했었습니다.. 생각하는 것을 눈으로 볼 수 있고 만들 수 있다는 것이 참으로 매력적이었죠. 하지만 그 당시만 하더라도 자료 구하기가 정말 어려웠습니다. 한글판 책도 없었고 영문판도 수입이 안됐습니다. 인터넷도 안되고 주위에서 물어볼 사람도 없었습니다. 그랬기 때문에 혼자서 열심히 독학으로 하게 됐죠. 그러면서 분석하고 파헤쳐 보는 습관이 생기게 된 것입니다. 이러한 예전과 비교하면 지금은 상황이 많이 좋아졌습니다. 하지만 그 때 환경에서만큼의 열정 처럼 지금도 그 만큼의 열정이 있어야 성공할 수 있을 것입니다.

* 개발자가 힘든 3가지 이유

개발자들이 지금 살아가기 힘든 것은 크게 3가지 이유를 들 수 있습니다. 아직도 소프트웨어(SW) 가치가 존중을 받지 않고 있다는 것이 첫째요. SW 산업 자체가 발전하지 않아서 일할 수 있는 터전이 많지 않다는 것도 문제입니다. 그리고 마지막으로 기술자가 대접을 못 받는 환경이기 때문입니다.

먼저 SW 가치에 대해 얘기를 하면 예전에 CEO로 있을때 산업 전망 토론회에 참석했었습니다. 산업 전망이라는 주제를 가지고 발표를 했는데, 하드웨어와 SW, 인터넷 서비스 등을 나눠서 비전에 대한 설명을 하는 것이었습니다. 그런데 쉬는 시간에 어떤 전자회사 부사장님이 오셔서 하시는 말이 "다음 부터는 HW, SW를 구분을 하지 말게. 사람들이 SW를 HW와 같은 레벨로 설명을 하면 오해한다"고 말씀하시던군요. 그 말을 듣고 얼마나 기가 막히든지 말이 나오지 않았습니다.

그 전자회사에서 그 당시 발표했던 것이 애플의 아이팟이 벤치 모델이라고 했었습니다. 하지만 아이파드는 하드웨어 때문에 성공한 것이 아니라 아이툰즈라는 SW가 있었기 때문에 가능한 것이죠. SW와 HW가 서로 엮여서 경쟁력을 키운 것입니다. 아이파드는 나중에 시장 점유율 80%까지 차지하는 대 성공을 거뒀습니다.

그 전자회사는 SW를 하드웨어의 부품으로 생각하는 회사였던 것입니다. 이 일은 5년 전의 일이었는데 하드웨어 위주의 사고 방식이 그렇게 많이 변하지 않았다는 것을 증명해주는 일이었습니다. 이처럼 우리나라에서는 아직도 의사 결정자들이 SW에 대한 여러 문제들을 보이고 있습니다.

의사 결정권자 뿐 아니라 일반 대중들도 SW의 가치에 대해서 생각하는 수준이 낮습니다. SW를 제값주고 사면 바보 취급을 당하는 분위기가 여전하죠. 한달에 휴대폰 사용료만 따져도 1년에 100만원을 지급하면서 매일 쓰는 SW에 대해서는 만원 쓰는 것도 아까워합니다. 이는 젊은 사람들 스스로가 자신의 일자리를 없애는 것이나 다름없습니다. 자기 살을 깍아먹는 것입니다.

* 후진적 SW 산업이 개발자 성장에 장애

두 번째로 SW 산업이 발전하지 못한 것이 문제입니다. SW 개발자들이 성장하는 데 장애가 있습니다. 정통부 시절에 아키텍트 양성 프로그램이라는 것을 추진하려고 했습니다. 교육적인 측면에 굉장히 투자한다는 것이었습니다. 하지만 아키텍트가 공부만 해서 되는 것이 아닙니다. 아키텍트 정도로 성장하기 위해선 일을 해야 하고 프로젝트 경험이 있어야 하고, 배울 만한 선배들이 있어야 합니다. 교육 예산만 투자해서 길러지지 않는 것이죠.

단순한 교육 프로그램이 아니라 정부에서 대형 프로젝트를 제안하면서 절반 인력은 한국에서 뽑는다고 하던지, 협력 업체 50% 정도를 한국의 중소 업체들로 결정하는 등의 현실적인 방안이 더욱 효과적이었을 것입니다. 하지만 결론적으로 먹히지는 않았습니다. 정부측에서 일한 티가 나지 않는다고 해서 진행을 하지 못했습니다. 실무자 입장에서는 내세울 것이 없어서 안타깝게도 할 수 없었다고 하더군요. 이처럼 국내 개발자들은 실력을 발휘할 만한 터전이 부족합니다.

세 번째로 기술자가 대접을 못 받는 환경이 문제입니다. 전문가 보다는 관리자가 더 있어 보인다는 편견이 있습니다. 나이가 들어서 기술직으로 있으면 관리직 보다 성공을 하지 못했다고 느끼는 것이 문제입니다. 때문에 결국은 관리직으로 옮겨 갈 수 밖에 없는 상황이다오는 것이죠.

이런 세 가지 측면에서 SW 가치가 인정을 받지 못하고 있고, 산업이 발달을 못하고 기술자가 기술자로서 대접을 받지 못하고 있습니다. 이는 예나 지금이나, 30년 전이나 같습니다. 그런데 절망할 것은 아니라고 봅니다.


* 전망은 항상 바뀌는 것, 전망만을 믿고 선택하지 말라

많은 사람들이 전망을 많이 합니다. 대학 졸업하고 나서 전망 좋은 쪽으로 가야 한다고 생각해서 의대를 지망하고 있습니다. 하지만 이것은 현명한 것이 아닙니다. 20년 전에 의대를 살펴보면 성적순으로 과를 들어갑니다, 외과, 내과, 피부, 안과 의사 들이 있는데, 성적순으로 선택권이 주어지는 것이죠. 공부 잘하는 사람이 원하는 과에 들어가고, 못한 사람들은 남들이 가지 않은 과를 가야합니다.
20년 전만 하더라도 공부 제일 잘하는 사람이 내과를 갔고 못하면 피부과로 갔습니다. 하지만 20년이 흐른 지금, 의대에서 제일 공부 잘하는 사람이 피부과를 갑니다. 지금 예전의 동기들을 만나면 전망만 보고 갔던 사람들은 후회하고 있습니다. 하지만 그 당시 피부과 갔던 사람들은 지금은 떵떵거리며 살고 있습니다.

항상 바뀌는 것이 전망입니다. 2001년에 서울대에서 가장 커트라인이 높았던 것이 컴퓨터 공학과입니다. 하지만 지금은 이공계 기피 현상이라는 것이 나올 정도로 전망은 덧없습니다.

* 재미가 있는 분야를 찾아라

전망은 아무도 모르는 것입니다. 때문에 재미가 있는 것을 선택해서 간다면 전문가가 될 수도 있고 성공할 수 있습니다. 잘하는 분야에 갔을 때 생각치도 않게 각광을 받을 수 있고 후한 대접을 받게 되는 기회도 옵니다.
우리나라 산업 환경 속에서는 일단 한 분야의 전문가가 되면 먹고 사는데 크게 지장이 없습니다. 좋아서 하는 분야를 택해서 가라. 전망하고는 상관이 없다고 말하고 싶습니다.

의대의 예를 더 들어보면 의사들 설문 조사를 해본 결과 50%가 직업에 만족도가 없다고 합니다. 20%는 개업해서 실패한다고 합니다. 현재 굉장히 많은 의사들이 동남아로 갔습니다.

사실 의사는 똑똑한 사람이 필요한 직업이 아니라고 합니다. 성실하고 마음이 따뜻한 사람이 좋은 의사가 됩니다. 의사들은 매일 100명이상의 환자들을 봐야 하죠. 매일 같이 새로운 사람을 만난다고 했을 때 성격상 맞지 않으면 견디기 힘들게 됩니다. 마음이 따뜻한 사람은 한 사람 한 사람 친정하게 대해주고 병을 치료해 주면서 보람을 느낄 수 있는 것입니다.

하지만 50%의 의사가 의사를 안했으면 좋겠다고 생각을 한다면, 이것은 환자들도 불행한 것입니다. 제대로 대접을 받고 있지 않다는 것과 같습니다.

좋은 전망, 안정된 생활, 이런 것도 모두 좋지만 제일 중요한 것은 자신이 재미를 느껴야 한다는 것입니다. 그래야 더 성공을 할 수 있습니다. 당부의 말씀을 드리고 싶은 것이 재미는 기본 적인 것이고, 여기에 5가지 노력이 더 필요합니다.

1. 전문성
자기가 실력이 있어야 합니다. 처음 컴퓨터를 접하는 사람이 있다고 가정했을 때, 워드 프로세스를 하려고 사서 워드 매뉴얼만 공부한 사람이 있습니다. 워드를 먼저 공부하면 당장 일을 시작할 수 있습니다.

반면에 운영체제를 먼저 공부한 사람이 있습니다. 이 사람은 당장은 문서 작업하는 데 시간이 많이 걸립니다. 하지만 나중에 두 사람 다 문서 작업을 할 실력이 됐을 때, 파일 작업하다가 에러가 나면 첫 번째 사람은 해결할 능력이 없습니다. 다음에 다른 문제가 생겨도 해결할 능력이 없습니다. 반면 운영체제를 사용해본 사람은 혼자서 해결을 할 수 있고 다른 분야 공부도 보다 수월히 할 수 있게 됩니다.

자바 공부하시는 분들 중에 C 기반이 돼 있는 사람이 자바를 더 잘 할 수 있습니다. 세계적으로 C 프로그래머들을 살펴보면 백그라운드가 어셈블리를 했다는 것입니다. 어셈블리를 알면 C 할 때 어떻게 컴파일해서 바이너리되는 지를 생각합니다. 가장 효율적으로 빠르고 프로그래밍을 하게 되는 것이죠.

전문성을 기를 때도 더 기초적인 것에 소홀히 하지 말고 기본 원칙에 대해 잘 알아야 합니다. 그러한 사람이 나중에 더욱 빛이 납니다. 전문성을 기르실 때 한번 생각해 볼 값어치가 있습니다.

2. 크리에이티브 마인드

새로운 일을 할 때만 하는 것이 아니라 새로운 일을 할 때를 돌이켜 보면 창조적인 일이 생깁니다. 현재는 인터넷을 통해서 라이브러리도 소스를 쉽게 받을 수 있습니다. 어떤 사람들은 소스 코드를 받기 쉽다 보니깐 막 갔다 씁니다. 이런 부분은 사실상 우려됩니다.

잘된 것은 안심하고 써도 되지만 소소 코드도 잘못된 것을 사용하면 치명적입니다. 때문에 시간을 투자해서 내부 구조를 다 이해한 다음에 자기가 쓴 프로그래밍에 갔다 써야하는 것이죠. 시간에 쫒기다 보니 그렇게 많이 안되고 있는 것을 알고 있습니다.

하지만 그대로 그렇게 사용하는 것은 저작권 문제도 발생합니다. 이런 부분은 개발자 개인들의 프로페셔널 측면에서 문제가 있습니다. 한번 더 생각하고 사용하도록 하고, 아무리 소스를 갔다가 쓰더라도 내부에 대해서 꿰뚫고 있어야 합니다.

3. 장인 정신

혼이 있는 개발자가 많이 나왔으면 좋겠습니다. 누가 시켜서 한 것이 아니라 능동적이고 자기 스스로 만족하는 레벨 수준이 돼야 합니다. 요즘 버그 잡는 것은 QA(품질관리)가 알아서 해준다라고 생각하는 개발자들이 있습니다. 그래서 코딩한 다음에 그냥 바로 QA팀으로 보내줍니다. 이는 굉장히 문제가 많아요. 퀄리티는 시간의 문제가 아닙니다. 의지와 실력의 문제입니다. 버그는 QA가 잡는 것이 아닙니다. QA팀에서 버그가 나올 때 마다 개발자는 부끄러워해야 합니다. 이런 마인드가 필요합니다.

4. 커뮤니케이션 능력

사실은 한사람이 모든 것을 할 수 없습니다. 요즘은 팀으로 이뤄지다 보니깐 제대로 전달을 해야 합니다. 여러 분야의 전문가가 함께 만들어 가야 합니다. 예전에는 전문가의 실력이 전문지식이었지만 이제는 전문 지식 + 커뮤니케이션 능력이 실력입니다.

시험을 칠 때 100점 받을 실력인데, 하나씩 잘못 내려 써서 0점을 받았을 경우 이에 대해 자신의 의사를 표현해야 합니다. 하지만 대학 입시에서 실력은 최고라 할지라도 0점으로 처리됩니다. 세상은 점수로 평가 받고 있습니다. 그 사람을 보는 주위의 시선은 0점입니다. 주위 사람에서 표현하지 못하면 그 사람은 그 팀에서 그 전문성을 쓰지 못합니다. 오히려 실력이 낮은 사람이 팀에 공헌을 하게 되는 것입니다, 스스로 인정받을 수 있도록 커뮤니케이션 능력을 길러야 합니다.

5. 희생정신

개발자들은 조금이라도 손해 보려고 하지 않는 경향이 있습니다. 하지만 그것이 반복이 되면 결국 손해를 자신이 입습니다. 일반적으로 친구들 사이에도 항상 얻어먹는 친구가 있습니다. 하지만 10년 되면 그 친구와는 멀어지게 마련입니다. 손해 보는 것 같아도 자기가 먼저 내고 그러한 자세가 필요합니다.

자기가 손해 보지 않으려고 하는 것 보다는 친구가 빈틈이 있으면 메워주려는 노력이 필요합니다. 자기가 미리 할 일을 다 했으면 다른 사람도 좀 도와주라고 말하고 싶습니다. 이런 마음이 나중에 쌓이면 많은 사람들이 같이 일하고 싶어 하는 전문가가 됩니다.


* 영어 실력 향상도 중요

여기에 한 가지 더 강조하고 싶은 것이 있습니다. 글로벌 시대에서는 미래에는 어떻게 될지 모릅니다. 영어 실력이 갈수록 중요해 지고 있습니다. 그렇다고 청산유수처럼 잘 하라는 것이 아닙니다. 인터넷이나 책을 통해서 프로그래밍 실력을 높일 수 있는 만큼은 해야 합니다. 그래야 향후에 실리콘밸리에서 일하면서 실력을 높일 수도 있습니다.
한 후배가 있었는데 영어를 정말 못했습니다. 서른이 넘어서 영어를 시작했는데, 현재 피츠버그에서 일하고 있습니다. 실력이 있으면 성공은 보장됩니다.

* 희망을 갖고 좋아하는 일을 하라

세상은 돌고 돕니다. 실력을 쌓고 준비해 나간다면 결국은 전문가로서 인정받고 외국으로 나갈 수도 있습니다. 세상은 돌고 돕니다. 희망을 잃지 않고 좋아하는 일들을 하면 기회는 분명히 오는 것입니다. 개발자들이여 파이팅!

[저자] 안철수

: