Blog 본문

공지사항

모두를 위한 즐거운 변화, 접근성. '모두 다른 우리'가 다 함께 즐거워지는 세상을 위한 Daum의 노력


▶ DevOn 2013, Daum 접근성 부스 프로그램 페이지 : http://devon.daum.net/2013/#!/program/booth/daum-a11y


국내 대표 기술 커뮤니티와 Daum이 함께 만들어가는 열린 콘퍼런스 DevOn 2013 행사에 Daum Service 접근성 컨설팅 부스가 함께 합니다.


그 동안 서비스를 운영하시면서, 접근성 테스트 진행에 어려움이 있으셨던 분은 이 기회에 무료 접근성 컨설팅을 신청해 보세요~

Daum Serivce 에서는 접수된 서비스를 사전에 진단하여, 행사 현장에서 진단보고서 전달 및 컨설팅을 통해 접근성 제고에 실질적인 도움을 드리고자 합니다.

접근성 테스트 실무자가 직접 참여하는, 접근성 컨설팅! 여러분을 맞을 준비에 기대가 됩니다.


모두를 위한 즐거운 변화를 함께 만들어 가보시는 건 어떨까요?


더불어 접근성 프로세스 소개와 그 동안의 경험을 나누고 소통하는 프로그램도 마련하고 있으니, 많은 관심과 참여 바랍니다.



이벤트를 통하여 소정의 상품도 받아가세요~

DevOn Daum 접근성 부스 프로그램 페이지에서 상세 내용을 확인하실 수 있습니다.


▶ DevOn 2013, Daum 접근성 부스 프로그램 페이지 : http://devon.daum.net/2013/#!/program/booth/daum-a11y



Posted by darum

전체 댓글

Blog 본문

공지사항






- 경력직 0명 



- 웹 & 모바일 서비스의 웹표준 마크업 개발 진행



- 웹 표준에 대한 이해가 있는 자, 웹 및 모바일 UI에 관심이 있는 자

  (HTML5와 CSS3 등 최신 기술 트렌드에 관심있는 분)

- XTHML/HTML, CSS, CrossBrowsing, Semantic Markup, 웹표준, 웹접근성 관련 경험자 

- javascript 개발경력 및 웹개발 능력 보유자 우대



- 서울 가산동 or 제주특별자치도 제주시


◆ 다음서비스 안내 : http://daumservice.co.kr/




Posted by darum

전체 댓글

Blog 본문

공지사항






▶ 서비스 바로가기: http://troy.labs.daum.net


Troy는 국내외 주요 모바일 단말기에 탑재된 기본 브라우저의 실측 사이즈 화면을 통해

모바일 웹 또는 반응형 페이지의 인터페이스를 검증하는데 도움을 주는 개발 도구입니다.


누구나 빠르게 모바일 웹 페이지를 한 곳에서 테스트해 볼 수 있는 장점이 있으며,

화면 확대/축소 기능 및 맞춤형 크기 변경 기능 또한 제공합니다.

여기에 표시되는 화면 크기는 모바일 웹 개발 시 흔히 사용되는 medium-dpi 기준의 브라우저 크기로서, 

기기 또는 운영체제별 특성,버그는 실제 기기를 통해 확인하셔야 합니다.


앞으로 Troy는 새로운 단말기 추가 및 고급옵션 기능 등도 추가제공할 예정입니다. 

여러분의 사용 소감 및 개선 아이디어를 부탁 드립니다.

Posted by darum

전체 댓글

Blog 본문

지식공유/이슈&버그


 작성자 : 유낙동 (다음서비스 웹표준개발2팀)


테스트 브라우저 버전정보
  • - IE6, IE7, IE8, IE9, IE10, 크롬(27.0), 사파리(5.1.7), 오페라(12.15), 파폭(21.0)
INTRO
  • - DTD 나 브라우저, 부모 엘리먼트의 영향을 받아 img요소의 여백 유무가 결정
  • - 각 케이스별 결과를 분석해보고 이에 대한 원인과 결론을 도출

결론

  • - 경우의 수는 크게 2가지, 소스내 공백이 있을 경우와 없을 경우로 나뉘어 짐
    • - 소스내 공백이 없을 경우 (DTD, 브라우저, 부모 엘리먼트)별 로 상이한 결과를 나타냄
    • 소스내 공백이 있을 경우에는 무엇에 관계없이 하단 여백 생김 (오페라 제외)

