TextMate와 함께 기본적으로 제공되는 CSS 번들에는 못난 Internet Explorer, 특히 IE 6 만을 위해서 사용될 수 있는 CSS hacks이 들어 있다.

바로 Other 항목 밑에 있는 것들로, 예를 들어 IE 6에게 png 그림의 투명도를 제대로 표시하게 하려고 Microsoft 전용 AlphaImageLoader Filter를 쓴 것이 있는데, background tab trigger로 사용될 수 있다.

.png-transparent {
  background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/transparent.png', sizingMethod='image/scale/crop');
}

CSS3의 opacity 속성을 지정할 때는 IE를 위해 MS의 Alpha Filter가 사용된다. -moz-opacity 속성은 오래된 버전의 Mozilla 계열 브라우저들(Mozilla 1.7과 Firefox 0.9 이전) 위한 것으로 지금은 삭제해도 무관하다.

.opacity-div {
  opacity: 0.5;
  -moz-opacity: 0.5;
  filter:alpha(opacity=50);
}

그런데, 이것들 말고도 자주 쓰이는 꼼수들이 더 있기 마련인데, 개인적으로 두 가지를 더 추가해서 쓰고 있다.
하나는 IE 6 만을 위한 꼼수로, 이 놈은 CSS의 max-width와 min-width 속성을 전혀 알아듣지 못하는 관계로 할 수 없이 또 MS 전용 expression() 속성을 빌려와서 적용해 주어야 한다.
아래는 IE min-max-width라는 이름으로 저장된 CSS snippet의 내용인데, tab trigger로 iemwidth를 지정해 주었다.

width:expression(document.body.clientWidth > ${1:980} ? "$1px" : (document.body.clientWidth < ${2:480} ? "$2px": "auto" ));

또 하나는 CSS layout을 구성할 때 자주 쓰이는 snippet으로 float된 자식 요소를 감싸주려고 과거에는 CSS의 :after pseudo-element를 써서 float을 clearing하는 벙법이 많이 사용되었으나, IE가 아직까지 CSS 2.1의 :before와 :after pseudo-element를 지원하지도 않거니와, 더 간편한 방법으로 알려진 pseudo-element를 쓰지 않고 float을 clearing하는 방법이 많이 사용되는데, 여기에는 또 IE 6 이하 버전 때문에 꼼수가 들어가야 한다.
그래서 아래는 짧지만 타이핑의 수고를 덜어주기 위해 IE 7까지 고려한 새 float clearing 방법을 참고해서 추가한 아주 간단한 snippet이다.

${1:.clearfix} {
  overflow: hidden;
  ${2:_}height: 1%; /* IE 6 fix */
}

IE의 경우, float된 자식을 감싸려면 부모가 MS 전용 속성인 “hasLayout“이 true 값을 가져야 하는데, 우연히도 IE 7에 와서는 overflow의 속성이 주어질 경우(visible 제외) 자동으로 hasLayout 값을 갖게 되면서 또 다른 꼼수를 사용할 필요가 없다. 하지만, 불행히도 IE 6에서는 여전히 hasLayout 값을 주려면 이미 알려져 있는 여러 hasLayout 값을 갖게 하는 CSS 속성들 가운데 하나를 적용해 주어야 한다. (위에서는 “Holly Hack”이라 일컬어지는 height: 1%를 사용했고, 다른 브라우저들로부터 감추기 위해 underscore hack이 사용되었지만, 부모 요소에 height 값을 지정할 필요가 없다면 밑줄은 필요없다.)

이런 꼼수들의 실제 적용은 나중에 CSS 파일에 따로 모아서 사용하는 것이 사이트 관리하는데 수월할 것이다.

jQuery 1.1.3 버전에 와서는 거의 80개 이상의 버그가 잡혔고 DOM 위를 돌아다니는 속도가 무려 800%나 빨라졌다고 한다.
그리고, 이벤트와 효과 관련 시스템이 다시 쓰여지면서, 키보드 이벤트를 더 효율적으로 처리할 수 있게 되었고 UI 효과의 처리 속도와 호환성이 향상되었다.

그 동안 다른 자바스크립트 라이브러리들과 비교해서 selector 처리 속도에서 약점을 보여왔었는데, 이젠 말끔히 해소된 느낌이다.
또한 눈에 띄는 것은, 새로운 유형의 selector들이 소개되었는데, 그 중 selector로 유니코드를 사용할 수 있게 되면서 $("div.머릿말")처럼 한국어로 된 속성 값을 바로 사용할 수 있게 되었고, 새로 추가된 ‘test suite’은 애니메이션 효과를 실험하는데 있어 버그 탐색에 도움을 줄 듯 하다. 또, event.which 속성으로 눌린 특정 키나 마우스 버튼에 관한 상세한 정보를 얻을 수도 있단다.

이제 더 날렵해지고 활동 범위도 넓어진 jQuery의 다음 버전도 기대되는데, 7월 말에 1.1.4 버전의 발표를 끝으로 더 많은 새로운 기능들을 흡수한 jQuery 1.2로 건너뛸 예정이다.

