JsonML을 사용하여 UI 엘리먼트 구현 및 확장하기

Martin Brown, Developer and writer, Freelance

JsonML을 사용하여 UI 엘리먼트 구현 및 확장하기
JavaScript Object Notation (JSON)과 Asynchronous JavaScript + XML (Ajax)은 나란히 성장하고 있습니다. JSON은 JavaScript 객체로 바뀔 수 있는 데이터를 쉽게 전송할 수 있지만, 이 객체를 다루기 위해 커스텀 스크립팅이 필요합니다. JsonML은 JSON의 확장으로, JSON 유형 마크업을 사용하여 XML 데이터를 매핑하고, 이는 JSON 마크업에 기반하여 XML이나 XHTML 데이터를 쉽게 생성할 수 있고 사용자 인터페이스(UI) 엘리먼트를 쉽게 구현 및 교환할 수 있도록 합니다. 이 글에서, 이 편리한 툴을 사용법을 설명합니다.

Ajax로 데이터 교환하기
Ajax 인터페이스가 가진 가장 일반적인 문제들 중 하나는 클라이언트 브라우저와 호스트 서버 간 정보 교환에 인코딩 및 사후 처리(post-processing) 또는 데이터 스트림을 JavaScript 애플리케이션 내에서 직접 사용할 수 있는 것으로 변환하는 파싱이 필요하다는 점이다. Ajax에서, 캡슐화 방식은 XML이다. 전 세계적인 공통 이해를 기반으로 사용되고 있지만 문제와 한계도 안고 있다. XML의 기본적인 문제는 인코딩 프로세스가 비싸고, 대부분의 브라우저에서, XML 응답의 디코딩(decoding)에 시간이 많이 든다는 점이다. Ajax 애플리케이션을 사용하면, 요청은 폼의 콘텐트에 기반하게 된다. 응답은 서버에 의해 리턴되는 정보가 자바 객체 시리즈로 표현된다. 결과 시퀀스는 그림 1과 비슷하다

그림 1의 프로세스는 두 가지 문제를 갖고 있다.
  • 첫 번째는 XML로 작동하는 것이 매우 복잡하다. XML을 처음부터 생성하든, 서버에서 XML을 소비하든, 프로세스는 시간이 많이 걸리고 지루하고, 대게는 비효율적이다.
  • 다른 문제는 데이터를 디스플레이 포맷으로 변환하는 것이 복잡하다는 점이다. DOM 모델을 사용하여 직접 UI 엘리먼트를 구현하든지, 사전 포맷된 XHTML로 데이터를 제공해야 한다. 후자 방식은 서버가 UI 엘리먼트를 제공해야 한다. (이 자체로 위험한 발상이다.) 전자는 오버헤드를 프로세스에 추가하게 된다.
DOM 모델은 다른 웹 브라우저들과 환경이 다른 DOM 구조와 인터페이스를 갖고 있다는 사실에도 영향을 받는다. 이는 여러분이 로딩하는 정보의 디스플레이에도 복잡성을 추가하게 되고, 이는 전혀 원하던 바가 아니다. 이러한 문제에 대한 솔루션이 많이 있다. 첫 번째 솔루션은 XML 포맷에서 JSON으로 데이터가 교환되는 방식을 변경하는 것이다. 이 부분은 이 글의 초점은 아니지만, JSON을 이해하면 JsonML을 더욱 쉽게 이해할 수 있을 것이다. JsonML은 정보의 실제 디스플레이를 더욱 쉽게 만드는 또 다른 솔루션도 제공한다. 먼저 JSON부터 보도록 하자.

JSON 이해하기
JavaScript Object Notation (JSON)은 XML 사용, 콘텐트의 파싱, JavaScript 표준 기능을 사용하여 정보를 교환함으로써 가용성 있는 내부 구조로의 변환을 통해 대부분의 문제를 해결하려고 한다.
JSON의 중심은 여전히 텍스트 포맷이지만, 가독성이 더욱 강화되었고, 많은 언어들(Perl, PHP, Python, Java, Ruby)로 중첩된 데이터 객체들을 생성하는 방식과 호환되고, 이는 JavaScript 객체 포맷(중첩된 데이터 구조)와 잘 맞는다.
Sample 1-1. XML 주소 데이터
<business>
<name>One on Wharf</name>
<address>
    <street>1 Wharf Road</street>
    <town>Grantham</town>
    <county>Lincolnshire</county>
