deute의 모든 글

자바스크립트로 특정 앨리먼트에 적용된 스타일값 받아오기

웹 페이지에 정의된 모든 앨리먼트의 배경 이미지를 뽑아올 필요성을 느껴서, 언제나 그렇듯 막무가내로 자바스크립트에 손을 대기 시작했는데요..

처음에는 다음과 같이 했습니다.


element.style.backgroundImage

이랬더니 값이 없다고 나오더군요. 그래서 좀 찾아보니… css같이 외부로 스타일을 지정해 준 경우에는 값을 읽어올 수 없다고 합니다.
그래서 이것도 몰랐냐 바보야 이러면서 computedstyle 이라는게 문득 생각나면서  좀 찾아봤더니 역시 우리의 IE는


element.currentStyle.backgroundImage

이렇게 써야한다고 하더라구요…

그래서 어쩔 수 없이 분기해서 함수처럼 만들어 쓰기로 했습니다. jQuery같은 훌륭한 라이브러리쓰는 사람들은 알 필요 없겠지만; 혹시나 해서 ^_^ 남겨봅니다.

그리고 언제나 그렇듯 제 코드는 무식 그자체 입니다. 보고 욕하지마세요. 조언은 환영합니다 ㅠ_ㅠ



function getStyle(obj ,sStyle) {
    var val;
    if (obj.currentStyle) {
        val = eval("obj.currentStyle."+sStyle);
    } else {
        val = eval("window.getComputedStyle(obj,null)."+sStyle);
    }
    return val;
}

miname 님의 조언으로 코드가 좋아졌습니다!!! 감사합니다!!! ㅎㅎ
무식하면 삼대가 고생해요 ㅠ_ㅠ 아래 코멘트는 miname님의 언급이십니다*_*

아시겠지만, 보안상으로보나 성능면에서 eval is evil이잖아요.^^
property 값을 얻을 때 bracket notation([])을 쓰면 eval 사용을 피할 수 있습니다.
아래처럼요.


function getStyle(el, sStyle) {
  var computedStyle;
  if (el.currentStyle) {
  computedStyle = el.currentStyle;
  } else {
  computedStyle = window.getComputedStyle(el, null);
  }
  return computedStyle[sStyle];
 }

만약에 위 function이 여러번 반복적으로 실행되는 상황이라면 아래처럼 바꿔서 두 번째부턴 더 빠르게 실행될 수 있도록 할 수 있을 겁니다.


function getStyle(el, sStyle) {
  if (el.currentStyle) {
   getStyle = function(el, sStyle) {
     var computedStyle;
     computedStyle = el.currentStyle;
     return computedStyle[sStyle];
   };
  } else {
   getStyle = function(el, sStyle) {
     var computedStyle;
     computedStyle = window.getComputedStyle(el, null);
     return computedStyle[sStyle];
   };
  }
  getStyle(el, sStyle);
 }

p.s 파젯을 KWCAG2.0 버전으로 조금 바꾸고 있습니다 ㅎㅎ 그중에 하나만들다가 이게 나온것이에요.
아시는분들만 안다는 파젯 사용방법을 아시는 분은 새로운 파젯 개발버전인 http://mydeute.com/was/pajet.js 으로 변경해서 확인 가능합니다 ㅋㅋㅋㅋ

웹 퍼블리셔의 업무 범위

좀 오래전 얘기이나 한번쯤은 제 생각을 써놓는게 좋을듯 싶어 풀어 보려합니다.

항상 많이 나오는 질문중에 하나는 웹 퍼블리셔가 자바스크립트를 해야하나요 라는 질문입니다. 우리나라에 웹 퍼블리셔 라는 용어를 만든 현석님은

지금은 웹에 어플리케이션의 개념이 많이 들어오고 있지만 웹은 기본적으로 문서다. 그래서 문서나 책을 출판하는 퍼블리시(publish)라는 단어를 생각하게 되었고, 실제로 이 단어는 이미 여러곳에서 사용되고 있었다. 플래시에서 HTML 코드를 만드는 기능도 퍼블리시고 MS 프론트페이지(FrontPage)에서도 퍼블리싱이라는 용어를 썼다. 그리고 어도비(Adobe)에서도 웹페이지를 만드는 작업을 웹 퍼블리싱(Web publishing)이라고 지칭하고 있었다. 이 외에도 많은 툴에서 웹페이지를 실제로 제작하거나 배포하는 단계를 지칭해서 퍼블리시라는 단어를 많이 쓰고 있었다. 웹을 출판하는 사람이라는 의미가 기존의 시각에만 집중한 웹 저작과는 반대되는 의미를 가지고 있다는 느낌도 이 용어를 선택하게 된 이유중의 하나였다. – 웹 퍼블리셔라는 말을 만든 이유 – (hyeonseok.com)

