블로그 이미지

카테고리

데꾸벅 (194)
Publisher (39)
HTML/HTML5 (4)
XML/XHTML (2)
CSS (22)
WEB2.0 (8)
XForms (3)
Scripter (97)
Programmer (1)
Designer (30)
Integrator (18)
Pattern Searcher (4)
News (2)
강좌 및 번역 (3)

최근에 올라온 글

최근에 달린 댓글

Post by 넥스트리소프트 데꾸벅(techbug)
, |




처음 이바닥에 발을 들여놓은지 어언~ 십수년이 지나갑니다. 그러나 그때나 지금이나 웹페이지의 성능향상은 언제나 중요하게 생각되고 있습니다.
어느분이 방명록에 의뢰한 내용이 있어서 찾아보다가 우연히 찾게된 야후! 개발자 센터에서 정의한 웹사이트 최적화 방법입니다. 필요할것 같아 잠시 정리해봅니다.
참고적으로 이곳에서 더글라스 크록포트아저씨의 Ajax 최적화 방법도 들을수 있습니다. 관심있는 분은 참조하세요~
"웹사이트 최적화 기법" 이라는 책도 나와있다는걸.. 번역이 끝난후 알아버렸음돠.. ㅡ.,ㅡ;
High Performance WebSite에 가시면 웹사이트 최적화 기법들이 좀더 상세하게 설명되어 있으므로 확인하시기 바랍니다.
각 브라우저마다 페이지속도를 최적화하기 위해 브라우저의 성능평가나 지원가능한 라이브러리 또는 현재 표준지원여부등을 비교한 사이트도 함 들러보시길...



 

HTTP Request를 최소화하라!

End-User응답시간의 80%는 Front-end단에서 소요된다. 이러한 응답시간의 대부분은 보통 해당 페이지에 포함되어 있는 이미지, 스타일시트, 스크립트, 플래쉬등과 같은 컴포넌트를 다운로드 하는 것과 연관된다. 이러한 컴포넌트를 줄이는것이 웹페이지를 렌더링하는데 요구되는 HTTP Request의 수를 줄이는 한방법이며 좀더 빠른 웹페이지를 구성할수 있는 중요한 포인트이다.

웹페이지내의 컴포넌트의 수를 줄이는 한 방법으로 페이지 디자인을 간결하게 하는것이다. 그러나 좀 더 빠른 시간에 응답메세지를 받으면서 풍부한 컨텐츠(Richer Content)를 제공하기 위한 방법은 없을까? 여기 이러한 풍부한 디자인을 제공하면서 HTTP Request수를 줄이는 방법을 소개한다.

파일 묶기(Combined Files)

한개의 스크립트에 모든 스크립트를 묶어서 (데꾸벅 주: 순차적 다운로드 방법- head 영역에 script를 순차적으로 append시키는법) 사용하거나 하나의 CSS안에 다른 CSS를 묶는 식(데꾸벅 주: @import를 이용한 CSS import)으로 HTTP Request수를 줄이는 방법이다. 이러한 파일묶기 방법은 각각의 스크립트나 스타일시트가 서로다른 페이지에서 다양하게 사용될때는 조금은 무리가 있는 방법이기는 하나 캐쉬를 지원하므로 응답속도를 향샹시키는 하나의 방법으로 사용할수 있다.

CSS Sprites
CSS Sprites는 이미지 Request수를 줄이는 방법으로 사용한다. 하나의 이미지에 여러가지 백그라운드가 사용될때 이미지 조각들을 보여주는 background-image와 background-position 프로퍼티를 사용한다.
(데꾸벅 주: 하나의 버튼을 만들때 마우스오버, 마우스다운, 비활성화 상태의 버튼을 표시하자면 각각의 상태마다 버튼 이미지들이 필요한데 이러한 이미지들을 하나로 만들어서 한번의 Request를 이용해 CSS의 background-position을 사용하여 표현한다. 대부분의 Ajax framework이나 라이브러리들의 CSS를 보면 이렇게 사용하는곳이 많다. 디자이너들에게 추천해 줄만한 내용이다.  미남이의 이러쿵저러쿵 블로그를 참조하세요)

Image Maps
이미지맵은 하나의 이미지 않에 여러개의 이미지를 묶는 방법이다. 전체사이즈는 갔지만 HTTP Request의 수를 줄여줌으로써 페이지 로딩을 더 빠르게 한다. 이미지 맵은 navigation bar와 같이 페이지내에서 연속적으로 사용되는 이미지가 있다면 사용하는것이 좋다.(데꾸벅 예: 웹에디터의 메뉴들) 
페이지 네비게이션에 이미지맵을 사용하는것은 접근성면이나 컨트롤하기가 어려우므로 네이비게이션 영역에서는 추천하지 않는다.

URL Scheme를 이용한 데이타로써 인라인 이미지 사용
실제 페이지에서 이미지 데이타는 URL Scheme를 포함한 데이타로 사용된다. 이러한 것들이 HTML문서사이즈를 증가시킨다. 캐시된 스타일쉬트안에 이러한 인라인이미지를 포함시키는것은 HTTP Request와  웹페이지 사이즈를 줄여줄수 있는 한 방법이다. 인라인이미지의 경우는 아직 다른 브라우저에서는 지원하지 않고 있다.

(데꾸벅 주 : base64로 인코딩된 이미지 파일포맷으로 브라우저에서 재해석하여 렌더링 되므로 이러한 렌더링 타임을 줄이는것이 좋다.  IE8이나 다른 브라우저에서는 이미 base64 포맷으로 이미지를 사용할 수 있다.)

웹페이지를 설계할때 HTTP Request수를 줄이는 것에서 시작하라.
이것은 처음 방문한 사용자를 위해 성능향상을 위한 가장 중요한 가이드 라인이다.  Tenni Theurer씨의 블로그 포스트(Browser Cache Usage-Exposed!)에서 언급한것처럼 일일 방문자중 40~60%가 아무런 캐쉬가 없는 상태에서 여러분의 웹사이트에 방문한다. 이러한 첫번째 방문자를 위해 페이지를 설계하는것이 사용자경험을 좋게 만드는 중요한 키포인트이다. 




CDN(Content Delivery Network)을 사용하라!

사용자와 웹서버의 거리가 가까울수록 응답속도는 빨라진다. 사용자에게 좀더 빠르게 여러분의 컨텐트를 제공하고자 한다면 서버를 사용자들과 지리적으로 가까운쪽으로 분산하여 배포한다. 
(데꾸벅 주 : 서울에 사는 사용자에게 여러분의 컨텐츠를 제공하고자 한다면 서울에 있는 서버가 부산에 있는 서버보다 빠르다는 얘기이다. 그렇다고 서버를 여러군데 설치한다면 배보다 배꼽이 더 커지는 경우이다. 이럴 경우에는 CDN 을 이용하면 좀더 비용을 줄일수 있지만 그렇다고 CDN이 싸다는 얘기는 절대 아니다. 대부분의 돈많은(?) 포탈들의 경우 이러한 CDN을 사용하고 있고 속도가 빠른 웬만한 주요 벤더들의 국내사이트들은 대부분 CDN을 사용하고 있다고 보면 된다.) 


 

