'2010/01'에 해당되는 글 4건

  1. 2010.01.28 플스3 지름신님이 강림하시려고 한다.. (4)
  2. 2010.01.28 2. 루비(Ruby) 언어 정리(조건문, 순환문, 메소드 그리고 블럭)
  3. 2010.01.27 1. 루비(Ruby) 언어 정리(기본 문법)
  4. 2010.01.17 난 객체지향이 싫다.. (4)
2010. 1. 28. 00:58

플스3 지름신님이 강림하시려고 한다..


2년간 잘 참았건만.. 요즘 과중한 업무 스트레스와 그나마 즐거운 일에 부재에 의해서 사고 싶어지고 있다.
가격도 요즘 많이 싸지긴 했네..
그런데 내가 가진 TV는 엉망이고.. 내 24"모니터는 HDMI가 지원되지 않으니.. 결국 엄청난 돈이 소요된다..

일단 이 모든 것은 철권6를 하고 싶어서 사는 것이니 살바에야 철권 팩으로 사버리는 것도 한가지 방법이긴 한데 생각해볼만 하다.

그리고 아까 박차장님이 추천한 27" 삼성 TV겸용 모니터

삼성전자 싱크마스터 P2770HD 1

68cm(26.7형) / 와이드(16:9) / TN 계열 / 1920 x 1080 / 2㎳ / 300cd / 1200:1 / 50000:1 / CCFL 백라이트 / 틸트 / 디지털HDTV / 스피커 내장 / PIP / PBP / 무결점 정책 / D-SUB / DVI / HDMI / 컴포넌트 / 컴포지트 / RF안테나 / 67W / 2W

451,000
판매몰 : 242
등록월 : 2009.10
상품의견 : 1330
이렇게만 사도 일단 93만이 든다.. 제길..ㅡ.ㅡ; 철권하려고 93만원 쓰는 인간이 있을까???
하지만 그렇다고 모니터를 양보하고 싶지는 않다. 모니터는 살때 좋은 거 사는게 좋으니 말이다.

아 고민이다. 돈 들어올 곳은 없고.. 음.. 어쩐다...ㅎㅎㅎㅎ
고민좀 해봐야 겠다..









Trackback 0 Comment 4
  1. Favicon of https://momocathy.tistory.com BlogIcon 모모냥이 2010.02.03 20:57 신고 address edit & del reply

    알바해여 ㅋㅋㅋ

  2. Favicon of https://momocathy.tistory.com BlogIcon 모모냥이 2010.02.04 12:56 신고 address edit & del reply

    아님 ㅋㅋ 중고 고고싱 ㅋㅋㅋ

    • Favicon of https://implement.tistory.com BlogIcon 열야 2010.03.16 17:13 신고 address edit & del

      중고도 비싸더라구.... ㅎㅎ 은영이가 사줘.. 아이팟도 공짜로 생겼는데... 기분 좋으니 사줘!! ㅎㅎ

2010. 1. 28. 00:34

2. 루비(Ruby) 언어 정리(조건문, 순환문, 메소드 그리고 블럭)


if문
if 조건 [then |:]
#코드
elsif 조건 [then|:]
#코드
else 조건 [then|:]
#코드
end
특이한 것은 조건에 ()괄호가 없다는 것
뒤에 then또는 :을 쓸 수 있는데 안써도 된다는 것
각 블록마다 블록의 끝을 나타내는 end가 있는 것이 아니라 if문의 끝에만 end를 붙여야 한다는 것이다.

unless
if 내의 조건에 not이 붙은 것과 동일하지만, elsif를 사용할 수 없다.
unless 조건 [then |:]
#코드
else
#코드
end

if와 unless를 수식어 형태로 사용하기 (perl에도 있는 방식)
한줄짜리 조건식에 사용하기 좋으나, 가독성이 떨어질 수 있는 단점이 있다.
temperture = 76
puts "Picnic time!" unless temperature < 65 || temperature > 85
이경우, unless의 조건이 false이므로 puts "Picnic time!"이 실행된다.

case~when문
다른 언어의 switch와 비슷하다. 바로 예를 들면..
command = "Stop"

case command
when "Go"
    puts "Going"
when "wait"
    puts "waiting"
when "Turn"
    puts "Turning"
when "Stop"
    puts "Stopping"
else
    puts "I can't understand that"
end

특이한 것은 break를 쓰지 않아도 다음 when절이 나타나기 전에 끝난 다는 것이랑 default대신 else라는 점이다.
아마 언어 제작자는 이를 switch보다는 if문의 파생으로 생각한 듯 싶다.

