달력

122024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

altxmap TABLE

2008. 5. 15. 21:56

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

회선 끊김현상

2008. 5. 15. 19:08

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.


scanf("변환문자", 인수1,인수2...);
- 일반 변수를 인수로 사용할 때는 인수 앞에 주소 연산자인 & 기호를 사용해야 한다.
- 여러개의 데이터를 입력할 때 데이터의 구분은 공백과 엔터키로 구분한다.
- 변환문자는 입력자료의 형(Type) 을 지정
- 인수의 주소는 입력자료가 기억될 변수의 주소를 나타내며, 변환문자의 갯수와 같아야 함.

ex) scanf("%d %d",&num1,&num2); /*정수값 두개를 입력받아 num1과 num2에 저장한다. */
char name[15],c;
scanf("%s %c",name,&c);
=> scanf() 함수에서 단일 문자 변수 앞에는 &연산자를 붙여야 하지만 문자배열에서는 &기호를 생략한다. 배열의 이름자체가 주소값을 나타내므로 생략가능한 것이다. 문자배열의 맨 마지막에는 null문자가 자동적으로 입력된다.

예제 2 )
/* scanf()를 사용하여 두 정수값을 입력받아 덧셈 연산하기 */
#include<stdio.h>
void main(){
int a,b,sum;
printf("input two numbers :");
scanf("%d %d",&a,&b); /* 정수 두개를 입력받아 변수 a와 b에 저장한다. */
sum=a+b;
printf("sum of two numbers : %d\n",sum);
}

예제 3)
#include<stdio.h>
main()
{
int x;
float y;
char ch1, ch2[30];
printf("10진정수, 실수, 단일문자, 문자열을 입력하시오 ! \n");
scanf("%d %f %c %s",&x, &y, &ch1, ch2);
printf("10진정수 :%d, 실수 :%f, 단일문자 :%c, 문자열 :%s\n",x, y, ch1, ch2);
}

'C' 카테고리의 다른 글

gcc 컴파일 옵션  (0) 2008.07.16
make  (0) 2008.06.04
[함수] sprintf - 출력  (0) 2008.05.16
[함수] memcpy - 메모리카피  (0) 2008.05.16
[함수] printf - 표준출력  (0) 2008.05.15
Posted by 알 수 없는 사용자
|

[함수] printf - 표준출력

C 2008. 5. 15. 09:08

표준 입출력 함수- 표준 입출력 장치를 통해 데이터를 입력하거나 출력하는 기능을 갖고 있는 함수
표준 입출력 함수를 사용하려면 #include <stdio.h>를 기술해 줘야 한다

printf(" 출력양식 ", 인수1,인수2...);
서식문자열에는 모든 문자를 사용할 수 있으며 변환문자와 제어문자를 제외하고는 화면에 그대로 출력
인수와 변환문자는 일대일 대응해야 하며 반드시 인수의 자료형과 문자의 자료형은 일치해야 한다.

ex) printf("%d + %d= %d\n",10,20,30);
출력결과 10+20=30

변환문자 의미 자료형
%d 10진수로 출력 정수형
%o 8진수로 출력
%x 16진수로 출력
%ld long형 10진수로 출력
%lo long형 8진수로 출력
%lx long형 16진수로 출력
%u 부호없는 10진수로 출력
%c 하나의 문자로 출력 문자형

제어문자 출 력 형 식
\b 커서를 한칸 앞으로 이동 함
\f 한페이지 이동 함
\n 다음줄의 처음으로 줄바꿈 함
\r 커서를 그 줄의 맨 앞으로 이동시킴
\t 탭문자 간격만큼 커서를 이동시킴
\v 커서를 수직으로 칸을 띄우기 함
\a Bell 소리가 나게 함

예제 1)
/* printf()함수를 이용해서 데이터 출력하기 */
#include<stdio.h>
main(){
int x=345;
float y=34.564;
printf("%10d\n",x); /*x를 10자리에 맞추어 출력한다. */
printf("%-10d\n",x); /*x를 10자리에 맞추어 출력하고 출력방향을 왼쪽에 맞춘다. */
printf("%010d\n",x); /*x를 10자리에 맞추어 출력하고 남는 공백을 0으로 채운다. */
printf("%.2f\n",y); /*y를 소수점 이하 2자리로 출력한다. */
printf("%-10.3f\n",y) ; /*y를 소수점 이하 3자리,전체자릿수는 10자리 출력방향은 왼쪽으로 출력한다. */
}

결과

       345
345      
0000000345
34.56
34.564

'C' 카테고리의 다른 글

gcc 컴파일 옵션  (0) 2008.07.16
make  (0) 2008.06.04
[함수] sprintf - 출력  (0) 2008.05.16
[함수] memcpy - 메모리카피  (0) 2008.05.16
[함수] scanf - 문자입력받기  (0) 2008.05.15
Posted by 알 수 없는 사용자
|

http://www.ibm.com/developerworks/kr/library/os-ecl-subversion/

난이도 : 중급

Chris Herborth, Freelance Writer, Author

2008 년 1 월 08 일

변화 관리(change-management) 기능에 액세스 하기 위해서, Eclipse는 처음부터 Concurrent Versions System (CVS)과 완벽한 통합을 도모했습니다. 이제, Apache Software Foundation에서 운영하는 많은 프로젝트들은 Subversion이라고 하는 변화 관리 시스템을 사용하고 있습니다. Subversion 저장소를 사용하는 프로젝트에 Eclipse를 사용하는 방법을 배워봅시다.

Eclipse는 대중적인 오픈 소스 변화 관리 시스템인 CVS에 대한 지원을 통합해 왔습니다. CVS의 기능과 그 한계는 잘 알려져 있지만, 많은 그룹들은 더 나은 확장성, 변화 합병 및 버전 브랜칭(branching) 지원, 바이너리 파일 포맷 지원을 제공할 수 있는 다른 버전 관리 시스템을 연구하고 있습니다.

