2010년 10월 28일 목요일

한자를 공부하는 방법

1.한자 교재,입문서에 대한 설명
  1) 천자문(千字文)
    a. 중국 양(梁)나라의 주흥사(周興嗣)가 무제(武帝)의 명으로 지은 책.
    b. 1구 4자로 250구, 모두 1,000자로 된 고시(古詩)이다.
    c. 하룻밤 사이에 이 글을 만들고 머리가 허옇게 세었다고 하여 ‘백수문(白首文)’이라고도 한다.
    d. 한자를 배우는 입문서

 2) 사자소학(四字小學)
    a. 우리나라에서 편찬(編纂)된 『사자소학(四字小學)』은  송나라 학자 주희가 짓고  유자징이 편찬했던 『소학(小學)』을 바탕으로 하여 엮은 책(冊)임.
    b. 소학과 기타 경전의 내용을 알기 쉽게 생활한자로 편집한 한자의 입문서
    c. 어린이들이 실천할 수 있는 소중한 행동 철학을 4자씩 묶어서 한자와 한문의 기초과정을 위하여 만든 내용으로 실천 중심의 간결한 문구로 되어 있습니다.
    d. 한국에서는 조선 초기부터 중요하게 다루어져 사학(四學)·향교·서원·서당 등 모든 유학 교육기관에서 필수과목.
    e. 조선시대 사대부의 8세 전후의 아이들이 배우던 수신서(修身 書)  이며
       유학의 초보로 배워 조선시대의 충효사상을 중심으로 한 유교적 윤리관을 보급하는 데 큰 기여를 했다.
    f. 사자소학은
         첫째 부모에 대한 효도  '효행(孝行)'편
         둘째 부부와 형제의 우애 '부부/형제(夫婦/兄弟)'편
         셋째 스승과 제자의 도리 '사제(師弟)'편
         넷째 친구사이의 의리 '붕우(朋友)'편
         다섯째 스스로의 몸가짐과 수양  '수신(修身)'편
      으로 나누었다.
    g. 현재 통용되고 있는 책은 네 글자의 구절 256개와 1024자 본과, 320구절 1280자 본, 그리고 400구절에 1600자 본이 있습니다.

 3) 명심보감(明心寶鑑)
   a. 고려 충렬왕 때의 문신(文臣) 추적(秋適)이 금언(金言), 명구(名句)를 모아 놓은 책.
   b. "마음을 밝히는 보배로운 거울"이란 뜻의 명심 보감은 인간의 일상 생활에 필요한 격언과 윤리도덕 및 처세에 관한 예지와 자기 수양의 방도를 수록한 교양필독서이다.
   c. 원래 19편으로 되어 있었으나 후에 어떤 학자가 증보(增補), 팔반가(八反歌), 효행(孝行), 염의(廉義), 권학(勸學) 등 5편을 더하여 총 24편으로 구성되어 있다.

 4) 소학(小學)
   a. 중국(中國) 송(宋)나라 유학자(儒學者) 주희(朱熹)가 짓고  그 제자(弟子) 劉子澄(유자징)이 이어서 편찬(編纂)한 초학 교재(敎材).
   b. 內篇(내편)ㆍ外篇(외편) 모두 6편으로 되어 있다.
       내편은 立敎(입교)ㆍ明倫(명륜)ㆍ敬身(경신)ㆍ稽古(계고)로 나뉘고
       외편은 嘉言(가언)ㆍ善行(선행)으로 나뉘어 있다.
   c.孝(효)ㆍ弟(제)ㆍ忠(충)ㆍ信(신) 등(等) 사람의 도리(道理)와 수신의 절차(節次)가 기록(記錄)되어 있음

 5) 사서오경(四書五經) 또는 사서삼경(四書三經)
   a. 유교의 경전으로, 경전 중에 가장 핵심적인 책이다.
   b. 고대 중국의 자연현상 및 사회생활의 기록이며, 제왕의 정치, 고대의 가요, 가정생활, 공자가 태어난 노(魯)나라 역사 등의 기록이다.
   c. 사서는 논어(論語),맹자(孟子),대학(大學),중용(中庸)을 말한다.
      삼경은 시경(詩經),서경(書經),역경(易經)을 말한다.
      삼경에 춘추(春秋),예기(禮記)  합해 오경이라 부르고, 합해서 사서오경이라 부른다.

2.예전 서당에 한자 학습의 순서
   1) 입문 : 천자문,유합,사자소학,추구
   2) 초급 : 계몽편 ,동몽선습,격몽요결,명심보감
   3) 중급 : 소학,십팔사략,통감절요
   4) 고급 : 대학,논어,맹자,중용, 시경,예기,서경,역경,춘추

   ※ 초급 '명심보감'까지가 한문독해력의 50% 완성이고 고급 '중용'까지 하면 한문독해력의 거의대부분을 할수 있고 그 이후는 고문의 격식과 아름다움을 공부하게 된다.

한자란 무엇인가?