</address>
<phonenumbers>
    <phone>01476 123456</phone>
    <phone>01476 654321</phone>
</phonenumbers>
</business>
Sample 1-2. XML 데이터를 처리하는 웹 애플리케이션
<html>
<head>
<script type="text/javascript">
var xmlDoc;
function loadXML()
{
// code for IE
if (window.ActiveXObject)
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async=false;
  xmlDoc.load("/json/address.xml");
  getaddress();
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation &&
document.implementation.createDocument)
  {
  xmlDoc=document.implementation.createDocument("","",null);
  xmlDoc.load("/json/address.xml");
  xmlDoc.onload=getaddress;
  }
else
  {
  alert('Your browser cannot handle this script');
  }
}
function getaddress()
{
document.getElementById("business").innerHTML=
xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue;
document.getElementById("phone").innerHTML=
xmlDoc.getElementsByTagName("phone")[0].childNodes[0].nodeValue;
document.getElementById("fax").innerHTML=
xmlDoc.getElementsByTagName("phone")[1].childNodes[0].nodeValue;
}
</script>
</head>
<body onload="loadXML()">
<h1>Address</h1>
<p><b>Business</b> <span id="business"></span><br />
<b>Phone:</b> <span id="phone"></span><br />
<b>Fax:</b> <span id="fax"></span>
</p>
</body>
</html>

JSON에서 같은 정보를 처리하면 어떻게 될까?
Sample 2-1. JSON 버전의 주소 데이터
    "business" : {
        "name" : "One on Wharf",
        "address" : {
            "street" : "1 Wharf Road",
            "town" : "Grantham",
            "county" : "Lincolnshire",
        },
        "phonenumbers" : [
                          "01476 123456",
                          "01476 654321",
                          ]
                      }
}
구조가 훨씬 읽기 쉽고 간단하다. JSON에 사용된 마크업 포맷은 eval()을 사용하여 파서 없이도 JavaScript에서 직접 계산될 수 있다. 그리고 결과는 또 다른 JavaScript 객체이다: var addressbookObj = eval('(' + jsontext + ')');.
주: 이상적으로는 eval()을 사용해서는 안된다. 임의의 텍스트를 실행하는데 사용될 수 있기 때문이다. JSON 텍스트만 파싱하는 많은 JSON 파서들이 있다.
정보가 JavaScript 내 객체라면, 표준 JavaScript 표기법을 사용하여 정보에 액세스 할 수 있다. 예를 들어, 객체로 파싱 되었던 JSON 데이터 소스에서 같은 이름과 전화 번호를 얻을 수 있다.
Sample 2-2. JSON 데이터를 처리s하는 웹 애플리케이션
<html>
<head>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">

function showaddress(req)
{
    var addressbookObj = eval('(' + req.responseText + ')');

    document.getElementById("business").innerHTML = 
       addressbookObj.business.name;
    document.getElementById("phone").innerHTML = 
       addressbookObj.business.phonenumbers[0];
    document.getElementById("fax").innerHTML = 
       addressbookObj.business.phonenumbers[1];
}

function getaddress()
{
   new Ajax.Request('address.json',
                    { method : 'get',
                      onSuccess : showaddress,
                      onFailure: function(){ 
              alert('Something went wrong...') }});
}
</script>
</head>
<body onload="getaddress()">
<h1>Address</h1>
<p><b>Business:</b> <span id="business"></span><br />
<b>Phone:</b> <span id="phone"></span><br />
<b>Fax:</b> <span id="fax"></span>
</p>
</body>
</html>

필자는 여기에서 Prototype 라이브러리를 사용하여 원래 JSON 파일을 로딩했지만, JSON 파일에 있는 정보를 실제로 파싱하고 디스플레이 하는 프로세스가 훨씬 더 간단하다는 것을 알 수 있다. 하지만, 여전히 DOM을 사용하여 JSON 파일에서 로딩되었던 정보로 아웃풋을 채워야 한다.
원래 JSON으로 돌아가서, JSON은 전송되는 데이터의 관점에서 볼 때 비교적 작고, 더 큰 Ajax 프로젝트에서 XML의 페이로드 오버헤드는 상당하다. 실제로 콘텐트를 처리하는 감소된 JavaScript 오버헤드와 이것을 합병할 때 오버헤드가 크다.
위 예제는 JSON 표준의 단순함을 보여준다. 대부분의 Ajax 애플리케이션의 핵심은 정보 디스플레이의 커스터마이징이다. 이 예제에서, 여러분은 DOM 모델을 사용하여 XML 또는 JSON 데이터 콘텐트를 HTML 페이지로 삽입했다. 많은 Ajax 애플리케이션에서, 구현해야 할 더 복잡한 사용자 인터페이스 엘리먼트가 있다.