Subversion (SVN)은 CVS를 대체하는 것으로서, 향상된 성능(지능형 로컬 캐싱과 데이터베이스 백엔드 중심), 쉽고 빠른 브랜칭(branching), CVS 사용에 따른 단점 향상을 제공하고 있습니다.

Eclipse에 Subversion 지원을 추가하는 방법과 IDE에서 기본적인 버전 관리를 수행하는 방법을 배워봅시다.

시작하기 전에

Eclipse를 다운로드 하여 설치해야 한다. (참고자료) 자신의 플랫폼에 맞춰 Eclipse SDK를 다운로드 하면 기본 Eclipse IDE(Eclipse Platform)과 Java™ Development Kit이 생긴다. C/C++로 작업하려면, C Development Tooling (CDT) 웹 사이트를 방문하여, 업데이트 매니저를 사용하여 CDT를 설치하라. (업데이트 매니저 사용 방법은 다음 섹션에서 설명한다.)

또한, Subversion 저장소에 액세스 해야 한다. 한 가지만 설정해야 한다면 Subversion 웹 사이트에서 제공하는 문서를 참조하라. (참고자료) 데모용으로 Subclipse 프로젝트를 검사하고, 필자의 LAN의 저장소에서 프로젝트로 작업하는 방법을 보여 줄 것이다.

Subclipse를 Eclipse에 추가하기

Subclipse는 Subversion 지원을 Eclipse IDE에 추가하는 프로젝트이다. 우리는 Eclipse의 업데이트 매니저를 사용하여 Subclipse를 우리의 Eclipse IDE에 추가할 것이다. Eclipse의 Help 메뉴에서 Software Updates > Find and Install을 선택하여 업데이트 매니저를 연다.

그림 1. Eclipse 업데이트 매니저

사용자 삽입 이미지

소프트웨어 업데이트를 검색하기 위해 사용하는 것 외에도, 이 업데이트 매니저를 사용하여 Subclipse 같은 새로운 기능을 찾아서 설치할 수 있다. Search for new features to install이 선택되었는지 확인하고, Next를 클릭하여 계속 진행한다. Eclipse는 다음의 업데이트 매니저 패널을 디스플레이 한다.

그림 2. 업데이트 매니저 사이트

사용자 삽입 이미지

측정 기능을 찾았기 때문에, 기존 사이트의 체크를 해제하고, New Remote Site를 클릭하여 New Update Site 다이얼로그를 디스플레이 한다. (그림 3) 이것을 사용하여 Subclipse 업데이트 사이트를 리스트에 추가할 것이다.


그림 3. 새로운 업데이트 사이트 추가하기

사용자 삽입 이미지

Name에 알맞은 것을 입력하고(Subclipse가 적당하다.), URL에 http://subclipse.tigris.org/update_1.0.x (현재 Subclipse 업데이트 사이트)를 입력한다. OK를 클릭하여 Subclipse 업데이트 사이트를 업데이트 매니저의 리스트에 추가한다.

업데이트 매니저 창에 Finish를 클릭하여 새로운 기능을 검색한다. 이 경우, 우리가 찾고 있는 새로운 기능은 Subclipse이다. 잠시 후에, 업데이트 매니저의 검색이 완료되고, 검색 결과가 디스플레이 된다.


그림 4. 설치할 새로운 기능

사용자 삽입 이미지

Subclipse를 체크하고(닫힌 삼각형을 클릭하여 이 기능에 정확이 무엇이 포함되었는지를 볼 수 있다.), Next를 클릭하여 기능의 라이센스 조건을 검색한다. 조건을 수락하고, Next를 클릭하여 여러분이 선택했던 기능을 검토한다. Finish를 클릭하여 Subclipse를 다운로드 및 설치한다.

업데이트 매니저는 Subversion 컴포넌트를 다운로드 한다. 설치하기 전에, Eclipse는 이 기능들이 디지털 서명이 되지 않았음을 경고할 것이다. (그림 5) 이것이 설치를 취소할 수 있는 마지막 기회이다. Install All을 클릭하여 설치를 계속 진행한다.


그림 5. Subclipse가 디지털 서명 되지 않았다.

사용자 삽입 이미지

Subversion이 설치되면, Eclipse는 IDE를 재시작 하여 새로운 기능을 활성화 해야 한다고 경고한다. (그림 6) Eclipse를 바로 재시작 한다.


그림 6. 새로운 기능 설치 후에 Eclipse 재시작 하기

사용자 삽입 이미지

Eclipse를 재시작 하면, Subclipse가 설치되고 준비가 된다.

Mac OS X나 리눅스®에서 Eclipse를 실행한다면, JavaHL 라이브러리를 설치해야 하는데, 이것은 Subclipse FAQ의 Troubleshooting 섹션에 설명되어 있다. (참고자료) Subclipse를 사용하기 전에 이를 수행해야 한다.

빠른 테스트

설치를 완료하면 새로운 기능을 테스트 하는 것이 좋다. Subversion 저장소에서 Subclipse 카피를 체크하여 이것이 올바르게 설치되었는지를 확인한다.

Eclipse File 메뉴에서, Import를 선택하여 Import 매니저를 디스플레이 한다. (그림 7) SVN에서 Checkout Projects를 선택하고, Next를 클릭한다.


그림 7. Import 매니저

사용자 삽입 이미지


Select/Create Location 패널에서(그림 8), 새로운 위치를 만들고(아직 아무것도 설정하지 않았기 때문이다.), Next를 클릭하여 계속 진행한다. Next 버튼이 활성화 되지 않으면, Use existing repository location 옵션으로 전환하여, Create a new repository location으로 가서 Next 버튼을 실행한다.


그림 8. 새로운 저장소 위치 만들기

사용자 삽입 이미지

