1. GNU
GNU[그누]는 유닉스와 비슷한 운영체계로서, 복사, 수정 및 재배포가 가능하도록 소스코드가 함께 딸려 나온다. GNU 프로젝트는 FSF를 만든 리차드 스톨만과 몇몇 사람들에 의해 1983년에 시작되었다. 스톨만은 사용자들이 친구를 위해 복사를 해주든, 소스코드를 수정하든, 재포장하여 비용을 받고 배포하든 상관없이, 그들이 얻기 원하는 소프트웨어라면 무엇이라도 자유로이 그렇게 할 수 있어야한다고 믿었다. FSF에서는 이러한 조항이나 조건을 copyleft 라고 부른다. Copyleft는 무료 소프트웨어를 재배포하는 사람이라면 누구라도, 그 이후의 복사나 프로그램의 수정에 관한 자유까지도 함께 넘길 것을 조건으로서 걸고있다. 그 때문에 그 누구라도 미래 버전에 관한 소유권을 요구하거나 사용자들에게 제한을 가할 수 없도록 보장하고 있다.
2. GPL
GPL''은 ``General Public License''의 약자입니다. 가장 널리 알려진 라이선스인 GNU General Public License는 줄여서 GNU GPL이라고 부릅니다. GNU GPL을 가리키는 것이 분명할 때에는 더욱 줄여서 GPL이라고 부르기도 합니다.
GPL은 FSF와 GNU 프로젝트로부터 제공되는 소프트웨어에 적용되는 라이센스로서, 사용자들이 소프트웨어를 자유롭게 공유하고 내용을 수정하도록 보증한다 .
3. LGPL
GPL라이선스가 제한이 엄격해서 오픈 소스 소프트웨어의 사용을 장려하기 위한 전략적인 차원에서 다소 완화된 라이선스를 정의하였다.
GPL과 대동소이하나 LGPL을 따르는 라이브러리를 링크시킬 경우 해당 응용프로그램의 소스를 공개할 필요가 없다는 점이 큰 차이이다.
4. GCC
GNU 컴파일러 모음(GNU Compiler Collection, 줄여서 GCC)는 GNU 프로젝트의 일환으로 개발되어 널리 쓰이고 있는 컴파일러이다. 자유 소프트웨어 중에 가장 잘 알려진 것들 중 하나이다.
원래 GCC는 C만을 지원했던 컴파일러로 이름도 "GNU C 컴파일러"였지만, 후에 C++, Java, Fortran, Ada 등 여러 언어를 컴파일할 수 있게 되면서, 현재의 이름으로 바뀌었다.
$ ./a.out
현재 디렉토리에 어떤 실행 화일을 만들고 나서 테스트를 해 보려고 한다면 꼭 ./<실행 화일명> 이라고 적어줍니다.
5. Apache
아파치는 "open source" 라이선스에 따라 배포되어 마음대로 쓸 수 있는 웹서버이다. 버전 1.3은 리눅스, Solaris, Digital UNIX, AIX와 같은 대부분의 유닉스 기반 운영체계, Rhapsody, BeOS, BS2000/OSD 등과 같이 유닉스/포직스에서 파생된 시스템들, 그리고 AmigaOS 및 윈도우NT/95/98 등에서 실행된다. Netcraft에서 1998년 9월에 실시한 웹서버 실태조사에 따르면, 전세계 인터넷 서버의 50% 이상이 아파치에서 운영되고 있다고 한다. 마이크로소프트에서 나온 윈도우기반의 웹서버, 넷스케이프, 그리고 다른 회사들이 수 적인 면에서 보면 늘어가고 있지만, 아파치는 아마도 유닉스 기반의 시스템이 널리 퍼져 있는 기업이나 대학에서 대중적 인기를 계속 유지할 것으로 보인다.
아파치는 HTTP의 최신판인 버전 1.1을 따른다. 몇몇 유즈넷 뉴스그룹과 버그 보고시스템을 통한 무료지원이 제공된다. 몇몇 회사들은 비용을 받고 지원해주기도 한다.
6. mysql
MySQL은 600만 사용자를 확보하고 있는 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템(SQL DBMS)이다. MySQL AB가 관리 및 지원하고 있으며, Qt처럼 이중 라이선스가 적용된다. 하나의 옵션은 GPL이며, GPL 이외의 라이선스로 적용시키려는 경우 전통적인 지적재산권 라이선스의 적용을 받는다.
응용프로그램에서 MySQL 데이터베이스에 접근하기 위해 다수의 프로그래밍 언어로 된 API를 사용할 수 있다. 이들 API는 언어에 종속적이다.
MySQL은 공식적으로 아래의 프로그래밍 언어를 지원한다.
C/C++/C#
볼랜드 델파이 (dbExpress를 통한)
자바 (Native 자바 드라이버를 통한)
파이썬
루비
REALbasic(매킨토시 계열)
프리베이직
스몰토크
Eiffel
Lisp
Perl
PHP
Tcl
MySQL은 MyODBC라고 불리는 ODBC 인터페이스를 지원해서 다른 프로그래밍 언어를 지원한다. 그 예로 ASP와 Coldfusion을 들 수 있다. MySQL은 대부분 ANSI C로 구현되었다.
7. PHP
PHP[피에이치피]는 웹프로그래밍에서, 자바스크립트 또는 마이크로소프트의 VBScript와 비슷한 스크립트 언어이자 인터프리터로서, 주로 리눅스 웹서버에서 널리 사용할 수 있다.
PHP는 보통 동적인 웹사이트를 작성하는데 쓰이는 서버 측 스크립트 언어이다.
보통 LAMP(Linux-Apache-MySQL-PHP/Perl/Python)환경에서 쓰인다. PHP는 HTML의 처리를 위해 탄생했으나
웹 프로그래밍이 아닌 다른 분야에도 사용될 수 있다.
많은 서버 측 오픈 소스 소프트웨어는 PHP로 구현되었다. PHP를 바탕으로 하는 프로그램 중 대표적인 예로 phpBB와 위키백과를 구동시키는 미디어위키를 들 수 있다. 대한민국의 PHP로 만든 게시판 중 유명한 것에는 제로보드, 미니보드 등이 있다.
PHP는 마이크로소프트의 ASP.NET 비주얼 베이직, 매크로미디어의 ColdFusion, 썬 마이크로시스템즈의 자바나 오픈 소스 커뮤니티의 파이썬, Perl, 루비에 대한 대안으로 생각될 수 있다.
그러나 PHP는 스크립트 언어이기 때문에 네이티브 바이너리를 생성하는 C나 C++ 같은 언어에 비해 느리며, 심지어 자바나 파이썬같이 바이트코드를 생성해주는 언어보다도 실행 속도가 느리고 무겁다는 단점을 가지고 있다. 이는 Zend Optimizer를 통해 개선할 수 있지만 일부 문제가 발생하는 것으로 보고되고 있다.
PHP는 텍스트, 특히 HTML의 처리에 강점을 가지고 있다. URL의 파싱이나 폼 처리, 정규 표현식 등이 그 한 예이다. 또한 다양한 데이터베이스를 지원하므로 데이터베이스와 사용자간의 다리 역할도 잘 수행한다.
그러나 PHP는 과학 및 공학 분야에서 요구하는 고성능 수치연산이나 엔터프라이즈 응용프로그램이 요구하는 대형 프로젝트에 대한 지원이 약하다. 최근 PHP5의 등장으로 엔터프라이즈급 응용프로그램을 작성할 수 있는 기반을 마련했으나 아직 많은 부분이 부족하며 개선해야 할 부분도 많다.
8. 성당과시장
리눅스는 파괴적이다. 파트 타임으로 해킹을 하면서 인터넷이라는 가느다란 선만으로 연결되어 있는 전세계 수천명의 개발자들에 의해 세계적인 수준의 운영체제가, 마치 마술처럼 만들어질 수 있었으리라고 누가 5년 전에 감히 상상이나 할 수 있었을까? 나는 분명 상상하지 못했다. 1993년 초, 리눅스가 내 레이다 화면에 잡혔을 때 나는 이미 유닉스와 오픈 소스 개발을 10년 동안 해오고 있었으며 1980년대 중반에 GNU에 공헌한 첫 번째 사람들 중 한명이었다. 나는 네트워크 상에 꽤 많은 오픈 소스 소프트웨어를 발표했고, 지금도 널리 사용되고 있는 몇몇 프로그램을 개발중이거나 공동 개발하고 있었다.(네트핵, Emacs VC 와 GUD 모드, xlife, 등등) 나는 프로그램이 어떻게 개발되어야 하는지 알고 있다고 생각했다.
리눅스는 내가 알고 있다고 생각한 많은 부분을 뒤집어 버렸다. 몇 년 동안이나 나는 작은 도구, 빠른 프로토타이핑, 그리고 진화적인 프로그래밍을 여러 해 동안 유닉스의 복음으로 설교해 오고 있었다. 하지만 나는 어떤 종류의 매우 중요한 복잡성이 있어서 거기에는 더 집중되고 선험적인 접근 방법이 필요하다고 믿고 있었다. 가장 중요한 소프트웨어(운영체제나 Emacs 같이 대단히 커다란 도구들)는 성당을 건축하듯이, 즉 찬란한 고독 속에서 일하는 몇 명의 도사 프로그래머나 작은 그룹의 뛰어난 프로그래머들에 의해 조심스럽게 만들어지고 때가 되기 전에 발표되는 베타 버전도 없어야 한다고 생각했던 것이다.
일찍, 그리고 자주 발표하며 다른 사람들에게 위임할 수 있는 것은 모두 위임하고, 뒤범벅이 된 부분까지 공개하는 그런 리누스 토발즈의 개발 스타일은 나에게 놀라움으로 다가왔다. 고요하고 신성한 성당의 건축방식은 여기에서 찾아볼 수 없었다. 대신, 리눅스 공동체는 서로 다른 의견과 접근방법이 난무하는 매우 소란스러운 시장같았다.(리눅스 아카이브 사이트가 이것을 적절히 상징하고 있다. 이곳에는 누구나 파일을 올릴 수 있다.) 이런 시장 바닥에서 조리있고 안정적인 시스템이 나온다는 것은 거듭되는 기적에 의해서만 가능한 것처럼 보였다.
시장 스타일이 매우 효과적이라는 사실은 분명 충격이었다. 리눅스 공동체에 익숙해져 가면서 나는 개개의 프로젝트에 열심이었을 뿐만 아니라 왜 리눅스 세계가 공중 분해 되지도 않고 성당 건축가들이 상상하기도 힘든 속도로 계속해서 강해지는지 이해하려고 애썼다.
1996년 중반에야 이해가 되기 시작했다. 내 이론을 시험해 볼 수 있는 완벽한 기회가 오픈 소스 프로젝트의 형태로 찾아왔다. 여기에서 나는 의식적으로 시장 스타일을 시도해 볼 수 있었고, 큰 성공을 거두었다.
이 글의 나머지 부분에서는 그 프로젝트에 대해 이야기하고 효과적인 오픈 소스 개발에 대한 격언들을 제시할 것이다. 내가 이 모든 것을 리눅스 세계에서 처음 배운 것은 아니지만 리눅스 세계는 이 격언들이 특별한 의미를 가질 수 있게 해주었다. 만일 내가 옳다면, 독자들은 이 격언들로부터 리눅스 공동체가 훌륭한 소프트웨어를 만들어내는 원천이 될 수 있었던 이유를 이해할 수 있을 것이며, 독자들 자신도 더 생산적으로 되는 데 도움을 받을 수 있을 것이다.
9. Kernel 하드웨어컨트롤
커널은 컴퓨터 운영체계의 가장 중요한 핵심으로서, 운영체계의 다른 모든 부분에 여러 가지 기본적인 서비스를 제공한다. 비슷한말로는 '뉴클리어스'라는 용어가 있다. 커널은 쉘과 대비될 수 있는데, 쉘은 운영체계의 가장 바깥부분에 위치하고 있으면서, 사용자 명령에 대한 처리를 담당한다. 커널과 쉘이라는 용어는 IBM 메인프레임을 제외하고, 유닉스와 기타 몇몇 운영체계에서 자주 사용된다.
일반적으로, 커널에는 종료된 입출력 연산 등, 커널의 서비스를 경쟁적으로 요구하는 모든 요청들을 처리하는 인터럽트 처리기와, 어떤 프로그램들이 어떤 순서로 커널의 처리시간을 공유할 것인지를 결정하는 스케줄러, 그리고 스케줄이 끝나면 실제로 각 프로세스들에게 컴퓨터의 사용권을 부여하는 수퍼바이저 등이 포함되어 있다. 커널은 또한, 메모리나 저장장치 내에서 운영체계의 주소공간을 관리하고, 이들을 모든 주변장치들과 커널의 서비스들을 사용하는 다른 사용자들에게 고루 나누어주는 메모리 관리자를 가지고 있다. 커널의 서비스는 운영체계의 다른 부분이나, 흔히 시스템 호출이라고 알려진 일련의 프로그램 인터페이스들을 통해 요청된다.
커널을 유지하기 위한 코드는 지속적으로 사용되기 때문에, 보통 커널은 자주 사용되지 않는 운영체계의 나머지 부분에 의해 덮어씌워져 훼손되지 않도록, 보호된 메모리 영역에 적재된다.
10. Sendmail 서버간에 메일을 주고받을 수 있도록 하는 소프트웨어
sendmail[센드메일]은 유닉스 기반의 환경에서 전자우편 전송을 위해 SMTP를 구현한 가장 보편적인 소프트웨어이다. sendmail 서버가 전자우편을 받으면, 그 편지를 수신자에게 즉시 전달하려는 시도를 하며, 만약 수신자가 존재하지 않으면, 나중에 배달하기 위해 메시지를 큐에 저장한다. 그러나, sendmail은 메일박스를 제공하지 않기 때문에, POP이나 IMAP과 같은 다른 소프트웨어를 함께 써야한다. 대부분의 인터넷 서비스 공급자들은 sendmail과 같은 SMTP 서버와, POP 또는 IMAP 서버를 모두 제공한다.
sendmail의 상용버전을 Sendmail이라고 부르는데, sendmail의 개방형 소스에 POP3 서버와 기타 강화된 여러가지 기능들을 포함하고 있으며, 윈도우NT 운영체계에 설치될 수 있는 버전도 나온다.
11. UNIX
1968에 미국의 AT&T사의 벨 연구소에서 개발 된 OS. 하드웨어에 의존 하지 않아서 이식성이 뛰어난 C언어로 기술되었으며,
소스코드가 비교적 컴팩트 하여 많은 플랫폼에 이식 되었다.
또한 학술 기관이나 컴퓨터 메이커의 손에 의해 독자적은 확장이 가해져 수 많은 파생 OS가 개발 되었으며, 현재는 UNIX 풍의 시스템 체계를 가진 OS를 총칭하여 UNIX라고 부르는 경우가 많다.
대표적은 것만으로도 Sun Microsystems사의 Solaris와 SunOS, Hewlett Packard사의 HO-UX, IBM사의 AIX, SGI사(구 Silicon Graphics사)의 IRIX, Caldera Systems사(구 Santa Cruz Operations사)의 UnixWare, 캘리포니아 대학 버클리 캠퍼스(UCB)의 BSD와 FreeBSD등의 파생 OS, Linus Torvalds씨의 Linux 등이 있다.
상표로서의 UNIX는 업계단체인 The Open Group이 보유하고 있으며, SPEC1170이라 불리는 기술 사양을 만족 시키는 OS만이 정식으로 [UNIX]라는 이름이 붙여진다.
각 UNIX클론 OS간의 호환성을 확보하기 위해 국제표준화기구(ISO)에 의해 최저한 갖춰야만 하는 기술 사양 POSIX가 정비되고 있다. UNIX는 일반적으로 완전한 멀티 태스크 기능을 탑재하여, 네트워크 기능이나 안정성이 뛰어나며, 세큐리티 강도가 높은 것으로 유명하다. 또한 한 대의 컴퓨터를 여러 사람이 동시에 사용하는 것을 전제로 설계 된 멀티 유저 OS이며, 네트워크를 통해 단말기에서 작업을 할 수가 있다. UNIX는 학술 기관이나 회사 연구소 등을 중심으로 널리 보급되어, 데이터베이스 등의 대규모 어플리케이션소프트가 풍부한 점에서 회사의 기간업무용 서버로서도 많이 쓰여지고 있다
12. firewal(iptables)
방화벽은 네트웍 게이트웨이 서버에 위치하고 있는 일련의 연관된 프로그램들로서, 다른 네트웍의 사용자들로부터 사설 네트웍의 자원들을 보호해준다 (이 용어는 보안정책과 함께 사용된 프로그램들에도 적용된다). 방화벽은 외부인이 자신의 공개되지 않은 자원에 접근하는 것을 막고, 자기회사의 직원들이 접속해야할 외부의 자원들을 통제하기 위해 기업의 인트라넷과 인터넷 사이에 설치된다.
기본적으로 방화벽은 라우터 프로그램과 밀접하게 동작함으로써, 모든 네트웍 패킷들을 그들의 수신처로 전달할 것인지를 결정하기 위해 검사하고, 여과한다. 또한 방화벽은 워크스테이션 사용자 대신 네트웍에 요청을 해주는 프럭시 서버의 기능을 아예 포함하거나 또는 함께 상호 협력하여 동작한다.
방화벽은 네트웍의 다른 부분들과는 별개로, 특별히 지정된 컴퓨터에 설치되는 경우가 많은데, 이는 들어오는 요구가 사설 네트웍 자원으로 곧바로 전달되지 않도록 하기 위한 것이다.
- iptables : 강력한 패킷필터링 툴
13. bootloader 운영체제돌기전 하드웨어 초기화
14. perl
펄(Perl)은 래리 월이 만든 인터프리터 방식의 프로그래밍 언어 혹은 그 인터프리터 소프트웨어를 가리킨다. 펄 언어는 실용성을 모토로 하고 있어 C나 sed, AWK, 셸 스크립트 등 다른 프로그래밍 언어에서 뛰어난 기능을 많이 도입하여 사용하고 있다. 언어 자체의 자유도가 높고 표현력이 뛰어나 CGI나 웹프로그래밍, 시스템 관리, 그 밖의 간단한 작업을 하는 스크립트를 작성하는 데에 넓게 이용되고 있으며, 또한 생물정보학 쪽에서도 광범위하게 이용되고 있다.
15. AWK
유닉스에서 처음 개발된 일반 스크립트 언어로, 텍스트 형태로 되어있는 데이터를 필드로 구분하여 처리하는 기능을 기본으로 한다. AWK라는 이름은 이 스크립트 언어를 만든 알프레드 에이호, 피터 와인버거, 브라이언 커니핸 세 명의 성의 앞글자를 따서 붙여졌다.
16. BASH
본 어게인 셸(Bourne-again shell)은 유닉스에서 사용하는 커맨드 셸의 일종으로 GNU 프로젝트를 위해 만들어 졌다. 일반적으로 bash로 줄여 부른다.
Bash는 다양한 리눅스 시스템, 맥 오에스 텐의 기본 셸이며, 수많은 유닉스 계열 운영체제에서 동작한다. 마이크로소프트 윈도에서도 시그윈 프로젝트 등에 의해 이식되어 있다.
17. FONT
글꼴의 글꼴 종류를 나타냅니다. 이 클래스의 기능을 확장 위에는 java.awt.font 클래스를 jdk () 1.1 및 이전 릴리스를 제공할 수있는 능력을 활용하는 개발자를위한 더 정교한 인쇄 기능을합니다.
18. API
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 만든 인터페이스를 뜻한다. 주로 파일 제어, 윈도우 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
19. ABI
응용프로그램과 운영체제 또는 응용프로그램과 그것의 라이브러리, 마지막으로 응용프로그램의 구성요소간에서 사용되는 저수준의 인터페이스이다
-- API ABI 차이점 : ABI는 API와 동일하지만, API가 소스 코드에서 사용된다면 ABI는 binary에서 호환이 가능하다는 점이 다르다. ABI는 소프트웨어 개발시 많은 장점을 가지고 있다.
20. ORACLE
오라클 DBMS은 미국 오라클(ORACLE)사의 관계형 데이터베이스 관리 시스템(RDBMS)의 이름이다. 현재 유닉스 환경에서 가장 널리 사용되는 RDBMS이다. 검색이나 업데이트용 언어로는 국제표준화기구의 표준 구조화 조회 언어와 PL/SQL을 지원한다.
21. DEBIAN
데비안은 무료 운영 체제 (운영 체제)입니다. An operating system is the set of basic programs and utilities that make your computer run. 일련의 운영 체제는 컴퓨터를 만드는 기본적인 프로그램과 유틸리티를 실행합니다. Debian uses the Linux kernel (the core of an operating system), but most of the basic OS tools come from the GNU project ; hence the name GNU/Linux. 데비안은 리눅스 커널 (운영 체제의 핵심), 그러나 대부분의 기본 운영 체제 도구 출신에 마지막 프로젝트를; 따라서 이름을 gnu / 리눅스를합니다.
Debian GNU/Linux provides more than a pure OS: it comes with over 18733 packages , precompiled software bundled up in a nice format for easy installation on your machine. 데비안 gnu / 리눅스를 제공하는 순수 이상의 운영 체제 : 18,733 이상 함께 패키지 소프트웨어를 번들로 컴파일된에서 사용자의 시스템에서 좋은 형식으로 설치가 간단합니다.
22. GENTOO
Gentoo에서 최적화란 많은 의미가 있지만 가장 처음 출발선은 자신의 CPU에 알맞은 GCC의 컴파일 옵션(CFLAG)으로 시스템을 빌드하는 것이다. 이론적으로는 범용(i386)보다는 이득이 있어야 한다
Gentoo 리눅스가 가지는 다른 리눅스 배포본들과의 차이는 그 시스템 혹은 특정한 어플리케이션에 최적화될 수 있도록 자동적으로 빌드(컴파일)되면서 설치된다는 점이다
23. FREEBASD
FreeBSD는 한마디로 말하면 4.4BSD-Lite2에 기반한 공개 BSD 유닉스 운영체제이다. 처음에는 x86 아키텍처에 최적화하는 것을 목적으로 시작하였지만, 이에 대한 성과를 바탕으로 현재 알파 시스템에 대해서도 동시 릴리즈가 되고 있고, IA64나 PowerPC 등와 같은 아키텍처에도 포팅이 진행중이다. FreeBSD의 큰 특징이라 한다면 다음과 같은 점을 들 수 있다.
유닉스 운영체제의 모든 특징 포함 (다중 프로세스, 다중 사용자)
안정적이고 고성능의 TCP/IP 스택
기본적인 IPv6 지원(버전 4부터, 버전 2와 3은 KAME 키트 사용)
다른 운영체제(리눅스, SCO, 솔라리스 등)의 바이너리 실행 가능
통합된 가상메모리/버퍼 설계와 관리
멀티프로세서 지원
기본적인 개발 환경 지원(C/C++, Perl)
자유로운 라이센스
24. GNOME
GNOME[그놈]은 유닉스 기반의 운영체계 사용자들을 위한 그래픽 사용자 인터페이스와 일련의 컴퓨터 데스크탑 애플리케이션들이다. GNOME은 유닉스 기반의 운영체계를 프로그래머가 아닌 사람들도 쉽게 사용할 수 있고, 일반적으로 윈도우 데스크탑 인터페이스와 그것의 대부분의 보편적인 애플리케이션 들에 상응하도록 만드는데 목적이 있다.
25. KDE
KDE(K Desktop Environment)는 자유 소프트웨어 데스크톱 환경으로, Trolltech의 Qt 툴킷을 기반으로 하였다. 대부분의 유닉스 계열, 리눅스, BSD, AIX 등의 운영 체제에서 작동한다
26. SSH 원격관리 Tool
Ssh 또는 Secure Shell은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜을 가리킨다. 기존의 rsh, rlogin, 텔넷 등을 대체하기 위해 설계되었으며, 강력한 인증 방법 및 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공한다. 기본적으로는 22번 포트를 사용한다.
SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다 하더라도 이해할 수 없는 암호화된 문자로 보인다.




덧글