2010년 12월 14일 화요일

방화벽해제 및 공유기 방화벽 해제하는 법

아...과제가 있는줄 잊고있었다...공부하려고 책을 펴는 순간 뭔가 내 머리를 하얗게 만드는...일요일까지 과제가 있었지...ㅠㅠㅠㅠㅠㅠㅠㅠㅠ

그러나 유종의 미라고 끝까지 보는 사람은 없겠지만 과제를 하기로 결심했다.

네트워크장을 하면서 처음부터 이걸해야지라고 마음 먹었던 것이 있었다.

바로 방화벽을 해제하는 방법과 공유기의 방화벽을 해제하는 방법이다. 평소 워크래프트3을 즐겨하는 나로서는 방화벽의 존재가 고마우면서도 내가 방을 만들면 다른 사람들이 못들어오게 하는 다소 거추장스러운 존재였기 때문에 필요 유무에 따라 방화벽을 해제하거나 사용하는 법을 익혀야겠다고 생각했기 때문이다.

1.방화벽 해제하는 법

Windows 7 방화벽


윈도우 7 에서 방화벽 설정은, 제어판 - 시스템 및 보안 - Windows 방화벽 에서 열면 된다.
윈도우 7 에서는 XP와는 다르게 인터페이스도 변했고, 좀 더 세세히 설정이 가능하다. 하지만 덕분에 저처럼 처음 윈도우7을 사용하는 사람에게는 더 어렵고 복잡해졌죠.
기본적으로, 방화벽 사용과 해제는 XP와 동일하다. 여기에 네트워크 위치 옵션을 좀 더 쉽게 줄 수 있다고 한다.
기본 설정은, 방화벽 사용 과 차단 알림으로 되어있다.




XP에서 예외 옵션이라 불렀던게, 7에서는 허용 옵션이다.
기본적으로 대부분의 설치 프로그램이 리스트에 등록되어 있다.

방화벽에서 허용하는 프로그램 설정 (윈도우 7)
1. 방화벽 창에서, Windows 방화벽을 통해 프로그램 또는 기능 허용을 클릭한다.
2. 설정 변경을 클릭한다.
3. 프로그램 리스트에서, 허용할 프로그램을 체크한다. 개인/공용 원하는 곳에 체크. 둘다 가능.
4. 리스트에 원하는 프로그램이 없을 경우, 다른 프로그램 허용을 클릭하여 찾아보기를 통해 등록한다.






윈도우 7 에서 포트 개방은 조금 다른 이다. 고급 설정을 통해, 인바운드 규칙과 아웃바운드 규칙에 각각 새 규칙을 넣어 포트를 개방하는 방식이다.

포트 개방 (윈도우 7)
1. 방화벽 창에서, 고급 설정을 클릭한다.
2. 좌측 메뉴에서 인바운드 규칙을 클릭하고, 우측 메뉴에서 새 규칙을 클릭한다.
3. 규칙 종류에서, 포트를 선택하고 다음을 클릭한다.
4. 프로토콜 및 포트에서, TCP/UDP를 선택하고 특정 원격 포트에서 개방할 포트를 입력한 후 다음.
5. 작업에서, 연결 허용을 선택하고, 다음을 클릭한다.
6. 프로필에서, 적용되는 곳을 선택하고 다음을 클릭한다. 기본으론 3개 다 선택되어있음.
7. 이름에서, 알아볼 수 있는 이름을 입력하고, 설명에선 간단한 주석을 달아 놓은 뒤 마침을 클릭한다.
8. 아웃바운드 규칙에도 3~7 과정을 그대로 추가한다.


2. 공유기 방화벽 해제하는 법

공유기의 사설네트워크로 연결된 pc들은 공유기 자체의 방화벽 아래에 위치하는데,

특정 포트를 사용해야 하는 p2p나 온라인 게임, 메신저 등등...사용이 원활하지 않을수 있다.(워크래프트3, 스타크래프트 등등)

이때에는 해당 프로그램이 사용하는 포트를 열어주어야 한다.

사용되는 특정 포트를 포워딩 하거나 dmz, super dmz, ip포워딩 등등(공유기마다 기능이 다르거나 제한적일수 잇음)

많은 포트를 개방하면 할수록 바이러스나 해킹, DDOS공격 등등에 쉽게 노출된다.

특히 dmz는 완전개방이기 때문에 사용하지 않는것이 좋겠지만 사용방법에 따른 본인 선택이긴하다.

그러므로 특정 포트만 열어주는 포트포워딩을 사용하는것이 좋지만 특정 포트마다 설정을 해야 하는 번거로움이 있다.

또한 포트포워딩은 매핑된 사설pc에 DMZ보다 우선적으로 패킷을 전달한다고 한다.


포트포워딩 방법은

1) 시작> 실행> cmd 입력하여 나오는 명령 프롬프트 창에서

ipconfig 라고 입력합니다 그리고 나타나는 항목중에서

아이피 어드레스가 현재 공유기로 부터 할당 받은 내부아이피 이고

디폴트 게이트웨이 주소가 바로 공유기 셋업주소다.


만약 여기서 주소를 부여받지 못할경우 다음링크의 6번을 참고하면 된다.


2) 그 게이트웨이 주소를 주소창에다가

http://192.168.10.1 과 같이 입력하면 공유기 셋업이 진입할수 있다.



3) 포트포워딩 메뉴에서 열어줄 포트번호를 서비스포트에 입력하고

현재 pc가 공유기로 부터 할당받은 내부아이피(위의 1번에서 아이피어드레스)를 입력하여 추가시키면 하단에 포트개방된 포트번호의 리스트가 생깁니다. on/off로 사용/중지를 선택할수 있다.

그리고나서 [적용]눌러주면 완료가 된다.

4) DMZ설정은 더 간단하다.

위의 2번에서 현재 pc에 장착된 랜카드의 하드웨어 주소를 입력하고 바로 적용시키면 된다.

하드웨어 주소값이 자동검색되지 않을시 확인하는 방법은

시작> 실행> cmd 입력하여 나오는 명령 프롬프트 창에서

ipconfig /all   << 이라고 입력한다.

나타나는 항목들중에서 피지컬 어드레스가 바로 하드웨어 주소다.

2010년 11월 27일 토요일

바코드에 대해 자세하게 알아보자.

교재에 등장한 바코드 비스무리 하게 생긴 것은 UPC라고 국제적인 상품 코드이다.

이는 바코드의 한 종류로서 이번 기회에 생활속에 녹아 들어있는 바코드에 대해 알아보기로 했다.


바코드의 정의 및 사용예시

우선 바코드의 정의를 짚고 넘어가자면 바코드는 바와 공백을 특정한 형태로 조합해서 문자와 숫자 및 기호 등 필요한 정보를 넣어 놓은 것으로서 바코드 아래에 있는 숫자를 보다 빠르게 해석할 수 있게 만든 것이다. 실재로 바코드의 바와 공백은 두께와 조합 및 스캐너에 따른 반사율에 따라 0과 1을 나타냄으로서 정보를 담고있다.

그러나 바코드에는 상품에 대한 정보가 담겼다고 보기보다는 그 정보를 열람할 수 있게 만드는 매개체에 대한 정보가 들어있다고 보는 것이 옳다.

가령 예를 들어 회사에서 어떤 사원에 대한 정보가 궁금하다 이런경우, 그 사원의 번호를 일일이 손으로 입력하기 보다는 스캐너를 통해 빠르게 읽어 들이는 것이 보다 효율적이기 때문에 바코드를 사용한다고 보면 된다.

바코드의 구성방법은 여러가지가 있지만 보통 13자리이며, 처음 세자리는 제품의 생산국, 다음 네자리는 제조업체명, 그 다음 다섯자리는 상품명, 마지막 한자리는 코드의 에러를 확인하기 위한 자리라고 한다.

바코드의 종류

1. 2 of 5 코드류 : 바와 스페이스의 넓고 좁음에 따라 0 또는 1을 표현한다.

1_1 industrial 2 of 5 코드
가장 단순한 형식의 2 of 5코드로서 5개의 요소를 이용해 0~9까지의 숫자를 표현한다. 5개의 요소중에서 2개는 넓은 요소를 3개는 좁은 요소다. 넓은 요소는 1 좁은 요소는 0을 의미한다.

무슨 의민지는 자세하게 모르겠지만...(예시를 찾기가 힘들다.) 5개의 바(막대기)를 이용해 정보를 표현하는듯하다.

1_2 interleaved 2 of 5 코드
가장 많이 사용되는 2 of 5코드로서 산업용 바코드중에서 많이 사용되는 편이라고 한다. 정보를 표현하는 방식은 한 개의 숫자가 5개의 바와 5개의 스페이스를 교대로 조합시키는 것이다. 이를 통해 industrial 코드에 비해 40%정도의 길이를 줄일 수 있다고 한다.

백문이 불여일견

바코드 생성기를 통해 만들어본 Interleaved 2 of 5 코드다 만약 정보를 저장하는 값이 홀수가 되면 바코드 아래의 숫자의 맨 앞에 0이 붙게 되는 특징을 볼 수 있다.

2. 3 of  9 코드(CODE 39)
이 코드는 알파벳 문자까지도 코드화 할 수 있다. 43개의 문자와 하나의 시작, 끝 문자로 구성되어있고, 각 문자는 9개의 요소로 다시 나눠진다. 현재 공업용을 비롯해서 가장 광범위하게 쓰이며 보통 막대기 5개가 한 문자에 해당되고 시작과 끝 문자는 반드시 '*'이어야 한다. 이 코드는 길이를 자유롭게 변경하는 것이 가능하고 양쪽 방향 모두다 해독이 가능한 양 방향성 코드라고 한다.

백문이 불여일견
아 솔직히 저 바코드보고 바로 해독이 가능하고 자잘한 설명을 할 수 있다면 내가 여기있지않겠지....그냥 알파벳도 표현가능하고 광범위하게 쓰이는 코드정도로 이해해야겠다. 이를 발전시킨 버전으로서 CODE128까지 나와있다고 한다. 이 코드는 주로 컴퓨터, 프린터등에 사용된다고 한다.

3. UPC코드
이 코드는 식료품과 잡화제품 같은 유통제품에 부착하기 위해 개발되었다. 0~9까지의 숫자만 표현이 가능하고 3가지 종류로 다시 세분화 되는데 A버전은 12자리를, E버전은 6자리를, D버전은 12자리 이상을 표현할 수 있다고 한다. 이 코드는 생산품목이 무엇인지, 제조업체는 어딘지, 상품명은 무엇인지의 정보를 포함한다.  또한 이 코드도 양방향성을 지녀서 어느 방향으로 스캔해도 정보를 읽어올수 있다고 한다.

백문이 불여일견
역시 어려울 뿐이다...이는 UPC바코드의 표준형이라고 하는데 12자리가 뭔지 심히 난해하다.

4. ISBN
이 코드는 국제표준도서번호로서 전세계의 모든 책들에 고유한 번호를 줘서 서적의 유통을 보다 효율적으로 하기 위해 만들어졌다. 총 10자리로 구성되고 10자리 숫자는 다시 두 자리, 네 자리, 세자리, 한자리로 나눠진다. 여기서 처음 두 자리는 국가번호(우리나라는 89), 다음 네 자리는 발행자 번호, 다음 세 자리는 서명 식별기호, 마지막 한자리는 확인용으로 쓰인다고 한다. 이와 유사한 코드로 ISSN을 꼽을 수 있는데 이는 연속적인 간행물, 잡지같은 서적을 관리하기 위해 만들어졌다.

백문이 불여일견
뭐 이번에는 그럭 저럭 볼만한 것 같다. 하이픈(-)을 기준으로 서적을 제조한 나라, 서적을 출판한 출판사, 그리고 서명, 마지막으로 오류가 있나 없나를 검사함으로서 본 코드에는 오류가없음(1)을 표시하는 것을 알 수 있다.

5. QR코드
이 코드는 요즘 광고에서 심심치 않게 볼 수 있다. 다른 코드들과는 색다르게 2차원 코드로서 일반적인 바코드는 양방향이라 할지라도 세로 방향으로만 정보를 저장할 수 있지만 이 코드는 가로와 세로에 모두 정보를 저장할 수 있기 때문에 훨씬 더 많은 정보를 저장할 수 있다고 한다. 하지만 이 QR코드는 치명적인 단점을 가지고 있는데 바로 호환성이다. 단순한 URL을 닮고 있는 QR코드라면 문제가 없지만 명함에 대한 정보를 지니고 있는 QR코드라면 코드 생성기와 리더기 사이에 호환성 문제가 생긴다. 특정 생성기로 만든 QR코드는 특정 리더기에서만 읽힌다는 이야기다. 하지만 이 코드는 누구나 간단하게 만들 수 있고 스마트폰의 보급이 늘어남에 따라 잠재적인 가능성이 풍부하기 때문에 당분간은 꾸준히 사용될 것으로 보인다.

백문이 불여일견


이 외에도 유명한 수많은 코드들(EAN, KAN 등등)이 있지만 필자는 그냥 흥미 있는 몇몇개만 조사했을뿐...

 그 이상에 대한 정보는 http://stewardess.inhatc.ac.kr/philoint/culture/barcode.htm에서 참고해 주길 바란다.

그리고 위에서 생성된 코드는 http://www.freedownloadscenter.com/Business/Inventory_Systems/Bytescout_BarCode_Generator_Download.html에서 다운 받은 바코드 생성기를 통해서 만든것이다.

2010년 11월 21일 일요일

윈도우의 구성

며칠전에 컴퓨터를 포맷하고 윈도우를 다시 깔았다.

다시 설치하고보니 상당수의 폴더와 파일들이 사라진 것을 느낄수 있었다.

아마도 윈도우를 구성하는 중요한 파일들만이 기본적으로 설치됐기 때문에 그렇게 보였던 것 같다.



이번단원에서 윈도우와 유닉스의 directory tree를 배운것이 기억났다.

이참에 기본적으로 윈도우가 제공하는 파일들과 폴더들을 공부해보는 것도 좋을거같아서 윈

도우의 구성을 찾아보기로 했다.


지금부터 소개할 파일들은 윈도우가 기본적으로 제공하는 것들로서 어느 한개라도 망가지면 시스템이 제대로 동작하지 않는다.

RunDll.exe

탐색기에서 확장자가 exe인 파일을 마우스로 누르면 그와 연결된 프로그램을 수행하게 만든다. 하지만 dll이나 ocx같은 확장자를 가진 파일들은 작동하지 않는다. RunDll.exe나 RunDll32.exe는 메모리에 상주하면서 필요한 때에 16비트 혹은 32비트의 라이브러리 파일을 불러와 수행시킨다.

Rnaapp.exe

'전화접속 네트워킹'과 관련된 파일로서 이를 이용해 인터넷에 접속하면 저절로 메모리에 들어간다.

Kernel32.dll

윈도우와 호환되는 프로그램들은 기본적으로 네모난 창과 이름등의 특징들을 가지고 있는데 이처럼 비슷한 인터페이스를 가질수 있는 이유는 Kemel32.dll덕분이다.

Explorer.exe

운영체제의 뿌리격인 쉘 프로그램으로서, 시작 버튼에 있는 탐색기와 비슷한 역할을 한다. 이 파일은 운영체제의 전체 구조를 관리하기 위해 항상 메모리에 자리잡는다. 때문에 이것을 강제종료 시킬경우 재부팅된다.

Systray.exe

작업 표시줄에 트레이를 두는 파일로서 시스템이 켜질 때 한번 실행된 후에는 딱히 하는일이 없는 프로그램이다.

Mmtask.tsk

동영상이나 mp3파일을 백그라운드로 실행할때 사용된다.

Mstask.exe

윈도우98에 있는 '작업 스케줄러'의 수행 파일로서, '예약된 작업'으로 알려져 있고 트레이에 등록된다.

Internet.exe

트레이에 있는 키보드의 언어를 표시한다.

Msgsrv32.exe

이 파일은 가상 장치 드라이버들, 즉 모니터와 같은 독립됀 부품들을 관리하는 프로그램으로서 부품들끼리 충돌하지 않도록 제어한다.



그 다음으로는 윈도우가 제공하는 기본적인 디렉토리들을 알아보겠다. 크게 나누면 Windows디렉토리와 ProgramFiles디렉토리와 기타 디렉토리로 나눌수 있다.

(파랑색 디렉토리 지우면 큰일 날수도 있다...)

Windows

1.바탕화면

사용자의 바탕화면에 있는 파일이나 폴더들이 들어있는 디렉토리다.

2.시작메뉴

바탕화면의 시작 단추를 눌렀을때 그안에 존재하는 여러가지 메뉴들에 대한 정보를 갖고있는 디렉토리다. 시작메뉴디렉토리에서 알아두면 좋은 것으로서 C:WINDOWS시작메뉴프로그램시작프로그램디렉토리에 프로그램을 넣어두면 윈도우 시작과 동시에 프로그램들을 실행되게 만들수 있다.

3. AllUsers

다양한 사용자들이 있을 경우 사용자별로 다른 바탕화면과 시작메뉴를 가질 수 있다. 이런 경우에 모든 사용자들이 공통적으로 가지고 있는 바탕화면과 시작메뉴가 이 디렉토리에 존재한다.

4.Command

윈도우에서도 도스를 사용할 수 있는데, 이 디렉토리에 도스에서 사용하는 명령어들이 들어있다. fdisk나 format과 같은 명령어들이 여기 있기때문에 실행할 수 있는 것이다. 윈도우를 처음 설치했을때 자동적으로 Command디렉토리가 autoexec.bat안에 path로 설정되는데 path로 설정하지 않는다면 도스의 명령어들을 사용할 수 없기 때문에 조심해야 한다.

5.Cursors

윈도우에서 사용되는 커서들에 대한 정보가 들어있다.

6.Fonts

윈도우에서 사용되는 모든 글꼴에 대한 정보가 들어있다. 또한 사용자가 추가로 설치하는 글꼴에 대한 정보도 모두 이 디렉토리에 저장된다. 이 디렉토리는 설치시부터 숨김의 특징을 갖고 있기 때문에 숨김속성을 해제해야만 볼 수 있다.

7.Help

윈도우에서 사용되는 여러가지 도움말에 대한 정보가 들어있다.

8.Inf

윈도우에서 프로그램들을 설치할 때 사용되는 설치정보파일로서, 각종 프로그램의 설치정보를 보고싶을때는 이 디렉토리안의 Inf파일들을 메모장과같은 파일로 실행해서 볼 수 있다.

9.Media

윈도우에서 사용되는 wav와 mid파일들을 갖고있다. 윈도우에서 기본적으로 제공하는 효과음들은 이 디렉토리안에 있는 파일들을 사용해서 실행된다.

10.SendTo

이 메뉴는 사용자가 원하는 파일을 원하는 곳으로 보낼때 사용된다. 주로 하드디스크나 내문서등의 자주 사용되는 디렉토리가 원하는 곳으로 설정되어있다.

11.System

윈도우의 핵심인 동적 링크 라이브러리와 여러가지 드라이버가 포함된 디렉토리다. 이 안에 있는 파일들을 함부로 지우거나 수정하면 윈도우를 사용할 때 문제가 생길 수 있다. 그러므로 삭제나 수정시 주의를 요해야 한다.

12.Temp

윈도우에서 기본적으로 사용하는 임시 디렉토리로서 실행 프로그램의 압축을 풀거나 프린터로 보내는 파일들이 생성되고 삭제되는 작업을 한다.

ProgeamFiles

1.Accessories

윈도우에서 기본적으로 설치되는 보조 프로그램들, 예를 들어 백업프로그램, 페인트, 사용자 정의 문자 편집기, 워드패드 같은 프로그램들이 들어있다.

2.CHAT

인터넷이 연결되어있을경우 사용할수있는 채팅프로그램을 갖고있다.

3.commonFiles

마이크로소프트 프로그램들에서 공통적으로 사용하는 여러 프로그램들에 대한 공통된 정보가 들어있다. 과거 윈도우의 단점중 하나가 프로그램 설치시 System디렉토리에 수많은 dll파일과 드라이버파일이 생겨서 Windows디렉토리의 크기가 엄청나게 커진다는 것이었는데 이를 방지하기 위해 생겨난 것이 이 디렉토리다.

4.DIRECTX

윈도우에서 그래픽을 사용할때 사용되는 다이렉트x에 대한 정보가 들어있다. 실질적인 드라이버나 dll파일들은 System디렉토리에 존재하고 이 디렉토리에는 다이렉트x의 버전을 표시해준다.

5.FrontPageExpress

인터넷 익스플로러 4.0이상이 윈도우에 설치되 있는 경우 간단한 홈페이지를 만들수 있는 프로그램이 설치된 디렉토리다.

6.Internet Explorer

윈도우에서 인터넷을 사용하기 위한 파일들이 들어있는 디렉토리로서 익스플로러에서 사용되는 플러그 인 프로그램을 설치했을 경우 이 디렉토리에서 수정이나 삭제가 가능하다.

7.MicrosoftNetShow

윈도우에 인터넷 익스플로러가 설치된 경우에 네트워크에서 사용할 수 있는 멀티미디어 파일을 보여주는 프로그램을 갖고있다. 하지만 모든 음성, 동영상파일들을 지원하는게 아니기 때문에 지원하지 않는 파일들은 사용자 스스로가 플러그 인 프로그램을 설치해야 한다.

8.NetMeeting

윈도우에 인터넷 익스플로러가 설치된 경우에 이 디렉토리가 가진 NetMeeting프로그램을 사용해서 마이크로소프트에서 제공하는 특정 서버에 접속해서 여러명의 사용자들과 대화를 나눌수 있다. 이 프로그램도 인터넷 익스플로러4.0이상의 버전에서만 지원된다.

9.OutlookExpress

윈도우에 인터넷 익스플로러나 마이크로소프트 오피스가 설치된 경우에 이 디렉토리 안에 있는 OutlookExpress프로그램을 이용해서 메일을 주고받거나 뉴스 그룹을 검색할 수 있다.

10.UninstallInformation

윈도우에서 프로그램을 제거하는데 필요한 정보들을 갖고있다. 프로그램설치시 설치정보를 기록해 주기 때문에 프로그램을 완벽하게 제거하고 싶을 경우 사용할 수 있다. 이 디렉토리를 함부로 수정할 경우 프로그램의 제거를 제대로 수행할 수 없게 될 수도 있다.

11.WebPublish

윈도우에서 웹 게시 마법사를 실행 할 수 있는 실행파일들을 갖고 있다. 이 파일들은 FrontpageExpress를 사용해서 웹 형식의 파일을 만든 경우에 이를 원하는 서버로 직접 옮겨준다. 다른 웹에디터를 사용해서 만든 웹 형식의 파일도 원하는 서버로 옮겨준다.

기타 중요한 파일들

1.Networks

네트워크 연결시 이름으로 설정된 사이트를 IP주소로 바꿔주는 역할을 한다.

2.Services

FTP나 telnet, www를 사용할 때 사용되는 프로토콜에 대한 정보를 갖고 있다.

3.dosstart.bat

도스창을 열 때 기본적으로 실행되야하는 프로그램들을 갖고 있다. 도스 실행시 실행하고 싶은 프로그램이 있다면 이곳에 명령어추가를 통해 할 수 있다.

4.Ini파일들

각종 프로그램들을 실행할 때 필요한 초기화 정보를 갖고있다. 원래는 윈도우 3.1과 호환을 위해 존재한다고 한다.

5.pwl파일

윈도우 로그인시 사용되는 암호에 대한 정보를 갖고 있다. 이 파일을 해석할 수 있으면 각종 공유 디렉토리나 로그인시 필요한 암호를 알 수 있다.

6.scr파일

화면보호기 실행 파일로 원하는 화면보호기를 실행하기 위해 존재한다.

7.system.dat, user.dat

윈도우의 실행에 가장 중요한 파일인 레지스트리에 대한 정보를 갖고 있다.

출처 - http://psd0622.blog.me/60010884780

2010년 11월 14일 일요일

빌게이츠의 생애와 업적

교재에 컴퓨터에 대해서 관심이 조금이라도 있다면 한번쯤은 들어봤을 이름인 스티브잡스에 대해서 간단하게 언급이 나와있었다. 그래서 이참에 인물의 업적을 알아볼까 했는데(사실 교재에 있는 내용을 읽기가 싫었을지도...) 이미 동기중 한명이 너무나도 조사를 잘해서 다른 사람에 대해서 조사하기로 결심했다.

우리가 대표적으로 알고 있는 운영체제는


MS WINDOWS(Microsoft windows)


MAC(Macintosh)


UNIX


정도로 압축할 수 있다.

그런데 UNIX는 특정 대표적인 개발자를 갖기 보다는 다수의 사람들이 개발에 참여했다는

점때문에 그리고 앞서서 얘기했듯이,

MAC은 동기가 미리 조사를 했기때문에,

MS WINDOWS의 창시자인 빌게이츠의 생애와 업적에 대해서 알아보기로 했다.





우선 빌게이츠의 사전적인 정의(?)를 보면

본명은 윌리엄 헨리 게이츠 3세로서 1955년 10월 28일 미국 시애틀에서 변호사인 아버지와 교사인 어머니 사이에서 태어났다.

게이츠는 시애틀의 명문 사립중고등학교인 레이크사이드에서 13세의 나이로 처음 컴퓨터를 접한다.

이후 17세에 중학교와 고등학교 2년 선배인 폴 앨런과 첫 회사인 'Traf-O-Data'를 설립하고 시내 교통량을 기록·분석하는 소형 컴퓨터를 생산한다.

하버드대학 2학년인 19세의 나이이던 1975년, 학교를 중퇴하고 다시 폴 앨런과 함께 마이크로소프트(MS)사를 설립했다.

빌 게이츠는 개인용 컴퓨터(PC) 성장을 예측하고 첫해 컴퓨터 언어 프로그램인 ‘BASIC’을 개발하였고 포트란 등 후속 프로그램을 출시하였다.

MS사가 세계적인 소프트웨어가 된 계기는 90년대 초반의 그래픽환경을 지원하는 Windows 3.1의 성공에서 시작된 것이다. 이후 Windows 95, 98, 2000, XP 등 컴퓨터 운영체제(OS)를 개발, 시장을 독점하게된다.

이 때문에 빌게이츠는 독점금지법에 휘말리게 되고 패소한다.

여론을 잠재우기 위해 공동창업자인 스티브 발머에게 최고경영자 자리를 물려주고 경영 일선에서 물러난다.




개략적으로 알아본 바는 이렇지만 뭔가 그의 사상이나 철학등을 알기에는 턱없이 부족하다. 그래서 그가 살아온 인생에서 굵직굵직한 모습들을 찾아보며 하나하나 세분화 해보기로했다.



1. 과감한 결단

1973년 빌게이츠는 세계유수의 대학중 하나인 하버드 대학에 입학했다. 그러나 빌은 자신의 길이 컴퓨터쪽인 것을 깨닫고 대학을 포기한후 고등학교 선후배 사이였던 폴 앨런과 함께 회사를 차리고 회사의 이름을 MS라고 명명한후 최초의 업적인 프로그래밍언어 BASIC를 만들게 된다. 솔직히 여기서 그의 부모님이 상당한 재산가에 명망있는 집안이었다는 점을 보면 그가 대학을 중퇴한것이 크게 부각되지 않을 수도 있다. 그러나 지금 우리나라 이과 학생들이 의대를 어떻게 보는가, 문과 학생들이 법대를 어떻게 보는가를 생각해보면 사회적인 지위와 인식을 무시하고 자신만의 길을 이른나이에 선택하는게 얼마나 과감한 결단인지를 파악할 수 있다.



2. 열린 사고관

IBM에서 MS사에게 OS를 만들어 달라고 했을때 이들은 OS를 갖고 있지 않았음에도 불구하고 IBM과 이야기를 나눈 지 이틀 만에 '시애틀 컴퓨터 프로덕트'사가 갖고 있던 Q-DOS를 5만달러에 샀다. 약간 수정한 뒤 이 프로그램을 MS-DOS로 이름 붙여 IBM에 8만달러에 납품했다.  더불어 빌은 IBM이 이 프로그램을 무기한 사용하는 대신 MS가 다른 회사에도 이 프로그램을 팔 수 있다는 조건을 따냈다. 이미 대기업인 IBM에 납품한 프로그램을 마다할 회사는 없었고, 소프트웨어를 줌으로서 그 이상의 가치를 창출해내는 것은 현재 일상적인 마케팅이 됐지만 그 당시에는 획기적인 기법이었다. 물론 그가 천재적인 프로그래머가 아니었다는 건 분명하다. 하지만 독자적인 사업수완으로 대기업인 IBM을 능가할 정도로 자회사를 키운 그의 수단은 분명히 열린 사고관을 통해 형성된 것으로서 충분히 높은 값어치를 지니고 있다고 생각한다.



3. 넓은 시야

빌게이츠는 처음부터 모든 책상에 개인용 컴퓨터(PC)를 놓겠다고 했었고, 이를 이루기 위한 문제점은 프로그램의 호환성 이었다. 예를 들어 IBM사와 DEC사가 만든 PC에는 서로 다른 OS가 사용돼 사용자들이 응용프로그램을 위해 상당한 비용을 부담해야 되는 것이 문제였다. 그는 IBM을 기반으로 보폭을 넓혀 나갔고, 결국 보편적인 OS가 윈도로 통일되자 PC 보급이 폭발적으로 늘었다. MS는 독점과 관련해 비난을 받을 때마다 “OS 운용체계가 표준화된 덕에 이용자들은 호환 문제를 걱정할 필요 없이 저렴한 가격에 PC를 사용할 수 있게 됐다”고 반박하는 근거가 여기에 있다.이외에도 자사의 제품에 Internet Explorer을 무료로 지원하여 PC의 지원외에도 보다 많은 사람들이 인터넷을 이용할수 있게 만든 것도 어떻게 보면 독점문제로 왈가왈부되며 상당수의 사람들이 그를 싫어하는 원인이 되게 만들었지만 그의 넓은 시야로 보다 많은 사람들이 컴퓨터세상을 알수 있게 만들었다는 점을 보면 그의 업적은 독점 및 다른 문제들을 상쇄하고도 남는 업적이었다고 생각된다.

출처 네이버도서 및 네이버 백과사전

2010년 10월 31일 일요일

pep/8에 대한 고찰

수업시간에 조는건 정말로 멍청한 일이란걸 깨달았다. 특히나 6단원을 배울때 그런건 더 심했다는 생각이 든다. 과제하는데 정말 오랜시간이 흘렀다. 내가 일을 천천히 느리게 한 이유도 있지만 아무래도 학교에서 제대로 듣지를 않으니 더 걸린게 아닐까? 결론은 반성하자는거다.

거두절미하고 이번 과제를 파악하기 위해 생소한 assembly코드보다는 C로 구현화한다음에 다시 assembly코드로 구현화 하겠다.

C
#include<stdio.h>

void main(){
int a, b, c;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);

if(a-b > 0 && a-c >0){
   if(b-c > 0)
        printf("a>b>c");
   else
        printf("a>c>b");}

else if(b-c > 0 && b-a>0){
   if(a-c > 0)
        printf("b>a>c");
   else
        printf("b>c>a");}

else if(c-a>0 && c-b>0){
   if(a-b>0)
        printf("c>a>b");
   else
        printf("c>b>a");}
}

이것을 이제 assembly코드로 옮겨야하는데 그러기 위해서 C의 함수들을 하나하나 assembly코드로 옮겨보겠다

우선

printf = CHARO
scanf = DECI
int = .BLOCK
if & else if = BR & BRLT

이제 앞의 C코드를 assembly코드로 바꿔보자

BR main

save : .WORD 0
a: .BLOCK 2
b: .BLOCK 2
c: .BLOCK 2

main : DECI a,d
DECI b,d
DECI c,d
BR caseab
caseab: LDA save,d; a>b면 a>c를 조사하고 b>a면 b>c를 조사한다
ADDA a,d
SUBA b,d
BRLT caseba
BR caseac
caseba: LDA save,d; b>a이므로 b>c와 a>c를 조사한다.
ADDA b,d
SUBA c,d
BRLT printcba
BR casebca
printcba : DECO c,d;cba인쇄
DECO b,d
DECO a,d
BR finish
casebca LDA save,d;b>a, b>c이므로 a>c를 조사한다.
ADDA a,d
SUBA c,d
BRLT printbca
BR printbac
printbca : DECO b,d;bca인쇄
DECO c,d
DECO a,d
BR finish
printbac : DECO b,d;bac인쇄
DECO a,d
DECO c,d
BR finish
caseac : LDA save,d;a>b이므로 a>c이면 b>c, c>a면 프린트한다.
ADDA a,d
SUBA c,d
BRLT printcab
BR caseacb
printcab : DECO c,d;cab인쇄
DECO a,d
DECO b,d
BR finish
caseacb : LDA save,d;a>b, a>c이므로 b>c를 알아본후 결과를 출력한다.
ADDA b,d
SUBA c,d
BRLT printacb
BR printabc
printacb : DECO a,d;acb인쇄
DECO c,d
DECO b,d
BR finish
printabc : DECO a,d;abc인쇄
DECO b,d
DECO c,d
BR finish
finish : .END

이정도로 짤 수 있겠다

이제 결과물을 보도록 하자 고고싕


..........................뭐지 저 오류는?.........













뭔가 했더니 띄어쓰기 오류였다

case~
print~

옆에 콜론(:) 이 한칸 떨어져서 씌여있었기 때문에 오류가 떳던 것이다... 수정을 해본 결과 두둥!















우와 성공!

뭐 자바처럼 대소문자 구분을 안한다는건 마음에 들지만 C처럼 아예 공백(enter제외)와 대소문자 둘다 구분 안한다면 편할거같긴 하지만... 그래도 나름 한가지의 컴퓨터 언어를 더 배웠다는게 즐거운 과제였다 ㅎㅎ

ps.

만약에 4개 이상의 수들을 내림차순으로 정렬하려면 어떻게 해야할까? 3개였을 경우에는

3!(factorial) = 3 *2 * 1 = 6

6개의 경우가 생겻으니까 n개의 수들을 나열하려면

n!(factorial) = n * (n-1) * (n-2) * ... * 1

의 경우의 수만큼을 분기해서 print구문을 써줘야 할것이다.

상상만해도 끔찍하다 이를 위해서 생각해본것이 C와 자바에서는 recursion과 loop를 사용하는건데 이번과제의 툴인 pep/8에서는 이러한 기능들이 없기 때문에 일일히 분기점을 써야만한다고 생각된다.

2010년 10월 24일 일요일

컴퓨터 견적내보기!!!

공부를 안하고 보는 시험은 역시 힘들었다. 흑흑 내 블로그에 있는 거라도 자세하게 읽고 갔더라면 허프만 코드는 맞출수 있었을 텐데 ㅠㅠ 아 진짜 폭풍 후회막급이다...

