W3C의 Internationalization Core Working Group에서 Internationalization Best Practices: Specifying Language in XHTML & HTML Content라는 제목의 문서를 새로 갱신해서 올려놓았다.

이 문서는 HTML 문서 내용을 다루는 저자나 프로그램 개발자들에게 세계 각국 언어에 맞는 현지화를 위한 일종의 안내서로 사용될 수 있도록 관련 권고 사항들을 전해주고 있다.
문서 내용을 요약하면 먼저 HTML 문서에 사용 언어를 선언할 때 주의할 사항으로 character encoding과 글이 읽히는 방향(direction of text)을 언어 선언과 혼동해서 쓰지 말라고 경고하고 있다. Character encoding 값과 사용 언어는 일대일로 바로 적용될 수가 없는데, 그 이유로 어떤 하나의 인코딩 값이 여러 다양한 언어를 대표할 수도 있기 때문이다. 글이 읽히는 방향도 한 언어 안에서 문서 내의 문맥에 따라 서로 다른 방향으로 읽히고 해석되어야 할 필요가 생길 수도 있고, 대표 언어를 선언하는 것만으로는 이런 상황을 제대로 표현해 줄 수가 없게 된다.

위 문서에는 웹 브라우저나 화면 해독기와 같은 user agents가 문서에 쓰인 언어를 올바로 해석할 수 있게 하려고 (X)HTML 문서 안에 사용 언어를 선언해 주는 대표적 방법들을 다음과 같이 소개하고 있다.

첫 번째 방법으로는 XHTML 요소에 langxml:lang 속성을 사용하는 방법으로, 문서 전체의 언어를 지정할 땐 html 태그에 정의해 준다. 물론 문서 안에 포함된 특정 요소에 다른 언어가 사용되었을 땐 해당 요소에 따로 적당한 언어 속성을 지정해 줄 수도 있다.

<!-- 보기 1: text/html mime type으로 전달되는 XHTML 1.0 문서 안에 언어 속성을 사용해서 선언해 준 예.-->
<html lang="ko" xml:lang="ko" xmlns"http://www.w3.org/1999/xhtml">

여기서 주의할 것은, HTML일 경우 lang 속성만 사용되며, XML로 전달되는 XHTML의 경우에는 xml:lang 속성만 사용한다.

두 번째 방법은 아래처럼 meta 요소의 http-equiv를 Content-Language로 지정해 주는 방법이 있다.

<!-- 보기 2: meta 요소의 Content-Language 선언. -->
<meta http-equiv="Content-Language" content="ko" />

여기서 문서에 사용된 언어와 의도된 독자의 사용 언어가 여럿일 경우 각 언어를 모두 나열해 줄 수도 있지만, 문서의 언어 해석을 위한 용도로는 적절치 않거니와 아직 이곳에 지정된 정보의 이용 상황은 극히 낮은 수준이다.

마지막으로, 언어 해석 정보는 문서와 함께 전달되는 HTTP header에서도 얻을 수 있는데, 이것도 대부분의 웹 브라우저들은 문서의 올바른 언어 해석을 위해서 이 곳의 정보를 참고하지는 않고 있다.

결과적으로, 지금까지는 첫 번째로 소개된 html 언어 속성을 이용한 방법이 HTML 문서의 언어 해석을 위해 가장 일관성 있고 효과적인 방법이라 할 수 있다.

추가 참고 문서: W3C I18N FAQ: Why use the language attribute?

Graham English씨가 공개한 iQuickTwitter AppleScript 덕분에 이제 Twitter 하기가 한결 더 수월해졌다.

공개된 iQuickTwitter를 한 마디로 설명하자면, iQuickTwitter = Twitter + Quicksilver + iChat + Growl의 자연스러운 조화라 할 수 있다.

물론 전에는 재잘거릴 때마다 Twitterrific을 통했었지만 가끔 하는 수다를 위해 항상 커놓기도 뭐했는데, 이렇게 필요할 때만 배출 구멍을 열어놓을 수 있으니 내겐 꼭 안성마춤이라 하겠다. 🙂

위의 소개 페이지에 있는 기능과 설치/사용 방법을 그대로 옮기면,

