반응형
Ubuntu 시작 한 뒤에 업데이트 관리자가 새로운 업데이트가 있다고 알려주면,
최신 업데이트를 위해 실행 뒤 다운로드를 받을때, 간혹 패키지 파일을 다운로드 받을때 서버 연결 접속 실패라고 뜬다.
서버 주소를 알려주면서 나오는 이 메세지를 보면서.. 이 서버 말고 또 없낭? 하는 의문이 생겨 인터넷을 뒤져보다
아래에 있는 영문 싸이트를 찾게 되었다.

http://ubuntuforums.org/archive/index.php/t-3305.html

기본적으로  /etc/apt/sources.list  파일을 열어 안의 내용을 바꿔주면 된다고 한다.

file is what apt-get/synaptics uses to find available software for you to install.Any lines with the # will be ignored
이 파일이 apt-get/synaptics 에서 사용되고, 안에 있는 설정으로 소프트웨어 찾아 설치하게 된다고 한다.

내 경우는 compiz 설치를 위해 명령어 및 여러 인터넷에서 알려주는걸 해봤는뎀.. 다운로드가 안되어 고민을 했었는데 저 파일에 있는 설정을 바꾼뒤 다운로드가 아주 잘 되었다.

서버를 한국-> 주서버 로 바꿨을 뿐.. 아 참고로 최신 ubuntu 버전을 사용중이다.
반응형
반응형

자.. 디자인 관련된 이야기가 전 Iteration 마지막 부분에 나왔다.
이번 Iternation 에서는 Page Layout 을 만들어 보겠다. view 폴더의 Layout 폴더 아래 store.html.erb 파일이라는 Layout 파일을 만들어 보자.

depot/app/views/layouts/store.html.erb (만들어야 하는 파일)

간단하게 하나를 만들었다. 이렇게 만들어진 Layout 파일은 Controller 이름인 store 랑 같기 때문에 컴파일 할때 Rails 는 위의 Controller 와 같은 이름의Layout 을 적용 시킨다.

<%= stylesheet_link_tag "depot" , :media => "all" %> : depot.css 의 link 태크 부분을 적용시킨다.
<%= @page_title || "Pragmatic Bookshelf" %> : @page_title 인스턴스 변수에  페이지 헤딩 값을 넣는다. 그런뒤
main div 태그에 <%= yield :layout %> 를 넣어 주었다. (질문)

depot/public/stylesheets/depot.css

그닥 멋진 layout 은 아니지만 일단 밋밋한 하얀색 바탕의 페이지보다는 멋지게 변한듯 하다. ㅡ,.ㅡa (그런가?)
반응형
반응형
관리자가 물품 등록을 하고, 물품관련 상세 내용을 올릴 수 있는 Depot 에플리케이션을 만들어봤다.
이제 고객이 들어와 물품을 보고 고르고, 구입할 수 있는 에플리케이션을 만들어보자

1) Catalog Listing (카탈로그 리스트)

depot> ruby script/generate controller store index

Store 라는 이름의 Controller를  generate 유틸리티로 만든다. 위에 index 가 붙었는데 이건 Method 이름이다.
전에는 Product 라는 Controller 만 만들었지만, 이번엔 Store 라는 Controller 를 만들며 그 안에 index 라는 Method 를 함께 만드는 것이다. 

웹페이지가 뜨는지 확인한다. http://localhost:3000/store

잘 만들어 졌다면, 첫번째로, 데이터 베이스에 있는 품목 리스트를 보여주는것으로 시작을 해보자.
strore_contoller.rb 안에 있는 index Method 를 바꿔줘야 한다.

depot/app/controllers/store_controller.rb

위의 코드는  Model 에서 품목 리스트를 들고 와야 한다는 내용의 코드이다.

자 다음은 Controller 에서 호출을 받은 Model 이 판매되고 있는 품목 리스트(producst_for_sale)를 Method 를 통해 찾는다.

depot/app/models/product.rb