다음 섹션에서(그림 9), 저장소 URL(http://subclipse.tigris.org/svn/subclipse/)을 Url 필드에 추가하고, Next를 클릭한다. 잠시 후에, Eclipse는 사용자 ID와 패스워드를 묻는다. Subclipse 사이트에 대한 계정이 없다면, ID에는 guest를 패스워드는 공백으로 하고, Save Password 박스를 체크하고 OK를 클릭한다.


그림 9. 저장소 URL 추가하기

사용자 삽입 이미지

Eclipse는 Subclipse 저장소에 폴더들을 디스플레이 한다. (그림 10) 트렁크를 확장하고, subclipse 폴더를 선택한 다음, Finish를 클릭하여 Subclipse 프로젝트의 소스 코드의 카피를 체크한다. 이것이 무엇인지 모르기 때문에, New Project 마법사가 뜨면 Simple > Project를 선택한다.


그림 10. Subclipse 저장소

사용자 삽입 이미지

기본적인 Subversion 연산

Subclipse를 성공적으로 설치했고, Subversion 서버용 지원을 Eclipse 설정에 추가했으며, 저장소에서 현재의 Subclipse 소스 코드를 다운로드 함으로써 Subclipse를 테스트 했다. 이제, 코드와 Subversion 저장소가 어떻게 실행되는지를 보자.

Subversion 작동 방법을 보기 전에, 저장소에 대해 잠깐 이야기 해보자. 이것은 port 8000에 dogma라고 하는 머신에 호스팅 되었으며, 필자는 필자의 developerWorks 기술자료와 연결된 새로운 developerWorks 코드용 저장소를 만들었다. 필자의 프로젝트를 직접 저장소의 루트에 놓을 것이다. 기타 저장소들은 개발 버전, 태그 브랜치에 맞게 trunk, tags, branches 라는 이름의 폴더를 갖지만, developerWorks 기술자료 코드를 태깅 또는 브랜칭 할 염려는 없다.

필자는 필자의 첫 번째 기술자료에서 두 개의 프로젝트, forkWork과 threadWork을 추가했다. 필자의 Eclipse 워크스페이스(그림 11)에는 developerWorks 기술자료에서 온 세 개의 다른 프로젝트들도 포함되어 있다. (getopt_demo, getopt_long_demo, readdir_demo).


그림 11. 나의 Eclipse C/C++ 프로젝트

사용자 삽입 이미지

이제 실행을 시작해 보자.

프로젝트를 저장소에 추가하기

새로운 프로젝트를 Subversion 저장소에 추가하려면, 프로젝트를 오른쪽 클릭하고(Eclipse의 프로젝트 뷰 또는 Navigator 뷰), 메뉴에서 Team > Share Project를 선택한다. Eclipse는 Share Project 다이얼로그를 디스플레이 한다.


그림 12. Share Project 다이얼로그

사용자 삽입 이미지

현재 Eclipse에서 지원되는 저장소 리스트에서 SVN을 선택하고 Next를 클릭한다. 다음 다이얼로그(그림 13)에서는 기존 저장소 위치를 선택하거나, 새로운 위치를 만들 수 있다.


그림 13. 저장소 위치 선택하기

사용자 삽입 이미지

저장소가 이미 리스팅 되었다면, 이것을 선택하고, Finish를 클릭한다. 저장소가 리스팅 되지 않았다면, 추가한 후 계속 진행한다. (빠른 테스트 참조) Eclipse는 프로젝트와 같은 이름으로 저장소에 새로운 디렉토리를 만들고, 프로젝트에 모든 파일과 폴더 리스트를 디스플레이 한다.


그림 14. 프로젝트 콘텐트 추가하기

사용자 삽입 이미지

위 영역에 프로젝트를 설명하는 알맞은 코멘트를 입력한 다음, Select All을 클릭하여 프로젝트에서 모든 파일들을 체크한다. OK를 클릭하여 프로젝트에 체크하고, 현재 상태를 Subversion 저장소로 보낸다.

Subversion의 명령어와 아웃풋이 Console 뷰에 디스플레이 되는데, 주로 Eclipse 윈도우 아래에 보인다. 프로젝트에 Subclipse가 정확히 무엇을 하는지 알 수 있다.

프로젝트 업데이트

버전 관리 시스템의 핵심적인 기능 중 하나는 다른 개발자들이 개발을 진행하면서, 준비가 될 때마다 변경할 수 있는 기능이다. 변경 사항을 다운로드 하여, 로컬 카피에 통합시키려면, 프로젝트를 업데이트 해야 한다.

업데이트 하고자 하는 프로젝트를 오른쪽 클릭하고, 메뉴에서 Team > Update를 선택한다. Eclipse는 저장소에서 변경 사항을 검색하고, 로컬 카피와의 합병을 시도한다.

파일 또는 디렉토리 추가하기

파일을 프로젝트에 추가하면(그림 15), 이것은 버전 관리의 일부가 자동으로 되는 것이 아니다. 구체적으로 이것을 저장소에 추가해야 한다. 스크린샷을 보면, 필자가 ReadMe.txt 파일을 threadWork 프로젝트에 추가했음을 알 수 있다.


그림 15. 새로운 파일 추가하기

사용자 삽입 이미지

새로운 파일을 추가한 다음, Team > Add to Version Control을 선택한다. 이것이 전부이다. 다음에 이 프로젝트에서 저장소에 변경 사항이 이루어지면, 새로운 파일이 추가된다.

파일 또는 디렉토리 삭제하기

프로젝트와 더 이상 관련이 없는 저장소에 파일을 추가했다면, 쉽게 삭제할 수 있다. 파일을 오른쪽 클릭한 후에 Delete를 선택한다. Team 메뉴가 필요 없으며, Subclipse가 파일에 자동으로 삭제 플래그를 달며, 이것을 프로젝트로부터 삭제한다. 다음에 저장소에 변경 사항을 만들면, 파일이 삭제된다.

파일 또는 디렉토리의 재명명

Subclipse의 컨트롤 아래에 있는 파일 또는 디렉토리를 재명명 하려면, 오른쪽 클릭을 하고, Rename을 선택한다. 엔트리 필드에 아이템의 새로운 이름을 입력하고 Enter를 클릭한다. 파일이 프로젝트에서 재명명 되고, rename 연산(새로운 이름에는 Add, 오래된 이름에는 Delete)은 다음 실행을 위해 대기한다. 그림 16은, main.c를 threadWork.c로 바꾼 후에 threadWork 프로젝트 모습이며, 아직 변경 사항을 실행하기 전이다. 작은 파란색 더하기 부호는 Subclipse가 새로운 파일을 추가했음을 나타낸다.


그림 16. 추가 또는 삭제인 경우에도 파일 재명명은 기본이다.

사용자 삽입 이미지

파일 무시하기

프로젝트가 파일을 만들거나, Subversion 저장소에 추가하고 싶지 않은 파일을 포함하고 있을 경우, Subclipse에 이를 무시하도록 명령할 수 있다. 버전 관리에서 배제하고자 하는 파일이나 디렉토리를 오른쪽 클릭한 다음, Team > Add to svn:ignore를 선택하여 Add to svn:ignore 다이얼로그를 디스플레이 한다.


그림 17. 버전 관리에 포함시키고 싶지 않은 리소스 무시하기

사용자 삽입 이미지

OK를 클릭하여 특정 파일을 프로젝트의 디렉토리용 svn:ignore 프로퍼티에 추가한다. Wildcard extension을 선택하여 현재 파일의 확장자를 가진 모든 파일들을 무시하거나, Custom pattern을 선택하여 고유의 와일드 카드를 추가하여 리스트를 무시한다. 무시 리스트에 이루어진 변경 사항은 다음에 변경 사항을 실행할 때 저장소에 추가된다.

변경 사항 실행하기

프로젝트를 변경 했다면, 코드 컴파일, 변경 사항 테스트를 실행하고, Subversion 저장소에 이를 위임해야 한다. 이것은 워크스테이션 자가 삭제의 경우 백업으로서 작동하고, 다른 개발자들이 로컬 카피들을 업데이트 하여 변경 사항을 포함시키도록 할 수 있다.

변경 사항을 실행하기 전에 프로젝트를 업데이트 하라. ("프로젝트 업데이트" 참조) 프로젝트를 오른쪽 클릭하고 메뉴에서 Team > Commit을 선택한다. Eclipse는 Commit 다이얼로그를 디스플레이 하는데(그림 18), 여기에는 변경 사항이 요약되어 있다.


그림 18. 저장소에 변경 사항 실행하기

사용자 삽입 이미지

주의 깊게 살펴본다면, 프로퍼티 디렉토리에 프로퍼티 변화가 있었고(svn:ignore 프로퍼티를 추가하여 저장소에서 특정 파일들을 배제했다.), threadWork.c가 추가되면서 main.c가 삭제되었다. 이러한 변화 쌍들은 실제로 하나의 연산을 나타낸다. (파일 재명명)

저장소에서 빼고 싶다면, 리소스를 선택하지 않을 수 있다. 하나의 파일에서 작업을 부분적으로 마쳤고, 미완 변경 사항을 추가하고 싶지 않을 경우에 유용하다. 위 텍스트 필드에 알맞은 코멘트를 입력한 다음, OK를 클릭하여 변경 사항을 저장소에 추가한다.




위로


요약

Subclipse 프로젝트는 Subversion 버전 관리 시스템을 CVS 서버만 지원하는 Eclipse의 탁월한 팀 프로젝트 관리 기능과 통합했다. Eclipse의 업데이트 매니저를 사용하면, Subclipse를 Eclipse에 쉽게 추가할 수 있고, 이러한 탁월한 버전 관리 시스템을 Eclipse에서 직접 사용할 수 있게 된다.

프로젝트를 저장소에 추가하고, 프로젝트의 리소스를 관리하는 것이 Subversion에 익숙하지 않은 사람들에게는 힘든 일이지만, 일반 연산 절차는 단순하다. 이 글이 여러분이 Subclipse를 익히는데 도움이 되었기 바란다.

참고자료

교육

제품 및 기술 얻기

토론

필자소개
Chris Herborth는 10년 이상의 경력을 가진 기술 라이터이다. 주로 운영 체계와 프로그래밍에 대한 글을 쓰고 있다. 아들 Alex와 아내 Lynette와 함께 살고 있으며, 비디오 게임을 디자인 및 연구하고 있다.

'eclipse' 카테고리의 다른 글

Eclipse Tip  (0) 2008.09.08
JUnit 관련 사이트  (0) 2008.09.02
Eclipse 관련 IBM developerworks  (0) 2008.09.02
Eclipse PlugIn  (0) 2008.08.29
이클립스 가니메데 - IBM developerworks  (0) 2008.07.28
Posted by 알 수 없는 사용자
|

random 파일처리

VB & .NET 2008. 5. 15. 09:04

vb :: 랜덤(random) 파일처리
 
#랜덤파일 레코드의 정의
랜덤처리는 고정된 길이의 레코드(각 레코드는 필드로 구성됨)로 구성되어 있는 파일을 처리할 때 유용하다. 랜덤처리는 필요로 하는 특정데이터의 위치를 찾아서 데이터를 읽을 수 있으므로 순차파일 처리보다는 데이터베이스처럼 작업을 할 수 있다. 또한 파일의 특정위치만 읽기때문에 순차처리보다 빠르다.
 
#랜덤데이터의 입력
일단 랜덤파일을 만들기 전에 고정된 길이의 레코드를 구성하기 위해서는 사용자정의 데이터형인 type .. end type문을 써야 한다. 이 사용자정의 데이터형은 반드시 코드모듈에 있어야 한다.
[1] 프로젝트 탐색기에서 모듈을 추가하여 해당코드모듈창에 코드를 입력한다.
[2] 사용자정의 데이터형을 만들고 사용자정의 데이터형을 전역변수로 선언한다.
소스코드Type person                     '사용자정의 데이터형 정의
    number As Integer       '2바이트 길이의 number(학번) 필드정의
    name As String * 10     '10바이트 길이의 name(이름) 필드정의
    mark As Integer           '2바이트 길이의 mark(점수) 필드정의
End Type
Public student As person             '전역변수 선언
person데이터형은 총 14바이트(number(2) + name(10) + mark(2))의 길이로 구성된다.

[3] 폼에 commandButton을 추가하고 코드를 입력한다.
name:cmdAddRecord
caption:레코드 추가
소스코드Private Sub cmdAddRecord_Click()
    Dim fileNum As Integer
    Dim recordLen As Long
    fileNum = FreeFile
    recordLen = Len(student)        'Len함수는 변수의 길이를 반환한다.
   
    Open "c:\my documents\random.dat" For Random As fileNum Len = recordLen
   
    student.number = 1
    student.name = "visual"
    student.mark = 99
    Put #fileNum, 1, student          'put문으로 레코드데이터를 랜덤파일에 저장
   
    student.number = 2
    student.name = "basic"
    student.mark = 98
    Put #fileNum, 2, student
   
    Close #fileNum
End Sub

랜덤처리를 위해 파일을 열 때는 open문을 쓰고, 반드시 close문을 사용하여 닫아야 한다. 랜덤처리를 위한 open문은 다음과 같다.
  |형식| open filepath for random as filenumber len=recordsize
filepath인수에는 해당파일이 있는 파일경로와 파일명을 써준다. 만약 파일이 존재하지 않으면 자동적으로 만들고나서 다음을 수행하게 된다. 랜덤처리를 위해서 반드시 open문 마지막에 사용할 레코드길이를 지정해야 한다. len(변수명)함수를 이용하면 그 변수의 길이를 알 수 있다.
 사용자가 정의한 데이터형(레코드) 변수(student)의 각 필드에 값을 할당하기 위해서는 [변수명.요소 = 값]형태를 사용했다. 만약 어떤 요소에 값 할당이 생략되면 null값이 들어가게 된다. 또한 정의한 데이터형보다 길면 잘라버리게 되고, 짧으면 공백으로 채우게 된다.
 
마지막으로 레코드데이터를 프로그램의 변수에서 랜덤파일로 저장하려면 다음과 같은 put문을 사용한다.
  |형식| put [#]파일번호, [레코드위치], 변수명
[레코드위치]는 디스크에 저장할 레코드위치를 지정하는 인수이고, 사용할 수 있는 가장 큰 레코드 번호는 2,147,483,647이다. 레코드 번호를 생략하게 되면 현재레코드의 다음 레코드위치에 저장된다. 생략을 하려면 반드시 콤마(,)를 지정해야 한다. 위의 예문에서는 첫번째 위치와 두번째 위치에 두개의 레코드가 저장된다.
만약 레코드위치를 순서대로 지정하지 않고 건너뛰어 지정한다면, 그 사이의 레코드 각 필드에는 쓰레기값이 저장된다.

 
#랜덤데이터 읽기
위에서 작성한 랜덤파일의 레코드를 읽기위해서는 get문을 사용해야 한다. 랜덤파일작성과 마찬가지로 랜덤파일에 있는 레코드를 읽기 위해선 먼저 사용자정의 데이터형을 코드모듈에 정의해야 한다. 그리고나서 get문을 사용하면 레코드를 변수에 복사할 수 있다.
다음 코드는 사용자정의 데이터형의 변수에 레코드의 각 필드를 읽기위한 예제를 나타내고 있다.

소스코드Private Sub cmdReadRecord_Click()
    Dim filenum As Integer
    Dim recordLen As Long
    Static recordNum
   
    filenum = FreeFile
    recordLen = Len(student)
   
    Open "c:\my documents\random.dat" For Random As filenum Len = recordLen
   
    Do Until EOF(filenum)       '엑세스한 파일의 끝에 도달할 때까지 false반환
        recordNum = recordNum + 1
        Get #filenum, recordNum, student        'get함수를 이용해 특정레코드를 읽는다.
        Debug.Print student.number; ; student.name; ; student.mark
    Loop
   
    Close #filenum
End Sub

get문을 구성을 정리하면 다음과 같다.
  |형식| get [#]파일번호, [레코드위치], 변수명
레코드 위치는 디스크에서 읽어야 할 레코드번호를 지정한다. 레코드번호를 생략하면 다음 레코드 위치를 갖는 레코드를 읽게된다. 이때에도 콤마(,)를 지정해야 한다.

랜덤파일에서 특정레코드를 찾으려면 다음과 같은 seek문을 사용하면 된다.
  |형식| seek [#]파일번호, 레코드위치

#레코드 삭제
레코드의 필드를 지우면 레코드를 삭제할 수 있지만 레코드는 계속 파일에 남아있게 된다. 그러나 여러분들은 공간을 낭비하거나 순차동작으로 방해받고 싶어하지 않기 때문에 보통 파일에 빈 레코드를 남겨두고 싶지 않을 것이다. 이때에는 새 파일에 남은 레코드를 복사한 다음, 원래 파일을 삭제하는 것이 좋다. 랜덤액세스 파일의 삭제된 레코드를 없애려면 다음 순서를 따르면 된다.
1] 새 파일을 만들어 원래 파일의 모든 유효한 레코드를 새 파일에 복사한다.
2] 원래 파일을 닫고 kill문을 사용하여 삭제한다.
3] name문을 사용하여 원래 파일의 이름으로 새 파일의 이름을 바꾼다.
random처리는 일정한 레코드로 구성된 파일에 적용해야 그 유용성이 나타난다. 그러나 대부분의 파일들은 레코드와 같은 일정한 패턴의 길이를 가지고 있지 않다. 이러한 종류의 파일은 이진(binary)처리를 사용하면 좀 더 융통성있게 처리할 수 있다.
 

'VB & .NET' 카테고리의 다른 글

ADO.Net DB연결과 사용법  (0) 2009.03.08
ADO.NET 표준사례  (0) 2009.03.08
[함수] Len, Left, Mid, Right - 문자열 자르기  (0) 2008.10.15
Posted by 알 수 없는 사용자
|

'javaScript' 카테고리의 다른 글

Dynamic Gradient Background  (0) 2009.03.06
javaScript OpenSource Framework - Prototype  (0) 2008.08.29
Posted by 알 수 없는 사용자
|

Subversion 설치 및 운용

SCM 2008. 5. 15. 01:37

Embedded 커널 개발시 드라이버 추가 및 수정은 가지처럼 엮어진 여러 파일들을 수정하면서 이루어진다.  수정되는 양이 많다 보니 각 단계별 패치파일을 생성하기에도 양이 많고 쉽게 알아보기 힘들다. 하지만 버전관리를 통해 어느파일의 어느부분이 수정되었는지 쉽게 알수 있고 오류가 발생하였을 때 역추적도 쉬워진다.  

보안설정을 통해 소스 관리에 보존을 강화하며 웹인터페이스인 Viewvc를 활용해서 웹을 통해 열람시 보기 쉽고 수정사항등을 쉽게 찾아볼수 있다.

1. Subversion 개요
 
     (1) SVN이란?
            • Subversion 은 소프트웨어 버전 관리 시스템이다.
            CVS이후에 나왔으며 바이너리 까지 버전관리 할수 있는 장점이 있다.
     (2) 버전 관리 시스템 장점
            개발 버전과 릴리즈 버전을 섞이지 않고 쉽게 관리
            소스를 잘 못 수정했더라도 기록이 남고 되돌리기가 쉽다.
            수정, 추가, 삭제 등의 기록이 모두 남고 변경 사항을 추적하기 쉽다.
            개발자들이 따로 백업을 하지 않아도 된다.
     (3) 버전 관리 시스템의 종류
            CVS(Concurrent Version System) : 가장 오래된 버전관리 시스템
            Subversion : CVS의 간점을 개선하고 CVS를 대체할 목적으로 개발
            Visual Sourcesafe : 윈도우 기반 소프트웨어 버전관리 툴 (상용)
            Clear Case : Rational사에서 만든 버전관리 시스템 (상용)
            BitKeeper : 리눅스 커널개발시 사용하는 버전관리 시스템 (상용)
     (4) 버전 관리 시스템의 용어 정리
            리포지토리(Repository/ 저장소) : 관리되는 소스와 변경사항등이 저장되는곳
            체크아웃(Check out) : 저장소에서 소스를 받아오는것
            커밋 (Commit) : 체크아웃 한 소스를 수정, 추가 한 후 저장소에 저장하여 갱신
            리비전 (Revision) : 수정사항이 증가할때 마다 숫자가 증가하며 프로젝트의 진행 상황을 알수 있다.
            임포트 (import) : 아무것도 들어있지 않은 저장소에 맨 처음 소스를 넣는 작업
            익스포트(Export) : 체크아웃과 달리 버전관리 파일들을 제외한 순수한 파일을 받아올수 있다.
    (5) Embedded 개발시 장점
            Embedded 커널 개발시 드라이버 추가 및 수정은 가지처럼 엮어진 여러 파일들을 수정하면서 이루 어진다.
           수정되는
양이 많다 보니 각 단계별 패치파일을 생성하기에도 양이 많고 쉽게 알아보기 힘들다.
           하지만 버전  관리를 통해 어느
파일의 어느부분이 수정되었는지 쉽게 알수 있고 오류가 발생하였을 때 역추적도
           쉬워진다.
            관리대상인 소스파일들이 SVN 서버 저장소에 저장되기 때문에 다른 개발환경에서도 작업중인 소스를 다운로드 
              
고 수정한 부분을 커밋할 수가 있다.
            여러명이 각 모듈 별로 드라이버 작업을 할 경우 작업내용은 저장소에 모두 반영되기 때문에 추후 머징작업시
              시간을
단축할 수 있다.
            윈도우에서 작업을 하든 리눅스에서 작업을 하든 큰 문제없이 사용할수 있으며 웹브라우저를 통해 소스파일을
              검색
할수 있기 때문에 쉽게 접근할수 있다.
            릴리즈 후 최종 소스에 대한 자료관리도 쉽게 할 수 있다.


2. Subversion 설치
 
Subversion은 최신 리눅스 패키지에 포함이 되어있기도 하나. 여기서는 redhat 9.0 기준으로 소스컴파일을 통해 구축하는 방법을 소개한다. 패키지로 설치되어 있을경우 설정파일의 위치가 다를뿐 사용하는 방법은 같다.
 
     (1) 소스파일 다운로드
            Subversion 소스파일은 http://subversion.tigris.org/ 에서 subversion-1.4.3.tar.bz2파일을 받는다.
            Subversion 의존성 라이브러리(subversion-deps-1.4.3.tar.bz2)도 다운 받는다.
            Apache 2.0 이상 버전을 받는다. http://httpd.apache.org/ 에서 httpd-2.2.4.tar.gz 파일을 받는다.
            저장소를 Berkeley DB를 사용하고 할때는 Berkeley DB도 설치해야 한다.
              http://www.oracle.com/technology/software/products/berkeley-db/db/index.html 에서
              4.5.20.tar.gz를 받는다
            openssl http://www.openssl.org/source/ 에서 openssl-0.9.8e.tar.gz  을 받는다.
     (2) 소스 컴파일
            openssl 컴파일
              [root@hybus SRC]# tar xvzf openssl-0.9.8d.tar.tar
              [root@hybus SRC]# cd openssl-0.9.8d
              [root@hybus openssl-0.9.8d]# ./config
              [root@hybus openssl-0.9.8d]# make
              [root@hybus openssl-0.9.8d]# make install
            Berkeley DB 컴파일
              [root@hybus SRC]# tar xvzf db-4.5.20.tar.tar
              [root@hybus SRC]# cd db-4.5.20
              [root@hybus db-4.5.20]# cd db-4.5.20
              [root@hybus db-4.5.20]# cd build_unix
              [root@hybus build_unix]# ../dist/configure
              [root@hybus build_unix]# make
              [root@hybus build_unix]# make install

           
 
설치하면 /usr/local/BerkelyDB4.5 디렉토리가 생긴다.
              vi /etc/ld.so.conf로 경로를 추가해준다.

사용자 삽입 이미지
              추가 해주었으면 ldconfig로 설정을 적용한다.
              [root@hybus build_unix]# ldconfig

            Apache2 컴파일
              [root@hybus SRC]# tar xvzf httpd-2.2.4.tar.gz
              [root@hybus SRC]# cd httpd-2.2.4
              설정이 길기 때문에 스크립트를 만들어서 설정한다.
              [root@hybus SRC]# vi apache_conf

사용자 삽입 이미지

              [root@hybus SRC]# chmod +x apache_conf
              [root@hybus SRC]# ./apache_conf
              [root@hybus SRC]# make
              [root@hybus SRC]# make install
            Subversion 컴파일
              [root@hybus SRC]# tar xvjf subversion-1.4.3.tar.bz2
              [root@hybus SRC]# tar xvjf subversion-deps-1.4.3.tar.bz2
              설정이 길기 때문에 스크립트를 만들어서 설정한다.
              [root@hybus SRC]# vi subver_conf

사용자 삽입 이미지

              [root@hybus SRC]# chmod +x subver_conf
              [root@hybus SRC]# ./subvert_conf
              [root@hybus SRC]# make
              [root@hybus SRC]# make install

 
3. Subversion 사용하기
     (1) 저장소 만들기
            저장소 생성
              버클리 DB를 이용하거나 파일시스템을 이용한 저장소 둘중에 하나를 택하여 생성할수 있다.
              저장되는 형태는 다르나 사용하는 방법은 같다.
              # mkdir /home/svn
              # cd /home/svn/ /home/svn
              # svnadmin create --fs-type fsfs sample (파일시스템을 이용한 저장소)
              # svnadmin create --fs-type  bdb sample (버클리 DB를 이용한 저장소)
            저장소 그룹 권한설정
              # chmod -R g+w sample
            Apache 설정
              #cd /home/svn /home/svn
              # chown -R nobody.nobody sample (apache의 접근권한은 각 패키지마다 다를수 있으므로 확인 후 지정)
            /usr/local/apach2/conf/httpd.conf 수정
              <Location /svn/sample>
              DAV svn SVNPath
              /home/svn/sample
              </Location>
            확인
              웹 접속 http://125.7.203.253/svn/sample 또는 #svn checkout   
              http://125.7.203.253/svn/sample sample
     (2) 에디터 설정
            subversion에서 사용할 기본적인 에디터 지정
            지정하지 않으면 커밋등을 할수 없게 된다.
            .bash_profile등에 추가
              SVN_EDITOR=/usr/bin/vim
              export SVN_EDITOR
     (3) 디렉토리 만들기
            # svn mkdir svn://125.7.203.253/sample/trunk
              vi가 실행되면 :q!로 빠져나간다.
            Log message unchanged or not specified
              a)bort, c)ontinue, e)dit, C를 누르고 엔터를 누르면 Committed revision 1. 메세지가 나온다.
            메시지가 나오지 않으면 계정관리및 디렉토리 권한 설정을 다시 확인한다
     (4) Import
            저장소에 소스를 넣는다
              파일이나 디렉토리명을 import 다음에 넣어준다 디렉토리일 경우 디렉토리 하위 내용부터 추가된다.
              # svn import sampledir http://125.7.203.203/svn/sample/trunk
            확인
              # svn list http://125.7.203.203/svn/sample/trunk
     (5) Checkout
            저장소에 소스를 download한다. co로 줄여서 사용할수 있다.
              # svn checkout http://125.7.203.203/svn/sample/trunk sample
              방금 위에서 trunk에 import한 내용을 sample이란 디렉토리로 download한다.
              이 sample이란 디렉토리에서 이제 소스를 수정하고 작업하고 commit하면서 관리를 한다.
            checkout한 디렉토리에는 .svn이란 디렉토리가 있다 저장소 정보가 있기 때문에 지우면 안된다.
     (6) Commit
            check out해서 받은 소스를 수정하고 갱신한다. .svn이 있는 즉 저장소 정보가 있는 곳에서 커밋을 해야
              적용된다.
               # svn ci
    (7) Diff
            리비전 된 내용들을 비교해서 볼 수 있다.

           

