2007년 8월 31일 금요일

'OpenXML의 표준이 된다면?'에 대한 개인적인 생각

순전히 개인적인 생각임을 밝힙니다. ^^b

지민아빠님의 블로그를 갔더니 'OpenXML의 ISO 표준에 찬성한다'는 글이 올라왔더군요.'
지민아빠님의 글도 일리가 있고, 표준이라는 측면과 독점에 대해서 대한 측면에 대한 여러 댓글도 옳다고 생각합니다. 그런데 읽다가보니 Snooey님의 글을 보게 되었고 개인적으로 생각을 덧붙이고 싶어서 글을 썼습니다.

주요내용
  1. OOXML안은 대체할만한 다른 표준안이 존재 한다.
  2. OOXML안은 불완전 하며 특정 상용 S/W 종속적이다.
  3. OOXML안은 모호한 특허 문제 때문에 제 3자 구현이 제한된다.
  4. OOXML안은 국내 다양한 S/W 개발 환경을 제한할 것이다.

1번에서 대체할만한 다른 표준안으로 ODF가 존재하는 것은 맞지만 ODF의 성능이 OpenXML만큼 뛰어난가, 명확한 스펙인가 등을볼 때 과연 대체안으로 볼 수 있는가는 조금 의심이 듭니다.(스펙을 보시면 OpenXML에 구현되어 있는 부분이 ODF에서는 없는 부분도 있어서 고생했던 기억이 있습니다.)

2번에서 특정 상용 S/W 종속적이다는 점에는 동의합니다. OpenXML을 타운영체제에서 구현한다고 했을 때, 단순한 스펙뿐만아니라 Windows Graphics 대부분을 구현해야하기 때문에 종속적일수 밖에 없겠죠. 종속된다는게 나쁘냐고 물으신다면.... ^^;;

3번에서 모호한 특허 문제라고 하셨는데... MS에서 오피스의 내용을 디컴파일하거나 분석해서 만들었을 때 이에 대해서 고발한 적은 없는 것으로 알고 있습니다. (씽크프리나 코렐이나 EI오피스에 대해서 고발한적은 없는 것으로 알고 있습니다.) 오히려 타사에서 만든 잘못된 오피스 구현물을 호환성을 위해서 기능 구현한 적도 있었으니깐요. 별로 문제가 될 것 같지는 않습니다.

4번에서 국내 다양한 S/W 개발 환경을 제한한다고 하셨는데, 글쎄요. S/W 환경을 제약하기는 어렵지 않을까요? 오피스 자체를 보시면 아시겠지만, 오피스도 단순한 프로그램이라기보다는 강력한 플랫폼의 역할도 합니다. 따라서, 국내 S/W 개발 환경을 풍부하게할 수는 있어도 제한할 것이라고 보기는 어려울 것 같습니다.


2007년 8월 30일 목요일

YSlow

YSlow는 Yahoo에서 만든 웹 페이지의 퍼포먼스를 측정하는 툴로서 Firebug의 플러그인입니다.
사용자 삽입 이미지

측정하는 페이지의 퍼포먼스를 내기 위해서 HTTP Request의 개수와 Gzip 사용여부 등을 측정해서 점수(Performance Grade)를 매깁니다. 제가 만든 페이지는 F를 받았군요. -_-;;;

그 외에 페이지의 쿠키나 헤더 등을 볼 수 있는 툴이긴 합니다만, 그렇게 필요성을 느끼지는 못하겠네요.

출처: YSlow via Ajaxian

※ IE에서 Performace 체크를 할 수 있는 AjaxView(via InfoQ)라는 것도 있습니다만, 저는 자꾸 브라우져가 죽어서 사용해보지 못했습니다. (Ajaxian에 올라있는 AjaxView 소개글도 참고하세요.)

Flash와 Proxy의 관계..

요즘 자주하는 실수인데요...
웹 개발을 할 때, Proxy를 통해서 개발 서버에 접속을 할 때가 있습니다. 저의 경우 Firefox를 주로 사용하기 때문에 Firefox의 SwitchProxy를 사용하는데요. 이렇게 접속한 후 Flash를 테스트해보면 정상적으로 동작하지 않는 경우가 있습니다.
사용자 삽입 이미지