Gzip 컴포넌트 사용

참고 URL_1 : apache의 mod_gzip 설정하기
참고 URL_2 : gzip 압축테스트
참고 URL_3 : mod_gzip설치


스타일시트는 최상위에

 HTML specification 에 스타일시트는 페이지의 Head부분에 넣으라고 명백하게 기술되어 있다.
    " LINK태그는 HEAD태그에서만 사용할수 있고 몇개를 넣어도 상관없다. "



스크립트는 맨 밑에

동시에 컨텐츠를 다운로드 하는 문제가 발생한다.   HTTP/1.1 specification 에서는 브라우저는 하나의 호스트네임에서는 동시에 두개이상 컴포넌트를 다운로드 다운로드하지 않는다고 제시한다. 만일 여러분이 이미지를 여러개의 호스트네임으로 서비스한다면 여러분은 동시에 두개이상이 컴포넌트를 다운로드 받게 되는것이다.
스크립트가 다운로드 되는 동안 브라우저는 다른 컨텐츠를 다운로드 받지 않는다.
스크립트를 페이지 맨밑으로 보내지 못하는 경우도 있을 것이다 만일, 예를 들어 스크립트를 document.write를 써서 컨텐츠의 한 부분으로 넣는다면 해당 스크립트를 페이지 맨 밑으로 보내지 못할것이다.  당연히 스크립트의 scope 문제가 발생하게 된다.

대안으로는 defer 스크립트를 사용하는것이다.  DEFER 속성은 스크립트가 document.write를 포함하지 않는다는것을 가르키며 브라우저가 계속 렌더링 할수 있게 해주는 하나의 방법이였다. 불행히도 파이어폭스는 DEFER속성을 지원하지 않는다.

(요즘  자바스크립트 라이브러리들은 defer 속성 대신에 document.ready나, window.onload를 사용한다.)   



CSS Expressions 피하기

CSS expressions은 CSS Properties를 동적으로 사용하는 강력한 방법이기는 하나 위험하다. 인터넷 익스플러러 5 버전 이상에서 지원한다.  종종 개발할때 투명 PNG파일을 사용하기 위해 이와같은 expression을 사용하기도 하고, 이미지로된 콤보박스를 만들때 사용되기도 하지만 익스플로러를 제외한 다른 브라우저에서는 지원되지 않으므로 사용을 자제하는것이 좋다.



자바스크립트와 CSS는 외부파일로 작성 

속도향상 규칙의 많은 부분들이 외부자원을 어떻게 효율적으로 다루냐에 달려있다. 
실제로 외부파일들을 사용하면 페이지 로딩속도가 점차적으로 빨라진다고 한다. 왜냐하면 자바스크립트와 CSS는 브라우저에 캐쉬되기 때문이다.  HTML안의 자바스크립트와 CSS는 HTML이 요청될때마다 서버에서 다운로드 받게 된다.



DNS Lookup을 줄여라

DNS(Domain Name System)은  호스트이름을 IP 주소로 매핑시킨다. 전화번호부가 사람들의 이름과 전화번호부로 매핑되듯이 말이다.  만일 여러분이 브라우저에 techbug.tistory.com으로 타이핑한다면 DNS resolver는 서버 IP주소를 리턴받아 브라우저에서 접속하게 해준다. 
주어진 호스트네임을 IP주소로 바뀌는데 20~120 밀리초가 걸린다. 또한 브라우저는 DNS Lookup이 완료되기전에는 어떠한 것도 다운로드 받지 않는다.

 

 


프레임수를 최소화하라

Iframe은 부모문서에 HTML 문서를 삽입하는것이다. iframe이 어떻게 효과적으로 사용되는것인지 이해하는것이 중요하다.

<iframe> 써야 되는 이유:

  • 광고나 뱃지와 같은 로딩이 느린 3-party컨텐트들
  • Security sandbox
  • 동시에 다운로드되는 스크립트들

<iframe> 쓰지 말아야 되는 이유:

  • Costly even if blank
  • Blocks page onload
  • Non-semantic

 


 

DOM접근을 최소화하라

자바스크립트로 DOM요소에 접근하는것은 페이지응답속도를 느리게 한다. 대신에 여러분은

  • 접근했던 엘리먼트 참조를 캐쉬하라
  • "offline"노드들을 업데이트하고 그것들을 DOM트리에 추가하라
  • 자바스크립트로 레이아웃을 고정하는것을 피하라
더 자세한 정보를 원한다면 Julien Lecomte의 "High Performance Ajax Applications"를 참조하라 


이벤트 핸들러를 적절히 사용하라!

때때로 너무많은 이벤트 핸들러 때문에 페이지들의 응답이 늦는것 처럼 느껴진다.  이때는 이벤트 딜리게이션(event delegation)을 쓰는 것이 좋은 해결책이다. 만일 하나의 div에 10개 버튼을 가지고 있다면 각각의 버튼에 이벤트핸들러를 다는 대신에 div wrapper에 단 하나의 이벤트 핸들러를 사용하라. 

DOM tree로 어떠한 액션을 시작하기 위해 onload이벤트를 사용할 필요는 없다.단지 여러분이 원하는것은 DOM tree에 접근할수 있는 엘리먼트만 필요할 뿐이다. 또한 여러분은 이미지가 다운로드 되기를 기다릴 필요가 없다. 다만 모든 브라우저에서 사용할수는 없지만 DOMContentLoaded 이벤트는 onload대신에 사용할수 있을것이다. 여러분은 onAvailable 메쏘드와 같이 YUI 이벤트 유틸리티를 사용할 수 있다.
더 자세한 정보를 원한다면 Julien Lecomte의 "High Performance Ajax Applications"를 참조하라 

@import 보다는 <link>를 선택하라

 스타일태그는 항상 페이지 상단에서 정의한다. 다만 IE에서의 @import는 <link>태그를 페이지의 하단에 위치하는것과 같으므로 @import보다는 <link>를 사용하도록 한다. 
참고 사이트 : High Performace Web Site Blog



Filter사용을 피하라!

IE의   AlphaImageLoader 프로퍼티는  IE7미만 버전하에서 PNG이미지의 반투명한 문제를 해결하기 위한 목적으로 쓰는 filter이다.그러나 이러한 프로퍼티는 PNG이미지를 다운로드 받는동안 브라우저를 멎게(freeze) 만든다. 또한 이미지에 따른것이 아니라 똑같은 이미지가 여러개일 경우 각 엘리먼트마다 적용되므로 메모리 소비를 증가시킨다. 

가장 좋은 방법은 AlphaImageLoader를 사용하지 않는 방법이다. 굳이 사용하고자 한다면 IE7이상의 사용자에게는 적용되지 않도록  언더바(_) CSS hack을 사용한다. (_filter:AlphaImageLoader)



이미지를 최적화하라!

웹디자이너가 웹페이지 이미지들을 생성하고 난후 이러한 이미지를 웹서버에 올리기전에 해줘야 할 일들이 있다.
(데꾸벅 주:  웹디자이너는 포토샵으로 이미지 저장시 save as for web으로 저장한다.)

  • 이미지매직(imagemagick)을 이용하여   identify -verbose image.gif와 같이 GIF이미지들은 칼라수에 따라 사이즈를 설정할수 있다. (데꾸벅 주 : 포토샵으로도 indexed color를 설정했을때 선택가능)
  • 저장할때 GIF를 PNG로 변경하라. 가끔씩 개발자들은 PNG이미지가 브라우저마다 제한적으로 지원하는것 때문에 주저한다. 그러나 이것은 이미 오래된 얘기다 진짜 문제는 true-color PNG이미지의 alpha-tansparency때문에 그러한데, GIF이미지는 실제 true color가 아니며 다양한 투명이미지조차 지원하지 않는다. (데꾸벅 주: 가끔 anti-aliasing이 먹은 GIF이미지를 투명이미지로 만들때 테두리가 완벽한 투명성을 지원하지 않는다.) 
    이미지매직을 이용하면 convert image.gif image.png  과 같이 하면 된다.
  • pngcrush(데꾸벅 주: PNG이미지 커스터마이저)를 이용해서 최적화하라.
    pngcrush image.png -rem alla -reduce -brute result.png
  • jpegtran을 이용해서 JPG이미지를 최적화하라
    jpegtran -copy none -optimize -perfect src.jpg dest.jpg



이미지 크기의 원래사이즈를 적어라!

HTML 코드에 width와 height를 넣었다는 이유로 여러분이 원하는 것 보다 더 큰 이미지를 사용하지 말라! 만약 여러분이  <img width="100" height="100" src="mycat.jpg" alt="My Cat" /> 를 원한다면 그때 500x500px 를 작게 해서 넣는것 보다   100x100px의 이미지를 넣는것이 좋다.
(데꾸벅 주 : 이미지에 사이즈를 주는 것이 퍼포먼스 측면에서 좋습니다만, 원래 500x500px 이미지를 100x100px로 준다고 해서 퍼포먼스가 좋아지는것이 아니라 100x100px로 표기하였으면 100x100px짜리 이미지를 넣으라는 뜻입니다)



CSS Sprites를 사용하라

참조 : CSS Sprites Generator
번역본 보다 다른 블로거의 글이 좋아 인용합니다. 원본글은 아래에서 확인하삼~

웹 페이지의 첫 로딩 속도를 줄여주는 여러 방법들 중, 서버로의 요청 횟수를 초소화 하는 것은 웹 어플리케이션의 최적화 요소들 중에서도 중요한 덕목이자 실제 적용하기에도 아주 손쉬운 방법이다.

보통 웹 페이지에서 치장을 목적으로 사용되는 백그라운드 이미지들은 많이 사용될 수록, 자동적으로 그 요청 횟수도 늘어나기 마련인데, 이를 줄이고자 하는 목적으로 쓰이는 기법으로 CSS Sprites 기법이 있다.

간단하게, 아이콘이나 버튼과 같은 반복되서 표시되지 않는 그림들처럼 독립되어 있는 여러 그림들을 하나의 그림으로 합쳐놓고 CSS의 background-position을 보여질 요소에 따라 바꾸어서 표시하는 기법인데, 이렇게 하면 서버로의 요청 횟수를 줄여주면서 사이트 로딩 속도를 줄여주고 더불어서 내려받는 이미지의 크기까지 줄여줄 수 있는 부수적 효과를 얻을 수 있다.

이 곳 블로그에서도 오른쪽 옆구리 아래에 붙어있는 표딱지 그림들의 경우, 개별 이미지를 사용할 경우 웹 페이지에 표시하려면 모두 10 번의 서버 요청이 필요한데, CSS Sprites 기법을 써서 왼쪽에 보여지는 바와 같은 하나의 그림으로 모든 단추의 배경 그림들을 표시할 수 있었다.

실제 구현 방법은 아주 간단해서, unordered li들로 구성된 메뉴들의 각 li에 특정 id 값을 지정해 주고 a 태그 속에 있는 text node를 <span> 태그로 감싸고 난 후, 여기에 background image의 좌표 값을 표시될 해당 위치에 맞게 지정해 주면 모든 작업이 끝난다.

한 가지 주의가 필요했던 것은 text 때문에 배경 그림이 일부 가려지는 것을 막기 위해, <span>에 적용한 CSS의 padding-left 값을 li의 너비 만큼 주어서, 결과적으로 글자를 화면 바깥으로 밀어내어 표시되지 못하도록 하였다. 이렇게 해서, 마지막 CSS 적용 결과는 다음과 같다.

div#sidebar div#badges ul li {

    list-style-type: none;
    list-style-image: none;
    background-image: none;
    width: 80px;
    height: 15px;
    margin-bottom: 4px;
    overflow: hidden;
}

div#badges span {
    display: block;
    background-image: url(images/buttons-bg.png);  <-- 이미지는 한번만 요청한다.
    background-repeat: no-repeat;
    padding-left: 80px;
    cursor: pointer;
}

//각각의 이미지는 background-position으로 위치시킨다.
div#badges #vxhtml span {background-position: 0 -15px;}
div#badges #vcss span {background-position: 0 -30px;}
div#badges #wcag span {background-position: 0 -45px;}
div#badges #uni span {background-position: 0 -60px;}
div#badges #cc span {background-position: 0 -75px;}
div#badges #mac span {background-position: 0 -90px;}

출처 : 미남이's Blog




favicon.ico파일은 작고 캐쉬가 가능하게 제작하라!

favicon.ico는 여러분의 서버 root에 위치시키는 작은 이미지이다.  예를 들어 IE에서는 onload시 다른 컴포넌트를 요청할때 해당 컴포넌트가 다운로드 되기전에 먼저 로드된다. 여러분은 이러한 favicon.ico파일을 만들때 다음사항을 유의해서 작성하라.

  • 1K이하로 작게 제작하라   Imaemagick을 이용하면 작은 favicons이미지를 생성하게 해준다.
  • Expires header를 설정하라.


25K 이하의 컴포넌트로 제작하라!

이러한 제한은 iPhone이 25K보다 큰 컴포넌트를 캐쉬하지 못한다는 사실에 기인한다. 좀더 자세항 정보를 원한다면 Wayne Shea & Tenni Theurer의 "Performance Research, Part 5: iPhone Cacheability - Making it Stick" 를 참조하라.