무슨 말인지 쉽게 이해하기는 힘들지만 내가 이해 하기로는 실제로 사용자가 보고 사용하는 웹 페이지를 만드는 사람을 뜻한다고 생각했습니다. 암튼 제가 생각하는 웹 퍼블리셔(요즘은 이 용어에 대한 의문도 많이 생기긴 하지만)는 실제로 사용자가 실제로 사용하는 기술이라면(예를들어 자바스크립트, 플래시, 실버라이트 같은) 다 할 수 있어야 한다고 생각 했습니다.

그러나 무슨 웹 퍼블리셔가 만능 슈퍼맨도 아니고, 그 많은 기술들을 어찌다 마스터해요… 그리고 HTML, CSS만 잘하기도 얼마나 힘든데 말이죠. ㅠ_ㅠ 그래서 저는 웹 퍼블리셔라고 해서 꼭 자바스크립트나 플래시 등을 모두 잘할 필요는 없다고 생각합니다. 자바스크립트를 업무로 한다고 더 실력이 좋은 웹 퍼블리셔라고 생각지도 않고요.

그러나 이전의 포스팅에서도 언급했듯이 웹 페이지를 만드는데 이용되는 기술을 이해하는것은 정말 중요합니다. 사실 내가하지않더라도 다른사람의 작업에 대한 이해도가 있어야 커뮤니케이션에도 문제가 없고 작업의 효율도 올라갈것이기 떄문입니다.

더구나 사용자가 직접적으로 사용하는 기술인 Front-end단의 기술등은 좀더 높은 이해도를 가져야 한다고 생각합니다. 내가 직접적으로 해야하는 작업들만 신경쓰고 타인의 작업을 신경쓰지 않는다면 만들어진 결과물은 결코 좋다고 볼수 없을것같습니다.

다 잘할 수 있으면 더욱 좋구요.

어디까지만 공부해야하는지 고민하지 말고 할 수 있는 만큼은 다 노력해서 최대한 많이 내 자신의 지식으로 만들었으면 좋겠습니다.

웹 퍼블리셔들의 블로그 홍수를 꿈꾼다

제가 처음 웹 표준을 하는 사람들을 만날때는 블로그를 안가지고 있는 사람들이 없었습니다. 이름보다는 각자의 필명을 부르는것이 더 익숙할 정도 였죠. 그당시 사람이 별로 없기도 했지만, 블로그에 자신이 배우고 익힌것들을 포스팅하면서 실력을 높이는 하나의 수단이 되었다고 확신합니다. 요즘에도 사람들을 만나면 제가 하는 많은얘기중 하나는 “자기만의 블로그를 운영해라, RSS를 구독해라” 입니다. 그러나 많은 사람들이 개인 블로그를 운영하는것을 망설이고 있더군요.

이유를 물어보면 보통 나오는 얘기가.

“쓸 얘기가 별로 없어서” 라던가, “제가무슨…”, “좀더 준비해서요” 등의 얘기가 나오드라구요…

제 생각에는 블로그에 꼭 기술 이슈에 대한 얘기 남에게 도움이 될거 같은글만 올려야 한다고 생각하지는 않습니다. 예를 들어 저 같은 경우는 개인적인 관심사나 사는 이야기 등의 이야기도 올리고, 어쩌다 알게된 기술 상식도 올리고 그러고 있습니다. 블로그는 기본적으로 개인적인 일기나 느낌들을 올리거나.. 기술이라도 개인이 자유롭게 작성하면 되는건데  많은 분들이 뭔가 블로그는 아무나 하는게 아닌것처럼 인식되어서 참으로 안타깝더라구요…

저만해도 블로그 업데이트가 정말 뜸하기 떄문에 할말은 없지만, 그래도 블로그를 운영하면 얻는것이 정말 많다고 생각합니다.