find 는 Rails Method 이다. find Method 는 Product Object 를 들고 있는 Array 를 반환하는데 Array 안에는 데이터 베이스에서 받는 각각의 Row 별 값들이 들어있다.  :all 파라미터는 주어진 조건의 모든 Row 값들을 들고 온다는 뜻이며 :order 를 주어 "title" 컬럼으로 Sorting 되어 들고 오라는 뜻이다.
들고 온 뒤에는 find_products_for_sale Method 는 자신을 호출한 Controller 로 받아온 값들을 돌려준다.

자 Controller 는 값들을 받았으니, View 를 통해 결과값들을 보여줘야 한다.

depot/app/views/store/index.html.erb

아직 CSS 파일이 없어 보기 좀 그렇지만.. 일단 기능적으로 원하는 부분이 완료 되었다.
반응형
반응형
 
1) 리스트 이쁘게 만들기....

리스트가 너무 밋밋하다. 좀 꾸며보자..

데이터만의 Migration 을 해보자.. Method 가 3개다.. Up, adds, Down..
up: products 테이블을 지우고, adds 는 products 테이블에 3개의 데이터를 넣게 되며 down Method 는 테이블을 비운다.

depot> ruby script/generate migration add_test_data

위의 명령어 줄을 넣어주면 /db/migrate/20080601000003_add_test_data.rb 파일이 생성된다.
이 파일안에 코드를 넣게 되는데, Create Method 를 사용하여 넣어준다.


그런뒤 depot.css 와 image 파일들을 다음 경로에서 다운받아 각각 public/stylesheets 와 public/images 폴더에 넣어 두면 된다. add_test_data.rb 도 테스트 파일이기 때문에 직접 치지 않고 아래 링크에서 다운받아 사용해도 된다.


depot> rake db:migrate

자 rake 명령어 까지 모두 쳤다면, 파일 수정을 하여 css 파일을 사용하게 하며, 테이블로 리스트를 보여줌으로써 기존에 scaffold 가 만들어준 view 를 덮어 써보자

depot/app/views/layouts/products.html.erb

depot_c/app/views/products/index.html.erb

코드를 보면 대충 알겠지만, 
  a) list-line-odd, 와 list-line-even 을 돌려 홀수라인과 짝수라인 색을 다르게 하여 보여준다는것을 알 수 있다.
  b) 그리고 link_to 'Destroy' 를 보면 :confirm=> "Are You Sure" 가 씌여 있는데 'Destroy (없애다)' 링크를 누르면 확인 버튼
     이 팝업으로 떠 지우기전 확인을 하게 하는걸 알 수 있다.
  c) h Method 를 사용하여 product  title 과 description 에 남아있는 Html 코드를 뛰어 넘게 했다.

이렇게 함으로써 리스트까지 완료하였다.

이제껏 우리가 한 일을 정리해 보면
1) development 데이터베이스를 만들어 Rails 에플리케이션과 연결하였다.
2) Migrations 을 사용하여 Development 데이터 베이서의 스키마를 만들고 수정하였으며 테스트 데이터를 가동시켰다.
3) products 테이블을 만들었으며 scaffold generator 로 사용가능한 에플리케이션을 만들었다.
4) 코드도 작성했는데, 그중 하나는 유효여부를 확인하는 코드이며
5) view 코드를 작성하여 좀더 이쁜 리스트가 나오게 만들었다.


자.. iteration 4 는 여기서 끝이다.
여기까지 작업하면서 몇가지 궁금한 점이 생겼다. 작동이 어찌 되는거지? 그냥 따라 하기만 하면 되는건가?

솔직히 Rails 는 처음 경험해 보는 언어이며, MVC 구조도 처음이다. 그래서 이해 하지 못한 부분들이 있기 때문에 읽으면서 건너 뛴 부분들도 많다. 물론 모든 부분들을 이해하면 좋겠지만, 내가 웹 언어를 공부하는 방법중 하나는 따라하기다.
물론 처음 언어를 공부하게 된다면 심도있는 길을 선택해야 겠지만, 내 목표는 일단 Ruby on Rails 를 통한 MVC 구조 이해 및 agile web development 를 배우는 것이다. 
pdf 를 읽어보며 하나의 작은 쇼핑몰을 만들어 가는 이 책은 내 목표에 딱 맞는 듯 싶다.