하나의 Multipart 문서에 컴포넌트들을 묶어라!

(Pack Compoents into a Multipart Docuement)

전자우편의 첨부파일과 같이 Multipart문서에 컴포넌트들을 묶는것이 여러개의 컴포넌트들을 하나의 HTTP Request에 함께 전송하는데 도움을 준다.(HTTP requests는 비싸다는것을 반드시 기억하라)
여러분이 이러한 기술을 사용할때 사용자 Agent가 이러한 기능을 지원하는지 반드시 체크하라. iPhone은 이러한 기능을 지원하지 않는다. 







Post by 넥스트리소프트 데꾸벅(techbug)
, |


네트웍이 안되는 특수환경에서 프로젝트를 진행하다 복귀해 보니 최신정보에 상당히 둔감해졌다는 생각이 많이 든다.
그래서 꿈춰두었던 내용들을 살포시 꺼내본다.

Internet Explorer 8 출시 이후  이미 모든 포털에서 웹조각(Web Slice)기능들을  많이들 구현해 놓았는데
혹시나 모르시는 분들이 계실것 같아서 웹조각 만드는 방법에 대해서 공유한다.


최종 HTML소스


결과화면 : 로컬에서 해서 안되서 서버를 띄웠답니다. ㅡ.,ㅡ;





웹조각 추가하기



실제 적용예



웹조각 삭제하기




원본소스 나갑니다.

    <div id="bugslice" class="hslice">
     <div class="entry-title">데꾸벅 웹조각 테스트 제목</div>
     <div class="entry-content">
         웹조각 내용이 들어가는곳입니다.<br />
         .entry-title을 display:none이나 화면에 필요한걸로 바꾸면 되겠죠<br />
         <!--[if gte IE 7]>IE8에서 되는기능이므로 로도 처리해 되겠죠<![endif]-->
         아이디값은 나중에 버튼으로 추가하려면 좋아요~
        </div>
    </div> 


<html>
<head>
<title>Web Slice Example</title>
</head>
<body>
   <div class="hslice" id="SliceID">
      <span class="entry-title">Slice Title</span>
      <a rel="entry-content" href="http://techbug.tistory.com/" style="display:none;">
        실시간 웹조각 컨텐츠
      </a>
 
      <a rel="bookmark" href="http://techbug.tistory.com/" style="display:none;">북마크할때</a>
      <a href="http://techbug.tistory.com/" target="_blank">웹조각의 링크를 다른창으로 열때</a>
      <span class="endtime" title="25 Jul 2008 17:30:00 PST" style="display:none;">캐쉬없앨때</span>
   </div>
</body>
</html>











이벤트핸들러로 달기

<input type="button" value="웹조각 추가"  
       onclick="external.AddToFavoritesBar('http://localhost/webSlice.html#bugslice','설명','slice')" /> 


DIV대신 a태그 사용시 (웹조각에서 보여줄 페이지 지정하기)

<a rel="entry-content" href="http://techbug.tistory.com"> </a>


<div class="hslice" id="아이디값">
    <span class="entry-title">링크로처리할때</span>
    <a rel="entry-content" href="링크주소.html" style="display:none;"></a>
</div>

Feed용

<a rel="feedUrl" href=http://techbug.tistory.com/script/powerEditor/pages/">

<div class="hslice" id="아이디값">
    <span class="entry-title">링크로처리할때</span>
    <a rel="feedurl" href="피드주소.html" style="display:none;"></a>
</div>


북마크용

<div class="hslice" id="아이디값">
    <span class="entry-title">링크로처리할때</span>
    <a rel="bookmark" href="북마크.html" style="display:none;"></a>
</div>



웹조각 아이콘 바꾸기


원래의 웹조각 아이콘을 바꾸는 방법입니다. 기존 파비콘(favicon)을 바꾸는 방법과 마찬가지로 아래와 같은 방법으로 바꿀수 있습니다.

<link
    rel="default-slice"
    type="application/x-hatom"
    href="#웹조각아이디값" />




웹조각기능끄기
이미지툴바기능끄기와 같은 방법으로 웹조각 기능끄기 태그는 아래와 같습니다.

<meta name="slice" scheme="IE" content="off"/>



웹조각캐쉬없애기  (다음글을 참조하세요)

<span class="endtime" title="25 Jul 2008 17:30:00 PST" style="display:none;">캐쉬없앨때쓰기</span>











파이억폭스에서도 IE의 웹조각기능 사용하기
Firefox용 플러그인 WebChunks 3.5에서도 되네요
IE8에 새로 도입되는 WebSlices 기능을 파이어폭스에서 구현한 확장기능입니다.
툴바에서 Webslices 기능이 지원되는 사이트의 업데이트를 보기 좋게 확인 할 수 있습니다.
다운로드
    
 











다음글도 참조하세요 :




즐코딩하시길... 간만에 데꾸벅이였습니다.









Post by 넥스트리소프트 데꾸벅(techbug)
, |

01 |  웹표준


 

 
[이미지출처 : 디자인정글]

    오페라 소프트웨어 웹 표준 커리큘럼 을 번역한 자료입니다. 시간나실때 한번씩 읽어 보세요~
    좋은 내용들이 많네요 

    웹표준커리큘럼의 소개와 차례

  

 

