728x90
당신이 리눅서라면 apt명령을 통해 쉽게 루비를 설치할 수 있다.(하긴 그럴 필요도 없이 이미 설치되어 있을거다. 업그레이드나 시켜줘라.)
windows 이용자라면 설치해줘야 한다. MS는 자기네 회사 제품은 강제로 설치하면서 자기회사 제품이 아니면 설치를 안해준다. 못된 녀석들..

이미 설치되어 있는지 버젼은 어떤지 확인해보자.
commend환경에서
ruby -v
(commend가 뭔지도 모르겠다면 windows key + r -> cmd 혹은
시작->프로그램->보조프로그램->명령프롬프트)
설치되어있지 않다면 ruby란 명령 없다고 뜬다.

루비 컴파일러는 freeware다.
http://rubyforge.org에 가면 적당한 정보들과 다운로드가 지원된다.
http://rubyforge.org/frs/download.php/29263/ruby186-26.exe
이곳을 클릭해서 설치해보자. 최신버젼이다. 안정성의 문제로 최신버젼이 나오기 바로 전 버젼을 설치하는 것이 일반적이다. 하지만 난 그냥 최신버젼을 설치.(루비는 최신버젼으로 설치하는 경우가 많은 듯 보인다.)

설치를 하고나면
시작->프로그램->Ruby-186-26폴더가 보인다.
이곳에서 SciTe를 클릭하면 편집기가 실행된다. 물론 메모장에서 편집한 다음 commend 창에서 ruby명령으로 실행해도 된다.
eclips도 좋은 편집기다. ruby를 지원하고 있으며 eclips를 사용하면 사용가능한 method를 쉽게 찾을 수 있다는 장점이 있다.
주의할 점은 SciTe가 ruby전문 편집기가 아니라는 점이다. 메뉴에서 Language를 보면 꽤 많은 프로그래밍언어를 지원한다.(C를 대체하기위해 만들어진 D언어도 보인다.)
사용자 삽입 이미지
728x90

'Programming > ruby의 편리함' 카테고리의 다른 글

eclipse에서 ruby하기(RDT-Ruby Development Tool설치)  (0) 2008.03.01
Starting Ruby!  (0) 2008.03.01
728x90
script language중에서 Python은 구조적 프로그래밍언어이고 Ruby는 객체지향언어이다. 파이썬은 함수를 나누어 작성하는 것이 루비는 클레스를 지원한다는 정도로 알아두면 된다.
구조적 언어와 객체지향적 언어의 개념은 대부분의 프로그래밍 언어를 이해하는데 base가 되므로 시간이 날 때마다 조금씩 공부해두는 편이 좋다.
파이썬을 아주아주 잠시 사용해보다가 루비로 넘어온 결정적인 이유!

1. 대세는 루비다.
리눅스 공개버젼에서 대부분 루비를 탑제한 채 배포한다. 루비가 널리 퍼진 것은 얼마되지 않았지만 이미 많은 프로그래머가 세계적으로도 많은 프로그래머가 파이썬에서 루비로 옮겨왔다.

2. Python에서 coding은 한번에 잘해야 좋다.(수정이 어렵다.)
나한테만 해당되는 말이니 말도 안되는 소리라고 생각되더라도 그냥 넘어가라. Python은 문법에서 indentation(들여쓰기)이 매우 중요하다. {}등으로 scope(범위)지정을 지원하지 않기 때문에 indentation으로 구분한다. 즉 들여쓰기만으로 범위를 결정하고 스페이스 하나 차이로 소스가 아주 엉뚱하게 작동하는 경우가 많다. 사실 이 부분이 결정적인 이유다. 나는 실수가 많은 사람이라 자꾸 고쳐줘야 한다. 단순무식한 열혈 프로그래머에게 Python은 산이 높다.

Why use the script language?
스크립트언어는 Perl이 87년(CGI에서 사용되는 것은 91년), PHP와 Ruby는 95년에 나왔다.
무지 늦게 나왔다는 말이다.
스크립트언어는 문자열처리에 강력하고, 디버그와 수정이 쉽다는 특징을 가지고 있다.
유닉스와 함께 걸어왔으며 웹편집에 이용되면서 엄청난 힘을 얻었다. web2.0이 퍼지면서 스크립트 언어는 더욱 힘을 얻어 2007년 초 컴퓨터잡지 microsoft에 중심주제로 다루어지기도 했다.