좀더 공부해 보면 심도있게 재 정리 할 수도 있을 테고.. 그날이 오기만을 기다리며 읽어 내려갈 뿐.. ㅋㅋㅋ
자.. 이제 할일은..
depot> 폴더를 지우고, 다시 첨부터 해보는 거다. iteration 이 분단위로 일어나기 때문에 총 15분 이내로 다시 한번 만들어 볼 수 있을 듯.. ㅋㅋㅋ
반응형
반응형


1) Validation

Iteration 3  에서는 textbox 들에서 들어오는 변수들의 유효성 확인을 한다.

app/models/product.rb 파일을 열어 Class 안에 다음 줄을 추가한다.

자 위에 추가된 부분들로
   a) title, description 그리고 image_url 필드가 비어있는 지
   b) Price 필드에 $0.01 이상의 가격이 들어가 있는지
   c) title 의 중복이 있는지
   d) image url 이 유효한지
의 유효성을 확인한다.


반응형
반응형


1) 없는 컬럼 추가하기
Iteration 1 에서 Product 테이블을 만들었고, 페이지에서 데이터를 추가하고 빼고 하는 페이지들을 만들어 봤다.
Iteration 2 시작에서는 필요한 컬럼중 초기에 만들지 않은 컬럼을 테이블에 추가해 보기로 하겠다.
가격(Price) 컬럼을 만들어 보겠다.

depot> ruby script/generate migration add_price_toProduct price:decimal

위의 명령어를 치게 되면 아래와 같은 .rb 즉 루비 파일이 생성된다.
db/migrate/20080601000002_add_price_to_product.rb

Coordinated Univeral Time, UTC 를 토대로 파일이 만들어지며, 파일 이름은 YYYYMMDDhhmmss 형태로 시간으로 형성된다. 위의 파일을 열면 아래 링크와 같은 코드를 볼 수 있을 것이다.
http://media.pragprog.com/titles/rails3/code/depot_a/db/migrate/20080601000002_add_price_to_product.rb
관련된 설명은 생략하겠다. 지금은 그냥 보기만 해도 프로그램을 해본 지식이 있는 분들이라면 알아볼 수 있을것이다.
이해가 안되더라도 지금은 크게 문제가 되지 않는다.

depot> rake db:migrate

명령어를 치면 Rails 는 위에 만들어진 루비 파일을 적용시킨다.
(주의 할점: 가격 변수 형태를 Decimal 로 잡았다. Float 으로 잡지 않은 이유는 반올림시 Float 형태는 오류가 있기 때문이다. )

다음은 Views 쪽 파일들을 열어 필요한 부분을 수정해야 한다.

depot/app/views/products/index.html.erb

depot/app/views/products/new.html.erb

depot/app/views/products/edit.html.erb

여기까지 수정이 완료 되어 페이지들을 확인해 보면 Price 컬럼이 추가되어 있는걸 볼 수 있다.
서버를 돌리고 있었다 하더라고 다시 실행할 필요가 없는 이유는 페이지에서 Model 에 요청이 들어가면 최근 업데이트된 db 스키마로 자동 업데이트 되기 때문이다.

Download depot_a/app/views/products/show.html.erb

Markup 이 함께 보여지고 싶다면 h 를 제거 하면 된다.
depot/app/views/products/show.html.erb
반응형
반응형


1) Depot application 을 만든다.

rails Depot : 만들게 되면 Depot 디렉토리 안에 필요한 폴더와 파일들이 만들어진다.
rails --database=mysql Depot: MySql 을 사용하여 db 를 만들게 된다.

2) DataBase 만들기
Depot> rake db:create RAILS_ENV='development'
Depot> mysqladmin -u root create depot_development (mySQL 사용시)

