본문 바로가기

Ruby on Rails

생활 속의 프로그래밍

컴퓨터를 쓰다 보면 ' 아 이런거 프로그램만 짤 줄 알면 내가 짜서 쓸텐데!' 하던 일이 종종 있다.
 
그제도 그런일이 생겼다. 그러나 이번엔 예전과 다르다 . 내가 프로그래밍을 하게된것이다.

그러나 많이 안다르다는 거 --;  

일은 잘 안가는 네이버에 있는 내 방치된 블로그에 가서 이웃들을 둘러보던 중 누가 참으로 재미난 만화를 올려 놓은걸 보게 됐다. 이름하여 구로막차 오뎅한개피~ 애들은 못보는 만화인데 그 발상이 참 기발하여 보는 내내 웃음을 참을 수가 없었다. 간만에 신나게 웃어봤다고나 할까.

출처를 찾아가 봤다. 데일리 줌이란 사이트였다. 무가지가의 인터넷 사이트가 아닌가 싶다. 아무튼 만화란을 찾아가봤는데 지난 호가 5개인가 밖에 없는거다. 게다가 작년 12월에 끝났네?

당장 소스를 보니 화일네임이 규칙적이다. 일주일에 두번 월 화요일에 화일 두개를 한회로 해서 올리고 있었다. 지난것도 날짜만 바꿔서 주소창에 넣어보니 화일이 나온다 ^^

화일주소의 다른 부분은 다 같고 날짜만 규칙적으로 변한다? 이건 프로그램으로 짜기 쉽겠네? 게다가 며칠전 루비의 동영상 기본 강좌를 보면서 스트링 처리의 맛을 본지라 선뜻 짜보기로 나섰다.

먼저 날짜를 처리해주는 클래스가 있을것이다 싶어 찾아보니 있네 ^^ DateTime 클래스였다. 이런게 없다면 일주일 뒤로 갈때 월초에서 월말로 넘어가는게 쉽지 않다. 한마디로 달력 프로그램을 짜야 가능한 일이다. 그런 개노가다라면 시작도 안하지

시험삼아 이것저것 넣어보니 첫날에서 일단 6일을 빼줘야 하는데 어떻게 써야하나 잘 모르겠다.
변수에 날짜를 집어 넣고 변수에서 1을 빼봤더니 하루가 딱 빠지네? 시간까지 나오는 놈이 1뺐는데 1초도 아니고 한시간도 아니고 기특하게 하루가 딱 빠져준다.
 
t= DateTime.new(2006,12,18)        만화가 끝난날 이 이날인데 저 t-1을 해서 값을 보니 17일이 됐다는거징

그리고 날짜를 http://dailyzoom.co.kr/cartoon/guro/data/AUG20061218_01.jpg 이게 화일 네임인데 바뀌는 부분은 날짜뿐이니까 20061218을 저 클래스의 값을 이용해서 바꿔치기를 해줘야 하는데 시간도 같이 나오고 달 이름이 영어로 나오걸 숫자로만 깨끗하게 나오게 하는 방법을 찾아야 했다.

찾았다 strftime() 이건 저 클래스의 메소드인데 괄호 안에다 %Y하면 연도가 네자리숫자로 %m하면 달이 두자리 숫자로 %d하면 날짜가 두자리 숫자로 표시도도록 포맷을 잡아 준다.   20061218  딱 이런 식이지.

저걸 print문을 써서 ""안에 반복 되는 것들을 넣어주고 변하는 부분을  t.strftime("%Y%m%") 로 넣어 주면 된다.
루비의 독특한 문법이 여기서 나온다. 앞에서 t= DateTime.new(2006,12,18) 를 넣어준 것으로 t는 날짜가 되는데 그 t에 점을 찍고 메소드 strf()를 걸어주면 날짜가 해당 메소드의 영향을 받아서 원하는대로 나오는것이다.

-3.abs 를 실행시키면 절대값이라고 3이 띡 나온다. ㅎㅎ 일단 점만 찍어주면 그걸 맘대로 주무를 수 있다고 보면 된다. 나도 그런 능력이 있으면 맘에 드는 여자한테 가서?  여기까지 ^^

아무튼 완성한 것이 아래의 코드다. html의 이미지 삽입 문법에 맞게 만들었으니 앞뒤에 html body 태그만 대충 넣어주고 html로 저장하고 나서 더블클릭해주면 만화가 주르르~ 감동이다 ~

만화내용은 더 감동이다. 애들은 보지마시라


만화보고 싶으면 루비를 깔으라는 이야긴가?   당근이지 ^^

아 에러가 나거든 줄이나 화일끝의 공백을 지워주시길