이바닥이 원래 그래

EBADAC - OOPARTS : Out Of Place Articles.

Archive for November, 2006

microformat Parser (php4)

쓸만한 마이크로 포맷 파서가 없어서 뚝딱거려봄. php5버전으로 하려다, 아직은 php4가 대세라 php4로 제작.
hCard와 hCalendar만 지원. 나머지는 귀찮아서. 국내에서는 언제쯤 microformat을 쓸 수 있을까…

[php]
class O_MICROFORMAT extends METAOBJECT {
var $str;
var $domain;

function O_MICROFORMAT($str, $domain) {
$this->str = $str;
$this->domain = $domain;
}

function hCard()//{{{
{
$querys = array(
“url” => array(”/@href”),
“n” => array(”"),
“fn” => array(”"),
“adr” => array(”"),
“tel” => array(”"),
“org” => array(”"),
“role” =>array(”"),
“email” =>array(”/@href”),
“stem” => array(”")
);
return $this->parse(’vcard’, $querys);
}//}}}

function hCalendar()//{{{
{
$querys = array(
“url” => array(”/@href”),
“summary” => array(”"),
“dtstart” => array(”/@title”),
“dtend” => array(”/@title”),
“location” => array(”")
);
return $this->parse(’vevent’, $querys);
}//}}}

function parse($key, $querys) //{{{
{
$str = $this->str;

$dom = new DomDocument();
@$dom->loadHTML($str);

$xpath = new DOMXPath( $dom );
$events = $xpath->query(”//*[contains(@class, ‘$key’)]”);

$parsed_events = array();
foreach( $events as $event )
{
$e = $this->parse_event( $dom, $event, $querys );
$parsed_events []= $e;
}
return $parsed_events;

} //}}}

function parse_event( $dom, $event, $querys) //{{{
{
$data = array();

$xpath = new DOMXPath( $dom );
foreach($querys as $query=>$val) {
$t = $xpath->query( “.//*[contains(@class,’{$query}’)]{$val[0]}”, $event );
$data[$query] = $t->length > 0 ? $t->item(0)->nodeValue : ”;
if($query==”url”) {
if(strtolower(substr(trim($data[$query]), 0, 7)) != “http://”) {
$data[$query] = $this->domain . $data[$query];
}
}
if($query==”email”) {
if(strtolower(substr($data[$query], 0, 7)) == “mailto:”) {
$data[$query] = substr($data[$query], 7);
}
}
}

return $data;
}//}}}

}
[/php]

재미없어지는 요즘의 트렌드

제대로 표현하긴 어렵지만, 수상한 냄새들이 나기 시작한다.

1) 자생하지 못하는 비즈니스 모델에도 불구하고 “주목경제”라는 미명하에 일단 사람들을 끌어모으고 그 다음은 Google(혹은 NHN, 혹은 다음, 혹은 아마존…)에 팔아넘기기. problem은 대형 키메이커들이 떠안고(인력과 자본이 있으니 해결은 하겠지만) 자신들은 새로운 차키와 대저택을 안고 이 버블바쓰에서 은퇴하기.

2) 모두들 web으로 달려들고 web상에서 모든 것을 하려하지만, 덕분에 PC의 자원은 남아돌고. 누군가는 이 남는 PC 리소스를 활용하여 진짜 대박을 터트릴지도. 요즘 그나마 고가의 PC의 존재가치를 정당화시키는 것은 게임들뿐.

3) 컨퍼런스, 언컨퍼런스의 홍수. Social Networks는 여전히 On-line이 아닌 Off-line에서 유효하다는 반증. 모여서 명함돌리고, 누구와 안면텄다는 것이 목적. 예전에는 경품을 타기 위해 행사에 참여했다면, 요즘은 “유명한 누구씨”와 만났다고 블로그에 적기 위해. 물론 기념사진은 기본.

4) 요즘 나도는 이슈나 트렌드들은 보고 있자니, 그저 시들한 느낌뿐. 스테레오타입과 워너비의 범람. 하긴 나 역시도 그 중 하나니. 뭔가 쌈빡한 것을 보고 싶다.

링크와 접근성

바깥고리, 웹표준에 맞추기 at CunningWeb에 댓글이 몇개 달리면서 몇가지 오해가 있는 듯하여, AS 차원의 포스팅입니다.

일단 다음과 같은 코드를 보세요.
[html]
A.
주식회사 abcd
[/html]
이 코드는 아무런 문제될 게 없습니다.

두번째 코드를 보세요.
[html]
B.
주식회사 abcd
[/html]
이 코드는 문제가 좀 있습니다.
1) XHTML 1.0 Strict 이후부터는 target속성이 빠지게 되므로 validator를 통과할 수 없습니다.
2) 사용자의 의사에 관계없이 새창띄우기를 시도합니다.

세번째 코드를 보겠습니다.
[html]
C.
주식회사 abcd
또는
주식회사 abcd
[/html]
이건 더 안좋습니다. target을 쓰지 말라니까 이렇게 해놓고 validator를 통과했다고 만족하시면 안됩니다. validator는 어디까지나 최소한의 룰입니다. 왜 룰이 생겼는지를 생각하지 않고 단순히 룰을 위한 룰로 받아들이면 위와 같은 코드가 나옵니다.
이 방법은 javascript를 쓸 수 없는 환경(장애인, 비PC기반 디바이스 등)에서의 접근성을 저해하며, 검색엔진 최적화 전략(SEO)에도 바람직하지 않습니다. 물론 검색엔진을 비롯한 machine-feed로 쓰기에도 적당하지 않습니다. 물론 이 역시 사용자의 의사에 반하는 새창띄우기를 강제합니다.

다음코드를 또 봐주세요.
[html]
D.
주식회사 abcd
또는
주식회사 abcd
[/html]
그나마 이건 좀 낫습니다. href에 실주소가 들어있기 때문에 machine-friendly하다 할 수 있습니다. 문제는 위의 경우에는 부모창과 새 창이 모두 같은 abcd.com/abcd.html로 연결되버립니다. 그건 좀 곤란하죠.
아래의 경우에는 부모창은 그대로이고, 새 창만 abcd.com으로 연결됩니다. 물론 javascript가 안될 경우에는 새창이 아닌 기존창에서 페이지변경이 일어나게 되니 접근성에도 큰 문제는 없습니다.
그런데 이러면 코드가 별로 아름답지 못합니다. HTML body내에 script는 되도록이면 줄이는 게 좋습니다.

또 다른 코드를 보겠습니다.
[html]
E.
주식회사 abcd
주식회사 abcd로 새창띄우기
[/html]
겉보기에는 상당히 친절해보이는 코드입니다. 문법상으로는 틀리지 않습니다. (XHTML 1.0 Strict 이상에서는 target이 없다는 점은 빼고.) 웹컨텐츠 접근성 가이드 지침에 나온 대로 대체텍스트도 충실히 써줬습니다.
그러나 이 코드가 좋은 코드냐… 실제로는 그렇지 못한 점이 있습니다.
1) 같은 곳에 대한 링크가 중복되어있습니다. machine-feed로 쓰일 때 혼동을 줄 수 있습니다.(예:링크의 갯수로 링크 가중치를 계산하는 알고리즘을 사용할 때 등)
2) 추가된 이미지는 컨텐트가 아난 장식적 요소입니다. 장식적 요소가 HTML코드에 포함되는 것은 Structure와 Content, Presentation, Behavior를 분리하는 시맨틱마크업을 충족시키지 못합니다.
3) 실제로 시각장애인이 사용하는 스크린 리더기가 이같은 코드를 만날 경우, 상당히 불편합니다. 왜냐하면 같은 곳에 대한 링크를 계속 줄줄줄 읽어주기 때문입니다. (스크린 리더기가 읽어주는 텍스트는 장애인들에게는 매우 유용하지만, 한편으로는 일반인이 듣는다면 거짓말 조금 보태, 없던 장애가 생길만큼 불편하기도 합니다.)
4) 한가지 문제가 더 있는데, 위의 코드는 링크가 연달아 나옵니다. 이렇게 링크가 연달아 나오는 경우(링크 사이를 공백문자로 분리할 경우에도 마찬가지), 몇몇 장치에서는 제대로 해석이 안될 수도 있습니다. 그래서 WCAG 1.0에서는 링크가 연달아 나오는 것을 권하지 않습니다.

중간 결론은 이렇습니다.
A.에 소개된 코드가 가장 좋습니다. 바깥고리고 새창이고 뭐고, 저대로 쓰는게 100점 만점입니다.
B.에 소개된 코드는 XHTML 1.0 Strict 이상(XHTML 1.1, XHTML 2.0등)을 포기하면 그럭저럭 허용될 코드입니다.
C.는 매우 안좋습니다.
D.의 두번째 코드는 그럭저럭 쓸만합니다만 HTML과 Script를 분리하지 못했기에 아름답지 못합니다.
E.의 코드는 불필요한 이미지의 사용, 링크의 반복 문제가 생깁니다.

더 나은 방법이 있긴 합니다.
[html]
F.

URL이 없는 페이지

페이지가 없는 URL이야 404 에러로 흔히 만날 수 있지만…
요즘 유행하는 사이트들은 URL이 없는 페이지들이 많다.

오늘 정식 런칭했다는 오피 등을 비롯하야…
반드시 AJAX때문이 아니더라도, 유사한 DHTML들, iFrame, Frame. 또 최근 각광받는 Flex등을 보면, URL이 없는 페이지들을 많이 만난다.

나는 좀 구식이라 그런지…
URL창에 나와있는 주소로 “페이지”들이 구별되어야 한다고 생각한다.

물론 “어플리케이션”적인 관점에서, URL이 없는 페이지들도 있을 수 있다. 그건 URL이 없는 Page라기보단, 어플리케이션의 어떤 한 Phase 도중이라는 생각. 그러므로 Phase들이 계속 변하면서 진행된다 하더라도, 결국 시작점과 끝점이 있기 마련이다. 예를 들어 “웹워드프로세서”라 해도, “시작페이지”와 “최종결과출력페이지”에는 고유한 URL이 있어야 한다고 본다. 중간에 어떤 쇼를 할 지언정 말이다. (개발자의 의지문제 - 사람들말마따나 “비용이 많이 드는” -)

웹의 근간은 링크였고, 링크는 URL을 기반으로 하였었다.
웹 2.0인지는 모르겠으나, 링크대신 스크랩으로 바뀌고, 그래서 URL은 더이상 필요없어지누나…

사무실 2.0

ThinkVitamin에 소개된 재미있는 이슈.

간추려 보자면, 사무실에서 사용할 어플리케이션에 대한 web 2.0 적 해석(?)이다.

작자인 Carson은 Carson System이라는 자신의 작은 회사에서 업무에 필요한 소프트웨어들을 꼽고 있다. 일단 플랫폼으로 맥을 이런 저런 이유로 사용하고 있고, 구성원은 5인 이하. 이런 조건에서 꼽아본 것들은 다음과 같다.

Type Software Price
Text editor TextEdit Free and pre-installed
Code editor TextWrangler Free
Graphics package Fireworks $100
Storage DropSend $99 per month (for whole company)
Backup SuperDuper Free (basic version)
FTP Cyber Duck Free
Chat/IM iChat Free and pre-installed
Email Mac Mail Free and pre-installed
Calendar Google Calendar Free
Address book Mac Address Book Free and pre-installed
Spreadsheets Tables $49

일단 재미있는 것은, 이렇게 꾸밀 경우, 1인당 비용은 173USD정도. 만약 오피스와 Studio 8로 비슷한 환경을 꾸미면 1인당 비용이 1699USD나 나간다고.

테스트 결과 몇가지 바뀌었는데,
TextEditor -> Word (확실히 비싸고 무겁긴 하지만 오피스는 쓸만한 소프트웨어이다. )
FTP -> Transmit (맥용으로 나도 이걸 쓰긴한다. 최근에는 그냥 FF의 FTP플러그인으로 대체 중)
Spreadsheet -> Excel (Word와 동일)

그런데 나는 작자의 결론보다도, 이 글을 읽으면서 개인적으로 느낀 건…
역시 오피스 최고. (-_-b)

…는 아니고,

회사에서 직원을 뽑거나 해서 새로 PC를 세팅해주면서 “깔아도 되는 / 깔아주는 / 깔라고 회사파일서버에 넣어둔” 등등의 소프트웨어들을 보자면 그 회사의 IT에 관한 관심도를 알 수 있다고나 할까.
여전히 “한글97″을 쓴다거나 하면 왠지 모르게 김이 빠진다.
Geek처럼 최신버전, 최고급만 노릴 필요는 없겠지만, 경영자에게 푹신한 안락의자와 마호가니 책상이 경영효율등을 높이기 위해 필요한 필수품인 것처럼,
IT종사자에게는 최신 버전의 S/W가 쾌적한(?) 업무환경을 위해 필수적이라는 것. (버그투성이의 베타버전들을 말하는 것은 아님.)
오피스 2002가 있는데 왜 오피스 2007을 또 사야 하냐고 묻는다면(MS 영업사원 삘이네. 그저 예를 든 것뿐.), 사장님은 왜 안락의자를 바꾸셨나요… 라고 반문하고 싶다는.

« Previous entries