그 이유는 바로 Flash가 IE의 Proxy 설정에 따라 동작하기 때문입니다. (가야님 고마워요~)
뭐이런게 다있어~ 하고 싶지만.. 어쩌겠습니까!!

혹 안되시면 Proxy 설정 꼭 확인해보세요. 안그러면 무안당해요 ㅠㅠ

2007년 8월 29일 수요일

.Mac Web Gallery 어떻게 만들었을까.. 모르겠다. -_-;;

1. 호기심이 발동한 이유
.Mac Web GalleryAjaxian을 통해서 본 이후로 관심을 많이 가지고 있었습니다.
(한 이미지의 영역에서 마우스 좌우 이동만으로 여러 이미지를 보여준다는 것은 참으로 매력적이죠.)
사용자 삽입 이미지

그러던중에, 오늘 잠시 비는 시간을 이용해서(-디자인 결정이 나기전에 잠시 짬이나서..) 한번 만들어보았습니다. 로컬에서는 비슷하게 돌아가던데, 서버에 올려놓고 테스트를 해보니 다르더군요.

2. 구현에 관한 생각.
.Mac Web Gallery를 어떻게 구현할 것인가를 고민해본다면 여러가지 방법이 있을 수 있을 것 같습니다.
저의 경우 다음과 같은 방법이 생각이 나더군요.
  1. 이미지 리스트를 갤러리 생성시에 받아서 저장해 놓습니다.
  2. 자바스크립트를 사용해서 이미지를 미리 로딩합니다.(new Image()..)
  3. 앨범의 이미지(primaryImage) 위를 마우스가 이동할 때 위치에 따라서 primaryImage의 src 값을 변경해줍니다.
그런데, 문제가 발생하더군요. 이미지를 미리 로딩해 놓았지만, 이미지가 변경되었는지를 확인하기 위한 Request/Response 비용이 발생을 해서 .Mac Web Gallery리 처럼 동작을 하지 않더군요.
사용자 삽입 이미지
이미지를 로딩한 다음에 로딩안한 것처럼 감춰놓고 보여줄 수도 있을 수도 있지만...
사용자 삽입 이미지

.Mac Web Gallery의 코드를 보면 그렇지는 않은 것 같더군요..

3. 실제구현을 살펴보면.
파이어버그를 사용하여 네트워크 트래픽을보면 초기 로딩 시간에 이미지가 모두 로딩된 것을 확인할 수 있습니다. 그리고, Web Developer Toolbar를 사용하여 JavaScript를 사용하여 생성된 HTML 소스를 확인해보면 초기에 로딩된 화면에 보이지 않는 이미지 주소가 HTML에 포함되어 있지 않습니다.
사용자 삽입 이미지

살펴보다보니 재미있는 것은 이미지 위를 마우스로 이동할 때, 이미지에 대한 Request/Response가 발생하는게 아니라 emily_parker 페이지에 대해서 요청을 하더군요.

그리고, 소스코드 실행되는 부분을 살펴보면,
  1. didMouseOver가 호촐되어 보여줄 이미지의 index를 계산한 다음에
  2. renderScrubImage가 호출되어 이미지를 가지고와서
  3. setImage를 사용해서 이미지를 보여줍니다.
        setImage:function(content){
            if(content){
                this.primaryImage.src="";
                var src=content.get("square");
                if(src){
                    this.primaryImage.onerror=function(){
                        this.src='/g/images/gallery/spacer.gif';
                    };
                    this.primaryImage.src=src;
                }
                this.primaryImage.style.width=this._defaultDim+"px";
                this.primaryImage.style.height=this._defaultDim+"px";
            }
        },

그.. 그렇다면, 왜 Request/Response가 발생하지 않는걸까요? ㅠㅠ
답을 아시는 분은 좀 가르켜주세요~~

4. 기타..
.Mac Web Gallery에서 사용한 라이브러리는 prototype.js와 script.aculo.us와 sproutit입니다. sproutit은 script.aculo.us를 기반으로하는 이미지 갤러리를 만드는 프레임웤이라고 하더군요.

소스상에서는 도저히 답이 보이지 않아서 찾어보던 중 Brian씨가 만들었다는 .Mac Web Gallery 스타일의 skim이라는 프로그램을 보았습니다. 마찬가지로 첫 로딩에 전체 이미지를 로딩합니다. (예제)
  1. aera를 사용하여 전체 이미지를 html페이지에 로딩해 놓기 때문에 .Mac Web Gallery와는 다릅니다.
  2. 보이기에는 빠르게 보이지만 브라우져 안에서는 이미지가 바뀌었는지에 대한 Request/Response가 발생합니다.
사용자 삽입 이미지

출처:

잠이 안온다...

월식이라 그런지... 피곤하면서도 잠이 안오네요....(역시 본인은 평범함을 거부합니다~ ㅋ)

내일 어떻게 하루를 보낼 지 참 걱정되네요.
어제 일도 걱정되고 생각과는 정반대로 흘러가버리는 상황이 뭐라할까... 한 숨이 나옵니다.

이것저것 다 꼬여버렸네요.
빨리 9월 18일이 되어서 휴가나 가버렸으면.. ㅋ

사용자 삽입 이미지

2007년 8월 28일 화요일

Lazy Function Definition Pattern

Peter Michaux님의 Lazy Function Definition Pattern

1. Lazy Function Definition Pattern이 필요한 경우

  1. 특정 값을 계산(또는 실행)을 통해서 얻어와야 하는 경우
  2. 한 번만 계산(또는 실행)이 되면 그 다음부터는 계산이 필요 없는 경우
  3. 호출 전까지는 계산(또는 실행)이 될 필요가 없는 경우
복잡하게 적어놨습니만, 그런 경우 있지 않은가요? 특정 케이스에만 사용되는 값인데 연산한번만 이루어지고 난 뒤라면 다음부터 연산할 필요가 없는 값들.... 예를 찾기 힘들군요 ^^;;

Peter님의 예를 보면 Date()를 호출하는 것을 들었습니다.
var t;  //global 변수 t를 선언합니다.

function foo() {
    if (t) {
        return t;   // t의 값이 있는 경우에는 t를 리턴합니다.
    }
    t = new Date();
    return t;      // t가 없는 경우에는 t의 new Date()를
                        // 호출하여 값을 생성한 후 리턴합니다.

}
이 방법으로 쉽게 해결할 수 있지만, 다음과 같은 문제가 존재합니다.
  1. foo가 호출될 때마다 if (t)가 호출되어 t에 값이 있는 지 여부를 체크하게 됩니다. (한 번만 체크하면 되는 부분이죠)
  2. 변수 t가 global로 선언되게 되므로, 불필요한 global 변수가 추가됩니다.

2. Lazy Function Definition Pattern으로 수정하면...
Lazy Function Definition Pattern으로 수정하게 되면 다음과 같은 코드 형태가 됩니다.

var foo = function() {
    // foo가 호출될  때 Date를 생성해서 t에 넣습니다.
    var t = new Date();
    // foo를 closure를 통하여 얻을 수 있는 값 t를 리턴하는 function으로 재정의합니다.
    foo = function() {
        return t;  
    }
    // foo()가 최초로 실행되도록 호출합니다.
    return foo();
}
foo의 변화를 alert()을 사용하여 찍어보면 다음과 같습니다.
사용자 삽입 이미지

foo()가 호출되지 않았을 때는 전체 코드를 갖고 있지만,
사용자 삽입 이미지

호출된 후에는 계산된 변수 t의 값만을 갖고 있기 때문에, global 문제와 foo() 호출 시 발생하는 if()코드도 모두 제거할 수 있습니다.

3. 문제점.
var foo = function() {
   // foo가 호출될  때 Date를 생성해서 t에 넣습니다.
    var t = new Date();
    var a, b, c, d, e;
    // a,b,c,d,e가 선언되어서 여기에서 사용되는 경우

   // foo를 closure를 통하여 얻을 수 있는 값 t를 리턴하는 function으로 재정의합니다.
    foo = function() {
        return t;  
    }
   // foo()가 최초로 실행되도록 호출합니다.
    return foo();
}
IE에서 위의 코드처럼 a,b,c,d,e가 선언되어 사용된다면, clouser를 사용해서 foo에서 접근할 수 있기 때문에 메모리에서 릴리즈되지 않습니다. 따라서, Memory leak현상이 날 수도 있습니다.