4. Subversion 보안설정

 
     (1) apache 사용자 인증
 
            아파치에 사용될 패스워드 파일을 만든다.

사용자 삽입 이미지

 
            최초에 패스워드 파일을 만들때는 c 옵션을 붙이고 추후에 사용자 추가때는 c 옵션을 빼고 추가하면 된다.

사용자 삽입 이미지

 
            http.conf 파일에서 서브버전 location설정에 다음을 추가한다.

사용자 삽입 이미지

 
위에서 생성된 passwd파일에서 생성된 사용자와 비밀번호로 로그인 한 사람만 열람 및 읽기쓰기가 가능한 옵션이다.
만일 읽기는 모두에게 가능하고 커밋만 사용자만 가능하게 설정한다면 다음과 같이 수정한다.  

사용자 삽입 이미지


5. ViewVC 연동하기
 
(1) Viewvc란?
 
Viewvc는 CVS에서 사용하였던 웹 인터페이스이다. 웹에서 소스를 비교하고 열람하는데 상당히
  유용하다. 파이썬 기반으로 동작되며 http://www.viewvc.org에서 자료를 받을수 있다.
 
(2) Viewvc 설치
 
 파이선 설치
  레드햇9.0 기준으로 설명을 하면 mod_python이 기본적으로 설치가 되어 있지 않다.
  따라서 래드햇 홈페이지에서 몇가지 rpm을 설치해야 한다.
  mod_python-3.0.3-3.i386.rpm
  swig-1.3.25-1.i386.rpm
 의존성의 패키지를 설치가 끝났다면 viewvc를 설치한다. 1.0.3 버전을 다운 받고 ./viewvc-install 을 실행하면 경로를 물어보는 커맨드가 나온다. 각 경로에 맞게 설정해주면 설치가 된다.