02 | 웹실무 프로젝트(웹표준 & UI/UX  개발 프로세스



[이미지출처 : 디자인정글]

 

    과정을 들으라는 내용이 아니라 커리큘럼을 살펴보면 어떠한 것이 프리젠테이션개발자에게 필요한 내용들인지
    확인할수 있습니다.
    요즘 프리젠테이션 개발자를 일컫는 User Interface에서 User란 단순 사용자가 아니라  
    시스템 vs. 솔루션,   
    개발자 vs. 개발자
    고객    vs. 개발자 등, 무수히 많은 개념을 포함하고 있습니다.
    이러한 이질적인 개념들을 통합(Integrate) 혹은 연계(Interface)하는것입니다.   

 

    "당신이 생각하는 디자인DESIGN이란 무엇입니까? 단순히 표현EXPRESSION인가요?
    그렇다면, 구조STRUCTURE는 고려하였는지요?"    
 

    OOO정글 아카데미 과정소개

 

  

데꾸벅, 피곤에 쩌든 어느저녁에.. 그냥 함 끄적여 보다..

 

 

 

 

Post by 넥스트리소프트 데꾸벅(techbug)
, |

Web 2008 통계

Publisher/WEB2.0 / 2009. 1. 12. 11:05


오늘자(2009/01/09) Ajaxian 포스트중에 2008년 Web에 대한 통계에 대한것을 정리하다.

John Allsopp씨는  extensive state of the web 2008 survey에서 전세계, 다양한 분야의  1,200명의 웹전문가를 대상으로 사용하는 브라우저,OS, 웹사이트 개발시 사용한 기술들에 대해서 정리하였다.

해당 포스트를 보면, 국내사용자를 대상으로 한 설문조사가 아니라서 국내환경과는 조금은 맞지 않는 부분이 있긴 하지만 대부분이 인식하고 있는 부분이라 결과에 대해서는 어느정도 공감하고 있으리라 생각한다.
예상했던 대로 2008년 한해는 UI기술에 대해서 획기적으로 많은 변화와 웹의 미래를 엿볼수 있는 한해가 아니였나 싶다.

비윈도우즈 계열이 50%에 육박했으며 윈도우즈XP는 여전히 무거운 Vista보다 단지 1/4 의 유저많이 사용하고 있었다.
단지 기본브라우저로 IE를 사용하고 있는 사용자는 극히 드물었으며, Firefox가 50%의 시장점유율을 보였으며, Safari3 이 21%, 크롬은 단지 4%의 시장점유율을 보였다.   

웹개발 기술로써는 응답자의 3%는 전혀 웹유효성검증을 하지 않았으며 70%가 항상 유효성 검증을 하고 있었으며 10%의 응답자만이 table로 layout을 그리고 있었으며 90%가 CSS Style을 이용하여 페이지를 그리고 있었다.
자바스크립트 라이브러리에서는 JQuery가 60%로 압도적으로 우세하였다.

플러그인 기술로는 Flash가 60%를 Silverlight가 2%, 애플의 QuickTime이 놀랍게도 20%를 차지하고 있었다. 
개발기술로는 PHP가 63%, Javascript가 55% ASP.NET이 17%, Pythondl 15%, Ruby가 14%로 그 뒤를 잇고 있다.

모바일웹의 도래
기본 레거시 브라우저에 다른 브라우저를 고려한다면 어떤 브라우저를 고려하는가에 대한 응답에 대해서 20%가 모바일에 대해서 고려하고 있었다. 전통적인 래탑이나 데스탑에서 모바일로서 웹이 이동해 가고 있다는 뜻은 아닐까?


설문대상자
응답자중 33%가 디자이너, 거의 반인 48.5%가 개발자이며 그외 18%로 북아메리카, 유럽, 호주,뉴질랜드쪽 응답자가 많았다.



브라우저 및 OS


웹개발시 사용하는 테스트 브라우저
 


마크업기술

사용하는 마크업




마크업의 경우 얼마나 자주 유효성 검증을 하는가?
 

사용하는 DOCTYPE은?


테이블로 레이아웃을 그리는가?

사용하는 속성이 있는 태그는?

사용하고 있는 MicroFormat(RDFa)은?



CSS기술

웹디자인 철학

크로스브라우징

사이트 디자인시 Qurksmode로 사용하는지?

CSS를 사용하는 목적


CSS사용시 자주 사용하는 선택자 및 CSS3중 사용하는것은?

웹폰트를 사용하는지? 사용하면 어떤식으로 사용하는지?

SVG는 사용하는지? CANVAS태그를 사용하는지?

사이트개발시 노트북이나 PC이외의 장치에 대해서는 고려하는지?
이외 장치에 대해 고려하는 응답자중 15%정도가 mobile, 10%가 iPhone(역시 대세인가?) 1%가 Blackberry 5명이 Wii 에 대해서 고려한다고 응답하였다.



Javascript, Ajax, DOM에 대해서

개발시 자바스크립트를 사용하는 목적
응답자중 5%를 제외한 모든 응답자가 자바스크립트를 사용하였다. (나머지 5%는 뭐지??)

Javascript Coding Practices (무간섭 스크립트를 사용하는가?)
마크업과 자바스크립트를 분리하여 사용하는가에 대한 질문 (Unobtrusive Javascript)

W3C DOM 을 엄격히 고수하는가?


Javascript Library and Framwork

사용하는 자바스크립트 라이브러리나 프레임웍은?

Flash, Silverlight, 다른 embedded content

브라우저 플러그인을 사용하여 웹사이트를 구성하는가? 구성한다면 어떤 종류를 많이 사용하는가? 어떠한 목적으로 사용하나?


Back-end 개발언어 및 시스템

서버하드웨어를 구동하는 환경?


사용하는 웹서버는?

서버의 OS는?

많이 사용하는 데이타베이스는?


사용하는 언어는?


사용하는 서버프레임웍은?















아래는 각각의 통계자료에 바탕하여 패키지화한 페이지들이다 시간있을때 한번씩 둘러보는것도 좋을것 같다.


Javascript

  • jQueryDownload | Site | Docs | Plugins
    My favorite Javascript framework with a small footprint at 20k.
  • SWFObject 2.1 Download | Site
    Defacto script for embedding Flash content.
  • OffspringDownload | Site
    Automatically applies .first-child, .last-child, .only-child classes to DOM elements.
  • Dean Edwards IE7 ScriptDownload | Site
    Library makes IE5/6 behave like IE7.
  • NicEditDownload | Site
    Turns any textarea into a WYSIWYG editor.
  • Reflection 2.0Download | Site
    Adds a wet-floor effect to any image.

jQuery Essential Widgets

jQuery Specialized Widgets

  • Custom Checkboxes 1.1.0b2Download | Site
    Easily replace checkboxes and radios with custom graphics.
  • markItUp! 1.1.5Download | Site
    Turns textarea tag into a markup editor with various syntaxes.
  • jEditable 1.5.1Download | Site
    Makes any element a click-to-edit, Ajaxified item.
  • Date Picker 2.1.2Download | Site
    Creates a popup date picker to easily fill in forms.
  • Table Sorter 2.0.3Download | Site
  • Ingrid Datagrids 0.9.1Download | Site
  • Star RatingDownload | Site
    Creates a star rating interface based on a simple form.
  • jMedia 1.01Download | Site
    Flexible multi-media embedding. Supports: Flash, QT, Real, +.
  • BlockUI 2.14Download | Site
    Prevents activity with the window or elements when using AJAX.
  • jCarousel 0.2.3Download | Site
    Scroll items in horizontal or vertical order with controls.
  • Farbtastic 1.2 Color PickerDownload | Site
    HSL color picker widget.

jQuery “Extensions”

  • jQuery MetadataDownload
    Embed metadata in HTML tags. See code for examples.
  • jQuery Easing 1.3Download | Site
    jQuery library for advanced sliding-type animations.
  • Bgiframe 2.1.1Download | Site
    Used when you show elements over a select control in IE6.More Selectors 1.1.3.1Download | Site
    Adds a plethora of interesting selector options.

PHP/MySQL

  • CodeIgniter 1.7.0Download | Site | Docs | Forums
    Easy, documented framework by the devs of ExpressionEngine.
  • pChart 1.2.7Download | Site | Docs
    PHP classes to render high-quality charts.
  • mySQLDumperDownload | Site
    Quality backup solution for large mySQL databases.
  • PHP Development GuidelinesSite
    Best practices for PHP development from the EE guys.
  • PHPMailer 2.3Download | Site | Tutorial
    Send email with attachments, HTML and embedded images.
  • TAR/GZIP/BZIP2/ZIP Archives 2.1Download | Site
    Builds and downloads zip+ files on the fly.
  • ROS PDF ClassDownload | Site
    Module-free creation of PDF documents from within PHP.

Flash Components

  • Open Source FLV PlayerDownload | Site | Docs
    "OS FLV" - Open source, embedable player for Flash video.
  • JW FLV Player 3.12€30 | Download | Site
    SWF file that displays FLV videos. Free for personal use.
  • SlideShowPro$29 | Site | Wiki
    Gallery and slideshow Flash component. 60 options.
  • MonoSlideShow$19.95 | Site | Manual
    Gallery and slideshow SWF file. 150 options.
  • XSPF Flash MP3 Music Player (Slim)Download | Site
    SWF file that plays mp3 songs and playlists.
  • Date Slider 1.1Download | Site
    SWF file that selects a date range.
  • amChartsFree/€85/€275 | Site
    Customizable Flash charts. Free version embeds link to vendor.
  • TWF Flash Uploader€15/€50 | Site
    Nice-looking, configurable, multi-file, Flash uploader.

Miscellaneous Tools

  • Standalone IE6Download | Site
    Download a standalone version of IE6 you can install in XP.
  • Allan Jardine's "Design" BookmarkletSite
    Four overlay tools: Grid, Ruler/Guides, Measurement, Crosshair.
  • XRAY BookmarkletSite
    Select any page element and display its style info.
  • SpriteNavi Menu Tool for FireworksSite
    Takes the work out of creating sprite-based horizontal menus.
  • Create Favicons in PhotoshopMac Plugin | Win Plugin
    Install this PS plugin to add ability to save in .ico format.
  • Javascript Email Enkoder (Spam protection)Site
    Protect email addresses by converting into encrypted JavaScript.

Grid Design

  • 960 Grid SystemDownload | Site
    CSS grid system based on 960px wide design in 2 col widths.
    12 column - 60px wide columns, 20px gutters.
    16 column - 40px wide columns, 10px gutters.
  • Blueprint CSS 0.8Download | Site
    Stylesheet set that combines some of the best thinking on css design. Grids, typography, reset included.
  • GridMaker2 for Photshop CS2+Download | Site
    Photoshop script that creates custom grids.
  • GridMaker2 (columns only)Download
    A modified version that only outputs columns.
  • Grid DesignerSite
    Online tool to design and preview a grid system. This one also includes side margins.
  • Grid CalculatorSite
    Online tool to design and preview a grid system.
  • Syncotype BookmarkletSite
    Overlays a customizable baseline grid on your web page.

Content Generators

  • Ajax Loading GraphicsSite
    Online tool to customize an animated loading graphic.
  • Loader GeneratorSite
    Another tool to customize one of 99 different loading graphics.
  • Stripe GeneratorSite
    Online tool to customize background stripe tiles.
    Also see Stripe Mania.
  • Background Maker (Tiled Backgrounds)Site
    Online tool to make pixel-by-pixel tiled backgrounds.
  • CornerShopSite
    Online tool to generate rounded corner graphics and code.
  • Dummy Text GeneratorSite
    Best tool for generating dummy content. Highly configurable.
  • LipsumSite | Copyable Text
    Generic lorem ipsum copy for roughing in content.
    Also see Lorem2.com and html-ipsum.com

Pixel Icons

Vector Icons

  • ClickBits$49 | Site
    792 arrows & web-related icons in OpenType font format.
  • InfoBits$29 | Site
    188 web-related icons & dingbats in OpenType font format.
  • 165 Vector Icons by GoSquaredSite | Preview
    Free, useful icons in SVG, JPG and Illustrator CS2 format.

Backgrounds & Styles

  • Illustrator - Basic Gradients by GoSquaredSite
    Free, Web2.0-style gradients in SVG or Illustrator CS2 format.
  • Illustrator - Web 2.0 Gradients by dezinerfolioSite
    130 Illustrator gradients. Matches PS gradients below.
  • Photoshop - Web 2.0 Gradients by dezinerfolioSite
    130 Photoshop gradients.
  • Photoshop - Web 2.0 Layer StylesSite
    131 Photoshop layer styles by deszinerfolio.com.
  • Photoshop - Web 2.0 Gradients by EuphorishSite
    70 Photoshop gradients.

Hosting

  • ServInt - My Current Host of Choice$49 | Site
    Well-regarded Virtual Private Server solution starting at $49. This site is hosted there. Better experience for me than MediaTemple. Cheaper than Mosso.
  • BlueHost - Decent low-cost host$6.95 | Site
    Hosting many sites here. Solid host for small to medium traffic. Great customer support and uptime. Unlimited domains.

Browser Compatibility

  • PNG Support in IEDownload | Site | Code
    Enable transparent PNG support in IE.
  • PNG Support in IE (CSS Only)Site | Code
    Enable transparent PNG support in IE6 using only CSS.
  • Whatever:hover in IEDownload | Site | Code
    Enables css :hover support in IE.
  • IE Browser Filtering/TargetingSite | Code
    Some hacks to target different browsers.
  • Misc Browser WorkaroundsCode
    Click the code link to see some collected browser workarounds.

Must-Know CSS Techniques

  • Sliding DoorsSite
    Not just for tabs, this technique is by far the most useful of all.
  • Taming ListsSite
    Transform the meager list into something useful.
  • CSS ResetSite
    Several variations exist here. Resetting all the styles to a baseline helps a lot in styling websites. Season to taste.
    Yahoo YUI Reset | Eric Meyer's Reset
  • Clearing Floats without Extra MarkupSite | Code
    Avoid adding extra markup to your documents using this method to clear floats.

General HTML Techniques

  • Resize a Popup to Fit an Image's SizeSite | Code
    Make a popup window resize perfectly to the image.

Typography

  • FontSquirrel - High Quality FREE FontsSite
    Free, hand-picked, licensed-for-commercial-use fonts.
  • Typical Cross-Browser Font CascadesSite | Sample
    Use these fonts lists when specifiying fonts in your css.
  • Alternative Font CascadesSample
    Interesting alternative cascades.
  • Default Mac FontsSite | Show
  • Default Windows FontsSite | Show

Firefox Extensions

  • Firebug 1.3Install | Site
    Edit, debug, and monitor CSS, HTML, and JavaScript live.
  • Web Developer's ToolbarInstall | Site
    Adds a menu and a toolbar with various developer tools.
  • View Formatted SourceInstall | Site
    Displays formatted source and CSS info for each element.
  • YSlowInstall | Site
    Analyzes pages and tells why they're slow. REQUIRES FIREBUG.
  • Dust-Me Selectors 2.11Install | Site
    Dust-Me Selectors finds unused CSS selectors in your site.
  • UrlParamsInstall | Site
    Displays the GET and POST parameters of a web page.
  • Link CheckerInstall | Site
    Checks all links on a webpage and reports broken ones.

Mac Software

  • MAMP 1.7.2Download | Site
    Installs a self-contained local hosting environment on your Mac. (M)ac, (A)pache, (M)ySQL, (P)HP.
  • VirtualHostX 1.1.1$9 | Download | Site | Tutorial
    Host multiple sites on your Mac. Useful with MAMP.
  • CSSEdit 2.6€29.95 | Download | Site
    The best CSS editor on the market. An absolute must-have.
  • TextMate 1.5.7€39 | Download | Site
    The best text editor ever.
  • Coda 1.6$99 | Download | Site
    Popular all-in-one web development application.

Services

  • DNSstuffSite
    Configure, monitor & fix problems with your domain & email.
  • Bulk Email with Campaign MonitorSite
    Campaign Monitor is an email newsletter sending service geared towards designers. $5 + 1¢ per address per mailing.
  • Domain Names by PickyDomains$50 | Site
    PickyDomains will help you come up with a good/available domain name for only $50.
  • Bust A Name Domain SearchSite
    Two-word combination searches and quick lookups.
  • NameBoy Domain SearchSite
    Good name suggestor tool.
  • Add This Social Bookmarking WidgetSite
    Widget helps visitors bookmark your page on social media sites.
  • ShareThis Social Bookmarking WidgetSite
    Another widget to help visitors bookmark your page on social media sites.
  • Web Development Project EstimatorSite
    Estimate the time and materials required for a proposed web project.
  • SSLmatic - Cheap SSL Certificates$19.99 | Site
    Discounted SSL certs from RapidSSL, GeoTrust and Verisign.

Cheat Sheets

Post by 넥스트리소프트 데꾸벅(techbug)
, |
브라우저 춘추전국시대 다시 시작하나....

오늘 구글크롬이 다운로드 서비스를 시작했다.
설치후 구글 크롬 이놈은 다른 브라우저의 종합판인듯하다.

Opera,Firefox, Safari 모두다 섞어 놓은것 같은데.. ㅡ.,ㅡ;  상상력이... 쿨럭!!.



각 브라우저의 값들을 비교해보고자
alert(navigator.userAgent+"\n=>"+parseFloat(navigator.appVersion));로 찍어봤다.
구글크롬 0.2
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13:
=>Netscape

사파리  3.1.2
Mozilla/5.0 (Windows; U; Windows NT 6.0; ko-KR) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21:
=>Netscape

Firefox 3
Mozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1:
=>5

IE7
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506):
=>4

