자신이 좋아하는것

2010년 10월 28일 목요일

pep/8 으로 프로그램 만들기

세개이상의 임의의 숫자를 입력받아서 그 숫자들을 다시 큰 순서대로 나열하는 프로그램을 제작해보았습니다.

지금 배우고 있는 java 같은 high level language도 버거운 제게 assembly language란...

하여튼 먼저 여러개의 숫자를 받을때 num1, num2, num3 이렇게 미리 값을 받을 공간을
정해놓고 하기보다는 배열을 사용하여서 매번 값을 받을때 조건문을 사용해서 그다음에
배열에 입력받은 값을 넣은 후 값들을 비교하는것이 편리할것이라고 생각해서 아래와
같이 생각했습니다.
  for (int i = 0; i < data.length; i++)
                      {  
                                 for (int j = i+1; j < data.length; j++)
                                 {
                                            if( data[i] < data[j] )
                                            {
                                                       int temp = data[i];
                                                       data[i] = data[j];
                                                       data[j] = temp;
                                            }
                                 }
                      }

이런식으로 크기순으로 나열하면 되겠다고 생각했는데
막상 pep/8으로 만들자하니 너무 막막했습니다.
pep/8를 뒤지다보니 example에 배열과 관련된 부분이 있었지만




이를 응용하는것과 중첩된 조건문들을 만드는것이 예상외로 어려웠는데요.
4개의 숫자를 받아서 대충 만들긴했는데 조건문을 한없이 돌기만하고
output이 나오지 않아서 그냥 3개로 정해진  값을 받아 큰값 순으로 정렬하는
프로그램을 만들었습니다.

if (a > b) {
   temp = a;
   a = b;
   b = temp;
  }
-------------------------------------------------------------------------------



여기서 CHARO  0x020,i  는 숫자들 사이에 스페이스를 한번 출력하라는 뜻입니다.
아래 아스키코드표를 참고했습니다.



위와같이 만든 프로그램이 작동하는 화면입니다.


3개보다 많은 여러 숫자값을 받아 정렬하는 프로그램은 나중에 assembly language에 대해
더 배워  pep/8의 사용법을 숙지하고 올려야 겠네요.

2010년 10월 24일 일요일

나의 컴퓨터



평소에 컴퓨터를 사용할줄만 알았지 조립하는 방법이나 컴퓨터 부품의 세부사항에는 관심이 없었고 잘 몰랐었던 터라 이번 단원의 과제는 조금 힘든 과제인것 같습니다. 시험마치고 탱자탱자놀다가 주말에야 과제 생각이 나서 이렇게 급히 하게 되어서 처음에 예상했던 가격을 한 십만원정도 벗어나게 견적이 나오게 되었는데요. 아무튼 제가 이렇게 견적을 낸 이유는 다음과 같습니다.

1. cpu

 cpu의 제조사는 '인텔',  'AMD',  'VIA' 등이 있는데요.
네이버 지식인에 검색을 해보니
돈을  좀 더 지불하고 안정적인 성능을 원한다면 '인텔'을
좀 저렴하게 좋은 성능을 갖고 싶다면 'AMD' 를 선택하라고 하기에
저는 전자를 택해서 "인텔 코어 2 듀오 7600"을 선택했습니다.

2. 메인보드

메인보드는 컴퓨터의 모든 부품들을 연결해주는 아주 매우 중요한 부품입니다.
이러한 메인보드는 복잡한 구조를 가지는데 간단히 소개하면 다음과 같습니다.
1 - cpu소켓 : 미리 정해둔 cpu와의 호환성을 알아본다
2 - 칩셋 : 칩셋에 따라 사용할 수 있는 부품들과 가격이 책정된다고 보면 된다
     당연히 최신 칩셋일 수록 신기술이 많이 적용되어 있고 비싸다
3 - 메모리 슬롯 : 2개인지 4개인지 6개인지 보고 최대 지원 용량과 지원속도 등도 확인한다
4 - 확장슬롯 : 하드디스크와 그래픽카드 등을 얼마나 장착 가능한지 본다.
5 - sata/e-ide : 요즘엔 e-ide를 거의 안쓰지만 집에 남는 부품등을 설치해서
     쓸 생각이라면 확인해본다.
6 - 후면패널 : 사용후기나 인지도 있는 회사제품을 사용할것!

그리고 메인보드 칩셋은 노스브릿지와 사우스브릿지  이 두개로 나뉩니다.
그외의 정확한 구조에 관해서는 잘 모르고 어려워서 생략하겠습니다..  ;; ^^

나의 경우 메인보드의 제조사는 대세를 따라서 Gigabyte브랜드로 했습니다.
좁디 좁은 하숙방에는 작은 크기의 pc가 필요해서 폼팩터(메인보드크기)는
작고 슬림한 'micro-ATX'를 선택했습니다. 그리고  앞서 내가 선택한
cpu 소켓이 775이어서 이를 고려하고 , 메모리 종류는 이 또한 요즘 대세를
따라서 DDR3로 선택하였습니다.  이렇게 여러 사항의 조건을 생각하여
GIGABYTE  GA- G41MT - D3 이걸로 정했습니다.

3. 램
지금보다 컴퓨터에 대해서 아무것도 모를 때에  램은 컴퓨터속도와 관련하여
많이 달수록 컴퓨터가 빨라지고 좋아진다고 생각한적이 있습니다.
요즘은 당연히 무조건 많이 단다고 좋은것은 아니라는걸 알지만 조금 부끄러운 과거네요.

제조사는 그냥 삼성껄로 선택했습니다... 반도체=삼성 이라고 들었기에...
그리고 메인보드와의 호환성을 보고 DDR3 종류중에서 골라보았습니다.
지금 쓰고있는 노트북의 메모리용량이 너무 대단한편이 아니라 간단한
크레이지아케이드 같은 3D게임도 돌아가지 않기에 4G 를 골랐습니다.
원래 게임을 즐겨 하지 않는 편이더라도 이 정도면 가끔씩 FPS나 WOW
같은 풀 3D온라인 게임을 할 수 있을것 같네요. 
  
4. 그래픽카드
다른 부품에 비해서 그래픽카드를 고를때 조금 신경을 썻습니다.
보통 컴퓨터를 쓰는 용도가 기본 인터넷 검색을 하거나 과제를 하는것을
제외하고는 영화나 드라마를 보는게 주 인데요. 노트북 사양이 낮아서
720p 이상의 5,6기가 이상의 영화를 볼 경우 재생이 안되는 터라  이점을
감안하여 지금 노트북의 그래픽 카드보다는 성능이 좋은걸로 택했습니다.
그렇게 선택한것이 "Rextech 지포스 GTS250" 인데요. 뒤에 GTS가 의미하는게 
뭔지 궁금해서 찾아보니 등급별로 나눈 코드이더군요.

* LE - 동급중에 가장 성능이 낮은 계열입니다.
* GS - 기본모델입니다.
* GT - 기본모델에서 성능을 높힌 주력모델입니다.(가장 많이 출시되는 제품)
* GTS, GTO  - GT보다 성능을 조금 향상시킨 모델로서, 한단계위의 그래픽칩셋중 낮은
   성능을 지닌 칩셋을 가져다 장착하는 것입니다.
* GTX - 최상급의 성능을 가진 모델입니다.
* Ultra - 해당 그래픽 카드 계열에서 가장 성능이 높은 모델입니다.


5. 하드디스크

예전에 비해 값이 싸진 1테라바이트용량의 하드디스크중 웨스턴디지털사의 하드디스크를
선택했습니다. 제품설명을 보니 하드디스크내의 플래터가 기존의 3장이 들어간 제품에서
2장이 들어간 신형이 나오면서 저전력과 저소음을 강화 했다고 나와있었는데요. 웨스턴디지털의 하드디스크는 성능이나 저전력등에서 green, blue, black 으로 나뉘는데  그린제품이 가장 저전력이고  느리며 블랙제품이 가장 빠르고 고성능입니다. 블루제품은 최신형의 버퍼 64M 같이 빠른 제품은 아니지만  가격대비 성능에서 가장 무난한 제품이여서 선택하였습니다. 
(버퍼 - 하드디스크의 캐시 메로리 같은 역할을 하는 메로리로 하드디스크 플래터에 저장된 데이터를 cpu 메모리로 전달하는 역할을 하는 중요한 개체 (naver 지식in))
A/S를 고려한다면 삼성제품도 좋을것 같았지만 소음이 웨스턴디지털사 보다는 크게 난다기에  그냥 "WD 1TB Caviar Blue WD10EALS"  이것으로 했습니다.