사용자 삽입 이미지

(3) Viewvc 설정

 
 /usr/local/viewvc-1.0.3에 설치가 되었다. viewvc.conf을 수정한다. 다음과 같은 부분을 찾아서 수정한다.

  저장소의 경로를 정한다. cvs_roots는 주석처리한다.
  svn_roots = svn: /home3/svn/PROJECT
  default_root = svn
  rcs_path = /usr/bin 는 주석을 해제한다.
  mime_types_file = /usr/local/apache2/conf/mime.types 은 주석을 해제한다.
  use_enscript = 1
  enscript_path = /usr/bin/
  php_exe_path = /usr/bin/php
  allow_tar = 1
  use_re_search = 1
 
 /usr/local/apache2/conf에 설치가 되었다. Httpd.conf파일에서 cgi 부분을 수정한다.
사용자 삽입 이미지
 /usr/local/viewvc-1.0.3/bin/cgi 에 있는 query.cgi  viewvc.cgi 파일을 /usr/local/apache2
  /cgi-bin에 복사한다.
 아파치를 재시작 한다.
  /usr/local/apache2/bin/apachectl restart

  http://125.7.203.253/cgi-bin/viewvc.cgi/로 접속하면 vicwvc로 파워업된 svn을 볼수있다.
  125.7.203.253은 아파치 서버와 svn서버가 동작되고 있는 ip이다.