블로그를 운영하면서 얻을 수 있는 잇점은 여러가지가 있지만 제가 생각하는 몇가지 잇점을 나열해보면…

  1. 자신이 공부한것을 정리할 수 있다 입니다.우리는 많은것을 배웁니다. 커뮤니티에 질문을 하던, 검색을 하던, 아님 직접 손으로 짜면서 테스트를 하던, 각각의 공부 방법을 통해 우리는 얻는게 있습니다. 그것을 블로그에 정리해두면 나중에 찾아보기도 쉽고, 다른 사람도 쉽게 접근하여 더욱 발전할 수 있는 계기를 만들 수 있습니다. 물론 자신만의 노하우를 가지고 싶은 사람은 싫은 일이겠지만 다먹고 살자고 하는건데 공유하면서 살면 좋자나요 🙂
  2. 내꺼니까 이것저것 해볼 수 있다.
    사실 업무로 웹 페이지를 만들때는  지산이 하고 싶은것을 충분히 할 수 없는 경우가 많습니다. 하지만 내 블로그는 내 소유이기 때문에 내 맘대로 지지고 볶고 난리를 쳐도 모라 그럴사람 없습니다. 그야말로 자신의 블로그는 내 코드를 맘껏가지고 놀 수 있는 놀이터인 셈입니다.
  3. 설치형 블로그에 대한 경우 많은 다른기술을 익힐 기회가 있다.
    위의 이것저것과 일맥 상통하는 부분인데 맘만 먹으면 프로그래밍도 해볼 수 있고, 디자인도 해볼 수 있고 역시 내꺼니까 내맘대로 할 수 있고 또 애정을 가지고 해볼수있다는 생각이 듭니다. 사실 일할때는 다른 업무롤 접하기는 힘드니까요.. 이것도 큰 도움이 되지 않을까요?
  4. 말그대로 내 자신에 대한 로그이다.
    저 같은 경우에 해당이 되는데 제 신변잡기를 써놨기 때문에 제가 언제 무엇에 관심이 있었고 뭘 하려했는지 알수가 있습니다. 저는 제 자신의 기록을 따로 많이 해두는 편이 아니라서 그런가…. 블로그가 이럴깨 도움이 많이 되더라구요 (특히 이력서 쓸때;;; )

써 놓고 보니 몇가지 안되기는하는데;;;;;;;; 그래도 위의 두 세가지 정도만 으로도 충분히 가치가 있다고 생각하지 않으시나요? 또한 써 놓고 보니 블로그 라기보다는 개인 홈페이지가 더 필요 할 것 같긴한데… 뭐 암튼 그놈이 그놈이고 ㅋㅋㅋ

블로그를 만들어서 조금의 시간 투자만으로도 좋은 블로그를 만들 수 있을것이고 그런 블로그들이 많이 모여야 한국의 웹 퍼블리싱 시장도 발전 할 수 있을거라는 생각이 듭니다. 요즘 좋은서비스도 많이 나왔고 툴도 많으니 잘골라서 바로 시작해 보세요.

웹 상의 좋은 문서는 모두 영어야 라고 불평만 하지 마시고, 일단 글을 써보세요 쉬운것부터 말이죠…  글이 많아져야 정보도 많이 생기고 경쟁력도 많이 생긴다고 봅니다 저는 ㅎㅎㅎ

하지만 무엇보다 저부터 좀 글좀 많이 써야할텐데 말이죠 ㅠ_ㅠ

근황

그동안 다니던 회사를 그만 두었습니다. 오페라에서 있었던 1년반 정도의 시간은 저에게는 정말로 큰 도움이 되었고 폭넓게 생각할 수 있는 기회를 만들어 주었으며, 많은 지식을 쌓을수도 있었습니다. 다음의 회사는 그동안 배운것을 좀더 발전시키고 활용할 수 있기를 바랍니다.

그래서 간만에 회사를 안다니고 쉬고 있습니다. 짧게나마 여행도 다녀왔고, 대낮에 거리도 활보해보고 밀린 집청소도 하고 나름 바쁘게 보냈는데… 아무래도 저는 쉴팔자는 아닌가 봅니다. 좀이 많이 쑤시네요… ㅠ_ㅠ

웹 표준의 날을 빨리 준비해야 하는데  아직 개인사가 많아서 잘챙기지 못하고 있습니다. 못난 일꾼 하나가 행사를 망친다고 생각하니 참 마음이 아픕니다.ㅠ_ㅠ

그동안 하나둘씩 모아뒀던 만화책을 2차로 정리할까 합니다.
원피스, 바람의 검심 정도입니다. 바람의검심은 최상의 질을 자랑합니다. 원피스는 제 만화책의 역사와도 같은데 볼만한 수준은 됩니다.(저를아는분이면 제 만화책 관리 수준이 어떨지 아실겁니다 ) 모두 가격은 실제 가격의 40%로 책정합니다. 관심있으신 분들은 저에게 연락해주세요.

요즘 생각하는 웹 표준에 대한 주요 주제는 웹 퍼블리셔들의 역량에 관한 문제입니다. 웹 퍼블리셔가 자바스크립트를 해야하나 말아야하는 논쟁도 있는것 같은데 이부분에 대해서는 다시 한번 포스팅을 해볼까 합니다.