6. ODD
CD나 DVD는 모두 레이저를 이용해, 데이터를 읽고 저장하는 광학 미디어입니다.
또, CD나 DVD를 읽고 저장하는 레코더를 통털어 광학 드라이브 또는 줄여서
ODD라고 부릅니다.

ODD에 대해서는 자세히 알지 몰라서 검색을해보고 리스트중에 가장 인기가 있는 걸로 골랐습니다. 위에서 말했듯이 저는 컴퓨터를 주로 영화나 드라마 등을 보는데 사용하는편입니다.
이러한 이유로 silent play ( 프로그램 설치, 영화, 음악 파일 재생등 드라이브를 사용할때, 자동으로 발생하는 소음을 최소화하는 기술)기능   과 Jamless play ( DVD영화 타이틀 감상시, 지문이나 스크래치로 인한 손상이 디스크에 있더라도 멈추지 않고 부드럽게 감상할 수 있게 하는 기능) 기능이 있는 LG전자 Super-Multi GH-22LS50  제품을 선택했습니다.  자세히는 저도 잘몰라서 다른 블로그 글을 읽고 이해를 했는데요. 간단한 설명을 보시려면 아래 주소로 ~ ~


7. 케이스
비교적 무난한 GMC H-80 풍III 250mm Ver2.0 으로 했습니다. 개인적으로 검은색을 좋아해서
케이스 색깔도 검은색으로 맞추었습니다. 전면에 개폐식 팬커버가 있어서 공기흐름에 도움을 주고 청소 또한 쉽게 할수 있을것 같습니다. 

8. 파워
파워를 검색해보니 중저가 제품중에 눈에 띄는 것들이 히로이찌, FSP, 파워렉스, 마이크로닉스 등이 있었는데요.  컴퓨터에 장착하게될 주변기기를 고려하고 안정성 또한 고려하여서 Heroichi HEC-Rapter 600WA 를 선택하였습니다.

9.마우스&키보드
가난한 하숙생이라 최대한 돈을 아껴야 하기에 마우스와 키보드는 최대한 싼 제품으로
골랐습니다. ㅠㅠ
마우스 - 로지텍 G1 Optical Mouse 정품벌크 
키보드 - LG전자 ST - 220

10. 스피커
소개된 위메이트 LS-5000HT 가 매우 탐났지만  가난한 하숙생으로 돈을 아껴야 하기에 
비교적 무난한 2.1채널 스피커인 포헨즈코리아 FOHENZ FS-8000 Q10을 선택하였습니다.

여기서 스피커를 살때 채널이란?
*2.1ch 은 스피커 두개와 서브우퍼 한개로 구성이 됩니다.
일반적으로 저음이 약할때 보강을 위해서 서브우퍼를 붙여서 사용하는 경우죠...
이런 제품은 pc용 스피커가 주로 이런 시스템으로 나옵니다.
*5.1ch 은 멀티채널이라고 해서 홈시어터로 구성할 때 사용을 합니다.
메인스피커, 센터스피커, 리어스피커, 서브우퍼로 구성이 되고 스피커의 갯수는
총 6개 입니다.
이 외에 6.1ch, 7.1ch,9.1ch 등등이 있습니다.

11. 모니터
학기 초부터 지금까지 14인치의 노트북 화면으로만 각종 드라마나 예능프로, 영화를 보며
생활해오다보니 조금 더 큰 치수의 모니터가 탐나서 욕심을 내어서 24인치 삼성전자 싱크
마스터 B2430L를 골랐습니다. 이정도면 더이상 여한이 없겠네요.. ㅎㅎ