기능:

  • 입력된 글자 수를 계산해서 140을 초과하면 Growl을 통해 경고해줌.
  • 글 전송을 완료하면 Growl을 통해 알려줌.
  • 작동 지연 현상을 줄이기 위해 Keychain Access를 통하지 않고 Twitter의 사용자 이름과 암호를 직접 저장해서 사용함.
  • iChat이 실행되고 있는지 확인해서 최근 재잘거림을 상태 메시지로 설정해 줌.
  • Growl은 설치되어 있는Twitterific의 아이콘을 사용하게 됨.

설치 방법:

  1. 스크립트를 내려받고, 압축을 풀어서 아래의 장소에 놓는다.(Actions 폴더가 없다면 새로 만들어야 함):
    ~/Library/Application Support/Quicksilver/Actions
  2. Script Editor를 열어서, 스크립트에 있는 아래 줄과 같은 부분에 Twitter 사용자 이름과 암호를 적어놓는다:
    set twitter_key_account to "your@email.com"
    set twitter_key_pass to "your_password"
  3. Quicksilver를 재실행.

사용 방법:

  1. Quicksilver를 작동시키고.
  2. text mode(마침표 키를 누름)로 들어가서 메시지를 입력.
  3. 탭(Tab) 키를 누르고 Action Pane으로 가서 “Tweet”라고 입력 (모두 입력하지 않아도 됨).
  4. 엔터(Enter) 키를 눌러서 전송.

이러한 협업에서 가져올 좀 더 효율적인 수다는 과연 어떤 결과를 낳을 런지? :mrgreen:

웹 표준을 준수하고 순차적으로 잘 정렬되어 있는 의미론적 마크업의 사용 그리고 표현과 동작의 분리에서 오는 잇점을 알리기 위해 올해 두 번째로 열리는 CSS Naked Day를 맞이하여, 이곳 블로그만이라도 4월 5일 하루 동안 발가벗겨 놓을 예정이다.

CSS Naked Day 2007

CSS를 걷어낸 적나라한 <body>의 속살을 드러내 놓고서 하루 동안 따스한 봄 햇살을 맞이할 준비는 마쳤지만, 어딜 가든 겉모습보단 벗겨놓고 감상해야만 직성이 풀리는 버릇은 계속되겠지. :mrgreen:

아래는 어느 프로그래밍 언어에서든 아주 유용하게 쓰일 수 있는 정규 표현식 유형들(Reqular Expression Patterns)을 모아봤다.

// 전자우편 주소: 
/^[a-z0-9_+.-]+@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/
 
// URL: 
/^(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/
 
// HTML 태그 - HTML tags: 
/\<(\/?[^\>]+)\>/
 
// 전화 번호 - 예, 123-123-2344 혹은 123-1234-1234: 
/(\d{3}).*(\d{3}).*(\d{4})/
 
// 날짜 - 예, 3/28/2007 혹은 3/28/07: 
/^\d{1,2}\/\d{1,2}\/\d{2,4}$/
 
// jpg, gif 또는 png 확장자를 가진 그림 파일명: 
/([^\s]+(?=\.(jpg|gif|png))\.\2)/
 
// 1부터 50 사이의 번호 - 1과 50 포함: 
/^[1-9]{1}$|^[1-4]{1}[0-9]{1}$|^50$/
 
// 16 진수로 된 색깔 번호: 
/#?([A-Fa-f0-9]){3}(([A-Fa-f0-9]){3})?/
 
// 적어도 소문자 하나, 대문자 하나, 숫자 하나가 포함되어 있는 문자열(8글자 이상 15글자 이하) - 올바른 암호 형식을 확인할 때 사용될 수 있음: 
/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,15}/

정규식과 관련해서, 완성된 정규식 유형을 특정 예문을 놓고 제대로 된 것인지 바로 확인해 보고 싶을 때는 Mac OS X 용 어플리케이션으로 Reggy가 쓸만하고, 또 위젯 형태의 Regex Widget라는 놈과 Firefox Extension인 Regular Expressions Tester도 있다. 물론 자주 사용되는 정규식 유형의 경우 이미 다른 사람들이 쓰고 있는 것이 있을 테니 Regular Expression Library에 공개되어 있는 것 중에서 알맞은 것을 찾아볼 수도 있을 것이다.

다음은 쓸만한 온라인 정규식 테스트 도구: