2019년 7월 15일 월요일

[독학사] 자료구조 내용정리 1편 (기본개념)

독학학위제 컴퓨터과학부 4단계 전공 과목 중 자료구조 과목을 학습하며 정리한 내용을 작성한 포스트입니다.

국가평생교육진흥원에서 제공한 시험 영역을 기준으로 학습했습니다.



자료(Data)와 정보(Imformation).



자료는 현실에서 관찰이나 측정으로 수집한 결과 값이나 수치들을 의미하며 표현하는 방법은 논리값 (True, False)과 수치, 문자열 세가지로 구분된다.

수치 자료는 컴퓨터에서 2진수로 적용.
문자열 자료는 문자코드를 사용하여 숫자로 변환되어 컴퓨터에 적용.
(ASCII, BCD, EBCDIC 코드 들)
논리 자료는 가 부 값을 0 , 1로 변환하여 컴퓨터에 적용.

수치와 문자 자료는 표현 방식에 따라 값의 범위가 결정되어짐
(수치에서 부호의 포함여부 같은)

정보는 어떠한 현상이나 상황에 필요한 의사결정에 도움이 되는 자료의 해석이나 프로그램으로 처리된 결과 값을 의미한다.

정보는 시간에 따라 가치가 바뀌는 한시성을 가지거나, 많은 이들이 공유함으로써 가치가 상승하는 공공성이나, 소유한 개체가 적을수록 가치가 상승하는 독점성과, 사용 횟수에 가치가 변하지 않는 비소모성 네가지의 특성으로 구분한다.

특성들은 서로간에 모순점이 있으니 전부를 포함하긴 어려울듯 싶다.





자료구조(Data Structure)



자료구조란 자료를 더 사용하기 편하게 하기 위해 특성에 따라 분류한 구조체를 의미함.

구조체는 또한 그 자체가 컴퓨터에 저장되는 단위이자 방법이기 때문에 자료 구조를 파악하는건 자료의 특성과 저장 방식을 파악하는것과 동일한 의미이다.

자료구조의 분류는 다음과 같음

1. 단순 자료구조 : 정수나 실수 문자열 등 단일 형태의 자료를 저장할 때 메모리 공간과 자료를 다루는 연산자들의 모음.

2. 선형 자료구조 : 자료간 1:1로 짝을 맷는 형식 (리스트, 스택, 큐 같은거)의 자료를 저장할 때 메모리 공간과 자료를 다루는 연산자들의 모음.

3. 비선형 자료구조 : 자료간 1:N으로 대응되는 자료들 (트리나 그래프 등)를 저장할 때 메모리 공간과 자료를 다루는 연산자들의 모음.

4. 파일 : 메인메모리가 아닌 보조기억장치에 저장될 대용량 자료구조를 의미. 파일은 구성에 따라 인덱스, 해싱, 순차, 상대적 파일 구조로 구분된다.

자료를 저장하거나 정보로 만들기 위해선 자료를 적절한 자료구조로 저장하는게 우선이다.

자료구조는 자료의 크기, 사용 횟수나 방법, 관계 특성들을 고려하여 적절하게 선택되어야 한다.





알고리즘(Algorithm)



알고리즘이란 문제를 해결하기 위한 절차나 방법들을 단계로 구분하여 정의한 일정의 단계들이다.

알고리즘을 통하여 문제를 유한한 단계의 과정으로 풀어낼 수 있다.

알고리즘은 문제 해결을 위한 입력과 출력이 필요하며, 명령이 명확해야 하고, 무한한 단계를 거치지 않고 종료가 되어야 한다.

알고리즘의 요구 조건

1. 입력 : 문제 해결의 기본 자료가 될 입력값.
2. 출력 : 입력값을 알고리즘을 통해 도출된 결과 값.
3. 명확성 : 각 단계는 모호한 명령이 없어야 함.
4. 정확성 : 각 단계는 입력값에 대한 정확한 출력값을 도출해야함.
5. 유한성 : 무한 루프로 영원히 해결되지 않는 알고리즘이 되지 않아야함.
6. 효율성 : 알고리즘은 최대한 간소한 단계로 수행되어야 함.
7. 일반성 : 문제가 요구하는 모든 형태의 입력값에 대응 할 수 있어야 함.

자료 구조와 알고리즘이 결합, 조합되면 프로그램이 됨.

예)
배열 자료구조 + 최대값 찾는 알고리즘 = 순열중 최대값을 찾는 프로그램





알고리즘 기술 방법



1. 자연어
2. 순서도

자연어는 작성자의 의도와 다른 해석이 가능하여 알고리즘의 요구 조건 중 명확성을 위반할 가능성이 높으며, 순서도는 직관적이고 이해가 빠르지만 복잡한 단계의 표현이 어렵다는 단점이 있다.

그래도 모호한 내용보다는 복잡한게 더 낫기 때문에 둘 중에선 알고리즘은 순서로도 작성하는게 일반적이다.

(순서도 기호는 따로 정리하지 않음)

3. 의사 코드

자연어와 순서도의 장점을 섞은 방식으로 순서도를 매서드와 시켜 코딩하듯 나열하는 방법.
자연어보다 구조적인 표현이 가능하고 프로그래밍 언어로 변환이 용이한 장점이 있음.
순서도에 비해 매우 간단하게 표현이 가능.

(의사 코드를 따로 작성하진 않겠음)


Share:

2019년 7월 14일 일요일

독학사 태그에 대해서 (독학학위제 컴퓨터과학과)

오늘부터 블로그에 새로 신설된 태그인 독학사에 대한 설명과 앞으로 작성될 포스트 시리즈에 대해 알리는 글을 작성합니다.


(블로그 카테고리에 추가된 독학사 관련 태그들)


독학사(독학학위제)는 국가에서 공인한 교육 기관을 거치지 않고 스스로 독학한 성과를 시험을 통해 학위나 학점으로 인정 받는 제도입니다.

(독학학위제 공식 홈페이지 링크 : 이동하기)


(독학학위제 홈페이지의 소개 내용)

따라서 대학에 다닐 여유나 시간이 없는 상황에서 가장 빠르고 저렴하게 학위를 취득할 수 있는 방법이 이 독학학위제 입니다.

독학학위제를 통해 학위를 취득하는 과정은 다음과 같은데요


4년제 대학의 네 학년과 같이 독학사 또한 네 단계의 과정이 존재하며 각 과정당 정해진 과목의 시험을 통과하면 해당 과목의 학점을 인정하는 방식입니다.

한가지 특이한 점은 각 과정을 시험으로 통과하는 방법뿐만 아니라 일정한 자격이나 경력에 따라 과정이나 과목을 면제해주는 제도도 함께 운영되고 있기 때문에 잘 맞추면 많은 과목을 면제 받아 좀 더 빠른 학위 취득이 가능하다는 점이 있습니다.


독학학위제로 취득할 수 있는 학위의 종류는 총 11가지가 있으며


각 과정별 시험은 일년에 딱 한번만 진행이 됩니다.


그리고 시험은 과목당 100점 만점으로 운영되며 보통 합격 기준점이 60점입니다.



제가 이 블로그에 독학사 태그를 신설한 이유는 올해 학위취득 인정 시험인 독학사 4단계 시험에 응시하기 때문인데요.

지금 저는 컴퓨터 프로그램과 관련된 일을 하지만 대학은 화공쪽을 졸업해서 시스템 공부는 전혀 해본적이 없었습니다.

그래서 취직 하고는 지금까진 혼자 이런저런 하고싶은 공부를 조금씩 했었는데요. 마침 독학사의 컴퓨터과학부는 정보처리 기사 자격증이 있으면 3단계까지 면제를 해준다는 소식을 우연히 듣고 검색해보니


과목 면제 알람에서


정보처리기사의 과정 면제를 확인해서 기왕 공부하는김에 학위도 인정 받는 시험을 준비해보자란 생각이 들어 시험 준비에 들어가게 되었습니다. ^^

독학사 4단계 시험은 과목이 총 6개 (교양2 + 전공 4)인데요


교양은 국어 국사 외국어 중 2개를 선택하고, 전공은 시스템구조, 네트워크구조, 자료구조, 운영체제 4과목이 고정되어 있습니다.

저는 이중에서 전공은 고정이니 그대로 하고 교양은 일본어와 국사를 선택했는데요