소스내 공백이 없을 경우

부모가 block 요소일 때

  • - 모든 브라우저 (IE6 제외)
    xthmlhtml5



  • - IE6
    xthmlhtml5


    <style>
    .wrap {background:red;}
    </style>
    <div class="wrap"><img src="test.jpg" /><img src="test.jpg" /></div>
    

부모가 inline 요소일 때

  • - IE7 이상, 오페라
    xthmlhtml5



  • - 크롬, 사파리, 파폭
    xthmlhtml5



  • - IE6
    xthmlhtml5

    <style>
    .wrap {background:red;}
    </style>
    <span class="wrap"><img src="test.jpg" /><img src="test.jpg" /></span>
    

소스내 공백이 있을 경우

부모가 block 요소일 때

  • - 모든 브라우저 (오페라 제외)
    xthmlhtml5

  • - 오페라
    xthmlhtml5

    <style>
    .wrap {background:red;}
    </style>
    <div class="wrap">
        <img src="test.jpg" />
        <img src="test.jpg" />
    </div>
    

부모가 inline 요소일 때

  • - 모든 브라우저
    xthmlhtml5

    <style>
    .wrap {background:red;}
    </style>
    <span class="wrap">
        <img src="test.jpg" />
        <img src="test.jpg" />
    </span>
    

원인

  • - 소스내 공백이 있을 경우,
    공백을 하나의 텍스트 노드로 인식하여,
    기본 행간이 적용되면서 여백 생김
  • - 소스의 공백이 없는 경우에도,
    html5 DTD 이거나 부모의 요소가 inline인 경우,
    img 요소에 기본 행간이 적용되어 여백 생김

해결방법

  • - img 요소에 display:block; 사용으로 행간의 영향에서 벗어나 여백을 방지.
  • - img 요소에 vertical-align:top; 사용으로, 기본 행간 기준을 상단으로 하여 여백을 방지.
  • - 부모 요소에서 line-height:0; 사용으로 기본 행간을 초기화하여 여백을 방지. (이는 부모가 블록요소일 경우에만 사용 가능하고, IE6에서는 블록요소에서도 적용 안됨)


'지식공유 > 이슈&버그' 카테고리의 다른 글

Font 축약형 분석  (0) 2013.07.09
Posted by darum

전체 댓글

Blog 본문

지식공유/이슈&버그


 작성자 : 유낙동 (다음서비스 웹표준개발2팀)


INTRO
  • - font 축약형을 사용했을때와 그렇지 않은경우 비교 분석
  • - 비교 분석 결과에 따른 성능 결과 도출

결론

  • - Font 축약형 사용시 불필요한 폰트속성이 추가 됨
  • - 위 결과를 토대로 yslow를 이용한 페이지 로딩 속도를 실험한 결과, 성능에는 큰 차이점을 보이지 않음

축약형 사용/미사용 비교분석

비교

  • - css 적용 전 마크업
    소스결과
    <div id="font">
    	<h1>heading</h1>
    	<p>paragraph</p>
    	<i>italic</i>
    	<b>bold</b>
    </div>
    



  • - 축약형 미사용시 요소별 default 속성을 그대로 유지

    소스
    결과
    <style type="text/css">
    #font * {font-size:12px;font-family:dotum;}
    </style>
    
    <div id="font">
    	<h1>heading</h1>
    	<p>paragraph</p>
    	<i>italic</i>
    	<b>bold</b>
    </div>
    



  • - 축약형 사용시 요소별 defalut 속성을 덮어쓰게되어 모든 font속성 초기화
    htmlview
    <style type="text/css">
    #font * {font:12px/15px dotum;}
    </style>
    
    <div id="font">
    	<h1>heading</h1>
    	<p>paragraph</p>
    	<i>italic</i>
    	<b>bold</b>
    </div>
    



분석

  • - 축약형을 사용한 경우,  선언하지 않은 불필요한 폰트 속성이 선언되어있음을 확인할 수 있음.
    • 크롬 Computed Style
      축약형 사용축약형 미사용





비교/분석에 따른 성능 비교

  • - 10000개의 동일한 마크업을 생성 후 축약형을 사용한 경우와 그렇지 않은 경우를 yslow를 이용하여 측정
  • - 페이지 로딩시간 분석 (총 10회 측정)
    축약형 사용여부1회2회3회4회5회6회7회8회9회10회평균
    미사용0.878s0.840s1.213s1.218s0.848s1.223s1.094s1.250s0.899s1.258s1.0721
    사용1.107s1.186s1.197s1.188s0.822s0.839s1.214s0.839s1.228s1.213s1.0833
  • - 성능 측정 결과 큰 차이점이 없음을 확인


'지식공유 > 이슈&버그' 카테고리의 다른 글

img 요소의 여백  (2) 2013.07.09
Posted by darum

전체 댓글

Blog 본문

지식공유/성능관련


 작성자 : 이동원 (다음서비스 웹표준개발팀 개발선임)


개요

CSS를 이용한 복잡한 페이지 디자인과 Javascript를 이용한 동적변화가 매우 다양하게 이용되고 있는 상황에서 이에 따른 속도저하 등의 문제점이 발생하고 있다. 이를 원천적으로 해결할 수는 없겠으나 조금이라도 줄일 수 있는 방법들을 찾기 위해 브라우저의 작동원리를 이해해보고, 그에 따른 문제해결 방법을 찾아보고자 한다.

브라우저 렌더링 프로세스의 이해

브라우저의 기본구조


  • User Interface - 주소창, 뒤로가기/앞으로가기 버튼, 즐겨찾기 기능등을 포함하며 브라우저 중 웹페이지 표시부분(document)을 제외한 거의 모든 부분에 해당.
  • Browser Engine - 렌더링 엔진에 질의를 보내며, 조작하는 인터페이스
  • Rendering Engine - 요청된 콘텐츠를 화면에 뿌려주는 기능을 담당함. (전송된 HTML과 CSS 등을 파싱하여 디스플레이)
  • Networking - HTTP 리퀘스트와 같은 네트워크 통신기능 수행. 
  • UI Backend - 브라우처 창의 형태나 셀렉트버튼, 체크박스 등을 표현함. OS의 UI 메소드에 의존함. (XP에서의 셀렉트박스와 윈도우7에서의 셀렉트박스가 다른 것을 생각하면 이해가 쉬움)
  • Javascript Interpreter - 자바스크립트 코드의 파싱과 실행에 사용 (유명한 것이 바로 Chrome의 V8 엔진)
  • Data Storage - 지속적인 계층(쿠키 등을 위한 저장공간). HTML5에서는 웹DB가 해당됨.

Rendering engine basic flow

브라우저가 네트워크 계층에서 요청된 데이타를 받아오면 렌더링 엔진이 움직이기 시작한다.

다음은 렌더링 엔진의 기본적인 흐름을 도식화 한 것.

  1. Parsing HTML : HTML을 파싱하고 DOM Tree를 설계
  2. Render Tree
  3. Layout : 각각의 노드가 화면내에 위치되어야 할 좌표값 계산 (화면 내 position과 size) 후 배치
  4. Paint : 계산되고 지정된 명령에 따라 각각의 노드를 그림

화면구성이 완료된 후 동적인 변화(JS를 통한 DOM 편집, 스타일 수정 등) 발생 시엔?

어떠한 변화가 발생했을 때 브라우저는 최소한의 대응을 하도록 설계되었으며 만일 특정 엘리먼트의 color값에 변화가 발생한다면 오직 해당엘리먼트의 repaint만을 유발한다. 하지만 엘리먼트의 포지션에 변화가 발생했을 경우에는 해당 엘리먼트의 Repaint는 물론 레이아웃까지도 유발(Reflow)한다. html 엘리먼트의 폰트사이즈를 키우는 것과 같은 커다란 변화들은 전체 Render Tree의 Repaint와 Reflow를 유발시킨다.

Reflow? Repaint?

Repaint (or Redraw)

엘리먼트의 스킨에 변화가 발생하지만, 레이아웃에는 영향을 미치지 않을 때 유발된다. (visibility, outline, background-color 등이 포함) Opera에 따르면 Repaint는 해당 행위가 발생하는 순간, 문서내 DOM tree의 다른 노드들의 스킨까지도 검증해야 하므로 비용이 높다고 함.

Reflow

문서 내 노드들의 레이아웃, 포지션을 재계산 후 다시 뿌려주므로 Repaint보다도 더 심각한 퍼포먼스 저하를 유발시키는 프로세스이다. 특정 엘리먼트에 대한 Reflow 발생 시, 페이지에서의 해당 요소는 즉시 Reflow State가 되며 해당 엘리먼트의 자식요소와 부모/조상 요소역시 레이아웃 계산을 진행한다. (결국은 페이지 전체를 다시 훑는 것이나 마찬가지) Opera에 의하면, 대부분의 리플로우는 페이지 전체의 렌더링을 다시 일으킨다고 한다.

" Reflows are very expensive in terms of performance, and is one of the main causes of slow DOM scripts, especially on devices with low processing power, such as phones.In many cases, they are equivalent to laying out the entire page again." 

- Reflow는 퍼포먼스 측면에서 매우 고비용을 발생시키는 프로세스이며, 휴대전화와 같은 저성능 디바이스에서는 특히나 더욱 느린 DOM 스크립팅을 발생시키는 주범이다. 많은 경우에서 Reflow는 페이지 전체를 다시한번 레이아웃시키는 결과를 가져온다.

무엇이 Reflow를 유발시키는가?

특정 엘리먼트에 스타일변화가 발생했을 때, 그 개체가 가진 자식요소에 대한 레이아웃 재정리를 위해 Reflow가 실행된다. 설령 그 변화가 그 자식요소 및 페이지에는 아무 영향을 미치지 않을지라도, 기계는 이를 미리 알고있지 못한다. 따라서 작은 변화에도 자식개체는 물론, 페이지 전체에 Reflow가 실행된다. Mozilla에 따르면 다음의 케이스에서 Reflow가 발생한다고 한다.

  • 윈도우 리사이징
  • 폰트의 변화
  • 스타일 추가 또는 제거
  • 내용 변화 (인풋박스에 텍스트 입력 등..)
  • :hover와 같은 CSS Pseudo Class
  • 클래스 Attribute의 동적 변화
  • JS를 통한 DOM 동적 변화
  • 엘리먼트에 대한 offsetWidth / offsetHeight (화면에서 보여지는 좌표) 계산시
  • 스타일 Attribute 동적변화

Reflow를 피하거나 그 영향을 최소화하는 방법

  1. 클래스 변화에 따른 스타일 변화를 원할 경우, 최대한 DOM 구조 상 끝단에 위치한 노드에 주어라. 
  2. 인라인 스타일을 최대한 배제하라.
  3. 애니메이션이 들어간 엘리먼트는 가급적 position:fixed 또는 position:absolute 로 지정
  4. 퀄리티와 퍼포먼스 사이에서 타협하라
  5. 테이블 레이아웃을 피하라
  6. IE의 경우, CSS에서의 JS표현식을 피하라.
  7. JS를 통해 스타일변화를 주어야 할 경우, 가급적 한번에 처리하라.
  8. CSS Rules는 필요한 만큼만 정리하라.
  9. position:relative 사용 시 주의하자.

1. 클래스 변화에 따른 스타일 변화를 원할 경우, 최대한 DOM 구조 상 끝단에 위치한 노드에 주어라.

클래스 변화로 인한 Reflow는 물론 피할 수 없겠지만,  그 효과는 줄일 수 있다. DOM 트리에서 가급적 말단에 위치한 노드에 클래스 변화를 줄 경우, 이는 리플로우의 행동반경을 전체 페이지가 아닌 일부 노드들로 제한할 수 있다. 따라서 전체 페이지를 감싸는 wrapper에 클래스를 수정하는 행위는 꼭 피해야 한다. 또한 OOCSS 방식을 통해 클래스변화가 발생할 경우, 특정 엘리먼트에 대해 상당히 많은 클래스를 적용시키는 것 같지만, 실제로는 리플로우의 영향을 최소화함으로써 퍼포먼스적인 측면에서 큰 이득이 발생한다.

2. 인라인 스타일을 최대한 배제하라.

DOM은 매우 느린 구조체이다. 게다가 인라인상에 스타일이 주어진 경우, 리플로우는 페이지 전체에 걸쳐 수차례 발생하게 된다. 만일 인라인스타일이 없을 경우, 외부스타일 클래스의 조합으로 단 한번만 리플로우를 발생시킨다.

3. 애니메이션이 들어간 엘리먼트는 가급적 position:fixed 또는 position:absolute 로 지정

일반적으로 JS (특히 jQuery)나 CSS3로 width/height 또는 위치이동을 구현한 애니메이션은 거의 초단위로 상당한 Reflow를 불러일으킨다. 이러한 경우에 해당 개체의 position 속성을 fixed 또는 absoute로 주게 되면 다른 요소들의 레이아웃에 영향을 끼치지 않으므로 페이지 전체의 Reflow 대신 해당 애니메이션요소의 Repaint만을 유발한다. 이것은 비용적인 측면에서 매우 효율적인 방법이다.

4. 퀄리티와 퍼포먼스 사이에서 타협하라

한 time에 1px을 움직이는 애니메이션 A와 한 time에 3px를 움직이는 애니메이션 B가 있다고 할 때, 애니메이션의 계산과 페이지 Reflow 계산이 동시다발적으로 발생함으로써 CPU 퍼포먼스 비용이 발생하는데, A가 B에 비해 더욱 큰 비용이 발생한다. 속도가 빠른 디바이스에서는 둘다 비슷하게 보이지만, 속도가 느린 (휴대전화와 같은) 디바이스에서는 그 차이가 눈에 띌 수 있다. 

5. 테이블 레이아웃을 피하라

테이블로 구성된 페이지 레이아웃은 점진적(progressive) 페이지렌더링이 적용되지 않으며, 모두 로드되고 계산된 후에야 화면에 뿌려진다. 더군다나 Mozilla에 따르면 테이블 레이아웃에서는 아주 작은 변화마저도 해당 테이블 전체 모든 노드에 대한 Reflow를 발생시킨다고 한다. 또한 YUI data table 위젯의 개발자인 Jenny Donnelly 에 의하면, 레이아웃 용도가 아닌 데이터표시 용도의 올바른 테이블이라 할지라도 해당 테이블에 table-layout:fixed 속성을 주는 것이 디폴트값인 auto에 비해 성능면에서 더 좋다고 한다.

6. IE의 경우, CSS에서의 JS표현식을 피하라.

소개된지 오래된 규칙이지만 매우 효과적인 규칙이다. 이 CSS 표현식의 비용이 매우 높은 이유는, 문서 전체 또는 문서중 일부가 Reflow될 때마다 표현식이 다시계산되기 때문이다. 이는 결국.. 애니메이션과 같은 변화에 의해 리플로우가 발생했을 때, 경우에 따라 1초당 수천, 수만번의 표현식 계산이 진행될 수 있다는 것을 의미한다. 때문에 CSS표현식은 반드시 피해야한다.

7. JS를 통해 스타일변화를 주어야 할 경우, 가급적 한번에 처리하라

특정 요소에 스타일변화를 주어야 할 경우 다음과 같이 시도해볼 수 있다.

var toChange = document.getElementById('elem');
toChange.style.background = '#333';
toChange.style.color = '#fff';
toChange.style.border = '1px solid #ccc';

이러한 접근은 여러번 중복된 Reflow와 Repaint를 유발시킨다.

때문에 위와 같은 방법보다는 다음과 같은 방법으로, 단 한번의 변화만을 발생시키는 것이 더욱 효과적이다.