지금까지 제가 예상한 컴퓨터부품의 견적과 선택이유를 적어 보았습니다.
다나와 사이트에 글을 올렸는데 다른 네티즌분들이 댓글을 달아주시지 않아서 
그냥 견적비용과 선택이유만 게시하였습니다.
하루빨리 구린 노트북에서 벗어나 꿈의 컴퓨터를 갖고싶네요.

2010년 10월 5일 화요일

순차회로에 대하여

책 4.5 부분에서 많은 종류의 memory circuits 들이 디자인 되었다고 적혀있는데
저는 이러한 여러 종류의 latch 를 조사했습니다.
latch는 정적 기억소자로 조합 논리회로와 더불어 순차 논리회로를 구성하는데요.
조사한 latch 들을 말하기 전에 간단히 설명하자면 다음과 같습니다.  

순차논리회로(Sequential Logic Circuit)
 현재의 입력과 이전의 출력 상태에 의하여 현재 출력이 결정되는 회로
 이전 상태를 저장하는 기억 소자와 귀환기능을 포함
 메모리 상태는 시간순차에 의해 결정
순차 논리회로의 분류
 - 동기(Synchronous) 순차 논리회로
    ·클럭(clock)을 이용하여 새로운 입력의 순차와 응답의 출력 생성이
     일정한 시간 간격을 둔 상태에서 제어된다
    ·일정한 시간 지연 디자인 과정의 단순화
 - 비동기(Asynchronous) 순차 논리회로
    ·출력이 외부로부터의 관리에 의해서가 아닌 내부의 지연에 의해
     일정하지 않은 시간 간격을 두고 발생한다
순차 논리회로의 구성

        기억 소자  +  조합 논리회로

 -  기억 소자(Memory Element)
   ·시스템의 상태를 기억(저장)
   ·현재 상태 = 기억 소자의 현재 저장 값

 - 조합 논리회로
 ·현재의 입력신호와 기억 소자의 현재 상태 값
  을 이용하여 출력값과 다음의 상태 값을 산출
 ·동기 순차 논리회로는 클럭을 이용하여 조합
  논리회로에서 산출된 다음 상태 값을 기억 소자에 저장하여 상태 값을 갱신한다


동기 순차 논리회로의 종류

 - 밀리(Mealy) 순차회로
    · 조합회로의 출력이 현재의 입력과 현재 상태 값에 의해 결정되는 회로

 - 무어(Moore) 순차회로
    · 조합회로의 출력이 단지 현재 상태 값에 의해 결정되는 회로

기억 소자(Memory Element)
순차 논리회로에서 현재의 상태 값을 저장하기 위해 사용


                                                         기억 소자 분류




이때 Latch / Flip-Flop 는 쌍안정 기억 소자라고 하는데요. 두 개의 출력을 가지는데, 하나의 출력이 논리값 ‘1’을 가지면 다른 출력은 논리값 ‘0’을 가집니다. 그리고 출력 값의 변화를 전압 전위 이동으로 이루어지는데 이러한 점을 시소에 비유할수 있습니다.

-----------------------------------------------------------------------------------------------------------------

이제 제가 원래 조사하려고 했던 래치의 종류에 대해서 말해보자 합니다.

lSR(Set-Reset) 래치
     l래치(Latch)는 기억 소자 중에서 가장 간단한 소자
     l래치는 입력 신호의 레벨에 의해 출력이 제어되는 레벨-감지 기억 소자
     l두 개의 nor 게이트나 nand가 상호결합(cross-coupled)하여 구성
     l가장 기본적인 래치
2개의 NOR 또는 2개의 NAND 로 구성이 되는데 책에는 NAND로 구성된 레치회로 밖에 없어서 NOR로 구성된 래치회로도 찾아보았습니다.

                                                        SR(Set-Reset) 래치의 동작 분석


lJK 래치
     l셋과 리셋 입력이 동시에 인가될 수 없다는 제한을 제거한 변형된 SR 래치