이를 해결하기 위해서는 clouser로 접근할 수 있는 모든 객체에 대해서 (여기서는 a,b,c,d,e) null처리를 해줘야지만 됩니다.

출처: Lazy Function Definition Pattern via Ajaxian

※ 1의 문제를 해결하기 위한 여러가지 방법이 Lazy Function Definition Pattern에 나와 있으니 한번 읽어보세요.

2007년 8월 27일 월요일

js 라이브러리 요약

이미지 로더(업로더가 아님)
  • YUI-Image Loader - 화면에 이미지가 출력될 시간을 조절하는 라이브러리(초기 로딩시간을 지연시켜 Performance에 대한 효과를 얻을 수 있다.)
슬라이더
Context Menu - 마우스 오른쪽 버튼을 눌렀을 때 나오는 팝업 메뉴
JavaScript to HTML
SVG
  • InputDraw - 결과물을 SVG로 저장할 수 있게 해준다. 입력은 Flash로 받는다.
  • reflex.js - 이미지가 반사된 효과(Cover flow effect)를 내게 해주는 라이브러리입니다. (ff1.5+, opera9+, ie6+ 를 지원합니다.) 반사된 효과를 주고 싶은 이미지 태그에 class="reflex"를 설정하면 onload 타임에 반사효과를 보여줍니다.
    사용자 삽입 이미지

Editor
  • Rich Text Editor - YUI 2.3에 포함되어 있다. Safari 2.0을 지원한다. Selection을 에뮬레이션을 한다. 가볍다.
  • Code Press - 입력 시 Syntax Highlighting을 처리한다. 입력하는 텍스트를 파싱하여서 선택한 문법에 따라서, 입력한 텍스트에 태그를 먹이거나 css를 설정한다. 생각보다는 무겁지 않다. 독립적 애플리케이션으로 붙인다면 재미있을 듯..
압축
  • YUI Compressor - 압축률이 DOJO보다 높고 JSMin보다 안전하다. evil 메소드에 대해서는 처리하지 않는다.
Clipping
  • pzImageCombine - 같은 디렉토리에 있는 여러 이미지를 하나의 이미지로 합쳐서 보여주는 라이브러리
Popup
  • Popup Politicians - 팝업을 띄워서 개인의 프로파일을 소개해주는 라이브러리
    사용자 삽입 이미지
  • YUI lightbox: Drag&Drop, Image preloading, Max/Minimize dialog
달력
  • DatePicker - prototype.js, script.aculo.us기반의 날짜 선택 컴포넌트
    사용자 삽입 이미지

CSS Crossfader
파일업로더
  • SWFUpload: 파일타입지정, 다중파일업로드, 파일크기를 비롯한 파일정보를 업로드전에 리턴, 버튼은 html+css
생략표시

※ 자바스크립트 라이브러리 요약입니다.
※※ 도움이 되셨다면 오른쪽 메뉴 아래에 보이는 광고를 클릭해주세요 쿠쿠쿠 ^^

Safari버그 - element의 attributes 속성

Safari의 버그라기 보다는 다른 브라우져와 다른 점이 더 가깝겠네요.
특정한 element에 사용자가 정의한 attribute를 집어넣고 DOM으로 가지고 오려고 가정을 해보구요.

예를 들자면, 다음과 같이 되겠네요. (bookid가 사용자 정의 id가 됩니다.)
<img  alt="..." src="..." bookid="..." />
이 태그를 JavaScript에 접근하려고 할 때, 사용할 수 있는 방법 중 하나가 attributes 속성입니다.
일반적인 브라우져로는 attributes를 사용하여서 img 태그의 alt, src 또는 bookid를 접근할 수 있습니다.
var bookid = imgTag.attributes['bookid'].nodeValue;
attributes는 NamedNodeMap 인터페이스를 구현하고 있기 때문에 attributes['bookid']를 통하여 (Attribute) Node에 접근하고 이 Node의 nodeValue값을 통해서 값을 사용할 수 있습니다.

그런데, Safari 2(PowerPC)에서 테스트를 하다보니 동작을 하지 않아서 확인해보니 Safari 2에서는 사용자가 정의한 속성에 대해서는 element.attributes를 통하여 접근을 허용하지 않더군요. getAttribute()는 허용을 합니다.

※ Safari 3은 테스트를 못해봤습니다.




IE6, GC이슈

IE6에는 Garbage Collection과 관련한 이슈가 있습니다. (많은 코드가 실행될 수록 GC가 자주 호출되는 문제입니다.) 이를 해결하기 위해서는 다음과 같은 해결책이 있습니다.
  • IE6 패치를 받아서 설치하도록 합니다.
  • IE6에서 IE7으로 업그레이드를 하도록 합니다.
  • 브라우져를 변경하도록 합니다.
  • 제공되는 애플리케이션의 크기를 조절함으로서 GC발생을 최소화시켜서 퍼포먼스를 조절합니다.
※ IE6에서 매우 느리다면 고민을 해볼 필요가 있겠네요. -_-;;;;;
※※ IE6 GC이슈의 그래프를 보면 거의 선형으로 진해되는데 참 난감하네요 -_-;;

출처:


2007년 8월 22일 수요일

'항공사 마일리지 카드 무엇이 좋을까?' 나름대로 조사해봤습니다.

친구랑 얘기를 하다 항공사 마일리지 누적하는 카드 얘기가 나와서 잠시 조사를 해봤습니다.
요즘 포탈의 뉴스나 N사의 지식인에서 가장 많이 노출되는 카드가 외환카드의 NEW 스카이패스 카드입니다.
사용자 삽입 이미지
그런데, 이 카드가 장점으로 내세우는 1,500원당 최대 3마일의 실체는
  • 모든 가맹점: 1.5마일/1,500원
  • 면세점: 2.0마일/1,500원
  • 해외 사용: 3.0마일/1,500원
입니다. VISA카드이구요. 해외서 사용하는 경우를 제외하고서는 대부분이 국내에서 사용하는 카드 금액인데 1,500원당 1.5마일(0.1마일/100원)로 보는게 정확하겠죠. 게다가, 1,500원 단위로 절삭하면 1,000원당 1마일(0.1마일/100원) 적립해주는 카드들보다 손해죠.

게다가 항공사제휴 연회비 ₩20,000원은 따로 청구됩니다. (-_- 기분좋게 봤다가 사기당한 기분 같네요.)

사용자 삽입 이미지

KB카드의 경우에는 아시아나 카드가 1000원당 1마일, 대한항공 카드가 1500원당 1.5마일입니다. 0.1마일/100원 단위에서 벗어나지 않는군요. 플래티늄이던 일반카드던 차이가 없네요.
사용자 삽입 이미지
우리은행의 우리카드에서는 카드에 따라서 마일리지 적립비율이 좀 다르네요.
  • 다이아몬드 스카이패스카드가 1,500원당 2마일리지(기본연회비 300,000원)
  • Skypass S-OIL
    • 모든 가맹점: 1.8마일/1,500원
    • 해외가명점,면세점,대한항공 항공권 구매금액: 3마일/1,500원
  • 스카이패스카드 1마일 /1,500원
  • 아시아나클럽카드 1마일/1,000원
  • 우리V카드(아시아나항공마일리지 서비스를 선택한 경우)
    • 국내 Two-in-One(체크) 결제금액: 2마일/1,500원
    • 국내가맹점: 1.8마일/1,500원
시티카드는 스카이패스의 경우 1.8마일/1,500원 또는 1,5마일/1,500원이고, 아시아나카드의 경우 2마일/1,500원이네요.
  • 스카이패스 마스타카드 1.8마일/1,500원
  • 아시아나클럽 마스타카드 2마일/1,500원
  • 스카이패스 비자카드 1.5마일/1,500원
  • 플래티늄 스카이패스 비자 카드 1.5마일/1,500원
  • 플래티늄 스카이패스 마스타 카드 1.8마일/1,500원
  • 플래티늄 아시아나클럽 마스타 카드 2마일/1,500원
사용자 삽입 이미지
LG카드는 Travel카드(스카이패스)가 2마일/1,500원이고, Trabiz 카드(아시아나)가 국내에서는 1마일/1,500원 해외에서는 1마일/1,000원이네요.

