작은 것이 아름답다.

‘작은 것이 아름답다.’라는 말을 들어보셨나요? ‘Simple is beautiful’ 이라는 유닉스 철학인데, 요새 매쉬업이라는 개념을 보고 있으면 바로 이 말이 떠오르곤 합니다.

유닉스 철학 중에는 ‘출력이 다른 프로그램의 인풋으로 사용될 수 있다고 예상하라. (Expect the output of every program to become the input to another, as yet unknown, program.)’ 라는 항목이 있습니다. 파이프 라는 말을 들어보셨을지 모르겠지만 이를 이용하면 다른 프로그램의 출력을 내 프로그램의 입력으로 받아 사용할 수 있기 때문에 복잡한 프로그램을 만들기보다는 간단한 프로그램을 만들고, 이미 만들어져있는 프로그램들과 조합을 해서 사용하는 것이 가능해집니다.

예를 들어봅시다. A 란 파일에는 이름들이 리스트되어 있습니다. 이 파일의 내용을 확인하기 위해서 cat 을 사용해봅시다.

파일의 내용이 정렬되어 있지 않기 때문에 내용을 확인하는게 쉽지 않습니다. 하지만 이름들을 정렬시키는 일은 얼운 게 아닙니다. 출력을 pipe(|)를 이용해서 sort 로 넘겨주면 되거든요.

cat 은 A의 내용을 읽어 표준출력(stdout)으로 출력하고 파이프는 cat의 표준 출력을 sort의 표준 입력으로 연결해줍니다. sort는 표준 입력에서 값을 읽어들인 뒤 이 값들을 정렬해서 다시 표준 출력으로 출력해주게 됩니다.

값을 정렬해놓고 보니 동일한 이름이 여러번 입력되있는 것을 확인할 수 있었습니다. 중복된 값을 제거하기 위해 uniq를 이용해봅시다.

cat, sort, uniq 프로그램은 아주 간단한 동작 만을 담당하고 있지만 이 프로그램들을 조합하니 많은 일을 할 수 있게 되었습니다. 자 그럼 매쉬업은 어떨까요?

지도를 제 홈페이지에 추가해보고 싶었습니다. openAPI를 사용하여 지도를 제 홈페이지에 삽입했습니다.

제가 오늘 들렸던 곳들을 입력받아 지도에 표시하고 싶어졌습니다. openAPI를 사용하여 지도를 제 홈페이지에 삽입하고, 여기에 제가 오늘 있었던 곳을 출력합니다.

오늘 들렀던 곳에서 찍은 사진들을 flikr에 올려두었는데, 이 사진들을 이 지도에서 볼 수 있는 기능을 추가하고 싶어졌습니다. flikr의 openAPI를 이용해서 좀 전에 만들어놨던 프로그램을 확장합니다.

제가 아는 openAPI 서비스들이 많지 않아서 복잡한 예를 들 수가 없네요. 어쨌든 파이프를 이용하느냐 아니면 http, xml, json, ajax를 이용하느냐의 차이가 있을 뿐 비슷하지 않나요. ;)

Published by

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">