속도
는 컴파일하는 언어들보다 느리다. 인터프리터로 해석하는데 다른 언어들보다 script언어가 조금 더 느린 듯 보인다. 하지만 웹이라면 말이 달라진다. 요청이 있을 때마다 컴파일하기엔 시간이 너무 걸린다. 한번 컴파일해서 올려두기엔 부담이 너무 크다. 웹에선 인터프리터를 사용하는 것이 좋고 스크립트언어가 느리다고는 해도 통신회선을 통해 요청되는 시간과 비교하는 극히 짧은 시간을 사용하므로 크게 무리가 없다.

문자처리는 할 때마다 놀란다. 장점이자 단점이기도 하지만 script language는 변수의 선언이 필요없고 변수형의 구분이 없다. 알아서 적당히 맞추어 사용해버린다. 심지어 변수의 이름을 프로그래밍 도중에 만들어나갈 수도 있다.(이런건 나중에 천천히..) 게다가 문자열 처리와 array에 필요한 연산 대부분은 이미 만들어져 있다. 그냥 쓰면 된다.

에 있어선 엄청난 힘을 가지고 있다. 웹을 통해 널리 알려진 언어이기도 하지만 루비를 gem과 함께 사용하면 뽀빠이가 시금치를 먹는 효과를 낼 수 있다. 혹자는 3분이면 웹페이지 충분히 만든다면서 동영상을 만들어 친절히 영어로 설명하면서 천천히 만들었는데도 시간이 남았다.(난 할줄 모른다.ㅡㅡ;)

Python을 이용해서 잠깐 일을 했었고, ruby를 이용해서 프로젝트를 진행하긴 했지만 웹과 연동하는 것은 해본 적도 없고 언어 자체에 대해서도 잘 모른다.
블로그에 글을 하나씩 올리면서 나도 같이 공부해야겠다.
728x90

'Programming > ruby의 편리함' 카테고리의 다른 글

eclipse에서 ruby하기(RDT-Ruby Development Tool설치)  (0) 2008.03.01
Ruby 설치하기  (0) 2008.03.01
728x90

컴퓨터가 정수를 표현하는 방식은 한가지만 있는 것이 아니다. 흔히 학교에서 배우는 방식은 처음 MSB로 음수, 양수를 표현하고 나머지 비트로 2의 보수법을 취하여 수를 계산하는 방식이다.
그런데 다른 방식도 많이 있다. 그중 하나가 bias를 이용하는 방식이다.(이름이 생각나지 않지만 이러한 방식은 부동소수의 지수를 나타낼 때 많이 사용된다.)

중심되는 숫자를 기준으로 그보다 작은 수는 음수, 큰 수는 양수로 계산하는 방식이다.
예를 들어 0~15까지 4자리 이진수로 나타내는 수가 있다고 하자.
여기에서 0은 0000이 아니라 중간 값인 1000이 된다.


10진수 MSB방식 bias방식
-8(최소) 1000 0000
-3 1101 0101
-2 1110 0110
-1 1111 0111
0 0000 1000
1 0001 1001
2 0010 1010
3 0011 1011
7(최대) 0111 1111

문제>0~65535까지의 양수값을 입력받아 -32768 ~ 32767까지의 수를
MSB방식의 16자리 2진수로 표현하라.
입력 : inputfile.txt
출력 : consol
입력파일에는 정수만 입력되며 0보다 작거나 65535보다 큰 값이 입력되면 오류메시지를 출력한다.

입력:
123
4561
7892
1
65535
65536
32768
32767
32769
-1

출력:
-32645 : 1000 0000 0111 1011
-28207 : 1001 0001 1101 0001
-24876 : 1001 1110 1101 0100
-32767 : 1000 0000 0000 0001
 32767 : 0111 1111 1111 1111
ERROR! Input value of 65536 is out range for this program.
32768 : 1000 0000 0000 0000
     0 : 0000 0000 0000 0000
    -1 : 1111 1111 1111 1111
     1 : 0000 0000 0000 0001
ERROR! Input value of -1 is out range for this program.
-32769 : 0111 1111 1111 1111


==============================
참고자료로 올린 cpp파일은 비트연산을 이용한 출력을 하고 있다.
스스로 문제를 풀어보고 내가 작성한 소스와 비교해보라.
시스템에 따라 컴퓨터가 MSB방식을 채택하고 있지 않은 경우도 있다.
이러한 경우에 대비하여 printToBinary함수를 어떠한 환경에서도 같은 결과를 출력할 수 있도록 수정해보자.
소스나 문제에서 잘 이해가 가지 않는 부분이 있다면 질문 남기도록.
728x90

+ Recent posts