키패드 누르기 - 2020 카카오 인턴십 프로그래머스 ( JavaScript )
최대한 직관적이게 소스코드를 만들어 보았습니다. 1. 키패드 모양의 배열을 만든다. (* = 11, # = 22 의로 임의의 숫자를 만들어 숫자 타입 만들기) 2. 왼손 오른손의 위치를 지정한 배열을 만든다. 3. 눌러야 할 위치값 측정 4. 손의 위치값과 눌러야 할 위치값 비교 5. 손 위치 변경 후 값 리턴 계산을 위한 함수 2개를 추가로 만들었습니다. find_num_loca = 눌러야할 위치값 측정 함수 check_lr = 왼손 오른손 중 선택 하는 함수 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49..
2021.09.28
컴퓨터보안 - 공기업 준비 필기 요약정리
○ 보안의 3대 요소 (정보보호의 목표) 1. 기밀성 : 인가된 사용자만 정보자산 접근가능 2. 무결성 : 인가된 사용자 + 인가된 방법으로만 정보변경 가능 3. 기밀성 : 정보 + 정보시스템의 인가 = 언제든지 사용 가능 ○ 보안공격 공격종류 피해방법 감지 예시 소극적공격 직접피해X 어려움 스니핑 혹은 도청 적극적공격 직접피해O 쉬움 변경, DDos, 하이재킹 ○ ISMS 생명주기 5단계 1. 정보보호 계획 및 정책 수립 2. 경영진 참여 및 조직구성 3. 위험관리 4. 대책구현 5. 사후관리 ○ 암호의 변화 - 고대암호 1. 스테가노 그래피 : 다른 사람이 읽지 못하도록 통신문 감춤 ( 기밀정보를 이미지나 MP3에 숨김 ) 2. 스키테일 : 막대에 감아 작성 후 풀어서 순서를 못맞추게함 3. 시저암호..
2021.07.21
PHP CRUD 모듈자료 입력/수정/삭제 모듈 - MSSQL_Version
안녕하세요. John Computer 입니다. 매번 페이지 / 메소드 마다 칼럼명과 데이터를 집어넣어서 만드는 번거러움을 없애기 위해서 동적으로 칼럼의 갯수와 상관없이 삽입 수정 삭제가 가능하게 쿼리문을 작성해 놨습니다. 사용법 또한 간단하니 다운받으셔서 이용하세요 사용법 1. input을 생성하여 insert_col = DB칼럼명 / insert_param = DB에 들어갈 데이터값 을 넣는공간을 만들어주세요. 2. insert_col의 경우 칼럼명을 보여질 필요가 없기 때문에 hidden으로 처리해주시면 됩니다. 3. ajax에 insert_page.php 경로를 url에 설정 해주시고 colunm / insert_param 과 같은 변수명은 그대로 작동하게 두고 TABLE 명만 바꿔 주시면 됩니다...
2021.06.07
백준알고리즘 2588번 곱셈 문제 ( JAVA )
백준 문제 사칙연산의 마지막 문제인 2588번 풀이입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int A = scan.nextInt(); int B = scan.nextInt(); int BSplit[] = new int[3]; int GOB = A*B; for (int i = 0; i 그렇다면 나누기로 1의자리 100의자리 1000의 자리를 만들 수 있습니다. 그 후 배열에 삽입해 줍니다. for (int i = 0; i
2021.06.03
no image
PHP POST content-length 파일 업로드 용량 오류.
게시판을 만들어서 사용중에 파일 업로드 제한을 한번쯤 보셨을 겁니다. PHP Warning : POST Content-Length of (업로드 사이즈) bytes exceeds the limit of (제한사이즈) bytes in Unknown on 등의 오류 메세지가 뜨게 될건데요. PHP폴더 이동 -> php.ini 우클릭 -> 편집 -> (POST 오류면) post_max_size = 32M 를 수정 / ( UPLOAD오류나면 ) upload_max_filesize = 32M 원하는 사이즈로 수정 하시면 됩니다.
2021.02.17
데이터베이스 총정리 - 컴활, 정보처리, SQLD, ADSP
안녕하세요 . John Computer 입니다. 컴퓨터를 공부해보신 분들은 누구나 알겠지만 요즘은 어디에서나 전부 DB를 공부해야만 합니다.그래서 시험에 나오는 유형으로 데이터베이스를 간략하게 정리해서 올려 보겠습니다. 컴활, 정보처리, SQLD, ADSP 등 DB가 들어가는 모든 과목에 공통적으로 서술되어 있는 내용입니다. 참고하셔서 공부하세요. - 데이버테이스 시스템의 특성 1. 실시간 접근성 - 실시간으로 처리에 응답해야한다. 2. 계속적인 변화 - 데이터의 변화에 따른 최신 데이터를 유지해야 한다. 3. 동시 공용 (공유성) - 여러 사용자가 동시에 자기가 원하는 데이터를 이용할 수 있어야 한다. 4. 내용에 의한 참조 - 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해..
2020.10.10
LED 저항값 계산기 (블로그) - 아두이노
권장 저항값 계산기 입니다. 전류 단위 mA로 되어있으니 잘 확인하고 입력해주세요. 입력 전압(V) 최소 전압(V) 전류(mA) 권장 저항값
2020.09.20
PHP 로그인 화면 구성 FORM 태그 POST 전송 mysql
안녕하세요. JohnComputer 입니다. 바로 앞에 올렸던 게시글을 참고하시면 도움이 됩니다.https://johncom.tistory.com/23 앞에서 설명했기에 소스코드 바로 첨부하겠습니다. 12345678910111213141516171819202122232425262728293031323334353637 HTML Forms ID: Password: function check_input() { if (!document.login_form.id_val.value) // login_form 이름을 가진 form 안의 id_val 의 value가 없으면 { alert("아이디를 입력하세요!"); document.login_form.id_val.focus(); // 화면 커서 이동 return; } ..
2020.09.04
반응형

최대한 직관적이게 소스코드를 만들어 보았습니다.

1. 키패드 모양의 배열을 만든다. (* = 11, # = 22 의로 임의의 숫자를 만들어 숫자 타입 만들기)

2. 왼손 오른손의 위치를 지정한 배열을 만든다.

3. 눌러야 할 위치값 측정

4. 손의 위치값과 눌러야 할 위치값 비교

5. 손 위치 변경 후 값 리턴

 

계산을 위한 함수 2개를 추가로 만들었습니다.

find_num_loca = 눌러야할 위치값 측정 함수

check_lr = 왼손 오른손 중 선택 하는 함수

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function solution(numbers, hand) {
//     numbers 배열  hand = right or left
    var answer = '';
    const numArr = [[1,2,3],[4,5,6],[7,8,9],[11,0,22]];// * = 11, # = 22 키패드 만들기
    const numLen = numbers.length;
    let lhLocation = [3,0];
    let rhLocation = [3,2];
 
    for(let i = 0; i < numLen; i++){
        let numLocation = find_num_loca(numArr,numbers[i]); // 위치 좌표값 받기
        answer += check_lr(numLocation,lhLocation,rhLocation,hand);
        console.log(numLocation);
        console.log(lhLocation);
    }
    return answer;
}
 
function find_num_loca(numArr,checkNum){
    let retR = 0;
    let retC = 0;
 
    for(let i = 0; i < numArr.length; i++){
        for(let j = 0; j < numArr[0].length; j++){
            if( numArr[i][j] === checkNum){
                return [i, j];
            }
 
        }
    }
}
 
function check_lr(numLocation,lhLocation,rhLocation,hand){
    if(numLocation[1=== 0){ 
        lhLocation[0= numLocation[0];
        lhLocation[1= numLocation[1];
        return 'L'
    }else if(numLocation[1=== 2){ 
        rhLocation[0= numLocation[0];
        rhLocation[1= numLocation[1];
        return 'R'
    }
    else// numLocation = 1 중간위치
        let leftSize = Math.abs(numLocation[0]-lhLocation[0]) + Math.abs(numLocation[1]-lhLocation[1]);
        let rightSize = Math.abs(numLocation[0]-rhLocation[0]) + Math.abs(numLocation[1]-rhLocation[1]);
 
        if(leftSize < rightSize){
            lhLocation[0= numLocation[0];
            lhLocation[1= numLocation[1];
            return 'L'
        }else if(rightSize < leftSize){
            rhLocation[0= numLocation[0];
            rhLocation[1= numLocation[1];
            return 'R'
        }else{
            if(hand === 'left'){
                lhLocation[0= numLocation[0];
                lhLocation[1= numLocation[1];
            }
            else {
                rhLocation[0= numLocation[0];
                rhLocation[1= numLocation[1];
            }
            return hand.substr(0,1).toUpperCase();
        }
    }
}
cs
반응형
반응형

보안의 3대 요소 (정보보호의 목표)

1. 기밀성

: 인가된 사용자만 정보자산 접근가능

2. 무결성

: 인가된 사용자 + 인가된 방법으로만 정보변경 가능

3. 기밀성

: 정보 + 정보시스템의 인가 = 언제든지 사용 가능

 

보안공격

공격종류 피해방법 감지 예시
소극적공격 직접피해X 어려움 스니핑 혹은 도청
적극적공격 직접피해O 쉬움 변경, DDos, 하이재킹

 

ISMS 생명주기 5단계

1. 정보보호 계획 및 정책 수립

2. 경영진 참여 및 조직구성

3. 위험관리

4. 대책구현

5. 사후관리

 

암호의 변화

- 고대암호

1. 스테가노 그래피

: 다른 사람이 읽지 못하도록 통신문 감춤 ( 기밀정보를 이미지나 MP3에 숨김 )

2. 스키테일 : 막대에 감아 작성 후 풀어서 순서를 못맞추게함

3. 시저암호 : 문자를 우측으로 n문자씩 이동시켜 문자 치환

 

- 근대암호

1. 비르네르 : 시저암호의 확장판

2. 플레이페어 암호 : 미국과 영국군에서 사용

3. 에니그마 : 독일에서 사용, 기계를 이용해 알파벳 변환 사용 가능

 

- 현대 암호

1. DES

: IBM이 개발, 미국 NIST 채택 -> AES : DES 안전성 문제에 따라 2000년 미국 표준 블록 암호로 채택

2. RSA

: 공개키 암호 방식, 스탠포드 대학에서 개념을 만들고 MIT에서 처음 개발 RSA는 개발자 이름의 초성

 

대칭키(비밀키) / 비대칭키(공개키)

항목 대칭키(비밀키) 비대칭키(공개키)
키의 상호관계 암호화키 = 복호화키 암호화키 복호화키
안전한 키 길이 128bit 이상 2048bit 이상
암호화키 비밀 공개
복호화키 비밀 비밀
비밀키 전송 필요 불필요
키 개수 N(N-1)/2 2N
암호화속도 고속 저속
경제성 높다 낮다
제공 서비스 기밀성 기밀성, 부인방지, 인증
목적 데이터 암호화 대칭키 교환
전자서명 복잡 간단
특징 - 사용자의 증가에 따라 관리해야 할 키 개수 증가
- 키 길이가 짧다
- 키교환 원리가 없다.
- 사용자의 증가에 ᄄᆞ라 관리해야 할 키의 개수가 적다.
- 키의 길이가 길다.
- 중간자 공격에 취약하다.
해당 알고리즘 DES, 3-DES, AES, SEED, ARIA, RC5, Skipjack RSA, Rabin, ElGamal, ECC, DSA, KCDSA

 

암호 알고리즘

1. 스트림 암호

: 데이터의 흐름에 따라 순차적으로 처리해 나가는 암호 알고리즘

: 일회성 목적

 

2.블록 암호

: 블록 단위의 집합을 한번에 처리하는 암호 알고리즘

: DES, 3-DES, AES 등 대부분 사용 알고리즘

2-1. 블록 암호의 운용모드

- ECB : 각 평문블록을 암호화 한 것

- CBC : 암호문 블록을 체인처럼 연결 / 이전 암호문 블록과 XOR계산 후 암호화

- CFB : 1번 블록 암호 알고리즘 입력받음

- OFB : 알고리즘 출력을 입력으로 피드백

- CTR모드 : 카운터를 암호화 하여 키스트림을 만들어냄

 

해시함수 ( 메이지 다이제스트 함수 )

: 해시는 대칭을 확인하여 일치하는지 여부 확인 / 고정된 길이의 의사난수 생성 연산기입

1. 일방향성 - 결과값만 확인가능, 역 계산 불가

2. 약한 충돌저항성 - 해시값이 있을 때, 해당하는 또 다른 입력값 구하기

3. 충돌저항성 - 서로 다른 입력 충돌 찾기가 계산상 불가능

 

접근 통제 정책

1. 임의적 접근통제 ( DAC )

: 주체나 주체가 속해있는 그룹의 식별자에 근거하여 객체에 대한 접근 제한.

 

2. 강제적 접근통제 ( MAC )

: 정보시스템 내에서 어떤 주체가 어떤 객체에 접근하려 할 때 양자의 보안등급을 비교하여 높은 보안을 요하 는 정보가 낮은 보안 수준에 노출 않도록 접근 제한.

 

 

2-1. 벨 라파듈라 모델 (BLP)

: 첫 번째로 제시된 수학적 보안 모델

: 높은 등급의 데이터를 읽을 수 없고, 낮은 등급의 데이터에 쓸 수 없다.

 

2-2. 비바 모델 (biba)

: 1977 비바가 제안한 데이터 무결성 모델

: 낮은 등급의 데이터를 읽을 수 있고, 높은 등급의 데이터에 쓸 수 없다.

: 무결성 3가지 목표중 비인가 자들의 데이터 변형 방지만 해결한 모델

 

2-3. 클락-월슨 모델

: 1987년 무결성 3가지 목표를 모두 만족하는 접근 제어 모델

비인가자가 수정하는것을 방지 (Biba)

/외부 일관성 유지 (정확한 트랜젝션)

합법적인 사람에 의한 불법적인 수정을 방지

 

2-4. 만리장성 모델 (CWM, Chinese Wall Model, Brewer-Nash Model)

: 사용자의 이전 동작에 따라 변화할 수 있는 접근 통제를 제공한다. (MAC, DAC)

: 이해 충돌을 야기하는 주체와 객체 사이에 정보가 흐르지 않게 한다. (정보 흐름모델을 기반으로 한다.)

: 이해 충돌을 방지하기 위해 만리장성이라 불리는 벽을 사용한다.

 

3. 역할기반 접근통제 ( RBAC )

: 임의와 강제 접근 통제 단점 보완

: 사용자가 적절한 역할 할당과 적합한 허가가 할당된 경우만 사용자가 특정한 모드로 정보 접근 가능

 

공개키 기반 구조 (PKI)

: 공개키 기반 구조는 공개키 알고리즘을 통한 암호화 및 전자서명 제공

루트킷 관리자 권한인 루트 접근 권한을 얻어냄.
백도어 (트랩도어) 개발자가 편이상 만든 보안이 제거된 비밀통로
스파이웨어 사용자 동의없이 컴퓨터 정보 수집 후 전송
애드웨어 자동적으로 광고가 표시되는 프로그램. 스파이웨어를 포함한 경우가 많다
스택스넷(staxnet) 산업 소프트에서 공정 설비등을 공격 목표로 하는 군사적 수준의 무기
키로깅 사용자가 키보드로 PC 입력하는 내용 탈취
봇넷 악의적인 코드에 감연된 컴퓨터
- 금전 목적으로 DDos 공격실행하기 위해 좀비 시스템 이용.
스누핑
스니핑 송신자와 수신자가 주고받는 데이터를 중간에서 도청 하는것
스푸핑
싱글사이온 (SSO) 한번의 로그인으로 각종 시스템 사용가능 보안 솔루션
커버로스 싱글사이온 / 유닉스에서 사용하다 윈도우 기본인증 방법 사용중 / 대칭키 암호 기반
SEED 민간 부분인 인터넷, 전자 상거래, 금융 등 공개시 민감한 영향을 예기 할 수 있는 정보와 개인 프라이 버시를 보호하기 위한 대칭키 분류 암호 알고리즘이다.
제로데이공격
decoy 가짜 ID, PW를 뿌려 접속 시도시 확인
RBAC 1970년대 다중사용자 다중 프로그래밍 환경에서의 보안 처리 요구만족을 위해 제안된 방식
NAT 라우터에 의해 적은 숫자의 유효 IP 주소만으로도 많은 시스템들이 인터넷 접속 가능
land attack 패킷전송에 출발 IP, 목적 IP를 같이 만들어 공격 대상에게 공격하는 방법
PGP 1991년 필 짐머만(Phil Zimmermann) 이라는 개인에 의해서 개발된 오픈소스로, 나중에 RFC 3156 으로 표준화 되었다
SET VISA, Master에서 제안한 온라인 전자상거래 결제 표준안
PKI 공개키를 이용하여 송수진 데이터 암호화된 디지털 인증서를 통해 사용자 인증하는 시스템








보안 필기.hwp
0.02MB

 

반응형
반응형

module_CRUD.zip
0.04MB

안녕하세요. John Computer 입니다.

매번 페이지 / 메소드 마다 칼럼명과 데이터를 집어넣어서 만드는 번거러움을 없애기 위해서

동적으로 칼럼의 갯수와 상관없이 삽입 수정 삭제가 가능하게 쿼리문을 작성해 놨습니다.

사용법 또한 간단하니 다운받으셔서 이용하세요

 

사용법

1.  input을 생성하여 insert_col = DB칼럼명 / insert_param = DB에 들어갈 데이터값 을 넣는공간을 만들어주세요.

2.  insert_col의 경우 칼럼명을 보여질 필요가 없기 때문에 hidden으로 처리해주시면 됩니다.

3.  ajax에 insert_page.php 경로를 url에 설정 해주시고 colunm / insert_param 과 같은 변수명은 그대로 작동하게 두고 TABLE 명만 바꿔 주시면 됩니다.

 

## 한 화면에 여러 FORM이 존재 할 경우 FORM을 지정하는 선택자를 넣어주세요.

## 테이블명 이외에 바꿀내용은 없습니다.

 

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
 
<body>
 
  사번 : <input type="text" id="inputemp" class="form-control" name="insert_param">
  <input type="hidden" name="insert_col" value="emp_num" />
 
  이름 : <input type="text" id="inputname" class="form-control" name="insert_param">
  <input type="hidden" name="insert_col" value="name" />
 
  <input type="button" name="" value="등록" onclick="insert_event()" />
  <script src="./jquery.min.js"></script>
 
  <script>
    //입력 클릭시 insert해주는 php 로 데이터 전송하는 함수
    function insert_event() {
      var column_array = $("input[name=insert_col]").length//hidden 되어있는 input 갯수
      //배열 생성
      var column = new Array(column_array); //컬럼 배열선언
      //배열에 값 주입
      for (var i = 0; i < column_array; i++) {
        column[i] = $("input[name=insert_col]").eq(i).val();
      }
      var insert_param_array = $("input[name=insert_param]").length//input type text 개수.
      //배열 생성
      var insert_param = new Array(insert_param_array); //파라미터 배열선언
      //배열에 값 삽입
      for (var i = 0; i < insert_param_array; i++) {
        insert_param[i] = $("input[name=insert_param]").eq(i).val();
      }
      $.ajax({
        type: 'post',
        url: './forms/insert_page.php',
        async: false// 전역변수 설정 변수
        data: {
          url: url,
          column: column, //컬럼
          param: insert_param, //params
          TABLENAME: 'dbo.employee'//테이블명
        },
        success: function(data) {
          alert("입력되었습니다.");
          location.reload();
        },
        error: function(request, status, error) {}
      });
    }
  </script>
</body>
</html>
 
cs

insert Page 입니다. 여기소스를 참고하여 직접 input을 만들어 주세요.

 

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!--
===============================================================================
          insert 모듈
          // INSERT into xxx => SQL
          // VALUES ( yyy )        => SQL2
          // sum_sql = SQL + SQL2
-->
<?php
  include "데이터베이스 설정 경로";
  // DB를 입력하실 분은 DB Con 등 여러 설정을 넣어주세요.
 
  $TABLENAME = $_POST["TABLENAME"]; // 테이블명 가져오기
  $column = $_POST["column"]; // 칼럼명 가져오기
  $param = $_POST["param"]; // 파람값 가져오기
 
  $select_obj_length = count($column);    //컬럼수
  $a_length = count($param);    //value 수
 
  $sql = "INSERT into $TABLENAME";
  $sql2 = " VALUES (";
  $params = array();
  $sql .= "(";
 
  for ($i=0$i < $select_obj_length ; $i++) {
    if($i == $select_obj_length-1){
     $sql .= $column[$i];
     $sql2 .="?";
     break;
    }
    $sql .= $column[$i].",";
    $sql2 .="?,";
  }
 
  for ($j=0$j < $a_length$j++) {
    array_push($params,$param[$j]);
  }
 
  $sql .= ")";
  $sql2 .= ")";
 
  print_r($sql.$sql2);
  print_r($column);
  $sum_sql = $sql.$sql2;
 
  // $params = array(&$column[0], &$column[1], &$column[2]);
  print_r($param);
  sqlsrv_query($con$sum_sql$params);  // $sql 에 저장된 명령 실행
  sqlsrv_close($con);
?>
 
cs

 

insert_page를 이용하여 자동으로 쿼리문을 생성하여 줍니다.

 

나머지 수정 삭제도 첨부파일로 올리니 ajax -> data의 내용을 읽어보시고 본인 프로그램에 맞게 이용해 주시면 됩니다.

반응형
반응형

백준 문제 사칙연산의 마지막 문제인 2588번 풀이입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int A = scan.nextInt();
        int B = scan.nextInt();
        int BSplit[] = new int[3];
        int GOB = A*B;
        for (int i = 0; i < 3; i++) {
            BSplit[i] = B % 10;
            B = B/10;
            System.out.println(BSplit[i]);
        }
        System.out.println(A*BSplit[0]+"\n"+A*BSplit[1]+"\n"+A*BSplit[2]+"\n"+GOB);
    }
}
cs

1. Scanner 사용을 위한 Import를 해줍니다.

import java.util.Scanner;

 

2. 입력 받는 B는 < 세자리 수의 자연수 입니다. > 그렇다면 나누기로 1의자리 100의자리 1000의 자리를 만들 수 있습니다. 그 후 배열에 삽입해 줍니다.

for (int i = 0; i < 3; i++) {

            BSplit[i] = B % 10;

            B = B/10;

}

 

3. 출력은 for 을 이용 할수도 있으나 주기적 반복이 아닌 단순 출력임으로 그냥 출력해줍니다.

 

반응형
반응형

게시판을 만들어서 사용중에 파일 업로드 제한을 한번쯤 보셨을 겁니다. 

 

PHP Warning : POST Content-Length of (업로드 사이즈) bytes exceeds the limit of (제한사이즈) bytes in Unknown on

등의 오류 메세지가 뜨게 될건데요.

 

 

PHP폴더 이동 -> php.ini 우클릭 -> 편집 ->

(POST 오류면) post_max_size = 32M 를 수정 / ( UPLOAD오류나면 ) upload_max_filesize = 32M 원하는 사이즈로 수정 하시면 됩니다.

 

 

반응형
반응형

안녕하세요 . John Computer 입니다.


컴퓨터를 공부해보신 분들은 누구나 알겠지만 요즘은 어디에서나 전부 DB를 공부해야만 합니다.

그래서 시험에 나오는 유형으로 데이터베이스를 간략하게 정리해서 올려 보겠습니다.


컴활, 정보처리, SQLD, ADSP 등 DB가 들어가는 모든 과목에 공통적으로 서술되어 있는 내용입니다. 참고하셔서 공부하세요.



- 데이버테이스 시스템의 특성

1. 실시간 접근성 - 실시간으로 처리에 응답해야한다.

2. 계속적인 변화 - 데이터의 변화에 따른 최신 데이터를 유지해야 한다.

3. 동시 공용 (공유성) - 여러 사용자가 동시에 자기가 원하는 데이터를 이용할 수 있어야 한다.

4. 내용에 의한 참조 - 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니 사용자가 요구하는 데이터 내용으로 데이터를 찾는다.

 

- 데이터베이스의 정의

1. 통합된 데이터 (Integrated Data) - 자료의 중복을 배제한 데이터의 모임.

2. 저장된 데이터 (Stored Data) - 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료.

3. 운영 데이터 (Operational Data) - 조직의 업무를 수행하는데 존재 가치가 확실하고 없어서는 안 될 반드시 필요한 자료

4. 공용 데이터 (Shared Data) - 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료.


- 데이터 무결성 ( 개사키속참 ) -> 개새끼 속이 참..깊네 로 외웁니다.

: 데이터의 중복이나 누락 없이 정확성, 일관성이 보장된 특성

1. 개체 무결성 : 한 개체는 중복되거나 누락될 수 없는 특성

2. 사용자 무결성 : 사용자가 요구하는 의미적 요구를 준수 해야함.

3. 키 무결성 : 한 릴레이션에 같은 키 값을 가진 튜플들이 허용 안됨.

4. 속성 무결성 : 속성 값은 기본값, NULL여부, 도메인이 지정된 규칙을 준수해야하는 특성.

5. 참조 무결성 : 외래키가 참조하는 값은 다른 개체의 기본키 또는 NULL

 

- 데이터베이스 설계 개념 및 고려사항

- 무결성 : 정해진 제약조건을 계속 만족

- 일관성 : 저장된 데이터들사이의 응답이 처음부터 끝까지 변함 X

- 회복 : 시스템에 장애 발생시 장애발생 직전 상태 복구

- 효율성 / 확장성

 

- 트랜젝션의 특성

1. 원자성 (Atomicity) - 트랜잭션에 포함된 명령들은 모두 수행되거나, 모두 수행 안 되어야한다.

2. 일관성 (Consistancy) - 트랜잭션이 완료된 뒤에는 일관적인 상태에 있어야 한다. 한방향 전달.

3. 고립성 (Isolation) - 트랜잭션은 다른 트랜잭션과 독립 실행 되는 것처럼 보여야 한다. (접근 금지)

-> 갱신 이상 발생.

4. 지속성 (Durability) - 트랜잭션의 결과는 반드시 데이터 베이스에 반영되어야 한다.

 

- 관계대수

: 관계형 데이터베이스에서 원하는 정보와 정보의 검색을 어떻게 유도하는 가를 기술한 절차적 언어.

1. 순수 관계 연산자

SELECT, PROJECT, JOIN, DIVISION

2. 일반 집합 연산자

UNION(), INTERSECTION(), DIFFERENCE(), CARTESIAN(교차곱)

- 관계해석

: 수학의 프레디킷 해석(predicate calculus)에 기반을 두고 있는 비절차적 언어.

 

- 스키마

외부 스키마 = 사용자 뷰 - 응용프로그래머 관점 - 서브스키마

개념 스키마 = 전체적인 뷰 - 스키마 - DBA 관리

내부 스키마 = 저장 스키마 - 저장장치 입장 - 시스템 프로그래머,설계자 관점.

- 시스템 카탈로그

- 자료사전

- 메타데이터

- 시스템 자신이 필요로 하는 여러 가지 객체 정보 포함

- 테이블, DB, View 접근권한 있음.

- SQL이용 검색가능

 

- OLTP / OLAP

- OLTP : 컴퓨터가 데이터베이스를 액세스 하고, 바로 처리 결과를 돌려 보내는 형태

(Transaction Processing) 복잡하고 정규적인 데이터를 바로바로 존나 빠름 -> 예측가능

- OLAP : 다차원적인 데이터를 대화식으로 분석하는 기술

(Analytical Processing) 단순한데 분석이니깐 오랜 많은 데이터를 정적으로 천천히 분석 함. -> 예측불가

 

- OLAP 종류 > HD 음질의 MR을 삿다 로 외움.

1. MOLAP(Multimensinal OLAP) : 다차원 데이터베이스에 기반한 OLAP 아키텍처이다.

2. ROLAP(Relational OLAP) : 관계형 데이터베이스에 기반한 OLAP 아케틱처

3. HOLAP(Hybrid OLAP) : 다차원 데이터의 저장 공간으로 다차원 데이터베이스와 관계형 데이터 베이스가 함께 사용될 수 있는 제품을 말한다.

4. DOLAP(Desktop OLAP) : 다차원 데이터의 저장 및 프로세싱이 모두 클라이언트에서 이루어지는 데이터 베 이스이다. 설치 유지보수가 쉬우나 대용량 처리에는 한계가 있음.

 


반응형
반응형

권장 저항값 계산기 입니다.


전류 단위 mA로 되어있으니 잘 확인하고 입력해주세요.



입력 전압(V)
최소 전압(V)
전류(mA)
권장 저항값
반응형
반응형

안녕하세요. JohnComputer 입니다. 

바로 앞에 올렸던 게시글을 참고하시면 도움이 됩니다.

https://johncom.tistory.com/23


앞에서 설명했기에 소스코드 바로 첨부하겠습니다.

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
32
33
34
35
36
37
<!DOCTYPE html>
<html>
<body>
 
<h2>HTML Forms</h2>
 
<form action="login_check.php" name="login_form" method="post">
  <label for="fname">ID:</label><br>
  <input type="text" id="id_val" name="id_val" placeholder="아이디"><br>
  <!-- input 박스 안 글자 넣기 = placeholder -->
  <label for="lname">Password:</label><br>
  <input type="password" id="pw_val" name="pw_val" placeholder="비밀번호"><br><br>
  <input type="button" value="로그인" onclick="check_input()">
</form>
<script type="text/javascript">
function check_input() {
    if (!document.login_form.id_val.value)
    // login_form 이름을 가진 form 안의 id_val 의 value가 없으면
    {
        alert("아이디를 입력하세요!");
        document.login_form.id_val.focus();
        // 화면 커서 이동
        return;
    }
    if (!document.login_form.pw_val.value)
    {
        alert("비밀번호를 입력하세요!");
        // 화면 커서 이동
        return;
    }
    document.login_form.submit();
    // 모두 확인 후 submit()
 }
</script>
</body>
</html>
 
cs

로그인 화면 구성입니다. 



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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
  $id_val = $_POST["id_val"];
  $pw_val = $_POST["pw_val"];
 
  print_r($id_val); // 화면에 값 보여주기
  print_r($pw_val);
 
  $con = mysqli_connect("localhost(DB서버)""root(DB아이디)""1234(DB페스워드)""TEMPDATA(DB명)");
  $sql = "select * from members(테이블명) where id='$id_val'";
  $result = mysqli_query($con$sql);
 
  $num_match = mysqli_num_rows($result);
 
  if(!$num_match)
  {
    echo("
          <script>
            window.alert('등록되지 않은 아이디입니다!')
            history.go(-1)
          </script>
        ");
   }
   else
   {
       $row = mysqli_fetch_array($result);
       $db_pass = $row["pw_val"]; // DB칼럼명
 
       if($passwd != $db_pass)
       {
 
          echo("
             <script>
               window.alert('비밀번호가 틀립니다!')
               history.go(-1)
             </script>
          ");
          exit;
       }
       else
       {
           session_start();
           $_SESSION["id"= $row["id_val"];
           $_SESSION["name"= $row["name"];
           // SESSION에 저장.
           mysqli_close($con);
           echo("
             <script>
               location.href = './login.php';
             </script>
           ");
       }
    }
 ?>
 
cs

PHP를 사용하여 POST로 값을 받고 MYSQL에 저장하는 방법입니다. 소스코드를 참고하셔서 한글로 적혀있는 부분들을
본인한테 맞게 수정하셔서 사용하시면 됩니다.


반응형