Depot\Config\> 의 database.yml 파이을 열면 다음과 같이 보여진다.
development:

adapter: mysql
encoding: utf8
Ë database: depot_development
Ì username: root
password:
host: localhost

이 외에도 리스트에 넣을 수 있는 게 있다.
Socket :  MySQL 데이터베이스 아답터에게 서버와의 소켓을 설정할 수 있으며 또한 아래의 명령어로 올바른 소켓을 찾을 수 있다.
mysql_config --socket
pool : 어플리케이션에 연결될 수 있는 사용자 수

3) 디비 연결 테스트 하기
명령라인 2개로 전체적인 application 의 틀과 db 연결을 만들어봤다.
mySql 서버 시작 명령어 : sudo /etc/init.d/mywql start
잘 되는 지 테스트를 해보려면 아래의 명령어를 치면 된다.
depot> rake db:migrate
이 명령어가 무엇을 하는지는 지금 알필요가 있을까? 있더라도 패스..
다음의 명령어를 실행해 보자, 에러가 났다면 위의 yml 파일을 열어 확인하자.
depot> mysql -u root depot_development
mysql> create table dummy(i int);
mysql> drop table dummy;
mysql> exit 혹은 quit

4) 품목 모델과 시스템 관리 어플리케이션을 만들어보자
depot> ruby script/generate scaffold product  title:string description:text image_url:string
명령어를 치고 나면 여러가지 일들이 일어난다. MVC 모델 중 Model 관련된 부분들이 만들어진다.
위의 명령어를 치면 각 model, view, controllers 폴더 아래 필요한 파일들과 폴더들이 만들어진다.

depot> rake db:migrate
위의 명령어는 만들어진 development 데이터베이스에, product 테이블에, title 컬럼은 string이며 description 컬럼은 text, 그리고 image_url 컬럼은 string 으로 세팅이 된다. 정말 만들어졌는지 궁금하다면, mysql 에서 depot_development db 에 연결하여 select * from product 라고 쳐보자. 아마 아무런 데이터가 있지 않겠지만은, 테이블이 생성된걸 확인 할 수 있을 것이다.

위의 명령어들로 일단 db 에 테이블 도 만들어졌고, application 에서 db 연결될 수 있도록 준비가 다 되었다.

자 그럼 WEBrick-based web serer 를 실행시켜 보자
depot> ruby script/server

서버가 실행되고 있다면, 익스플로러 혹은 다른 웹 브라우저 상단/하단 URL 창에
http://localhost:3000/products
라고 치면, 페이지들이 볼 수 있을 것이다.

이로써 iteration 1 이 끝났다.

출처 : Agile Web Development with Rails (Third Edition by Sam Ruby, Dave Thomas, David Heinemeier Hansoon with etc) 위의 내용은 직접 웹에서 구입한 agile Web development with Rails 의 pdf 파일(영문) 에서 읽고 이해한 내용 중, 개인적으로 필요한 부분을 추스려 올린 것으로, 만약 문제시 삭제될 수 있다.
반응형
반응형
몰랐던 부분 중 하나..
자동 리로드가 있다는거.. ㅡ,.ㅡ

5초 뒤 페이지 리로드:
<meta http-equiv="refresh" content="5" />

5초뒤  http://example.com/ 페이지로 옮기기:
<meta http-equiv="refresh" content="5;url=http://example.com/" />

http://example.com/ 로 바로 옮기기:
<meta http-equiv="refresh" content="0;url=http://example.com/" />

반응형
반응형

asp 에서 아래와 같이 주면 날짜계산이 된다..

if DateDiff("d", Date(), "1/1/2000") < 11 then
   Response.Write "WooTWooT"
end if

오늘 날짜와 1/1/2000 간의 날짜가 11일 보다 작으면 "WooTWooT" 를 보여준다.
반응형
반응형