case문을 다음과 같이 사용할수도 있다. 음.. 무슨 철학인지..ㅡ.ㅡ?
temperature = 76

message = case
when (0...65) === temperature
    "Too cold"
when (85...120) === temperature
   "Too hot"
when (65...85) === temperature
   "Picnic time!"
else
   "Temperature out of reasonable range!"
end

puts message

순환문 while
while($_ != "q")
    puts "Running..."
    print "Enter q to quit: "
    gets
    chomps
end

until문
while문의 조건이 not인 경우이다.

while과 until의 수식어 형태 용법
if와 unless와 동일하게 수식어 형태로 사용할 수 있다. 반복문을 이렇게 사용하는 경우는 매우 드물 듯...
value = 0
value += 1 while value < 100

for문
for문은 다른 언어의 for라기보다는 foreach와 비슷하다.
for 변수 in [배열 | 해쉬 | 범위]
#코드
end

Ruby의 반복자 사용법
반복자로서는 upto, downto, step, times가 있다. 이 반복자는 변수나 상수의 메소드들인 것 같다.
upto는 현재 자신부터 지정된 숫자까지 반복
downto는 자신부터 지정된 숫자까지 하향 반복
step은 자신부터 지정된 숫자까지, 두번째 지정된 숫자만큼씩 증가하여 반복
times는 자신만큼 반복
이것만 읽으면 외계어 같군.. 예를 보자.
grades = [88, 99, 73, 56, 87, 64]
sum = 0
0.upto(grades.length - 1) do |loop_index|
    sum += grades[loop_index]
end
-----------
puts "What's the answer?"
sum = 0
4.step(12, 2) do |even_value|
    sum += even_value
end

순환문 내의 break, redo, next
break: 그냥 멈춤 (C의 break와 동일)
redo: 블록의 시작으로 가서 변화 없이 다시 시작
next: 실행을 바로 종료하고 다음 루프로 진행 (C의 continue와 동일)
-10.upto(10) do |number|
    next if number == 0
    puts "1/" + number.to_s + " = " + (1 / Float(number)).to_s
end

순환문 내의 retry 문
루프를 그냥 처음부터 다시 시작

메소드를 정의하고 실행하는 방법
1. 인자가 없는 경우
def 함수명
    #코드
end

2. 인자가 있는 경우
def 함수명 (message, name)
    #코드
end

3. 인자가 있으나 그 수를 모르는 경우
def 함수명 (first_argu, *others)
    #코드
end
*others에서 *은 배열을 나타낸다.

함수의 값 반환(return)
return을 사용한다.
여러개를 return할 수 있다.

def incrementer(value)
    return value + 1
end

def greeting()
    return "No", "worries"
end

블록
루비에서의 블록을 정의하는 방법은 두가지이다.
{}는 한줄로 된 블록을 정의할 때 사용하고
do와 end는 여러줄로 된 블록을 지정할 때 사용된다.
재미 있는 점은 블록이 무슨 함수처럼 인자를 받을 수 있다는 점이다!!
다른 언어에서는 블록은 프로그램의 실행되고 변수가 제한되는 코드 블럭이지만, 루비에서는 코드 블럭 역할도 하지만, 함수에 넘겨줄 수도 있고 인자도 받고 그런다.. 신기하다. @.@

def greeting ()
    yield
end

greeting { puts "Hello there!" }

메소드에 전달된 블럭을 실행하는 방법은 yield문을 사용하면 된다. 위와 같이 하면 Hello there!가 출력된다.
만약 greeting을 다음과 같이 정의하면
def greeting ()
    yeild
    yeild
    yeild
    yeild
end
와 같이 정의한 후 위와 같이 블럭을 넘기면 Hello there!가 4번찍힌다.

블록에서 데이터 전달받기 (인자 받기)
def greeting ()
    yield "Hello", "there"
end

greeting {|word_one, word_two| puts word_one + " " + word_two }
이와 같이 하면, word_one에 "Hello"가 word_two에 "there"가 삽입되게 된다.

BEGIN, END블럭
루비의 기능인 것 같다. 이 블럭을 정의하면 BEGIN블럭은 스크립트가 메모리에 로딩될 때 자동으로 실행되고, END는 종료될 대 자동으로 실행된다.
BEGIN {puts "Hi "}

puts "there "

END {puts "sweetie."}

Trackback 0 Comment 0
2010. 1. 27. 23:46

1. 루비(Ruby) 언어 정리(기본 문법)

루비온레일즈를 파보기로 했다. 이런거는 최대한 빨리 끝내는 게 좋다는 생각과 함께 책을 독파하기로 했다.
루비의 기본적인 문법은 모두 끝낸 것 같은데, 물론 어려운 부분이 더욱 많이 남아 있을 것 같긴 하지만 정리해보기로 한다.

루비 온라인 도움말 보기 명령어 "ri"
>ri puts
linux/unix환경에서 c온라인 메뉴얼 보는 man 명령어와 같은 느낌이라고 생각할 수 있다.

수치데이터 다루기
 - 수치데이터의 크기 제한이 없다.
 - 세자리에 하나씩 _를 넣어서 표현 가능 ex. 12_345_678
 - 0x, 0, 0b는 C와 동일한 효과

문자열 조작
perl이나 php와 동일한 방법을 사용한다.
''와 ""으로 감쌀 수 있다. ""의 경우  escape character을 사용할 수 있다.
%q또는 %Q 또는 %로 문자열을 만들 수 있다.
ex1. %q/Yes you are/
ex2. %q$Yes you are$
ex3. %q(Yes you are)
ex4. %Q/Yes you are/
ex5. %/Yes you are/

문자열은 + 연산자를 사용해서 붙일 수 있다.

HERE문서를 사용하여 여러줄의 문자열을 한번에 만들 수 있다.
print << HERE
NOW
is
Hi
HERE

이와 같이 하면 HERE로 감싸진 3줄이 문자열이 된다. "HERE"대신 대문자로 된 어떤 단어든 상관 없다.

변수에 데이터 저장
변수에 데이터 저장할 수 있다. 변수는 절대로 소문자로 시작한다!!
(소문자로 시작하면 변수, 대문자로 시작하면 상수로 자동 선언된다.)

상수
상수는 대문자로 시작한다. 일반적으로는 모두 대문자로 쓰는 관습이 있다.
ex. IP_SERVER_SOURCE = "903.111.333.055"

큰 따옴표 문자열 안에 변수 값 삽입
변수값을 삽입하기 위해서는 #{}을 사용한다.
temperature = 36
puts "The temperature is " + String(temperature) + "."
이를 다음과 같이 변경할 수 있다.
puts "The temperature is #{temperature}."
#{}안에는 변수 이외에도 다양한 표현식을 써 넣을 수 있다.
puts "The temperature is #{temperature + 5}."

명령행 사용자 입력 받기
사용자로 부터 입력을 받기 위해서 gets 함수를 사용한다. C에서 scanf나 gets와 동일하다고 해야 겠다.
다만 이 함수를 사용하면 사용자가 입력한 개행문자(\n)도 같이 들어오므로 비교하기 전에 개행문자를 때야한다.
print "Please enter the temperature: "
gets
chomp
puts "The temperature is #{$_}."
gets로 입력된 값은 변수에 저장할 수도 있으나, 저장하지 않으면 default 변수인 $_에 저장된다. chomp는 개행문자를 때주는 함수인데, 변수지정이 불가능하며 무조건 $_의 마지막 개행 문자를 때준다.

심볼정의 (다른 곳에 없는 재미있는 기능..잘 쓰면 메모리 절약)
:temperature
:ISP_address
:row_delimiter
그냥 문자열 같은 존재들이다. 다만 변수에 문자열을 넣으면 문자열을 만들 때 마다 다른 메모리 영역이 발생하지만 심볼은 여러번 사용해도 한 영역만 존재한다.
(그러나, 과연 얼마나 쓸모가 있을런지.. ㅡ.ㅡ;;)

연산자 사용하기
* 곱하기
- 빼기
/ 나누기
%나머지
** 제곱
= 삽입
%=, /=, -=, +=, *=, **= 한번에 하는 것들
[] 배열 참조
[]= 배열 삽입
! 부정
~ 보수 (complement)
>> 우측 쉬프트
<< 좌측 쉬프트
& 비트 AND
^ 비트 XOR
| 비트 OR
<=, <, > , >= 비교
<=> 작으면 음수, 같으면 0 크면 양수
== 같다.
=== case문의 when절에서 사용되는 동치 연산자 (==와 동일한데 when절에서만 사용된다.)
!= 같지 않다.
=~ regular expression 적용할 때 사용하는 연산자
!, not 논리 부정
&&, and 논리곱
||, or 논리합
.. 범위 연산자 (마지막 값 포함)
... 범위 연산자(마지막 값 제외)
? 3항 if연산자
: 3항 if연산자에 포함되는 콜론 기호
defined? 어떤 심볼이 정의되어 있으면 참
if 조건문
unless if안에 not을 붙인거와 동일
while 참인동안 루프
until 참이 될때까지 루프
begin/end 블록 표현식

