Passion/Programming 47

WSDL - SOA를 사용하기 위한 방법

요즘 Open API니 하면서 많이 나오는 용어들에 숨어 있는 기술이 웹서비스이다. 기존의 단순한 http를 통해서 html을 받는 것이 아니라 복잡한 데이터를 제공하기 위한 방법이 필요하다. 이를 정의하는 것이 웹서비스이고, 이 안에는 UDDI, WSDL 이란 기술들이 사용된다. [wp.en]WSDL[/wp] (Web Service Description Language) ~ [ 위키피디아에 따르면 wiz-dull, 또는 W.S.D.L 이라고 발음] 이는 웹서비스간에 통신을 위해서 XML 기반의 서비스를 정의한 것이라고 보면 된다. WSDL(1.1 버전)에서 정의해야 할 내용들 Types : 데이터 타입을 정의함 Message : 서로 통신하는 데이터의 추상화(타입 포함) Operation : 통신에서 ..

Passion/Programming 2007.06.20

파란 문자보내기(유료ㅜㅜ)

핸드폰을 누르는 것보다 비록 유료지만 파란 홈페이지를 열어서 문자를 보내는 것이 더 편리하다. 결국 문자를 보내는데 돈이 더는 건 마찬가지니까! 그런데 문제를 보내기 위해서 파란 홈페이지에 로긴을 하고 sms 페이지를 찾아가는 것 또한 귀찮은 일이기도 하다. 그래서 어떻게 하면 문자만 보내고 불필요한 정보들은 버릴 수 있을까 고민하다고 열심히 소스를 분석하면서 문자 보내는 방법을 연구했다. 문자를 보내는 방법은 문자를 보내는 페이지에 필요한 정보(메시지 내용, 보내는전화번호, 받는전화번호)들을 내 PC에서 작성한 다음 문자호출 페이지로 이 정보들을 보내는 것이다. 코드를 보면 근데 문제는 로긴을 해야한다는 것. 예를 들어 파이어폭스에서 파란에 로긴된 상태에서 새창을 뛰우고 위 소스를 실행하면 문자를 보낼..

Passion/Programming 2007.06.19

cscope 사용하기 + Emacs + FreeBSD

- FreeBSD에서 cscope 설치하기 $ pkg_add -r cscope (패키지로 설치하면 emacs 사용시 필요한 것들을 만들지 못한다) $ cd /usr/ports/devel/cscope $ make (cscope-indexer, xcscope.el 을 적당한 장소로 옮겨야 한다) $ cd /usr/ports/devel/cscope/work/cscope-15.6/contrib/xcscope/ $ cp cscope-indexer /usr/local/bin $ cp xcscope.el /usr/local/share/emacs/site-lisp/ - emacs 용 설정 하기 좀전에 copy 한 xcscope.el 파일을 보면 자신의 .emacs 파일에 무엇을 추가해야 하는지 나온다. .emacs 파..

Passion/Programming 2007.03.12

getopt 사용하기

프로그램을 짜다 보면 시작시 인자를 받을 때가 많다. 이 인자는 argv를 통해서 받는데 소시적에는 이러한 인자의 순서를 정하고 이에 맞춰서 인자들이 제대로 들어왔는지를 하드코딩을 했다. 그건 물론 아무도 getopt을 쓰면 좀더 잘 짤 수 있다고 말해준 친구들이 없었기 때문이지만 ㅡ,ㅡ 간단하게 getopt을 사용하는 방법에 대해서 정리를 해보겠다. 참조는 man 3 getpot을 하면 된다. ********************************************* include 해야하는 파일 : unistd.h extern char *optarg; extern int optind; extern int optopt; extern int opterr; extern int optreset; int..

Passion/Programming 2007.03.03

vim 7.0에서 탭윈도우 사용하기

Vim 7.0에서 나온 기능 중에 하나가 탭 윈도우이다. 탭윈도우는 기존에 screen을 통해서 여러 윈도우 사이를 변경하는 불편함을 줄여준다. 사용 방법: 1. 여러개를 한꺼번에 열때 vim -t a.txt b.txt c.txt 2. 현재 vi창에서 새 탭으로 열기 :tabnew b.txt (b.txt가 존재하면 열고, 없으면 새로 만들어서 연다) :tabf b.txt (b.txt가 존재하면 열고, 없으면 에러 발생) 3. 탭 사이 이동 :tabp (이전 탭으로 이동) :tabn (다음 탭으로 이동) :tabfirst (:tabfir 처음 탭으로 이동) :tablast (마지막 탭으로 이동) 4. 열려 있는 탭의 종류 :tabs 5. 탭의 배열 변경 (이동을 원하는 창에서) :tabm 은 원하는 위치 ..

Passion/Programming 2007.01.25

C코드 파싱한 정보 분석

우연히 C코드의 AST는 어떻게 만들어 질까에 대해서 검색을 하다가 gcc의 파싱 정보를 보여주는 옵션을 발견하였다. [CODE type=C] int main() { int a=0; a++; return 0; } [/HTML][/CODE] #gcc -fdump-translation-unit hello.c 이 옵션을 주면 hello.c.tu 라는 파일이 생성되고 파싱된 정보를 기록합니다. 하지만 아직까지 파싱된 정보를 해석하는 방법은 잘 몰라요 ㅋㅋ 이외에 cpp 클래스를 분석하는 옵션도 있다. (hello.cpp가 있다고 가정할떄) #gcc -fdump-class-hierarchy hello.cpp 이옵션을 주면 hello.cpp.class라는 파일이 생성되고 클래스 상속관계를 보여준다. 이 놈도 아직 ..

Passion/Programming 2007.01.25

동적 라이브러리 만들기

동적 라이브러리 만들기는 정적 라이브러리 만들기와 매우 유사하다. 단지 컴파일 방법이 다르고, 내부 동작 메커니즘이 다를 뿐이다. 간단하게 hello, library world를 찍는 동적 라이브러리를 생성하고, 이를 사용하는 방법에 대해서 알아보도록 하겠다. 동적 라이브러리 파일 (libhello.c) [CODE type=C] /* shared library file */ #include void hello(void) { printf("Hello, library world\n"); } [/HTML][/CODE] 컴파일 하기 (Position Independet Code) # gcc -fPIC -o libhello.o -c libhello.c 공유라이브러리로 만들기 # gcc -shared -c libh..

Passion/Programming 2007.01.17

정적라이브러리

우리가 프로그램을 보면서 쉽게 접할 수 있는 xxxx.a 의 형식으로 된 파일을 말한다. 정적라이브러리는 단순히 오브젝트파일들의 묶음으로 보면 된다. 우리가 어떤 C파일을 오브젝트 코드(xxx.o)로 컴파일하고 나서 이런 오브젝트 파일들을 압축툴(ar)을 이용하여 하나의 정적라이브러리 파일로 생성하는 것이다. 이는 최근에는 많이 사용되지 않는 방법이지만, 라이브러리는 공개하고 소스는 공개하고 싶지않을 때 사용하는 방법이라고 보면 된다. 장점 : 정적 라이브러리는 사용자들이 프로그램을 다시 컴파일하지 않아도 링크시킬수 있도록 해주기 때문에, 컴파일 시간을 줄여준다. 정적 라이브러리를 만드는 방법 : ar rcs mylibrary.a file1.o file2.o 이 예제 명령은 오브젝트 파일 file1.o,..

Passion/Programming 2007.01.09