야심한 밤이다. 제주도 한라산 아래 자리잡고 있는 이곳은 주변이 한적해서 아무런 소리도 들리지 않는다. 잠깐 밖에 나갔다 왔다. 쌀쌀하니 군복 입고 생활하던 시절 보초 나갔다 온 느낌이다. 답답한 느낌과 상쾌한 느낌이 반반이다. 넒은 사무실에 혼자 있는 것도 기분이 나쁘지 않다. 아무런 간섭없이 혼자 있을 때가 참 행복하다. 물론 그 장소가 집이라면 식상하겠지. 지난주 강원도 가평에 있는 펜션에 친구들과 놀러갔을때도 모두가 잠든 조용한 새벽 나 혼자 거실로 나왔다. 쇼파에 누워서 이불 덮고 음악채널과 영화채널을 돌리면서 두 시간을 그렇게 있었다. 잠자던 친구들이 깜깜하고 낯선 방에서 문을 못찾아 헤메는 걸 도와주는 것도 재밌었다. 나의 선행을 기억하는 친구는 아마도 없을 듯.
노래 들으면서 삼양라면을 먹고 있다. 남은건 눈(目)이다. 그래서 구글어스를 실행시켰다. 제주도에서는 마음만 먹으면 언제라도 바다를 볼 수 있지만 중국 내륙에 있는 사람들은 바다 보기가 참 힘들겠다는 생각이 들었다. 바로 가는 비행기가 있다고 해도 10시간은 걸릴것이기 때문이다. 지도를 보니 Hunan, Changsha가 보인다. 삼국지에 나오는 허난과 장사를 뜻하는건지는 잘 모르겠지만 낯설지 않은 이름이라 그 쪽으로 떠나기로 마음 먹었다. 둘 중 Changsha를 선택했다. 문명과는 거리가 먼 산동네라서 통나무 집을 짓고 비포장 도로에 달구지를 끌고 다니는 그런 모습을 상상했었다. 하지만 생각보다 도시가 크다. 강변북로나 올림픽대로를 연상시키는 도로가 있고 그 위에 차들이 지나 다닌다. 많진 않지만 신기하다. 잔디축구장도 있다. 거리도 잘 정리되어 있다. 예쁜 건물도 보이고 유적지 같은거도 보이고 광장도 보인다. 중국 여행 끝!!
마지막으로 기념 사진 한 장. 나중에 시간나면 가봐야지.
웹애플리케이션 개발을 위한 프레임웍이다. 데이터베이스에서 뷰까지 모든 개발 과정을 쉽게 할 수 있도록 도와주는 프레임웍이다. 그렇다면 어떤 컴포넌트로 이루어져 있는지 보자!!
turbogears.org 에서 퍼온 그림인데 예쁘게 참 잘 그렸다.
- SQLObject : ORM(object-relational mapper) 중 하나다. 말 그대로 python의 object와 relational database의 relation(내가 아는건 relational database밖에 없는데..)을 맵핑해주는 콤포넌트이다. object와 table을 수작업으로 맵핑해줄 필요없이 자동으로 해주므로 사용하기가 편하다. 옆자리 있는 개발자분 의견에 따르면 ORM은 너무 느리다고 한다.
- Cherrypy : Turbogears는 Cherrypy를 사용한다. cherrypy는 python으로 만들어진 object-oriented HTTP framework이다. python으로 일반적인 프로그래밍을 하듯이 웹애플리케이션을 구현할 수 있는게 장점이자 특징이다. 아마 TG Webservice를 설명할 때 느껴볼 수 있을 것 같다.
마우스 클릭 몇번으로 웹페이지에 Hello World를 보여줄 수 있다.
파이썬 프로그램이 윈도우에서 잘 안돌아가는 경우가 많은데 이 정도쯤(!)은 윈도우라도 상관없다.
http://download.cherrypy.org/cherrypy/
1. 이곳에 가서 3.x를 받아서 설치한다. (물론 Pyhon이 먼저 설치되어 있어야 한다.)
2. 콘솔창에서 python을 실행한다.
import cherrypy
class HelloWorld(object):
def index(self):
return "Hello World!"
index.exposed = True
cherrypy.quickstart(HelloWorld())
3. 위 소스를 그대로 복사해서 붙혀넣기 한다.
4. 서버가 돌아가기 시작한다.
5. localhost:8080으로 접속하면 'Hello World!'가 출력되는걸 확인할 수 있다.
신기신기 동방신기~
- Kid : 템플릿 엔진이다. Velocity는 심플해서 좋았는데 이건 좀 많이 낯설다.
- Mochikit : javascript 라이브러리.
Turbogears를 구성하는 컴포넌트를 보니 어디서 많이 보던거다. 바로 MVC 패턴이다.
Turbogears에 대해서 대충 알았으니 다음에는 바로 TG Webservice에 대해서 알아 보자.
열심히 일을 해도 시원찮을 판에 기분이 꿀꿀하거나
하루 일과가 따분하다거나
생활패턴이 나태해졌다고 느껴질 때
아래 글을 읽어 보자~
http://jameschung.kr/1012
그래도 피곤한건 피곤한거고
잠이 오는건 어쩔수 없고
몸은 말을 안듣고
멍 때리고
뭐 그런거지
이런 마음이 들었다면 아래 링크를 따라가보자.
http://k.daum.net/qna/view.html?qid=3eE6D&q=%C1%F7%C0%E5%C0%CE+%C1%F5%C8%C4%B1%BA&nil_no=9589
사람 사는거 다 똑같다. :)
Simple Object Access Protocol (SOAP)
SOAP provides a standard packaging structure for transporting XML documents over a variety of standard Internet technologies, including SMTP, HTTP, and FTP. It also defines encoding and binding standards for encoding non-XML RPC invocations in XML for transport. SOAP provides a simple structure for doing RPC: document exchange. By having a standard transport mechanism, heterogeneous clients and servers can suddenly become interoperable. .NET clients can invoke EJBs exposed through SOAP, and Java clients can invoke .NET Components exposed through SOAP.
웹서비스에서 요청/응답 메세지는 XML을 사용한다. SOAP은 이러한 XML을 SMTP, HTTP, FTP 등을 통해서 보내며 이를 위한 데이터 구조(standard packaging structure)를 정의한다. 그리고 RPC 구현을 위한 단순한 구조를 제공한다. 표준 전송 메커니즘을 가짐으로서 서로 다른 플랫폼을 가지는 서버와 클라이언트간의 통신이 가능하게 한다. 즉, .NET 클라이언트에서 SOAP를 통해서 EJB를 호출할 수 있고 그 반대도 가능하다.
Web Service Description Language (WSDL)
WSDL is an XML technology that describes the interface of a web service in a standardized way. WSDL standardizes how a web service represents the input and output parameters of an invocation externally, the function's structure, the nature of the invocation (in only, in/out, etc.), and the service's protocol binding. WSDL allows disparate clients to automatically understand how to interact with a web service.
통일된 방법으로 웹서비스 인터페이스를 기술하기 위한 XML 기술이다. input과 output, 함수 구조, 서비스 프로토콜 바인딩을 표현하는 방식을 표준화한다. WSDL은 서로 다른 클라이언트가 웹서비스를 통해 상호 작용하는 방식을 파악하게 해준다.
Universal Description, Discovery, and Integration (UDDI)
UDDI provides a worldwide registry of web services for advertisement, discovery, and integration purposes. Business analysts and technologists use UDDI to discover available web services by searching for names, identifiers, categories, or the specifications implemented by the web service. UDDI provides a structure for representing businesses, business relationships, web services, specification metadata, and web service access points.
advertisement, discovery, and integration를 위한 웹서비스의 전세계 레지스트
리를 제공한다. 사용자(Business analysts and technologists)들은 이름, 식별자, 카테고리 등의 검색을 통해서 사용가능한 웹서비스를 찾는다.
<document>
<header>
<title>apple</title>
<datetime>2008-10-10, 23:10:00</datetime>
</header>
<content>사과는 빨갛다.</content>
</document>
import java.io.FileInputStream;
import java.io.IOException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.xml.sax.InputSource;
public class XmlParser {
public static void main(String[] args) {
String url = "src/sample.xml";
try {
start(url);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void start(String url) throws IOException {
XPathFactory xfac = XPathFactory.newInstance();
XPath newXPath = xfac.newXPath();
try {
String xpath = "document/header/title";
XPathExpression compile = newXPath.compile(xpath);
InputSource in = new InputSource(new FileInputStream(url));
String result = compile.evaluate(in);
System.out.println(result);
} catch (XPathExpressionException e) {
e.printStackTrace();
}
}
}






Recent Comment