/* CSS */
#elem { border:1px solid #000; color:#000; background:#ddd; }
.highlight { border-color:#00f; color:#fff; background:#333; }
/* js */
document.getElementById('elem').className = 'highlight';

8. CSS 하위선택자는 필요한 만큼만 정리하라.

Reflow 자체보다도, Reflow가 유발시키는 CSS Recalculation 에 필요한 내용이다. CSS의 Rule 매칭 프로세스는, 가장 우측의 핵심 선택자에서 좌측으로 흐른다. 이 과정은 더이상 매치시킬 Rule이 없거나 잘못된 Rule이 튀어나올 때까지 계속 매칭시키며 진행된다. 만일 해당 CSS의 특별성(specialty)이 확보되는 선에서, 가급적 딱 필요한만큼만 사용한다면 퍼포먼스 측면에서의 극적인 향상이 발생하게 된다. (즉, 룰이 적을수록 비용절감) 설령 .btn_more라는 클래스가 list_service 내에 쓰이는 유일한  요소일 경우, 아래와 같은 두가지 예가 발생할 수 있다.

첫번째 예
.section_service .list_service li .box_name .btn_more {display:block;width:100px;height:30px;}
두번째 예
.section_service .list_service .btn_more {display:block;width:100px;height:30px;}

가정 상 둘 다 .btn_more의 specialty가 유효한 CSS임에도 불구하고, 첫번째 예처럼 쓰는 경우는 "코드 가독성"과 같은 이유에서일 것이다. 유지보수의 측면에서 보자면 물론 가독성도 중요한 부분이나, 위의 첫번째 예와 같이 5단계에 걸쳐 필요이상의 규칙들을 작성해놓을 경우 퍼포먼스 하락을 가져올 수 있다. 더군다나 이러한 CSS 코드들이 5~10라인이 아닌, 500~1000라인쯤 될 경우 퍼포먼스에 상당한 영향을 미치게 된다. 때문에 두번째 예와 같이 딱 필요한 선에서 핵심만을 짚는 CSS Rule 선언이 필요하며, 코드 가독성을 위해서라면 차라리 해당 분류 묶음에 CSS 주석처리를 하는 것이 효과적이다. (하위선택자는 가급적 적을수록 좋다)

9. position:relative 사용 시 주의하자.

페이지를 새로 열거나 Reflow가 발생되어 CSS Calculation이 발생할 경우, Box model Calculation → Normal Flow 의 순서로 계산이 진행된다. (Normal flow는 Layout 또는 Reflow라 불리는 과정에 속하는 일부임.) 일반적인 경우, 엘리먼트 들은 margin, border, padding, content(width,height) 등 Box model을 먼저 계산한 후 Normal flow 상태의 레이아웃에 배치된다. (다른말로 선형적 배치)

1) Box model Calculation에 의한 계산

아래 이미지와 같이, 화면내 배치가 아닌 각 엘리먼트 자체의 Metrics 계산을 우선 진행한다.

2) Normal flow에 의해 선형적으로 배치된 상태

Box model 계산 후, 마크업 순서에 따라 화면 내 배치를 실행한다. (단, position:absolute 또는 fixed일 경우 Normal flow를 거치지 않고 Out of flow 즉, 곧바로 Positioning을 진행한다.)

3) Normal Flow 이후

Float냐 Position이냐에 따라 Positioning 과정이 한번 더 일어나는데 각 케이스별 시나리오는 다음과 같다.

→ case 1. Float 속성을 가진 요소

Normal flow 이후 별도의 Positioning 계산은 없으며, 왼쪽 또는 오른쪽으로 자신이 갈수있는 한 끝까지 이동한다.

(즉, Box model → Normal flow → Floating)

→ caes 2. position:relative;와 함께 top,left 등 위치값을 가진 요소

Normal flow 상태에서 한번 더 Positioning 프로세스를 거치게 된다.

(Box model → Normal flow → Positioning)


→ case 3. position:absolute 또는 fixed를 가진 요소

Box model 계산 후 Normal flow 과정을 거치지 않고 바로 자신의 위치에 박히게 된다. (Out of flow)

(Box model → Positioning)


위에서 확인할 수 있듯, position:relative가 오히려 position:absolute 또는 float 속성보다 더 큰 비용을 가진다. (Box model → Normal flow → Positioning 의 3단계를 모두 거치므로) 때문에 UL 또는 OL과 같은 목록에서 상당수 반복되는 LI 요소에 position:relative 와 top,left 속성등을 주는 경우, 퍼포먼스 하락이 발생할 가능성이 크다.

관련 참조자료 및 인용자료

How browsers work - behind the scenes of modern web browsers (by Tali Garsiel)

http://taligarsiel.com/Projects/howbrowserswork1.htm

Reflows & Repaints : CSS Performance making your Javascript slow? (by Nicole Sullivan)

http://www.stubbornella.org/content/2009/03/27/reflows-repaints-css-performance-making-your-javascript-slow/

Efficient Javascript (by Mark Wilton-jones, Opera)

http://dev.opera.com/articles/view/efficient-javascript/

