기본 콘텐츠로 건너뛰기

Linux Command 2

파일의 압축과 압축 풀기 1. 하나의 파일 압축: gzip(GNU zip), 압축 풀기(gunzip) - # gzip test1.txt.gz - # gunzip test1.txt.gz - 여러 파일을 압축: tar -czvf, tar -xzvf tar에 압축 기능은 없다. 그러나 -z옵션을 통해서 압축 기능을 추가한다. - 압축할 때 ☞ $tar -czvf 압축의 결과로 생길 파일의 이름(압축할 파일명에 .gz나 .tgz를 추가하는게 일반적) - 압축할 파일이나 디렉터리 압축 풀 때 ☞ $tar -xzvf 압축된 파일명 - # tar -czvf txt.tgz *.txt 2. 파일을 플로피에 복사하기(MS-dos호환 format으로): mtools사용 - 루트 사용자라면 floppy를 mount시켜서 사용하면 된다. 그러나 마운트시킬 권한이 없다면 mtools 명령어를 사용한다. mtools는 도스로 포맷된 플로피를 읽고 쓰는 도구이다. mtools로 된 명령은 도스 명령어에 m을 붙인 것이 대부분이다. - # mdir - # mcopy a:'*.bak' . - # ls *.bak - # mcopy l4.txt a

Linux Command

소유권과 허가 1. chmod -R g+rx images (u, g, o, a) (+,-,=) (r,w,x) 2. chmod 777 images ※ 일반적인 사용과 숫자표현 ▷ --------- 000 ▷ r-------- 400 ▷ r--r--r-- 444 ▷ rw------- 600 ▷ rw-r--r-- 644 ▷ rw-rw-rw 666 ▷ rwx------ 700 ▷ rwxr-x--- 750 ▷ rwxr-xr-x 755 ▷ rwxrwxrwx 777 3. 소유권 변경 - # chown [옵션] [소유자:그룹] [파일이나 디렉토리이름] - # chown -R root:myclass images ※ ls -lg : 소유자변경 확인하기 4. chgrp root images ※ ls -lg : 그룹변경 확인하기 5. umask ※ umask 277 -소유자에 한하여 읽을 수 만 있도록 ( r-x------ ) umask 007 -소유자에 한하여 읽기.쓰기, 실행권한 (rwx------)

주요 오픈 소스 라이센스(GPL, LGPL, BSD, MPL, QPL)에 대한 설명

게시글 주소 :  http://www.igotit.co.kr/zbxe/386 주요 오픈 소스 라이센스 최종 비교   GPL LGPL BSD MPL QPL/ 상용 QT 코드의 무료 이용 O O O O O/X 코드의 자유 배포 O O O O O/X 소스 코드의 공개 O O O O O/X 소스 코드의 수정 O O O O O/O 수정 코드의 소스 공개 O O X O O/X 상용 소프트웨어와의 링크 X O O O X/O GPL : GNU General Public License   1. GPL을 따르는 소프트웨어 소스 코드 일부를 사용해 만든 소프트웨어는 GPL을 따라야 한다. 2. GPL을 따르는 소프트웨어 소스 코드를 개인적으로 사용할 수 없다. 반드시 소프트웨어를     개발한 원작자나 공동체에 환원해야 한다.   배경 → 1980년대 초 PC의 보급 등으로 소프트웨어의 상업성 강조       - 소프트웨어의 자유로운 사용 통제       - AT&T의 UNIX의 대한 권리 주장 → Richard Stallman이 GNU 프로젝트 시작, FSF(Free Software Foundation) 설립       - 소프트웨어의 자유로운 사용, 공유, 수정을 강조       - 이를 담보하기 위한 장치로 GPL 고안       - GCC등 주요 개발 툴을 GPL로 배포 → 전세계 자유 소프트웨어 개발자들의 GPL 채택       - 1990년대 초 Linux Kernel이 GPL로 배포   의무사항     소스코드 배포 시 실행파일 배포 시  수정코드 배포 시      - 저작권 표시    - No Warranty    - GPL로 배포    - 저작권 표시    - No Warr