Opera 9.52
Opera/9.52 (Windows NT 6.0; U; ko):
=>Opera
헉.. 이놈 대단한 놈이다.. safari의 AppleWebkit으로도 유효성검증을 하기가.. ㅠ.,ㅠ;
결국은 다음과 같이 버전체크 부분을 몽땅 바꿔버렸다.

/**
 * @fileoverview 브라우저비교 및 JS상속, 클래스 생성관련 스크립트 모음
 * @author 데꾸벅
 * @version 0.1
 * @since 2003.05.08, 2008.08.27 IE6 판별 버그 수정, 2008.09.03 Google Chrome 판별 추가
 */


 var sUserAgent = navigator.userAgent;
var fAppVersion = parseFloat(navigator.appVersion);

/**
 * 브라우저 버전 비교
 */
function compareVersions(sVersion1, sVersion2) {
    var aVersion1 = sVersion1.split(".");
    var aVersion2 = sVersion2.split(".");

    if (aVersion1.length > aVersion2.length) {
        for (var i=0; i < aVersion1.length - aVersion2.length; i++) {
            aVersion2.push("0");
        }
    } else if (aVersion1.length < aVersion2.length) {
        for (var i=0; i < aVersion2.length - aVersion1.length; i++) {
            aVersion1.push("0");
        }
    }
    for (var i=0; i < aVersion1.length; i++) {
        if (aVersion1[i] < aVersion2[i]) {
            return -1;
        } else if (aVersion1[i] > aVersion2[i]) {
            return 1;
        }
    }
    return 0;
}