JsonML?
JSON Markup Language는 JSON 데이터 교환 포맷의 기본 방식을 사용하고 이를 XML 표현에 적용하여 비슷한 텍스트 기반 마크업을 사용하여 XML 포맷 데이터를 교환할 수 있다.
XML을 직접 사용하는 대안으로서 XML 데이터를 모델링 하는 표기법 포맷으로 보인다. 하지만, 원래의 XML과 비교해서 JSON의 구조와 가독성을 생각해 보라. JsonML에서, 많은 장점들을 활용할 수 있다. 가독성과 데이터 크기는 분명한 이점이 된다.
JsonML의 주 초점은 UI 엘리먼트를 구현하는 툴로서이다. 전통적으로, 여러분은 이러한 종류의 브라우저 기반 사용자 인터페이스를 개발하는 두 가지 방식을 갖고 있다.
  • 서버에서 XHTML을 생성하여 DOM 객체의 innerHTML 애트리뷰트를 사용하여 현재 페이지로 삽입한다.
  • 클라이언트 DOM 인터페이스를 사용하여 DOM 구조를 직접 구현한다.
여러분도 보다시피, 이것은 다소 성가신 방법이다. 대형 데이터 세트의 경우, 포맷팅이라는 반복적인 특성이 프로세스를 혼돈시킬 수 있다. 게다가, 브라우저에 민감한 DOM 구현들을 다루는 문제도 있다. 바로 이것이 JsonML이 해결하고자 하는 것이다. JSON 마크업의 단순함과 대상 포맷으로서 DOM을 혼합한다. 여러분은 같은 효과를 볼 수 있다. 소스는 JavaScript 클라이언트에 의해 쉽게 로딩 및 파싱될 수 있다. (DOM 구현에 대해서는 걱정할 필요가 없다.) 또한, 여러분은 JsonML 문서에 모든 것을 기술할 수 있기 때문에, 데이터와 마크업을 하나의 파일로 효과적으로 삽입할 수 있다.

http://jsonml.org/

jQuery로 Ajax 개발을 단순화 하기

Jesse Skinner, Web Developer, Freelance

Ajax와 DOM 스크립팅을 쉽게 하는 방법
jQuery는 JavaScript 라이브러리로서 JavaScript™와 Asynchronous JavaScript + XML (Ajax) 프로그래밍을 단순화 하는데 도움이 됩니다. JavaScript 라이브러리와는 달리, jQuery는 복잡한 코드를 간결하게 표현할 수 있는 독특한 철학이 있습니다. jQuery 원리, 기능과 특징을 배우고, 일반적인 Ajax 태스크도 수행하며, 플러그인으로 jQuery를 확장하는 방법도 알아봅니다.

jQuery란 무엇인가?
2006년 초, John Resig가 만든 jQuery는 JavaScript 코드로 작업하는 사람들에게는 훌륭한 라이브러리이다. 여러분이 JavaScript 언어 초보자라서 라이브러리가 Document Object Model (DOM) 스크립팅과 Ajax의 복잡성을 다루어주기를 원하든지, 숙련된 JavaScript 구루로서 DOM 스크립팅과 Ajax의 반복성에 지루해졌다면, jQuery가 제격이다. jQuery는 코드를 단순하고 간결하게 유지한다. 많은 반복 루프와 DOM 스크립팅 라이브러리 호출을 작성할 필요가 없다. jQuery를 사용하면 매우 적은 문자로 표현할 수 있다. jQuery 철학은 매우 독특하다. 무엇이든 단순하고 재사용 가능한 것으로 유지하기 위해 디자인 되었다. 여러분이 이러한 철학을 이해하고 여기에 편안함을 느낀다면, jQuery가 여러분의 프로그래밍 방식을 충분히 향상시킬 수 있다.

단순화
다음은 jQuery가 여러분의 코드에 어떤 영향을 미치는지를 보여주는 예제이다. 페이지의 모든 링크에 클릭 이벤트를 붙이는 것 같이 단순하고 일반적인 것을 수행하려면, 플레인 JavaScript 코드와 DOM 스크립팅을 사용하는 것이 낫다
Sample 1-1. jQuery 없는 DOM 스크립팅
var external_links = document.getElementById('external_links');
var links = external_links.getElementsByTagName('a');
for (var i=0;i < links.length;i++) {
    var link = links.item(i);
    link.onclick = function() {
        return confirm('You are going to visit: ' + this.href);
    };
} 
Sample 1-2. jQuery를 사용한 DOM 스크립팅
$('#external_links a').click(function() {
    return confirm('You are going to visit: ' + this.href);
});

놀랍지 않은가? jQuery를 사용하면 복잡하지 않게 코드로 표현하고자 하는 것만 나타낼 수 있다. 엘리먼트를 반복할 필요가 없다. click() 함수가 이 모든 것을 관리한다. 또한, 다중 DOM 스크립팅 호출도 필요 없다. 여기에서 필요한 것은 엘리먼트가 어떻게 작동하는지를 설명하는 짧은 스트링이다.
이 코드로 어떻게 작업이 수행되는지를 이해하기는 조금 어렵다. 우선, $() 함수가 있어야 한다. 이것은 jQuery에서 가장 강력한 함수이다. 대게, 이 함수를 사용하여 문서에서 엘리먼트를 선택한다. 이 예제에서, 이 함수는 Cascading Style Sheets (CSS) 신택스를 포함하고 있는 스트링으로 전달되고, jQuery는 효율적으로 이 엘리먼트를 찾는다.
CSS 셀렉터의 기본을 이해하고 있다면, 이 신택스가 익숙할 것이다. Listing 2에서, #external_links는 external_links의 id를 가진 엘리먼트를 찾는다. a 앞에 있는 공간은 jQuery에게 external_links 엘리먼트 내의 모든 <a> 엘리먼트를 찾도록 명령한다. 영어와 DOM은 장황하지만, CSS에서는 매우 간단하다.
$() 함수는 CSS 셀렉터와 매치하는 모든 엘리먼트를 포함하고 있는 jQuery 객체를 리턴한다. jQuery 객체는 어레이와 비슷하지만, 수 많은 특별한 jQuery 함수들이 포함된다. 예를 들어, click 함수를 호출함으로써 클릭 핸들러 함수를 jQuery 객체의 각 엘리먼트에 할당할 수 있다.
또한, 엘리먼트나 엘리먼트의 어레이를 $() 함수로 전달하면, 이것은 엘리먼트 주위에 jQuery 객체를 래핑할 것이다. 이 기능을 사용하여 window 객체 같은 것에 jQuery 함수를 적용하고 싶을 것이다. 일반적으로 이 함수를 다음과 같이 로드 이벤트에 할당한다.
window.onload = function() {
    // do this stuff when the page is done loading
};