1.한자의 발생
    1) 한자는 창힐이라는 사람이 사물의 모양이나 새와짐승의 발자국을 본떠 한자를 만들었다는 기록이 있다.
   2) 그러나 창힐에 대하여 세 가지의 설로 나누어져 있다.
        첫째는 창힐을 상고의 제왕(帝王)으로 보는 견해,
        둘째는 황제(黃帝)의 사관(史官)으로 보는 견해,
        셋째는 시대의 의인화(擬人化)로 보는 견해인데,
     이 중에서 황제의 사관으로 보는 둘째 견해가 널리 알려진 것이다.
   3) 실존하는 자료로서 가장 오래된 문자는 1903년 은허(殷墟)에서 출토된
        은대(殷代)의 갑골문자(甲骨文字)가 있다.
   4) BC 14세기∼BC 12세기에 사용된 것으로 추정되는 이 문자는 당시의 중대사(重大事)를
        거북의 등이나 짐승 뼈에 새겨 놓은 실용적인 것이었다
2.한자의 특성
  한자는 글자마다 어떤 뜻을 가지고 있는 '뜻 글자','표의문자' 이다.
  한자는 사물의 모양을 본떠 만든 글자이기 때문에 글자마다 그 뜻을 가지고 있다.

3.한자 3요소
  한자는 모양(형태),뜻(훈),소리(음) 의 3요소를 가지고 있다.

4.한자 형성과정에 따른 분류
  1) 상형문자 : 한자의 가장 처음 형태로, 자연이나 사물의 생김새를 흉내내서 만든 글자.
                예) 뫼 산(山), 내 천(川), 새 조(鳥)
 2) 지사문자 : 추상적인 대상을 기호화
                예) 상(上)과 끝 말(末)
 3) 회의문자 :  두 개 이상의 한자를 모아서 새로운 뜻을 만든 글자
                예) 사람(人)과 말(言)을 합하여 사람의 말은 중요하다는 믿을 신(信)자를 만들었다.
 4) 형성문자 : 형태(形)와 소리(聲)를 적절히 합하여 새로운 뜻을 갖는 글자를 만든 것
                예) 간(肝)은 신체 등을 뜻하는 고기 육(肉, 변에서는 月(육달월)처럼 쓰인다) 자  와 같은 발음을 갖는 방패 간(干)을 합한 것이다.
 5) 전주문자 : 한자의 널리 쓰이는 뜻이 시대가 바뀌어 더 확장된 뜻을 갖는 글자이다.
 6) 가차문자 : 뜻은 생각하지 않고 음만 빌려 쓴 것을 말한다.

5.한자를 쓰는 순서(필순)
    1) 위에서 아래로 쓴다.  三 (석 삼)
   2) 왼쪽에서 오른쪽으로 쓴다. 川 (내 천)
   3) 가로획,세로획이  교차때는 가로획을 먼저 쓴다. 十(열 십)
   4) 좌우대칭일때,가운데 획을 먼저 쓴다  小(적을 소)
   5) 가운데를 꿰뚫는 세로획은 맨 나중에 쓴다  中(가운데 중)
   6) 안쪽을 둘러싼 몸(둘레)이 있을때는 몸을 먼저 쓴다.  同(한가지 동)
   7) 삐침을 먼저 쓰고 파임을 나중에 쓴다. 文(글월 문)
   8) 좌우로 꿰뚫는 가로획은 맨 나중에 쓴다. 女(계집녀)
   9) 아래를 에운 획은 나중에 쓴다. 也(어조사 야)
   10) 삐침은 먼저 쓰는 것과 나중에 쓰는 것이 있다.
        먼저 쓰는 것-가로획이 길고 왼쪽 삐침이 짧으면 왼쪽 삐침부터 쓴다.  九(아홉 구)
        나중에 쓰는것-가로획이 짧고 왼쪽 삐침이 길면 가로획부터 쓴다. 力(힘 력)
   11) 오른쪽 위의 점은 맨 나중에 쓴다. 犬(개견)
   12) 받침은 맨 나중에 쓴다. 近(가까울 근)

6.한자의 부수
 1) 한자의 여러 글자에 같이 쓰이는 기본글자이다.
 2) 모두 214개의 부수 글자가 있는데 위치에 따라 7가지로 이름이 바뀐다.
    - 변 : 부수가 왼쪽에 있을때 海(바다 해)
    - 방 : 부수가 오른쪽에 있을때 朝(아침 조)
    - 머리 : 부수가 위에 있을때  安(편안 안)
    - 엄호 : 부수가 위와 왼쪽을 싸고 있을때  病(병들 병)
    - 받침 : 부수가 왼쪽과 밑에 있을때. 道(길 도)
    - 발 : 부수가 밑에 있을때 忠(충성 충)
    - 몸 : 전체를 에워 쌀때 國(나라 국)
      몸 : 옆쪽으로 에워 쌀때 區(구역 구)
      몸 : 위쪽으로 에워 쌀때  間(사이 간)
      몸 : 좌우로 에워 쌀때 術(재주 술)

데이터타입의 중요성

오라클에서 테이블 생성시 무엇보다 중요한 부분인 데이터타입이 그 중요성만큼 깊은 고려의 대상인 아닌것 같습니다.