찾아보다보니 너무 많네요 -_-;;;
더 괜찮은 카드 있으면 댓글 달아주세요. 추가하겠습니다.

사용자 삽입 이미지

역시 시티카드가 최강이긴 하지만 카드 사용금액 조회나 한도조정 등의 서비스가 별로 좋지 않으므로 우리은행의 Skypass S-Oil이나 V카드가 가장 나을 것 같네요.

※ 제발 외환은행의 1,500원당 3마일이라는 사기성 광고는 사라져 버렸으면 좋겠습니다. -_-b

2007년 8월 21일 화요일

브라우져에서 얼마만큼의 Call Stack을 호출할 수 있을까?

Ajaxian에 재미있는 기사가 올라왔습니다. Call Stack을 얼마만큼 호출할 수 있을까에 대해 Mark Wubben님이 의문을 갖게 되었는데 이를 테스트하기 위해서 재귀적으로 Foo.invoke()를 재귀적으로 호출한 후 setTimeout을 사용하여서 Foo()가 몇 개 생성되었는지를 체크합니다.
<script type="text/javascript">
function Foo() {
Foo.count++; // Foo가 생성될 때 count를 증가시킵니다.
}

Foo.count = 0;
Foo.prototype.invoke = function() {
new Foo().invoke(); // invoke()를 내부에서 다시 호출합니다.
};

setTimeout(function() {
document.body.innerHTML = "Maximum call stack size: " + Foo.count;
}, 1000);

new Foo().invoke();
</script>
결과는 다음과 같답니다. 사파리는 너무 작군요 -_-;;
  • Safari 2.04: 100
  • Firefox 2.0.0.6: 1001
  • Internet Explorer 7: 1789
  • Opera 9.22: 3340
출처: Maximum Call Stack Size in Modern Day Browsers via Ajaxian

이미지에 테두리 주기..

이미지에 테두리를 두르려면 보통 border를 주면 쉽게 됩니다.
사용자 삽입 이미지

예를 들면 다음과 같이 이미지 태그에 padding을 주고 border를 주면 색이 들어간 테두리를 쉽게 만들 수 있습니다.
<img src="..." style="padding:1px; border: 1px solid black;" ...></img>
그런데, 작업을 하다보니 IE만 유독 안되더군요. 1시간 정도의 삽질 끝에 답을 찾았는데요.
DOCTYPE이 선언이 되어 있지 않아서 이더군요... -_-;;;;

※ 삽질은 정신건강에 매우 안좋습니다. ㅠㅠ


LBS 폰?

  • LBS = Location Based Service
  • PND = Personal Navigation Device
  • LBS 폰이 뜨는 이유
    1. 사용자들의 삶의 방식 변화(여가 생활 증대)로 관광지, 맛집 등에 대한 정보 수요 급증
    2. 유선 인터넷, PND등을 통해서 디지털 지도 경험이 축적
    3. 인프라의 확대 및 이용 가격의 하락(디바이스 포함)
    4. 위치정보에 대한 사회적 합의(위치정보 수집에 대한 합법화)
  • 통신사업자 또는 포털업체 대비 휴대폰 제조업체의 경쟁우위 요소
    1. 가격면에서 앞설 수 있다. 통신사업자 또는 포털업체에서는 통신망 접속을 기본으로 하고 있다.
    2. 휴대폰 기능과 지도 정보의 결합이 수월해지면서 보다 차별화된 부가 기능(지도와 연계된 주소록 등)을 제공할 수 있다.
    3. 사용자 인터페이스 측면에서 차별화가 가능하다. (기기에서 제공하는 최신 인터페이스를 사용할 수 있다.)
출처: LG ELIT - 차세대 휴대폰의 대표주자, LSB폰이 뜬다.

개인적인 생각:
  • LBS폰이 뜰거라는 점에서는 동감이 갑니다.
  • 그런데 경쟁우위 요소에는 전혀 공감이 가지 않네요. 맛집 등과 관련된 디지털 지도 정보에 대해서 너무 작게 보고 있는 것으로 생각되네요. (인터넷에서 크랙받아서 넣는 사람이 대부분이라면... -_- ;;)
  • 인터페이스가 폰마다 다르면... 플랫폼 다 따로 만들어야 할건데 폰에서 풀브라우징만 지원해주면 다 해결되는거 아닐런지...(주저리주저리)


