1. JAVA 설치

JAVA SE JDK 설치합니다. 아래의 링크에서 다운받으면 됩니다.

사진과 같이 누르시고 개발 환경에 맞게 설치합니다!

http://www.oracle.com/technetwork/java/javase/downloads/index.html


2. Eclipse 설치

JAVA를 사용할 인터페이스 Eclipse를 설치합니다.

https://www.eclipse.org/


3. JAVA 환경 변수 설정

어디서든 접근할 수 있도록 하기 위해서는 환경 변수를 꼭 설정해주셔야 합니다.

먼저 JDK의 경로를 확인합니다.


제어판/시스템 및 보안/시스템 에 들어가셔서 설정 변경을 클릭합니다.


고급의 환경변수를 클릭하신 후 시스템 변수(S) [JAVA_HOME]값을 추가합니다.

변수 값에는 JDK의 경로를 넣어줍니다.


이후 PATH를 클릭하여 텍스트 편집을 누른 후, 아래와 같이 [;%JAVA_HOME%\bin;]을 입력해줍니다.


4. apache Tomcat 7 설치

Tomcat7이 가장 안전하기에 7으로 설치했습니다.

https://tomcat.apache.org/download-70.cgi


5. Tomcat 설정

상단의 Window/preference를 클릭 후, Server/Runtime Environment에 들어가 Add합니다.

설치한 Tomcat 버전에 맞도록 설정한 후 Next를 클릭합니다.

설치한 파일을 아래의 [Tomcat installation directory]에 작성합니다.

파일이 없는 경우 아래의 [Download and Install]버튼을 클릭하여 설치합니다.

Finish 버튼을 누른 후, 아래와 같이 작성되면 추가 성공한 것입니다.

6. Server 생성

File/New/Other을 클릭하여 Server를 생성해줍니다.


감사합니다.




Sorting Networks


1. Comparator Networks : 와이어로 연결하여 정렬

- 구성 : wire, comparator

- comparator


예시)


이 때, depth(network 실행시간)는 아래 사진과 같이 3이다.

depth x,y = max(x,y) + 1


특징1) 0과 1로 이루어져 있을 때 올바르게 정렬되면, 0과 1 외의 숫자가 존재해도 올바르게 정렬될 수 있다.

특징2) 정렬하는 F(x)가 monotone increasing(증가함수)일 때, 항상 결과는 증가함수 y값으로 나온다.


2. Bitonic sorting network : 증-감, 또는 circular shift하면 증-감으로 만들 수 있는 것.


3. Half-cleaner

> depth 1

> compares input i with input i+n/2 

: 정렬시 반쪽은 0 또는 1로 정렬되며, 다른 한쪽은 Bitonic으로 정렬 됨.


4. Bitonic-sorter[n]의 구성

> 1 half-clreaner[n]

> 2 bitonic-sorter[n/2]


depth D(n)

> 0    if n=1

> D(n/2)+1  if n=2 to the K

해 D(n) = log n


5. Merging network : Merging + Bitonic-Sorter


6. sorting network

> 2 Sorted[n/2]

> 1 Merger[n]







1.1  데이터와 정보


1.1.1 데이터와 정보


1. 데이터의 정의


데이터란, 추론과 추정의 근거를 이루는 사실


 구분

형태 

예 

정성적 데이터(qualitative data) 

언어, 문자 등

회사 매출이 증가함 

정량적 데이터(quantitative data) 

수치, 도형, 기호 등 

30(나이), 48.4(kg) 

[표 1-1-1] 데이터 유형


  • 정성적 데이터 : 수치로 명확하게 표현되는 데이터로써 데이터 관리 시스템(ex)DBMS)에 저장·검색·분석하여 활용하기가 용이.
  • 정량적 데이터 : 비정형 데이터라 불리우며, 트위터나 페이스북, 블로그 등에 올린 글 등과 같은 글.



암묵지 

형식지 

공통화(Socialization) 

표출화(Externalization) 

내면화(Internalization) 

연결화(Combination)