한편, 그 동안 비밀 프로젝트로 숨겨왔던 jQuery UI 소식을 공개하였는데, 여기에는 Drag & Drop 라이브러리가 포함되어 있고 Draggables, Droppables, Sortables, Resizables, 그리고 Slider 등 여러 UI 효과와 관련된 코드가 포함될 예정이란다. 아마도 이 놈은 PrototypeScript.aculo.us가 쌍을 이루듯 jQuery의 UI 효과를 위한 대표 plugin으로 자리잡을 듯. 8)

Safari 3에 포함되어 있는 Web Inspector가 새로운 모습으로 또 한 번 탈바꿈 하였다.

새로운 모습의 Web Inspector 모습

바뀐 내용을 보면,

  • 완전히 새로 디자인한 인터페이스, 더는 투명한 패널이 아님.
  • Safari 뿐만이 아니고, WebView를 사용하는 제 3의 어플리케이션들에서도 사용 가능.
  • 탐색 페이지 별 도킹(docking) 지원.
  • 페이지에 포함된 모든 리소스들을 종류별로 분류해서 보여줌.
  • 글자 기반의 모든 리소스들을 검색할 수 있는 통합 검색.
  • 실시간 JavaScript 실행으로 나타나는 오류 및 경고를 보여주는 콘솔 창.
  • HTTP 요청과 응답 headers를 포함해서 리소스의 시간대 별 로드 시간을 보여주는 Network 창.
  • Network 창 속 리소스 크기와 로드 시간을 요약해서 보여주는 그래프.
  • HTML 소스의 문법 구별 색깔 표시 기능(syntax highlighting).
  • inline JavaScript과 HTML의 오류 보고 기능.

과연, Web Inspector는 Safari의 Firebug가 되고 싶은 것인가?
이 모든 기능이 Windows에도 그대로 적용된다니 웹 개발자들에게는 또 하나의 좋은 도구로 자리잡겠군. 당장 Mac과 Windows 용 nightly builds에서 사용 가능하다.
설치 유혹이 너무나 크군. 😈

widget.onsync 이벤트가 도대체 무엇인지 알아보려다 우연하게 찾게된 글로, WWDC 07 중에 열렸던 Dashcode Widget Creation 세션과 Website development for the iPhone 세션에 관한 상세한 참석자의 노트 기록을 엿볼 수가 있다.

Dashcode Widget Creation Session

  • Widget 디자인에서 중요한 것은 일반 웹 페이지에 적용되는 링크 위주가 아닌 콘트롤 위주가 되어야 한다.
  • Leopard Widgets에서는 dotMac과의 동기화 기능을 제공하는데, 이것을 위해 widget.onsync 이벤트가 추가되었다.
  • Safari Webkit에 새로 추가된 CSS 속성: -webkit-border-radius, -webkit-box-shadow
  • Leopard Widgets은 이제 하나의 프로세스로 동작한다.
  • 아직은 Dashcode가 iPhone 어플리케이션 개발용으로 사용될 수는 없다.

Website development for the iPhone

  • iPhone Safari에서는 Page view가 tabs의 기능을 한다.
  • Safari 책갈피는 데스크탑에 설치된 Safari의 것과 동기화 될 수 있음.
  • WML은 지원되지 않지만, XHTML Mobile 문서는 사용 가능.
  • No Flash, no Java.
  • media type의 경우 iPhone을 위해 print 흑은 handheld 유형을 적용하지는 말것.
  • viewport 속성을 지정할 것. (모두 6개- width, height, initialscale, user – scalable…): <meta name="viewport" content="width=320" />
  • 더블 탭(double tap) 후 글자가 잘 보일 수 있도록 -webkit-text-size-adjust 속성을 사용: -webkit-text-size-adjust:none|auto|percentage
  • framesets 대신에 iframes 사용.
  • drag and drop과 부분 영역의 선택 불가.
  • form controls의 스타일 적용할 수 있게 됨 .
  • 파일 업로드 불가.
  • 전화 링크 tel:#-###-###-####, Google 지도 링크.
  • QuickTime Pro에 추가된 iPhone을 위한 새로운 export 형식: Movie to iPhone – 1 Mbit (wi-fi 용), Movie to iPhone (Cellular Edge 용)
  • 미디어 파일을 전송하는 서버는 byte-range 요청을 지원해야 함 (HTTP 1.1).
  • 음성/영상의 재생을 위해 JavaScript를 쓰지 말것.
  • Canvas 사용 가능.
  • 각 리소스(HTML, CSS, 그림, JS…)는 10 MB의 크기 제한이 있음.

Atomic Typewriter – Article Viewer

그리고, 그 동안 알려진 iPhone이 Flash를 지원하지 않는 이유는 높은 CPU 점유율로 인해 급속하게 배터리가 소모되는 문제가 있기 때문이라는 소식이다. 결국 iPhone에서 실행될 YouTub 동영상은 모조리 h.264 형식으로 인코딩 될 예정이라니, 과연 Apple과 Google이 손을 맞잡고 iPhone의 성공에 쏟아붓는 노력의 크기를 짐작하게 함.

이제 iPhone의 초기 화면을 채워줄 12개의 버튼이 공개되었으니, 나머지 버튼 4개의 정체는 9일 후에나 밝혀지려나? 🙄