2007년 8월 15일 수요일

네이버 수요웹툰에 '최훈'작가의 작품이 세개나... -_-;;;

오늘 네이버 수요웹툰에 들어갔더니...
개인적으로 좋와하는 '최훈'작가의 웹툰이 세 개나 추가되었더군요.
과연, 수요일마다 마감을 지키실 수 있으실런지....-_-;;;;

사용자 삽입 이미지

비온다~ ^^

아침에 기상청 갔을 때 오늘 최고 기온이 32도까지 오른다고 하더니만 소나기가 다시 내린다. ^^ 아싸~

사용자 삽입 이미지

이번 주 토요일에만 비온다고 하더니만... 내일도 비오는가 보다.
이러니 저러니 해도 열대야보다는 비오는게 옥탑방에 사는 옷장수한테 더 좋다는 사실 ^^b

2007년 8월 14일 화요일

Switch Proxy 때문에 삽질하다. -_-;;

아침부터 로컬에서 돌리는 서버가 제대로 동작을 하지 않길래 서버설정이 잘못되었는 것으로 생각하고 아파치 설정을 이리저리 변경을 하였습니다만... 알고보니 ..... 파이어폭스의 Switch Proxy 설정 변경을 안했었군요.

사용자 삽입 이미지

도구모음에서 안보이게 처리해도... 동작 잘하는군요. ㅠㅠ
아침부터 2시간의 삽질이라. 쿨헉~

2007년 8월 13일 월요일

보블비(Boblbee), Grant 하루사용기

여행갈 때 사용할 배낭이 낡아서 하나 질렀습니다. =. = )//
보블비의 GRANT로 샀는데 반정도는 만족, 반정도는 걱정이네요.
사용자 삽입 이미지
장점
  • 가장 큰 강점은 PVC타폴린제로 만들어져서 가볍고
  • 노트북+책2권(2kg)정도 넣고 집으로 돌아왔는데 무개가 거의 느껴지지않을 정도로 가볍더군요.
  • 그리고, 방수재질로 만들어져있어서 청소하기가 쉽다네요.(이 부분은 해보지 않아서 -_-;;)
단점
  • 가방을 매게되면 등에 딱 달라붙은 상태가 되는데요. 매우 덥습니다.
    (땀이 줄줄나더군요. 무더운 날씨라서 그럴지도...)
  • 가방의 주수납공간과 아래쪽 지퍼포켓을 제외하고는 지퍼가 하나만 달려있습니다.
  • 그리고, 지퍼의 구멍이 작아서 자물쇠를 채우기가 어려울 것 같네요.
    (아주 얇은 자물쇠를 하나 사야할 듯)
  • 가방 크기가 사진에서 보는 것과 달리 좀 작네요..
    (^^;; 배낭여행자 입장입니다. 노트북 하나 책 한, 두개 정도 넣고 다닐거라면 적당할 것으로 생각됩니다.)
이미지 출처 : CJmall 이구요. 요즘에 12%할인행사를 하고 있는데 가격이 참 참하더군요 ^^;;;

P.S> 작년 8월 경에 구매를 했었는데요. 최근에 가방 본체와 끈을 연결해주는 부분이 실밥이 터졌습니다.
A/S를 받으려고 하는데 무상 A/S 기한이 6개월 밖에 안된다고 하는군요. 튼튼한 배낭용도로는 못쓸 것 같습니다.

2007년 8월 8일 수요일

공짜뮤지컬?

하나포스에서 메일이 왔더군요.
사용자 삽입 이미지
공짜 뮤지컬!! 제목에 혹해서 바로 클릭했습니다.
사용자 삽입 이미지

헉~. -_-;;
사용자 삽입 이미지

애드씨?

오늘 지민아빠님하고 얘기를 하다 애드씨라는 회사에 대해서 듣게 되었습니다.
들리는 얘기로는 한달씩 광고하고 한달에 만원을 번다는 얘기를 들어서 검색을 해봤는데요.
사용자 삽입 이미지