[표 1-1-2] 암묵지와 형식지의 상호작


  • 암묵지 : 시행착오와 오랜 경험을 통해 개인에게 습득된 무형의 지식으로 개인에게 체화되어 있기 때문에 외부에 표출되어 다른 사람에게 공유되기 어렵다.

ex) 김장김치 담그기, 자전거 타기


  • 형식지 : 유형의 지식으로 지식의 전달과 공유 가능하다.

ex) 교과서, 매뉴얼, DB


암묵지 -> 형식지 : 개인의 내면화를 공통화하고 연결화하여 객관적인 데이터로 가공·분석하는 과정을 거쳐 표출화한다.



2. 데이터와 정보의 관계



혜(Wisdom) 

근본 원리에 대한 깊은 이해를 바탕으로 도출되는 창의적 아이디어

ex) A마트의 다른 상품들도 B마트보다 쌀 것이라고 판단

지식(Knowledge) 

상호 연결된 정보 패턴을 이해하여 이를 토대로 예측한 결과물

ex) 상대적으로 저렴한 A마트에서 연필을 사야겠다.

정보(Infromation) 

데이터의 가공 및 상관관계간 이해를 통해 패턴을 인식하고 그 의미를 부여한 데이터

ex) A마트의 연필가격이 더 싸다.

데이터(Data) 

존재형식을 불문하고 타 데이터와 상관관계가 없는 가공하기 전의 순수한 수치나 기호를 의미

ex) A마트 100원에, B마트는 200원에 연필을 판매  



1.1.2 데이터베이스 정의와 특징


1. 용어의 연역


데이터베이스(Database) : 데이터(data)의 기지(base),  수집된 자료를 일컫는 말.


2. 데이터베이스의 정의


  • [EU 데이터베이스의 법적 보호에 관한 지침] 체계적이거나 조직적으로 정리되고 전자식 또는 기타 수단으로 개별적으로 접근할 수 있는 독립된 저작물, 데이터 또는 기타 소재의 수집물.

  • [국내 저작권 법] 소재를 체계적으로 배열 또는 구성한 편집물로서 개별적으로 그 소재에 접근하거나 그 소재를 검색할 수 있도록 한 것.

  • [정보통신용어사전, TTA] 관련된 레코드의 집합, 소프트웨어로는 데이터베이스관리시스템(DBMS : Database Management System)을 의미.


3. 데이터베이스의 특징

1) 일반적인 데이터베이스의 특징
  • 데이터베이스 = 통합된 데이터(intergrated data) : 중복 존재하지 않음.
  • 데이터베이스 = 저장된 데이터(stored data) : 저장매체에 저장 되는 것.
  • 데이터베이스 = 공용 데이터(shared data) : 데이터를 공동으로 사용 가능.
  • 데이터베이스 = 변화하는 데이터 : 삽입·삭제·갱신으로 항상 변화하며 정확한 데이터로 유지.
 2) 데이터베이스의 다양한 측면에서의 특성
  • 정보의 축적 및 전달 측면 : 대량의 정보를 일정한 형식에 따라 컴퓨터 등의 정보처리기가 읽고 쓸 수 있도록 하는 기계가독성과 다양한 방법으로 필요한 정보를 검색할 수 있는 검색가능성, 그리고 정보통신망을 통하여 원거리에서도 즛기 온라인으로 이용할 수 있는 원격조작성을 갖음.
  • 정보 이용 측면 : 이용자의 정보 요구에 따라 다양한 정보를 신속하게 획득할 수 있고 원하는 정보를 정확하고 경제적으로 찾아낼 수 있음.
  • 정보 관리 측면 : 정보를 일정한 질서와 구조에 따라 정리·저장하고 검색·관리할 수 있도록 하여 방대한 양의 정보를 체계적으로 축적하고 새로운 내용 추가나 갱신이 용이.
  • 정보 기술 발전 측면 : 데이터베이스는 정보처리, 검색·관리 소프트웨어, 관련 하드웨어, 정보 전송을 위한 네트워크 기술 등의 발전을 견인 할 수 있음.
  • 경제·산업적 측면 : 데이터베이스는 다양한 정보를 필요에 따라 신속하게 제공·이용할 수 있는 인프라로서 특성을 가지고 있어 경제, 산업, 사회 활동의 효율성을 제고하고 국민의 편의를 증진하는 수단으로서 의미를 갖음.