많은 개발자들이 그냥 NUMBER 타입을 선언하는 경우도 있고, 코드성의 숫자 형태를 무심코 VARCHAR2로 선언하는 경우도 있습니다.

이렇듯 테이블 생성시 컬럼의 데이터타입을 단순 데이터가 들어가면 된다라는 식으로 선언을 함으로써 데이터베이스 성능에 심각한 문제를 초래할 수 있는 테이블을 생성하고 있는 것을 많이 보았습니다.

데이터타입의 중요성에 앞서 VARCHAR 과 VARCHAR2의 차이점에 대해서 알아보겠습니다.

결과적으로는 VARCHA 과 VARCHAR2 는 아무런 차이가 없습니다. 모두가 4000 자까지 입력이 됩니다.

그럼 왜 오라클에서는 VARCHAR 이 있는데, VARCHAR2 를 만들었을가요? 그것은 ANSI SQL 에서 아직 VARCHAR 에 대한 정의를 내리지 못했기 때문입니다.

이말을 좀 풀어보겠습니다.

만약에 프로그램에서 4000자까지 입력을 받을 수 있는 항목이 있었습니다. 그리고 이 컬럼을 VARCHAR 로 선언을 했습니다.

그런데 ANSI SQL에서 VARCHAR 타입을 2000자 까지로 정한다라고 하면, 오라클에서 이후 버전에서는 VARCHAR 를 2000자 까지로 바꿔야 합니다.

그럼 VARCHAR 타입으로 선언을 한 테이블을 가진 프로그램이 오라클 상위버전으로 변환시 VARCHAR로 선언된 곳에서 에러가 발생한다는 것입니다.

이러한 이유로 오라클에서는 ANSI SQL에서 VARCHAR이 정해지지 전까지는 VARCHAR2를 사용하라는 겁니다.

ANSI SQL에서 VARCHAR를 정한다 하더라도 오라클에서는 VARCHAR2 에 대해서는 바꾸지 않을 것이기 때문입니다.

그럼 데이터타입에 대해서 자세히 알아보겠습니다.

간단히 숫자로 된 데이터를 VARCHAR2로 선언하는 것과 NUMBER로 선언했을 경우의 차이를 알아보겠습니다.

우선 NUMBER 타입은 아무런 값없이 그냥 NUMBER로 선언을 하면 NUMBER(22)로 선언되게 되어 있습니다.

그러므로 NUMBER 타입을 선언시 길이를 선언하는 것이 좋다고 보고, NUMBER 은 최대 38까지 선언 가능합니다.

그럼 VARCHAR2와 NUMBER 타입의 실제 길이에 대해서 알아보겠습니다.

어떤 컬럼에 데이터가 숫자의 형태로만 들어간다고 했을때 그 값이 1234567890 로 10개의 숫자 형태로 들어간다면 이 컬럼의 데이터 타입을 VARCHAR2 와 NUMBER 의 차이는 실제 데이터의 길이에서 차이가 납니다.

우선 VARCHAR2로 선언을 했을 경우 길이만큼인 10 BYTE 길이의 데이터가 들어가게 됩니다.

NUMBER로 선언을 했다면 10/2+1 인 6 BYTE 길이로 데이터가 들어갑니다.

두 타입의 차이로 4 BYTE 의 차이가 발생합니다. 이것이 별 차이가 없을 수도 있습니다.

하지만 데이터가 대용량으로 저장이 된다면, 만약 1000만건의 데이터가 저장이 된다면, 이 하나의 컬럼만으로도 40,000,000 BYTE 의 저장공간이 차이가 납니다.

다시 말해서 데이터 컬럼하나로 인해서 약 40M 의 저장공간이 차이가 난다는 것입니다.

이러한 이유로 데이터베이스의 테이블 설계시 컬럼의 데이터타입은 무엇보다 중요하다 할 수 있습니다.

그러므로 테이블 설계시 컬럼에 대한 데이터타입을 좀더 신중히 효율적으로 선언해야 합니다.

2010년 10월 27일 수요일

PK와 FK의 필요성

오라클 데이터베이스에서 테이블을 생성에 있어서 가장 기본적으로 고려되는 PK(Primary Key)입니다.

이 PK의 중요성 만큼 FK(Foreign Key)는 중요시 되지 않는것 같아 PK와 더불어 FK에 대해 알아 보면서 FK의 중요성에 대해서 알아 보겠습니다.

데이터베이스의 목적은 말그대로 수 많은 데이터들을 보관 및 관리하는 것입니다.

그것도 효율적이고, 성능면에서 매우 편리하며 신속한 처리를 요하는 것입니다.

이 모든것 보다 우선시 되어야 하는 것이 데이터의 무결성입니다.

아무리 많은 데이터를 아무리 신속하게 처리한다 하더라도 데이터에 결점이 있다면 데이터는 쓸모가 없을 뿐 아니라, 데이터의 결점으로 인하여 잘못된 결과를 초래할 수도 있습니다.

이러한 이유로 데이터 무결성은 매우 중요한 부분이라 하겠습니다.

이 데이터 무결성을 보장해주기 위해서 가장 기본적으로 필요한 것이 PK와 FK입니다.

우선 PK는 테이블에서 오직 한개만 존재할 수 있으며, 이 PK는 테이블에서 데이터의 유일성을 보장해 줍니다.

PK의 구성은 B*tree Index, Unique, Not Null의 구조를 가지고 있습니다.

이러한 구조이므로 테이블에서 PK를 조건으로 조회를 하면 오로지 한개의 값만 나오거나 아니면 값이 나오지 않게 되는 것입니다.

그럼 PK와 FK는 어떠한 관계를 가지고 있는 것일까요?

예를 들어보겠습니다.

학과 테이블이 있습니다. 이 테이블에는 학과코드가 PK입니다.

그리고 학생 테이블이 있습니다. 이 테이블에는 학생번호가 PK입니다.

또한 학생은 하나의 학과에 등록이 되어야 한다는 조건이 있다면, 학생테이블에 학과코드의 테이터가 있어야 하겠지요.

그럼... 만약 학생테이블의 학과코드의 값에 학과테이블의 학과코드에 없는 값이 들어간다면 어떻게 되겠습니까?

잘못된 데이터가 들어가게 되고, 이러한 데이터를 부모를 잃어버렸다라고 합니다.

그러므로 학생테이블에 데이터를 저장 또는 수정시 학과코드 데이터는 학과테이블에 있는 학과코드가 맞는지를 확인해야 합니다.

이것을 자동하여 주는 것이 FK입니다.

그래서 FK는 PK를 대상으로만 만들 수 잇습니다.

이것은 FK가 항상 PK를 참조하게 되는데, 만에 하나 FK가 유일인덱스가 아닌 데이터를 매번 조회하게 되면 성능에 심각한 문제가 발생할 수 있으므로 이러한 문제를 미연에 방지하기 위하여 기본적인 성능을 보장하여야 하는 조건을 강제로 하기 위해 PK를 대상으로만 FK를 만들수 있게 한것입니다.


그러므로 PK와 FK를 이용하여 성능도 고려하면서 데이터 무결성도 보장을 할 수 있다는 것입니다.

2010년 10월 25일 월요일

b*tree 인덱스의 구조 및 성능 2

전에 알아본 b*tree 인덱스(이하 인덱스)의 기본 구조는 이러합니다.

인덱스의 전체 값은 1,2,3......10000이라는 값이 저장되어 있습니다.

이러한 구조에서 ROOT BLOCK에 값이 100, 200, 300 ...... 10000이라는 100개의 값이 들어가고, 100 에는 1부터 100이 저장되어 있는 LEAF BLOCK의 주소가 연결되어 있습니다.

이러한 구조에서 0 이라는 값을 저장하게 되면 어떻게 될까요.

인덱스는 조회에서 성능향상을 달성하기 위해서 만들어진 구조입니다.

이러한 성능향상을 위해 인덱스는 정렬된 결과의 값들이 순차적으로 저장이 되어 있죠.

이 말은 조회시 정렬을 매번 하는 것이 아니라 정렬된 값들에서 원하는 값을 조회하겠다는 것입니다.

그러한 이유로 저장시 조금의 부하가 발생한다 하더라도 저장되는 값을 정렬되는 구조로 저장을 하는 것입니다.

ROOT BLOCK에는 100, 200, 300 ...... 10000 이라는 값이 모두 저장되어 있고, LEAF BLOCK에는 1 - 100, 101 - 200, 201 - 200 ...... 9001 - 10000이라는 값이 저장되어 있는 구조에서 0 이라는 값은 어디에 저장되 될까요?

우선 ROOT BLOCK는 아무런 변화가 없습니다.

왜냐하면 0은 100 이하이기에 0 이라는 값을 찾는 첫 위치에는 변화가 있을 필요가 없기 때문입니다.

그럼 0 이라는 값을 저장하기 위해서 인덱스는 어떠한 변화를 가져올까요?

1 - 100 이 저장되어 있는 LEAF BLOCK에 변화가 발생됩니다.

1 - 100 이 저장되어 있는 LEAF BLOCK의 값이 50, 100 으로 단 두개의 값만 가지는 블럭으로 바뀌게 됩니다.

그리고 이 블럭은 LEAF BLOCK에서 BRANCH BLOCK으로 바뀌는 것입니다.

그럼 50, 100 이라는 값에는 어떠한 정보를 가리키고 있을까요?

1 - 100 이라는 값에 0 이 들어갔으므로 0 - 50, 51 - 100 의 값이 들어가게 되는 LEAF BLOCK이 2개 생성되게 됩니다.

그리고 이 2개의 BLOCK은 BRANCH BLOCK으로 바뀐 BLOCK의 50, 100 의 값에 연결이 됩니다.

그럼 인덱스 조회로 0 이라는 값을 조회하게 되면 0 은 100 이하이므로 ROOT BLOCK의 100 이 가리키고 있는 BLOCK을 조회하게 되는데, 이 BLOCK이 LEAF BLOCK이 아니고 BRANCH BLOCK으로 바뀌었으므로 50, 100 의 값에서 0 이라는 값이 50 이하이므로 50 이 가리키고 있는 LEAF BLOCK에서 0 의 값을 찾아 DATA BLOCK을 조회하게 됩니다.

이러한 구조의 인덱스를 밸런스가 깨졌다라고 합니다.

모든 LEAF BLOCK에 레벨 2의 구조를 가지고 있지만 하나의 블럭이 레벨 3의 구조를 가지고 있기 때문입니다.

이렇게 하나의 블럭만 밸런스가 틀려진다고 해서 큰 문제가 발생하는 것은 아니지만 상당히 많은 블럭이 밸런스가 깨지면 인덱스를 새로 정리해야 합니다.

이럴때 사용하는 명령어가 ALTER INDEX index_name REBUILD 입니다.

이 명령으로 인덱스의 값들을 모두 다시 정렬하여 저장하게 되므로 인덱스의 밸런스를 맞출수가 있습니다.

인덱스 관리의 기본이라고 할 수 있죠.

인덱스의 통계 생성 명령어는 아래와 같습니다.

ANALYZE INDEX index_name COMPUTE STATISTICS

위의 명령어로 인덱스의 통계를 생성한 후

SELECT * FROM USER_INDEXES 로 해당 인덱스의 구조를 알 수 있습니다.

여기까지 인덱스 구조에 대해서 알아봤습니다.

명령어 및 쿼리의 자세한 내용은 다음에 정리하겠습니다.

2010년 10월 20일 수요일

한자 시험에 대하여

  1) 한자를 공부하는 이유
   - 한자에 대한 이해, 실생활에서의 한자 활용 능력, 어휘력, 교과서 한자등을 평가
   - 공부하면서 언어능력 및 문장 구성능력,사고력과 어휘력을 향상시킵니다.
   - 초ㆍ중등학교 교과서에 자주 나오는 한자어를 평가
   - 시험대비 과정을 통해 어려운 어휘에 대한 이해력을 높여 학교에서의 학업 능력을 향상시킵니다.

  2) 한자시험 공인급수에 대한 우대사항
   - 자격기본법 제27조에 의거 국가자격 취득자와 동등한 대우 및 혜택을 받습니다.
   - 교육과학기술부 훈령 제158호에 의거 학교생활기록부 '자격증및인증 취득상황'에 등재(고등학생에 한함), 입시에 활용됩니다.
   - 경제5단체, 신입사원 채용 때 한자시험을 응시 권고하고 있습니다

  3) 한자시험 특징
   - 시행처별 공인급수,민간자격이 있으므로 유의해서 시험을 봐야 합니다.
   - 시행처별 공인급수별로 한자수가 다르므로 유의해서 공부를 해야 합니다.
   - 상위급수의 한자수는 하위 급수의 한자들을 전체또는 일부 포함하고 있습니다.
        예를 들어 7급 배정한자 150자는 8급배정한자 50자+ 7급 신습한자 100자이다
   - 급수의 쓰기 배정 한자들은 한두단계 아래 급수의 읽기 배정한자를 쓰기 한자로 이용한다.
        예를 들어 한자급수 4급의  쓰기한자 100자는  5급의 읽기한자 150자의 일부이다.
   - 따라서 3급을 볼경우 3급 아래의 한자(4급~8급)들도 대부분 알고 있어야 합니다.
   - 시행처별로  출제기준이 다를수 있습니다.
       보통 출제기준 : 독음,훈음,한자쓰기,부수,필순,장단음,반의어,상대어,동의어,유의어,동음이의어,뜻풀이,약자,완성형
   - 실제 시험은 급수별 배정한자및 고사성어,한자용어에서도 출제될수도 있으므로 같이 공부를 해야 한다.

  4) 한자시험 시행처및 시험 종류
   ▷ 한국어 문회 : 한자능력검정시험 , http://www.hanja.re.kr/
      - 공인급수 : 특급(3500자),특급II(4918자),1급(3500자),2급(2355자),3급(1817자),3급II(1500자)
      - 교육급수 : 4급, 4급II,5급, 5급II,6급,6급II,7급,7급II,8급

   ▷ 한자교육진흥회 : 한자자격시험 , http://kaphe.hanja114.org/
      - 국가공인급수 : 사범(5000자),1급(3500자), 2급(2300자),3급(1300자)
      - 교양한자급수 : 준3급,4급,준4급,5급, 준5급, 6급,7급,8급

   ▷ 한국평생교육평가원 : 한국한자검정 , http://www.kpe.or.kr/ 
      - 공인급수 : 한자 1급(3500자),한자 2급(2500자),한자 3급(1800자),한자 준3급(1500자)
      - 교양한자급수 : 한자 4급,한자 준4급,한자 5급,한자 준5급,한자 6급,한자 7급,한자 8급

   ▷ 한국외국어평가원 : 실용한자검정시험, http://www.pelt.or.kr/
      - 공인급수 : 한자 1급(3500자),한자 2급(2500자),한자 3급(1850자),한자 4급(1500자

   ▷ 대한검정회 : 한자급수자격검정 , http://www.hanja.ne.kr/
      - 국가공인자격 : 사범(5000자),1급(3500자),준1급(2500자),2급(2000자),준2급(1500자)
      - 민간자격 : 준사범,3급,준3급,4급,준4급,5급,준5급,6급,7급,8급

   ▷ 한국한자한문능력개발원 : 한자능력자격검정,http://www.hanja4u.org
      - 공인급수 : 1급(3500자),2급(2350자),준2급(1800자),3급(1500자)
      - 교육급수 : 4급,5급,6급,7급,8급

   ▷ 대한상공회의소 : 상공회의소 한자 , http://license.korcham.net/eximinfo/guide/guide_view.jsp?flag=0401
      - 국가공인 : 1급(4908자),2급(1800자),3급(1800자)
      - 민간자격 : 4급,5급,6급,7급,8급,9급
     
※ 시행처별로 급수,시험 유형이 변동이 있을수 있으므로 각 홈페이지에서 확인해야 함.

b*tree 인덱스의 구조 및 성능 1

b*tree 인덱스(이하 인덱스)는 데이터베이스 성능 개선에서 가장 기본적으로 고려되어야 할 사항입니다.

기본적으로 PK는 인덱스가 생성이 됩니다. 이것은 PK를 대상으로 FK를 생성하였을 경우 FK의 값을 입력시 PK에 FK의 입력될 값이 있는지를 확인하여야 하는데, 이 확인하는 작업에 대해서 최대한의 성능을 고려한것이 PK에 인덱스를 생성하는 것입니다.

그럼 인덱스의 구조에 대해서 알아 보겠습니다.

인덱스는 기본적으로 밸런스의 구조를 가지고 있습니다.

밸런스의 최상위를 ROOT BLOCK 이라 하고, 최하위를 LEAF BLOCK 이라 하며, ROOT BLOCK과 LEAF BLOCK 사이를 BRANCH BLOCK 이라 합니다.

최초 1이라는 값을 입력을 하면 ROOT BLOCK에 1이 입력이 되고, 1이 입력된 LEAF BLOCK의 주소를 지정합니다.

이후 2를 입력하면 ROOT BLOCK에 입력된 1 이 2 로 바뀐뒤 LEAF BLOCK에 2가 추가되고 ROOT BLOCK 의 2에 1,2 가 저장된 LEAF BLOCK 주소가 그대로 지정됩니다.

만약 하나의 LEAF BLOCK에 100개의 값이 들어갈 수 있다고 가정을 하면(일반적으로 그 이상이 들어갑니다.) 1부터 100을 입력하면 ROOT BLOCK에는 100 이라는 값 하나가 있고, LEAF BLOCK에 1부터 100까지가 입력이 됩니다.

그후 101을 입력을 하면 ROOT BLOCK에는 100, 101의 값이 저장되게 되면 LEAF BLOCK은 2 개가 되어 하나에는 1부터 100이 다른 하나에는 101이 저장이 되겠죠.

이런식으로 ROOT BLOCK이 다 채워질려면 100, 200, 300 ......10000 이렇게 100개의 값이 저장되고 LEAF BLOCK는 100개가 저장이 될 것입니다.

이렇게 생성된 인덱스를 이용하여 데이터 조회시 204 의 값을 조회시 ROOT BLOCK에서 204는 200보다 크고 300보다는 작으므로 300이 가리키는 LEAF BLOCK에서 204를 찾게 됩니다.

그러면 단순 비교만 하더라도. 인덱스를 FULL SCAN 했을 경우 100개의 BLOCK를 조회해야 하는데, 인덱스 구조로 조회를 하면 2개의 BLOCK가 조회하면 되므로 조회시 성능에 월등한 향상을 가져올 수 있습니다.

물론 인덱스는 데이터 저장시 어느 정도의 추가적인 작업이 필요합니다.

하지만 이러한 추가적인 작업에 비해 조회시 너무나 월등한 성능을 보여주므로 데이터베이스  성능에 있어서 인덱스를 가장 기본적으로 고려해야 한다는 것입니다.

오늘은 b*tree 인덱스의 기본적인 구조에 대해서 알아보았습니다.

다음은 밸런스가 어떻게 깨지는지에 대해서 알아보겠습니다.

2010년 10월 18일 월요일

유태인에 대하여

1.유태인이란?
   1) 유대인  또는 유태인(猶太人)은 종교적인 의미에서는 유대교를 신봉하는 사람,
   민족적인 의미에서는 혈연 또는 개종을 통해 고대 히브리 민족의 후예가 된 유대 민족을 가리킨다
  2) 전 세계  1,400만 명에 인구수에 불과한 유대인은  탈무드를 어릴 때부터 교육받으며 성장했고,
     그 결과 세계의 정치, 경제, 문화, 사회, 과학, 예술에 지대한 공헌을 하는 수많은 인재들을 배출해 냈다.

2.유태인의 성공비결
  1) 유태인은 전 세계의 정치, 경제, 문화, 사회, 과학, 예술등 모든 방면에 걸쳐 활동하고 있다.
     - 전세계 인구 중 0.3%를 차지하는 유대인이 노벨상의 30%를 차지했다.
     - 참고로 노벨 경제학상 수장자중 유태인 비율은 41%라고 한다.
     - 미국 100대 기업의 40%가 모두 유대인의 소유이다.
     - 세계 5대 메이저 식량 회사 중 3개가, 세계 7대 메이저 석유 회사 중 6개가 유대인의 소유이다.
     - 미국을 움직이는 3대 신문 뉴욕타임즈의 발행인 아서 셜츠버거,워싱턴포스트 명예회장 캐서린 그레엄 ,월스트리트저널 CEO 피터간 모두 유태인이다.
     - 할리우드 '7대 메이저 영화사'중 6개의 영화사(파라마운트, 20세기 폭스, MGM, 워너 브러더스, 콜럼비아, 유니버셜)가 유태인이 설립한 기업이다.

  2) 유태인들의 성공비결
     - 유태인들은 공부를 인생의 최대의 목표로 생각했으며, 이들이 가지고 있는 단 하나의 교과서및 생활 지침서는 바로 탈무드였다.
     - 유태인들의 성공비결을 뛰어난 머리가 아니라 그들의 뛰어난 교육방식과 뛰어난 결속력이다.
     - 유태인들이 머리가 좋은 것은 머리를 쓸수 밖에 없는 교육방식으로 인하여 두뇌계발이 이루어져 머리가 좋다.
     - 유태인들은 흩어져 살면서도  서로서로 상부상조하고 조직을 만들어 사회에 참여하는 것이 혈족을 유지하는데 도움이 된다고 한다.
        그래서 기부가 일상생활화가 되고, 조직으로 뭉쳐 공적 활동에 참여함으로 어떤 사회에서든지 적응력을 길려 성공하게 되었다.




탈무드에 대하여

1. 탈무드란 무엇인가?
    1) 유태인의 전통적 습관,법률,규율 등의 구전(口傳) 과 규율의 해설,토론과  교훈,생활의 지혜를 집대성한 책.
    2) <구약성서>가 씌여진 뒤 유태교의 법률, 전통적 습관, 축제, 민간 전송, 해설 등을 모아 편찬한 것으로 성서 다음으로 유태인들의 정신적인 지주가 되어왔다.
    3) 유태인들의 종교적 생활만이 아니라 법적 규정이나 판례법 까지도 포함되어 있으며, 오랜 세월(2000) 유랑 생활을 하며 박해받던 전 세계의 유태인들을 하나로 결속시켜준 맥으로, ‘유태인의 혼’과도 같은 것
    4) 유태인들은 공부를 인생의 최대의 목표로 생각했으며, 이들이 가지고 있는 단 하나의 교과서 및 생활 지침서가 바로 탈무드이다.
    5) 전 세계  1,400만 명에 인구수에 불과한 유대인은  탈무드를 어릴 때부터 교육받으며 성장했고,
  그 결과 세계의 정치, 경제, 문화, 사회, 과학, 예술에 지대한 공헌을 하는 수많은 인재들을 배출해 냈다.
2.탈무드의 탄생
    1) 토라(Torah,모세오경,모세율법,규율,율법,구약성서 첫 다섯편)  : 유태인은  구전(口傳) 토라에 의한 도덕적,규율적 생활을  하였음
    2) 미쉬나(Mishna) : 유태인의  구전(口傳) 토라를 기록한 종교적 책 (200년경 히브리어로 기록)
    3) 게마라(Gemara) : 미쉬나(Mishna)로 알려진 유대교 율법 수집본에 대한 주석,해설과 토론을 정리 (500년경 아람어로 기록)
    4) 탈무드(Talmud) 미쉬나(율법) 와 게마라(미쉬나에 대한 해설과 토론)를  집대성한 책이다.
3.탈무드 편찬역사 
   1) 기원전 500년~ 기원 500년 : 규율이 구전에 의해 전해짐
  2) 200년경 : 미쉬나(규율) 정리
  3) 500년경 : 게마라(미쉬나에 대한 해설과 토론) 정리
  4) 약 4세기 말경  :  팔레스타인 탈무드 (예루살렘 탈무드) 편찬
  5) 약 6세기 경  : 바빌로니아 탈무드  편찬 - 팔레스타인 탈무드 보다 방대하며 중요
  6) 1244년 : 파리에 있던 모든 '탈무드'가 기독교인들에 의해 몰수되어 24대의 수레에 실린 채 불태워 없어졌다
  7) 1263년  :  기독교와 유태인 대표들이 자리를 같이 하고'탈무드'과연 기독교의 교리에 상반되는 것인가에 대해 토론함.
  8) 1334년  :  손으로 쓴 탈무드가 현재 가장 오래된 것
  9) 1415년  : 교황 베네딕트 13세가 유태인들의 '탈무드'를 법령으로 금지
  10) 1482년  : 스페인에서 '바빌로니아 탈무드' 처음  인쇄
  11) 1484~1519년  : 이태리 에서 인쇄본으로  출간
  12) 1520년  :  로마에서 모든 '탈무드'가 압수되어  불태워 없어졌다.
  13) 1523년  :  베네치아에서 '팔레스타인 탈무드' 처음 인쇄
  14) 1562년  :  기독교의 교회측이'탈무드'를 검열하여 부분 부분을 삭제해 버렸기 때문에 오늘의 '탈무드'는 완전한 내용의 것이 아니다
  15) 1880년  : 유태 학자들에 의한 개정판
  16) 1948년 : 이스라엘이 건국된 이래 탈무드 적극 관심.

4.탈무드 구성    
   1) 탈무드는 크게 두 부분으로 나뉜다.
      a.
할라카(halacha)
         -
모세오경(토라,모세율법) 의 해석 부분이며 약 2/3를 차지
        
- 율법을 엄격하게 적어 놓아 인간의 모든 행동을 거룩하게 만들기 위한 유태인의 생활 양식이라고 할 수 있다.
         -
제사,건강,예술,식사,대화,인간관계 등 모든 생활을 규정하고 있다.
      b.
아가다(agAD a)
         -
조상들의 지혜및교훈 모음이며 1/3를 차지
        
- 랍비들의 성경 해석(설명)에서 추출하거나 랍비와 유대 영웅들의  여러 이야기를 통해 풀어놓은 교훈이다.
         -
철학,역사,도덕,,격언,성서해설,과학,의학,수학,천문학,심리학,형이상학 등 인간의 모든 지식이 포함되어 있다.
    2)
탈무드는 6, 63, 525, 4,187절로 되어 있다.
          6
부는 모두 농업, 제사, 여자, 민법, 사원, 순결, 불순 으로 구성 되어 있다.
         
권수로 모두 20권이며,12,000페이지에다 단어의 수만도 무려 250여 만개 이상이며, 그 무게가 75킬로그램이나 나가는 엄청난 분량의 책이다
   3) 탈무드 제1권 1페이지는 백지이고 2페이지부터 시작한다.
       항상 반복하여 읽는 책이라는 의미이다.
      1은 시작을 의미하고. 탈무드는 시작도 없고 끝도 없다. 

   4) 탈무드는 대략 2,000명 정도의 랍비들이 정리하였다. 거의 600년 걸려서 완성하였고 베껴 쓰는 데만 100년 걸렸습니다.
큰 절판 소인쇄체로 3만 페이지에 달하고 있다. 적어도 100만 단어가 들어 있다.
   5) 유대 생활의 건강, 의약, 법률, 윤리, 종교적 실행, 역사, 전기, 천문학, 생물학, 자선등 모두가 망라되어있는 백과사전이다

안드로이드 에뮬레이터 실행하기

에뮬레이터 관리자를 실행한다.

'New' 를 선택하여 에뮬레이터를 생성한다.

'Name'을 입력, 'Target'를 안드로이드 버전 선택, SD Card는 에뮬레이터에서 사용할 가상 SD CARD 용량,  Built-in은 디스플레이 유형 선택, CREATE AVD 선택

생성 에뮬레이터를 선택하여 실행한다.
'Screen Size'는 4, 'Monitor dpi' 130으로 하고 'Launch'하면 핸드폰과 거의 같은 크기의 에뮬레이터가 실행된다.
생성된 에뮬레이터입니다.

실행할 안드로이드 프로젝트에서 마우스 오른쪽 버튼을 클릭하고 'Run As' - Run Configuration'을 선택한다.
'Android Application'에서 실행할 프로젝트를 선택하고, 'Target'에서 대상 에뮬레이터를 선택한 후 'Start'로 실행을 하면 에뮬레이터에 어플리케이션이 설치되고 실행이 된다.

안드로이드 폰에서 TTS(Text-To-Speech) 데이터 받기


TTS(text-to-speech)가 안될때 설정방법은 아래와 같습니다.

1.초기화면에서 "메뉴" 버튼을 누르고 빨간색으로 표시한 설정 부분을 눌러서 "설정"에 들어갑니다.
 
2.설정에서 스크롤을 내리면 TTS(text-to-speech) 또는 텍스트를 음성으로 변환을 누룹니다.


3.음성데이터 설치를 누룹니다.
  음성데이터설치 부분이 회색이면 이미 설치되어 있는 겁니다.
 ※ 참고로 안드로이드의 TTS기능은 음성 데이터를 조합해서 발음을 해주는 것입니다.

4.구글 계정이 필요하다라는 메세지임. “Next” 버튼 클릭 

5.구글 계정이 없으면  “Create” 버튼 클릭  => 5.1 화면으로
  구글 계정이 있으면  “Sign In” 버튼 클릭 => 5.2 화면으로

  5.1 이전화면에서 구글 계정이 없어서 “Create”버튼 클릭했을때
            


 5.2 이전화면에서 구글 계정이 있어서 “Sign In”버튼 클릭했을때
                

6. 안드로이드 마켓 이용에 대한 안내. “Accept” 버튼 클릭


7.Android TextToSpeech 애플리케이션  클릭하여 상세로 이동

8.음성 데이터에 대한 안내. “Install” 버튼 클릭



9.음성 데이터에 대한 안내. “OK” 
버튼 클릭


10. 상단 왼쪽 화면에  다운로드 진행 “ 중 표시가 나옵니다.


11.다운로드가 완료되면 아래와 같이 SD CARD에 설치 표시가 나온다.

12.다운로드및 설치가 완료되면 아래와 같이 나온다

위와 같이  설치 하셨으면 이제 안드로이드 폰에서 TTS기능이 사용가능합니다.