쉬면서 공부도 좀하고 글도 많이 쓰고 그래야 할텐데 참 게으른건 답도 없네요… 그러나 이상하게도 회사를 다닐때보다 좀 더 규칙적인 생활을 하는것 같기도 하고…

개발자와의 대화(가상)

요즘 공부는 안하고 잡념에 빠지는때가 많은데… 요즘 특히 많이 생각하게 되는것이 커뮤니케이션에 관한것 입니다.
말이 커뮤니케이션이지 뭐 이빨 잘 까는거지요… 캬캬캬 음…. 암튼;;

외국의 경우 1인 기업이 많다고 하고, 어떤 회사는 기획, 구현, QA까지 한 사람이 맡은 부분에 대해 모두 책임지는 환경도 있다고 합니다만, 아무래도 회사에서 월급을 받아가는 제일 많은 경우는 동료와 일을 적절히 분배해서 서로 맡은 부분을 잘 처리 하는것이 되겠지요.

보통 웹 퍼블리셔의 경우 기획자와 개발자 그리고 디자이너 모두와 항상 이야기를 하면 작업을 진행하게 됩니다. 물론 충돌하는적도 많고 의견 조율할때도 많습니다. 그러나 제가 일하던 예전에는 콘텐츠에 의견을 낼 수 있는게 아니라 그냥 페이지 나오면 만들어 내는것이 고작이었으니까요 커뮤니케이션이라 하면 수정사항 변경이나 디자인 구현에 따른 약간의 논의가 있었을뿐입니다. (그럼에도 불구하고 제가 쌈닭으로 소문난건 뭐 제성격이 지랄같아서…)

그러나 요즘 웹 표준과 웹 접근성이 비교적 중요사항으로 대두되고, 프로젝트의 요구사항으로 들어가게 되면서, 웹 표준과 웹 접근성에 관심이 많던 웹 퍼블리셔들이 목소리를 높이게 되었습니다. 좋은 현상이죠 뭐

그러나 일부 웹 퍼블리셔들은 같이 일하는 사람에 대해 “웹 표준, 웹 접근성을 너무 모른다. 막무가내다 하던대로만 하려고 한다.”며 동료 작업자들에 대한 한탄을 많이 하는것을 볼 수 있고, 또 어떤 웹 개발자나 웹 디자이너 들은 “웹 퍼블리셔들과 일하는거 피곤해서 작업 같이 못하겠다. 뭐 다 안된다고만 한다.”며 불평을 늘어놓는 것을 어렵지 않게 볼 수 있습니다.

왜 이런일들이 생기는 걸까요? 서로 먹고살자고 다 하는일들인데 왜들 서로 못 잡아 먹어서 안달이 난걸까요…

문득 저번 스터디에서 나왔던 얘기를 잠시 해볼까 합니다. 어떤 게시판의 특정 글을 볼때 글보기 페이지의 title을 해당글의 제목을 명시하는 것을 개발자에게 요청하는 방법입니다.

상황 A
웹 퍼블리셔 : 게시판 뷰페이지의 페이지의 타이틀 부분에 글 제목을 우선적으로 적용해 주세요.
개발자 : 왜요? 이미 작업 다 끝나가든데?
웹 퍼블리셔 : 이렇게 해야 접근성이 향상 되니까요…

상황 B
웹 퍼블리셔 : 게시판 뷰페이지의 페이지의 타이틀 부분에 글 제목을 우선적으로 적용해 주세요.
개발자 : 왜요? 이미 작업 다 끝나가든데?
웹 퍼블리셔 : 웹 접근성 지침에 따르면 페이지의 타이틀은 “웹 페이지에는 해당 페이지를 간단명료하게 설명한 제목을 제공해야 한다” 라는데 게시판 보기에서 그 페이지의 특징을 가장 잘 표현할 수 있는것은 게시물의 제목일것 같으니까요.. 부탁좀 드릴께요…

상황 A와 같이 일을 하시는분은 없겠죠? 타인에게 어떤일에 대한것을 주장하고 설득 할때는 그에 대한 논리적인 근거가 확실히 필요 합니다. 근거없는 주장은 묵살되기 쉽지요.이것은 비단 웹 일을 하는 사람에게만 해당되는 일은 아닐겁니다. 항상 주장에는 근거 또는 설득력이 필요하다고 생각되요 근거없는 주장은 억지일 뿐인거죠… 상대방이 나에 대해 전혀 모르는 상태라고 기준을 잡고 차근차근 설명해서 상대방이 나에 대해 이해를 하게 만드는 것이 중요할 것 같습니다. 그래야 말이 통하고 일이 수월하게 될것같아요.

무엇보다 동료와 친해지면 더욱 쉽습니다!