1.1.3 데이터베이스 활용

1. 기업내부 데이터베이스

OLTP(Online Transaction Processing) : 데이터 '수집'에 초점 ----> OLAP(Online Analytical Processing) : 데이터 '분석'에 초점

가. 제조부분
- ERP(Enterprise Resource Planning) 시스템 도입과 함께 DW, CRM, BI(Business Intelligence) 등의 진보된 정보기술을 적용한 기업내부 인하우스 DB 구축이 주류를 이룸.
나. 금용부분
- EAI(Enterprise Applications Intergration), ERP, e-CRM -----> DW 적극적 도입하여 대용량 DW를 위한 최적의 BI 기반 시스템 구축.
- 최근 EDW(Enterprise Data Warehouse)의 확장.

다. 유통부분
- CRM, SCM 구축, 상거래를 위한 각종 인프라 및 KMS(Knowledge Management System)를 위한 별도의 백업시스템 구축.
- 균형성과관리(BSC), 핵심성과지표(KPI), 웹 리포팅 등의 다양한 고객 분석 툴을 통해 기존 데이터베이스와 연계.
- 전자태그(RFID) 등장으로 접촉이 없어도 무선주팟로 전송·처리가 가능.


2. 사회기반구조로서의 데이터베이스


가. 물류부분

- CVO 서비스(Commercial Vehicle Operation System, 화물운송정보), EDI 서비스, 데이터베이스 서비스(물류정보), 부가서비스로 구성.

- 기업 물류정보(이삿짐, 택배, 정책, 법령, 물류시설, 장비), 해양수산 데이터베이스(항만정보, 물류관련 정책 정보) 개발.

- 현대 택배의 HYDEX(택배정보시스템), 한진의 GIOVAN(물류정보서비스, 물류비즈니스 서비스), 등등


나. 지리부분

- GIS, RS(Remote Sensing), GPS(Global Positioning System), ITS(Intelligent Transport System) 기술을 통합하여 새로운 GIS 응용에 활용하는 4S 통합기술, LBS(Location Based Service) 기술, SIM(Spartial Information Management), 공간 DBMS 등 GIS 개발.


다. 교통부분

- 실시간 교통정보 : 지능형교통시스템(ITS, Intelligent Transport System), 방송매체 등에서 교통소통을 목적으로 운전자에게 제공되는 정보 

- 비실시간 교통정보 : 교통정책 및 계획 수립 등에 필요한 교통 분야별 기초자료 및 통계를 제공하는 데이터베이스


라. 의료부분

- 처방전달시스템, 임상병리, 전자의무기록, 영상처리시스템 PACS(Picture Archiving and Communications System), 병원의 멀티미디어, 원격의료, 지식정보화

- u 헬스(ubiquitous-Health) 등장


마. 교육부분

- 에뉴넷(Edunet)과 16개 시·도 교육청 홈페이지 어느 곳에서나 전국의 교육자료를 원스톱 검색 가능.

- 교육행정정보시스템(NEIS, National Education Information System) 개발.

  • Make를 쓰는 이유

 - 각 파일에 대한 반복적 명령의 자동화로 인한 시간 절약

 - 프로그램의 종속 구조를 빠르게 파악 할 수 있으며 관리가 용이

 - 단순 반복 작업 및 재작성을 최소화


  • Makefile의 구성

 - 목적파일(Target) : 명령어가 수행되어 나온 결과를 저장할 파일 

 - 의존성(Dependency) : 목적파일을 만들기 위해 필요한 재료

 - 명령어(Command) : 실행 되어야 할 명령어들

 - 매크로(macro) : 코드를 단순화 시키기 위한 방법


  •  Makefile 만드는 이유

 - 하나의 실행파일을 생성하는데 필요한 c파일이 여러 개인 경우 그만큼의 명령어가 필요하다. 이러한 상황을 해결해 주기 위해 makefile

 을 사용한다.