jQuery를 사용하면, 같은 코드도 다음과 같이 된다
$(window).load(function() { // run this when the whole page has been downloaded });

이미 알고 있었겠지만, 윈도우가 로딩하기를 기다리는 일은 매우 지루한 일이다. 전체 페이지가 로딩을 끝마쳐야 하기 때문이다. 여기에는 페이지의 모든 이미지들도 포함된다. 가끔, 이미지 로딩을 먼저 끝내고 싶지만, 대부분의 경우 Hypertext Markup Language (HTML)만 로딩해야 한다. jQuery는 문서에 특별한 ready 이벤트를 만듦으로써 이 문제를 해결한다.
$(document).ready(function() {
    // do this stuff when the HTML is all ready
});

Ajax로 단순하게!
Ajax는 jQuery를 사용하면 더 단순해 질 수 있다. jQuery에는 쉬운 것도 쉽게 복잡한 것도 가능한 단순하게 만드는 유용한 함수들이 많이 있다.
Ajax에서 사용되는 방식은 HTML 청크를 페이지 영역에 로딩하는 것이다. 여러분이 필요로 하는 엘리먼트를 선택하고 load() 함수를 사용하는 것이다. 다음은 통계를 업데이트 하는 예제이다.
>$('#stats').load('stats.html');

일부 매개변수들을 서버 상의 페이지로 전달해야 할 경우가 종종 있다. jQuery를 사용하면 이는 매우 간단하다. 필요한 메소드가 어떤 것인지에 따라서 $.post()와 $.get() 중 선택한다. 선택적 데이터 객체와 콜백 함수를 전달할 수도 있다. Listing 4는 데이터를 보내고 콜백을 사용하는 예제이다.
Sample 2-1. Ajax를 사용하여 데이터를 페이지로 보내기
$.post('save.cgi', {
    text: 'my string',
    number: 23
}, function() {
    alert('Your data has been saved.');
});

복잡한 Ajax 스크립팅을 해야 한다면, $.ajax() 함수가 필요하다. xml, html, script, json을 지정할 수 있고, 여러분이 바로 사용할 수 있도록 jQuery가 자동으로 콜백 함수에 대한 결과를 준비한다. 또한, beforeSend, error, success, complete 콜백을 지정하여 사용자에게 Ajax에 대한 더 많은 피드백을 제공할 수 있다. 게다가, Ajax 요청의 타임아웃이나 페이지의 "최종 변경" 상태를 설정하는 매개변수들도 있다. Listing 5는 필자가 언급했던 매개변수를 사용하여 XML 문서를 검색하는 예제이다.
Sample 2-2. $.ajax()를 사용하여 복잡한 Ajax를 단순하게
$.ajax({
    url: 'document.xml',
    type: 'GET',
    dataType: 'xml',
    timeout: 1000,
    error: function(){
        alert('Error loading XML document');
    },
    success: function(xml){
        // do something with xml
    }
});


http://docs.jquery.com/Tutorials

OOXML 표준화 이슈가 남긴 것

ZDNet, Microsoft, OpenXML9월 18th, 2007
지난 9월 2일, 전 세계 IT업계의 이목은 국제 표준화 단체인 ISO에 모아졌다. 마이크로소프트사가 ECMA를 통해 제출한 오피스 문서 포맷 표준인 Office Open XML(이하, OOXML)을 ISO 표준으로 제정할 것인지를 묻는 국가별 찬반 투표 마감날이었다.
이 투표가 관심을 끈 이유는 IBM과 SUN을 비롯한 오픈 진영과 마이크로소프트가 다시 한번 공개 표준의 장에서 격돌한 때문이다. IBM은 또 다른 표준단체인 OASIS를 통해 Open Document Format(이하, ODF)이라는 오피스 문서 표준을 ISO에 제출하여 전 국가 만장일치로 통과시켰다. 이른바 반 MS 진영은 마이크로소프트가 상용 소프트웨어 시장을 독점하는 것을 막기 위해 오랜 기간 동안 오픈 소스 진영을 후원해왔고 공개 플랫폼과 공개 표준들을 지지해왔다. 최근 10여 년간 이러한 후원과 수 많은 개발자 및 사용자들의 적극적인 참여로 인해 공개 소프트웨어는 놀라울 만한 성장을 거듭해왔다. 이로서 소프트웨어 업계에서는 파이어폭스, 오픈오피스, 아파치 웹 서버 등 상용 소프트웨어를 대체할 수 있는 수 많은 공개 소프트웨어 걸작품들을 배출 했다. MS사는 이러한 변화로 인해 자사의 생태계가 위협 받고 있음을 깨닫고 수 년 전부터 개방된 자세로 오픈 소스 기업 및 커뮤니티와 소통하는 일을 시작했다. MS가 자사의 주요 캐시카우라고 할 수 있는 오피스 제품의 사양을 XML이라는 공개 표준으로 제출한 것은 이러한 노력의 결과물이라 할 수 있다.


ISO에서 격돌한 오픈 소스 vs 상용 소프트웨어 진영
지난 2월 MS가 자사의 OOXML 표준안을 ISO의 빠른 심사 과정(Fast Track)을 거쳐 표준화 시키려고 하자 즉각 오픈 진영의 거부 운동이 시작 되었다. 이들은 OOXML 표준안이 전 세계 각 국 정부의 표준 채택에 영향을 미치는 ISO 국제 표준이 되기에는 부족한 점이 많다고 지적한다. MS사의 이러한 즉각 행동은 각 국 정부와 미국 일부 주정부가 ODF를 표준 문서 포맷으로 지정하고자 한 것과도 무관하지 않다.
IBM, 구글, 리눅스 재단 같은 오픈 진영에서는 이미 대체 및 보완 가능한 기 ISO 표준인 ODF가 존재할 뿐만 아니라 표준안 내에는 MS 오피스에서만 완벽히 구현한 각종 사양들이 대거 들어 있는 등 수백 가지의 기술적 문제가 있다고 밝혔다. 특히, 이들 중 대부분은 MS사의 특허권과 맞물러 있어, MS가 단순히 소송하지 않겠다는 선언적 약속을 믿기 어렵다는 이유로 반대 의사를 분명히 했다.
특히, MS사가 OOXML 스펙을 기존 업체들이 이미 많이 구현하고 있다고 예를 들은 회사들대부분은 MS와 특허권 계약을 한 회사들이다. 이 때문에 OOXML이 ISO 표준이 되는 경우, 소프트웨어 업체들이 자유로운 구현을 할 수 없을 것이라는 입장을 나타내었다. 몇몇 웹 사이트에서는 각 국 대표단이 반대표를 던질 것을 호소하는 서명 운동을 벌이기도 하였다.
이에 대한 MS사의 반격 또한 만만치 않았다. ‘오픈XML 커뮤니티’를 통해 정부 기관에서 기 작성되었거나 지금 가장 많이 사용하는 문서 형식을 변환하여 장기 문서 보존 형식으로 사용 가능하다는 점을 홍보하고 역시 각 국에서 찬성표를 던져 줄 것을 요청하는 서명 운동을 벌였다.

스캔들 및 정치적 로비까지 불사
MS사의 대외 로비는 투표가 가까우면서 보다 강하게 나타났다. ISO에 참여한 국가들은 자국의 관련 표준 기관이나 대표 위원회 내에 학계와 업계를 회원으로 참여시켜 토론 후 내부 투표를 거쳐 마지막으로 찬반 여부를 제출하게 된다. 그런데, 스웨덴 등 일부 국가에서 MS사가 입회비나 마케팅비를 지원하는 조건으로 제휴사를 개별 국가나 의사 결정 기관에 회원으로 대거 영업 시켜 자국 내 의견을 찬성쪽으로 돌렸다는 의혹이 제기 되기도 했다.
또한, 투표 한두 달 전부터 결과에 결정적인 영향을 미칠 수 있는 정식(P)멤버로 승격 요청을 한 국가들이 많았고, 이들 중 대부분은 찬성표를 행사했다는 점이 영향을 미쳤다는 분석도 나왔다. 올해 초 기존 30개국에 불과했던 P멤버가 JTC-1과 SC34에 각각 11개국 15개국이 늘어났으며 이들 중 각각 9개국, 12개국이 찬성표를 던졌다. 기존 P멤버 30개국의 찬성표는 8개국, 반대는 14개국이지만 신규 회원국들의 반대표는 단 1표에 불과했다.
한발 더 나아가 EFFI(핀란드전자선구자재단)가 국제 투명성 단체가 발표하는 국가별 부패 지수(CPI)와 이번 투표 국가의 상관 관계를 조사한 결과, 부패 국가들의 찬성 투표 수가 압도적으로 높았다. 여기에는 동구권, 중남미 및 아프리카 일부 나라들이 포함되어 있다. 찬성 국가 대부분인 20개국은 부패 지수가 2~3 정도로 낮았으며 6점 이상을 받은 28개국 중에는 한 표의 찬성도 없이 기권 및 반대만 있었다. 이들 국가 중 일부는 빌게이츠 재단이 직접 구호활동을 펴는 곳도 있다.


합리적 과정과 충분한 검토를 거쳐야
세계 IT업계의 이목이 집중된 가운데 나온 투표 결과는 결국 OOXML 표준안 부결이었다. 32개국 P멤버 중 17개국만 찬성을 던져 2/3 채우지 못했고, 69개국의 전체 국가 중 18개국이 반대하여 1/3을 넘어섰다. 특히, 반대표의 경우 1표 차이로 가까스로 부결 되었다. 반대 국가 대부분이 OOXML에 대해 우려를 표시한 코멘트를 제출했으며, MS사가 ECMA를 통해 이를 보완해 수정안을 다시 제출하면 내년 2월에 재투표를 실시한다.
MS사는 전체 유효 투표의 74%인 51개국이 찬성의사를 나타냈다며 한껏 고무된 모습이다. 이전 ISO에서 32개국이 지지한 ODF와 15개국이 지지한 PDF에 비해 참여 국가수와 찬성표가 늘어난 데 특별한 의미를 부여하며 전 세계적으로 OOXML을 지지하고 있다고 밝혔다.
사실 OOXML 표준안 투표 과정에서 나타난 현상을 보면 전 세계적인 표준으로서 기술적인 검토와 충분한 토론은 실종되고 각 진영간의 정치적 이슈가 첨예하게 대립되었다고 볼 수 있다. 이는 OOXML 표준안이 6,000여장이라는 사상 초유의 방대한 표준안으로 각 국에서 검토할 만한 충분한 시간이 주어지지 않았기 때문에 양쪽 진영의 수박 겉핱기씩 공방을 확인하는 수준 밖에 없었다. 실제로 OASIS 표준안이 나온 후, 다양한 소프트웨어에서 온전한 구현 결과를 낸 ODF와 달리 OOXML은 전체 스펙을 모두 구현한 제품이 단지 MS 오피스뿐이기 때문에 이러한 결과가 나올 수 밖에 없었다.
ISO나 다른 국제 표준 단체에서 활동 하다 보면 여러 가지 정치적 이슈와 이상과 현실적(상업적) 이슈들이 충돌하게 된다. 산업 표준을 수용해 주기 위해 단일 분야의 복수 표준이 나올 수도 있고, 선도 기술을 가진 나라들의 정치적인 입김도 크게 좌우될 수도 있는 곳이다. 국제 표준이라는 것은 권고 사항 내지 판단의 근거이지 절대적인 것은 아니기 때문이다.
하지만 표준이 되는 과정에서 편법과 정치만 난무하고 제대로 된 검토가 허술하다면, 그나마 가지고 있는 권위를 잃을 수도 있다. 이번 OOXML 표준안 처리 과정이 이러한 점을 단적으로 보여 주었다고 할 수 있다. 표준안에 대한 충분한 검토와 논의 합리적인 절차를 거치는 모습을 보여야만 진정한 표준으로서 의미가 있을 것이다. 이런 점에서 OOXML안이 부결된 것은 오히려 그 자체로 약이 될 수도 있다. OOXML 표준안은 아직도 현재진행형이다. ISO가 어떻게 이 뜨거운 감자를 해결해 가는지 전 세계가 지켜 보고 있다는 점을 명심해야 할 것이다.

진대제펀드 투자 1호 ‘올라웍스’, 신형 블로그로 승부

스카이레이크인큐베스트(SIC)가 운영하는 이른바 ‘진대제 펀드 1호’의 첫 번째 투자처로 업계 관계자들의 관심을 한 몸에 받았던 ‘올라웍스(Olaworks, http://olaworks.com)’/가 새로운 형태의 블로그 서비스로 승부수를 띄운다.
올라웍스는 지난 주말 공지사항을 통해 “오는 17일부터 사진이나 동영상 등을 자유롭게 꾸밀 수 있는 ‘캔버스’ 기능을 도입한 블로그 ‘올라데이(Oladay, http://www.oladay.com)’/ 서비스를 시작한다고 밝혔다.
4개월여 준비 기간을 거쳐 출시된 올라데이는 '캔버스'라는 공간에서 사진과 글, 야후 플리커 이미지, 유튜브 동영상 등을 자유롭게 배치할 수 있는 기술이 가장 큰 특징이다. 주어진 빈 공간에는 자신이 확보한 콘텐츠를 넣을 수도 있고 댓글놀이 내용을 붙일 수도 있다. 개인의 일상을 에피소드별로 자유롭게 기록한다는 개념이다. ‘디지털 데이터로 남겨진 개인의 일상을 가치 있는 콘텐츠로 만들겠다’는 서비스 취지를 반영하기 위해 애썼다. 핵심 기능은 모두 아작스(Ajax, 에이잭스)로 구현됐다.
특히 올라웍스는 향후 실시간으로 메시지를 주고받을 수 있는 댓글놀이터 클라이언트 '올라팝(http://www.olapop.com)과 연계할 계획을 세우고 있다.
올라웍스 관계자는 공지사항에서 “(기존 서비스인) 올라로그로부터 얻은 가장 큰 교훈은 ‘사용자에게 즐거움을 주는 도구가 서비스로서의 가치를 지닌다’는 단순한 사실이었다”며 “사진의 인물 정보를 추출해 자동으로 분류, 관리해주는 올라로그는 새롭고 신선했지만 즐거움을 주는 도구는 아니었다”고 인정했다.

이와 관련 올라웍스 관계자는 조선일보와 전화 통화에서 “올라데이는 최근까지 알파 버전으로 100여명을 대상으로 테스트를 진행해 왔다”며 “장기적으로 커뮤니티 서비스 강화 차원에서, 일상을 공유한다는 차원에서, 사진과 텍스트 등을 자유롭게 반영할 수 있는 ‘블로그’ 서비스를 개발했다”고 말했다. 말로 정확히 규정하기 쉽지 않지만, ‘자유도가 높은 블로그 유사 서비스’라는 설명이다.
“회사 대표 기술인 ‘얼굴인식’과 직접적으로 연관된 것이 아니라서 생뚱맞다”는 질문에 그는 “장기적으로 커뮤니티 서비스 강화 차원에서 서비스를 기획했다”며 “얼굴인식 기술이 당장 커뮤니티에 접목된다는 것은 아니지만, (기술을 가지고 있기 때문에) 필요할 때는 언제든지 적용 가능하다”고 덧붙였다.
그 동안 올라웍스는 지난해 4월 ‘얼굴인식 기술’을 적용한 올라로그를 개발한 뒤 같은 해 12월 사전 시험판(Pre-Beta)에 돌입했었다. 특히 진대제 펀드와 인텔캐피탈 등으로부터 400만 달러를 투자 받고, 이어 국내 이동통신 서비스 업체 및 야후코리아와 서비스 상용화가 진행되는 듯 했으나 무산되고 말았다. 현재 올라웍스는 빠르면 올해 안에 얼굴인식 기술을 바탕으로 일본 이동통신 업체에 서비스를 제공할 계획을 세우고 있다. 이번에 출시하는 올라데이는 얼굴인식 기술 방향과는 다소 거리가 있다.
한편 진대제 전 정보통신부 장관이 운용해 화제가 되고 있는 일명 ‘진대제펀드’는 지난달 초 사모 형태의 ‘스카이 레이크인큐베스트 사모펀드 2호’를 금융감독원에 등록했다. 제1호 펀드에 비해 규모도 3000억 원대로 커졌고 투자 대상도 벤처 기업에서 중대형 기업과 이미 상장된 IT기업 등으로 확대된다



조선일보 2007.09.17

새로운 별, 청라지구

청라지구? 서구 경서동, 원창동, 연희동 일대에 위치한 청라지구는 각종 엔터테인먼트와 스포츠, 첨단화훼, 국제금융의 거점으로 개발된다.
개발계획은?
  • 청라지구에 해외 유수대학들이 공동으로 조성하는 가칭 '복합학술단지'가 들어설 전망이다.토공은 지난해 8월부터 올해 7월까지 미국 버지니아 공과대학과 모스크바대학 등 18곳으로부터 복합학술단지 조성에 대한 투자의향서(LOI)를 받았다.
  • 네바다주립대(University of Nevada Las Vegas) 호텔경영대학이 인천 청라지구에 학부와 대학원 과정이 운영되는 분교를 만든다. 네바다주립대는 호텔경영 분야에서 미국 아이비리그 대학 중 하나인 코넬대와 세계 1~2위를 다투는 명문 대학이다
  • 2010년 개교를 목표로 하고 있는 청라지구 내 국제학교는 유치원과 초, 중, 고교를 갖춘 기숙학교로 입학정원은 1천200~1천500명 정도가 될 것으로 전망된다. 이 학교의 학비는 송도 국제학교와 마찬가지로 연간 2천만원 선이 될 것으로 예상된다
분양은?
  • 인천경제자유역에서 분양하는 아파트에서 지역우선공급물량을 현재 100%에서 30%로 대폭 줄이기로 하면서 수도권 청약자들의 인천 송도국제도시, 청라지구, 영종지구 입성이 가능해졌다.

인천 청라지구에 77층 쌍둥이 세계무역센터 빌딩 건축

  • 인천 청라지구에 77층짜리 쌍둥이 세계무역센터(WTC) 빌딩이 세워진다
  • 특히 1개 빌딩에는 리먼 브러더스 등 세계적인 금융기관들이 대부분 입주, 명실상부한 동북아 금융허브의 랜드마크가 될 전망이다. 호텔과 컨벤션센터, 상업 및 주거시설 등도 들어서 투자규모가 6조원에 육박한다.
  • 22일 재정경제부와 인천경제자유구역청 등에 따르면 오는 26일 서울 워커힐 호텔에서 권오규 경제부총리와 세계무역센터협회(WTCA) 관계자 등이 참석한 가운데 이런 내용의 사업발표회가 열린다. 청라지구 4·5공구내 81만㎡에 총 사업비 5조 7000억원이 투입되며 공사는 세계의 유수 건설업체가 맡기로 지난달 19일 합의각서를 체결했다.
  • 청라지구에는 또 미국 라스베이거스 등 세계적으로 13개의 카지노를 운영하는 해라 엔터테인먼트와 텍사스 대학의 MD앤더슨 암센터 등을 유치하는 방안도 추진됩니다