//Opera
var isOpera = sUserAgent.indexOf("Opera") > -1;
var isOpera7 = isOpera8 = isOpera9 =isOpera10 = false;
if (isOpera) {
    if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
     var oprversion=new Number(RegExp.$1);
     if (oprversion>=10) isOpera10 = true;
     else if (oprversion>=9) isOpera9 = true;
     else if (oprversion>=8) isOpera8 = true;
     else if (oprversion>=7) isOpera7 = true;
    }
}




//KHTML, Konqueror
var isKHTML = sUserAgent.indexOf("KHTML") > -1 || sUserAgent.indexOf("Konqueror") > -1  || sUserAgent.indexOf("AppleWebKit") > -1;

var isSafari1 = isSafari1_2 = false;
var isKonq2_2 = isKonq3 = isKonq3_1 = isKonq3_2 = false;
var isSafari = false;
if (isKHTML) {
    isSafari = sUserAgent.indexOf("AppleWebKit") > -1;
    isKonq = sUserAgent.indexOf("Konqueror") > -1;

    if (isSafari) {
        var reAppleWebKit = new RegExp("AppleWebKit\\/(\\d+(?:\\.\\d*)?)");
        reAppleWebKit.test(sUserAgent);
        var fAppleWebKitVersion = parseFloat(RegExp["$1"]);
        isSafari1 = fAppleWebKitVersion >= 85;
        isSafari1_2 = fAppleWebKitVersion >= 124;
    } else if (isKonq) {
        var reKonq = new RegExp("Konqueror\\/(\\d+(?:\\.\\d+(?:\\.\\d)?)?)");
        reKonq.test(sUserAgent);
        isKonq2_2 = compareVersions(RegExp["$1"], "2.2") >= 0;
        isKonq3 = compareVersions(RegExp["$1"], "3.0") >= 0;
        isKonq3_1 = compareVersions(RegExp["$1"], "3.1") >= 0;
        isKonq3_2 = compareVersions(RegExp["$1"], "3.2") >= 0;
    }
}


// Internet Explorer
var isIE = sUserAgent.indexOf("compatible") > -1 && sUserAgent.indexOf("MSIE") > -1 && !isOpera;
var isIE4 = isIE5 = isIE5_5 = isIE6 = isIE7 = isIE8 = false;
if (isIE) {
    var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
    reIE.test(sUserAgent);
    var fIEVersion = parseFloat(RegExp["$1"]);
    isIE4 = fIEVersion >= 4  && fIEVersion < 5;
    isIE5 = fIEVersion >= 5  && fIEVersion < 5.5;
    isIE5_5 = fIEVersion >= 5.5  && fIEVersion < 6.0;
    isIE6 = fIEVersion >= 6.0 && fIEVersion < 7.0;
    isIE7 = fIEVersion >= 7.0 && fIEVersion < 8.0;
    isIE8 = fIEVersion >= 8.0 ;
}