문제 13) 문제 12와 동일한 mainAlg 실파일이 만들어 질 수 있도록 make 유틸리티를 실행할 수 있는 Makefile 파일의 내용을 쓰세요.


1. Makefile을 만들기 위해 printMain.c 와 printmsg.c 파일을 만든다.




1) ‘printMain’와 ‘printmsg’ 파일 2개를 생성한다.

위의 사진은 ls의 명령어를 통해 파일이 생성되었는지 확인하는 장면이다.


 (1) 각 object 파일을 생성한다.

 gcc -c -o printMain.o printMain.c

 gcc -c -o printmsg.o printmsg.c


 이때, 

 -c 옵션 : object 파일을 생성

 -o 옵션 : 생성 될 파일 이름을 지정


 각 object 파일을 묶어 실행파일 생성한다.

 gcc -o mainAlg printMain.c printmsg.c


 실행 후 출력한다.

 ./mainAlg


2. Makefile을 생성


 1) Makefile 생성 방법




 

 2) 생성

  mainAlg : printMain.o printmsg.o

               gcc -o mainAlg printMain.o printmsg.o

  printMain.o : printMain.c

                   gcc -c -o printMain.o printMain.c

  printmsg.o : printmsg.c

                  gcc -c -o printmsg.o printmsg.c

  clean :

           rm *.o mainAlg 

  



3. 실행화면




 


 

느낀점 : Make를 사용하면 어떤 장점이 있는지 알지 못하고 무작정 외우기만 했다. 여러 번 힘들게 명령어를 작성하여 실행하는 과정을 make를 사용하면 간편하게 처리할 수 있다는 장점이 있다. 이러한 장점을 적용할 수 있었던 계기가 됬다.

  • 코드

 

위의 코드를 작성했더니아래와 같은 경고와 오류가 발생했다.

 


  • 오류경고

 


WARNING : format '%d' expects argument of type 'int', but argument type int 2 has type '__off_t {aka long int}' [-Wformat=]

Warning의 이유는 지난번과 같이 메모리가 깨지는 것으로 casting 할 필요성이 있다.


참고)  http://sojeong2.tistory.com/5?category=719060



ERROR : 'struct stat' has no member named 'st_fstype' printf("File system: %s \n", finfo.st_fstype);

그렇다면 에러를 확인해보자! 

확인해보니 struct에 st_fstype이 지원하지 않는다는 오류 메시지였다.

이에 마지막줄은 제거하고 (long long)을 통해 casting 해주었다.

 

또한 추가해서,

1.     #include <Stdlib.h> : C언어의 표준 라이브러리로문자열 변환의사 난수 생성동적 메모리 관리 등의 함수들을 포함하고 있다.

2.     #include <time.h> : C언어의 표준 라이브러리로시간과 날짜를 얻거나 조작하는 함수들을 포함하고 있다.

을 작성했다.

 


  • 오류 정리 후실행되는 모습

 

 

느낀점 : 윈도우보다 리눅스에 관한 정보들이 열악하여 찾기는 쉽지 않았다그러나 리눅스 또한 조금씩 익숙해져 가는 것 같다. Putty 또한 지금은 손 쉽게 이용하고 있다.

  • 코드



  • 코드 분석


Test.txt를 생성하여 초접근 권한을 0755로 설정하였다. 그러나 19행의 제한으로 인해 실제로는 0400이 설정된다.

이후 파일을 닫고 test.txt 파일에 대해서 쓰기 작업(W_OK)을 할 수 있는지 검사한다.

접근 권한을 0644로 변경하고 *소프트 링크를 생성한다.

31행에서 생성된 소프트 링크 파일의 실제 내용을 읽어서 표준 출력한다.

이러한 정보는 구조체 변수 FINFO저장한 후 출력한다.


*소프트 링크(심볼릭 링크) : 기호화 된 링크는 절대 경로 또는 상대 경로의 형태로 된 다른 파일이나 디렉터리에 대한 참조를 포함하고 있는 특별한 종류의 파일이다.