l T(Toggle) 래치
     l JK 래치의 입력을 같이 연결한 변형된 JK 래치
     l JK 래치와 T 래치는 출력 진동으로 인해 실제 존재하지 않음

lD(Data) 래치
     lSR 래치에서 셋과 리셋 입력이 동시에 1이 인가되는 것을 방지
     lTransparent latch – 입력 신호를 그대로 기억하여 출력

l게이트된 래치(Gated Latch)
기본 래치는 래치의 입력 레벨이 바뀔 때에 래치의 내용이 바뀌는 비동기적인 동작 방식으로 인해 동기 순차회로에 적용하기 힘들다
클럭(clock) 또는 가능(enabling) 신호를 입력에 추가하여 래치의 기억 내용이 갱신되는 시기를 제어 순차 논리회로에 포함되어 있는 조합 논리회로의 신호 지연이 갖는 다양성으로 인해 기억 소자의 내용을 동시에 변경하기 힘든 경우 기억 소자 갱신의 동기화가 요구될 때에 필요



====================================================================

2010년 10월 3일 일요일

mp3PRO와 이것의 압축기술에 대해

책에서는 MP3를 MPEG Audio Layer-3 라고 했는데 저는 뒷부분의 3가 의미하는 바가 궁금해서 찾아보았습니다. 찾아보니 이 Layer-3 라는 것은 Layer-1, Layer-2 다음에 Layer-3 버젼이라 그렇게 이름이 붙여졌던것이더군요. 일반적으로 Layer-1은 압축율이 1:4 정도, Layer-2는 1:61:8 정도의 압축율을 Layer-3은 1:101:12 의 뛰어난 압축율을 갖기 때문에 MP3로 불리고 가장 많이 사용되고 있습니다. 하지만 현재 개발 중이고 이미 생성된 다른 포맷(MPEG-4 AAC, OGG 등) 에 대해서는 성능이 떨어진다는 평을 듣고 있으나 MP3도 mp3PRO 라는 이름으로 거듭나고 있습니다.

그래서 저는 이런 mp3PRO의 압축기술에 대해서 조사 해 보았는데요.

=================================================================================
우선 그압축기술에 대해 적기 전에 mp3PRO에 대해서 간단히 말하자면 다음과 같습니다.
mp3PRO란 MP3의 확장된 버전이라고 볼 수 있다. MP3는 최근 몇 년 동안 가장 우수한 오디오 포맷의 하나로 군림해 왔다. 하지만 MP3는 완벽한 오디오 코딩의 기술이 아니다. 따라서 많은 개발자들이 MP3보다 더 우수한 오디오 코딩의 기술을 만들기 위해서 노력해 왔다.
이러한 노력의 결과물 중에 하나가 Coding Technologies가 만든 mp3PRO이다. 이러한 mp3PRO를 기술적으로 보면 기존의 MP3 오디오 코딩 기술과 새로운 오디오 기술의 한 가지인 SBR의 결합으로 탄생되었다.
MP3 와 mp3PRO의 차이점은 MP3가 기본적인 생성 비트레이트를 128kbps를 사용한다면 mp3PRO는 64kbps와 같은 낮은 비트레이트에서 파일을 생성한다는 점이다. 즉, 기존의 MP3보다 더 작은 파일(약 MP3의 1/2)을 만들어낸다.
=================================================================================



MP3Pro에서 사용된 오디오 압축 기술은 스웨덴 발명가인 Lars Liljeryd가 개발한 기술로,
그는 수 년 동안 오디오 압축 및 변환 방법을 연구하고 있었다. 어느 날 아침 그에게 떠오
른 아이디어는 음악이나 음성을 디지털 형식으로 보존할 때 필요한 정보양을 대폭 줄이는
획기적인 방법이었다.