사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

http://blog.naver.com/hybusnet?Redirect=Log&logNo=40037959758

'SCM' 카테고리의 다른 글

형상관리 소프트웨어  (0) 2008.05.15
Posted by 알 수 없는 사용자
|

형상관리 소프트웨어

SCM 2008. 5. 15. 01:33

http://otisnate.egloos.com/1934667

 QAC, QAC++
- mds technology
- http://mdstec.com/ing/product/product.html?uid=81
코드 작성 표준 Rule과 사용자 정의 Rule을 이용하여 Bug 검출
데이터 흐름의 오류 테스트
다양한 형태의 메시지 관리 기능 (HTML,TEXT, Excel 결과 format)
컴파일과 동시에 테스트 진행


 StP
- Aonix
- http://www.aonix.com/stp.html
DFD등의 Diagram을 꽤 미려하게 생성.
기존 소스를 Reverse engineering하는 기능이 있긴 하지만 떨어짐.
Structured modeling을 적용한 프로젝트를 관리하기 쉽다.
기존 프로젝트를 분석하기 보다는 DFD를 비롯한 각종 차트를 생성하기 편함
Data Flow, Data Structure, Control Flow, State Transition, Control Specification, Structure Chart, Flow Chart 도식화 지원


 RESORT for C (RESOFTC)