이 때, 경고 창 2개가 뜬다.


 - format '%d' expects argument or type 'int', but argument 2 has type '__off_t {aka long int}' [-Wformat=]

 - format '%d' expects argument of type 'int', but argument 2 has type '__blkcnt_t {aka long int}' [-Wformat=]


그러나 경고를 무시하고 실행해도 출력 할 수 있다.




하지만 경고가 궁굼하다면 경고의 메시지를 검색해보자!


경고 설명 :

%d는 정수형 출력해 주는 형식문자 이지만, strlen()라는 함수의 반환형은 매크로 자료형이다. 따라서 서로 자료형이 맞지 않다는 경고창을 주는 것이라고 나와있다.


해결 :

1) %d → %s로 변경해보겠다. (실패)

전혀…… 경고가 없어지지 않았다.


다시 한번 경고를 확인해보니 int형의 메모리는 4바이트로, long은 8바이트이다. 이 때, int형 자리에 long의 반환형 값이 들어가게 되면 format이 깨진다는 메시지이다.


2) 이를 해결하기 위해서는 %zu 또는 %ld를 통해 casting해주어야 한다. 코드를 경고 창이 뜨는 줄에 %d → $zu로 변경하니, 아래와 같이 경고 창이 없어졌다.

 


느낀점 : 굳이 큰 메모리를 사용할 필요가 없음에 우리는 간편하고 쉽게 자료형을 변환했다. 그러나 이번 기회를 통해 자료형 변환 과정에 있어서 메모리가 손상될 수 있다는 사실을 알 수 있었다. 메모리를 간과할 수 있는 프로그램은 없다고 생각한다. 다시 한번 메모리에 대해 생각해보게 된 계기가 된 것 같다.

Putty를 이용하여 ‘temp.txt’ 생성과, txt안에 문장을 출력까지 하고자 한다.

 

먼저, putty에 원격으로 연결하여 로그인한다. 이후 vi 명령어를 통해 test0404.c파일을 연다.

 


Char pathname[] = “temp.txt”;

If((filedes = open(pathname, O_CREAT | O_RDWR, 0644)) == -1)

위의 코드는 ‘temp.txt’라는 파일을 생성하는 코드이다. 

아래 if문은 예외처리하기 위함이다.

Content는 txt파일에 넣을 내용이다.





사진은 컴파일 한 후,  ls 명령어를 사용하여 txt파일이 생성되었는지 확인한 것이다.





‘temp.txt’를 열어보면 위에 putty를 통해 c파일에 작성한 내용을 확인할 수 있다.  

리눅스 폴더에서 또한 ‘temp.txt’가 생성되었는지 확인할 수 있다.  







느낀점 : 처음 ‘temp.txt’를 생성 후 위의 c파일을 컴파일 하였더니, 계속해서 열 수 없다는 오류 메시지가 출력되었다. 이에 명령어 rm을 사용하여 txt파일을 삭제한 후에 컴파일 했다. 비교적 지난번 처음 putty를 사용했을 때보다 쉽고 편했다. 그러나 리눅스에서 c파일을 컴파일하는 과정에서 오류를 찾는 일은 아직까지 익숙하지 않다.

1. Putty  실행 전 ssh를 ubuntu에 설치


http://software.naver.com/software/summary.nhn?softwareId=MFS_116451


  •  Root 계정으로 전환
  •  Apt-get install ssh


 2. Putty  실행하기



 

  • Host Name에 server ip 주소를 입력한다.
  • 이후 open하여 연결 -> 네트워크 연결이 안될 시 연결이 되지 않는다.

 


  • ID 와 password 입력하여 접속한다.

이 때, 터미널권한부여를 해주어야 한다.


  • 권한부여 방법 

  - sudo visudo 명령어 입력한다.

  - %sudo 밑에 %(ID) ALL=(ALL:ALL)ALL을 입력한다.





  • Putty ip 주소 입력 후, ssh 연결이 되면 같은 방식으로 vi (파일명).c로 접속하여 파일을 확인한다.



 




 

  • 마지막으로 ./a.out으로 실행하게 되면 c파일이 실행된다.

+ Recent posts