합격 기준은 과목별 과락을 모두 넘기면 방법이 아닌 총점 과락제를 할 예정입니다.

부디 교양에서 까먹는 점수를 전공에서 만회했으면 좋겠습니다 ^^;;

앞으로 블로그에 독학사 태그가 붙는 포스트들은 제가 이 과목들을 공부하고 정리한 내용이나 시험관련 내용을 올릴 예정입니다.

독학사는 정보가 별로 없어서 도움이 되었으면 좋겠습니다.

긴 글 봐주셔서 감사합니다!
Share:

2019년 7월 12일 금요일

[MSSQL] Microsoft SQL Server 오류 18456 해결하기 (로그인하지 못했습니다.)

Microsoft SQL Server (MSSQL) 2012이후 버전에서 주로 로그인때 발생하는 오류: 18456을 해결하는 방법에 대해 알아보겠습니다.


주로 SQL Server 인증을 통한 로그인시 이 오류가 가장 자주 발생하는데요.


자세한 정보를 열람하더라도 정확한 이유를 알기 어렵죠.

같은 오류라도 다양한 에러 발생 이유가 있어서 정확한 사유를 알기 위해선 엔진 관리 권한을 가진 계정으로 접속 한 뒤


SP_ReadErrorLog 를 실행하면


로그온 항목중에서 해당 에러 로그를 발견할 수 있습니다. ^^

이 로그를 자세히 살펴보면 크게 세가지의 경우가 있는데요.

첫번째는


로그에서 이름과 일치하는 로그인을 찾을 수 없다는 내용입니다.

이 경우엔 로그인시 아이디나 비밀번호를 잘못 입력한 경우라서 정확한 정보를 입력하면 가볍게 해결할 수 있습니다. ^^

두번째는


서버가 윈도우 인증만 사용하도록 구성되어 있다는 로그인데요.

이 경우는


서버가 윈도우 계정을 통한 권한만 인정하고 있기 때문입니다.

이럴땐 윈도우 계정으로 로그인은 문제없다가 SQL Server 인증 로그인때만 발생하죠.

이경우엔


서비스의 속성에 들어가서


서버 인증 모드를 윈도우와 서버 통합 인증으로 바꿔주면 해결됩니다.


서버의 설정을 바꾸는거라 적용할려면 서비스 재시작 과정이 필요하군요.

서비스 재시작 방법은


서비스의 옵션에서 다시 시작을 클릭하시면


확인과 함께


재실행이 가능해집니다. ^^

마지막으로

이 모든걸 했음에도 같은 오류가 발생할 경우엔 외부에서 서버에 접속하는걸 막고 있기 때문인데요.

이건


SQL Server 구성 관리자를 찾아 실행해서


서비스 목록중


네트워크 구성의


프로토콜을 선택하고


외부로 소통할 프로토콜을 사용함으로 바꿔주면 됩니다.


보시는김에 클라이언트 프로토콜 또한


확인해주시고


역시 서비스 설정을 변경했으니


서비스 다시 시작을 하면


이제


깔끔하게 해결되는 모습입니다. ^^

끝까지 봐주셔서 감사합니다.

틀린 내용이나 안되는 문제가 있다면 언제든 댓글로 남겨주세요!
Share:

[MSSQL] Microsoft SQL Server 계정 생성과 권한 부여하기

Microsoft SQL Server (MSSQL) 2012이후 버전에서 사용자 계정을 만드는 방법과 권한을 부여하고 접속하는 방법에 대해 알아보겠습니다.


MSSQL 엔진을 설치 한 후 엔진 관리 툴인 MSSQL Management Studio를 실행해서 위와 같이 관리자 계정으로 서비스에 접속을 하면


요렇게 서비스 중인 엔진을 관리 할 수 있는 창이 나옵니다.

여기서 서비스에 등록된 계정들을 관리하는 곳은


바로 이 보안탭이며, 로그인 폴더에서는 계정 목록도 보실 수 있습니다.

위 사진에선 방금 접속한 관리자 계정도 찾을 수 있네요.

계정을 추가하는 방법은


보안 폴더 아래 로그인 폴더를 마우스 우클릭 - 새 로그인을 선택하시면