이 아이디어는 여러 특허와 새로운 사업으로 발전했으며, 나중에 인기있는 디지털 음악 포
맷인 MP3와 AAC(Advanced Audio Coding) 개발에 참여했던 엔지니어들이 합류하게 된다. 현재, Liljeryd와 그 회사인 Coding Technologies사는 아직 일반인에게는 익숙하지 않은 이름
이지만, 디지털 오디오 기술의 업계 표준 기술을 많은 연구자들이 불가능하다고 생각하던
수준까지 끌어 올리는데 크게 기여했다. Liljeryd는 지금까지의 일을 뒤돌아 볼 때마다 더
이상 나아갈 수 없다는 생각이 들었지만, 그 때마다 다른 식으로 사물을 보는 사람들과 함
께 지내다 보면, 기존의 방식과 많이 다른 새로운 사고를 할 수 있게 됐다.

Coding Technologies사는 디지털 오디오 분야에서 큰 역할을 한 몇몇 소형 업체들 중의 하
나로서, 이 분야는 지금까지 마이크로소프트나 소니, 독일의 프라운호퍼 연구소와 같이 대
형 업체 및 연구소들에 의해 좌우됐다. Coding Technologies사의 성공은 관습에 얽매이지
않고 파격적인 발상을 할 수 있는 사람들에게는 일반인이 예상하지 못하는 방식으로, 업계
를 뒤흔들 충분한 능력이 있다는 것을 보여주는 것이다.

Liljeryd의 아이디어는 기존의 압축 기술로 가능했던 압축율을 2배 혹은 3배 정도 향상시키
는 것으로, 초기 아이디어는 나중에 합류한 오디오 기술 연구원들에 의해 검토 및 확장되
어 완성됐다. 이 기술은 온라인 오디오나, 휴대폰, 위성 방송 등에 있어서 매우 유용한 기
술이다. 이 기술은 현재 급속히 퍼지고 있는데, XM Satellite Radio 서비스가 이 포맷을 채
택했으며, 그 외에 한국과 영국의 휴대폰 사업자도 이 기술을 채택했다. 또한, Coding
Technologies사는 중국의 디지털 멀티미디어 플랫폼 개발을 지원하고 있는데, 이는 중국 고
유 DVD 기술에 사용될 것으로 보인다. 1년 전에는 MPEG 그룹이 이 회사의 기술을 업계 정
식 표준으로서 채택했기 때문에, 이미 다양한 응용에 사용되는 것은 거의 시간 문제로 보인
다.

오디오 기술 컨설턴트이며 MPEG 그룹 의장인 Schuyler Quackenbush는 취재에서 이 기술이 AAC 이후 MPEG가 지지한 가장 중요한 오디오 코딩 기술이라고 확신하고 있으며, MPEG 오디오 코딩 기술 향상에 있어서 선도적인 역할을 할 것이라고 말했다.

코덱(codecs)이라고 불리는 기존의 압축 디지털 오디오 포맷은 PAC(Perceptual Audio
Coding)라는 기술을 사용해 CD 등과 같은 대용량의 디지털 파일을 압축한다.이는 기본적으로 원래의 오디오 파일에서 인간의 청각이 감지하기 어려운 부분을 삭제함으로써 데이터 양을 줄인다. 이는 대부분 복잡하고 종종 극히 주관적인 작업으로 볼 수 있다. 대개 매우 높
은 주파수와 매우 낮은 주파수 대역이 제거되어 파일 크기를 줄이는데, 일반적으로 음악의
대부분은 그대로 유지된다. 하지만 확실히 원래의 음보다는 줄어든 것이다.

하지만, Liljeryd의 아이디어는 이와는 다른 것인데, 그는 오디오 파일의 고주파수 부분에
있는 정보의 대부분이 보다 낮은 주파수로부터 재생될 수 있다고 생각했다. 이와 같은 아이
디어를 토대로 그는 종래의 기법을 사용하는 것이 아니라, 높은 주파수 대역을 제거하고,
대신 낮은 주파수 영역에 이를 재생할 수 있는 명령어를 넣는 새로운 파일 압축 기법을 생
각해냈다. 이 기술은 사람 얼굴 사진을 반쪽만 보내서 나머지를 복원하는 것과 유사한 개념
이다.

[참고]

http://ksm117.tistory.com/183 - 음악 파일 포맷과 간단한 용어 설명