// Mozilla 여부
var isMoz = sUserAgent.indexOf("Gecko") > -1 && !isKHTML;
var isMoz1 = sMoz1_4 = isMoz1_5 = false;

if (isMoz) {
    var reMoz = new RegExp("rv:(\\d+\\.\\d+(?:\\.\\d+)?)");
    reMoz.test(sUserAgent);
    isMoz1 = compareVersions(RegExp["$1"], "1.0") >= 0;
    isMoz1_4 = compareVersions(RegExp["$1"], "1.4") >= 0;
    isMoz1_5 = compareVersions(RegExp["$1"], "1.5") >= 0;
}

var isNS4 = !isIE && !isOpera && !isMoz && !isKHTML && (sUserAgent.indexOf("Mozilla") == 0) && (navigator.appName == "Netscape") && (fAppVersion >= 4.0 && fAppVersion < 5.0);
var isNS4 = isNS4_5 = isNS4_7 = isNS4_8 = false;

if (isNS4) {
    isNS4 = true;
    isNS4_5 = fAppVersion >= 4.5;
    isNS4_7 = fAppVersion >= 4.7;
    isNS4_8 = fAppVersion >= 4.8;
}


var isFF = !isIE && !isOpera && isMoz && !isKHTML && (sUserAgent.indexOf("Mozilla") == 0) && (navigator.appName == "Netscape");
var isFF1 = isFF2 = isFF3 = false;
if(isFF){
    if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
     var ffversion=new Number(RegExp.$1);
     if (ffversion>=3)
          isFF3 = true;
     else if (ffversion>=2)
         isFF2 = true;
     else if (ffversion>=1)
          isFF1 = true;
    }
}


//구글 크롬 버전체크 추가 2008.09.03
var isChrome = !isIE && !isFF && !isOpera && !isMoz && !isKonq && isSafari && isKHTML && (sUserAgent.indexOf("Mozilla") == 0) && (sUserAgent.indexOf("Chrome") != -1) && (navigator.appName == "Netscape");
var isChrome02 = false;

if(isChrome){
    if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
        var ffversion=new Number(RegExp.$1);
        if(parseFloat(ffversion) >= parseFloat('0.2'))
            isChrome02 = true;
    }
}


/**
 * XP인지 아닌지 판별함수
 * @return {boolean} true/false
 */
function isXP(){
    var agent = window.navigator.userAgent;
    if(agent.indexOf("MSIE")!= -1 && agent.indexOf("5.1") !=-1)
        return true;     //SP1
    else
        return false;
}

/**
 * XP의 ServicePack2인지 처리함수
 * @return {boolean} true/false
 */
function isXPSP2(){
    var tmp_MSIE = window.navigator.userAgent.indexOf("MSIE");
    if(tmp_MSIE && window.navigator.userAgent.indexOf("SV1") > tmp_MSIE){
        return true;     //SP2
    }else{
        return false;
    }
}

사용자 삽입 이미지


구글크롬에서는 태터툴즈의 웹에디팅기능이 되지 않아 지금 포스팅은 FF3에서 작성하고 있다. ㅡ.,ㅡa


Acid3 Test 결과화면 : 테스트사이트 (http://acid3.acidtests.org/)
사용자 삽입 이미지
Opera9, Firefox3, IE7,
Safari, google Chrome, IE8
순서로 테스트 (Safari는 네트웍때문에 연결되지 않았으며, google Chrome의 경우 78/100 이 나왔습니다. 사파리하고 비슷한 수준이네요~~



근데... 이건 뭥미???
사용자 삽입 이미지



Post by 넥스트리소프트 데꾸벅(techbug)
, |

데꾸벅이 FF를 사용하는 이유 중 하나가 Firebug를 사용할수 있다는 것이다.(너무 과장했나?)
그런데 IE, Opera, Safari에서도 Firebug를 사용할수 있다.

참조사이트 : http://getfirebug.com/lite.html

1. 설치
<script type='text/javascript' src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>

2. 북마크하기
javascript:var firebug=document.createElement('script');firebug.setAttribute('src','http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js');document.body.appendChild(firebug);(function(){if(window.pi&&window.firebug){firebug.init();}else{setTimeout(arguments.callee);}})();void(firebug);


3. 오프라인에서 사용하기 (소스다운로드)

<script language="javascript" type="text/javascript" src="/path/to/firebug/pi.js"></script>
<script language="javascript" type="text/javascript" src="/path/to/firebug/firebug-lite.js"></script>


4.console.log() 에서 에러가 발생한다면 아래 파일을 다운로드 받은후 다음과 같이 작성한다.

 <script language="javascript" type="text/javascript"  src="/path/to/firebug/firebugx.js"></script>

 
5. Firebug Lite를 사용하려면 마크업에 다음과 같이 표시한다.
<html debug="true">




Post by 넥스트리소프트 데꾸벅(techbug)
, |


Ajax 사이트를 개발하다보면 브라우저 버전에 따른 별도의 작업을 해줘야 하는 경우가 발생한다.
실제 현재 투입되어 개발중인 사이트의 경우에도 IE6,IE7에 최적화되게 개발하기로 했지만 실제로 테스트해본결과 Opera9, FF2~3, IE7, IE8Beta 버전에서 더 잘 돌아갔다..
문제는 IE6인데 IE6에서도 Windows 2000 SP1~3, Windows XP SP1,SP2에서는 무리없이 잘 작동되던 스크립트인데 유독 Windows XP SP3 버전의 IE6에서만 오작동하는 경우가 발생했다.
IE6 버전 (WindowsXP SP3)
6.0.2900.5512 xpsp.080413-2111
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)


이놈 하나 때문에 패키징을 다시 해야 되는 경우가 발생되었고 모든 작업을 브라우저버젼별로 분리하여 작업하기란 워낙 까다로운게 아닐수 없다.
그냥 사용자의 브라우저를 IE7로 업그레이드를 시킬수만 있다면 좋을텐데 라는 생각을 많이 하곤 한다.

그러다 찾아 본 사이트가 이곳 푸쉬업(Push up:Pushing up the web) 이다.
자바스크립트와 CSS로 업데이트 날짜가 지난 사용자의 브라우저를 업데이트하라는 경고메세지를 보낼수 있다.


현재지원되는 브라우저 버전
  • Internet Explorer 7+
  • Firefox 2+
  • Safari 3+
  • Opera 9.25+
사용자 삽입 이미지




설치방법은 간단하다
아래 파일을 다운로드 받은후 원하는 페이지소스에다 아래와 같이 입력하면 된다.
(July 27 2008)


<link rel='stylesheet' type='text/css' href='css/pushup.css' />
<script type='text/javascript' src='js/pushup.js'></script>






 
Post by 넥스트리소프트 데꾸벅(techbug)
, |