재귀호출 3

재귀호출을 이용한 간단한 Tree 구조를 분석해 보도록 한다. void main () {   recurtree ( 4 ); } void recurtree ( int n ) {   if (n > 0)   {     recurtree ( n-2 );     printf ( "%3d", n );     recurtree ( n-1 );   } }

재귀호출 2

1부터 어떤 수까지의 합을 재귀호출로 구해보자 sum(n) = n + (n-1) + (n-2) + ... + 3 + 2 + 1 이를 다시 정리하면, sum(n) = [ { 1, n = 1 }, { n + sum(n-1), n > 1 } ] 여기서, n 이 1이 되는 조건이 재귀호출 종료조건이 되게 된다. void main() {   int isum = 0;   ...   isum = sum(3);   ... } int sum(int n) {   if ( n == 1 ) return 1;   else     return ( n + sum( n - 1) ); }

재귀호출 1

컴퓨터 알고리즘을 공부하기 위해 많은 준비가 필요한 것은 아니다. 가장 기본적인 개발 환경은 Borland 사의 TurboC++ 컴파일러를 구하여, DOS Shell 상에서 실행되는 프로그램으로 만들면 된다. UI를 구현할 필요가 없으며, 가장 기본적인 입출력 함수를 사용하면 된다. 컴퓨터 알고리즘을 공부한다는 것이 궁극적으로 C 문법을 익히기 위한 것이 아니며, 프로그램을 보기좋게 꾸미기 위한 것이 아니다. 대단위 프로그램으로 얘기한다면 그 프로그램의 핵심이 되는 엔진을 만드는 것이다. 우선 정형화된 컴퓨터 알고리즘을 정리해 보도록 하겠다. 재귀(Recursion)호출 컴퓨터 알고리즘을 언급하는 많은 자료들에서 첫번째 Chapter 로 잡는 것이 "정렬"이다. 이 정렬 알고리즘 중 다른 정렬들에 비해 비교적 좋은 성능을 가진 "퀵정렬", 데이타베이스의 정형화된 형태 중 이진트리내의 순회, 차량항법장치등 길찾기 방법 중의 하나인 그래프 탐색등에 사용하는 재귀호출을 알아보도록 하자. 말 그대로 자기 자신을 다시 호출하여 실행하는 알고리즘이다. 이를 구현하기 위해서 반드시 고려하여야 할 부분이 종료 조건이다. 이 종료 조건에 의해 최종적인 결과치가 나오기 때문이다. 또한 재귀의 깊이가 일정값을 넘었을 경우, 스택오버플로우가 발생한다. 또한 재귀함수와 등가인 비재귀함수와의 계산시간은 엄청난 차이를 보인다. 이는 계산비교 함수로 이를 확인해 보도록 하자.

시작하며

많은 사람들이 소프트웨어 개발을 했으며, 하고 있고 앞으로도 컴퓨터라는 기기가 인류와 함께 하는 한 어떠한 방법으로라도 컴퓨터를 구동시키려면 컴퓨터에게 일련의 명령어를 체계적으로 전달해 주는 묶음인 프로그램을 만들어야 한다 컴퓨터란 기기가 인류 문명에 나타난 이후부터 여러가지 형태의 프로그래밍 방법과 프로그래머 입장에서 이해하기 쉬운 방식의 언어가 생겨났으며, 아직도 수많은 소프트웨어 엔지니어들이 이러한 방법과 언어를 만들고 있다 나는 체계적인 프로그래밍 방법을 모른다 그냥 내가 만들고 싶은 프로그램을 만들어 보고 싶어서 이것 저것을 보고 직접 프로그래밍을 해보면서 나름대로의 생각으로 프로그램을 만들었다 배움의 길은 끝이 없는 것이 맞다 지금도 배워야 하고 앞으로도 많은 배울 것들이 내 귀에 들릴 것이며 나의 눈을 어지럽게 할 것 같다 한번 시작해 보자