위와 같이 새로운 계정의 정보를 입력하는 팝업이 생성됩니다.

기본 디폴트가 Windows 인증과 master DB인데요.

윈도우 계정을 등록할 경우엔 Windows 인증을 선택하시고

윈도우와는 무관한 DB 접속만을 위한 계정을 만드실 경우엔


위와 같이 SQL Server 인증을 선택하시면 됩니다.

생성할 계정의 아이디와 비밀번호를 입력 후 암호 기간 만료에 따른 문제를 피하기위해 암호 정책 강제 적용과 암호 만료 강제 적용은 체크하고, 다음 로그인할 때 반드시 암호 변경 옵션은 관리에 어려움이 따르니 체크를 해제하였습니다.

그리고 해당 계정이 사용할 DB가 이미 생성되어 있다면 기본 데이터베이스의 DB를 선택하는걸 추천드립니다.

입력을 마치셨으면 사용자 매핑으로 들어가셔서


계정이 사용할 데이터베이스를 선택하고 해당 데이터베이스의 관리자 권한을 줄 경우엔 위와 같이 db_owner도 함께 체크하시는걸 추천드립니다.

(사용자 매핑은 계정 생성 이후에도 언제든지 수정이 가능합니다.)

계정에 부여할 수 있는 데이터베이스 권한 종류는 되게 많은데요.

위에서 부터 나열해보면

db_accessadmin = 엔진에 접속할 윈도우 인증과 SQL Server 로그인을 수정할 권한.
db_backupoperator = 데이터베이스 백업 권한.
db_datareader = 테이블의 모든 데이터를 볼 수 있는 권한.
db_datawriter = 테이블에 데이터 수정 권한.
db_ddladmin = 데이터베이스의 모든 DDL 관련 명령을 실행할 권한.
db_denydatareader = 데이터베이스에 있는 모든 테이블의 데이터를 볼 수 있는 권한.
db_denydatawriter = 데이터베이스에 있는 모든 테이블의 데이터를 수정할 권한.
db_owner = 데이터베이스의 모든 설정과 관리 작업을 수행할 수 있는 권한.
db_secutiryadmin = 멤버 권한을 제한할 수 있는 권한.
public = 디폴트로 부여되는 최소한의 권한.

의 권한 종류가 있습니다.

이 권한들은 경우에 따라 데이터베이스의 범위를 넘는 권한도 있기 때문에 필요한 작업에 따라 권한을 주의해서 선택하시면 됩니다.


지금 만들 계정은 특정 데이터베이스의 관리자 권한만 있으면 되기 때문에 서버 역할은 디폴트인 public만 있어도 충분합니다.


마지막으로 상태에서 엔진 연결 권한과 로그인 사용을 설정한 다음 확인을 누르면


새 계정 생성이 완성됩니다. ^^


그리고 새 연결을 선택하여 새로 생성한 계정으로 접속을 하면 되는데

만약에 엔진을 설치하고 처음 생성한 SQL Server인증 계정일 경우엔 한가지 절차가 더 남아 있습니다. ^^

SQL Server 인증 접속의 경우에는 외부에서 접속하는 것과 동일하게 받아드리기 때문에 외부로의 접속 허가가 필요한데요.


MSSQL 서비스를 컨트롤 할 수 있는 SQL Server 구성 관리자를 실행한 다음


서비스 구성 중에서


네트워크 구성


해당 DB 엔진에 대한 프로토콜을 선택하면


TCP/IP 프로토콜은 사용하지 않음이 디폴트로 되어 있습니다.

이걸 사용으로 변경하면


이런 안내말과 함께


설정이 변경되고


서비스를 재실행하면 모든 설정이 끝납니다. ^^

이제 다시 SQL Server Studio로 돌아가서


새 연결 인증을 새롭게 생성한 계정으로 해보면


이렇게 새로운 연결이 완료 됩니다. ^^


계정에 매핑시킨 데이터베이스도 잘 연결되어 있으며


데이터 또한 권한에 맞게 사용이 가능합니다.

내용에 오타나 오류가 있거나 잘 안되는 경우가 발생하면 언제든 댓글에 달아주세요.

감사합니다!
Share: