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

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