몇가지 특징이 있네요.
클릭 횟수로 돈을 받는 것보다는 상당히 블로거에게 돈이되는 모델은 맞는 것 같습니다만....
낚시 블로그가 기하급수적으로 늘어나지 않을까 싶네요 -_-;;;

사용자 삽입 이미지

※ 아.. 지민아빠님이 제 블로그 메인에 링크나오게 해달라고 하시던데 원하시는 분은 말씀해주세요. Link Site에 추가해 드릴께요

2007년 8월 6일 월요일

스페인 여행 계획..

올 해도 어김없이.. 지름신을 맞이하고 대박으로 질렀습니다. -_-)//

1. 일정
사용자 삽입 이미지

세부 일정도 정리되는데로 올려보죠 후후~

2. 숙소
바르셀로나: 바르셀로나 민박 (25유로)
그라나다: 까사보니따 민박(25유로)
프랑크푸르트: 노숙(?) -_-;;

3. 비행기
인천 <-> 프랑크푸르트 (아시아나항공)
프랑크푸르트 <-> 바르셀로나 (루프트한자항공)
바르셀로나 <-> 그라나다 (clickair항공)

4. 라운지
인천 공항, SK 텔레콤 라운지
- 리더스클럽 카드 및 항공권 제시, 동반 1인 가능, 500포인트 차감, 샌드위치 및 요기거리 제공
Priority Pass Card
- 인천국제공항
  • 칼 라운지 사용가능(06:00~22:00)- 인터넷 사용가능, 샤워실, 음료제공
- 프랑크푸르트
  • 1터미널-American Airlines Admirals CLUB(07:00~20:00)- 샤워실, 음료, 인터넷 제공
  • 2터미널-Delta Crown Room CLUB(07:00~14:00 && 16:00~20:30)- 샤워실, 음료, 인터넷 제공
  • 2터미널-Sky Club Lounge(08:00~21:00)- 샤워실, 음료, 인터넷 제공
- 바르셀로나
  • 터미널A-Sala VIP Salavador Dali(06:30~22:30)- 음료, 인터넷 제공
  • 터미널B-Sala VIP Canudas(06:30~22:30)- 음료, 인터넷 제공

2007년 8월 1일 수요일

div로 전체 페이지를 덮고 싶으나 덮지 못하는 경우...

웹에서 팝업창을 띄우는 경우에 팝업창을 돋보이게 하기 위해서 배경색을 깔아주는 경우가 있습니다.

브라우져의 전체 화면을 덮기 위해서 document.body의 scrollWidth나 scrollHeight 또는,
document.documentElement.clientWidth, clientHeight 등등의 여러 값들을 얻어와서 값을 구하게 되겠죠...

사용자 삽입 이미지

작업이 완성되었다 싶어서 반영하고 보니 버그가 금새 눈에 띄더군요. -_-;;;
좌절감에 확인해보니 body 바로 아래에 있는 div 태그에 폭과 높이의 값을 줘서 고정시켜버린 케이스였습니다.

사용자 삽입 이미지

정상적으로 보이기는 하는데.... -_-;;
달리 처리할 방법이 없네요.

※ 덮을 수 있는 방법이 있기 있습니다.
  • IE에서는 document.body.scrollHeight를 쓰고
  • IE이 외의 브라우져에서는 document.documentElement.offsetHeight
사용하면 현재의 HTML의 height이 리턴됩니다. (경우에 따라서는 실제 사이즈보다 더 차지 하는 것 같습니다.)

터키항공 파업하는가? -_-;;;

추석~ 아주 긴 휴가를 이용해서~
가족들의 반대를 무릅쓰고 30대를 넘기기 전에 살아 생전 유럽 땅을 밟아야겠다고 기를 써서 허락을 받았건만...
사용자 삽입 이미지

타고 가려던 터키항공이 파업 직전으로 몰려버렸군요.
안그래도 비행기표가 없던데.. (아시아나-프랑크프루트, 대한항공-암스테르담 노선은 약간의 여유가 있더군요.)

어떻게 시간에 딱 맞게.. 지르기 직전에 파업이 되어버리는건지.. 좋은건지 나쁜건지 에휴~

출처: 터키항공