- SOFT4SOFT
- http://www.soft4soft.com/html/products_c.html
Reverse Engineering Toolset
Reengineering Toolset
Testing Toolset
Quality Assurance Toolset : Code Checker(MISRA-C 포함), Software Metrics


 Logiscope
- Telelogic
- http://www.telelogic.co.kr/products/logiscope/index.cfm
- http://www.telelogic.com/corp/products/logiscope/highlights.cfm
코드 검토와 오류가 발생하기 쉬운 모듈의 식별 및 탐지를 자동화하여 테스트 범위를 넓힐 수 있도록 해 주는 소프트웨어 품질 보증(Quality Assurance: QA) 도구


 McCabe IQ
- McCabe & Associates
- http://www.mccabe.com/iq.htm
McCabe QA : Metric을 통한 객관적인 품질평가
McCabe Test : 체계적이고 효율적인 시험지원
McCabe Reverse : 대상 프로그램의 이해력 향상


 Fortify Source Code Analysis
- Fortify Software
- http://www.fortifysoftware.com/products/sca.jsp
Data Flow Analyzer
Semantic Analyzer
Control Flow Analyzer
Configuration Analyzer
Rules Builder


 Coverity Extend
- Coverity, Inc.
- http://www.coverity.com/products/extend.html
Finding custom or domain specific defects unique to your code.
Complying with company or industry standards such as MISRA, DO-178B or the FDA's General Principles of
Software Validation.
Automating parts of the manual code review.


 CodeAssure
- Secure Software
- http://www.securesoftware.com/products/solo.html
Analyze your Java source code for security flaws.
Deploy in an Eclipse environment and on existing projects.
Achieve high acceptance rate for code without security flaws.
Minimize the chance of failing a security audit.
Gain valuable security experience and skills.
Language Pack : Java, C, C++


 SPI Dynamics DevInspect and SecureObjects
- SPI
- http://www.spidynamics.com/products/devinspect/index.html
Integrates in Visual Studio.NET - Only checks languages, that are part
of the .NET framework
Focuses on Web Applications.
Provides code fragments.

'SCM' 카테고리의 다른 글

Subversion 설치 및 운용  (0) 2008.05.15
Posted by 알 수 없는 사용자
|