배경: 선물 쿠폰을 들고와 매장에서 물건을 사고 쿠폰을 이용하여 잔액을 낸다.
        쿠폰번호를 입력하고 인증 서버에 인증요청한뒤 결과를 가지고 온다.
        인증서버는 2000 서버이고 웹포스 서버가 따로 존재하고 있다.
문제: 인증서버를 2003 서버로 업그레이드 한 뒤 인증 서버에서 결과물을 들고 올 수가 없다.

어느날 매장에서 쿠폰 인증이 되지 않아 쿠폰관련된 상품을 판매 등록할 수 없다고 연락이 왔다.
문득 생각에 요즘 보안 정책이 까다로워 져서 서버관리자에게 문의를 해봤지만, 80 포트를 막지 않는다고 한다.
ㅡ,.ㅡ 당연한건가? 난 잘 모르겠지만, 여하튼 그래서 인증서버 관리자에게 문의를 했다.
최근 바뀐 거라곤 2000 에서 2003 으로 서버 OS 를 업그레이드 한 거 밖에 없다고 한다. 음.. 그게 다라고?

asp 소스를 가만 히 보니 인증을 위해 get 형식으로 ULR 을 조합하여 ServerXMLHTTP 객체를 생성한뒤 값을 태운다.
그럼 이부분에서 문제가 있는게 당연한데, 솔직히 ServerXMLHTTP 객체가 뭔지 몰라 인터넷을 찾아봤다

ServerXMLHTTP 의 정의는 MSND 고객지원에 가보면 아래야 같이 정의가 되어 있다.
"ServerXMLHTTP는 다른 웹 서버 간에 서버의 안전한 HTTP 액세스를 위한 메서드와 속성을 제공합니다. 이 개체를 사용하면 다른 웹 서버 간에도 XML 데이터를 교환할 수 있습니다."

음.. 그렇군.. 그리고 바로 밑에 플랫폼 요구사항을 보니 windows 2000 서버에서나, NT 4.0 과 IE 5.01 이상에서 사용할 수 있다고 씌여 있는데, 중간에 아는 선배가 MSXML2.ServerXMLHttp 말고 Microsoft.xmlHTTP 로 써바.. 라고 이야기를 해주셔서, 그렇게 했더니 일단 작동이 되어 매장의 불만을 해소 시켜줄 수 있었다. 하지만, 궁금증은 더 커졌고..그럼.. 2003 서버에서는 안되나? 라는 궁금증이 생겨났고, 좀더 읽어 내려갔다.

XMLHTTP 와 ServerXMLHTTP 설명이 나왔다.
XMLHTTP 는 클라이언트 응용프로그램용으로 설계된것. WinInet 기반, URLMon 에 의존
ServerXMLHTTP 는 서버 응용 프로그램용으로 설계된 것, HTTP 클라이언트 스택인 WinHTTP 에 의존

 (뭥미? ㅡ,.ㅡ)

대충 XMLHTTP 도 뭔지 알게되었다. 그럼 2003 에서는 XMLHTTP 가 돌지 않는 이유는 뭘까?
인터넷을 뒤져보니 XsXml2.ServerXmlHttp.4.0 을 사용하려고 하는데 Windows 2003 R2 Sp2 에서 에러가 난다고 하더라..
답변을 보니, IE6 과 그 이상 브라우저들은 MSXML3 이 탑재되어 있어 MSXML2.ServerXMLHTTP.3.0 의 사용이 가능하다고 한다.

음 그럼 Set objXmlHttp = CreateObject("MSXML2.ServerXMLHTTP.3.0") 이라고 써주면 된다 이거쥥?
안되더라.. ㅡ,.ㅡ 췟.. 
결국엔 Set objXmlHttp = CreateObject("Microsoft.xmlHTTP") 이걸 지금 사용중이다.

이부분에 대해서 아시는 분 알려주세요 ㅠ.ㅠ 문제 없이 사용하고 있지만, 절대 뭔지 모르고 사용하고 있다눈.. ㅠ.ㅠ

반응형

+ Recent posts