Pegs, Holes And Reflow (by Robert O'Callahan, Mozilla)

http://weblogs.mozillazine.org/roc/archives/2007/11/pegs_holes_and.html

Notes on HTML Reflow (by Chris Waterson, Mozilla)

http://www-archive.mozilla.org/newlayout/doc/reflow.html

Gecko:Reflow Refactoring (Mozilla Wiki)

https://wiki.mozilla.org/Gecko:Reflow_Refactoring

Writing Efficient CSS for use in the Mozilla UI (by David Hyatt)

https://developer.mozilla.org/en/Writing_Efficient_CSS

WebCore Rendering I - The Basics (by David Hyatt)

http://www.webkit.org/blog/114/webcore-rendering-i-the-basics/

CSS Positioning and Layout (by Jennifer Kyrnin)

http://webdesign.about.com/od/beginningcss/p/aacss9layout.htm

The CSS Box Model (by Jennifer Kyrnin)

http://webdesign.about.com/od/beginningcss/p/aacss6box.htm


Posted by darum

전체 댓글

Blog 본문

공지사항

Dough (도)는 다음커뮤니케이션 웹표준기술팀에서 제작한 CSS 기반 UI Framework 입니다.



CSS 전문가와 비전문가 누구나 몇가지 규칙을 숙지하기만 하면 자유롭게 웹표준 기반 마크업을 개발할 수 있기 때문에 사용자들이 좀 더 쉽게 접근할 수 있습니다.


또한 오픈소스로 공개되어 있기 때문에 누구나 활용 및 참여가 가능합니다. (dough-0.2.0다운)

아직은 초기 버젼이나 꾸준히 업데이트를 통해 단점 개선과 사용 편의성과 확장성을 위해 개선되고 있는 중입니다.


이를 반영하듯 벌써 Dough(도우)의 오픈소스를 이용하는 이용자들이 나오고 있습니다.


도넛(Doughnut), 다음 Dough 기반 워드프레스 테마

 

Doughnut은 Sukjoon Kim님께서 다음 커뮤니케이션즈에서 공개한 오픈소스 CSS Library인 Dough에 기반한 워드프레스 테마입니다.

또한 Dough(도우)를 이용한 소감을 잘 정리해서 포스팅해주셨습니다. (관련링크)   github 바로가기


Posted by darum

전체 댓글

Blog 본문

공지사항

지난 3월 22일에 제주에서 진행된 "다룸(Darum) 오픈기념 웹표준 간담회"의 발제 자료와 동영상을 공유합니다. 일부 프로그램의 동영상은 참가자들의 요청에 의해 제공되지 않은 점 양해바랍니다.


1. Front-end 직군의 현재와 미래 (홍윤표.CSS Design Korea 리더)


2. 반응형 웹 디자인은 만능인가? (신현석.한국 모질라 커뮤니티 리더)


3. 웹 접근성과 장애인 차별 금지법 (장성민.한국 웹접근성 그룹 리더)

원고 파일(text 형식), 출처: http://www.cyworld.com/beaverland/9677445

 darum-web-accessibility.txt



4. HTML5와 웹 어플리케이션의 미래(전체 토론, 좌장: 윤석찬.Daum DNA Lab장)

(다음 tv팟 DNA 채널에서 보기)

※ 다룸(Darum) 오픈기념, 웹표준 간담회 동영상은 다음 tv팟 DNA 채널에서 모아 볼 수 있습니다.

Posted by darum

전체 댓글

Blog 본문

공지사항

지난주 금요일에 "다룸(Darum) 오픈기념 웹표준 간담회"가 많은 분들의 관심과 참여로 성료했습니다.
항공사정으로 1시간 늦은 오후 2시부터 시작되어, 오후 7시에 종료됐습니다.


행사는 Daum 기술부문장인 신재홍님의 인사말로부터 시작했습니다. Daum의 웹표준과 웹접근성에 대한 노력들, 향후 N스크린 시대에 따른 웹기술의 전망 등에 대해 소개해주셨습니다. 

이후 Daum 웹표준 기술팀과 개발팀의 리더인 이원주님이 다룸(Darum) 사이트를 소개했습니다. Daum의 웹표준/웹접근성 Reference의 합성어로, HTML/CSS 사용 가이드, 웹접근성 가이드, 마크업 코드 Snippet 등의 콘텐츠 구성 및 향후 Daum의 웹표준/웹접근성 전략 등에 대해 소개해줬습니다.


"FT직군의 현재와 미래"에 대해 CSS Design Korea(CDK) 리더인 홍윤표님이 간단한 발제 후, 본격적인 프로그램 일정이 시작했습니다. 발제를 진행한 홍윤표님과 함께 정찬명(NHN), 이원주(Daum), 조현진(ACG)님이 토론에 참여해서, 웹표준을 다루는 직군의 현재와 미래에 대해서 때로는 날카롭게, 때로는 장미빛 전망과 함께 여러 논의를 진행했습니다.


2번째 세션은 "반응형 웹 디자인은 만능인가?"에 대해 신현석(한국모질라커뮤니티 리더)님의 발제로 시작했습니다. 웹과 단말의 다양성에 따라, 미디어 쿼리를 기반으로 한 반응형 디자인 기술에 대해서 소개했습니다. 이후 방미희(CDK), 전승엽(CSSNite Korea)님과 함께 반응형 디자인의 단점인 성능 문제를 해결하기 위한 다양한 해법을 논의하고, 이를 보완하기 위한 서버측 트래픽 최적화 방법 등에 대해서 살펴봤습니다.


3번째 세션은 "웹 접근성과 장애인 차별 금지법(이하 장차법)"이라는 주제로 장성민(KWAG 리더)님의 발제가 이어졌습니다. 다양한 웹접근성 인증마크를 소개했고, 장애인이 아닌 누구나 인권위 진정이 가능하다는 등의 정보를 공유해주셨습니다. 이후 강동욱(Daum), 김혜일(Emotion)님과 함께 토론을 진행했으며, 웹접근성 지침/가이드와 실무개선의 차이점 및 온라인 쇼핑몰과 홈쇼핑에서 웹접근성 개선 등에 대한 토론이 이어졌습니다.


마지막 세션으로, "HTML5와 웹어플리케이션의 미래"라는 주제로 윤석찬(Daum)님이 좌장을 맡아, 커뮤니티 리더들과 전체 토론이 이어졌습니다. 웹 기술의 가파른 발전에 따라, 해당 업무에 종사하는 분들의 꾸준한 자기계발을 요구했고, 한동한 침체된 국내 웹표준 관련 커뮤니티들의 재도약을 위한 화이팅을 외치는 시간이 이어졌습니다.


토론의 열기는 쉽게 사그러지지 않아, 결국 예정시간보다 30분 늦은 7시에 끝이 났구요.
행사장을 끝까지 지킨 참가자 분들과 토론자 분들이 단체 사진을 찍는 것으로 행사가 마무리됐습니다. 물론 준비된 기념품도 모두 제공했구요.

Ustream으로 제공된 생방송 중계에 1,010(UV)와 평균 300명, 최대 458명이 시청해주셨습니다. 예상보다 폭발적인 참여와 관심에 감사드립니다. 또한, 제주 다음 스페이스.1에서 진행된 이번 행사에 참석하기 위해 서울에서 제주까지 오신 분들도 계셨습니다. 멀리 와주신 분들, 그리고 보내주신 사장님. 모두모두 감사합니다. 

행사 전반적인 상황은 Daum 캠프(http://camp.daum.net/#71f)에서, 행사 사진은 Flickr(http://flic.kr/s/aHsjEtwhTL)에서 확인할 수 있습니다.

행사 발제 자료와 녹화 동영상은 취합/정리되는데로 공유드리겠습니다.

Posted by darum

전체 댓글

Blog 본문

공지사항

Daum의 웹표준 레퍼런스인 

다룸(Darum) 오픈 기념 웹표준 간담회에 여러분을 초대합니다.

 

국내 웹표준/접근성 관련 커뮤니티 리더들과 함께 하는 간담회에 여러분의 많은 관심과 참여 부탁드립니다.




행사 개요

- 일시: 2013년 3월 22일(금) 오후 1시~6시 30분

- 장소: 다음 스페이스.1 멀티홀

- 참여: 웹표준 및 접근성, FT 기술에 관심있는분 모두

- 이벤트: Daum 캠프에, 질문 글 또는 현장 사진을 올린 참석자 중 20명에게 Daum 뮤직 상품권을 드려요!

- 캠프: http://camp.daum.net/71f

- 본 행사는 유스트림(http://www.ustream.tv/)에서 생중계할 예정입니다.

 

 

* 본 행사의 프로그램은 사정에 의해 일부 변경될 수 있습니다. 변경시 사전에 공지하겠습니다.*

Posted by darum

전체 댓글