뭐 중간고사 망하면 기말고사 잘보면 된다는 금쪽같은 명언이 있으니까 이 우울함을 뒤로하고 절대 살수 없을 법한 슈퍼 컴퓨터를 혼자서 미친듯이 조립해보면서 쾌감을 느껴보아야겠다. 이 컴퓨터의 목적은 삭막한 내방을 풍요롭게 꾸며줄 복합기기로서 티비, 영화관람 및 라디오, 오디오 등등으로 사용할 수 있을 정도로 럭셔리한 가전제품인 것이다. 그렇기 때문에 일반 고사양 컴퓨터의 시가가 120~160만원 선인대 비해 내가 살 컴퓨터이면서 컴퓨터가 아닌 복합기기는 340만원에 이른다. 자 하나하나 깨알같은 부품들을 살펴보자.









우선 메인보드를 소개하겠다

인텔 DH55TC Media

이 메인보드를 택한 이유는 일단 내가 선택한 CPU가 I7인데 이 메인보드가 I7의 성능을 최대한으로 끌어올려줄 수 있기 때문이다. 물론 SATA3을 지원안하고 SATA2를 지원하는 점과 CPU의 오버클럭을 지원 안 한다는점은 아쉽기는 하나 다른 부품들의 스펙이 그것을 상쇄시키고도 남기 때문에 굳이 오버클럭을 지원하는 더 비싼 제품을 선택하지는 않았다. 물론 메모리도 DDR3이라는 것도 장점이라면 장점으로 생각할 수 있겠지만 요즘 대부분의 메인보드가 지원하는 점이므로 굳이 부각하지는 않겠다. 그리고 참고로 메인보드가 내 컴퓨터의 구성요소중 가장 스펙이 딸린다는 것을 언급하고 넘어가겠다.

두번쨰로 내가 고른 CPU는

인텔 코어 i7 950 (블룸필드)다

이 CPU는 현존 최강의 제품으로 봐도 무색하다 그 근거로 아래의 표를 들 수 있다.

아 물론...950위에도 제품들은 존재하나 이것들의 가격은 70만원을 넘어갈 뿐더러 이것보다 더 고퀄리티인 인텔 제온 시리즈들은 100만원을 웃돈다... 아무리 복합기기지만 무조건 럭셔리한것 만을 추구하기보다는 비교적 가격대실용비(이하 가실비)를 고려해서 제품들은 엄선했다. 굳이 I7을 선택한 이유를 대자면 하이퍼스레딩(스레드를 2배로 만드는 기술 간단하게 말하면 처리속도가 훨씬 빨라진다고 보면된다.), I7 650의 듀얼 채널을 능가하는 트리플채널과 보다 더 많은 L3캐시메모리를 꼽을 수 있겠다. 이정도 스펙의 CPU면 현존하는 모든 게임을 돌려도 무리없이 돌아갈 뿐만 아니라 각종 전문그래픽 작업등을 하는데도 무리가 없다.

세번째로 소개할 부품은 메모리카드다.

G.SKILL DDR3 4G PC3-16000 CL7 PIS (2Gx2)

굳이 4ghz를 지원하는 제품들의 일반적인 가격대가 10만원대인데 굳이 비싼 이 제품을 선택한 이유를 꼽자면 오버클럭메모리 때문이다. 오버클럭메모리는 기본적인 클럭을 높여줄 뿐만 아니라 레이턴시를 줄여주고 일반 메모리카드에 비해 발열량도 낮아 저온도를 유지 할 수 있을 뿐더러 호환성에도 무리가 없고 제품 보증기간도 1,2년이 아니라 라이프타임 워런티였기 때문에 이 제품을 선택했다.

네번째로 소개할 부품은 그래픽카드다.

EVGA 지포스 GTX480 SuperClocked+ 백플라이트 D5 1.5GB 이엠텍


...솔직히 일반적인 그래픽카드 GT시리즈와 라데온 시리즈에 비해 가격대가 높은건 알고있다. 하지만 게임을 할때, 동영상을 볼때... 내가 지금 컴퓨터를 이용해서 자주 하고 있는 작업들을 할때 가장 중요한게 무엇일까...바로 그래픽 카드다! 그래서 70만원대의 초 오버스펙의 그래픽 카드를 꼽았다. 다른 그래픽카드들과의 성능차이를 아래의 표를 보면 더욱 실감할 수 있을 것이다.
여기서는 GTX200시리즈 들만이 나왔기 때문에 라데온보다 스펙이 안좋아 보이는 것 같지만 GTX480대는 성능으로 따지면 GTX260과 클럭양만 비교해봐도 1.5배를 웃돈다... 이정도면 말이 필요가없다.

다섯번째로 소개할 부품은 하드디스크다.

Hitachi 2TB Deskstar 7K2000 (SATA2/7200/32M)

뭐 이쪽은 따로 설명할 필요없이 RPM과 용량만 보면 대강의 성능을 알수 있다. 용량은 2TB이고 RPM도 10000까지는 아니지만 7200정도로 무난하다. SATA3을 지원하는 것들은 RPM10000의 괴물급도 많았지만 내 메인보드가 지원할 수 없기 때문에 포기하고 용량은 동일스펙이면서 RPM이 조금 떨어지는 이 제품을 선택했다. 또한 전송률이 타제품에 비해서 212MB/S로 크다는 사실도 한 몫했다.

마지막으로 소개할 부품은 ODD이다.

삼성전자 블루레이 콤보 SH-B083L (정품박스)

뭐 사실 요즘 DVD를 굽는 일도 흔치않고(나한테는) CD게임들도 대부분 인터넷에서 받아서 하는터라 필요한 부품은 아니지만 유사시를 대비해 골랐다. 사실 동일스펙의 타 제품들이 8만원대인데 비해 이건 11만원으로 꽤 비싼데 그 이유는... LightScribe기능 때문이다. 이 기능이 뭐냐하면... 그냥 시디를 구울때 그 디자인을 사용자가 직접 만들어서 씌울수 있다는 것이다...그래 그냥 뽀대나 보여서 이 기능 있는걸 선택했다...

이외에도 게임을 위한 G1로지텍마우스와 밤에도 자판을 잘 볼수 있게 만들어주는 백라이트 기능을 가진 키보드 디지털티비기능과 30형이라는 어마어마한 스펙을 가진 모니터, 영화 및 애니메이션을 보다 생생하게 즐길 수 있게 만들어주는 5.1채널 스피커등등...사치품이 있으나 주요부품은 아니므로 패스하도록 하겠다.

2010년 10월 5일 화요일

Gates and Circuits 중 어려웠던 것 알아보기!

교수님계 죄송하긴 하지만 솔직히 이번단원은 들으면서 정말 수박 겉핥기 정도로 밖에 이해가 가지 않았다. 뭐 내가 머리가 좋은게 아니니까 굳이 죄송할 필요는 없을거 같다.(자기합리화) 잡소리는 생략하고 이번 단원을 공부하면서 특히 이해가 안갔던 것을 꼽으라면... 아 원래 이해가 안가는 것은 많았지만... 그래도 Adders 부분이 어려웠다. 시험도 2주밖에 안남았고 슬슬 공부도 해야되니 이번 단원은 나름 미리 시험공부할겸 모르는 것을 중점적으로 알아보아야겠다.

1. Adders

우선 Adder의 정의 부터 살펴보자면

2개 이상의 수를 입력으로 하여 이들의 합을 출력으로 하는 논리 회로 또는 장치. 덧셈기라고도 한다.

출처 - 네이버백과사전

이렇다고 한다. 나도 고등교육받아서 이런건 알거든요...? 시덥잔은 정의를 알아보았으니 교재에 나온 Adder의 두 종류중 첫번째인 half-adder에 대해서 알아보겠다.

우선 half-adder은 우리말로 반가산기로서 2개의 이진수 입력값과 1개의 이진수 출력값을 갖는 계산기이다. 다시말하자면 입력값으로 0 또는 1의 수 두개를 받아 그 수들의 합을 한개의 이진수로 나타낸다는 것이다. 이것은 AND(2가지 이상의 전기 신호를 입력받아 모든 입력값에 전기 신호가 들어오면 참(1), 만약 아니라면 거짓(0)을 출력하는 논리회로) ,  XOR(2가지 이상의 전기 신호를 입력받아 모든 입력값에 전기 신호가 들어오거나 들어오지 않는다면 거짓(0), 들어온다면 참(1)을 출력하는 논리회로)  두가지의 논리회로를 이욯해서 만들어진다. 우선 글로만 보면 이해하기가 힘드므로 교재에 있는 논리회로를 인터넷에서 찾아보았다.
(S와 연결된 회로가 XOR회로이고 C와 연결된 회로      는 AND회로이다.)

이 회로를 보자면 A, B는 각각 입력값을 의미하고 S, C는 출력값을 의미한다. 잠깐, 아까 반가산기는 출력값이 하나라고 했는데 왜 그림에서는 2개일까? 다음의 A,B값이 들어옴에 따라 회로들에 의해 출력값이 정해지는 모든 경우를 표로 표현한 것을 보면 그 이유를 알 수가 있다.
A + B = C, S (C는 이진수의 일제곱의 자리 S는 이진수의 영제곱의 자리를 의미한다)
0 +  0  = 0, 0
0 +  1  = 0, 1
1 +  0  = 0, 1
1 +  1  = 1, 0 

만약 논리회로를 조금만 봤더라도 충분히 이해할 수 있는 내용이다. 표를 보면 앞서 말한 것처럼 실재로 A, B의 덧셈의 결과가 C, S를 통해 하나의 출력값으로 표현되는 것을 알 수 있다. 하지만 입력값이 2개 이상이 되면 어떨까? 그런 경우에는 이런 입력값을 2개만 가지는 회로로는 계산을 할 수가 없을 것이다. 그 때문에 생긴 회로가 full-adder이다. 이 회로는 다수의 half-adder를 사용해서 만든 회로로서 입력값이 2개 이상인 경우에도 덧셈을 해서 결과값을 출력할 수 있다. 이번에도 보다 쉽게 이해하기 위해 그림을 찾아보았다. 하지만 반가산기처럼 논리회로를 따라가는게 쉽지 많은 않았다. 그 이유는 아래의 그림을 보면 된다.

아까처럼 만만하지 않다는걸 새삼 다시 느낄수가 있다. 하지만 논리회로 하나하나를 천천히 지나면 결과값을 구하는게 그렇게까지 어려운일은 아님을 알 수 있다. 이 회로 의 X, Y, Z 값은 각각 입력값을 의미하고 S, C는 출력값을 의미한다. 조사를 하면서 한가지 흥미로운 사실을 알게 됬는데, 난 교재에 있는 회로(위의 그림과 같다.)를 X, Y, Z의 입력값들이 다 더해져서 덧셈이 2번 계산되는 줄 알았다. 하지만 Z는 만약 십의 자리 수들의 덧셈일 경우 일의 자리에서 십의 자리에 관여할 수 가 있기 때문에 생기는 입력값이라는 것이다. 가령 예를들어 17 + 13의 경우 십의 자리 숫자끼리만 더한다면 20이지만 일의 자리가 10이 되어 십의 자리에 관여할 수 있다는 말이다. 요약하자면 Z는 X, Y보다 한자리 낮은 숫자에서 올라오는 값이 있는가 없는가에 대한얘기다. 있으면 Z의 입력값은 1, 없다면 0이 된다.  이를 이용해서 표를 만들어보면

X + Y + Z = S, C (S는 이진수의 2의 제곱의 자리 C는 2의 세제곱의 자리를 의미한다.)
0  + 0 + 0  = 0, 0
0  + 0 + 1  = 1, 0
0  + 1 + 0  = 1, 0
0  + 1 + 1  = 0, 1
1  + 0 + 0  = 1, 0
1  + 0 + 1  = 0, 1
1  + 1 + 0  = 0, 1
1  + 1 + 1  = 1, 1

후 시간을 투자해서 다시 보니 이해를 못할정도로 어렵지는 않았다. 이 기세를 몰아 뒷부분의 헷갈리는 부분도 다시 집고 넘어가야겠다.

2010년 10월 4일 월요일

인코딩(Encoding)이란 무엇일까?

인코딩... 왠지 생소하지많은 않은 단어다. 이번단원에서는 컴퓨터를 하면서 한 두 번 쯤은 들어보았던 지식들이지만 관심을 갖고 직접적으로 찾아보지 않고 그냥 호기심채로 묻어둔 것들에 대한 것이 많았다. 가령 매번 동영상재생프로그램을 사용할때 가끔씩 발생하는 코댁을 찾지 못했다는 오류를 보면서도 그냥 네x버 지식인을 대강 훑어 보면서 순간순간을 모면하는 그런 상황...? 모든 궁금한 것을 찾아보면 좋겠지만 그러자면 글이 너무 길어 질수도 있으니까...(사실 내가 귀찮아...) 그 중에서도 유난히 관심있던 인코딩에 대해서 알아보기로 하겠다.

일단 인코딩의 정의부터 알아보자면

인코딩(encoding)은 다음을 가리키는 말이다.
  • 문자 인코딩(文字-, 영어: character encoding)은 문자들의 집합을 부호화하는 방법이다.
  • 부호화(符號化, 영어: encoding)는 정보의 형태나 형식을 변환하는 처리나 처리 방식이다.
 출처 - http://ko.wikipedia.org/wiki/%EC%9D%B8%EC%BD%94%EB%94%A9

아... 인코딩이라는게 문자 인코딩 + 부호화인데 거두절미하면 문자들의 정보의 형태나 형식을 변환하는 처리나 처리방식 이라는 거구나. 근대 왜 항상 정의만 보면 머릿속으로 뭔가 와닿지를 않을까? 그런의미에서 예시를 살펴보면서 보다 정확하게 인코딩에 대해 알아보아야겠다.


Huffman Code

우선 Huffman Code(이하 HC)는 정보의 손실없이 전체 데이터의 양을 줄여서 정보처리의 효율성을 올리려는 방법이다. 개념은 가장 많이 사용되는 바이트를 적은비트에 할당하고, 가장 적게 사용되는 바이트를 더 많은 비트로 할당하는 것이라고한다. 그렇기 때문에 더 많은 바이트에서는 더 적은 비트를 사용하게 되고 더 적은 바이트에서는 더 적은 비트를 사용하게 된다. 무슨 말인지 잘 모르겠으므로 조금 더 세부적인 내용을 살펴보자면 지난 일정한 기간동안 사용된 데이터의 유형을 분석해서 데이터의 사용빈도를 자료로 사용해서

-사용하고있는 데이터 중 사용될 확률이 가장 낮은 두 데이터를 선택
-선택한 두 데이터의 끝 비트를 0과 1로 설정
-선택한 두 데이트를 하나의 복한적인 데이터로 하고 이 복한적인 데이터의 출현확률은 두 데이터의 확률의 합이다.
-위의 과정들을 반복해서 하나의 복합데이터가 만들어지면 종료한다.
-위 과정을 이진수로 구성하고 상위노드에서 하위노드로 부모노드의 코드를 자식노드에 상속한다.


여기까지는 찾아본 정보를 내 나름대로 재해석 한것이다. 하지만... 이 그림은 출처의 주인장님이 복사를 안돼게 하셨다... 그러므로 실제로 사용된 그림예시는 출처를 통해서 참조해 주기를 바란다. 출처 - http://blog.naver.com/nikismy?Redirect=Log&logNo=49171821

위의 출처의 정보로 끝내기에는 아직 실재로 문자열을 보고 HC로 바꾸기가 어려웠기 때문에 다른 자료를 찾아보기로 했다. 정의나 뭐 개념들도 중요하지만 실제 문제로 나오거나 실생활에서 스스로 적용할 수 없다면 헛수고 아닌가... 그래서 본인 스스로가 조금 더 이해하기 쉬운 난이도가 낮은 문제와 해설을 찾았다.

문제 : ABBAACD를 허프만 코드를 이용해 바꿔보자!

해설

앞어 얘기한 것처럼 허프만코드는 일단 문자가 쓰인 빈도를 통계자료로서 사용 해야 되기 때문에 각 문자가 쓰인 빈도를 알아보아야 한다.

빈도수

A
 B
 C
 D
 빈도수
 3
  2
 1
 1

우선 빈도수가 가장적은것끼리 묶는다.



그 다음 빈도수가 제일 적은것 끼리 또 묶어준다.



이 작업을 계속 반복해준다.


이렇게 허프만 트리를 만듦으로서 보다 이해하기 쉬운 허프만 테이블을 만들 수 있다.

 데이터
 코드
 길이
 A
 01
 2
 B
 001
 3
 C
 0001
 4
 D
 0010
 4

그래서 정답은 ? 01001001010100010010

와하하하하 이제이해가 조금간다...나중에 시험준비할때 이거보고 공부해야지ㅋㅋ
 

2010년 9월 26일 일요일

평소에 사용법도 몰랐던 주판을 알아보자.

인류역사를 바꾼 101가지 발명품, 1위는 주판 ???

이미지를 클릭하시면 원본크기로 보실수 있습니다.
인류의 역사는 발명의 역사라고 할 수 있다. 인류와 함께 한 무수한 발명품 중에서 어떤 것이 가장 가치 있는 발명일까 

영국 일간지 인디펜던트는 3 '세계를 바꾼 101가지 발명품'을 선정해 발표했다.
신문은 260만 년 전에 발명된 도구(tool·88)로부터 2001년에 발명된 아이팟(41)까지 다양한 역사 속의 발명품들을 선정했다.

이 중 170년 중국에서 나온 주판이 인류에게 가장 큰 기여를 한 발명품으로 선정됐다.
출처 : http://blog.paran.com/copyi/23089625

헐 많고 많은 물건중에 주판이 인류에게 가장 큰 기여라니...
솔직히 내가 어렷을적만 해도 계산기를 사용하던 세대라서 그런지 주판의 겉모습만 대충만 알지 사용법도 모르는 사람이 우리세대에는 다수 있을거라 생각된다. 어떤 사람들이 인디펜던트지의 조사에 참여 했는지는 모르지만 요즘 추세를 보면 대부분 컴퓨터나 다른 도구를 1위로 선정할거 같은데 솔직히 의외의 결과다.


주판의 유래?

주판은 영어로 에버커스(Abaucs)라고 불리워지며, 이는 페니키아 어의 'Abak'에서 유래된 것으로 '돌,재목 등을 잘라서 만든 두꺼운 평판(평평한 널빤지)'을 의미한다.

아...어쩐지 접두사같은걸로 알수가 없더라...교재에서 abacus를 보고 나름 이것저것 단어들을 연상해보았지만 알수없던 이유가 페니키아 어 였구나...그렇다면 주판은 페니키아에서 만들어진 것일까? 주판이 어느나라에서 언제 만들어 졌는지를 찾아보자.

 주판은 기원전 3000년경 바빌로니아인에 의해 발명되었다. 최초의 주판은 평판 위에 뿌려 놓은 모래 위에 선을 그은 다음, 그어진 선위에 작은 돌멩이를 늘어놓은 모양이었다.

출처 : 네이버 백과사전

오 그러면 주판은 바빌로니아인에 의해 만들어진 것일까? 아마도 네이버느님은 국민포탈이니까 맞겠지. 엥 근대 의외로 여러가지의 가설들을 찾아볼 수 있었다.

이집트 사람이 발명한 계산기로서 '주판'이 있다. 이것을 '아바커스(abacus)`라 부른다. 아마 주판이라고 하면 곧 오늘날 우리가 보통 쓰고 있는 것이 머리에 떠오를 테지만 이집트의 아바커스는 오늘날의 것과는 조금 달랐다.

출처 : 네이버 지식인

주판은 사실 중국에서 발명된것이라고 주장(?)하는 블로그의 글을 검색해 보았다. 쓰여진 말도 그렇고 다른 검색자료에선 보기 힘들었던 나름 주판의 변화과정도 담고있는걸 보니 은근히 그럴듯해 보인다.
링크( http://cafe.naver.com/qingdaotourguide/360)

결론은 그럼 적어도 3나라중 한나라에서 만들어 졌다는거네...근대 검색자료의 양을 보면 바빌로니아인들이 만들었다는 가설에 한표를 얹어주고 싶다.

주판의 사용법?

 오늘날의 주판은 한 줄에 알이 5개가 있고, 윗칸의 1개는 5개를 나타내는 것이어서, 5일 때는 윗칸의 알을 내리고, 10이 되면 왼쪽 옆줄의 아랫칸 알을 하나 올리는 식이지만 아바커스에는 알이 한 줄에 9개가 있어 왼쪽 1에서 9까지는 이것으로 세고, 10이 되면 옆줄로 옮아가며, 또 99에서 100으로 될 때에는 왼쪽으로 세번째 줄의 알을 하나씩 올리는 것이다.

출처 : 네이버 지식인

그림도 없이 알수 없는 지식인의 설명을 읽던 도중 상당히 주판에 대해 깨알같은 블로그를 카페를 발견했다. 아아....아마도 지식인과 블로그에 뜨문뜨문있던 주판에 대한 정보들은 이 블로그를 모태로 삼아서 나온것들이 아닌가 싶다. 안타까운건 카페운영자느님이 우클릭을 못하게 막아놓으셔서 각 나라의 주판의 이미지를 퍼올수가 없었다는 것이다...물론 본문도 우클릭이 안되게 막혀있어서 중요한 것들만 적어보고 만약 사용법을 진지하게 그림을 보면서 배워보고 싶다면 아래의 링크를 클릭해서 보길 바란다.
출처 : http://cafe.naver.com/gbmlove/396<- 킹왕짱

우리나라는 약 1400년경에 중국에서 주판을 들여왔다. 한국은 일본과 같이 윗알이 1개, 아래알이 4개인 주판을 사용하고 있으며, 과거 제 6차 교욱과정까지 초등학교 수학과에서 주판이 포함되어 있었으나 제 7차 교육과정에서는 주산이 삭제되었다...엥 이건 사용법이 아닌데...그래서 친절한 지식인님의 설명을 보고 나름 이해를 해보았다.

우선 윗알 한개는 그 자릿수의 5를 의미한다. 만약 위알을 내린다면 그 자리수의 5만큼을 의미한다고 보면 된다. 아랫알들은 그 자릿수의 1을 의미하는 것으로 예를 들어 1의 자리의 아랫알 3개를 위로 올리면 그것은 3을 의미한다. 여기다가 앞서 얘기한 윗알(1의 자리)을 내린다면 8을 의미하게 되는 것이다. 딱히 어렵지는 않다 그리고 약 중간쯤에 위치한 칸막이 주변에 검은 점이있는 줄을 1의자리로 사용한다.

한번 머릿속으로 해봤는데 딱히 어렵지는 않다. 만약 전자 계산기가 없던 과거였다면 정말 획기적인 발명품일 수 밖에 없었을 거라는 생각이 들었다.

2010년 9월 14일 화요일

윈도우의 발전과정

챕터1은 컴퓨터의 발전 과정을 설명하는 단원이므로 단원에 나온 인물이나 특정한 사물보다는 평소에 스스로가 궁금해 했던 윈도우의 발전 과정에 대해서 조사해 보기로 했다. 윈도우의 역사는 컴퓨터의 발전과정과 일맥상통한다고 생각했기 때문이다.

윈도우 1.0 - 시작을 위한 포석
윈도우의 시작은 1985년 11월 20일에 출시된 1.0버전부터 시작된다.
윈도우 1.0은 한 번에 여러 개의 작업을 한 화면에서 할 수 있었다. 예를들어 메모장, 계산기, 시계등의 기능이 제공되었다. 이 버전은 윈도우의 가능성을 보여줬다는 데 의의를 둘 수 있다.

윈도우 3.1 - 사용자 인터페이스 및 멀티태스킹을 강화
특징:윈도우를 보다 쉽게 설치할 수 있게 도와주는 Setup프로그램을 제공하고, 프로그램 관리자가 추가되었으며, 스풀(컴퓨터의 중앙 처리 장치(CPU)와 주변 장치 사이에서 데이터를 주고받을 때, 고속의 보조 기억 장치를 버퍼 기억 장치(buffer memory)로 사용함으로써 저속의 주변 장치의 처리를 기다리지 않고 지체 없이 프로그램의 처리를 계속하는 기술)을 지원하여 많은 양의 프린트 작업을 효율적으로 할 수 있게 되었다. 또한 MS-DOS용 프로그램의 작동을 보다 원활하게 할 수 있게 만들었으며, 연속확정메모리와 가상 메모리를 지원하여 메모리 부족현상을 개선하고 멀티태스킹을 강화했다.

윈도우 95 - 윈도우 UI (User Interface)디자인의 대대적인 쇄신
특징:플러그 앤 플레이를 지원하기 시작했다. 또한 선점형 멀티태스킹을 지원하고, MS-DOS와 WINDOWS의 통합 및 TCP/IP및 전화접속 네트워킹 지원, CD-ROM의 Autorun지원, 그리고 발전된 멀티미디어 기능을 예로 들 수 있다. 윈도우 95는 초보자도 보다 쉽게 사용할 수 있게 개발되어 이후의 윈도우들도 이를 기본틀로 삼게 된다.

윈도우 98 - 인터넷과의 통합
특징:윈도우 탐색기와 인터넷 익스플로러 4.0을 일체화함으로서 인터넷에 보다 빠르게 접근할 수 있게되었고, 아웃룩익스프레스기능을 제공하게되었다. 인터넷 익스플로러 4.0을 탑재하는등 부가기능이 많아져 속도가 느려졌다는 지적을 많이 받았으나 윈도우 2000이 나오기 이전까지 많은 문제를 개선, 보다 좋은 버전이 나오게 되었다.

윈도우 2000 - 높은 완성도를 자랑하는 운영체제
특징:시스템 파일에 대한 덮어쓰기를 방지하는 윈도우 파일 보호를 제공하고, DirextX를 포함함으로서 게임 및 멀티미디어적인 부분에서 기능이 향상되었고, 다중 CPU를 지원할수 있게 되었다. 현재에도 높은 안정성과 빠른속도 덕분에 애용되고 있다. 특히 기업의 업무용으로 많이 쓰인다.

윈도우 ME - 가정용 운영체제
특징:윈도우의 기본기능으로 윈도우 무비메이커, 윈도우 미디어 플레이어 7을 내장함으로서 미디어 편집기능을 제공한다. 또한 인터넷 하트, 스파이더 카드놀이 등 몇가지 새로운 게임이 나오게 된 버전이며, 시스템의 상태를 기록하고 복구할 수 있는 시스템 복원도구를 처음으로 선보였다.

윈도우 XP - 모든 운영체제의 집합체
특징:시스템 최대 절전모드를 제공하고, 자체 CD-R/RW 레코딩 기능, 드라이버 롤백, 빠른 사용자 전환 및 원격 데스크톱 기능을 제공한다. 또한 무선 네크워크 연결을 지원하며 인터넷 익스플로러6.0과 동시에 방화벽 기능을 제공한다. 윈도우 XP는 보안, 신뢰성에 더하여 사용하기 쉬운 인터페이스를 통합한 이전까지의 모든 윈도우 운영 체제들의 집합체라고 볼 수 있다.

그 이후 버전들로는 윈도우 비스타 및 윈도우 7을 예를 들 수 있으나, 비스타는 윈도우 Xp에서 구동되던 프로그램들과의 호환성 문제 때문에 실용화되지는 못했고, 윈도우7은 비스타를 더 향상시킨 버전이지만 기존의 Xp의 사용기간 및 편의성 때문에 아직까지 보편적으로는 쓰이지는 못하고 있지만 보안적인 측면에서 본다면 Xp보다 더 높은 기능을 가지고 있다.


연대로 보는 윈도우의 발전 역사
Windows1.0 (1985년) ▶ Windows2.0 (1987년) ▶ Windows3.0  (1990년) ▶ Windows 3.1 (1992년)

Windows 95 (1994년) ▶ Windows 95 OSR1 (1995년) ▶Windows 95 OSR2(1996년) ▶ Windows 98 (1998년) ▶ Windows 98 SE(1999년) ▶ Windows ME (2000년)

Windows XP (2001년) ▶ Windows VISTA (2007년) ▶ Windows 7 (2009년 말)

2010년 9월 3일 금요일

컴퓨터과학개론과제(Due:9/5 12:00am)

1.The Big Picture
첫번째 단원에서는 컴퓨터에 관한 큰 청사진을 배운다. 이 청사진은 우리가 앞으로 책에서 천천히 배워갈 부분을 역사적인 관점에서 분석한 것이다. 또한 여태까지 애매하게 혹은 직관적으로만 알고있던 컴퓨터 전문용어들을 배운다.
관련전공과목 : 컴퓨터교과교육론 등

2.Binary Values and Nimber Systems
두번째 단원에서는 컴퓨터 하드웨어를 표현하고 정보를 다루는 하나의 방법으로 2진법에 관한 내용을 배운다. 또한 모든 숫자 체계 맥락에서 이진법의 가치를 가르쳐준다.
관련전공과목 : C프로그래밍, 컴퓨터프로그래밍 등

3.Data Representation
우리가 저장하고 관리해야하는 정보들은 다뤄지는 정보들의 액기스로서 컴퓨터가 처리하기 편리한 형태로 표현되어야한다. 세번째 단원에서는 우리가 컴퓨터가 다루는 다양한 종류의 정보들을  어떻게 표현하고 저장하는지에 대해 배운다.
관련전공과목 : C프로그래밍, 컴퓨터프로그래밍, 프로그래밍언어론, 패턴인식, 컴퓨터그래픽스 등

4.Gates and Circuits
네번째 단원에서는 컴퓨터과학과 전자공학이 어떻게 어우러지는가와 컴퓨터의 기본적인 하드웨어를 탐구한다. 또한 컴퓨터들이 어떻게 전기적 신호들을 표현하고 그러한 이진수들을 조작하는지에 대해서도 배운다.
관련전공과목 : 컴퓨터논리설계, 계산이론, 컴퓨터구조 등

5.Computing Components
컴퓨터 하드웨어는 마치 레고조각들이 모여서 하나의 개체를 이루는 것처럼 중요한 요소들이 모여서 컴퓨터기술에 기여한다. 다섯번째 단원에서는 이러한 CPU, 메인메모리 등의 컴퓨터의 중요 요소들에 대해 배운다.
관련전공과목 : 컴퓨터구조, 임베디드시스템 등

6.Low-Level Programming Languages and Pseudocode
여섯번째 단원에서는 기계코드와 저수준의 프로그래밍 언어에 대해 배우고, 어셈블리어를 배운후, 수도코드의 개념과 알고리즘을 표현하는 방법에 대해 배운다.
관련전공과목 :  C프로그래밍, 컴퓨터프로그래밍, 알고리즘, 데이터구조및실습 등

7.Problem Solving and Algorithms
지난 단원에서는 기계코드, 어셀블리어, 수도코드 등을 배웟다. 이번 단원에서는 이러한 컴퓨터언어를 사용해서 문제를 해결하는법에 대한 간결한 토론을 배운다.
관련전공과목 : C프로그래밍, 컴퓨터프로그래밍, 알고리즘, 컴퓨터구조, 컴퓨터논리설계 등

8.Abstract Data Types and Subprograms
이번 단원에서는 더 많은 하위프로그램 명령문들에 대해서 배운다. 이런 명령문들은 코드를 만드는데 사용될 뿐만아니라 알고리즘과 하위 알고리즘들을 만드는데도 사용된다.
관련전공과목 : 알고리즘, 컴퓨터논리설계, C프로그래밍, 컴퓨터프로그래밍 등

9.Object-Oriented Design and High-Level Programming Languages
아홉번째 단원에서는 객체중심디자인과 높은 수준의 프로그래밍 언어들에 대해서 배운다. 객체중심디자인이란 디자인처리의 또 다른 방법으로서 프로그램을 컴퓨터로 처리하는 최소단위의 관점이 아니라 정보로서 보는 관점으로 보는것이다.
전공관련과목 : 컴퓨터프로그래밍, 분산객체프로그래밍, 컴파일러 등

10.Operating Systems
열번째 단원에서는 어떻게 오퍼레이팅시스템이 컴퓨터의 자료들을 다루는지에 관해 다룬다. 여기서 오퍼레이팅시스템이란 하드웨어와 소프트웨어를 결합시켜주는 접착체다.
전공관련과목 : 소프트웨어공학, 운영체제설계및개발, 운영체제론 등

11.File Systems and Directories
파일들과 디렉토리들은 컴퓨터의 계산에 중추적인 역할을 한다. 컴퓨터에서 파일시스템은 특정 정보들로 접근하는 길을 제공한다. 디렉토리 구조는 파일들을 카테고리와 하위카테고리들로 조직화한다. 이번 단원에서는 파일 시스템들과 디렉토리의 구조들에 대해 세부적으로 배운다.
전공관련과목 : 컴퓨터구조, 데이터베이스시스템, 데이터베이스응용, 유닉스의 이해와활용 등
12.Inforamtion Systems
이 단원의 목표는 어떻게 응용 시스템들이 작용하는가에 대해 이해하는 것이다. 특히 전반적인 목적의 소프트웨어, 특정한 엑셀따위의 스프레트시트, 데이타베이스 관리시스템등의 정보 시스템들을 주목해서 배울것이다.
전공관력과목 : 데이터베이스시스템, 데이터베이스응용, 소프트웨어공학 등

13.Artificial Intelligence
열세번째 단원에서는 인공지능의 실제 적용에 대해서 배운다.이러한 인공지능은 컴퓨터라는 학문분야의 하위부문이라고 불리며, 문제 해결에 전혀 다른 기술과 새로운 적용을 불러온다.
전공관련과목 : 인공지능

14.Simulation, Graphics, Gaming, and Other Applications
특정한 모델을 이용해서 현상들과 사물들, 그리고 상황들을 표현하는것을 시뮬레이션이라고 한다. 이번 단원에서는 시뮬레이션에 대한 이론과 일기예보에 대한 모델을 포함하는 정확한 예시들을 배운다.
전공관련과목 : 컴퓨터그래픽스, 게임프로그래밍, 패턴인식 등

15.Networks
여러해동안 컴퓨터들은 컴퓨터는 계산뿐만이 아니라 사람들의 의사소통에도 중요한 역할을 하고있다. 이번 단원에서는 그러한 컴퓨터의 네트워크들의 자세한 면을 공부한다.
전공관련과목 : 컴퓨터네트워크 등

16.The World Wide web
WWW(World Wide Web)의 진화는 네트워크상의 의사소통공간을 만들어 냄으로서 컴퓨터를 하기 싫어하는 사람마저도 편리한 도구로서 의사소통을 할수 있게 만들어 주었다. 이번 단원에서는 미래의 기술에 영향을 줄 수 있는 WWW의 몇가지와 웹에 기초한 몇가지 원칙들을 배운다.
전공관련과목 : 컴퓨터네트워크, 이러닝시스템, 정보검색 등

17.Limitations of Computing
마지막 단원에서는 컴퓨터가 할 수 없는, 즉 여태까지의 하드웨어, 소프트웨어 및 다른 문제들로 인해 발생되는 컴퓨터의 한계에 대해서 배운다.
전공관련과목 : 전공의 모든과목들