배열
배열은 []을 사용하여 정의할 수 있다.
array = [1, 2, 3]
puts array[0]
puts array[1]
puts array[2]

배열은 변수와 마찬가지로 암꺼나 넣을 수 있다.
array = ["Hello", "there", "sweetie", 1, 2, 3]
배열을 역순으로 훑을 때 편하게 사용하라고 다음 기능도 제공한다.
array[-1] 은 3
array[-2] 은 2
...
array[-6] 은 "Hello"

두개의 첨사 사용법
array[1, 2] 는 array[1]부터 시작해서 2개를 뜻한다.
array[1,2] = "here"를 하면 ["Hello", "Here", 1, 2, 3] 가 된다.
array[1,0] = "here"를 하면 ["Hello", "Here", "there", "sweetie", 1, 2, 3] 가 된다.

해쉬
해쉬는 {}을 사용한다. 그러나 값을 읽을 때는 []을 사용한다.
meney_I_am_owed = { "Dan" => "$1,000,000", "Claire"=>"$500,000"}
puts["Dan"]

범위
my_range = 1..4   #1, 2, 3, 4가 들어간다.
이를 array로 바꿔서 출력하면..
puts my_range.to_a
1
2
3
4
가 출력된다.

일단 1편 끝...

Trackback 0 Comment 0
2010. 1. 17. 18:09

난 객체지향이 싫다..

내가 객체지향을 싫어하는 이유는 단순히 몇가지 있다.

첫째, 연관된 함수들이 너무 많고, 그 덕에 너무 많은 문서를 읽어야 하며, 각 개체마다 나름대로의 복잡 미묘한 관계와 메커니즘 때문에 공부해야 한다. 결국 쉽다라든지 모듈화가 잘되서 몰라도 된다든지.. 다 개뻥인듯...

둘째, 상속을 통해서 확장성을 좋게 만들다 보면... 작은 일 밖에 안한는 너무 쪼매난 일밖에 안하는 클래스까지 마구 생성해 줘야 한다. 물론 대부분의 작업은 부모 클래스에서 하게 되는데.. 이 때문에 파일의 수가 쓸대 없이 늘어나서 처음 보면 파일이 뭐 이리 많아라고 생각하게 된다.

셋째, 오버로딩, 오버라이딩 때문에 결국 어떤 함수가 불리는지 찾기 어렵다. 결국 디버깅이나 예제를 이해하기 위해서는 골머리가 썪는다...

왜 이딴게 나와서 편하다고 난리야.. 내가 보기에는 생산성도 사용성도 가독성도 똥인데..

특이하게 요즘 나오는 언어들은 스크립트 언어까지 죄다 객체지향이다. 망할넘들 공부하려면 빡시잖아. 쪼마난거 만들라다가 이거 대학때보다 더 공부하고 있다. 자바스크립트도 그렇고 루비도 그렇고... 난 그냥 가볍게 쓰고 싶다규..

역시 최고의 언어는 어셈과 C인듯...
Trackback 0 Comment 4
  1. Favicon of https://enigmasi.tistory.com BlogIcon enigmasi 2010.01.19 11:16 신고 address edit & del reply

    딱히 할 말이 없수. C++싫어 하는거 잘 알고 있으니..ㅋㅋ
    하지만 나랑은 생각이 좀 다르니...당신은 잘못된거야...틀린거야..

    • Favicon of https://implement.tistory.com BlogIcon 열야 2010.01.19 13:27 신고 address edit & del

      C++도 그렇고 Objective C도 그렇고.. 다 똑같아.. 쓰레기야.. ㅇㅎㅎㅎㅎㅎ

    • Favicon of https://implement.tistory.com BlogIcon 열야 2010.01.21 10:49 신고 address edit & del

      당신도 이미 C에 최적화 되어 가고 있어. 가끔 C++ 기초도 기억 못하잖아..ㅋㅋㅋㅋ

  2. 애니컴 2011.11.14 17:46 address edit & del reply

    오!!!! 저랑 같은 생각을 가지는 분이 있었네요...