2007년 6월 29일 금요일

National Genographic에서 연락이 왔는데..

사용자 삽입 이미지

National Genograhic의 결과를 보러 들어갔더니... 또 다른 테스트가 필요하다는 공지가 떴더군요.
ADDITIONAL TESTING REQUIRED
Your sample has completed the DNAanalysis phase of testing. However, during quality control your initialresults failed to clearly indicate your haplogroup. We must performadditional testing to accurately determine your deep ancestral lineage.This is not uncommon, but will delay the posting of your results by twoto three weeks.

We appreciate your patience. Please also note that this delay is a signof the Project's success in increasing the diversity of samples in ourdatabase.

If we find that there is a problem at any point during the processingof your sample, you will receive an updated message when you log in tocheck your status.

눈에 띄는 단 한 줄 .... '
This is not uncommon'
설마.. 난 평범한 인간이었다는 건가!!!!!
사용자 삽입 이미지

그럴리는 없겠죠? ^^

걱정되는 것은 비싼 돈 들여서 받은 검사가 실패할까 걱정되네요. -_-;;;;

이미지 출처: 마음의 소리

P.S.1  haplogroup - 같은 mtDNA 유전자 형을 가진 그룹 (출처: 한민족,한국인은 누구인가? - 국정브리핑)

다음 블로그의 '꾸미기 기능' 소스를 읽다.

다음 블로그의 '꾸미기' 기능이 업데이트 되었다는 이야기를 듣고 써봤는데 상당히 빠르더군요. 총 소스 분량만 2만 줄이 넘어가던데 어떻게하면 이렇게 빠르게 짤 수 있을까 너무 궁금해서 소스를 들여다 봤습니다.

사용자 삽입 이미지

꾸미기 기능의 속성을 설정하거나 설정된 값에 따라 스킨 속성을 변경해줍니다.


오랜만에 소스코드 읽기를 했는데 즐거운 글을 읽는 듯하더군요. 소스코드를 읽고 기분이 좋아지더군요~ ^^

 꾸미기의 기능들
꾸미기 기능은 크게 두가지 기능으로 나뉘어져 있습니다.
  • 하나는 쉬운 꾸미기, 구성 꾸미기, 직접 꾸미기등의 꾸미기 속성을 선택하고 선택한 값에 따라서 스킨의 속성을 설정해주는 부분입니다.
  • 두번째는 꾸미기 기능의 하위 속성으로 메뉴를 드래그&드롭으로 배치하거나 접거나 닫을 수 있는 기능입니다.
사용자 삽입 이미지

메뉴를 드래그&드롭으로 배치하거나 닫거나 삭제할 수 있습니다.


 꾸미기의 특징들

꾸미기의 특징 중 하나는 방대한 css의 속성들을 정의하고 이들을 array list 형태로 정의하고 있다는 것입니다.
csslist.js 파일의 내부를 보면
  • getBGList()
  • getCommonSetList()
  • getFontList()
  • getFrameList()
  • getMoveSetList()
  • getNavList()
  • getPhotoSetList()
  • getSideList()
  • getTitleList()
메소드를 정의하고 인자로 받아오는 속성 값에 따라 적절한 css 속성을 리턴해 주고 있습니다.
해당하는 코드의 길이는 무려 11,202줄이나 되더군요.(공백 포함입니다.)

스킨의 속성들을 정의하고 이들에 대해서 어떠한 속성을 유지하고 어떠한 값을 들고갈지에 대한 분석이 없었다면 못할것 같은 작업이라 생각됩니다.. -_-;; (다음 블로그 개발자 분이 너무 부럽네요.)

 꾸미기의 로딩과정
꾸미기 기능의 로딩과정은 블로그 꾸미기 페이지에 인라인으로 정의되어 있는 자바스크립트 코드에서 시작됩니다.
핵심이 되는 기능은 Designer.initDesigner()에서 시작됩니다. 재미있는 것은 window의 onload 이벤트에 붙여서 로딩하는게 아닌 파일 로딩 시점에서 초기화가 시작된다는 점입니다. - css와 js가 적절히 분리되었다는 의미가 될 수도 있지 않을까요? 아닐 수도......-_-;;

Designer에는 다섯 개의 Manager 클래스들이 초기화 됩니다.
  • ControlManager - 스킨, 레이아웃 등 꾸미기에 사용되는 세부 속성들을 설정하는 Manager입니다.  사용자의 선택을 분류별로 보여주고 선택을 받는 경우 이들의 값을 얻어서 다른 Manager들을 사용해서 속성을 설정해주는 역할을 합니다.
  • LayoutManager - 레이아웃의 크기나 스타일 설정을 처리합니다.
  • StylesManager - CSS 스타일 설정과 관련된 모든 기능을 가지고 있습니다.
  • DragManager - Drag &Drop을 처리합니다.
  • PickerManager - ControlManager의 직접 꾸미기에서 폰트나 컬러를 선택하게 해주는 세부 컴포넌트들을 정의하고 있습니다.
ControlManager와 PickerManager는 내부적으로 Composite 패턴을 사용하고 있는것 같습니다.

사용자 삽입 이미지

예를 들면, ControlManager에 속해있는 Control.SetControl과 관련해서 살펴보면
  • Component - Control
  • Composite - Control.SetControl
  • Leaf - CommonSetControl, PhotoSetControl, MovieSetControl, UsetSetControl
과 같은 형태로 ControlManager에서 Control.SetContol 그리고 하위 클래스로 위임되는거죠.

결론?
아직 소스코드 전체를 다 읽지 못했고 js파일만 읽어서 무슨 분석이냐고도 할 수 있겠습니다만.. 일단 글을 끝내기 위해서 결론 항목을 만들어보았습니다. 적절히 분산된 클래스들과 잘 나누어진 스타일 데이타가 훌륭하게 조합된 소스가 아니었나 싶습니다.

(prototype.js를 제외하곤 전부 만드신 것 같은데 어느정도 인원이 개발기간이 얼마나 걸렸을까 매우 궁금해지네요. ^^;;;)


출처: 다음 블로그, Composite Pattern in Wikipedia

P.S.1  글을 쓰면서도 남의 소스코드를 분석해서 글을 써도 될까 고민을 많이 했습니다. 혹시 저작권 문제가 된다면 글을 바로 삭제하도록 하겠습니다.. (__)

P.S.2  틀린부분 당연히 있을 수 있습니다. -_-b

2007년 6월 28일 목요일

Dungaree ?

어제 H모 대리가 셔츠를 입고 왔는데 Dungaree란 단어가 적혀 있더군요.
뭔가 싶어서 단어를 찾아봤는데 네이버 사전에 거친 무명천으로 만든 바지 -노동복 이라고 되어 있더군요.
사용자 삽입 이미지

도저히 이해가 안되서 Wikipedia에서 검색을 해보니 이런 스타일의 옷이더군요.

Bib and brace라고도 부르기도 하고 Overall스타일의 옷이라고 하는데...
처음에는 Dung ... 과 관련한 단어가 아닌가 싶었는데 아니군요 ^^b

출처 : Overall - Wikipedia

P.S. 그런데 왜 셔츠에 Dungaree가 적혀있었을까요? 거참.. 궁금하네.. ^^;;;

2007년 6월 27일 수요일

prototype.js+script.aculo.us 사용할 때 IE에서 stack overflow at line 0 에러가 발생한다면?

Firefox에서 Prototype.js를 1.5.1.1로 업데이트를 하고 Script.aculo.us를 사용하여 작업을 어느 정도 완료하고 IE에서 테스트를 하였습니다. 이 순간 팝업창이 뜨면서 Stack Overflow~ 가 발생하더군요.

사용자 삽입 이미지

-_-;; 이런 무시무시한 에러를 브라우져 상에서 본적이 없었기에.. 어제 퇴근 직전에 좌절모드로 들어갔습니다..
아침에 출근해서 검색해보니.. prototype 1.5.1버전을 사용하려면 script.aculo.us 1.7 beta3을 사용해야 한다고 합니다.. 그렇지 않은 경우에 stack overflow 에러가 발생할 수 있다고 합니다.

사용자 삽입 이미지

(개인적인 추정으로는 rendering관련 메소드가 문제가 아닌가 생각합니다만 - diff에서 많이 바뀌었기 때문 -_-;;)

개발자의 자세로는 원인을 규명하는게 바람직하지만... 바쁜관계로.. -_-;;;

짤방 이미지 출처 : 마음의 소리..

2007년 6월 26일 화요일

JavaScript로 자릿수 계산을 하다가... 머리가 굳어버린걸 발견하다

DB에 저장된 값을 읽어와서 JavaScript에서 설정해주는 작업을 하게 되었는데요.
DB에서 저장된 값(숫자)의 첫번째 숫자의 값을 읽어와야 하게 되었습니다. (말이 어렵지요? ^^;;;)
예) 3121 또는 21 이라는 숫자가 있는데 이 숫자들에서 처음으로 나오는 3, 2의 값을 읽어오는 작업입니다.
스트링으로 substr 메소드를 사용해서 0~1의 숫자를 읽어오는 방법도 있습니다만, 수학을 써서 해결할 방법이 없을까 생각을하며 굳어버린 머리를 돌려봤습니다.

어렴풋한 기억으로는 log(base 10)을 사용하면 자릿수가 나온다는 기억이 떠오르더군요. (왜 나오는지는 생각이 안나네요 -_-;;;;) 이 값의 ceiling값을 구하면 되는 걸로 알고 있는데....

문제는 JavaScript에서 2 base로한 log 메소드는 제공되나 10 base로 제공되는 log 메소드는 없더군요.
검색을 해보니 다음과 같은 방법으로 자릿수를 구할 수 있었습니다.

var cipher = Math.ceil((Math.log(value)/Math.log(10)));
결과를 이끌어내기는 했지만... 왜 그런지는 전혀 기억이 나지 않나는군요.
벌써 나이가 들었는지 -_-;;;

관련자료: Variable Based Logarithm

2007년 6월 25일 월요일

National Genograhphic 프로젝트

National Genographic이란?

National Genographic 프로젝트는 National Geograhpic과 IBM 그리고 Waitt Family Foundation이 만든 프로젝트로서, 인류가 어디에서 와서 어떻게 오늘날을 살고 있는지를 분석하는 프로젝트입니다.

화 석 기록이 인류의 기원이 아프리카임을 증명하였지만, 호모 사피엔스가 지구 전체로 뻗어나가게 된 여행(great journey)에 대해서는 알려진게 별로 없습니다. 우리들 각각은 어떻게 현재의 지역에서 살게되었을까요? 왜 인류는 각양각색의 색을 띄고 다른 특징을 가지게 되었을까요?

이러한 질문들은 우리의 조상이 60,000년전에 아프리카에서 살고 있던 공통된 조상을 가졌다는 유전적 증거에 비춰보면 더욱 더  놀랄만한 질문이 될 것입니다. 여러 세대를 거치더라도, 우리의 유전자(우리가 읽을 수 있다면)에는 이러한 변화에 대한 모든 이야기들이 명확하게 담겨 있습니다.

DNA가 하나의 세대로부터 다른 세대로 넘어갈 때, 대부분의 DNA들은 우리들 개개인에게 주어진 과정, 절차(프로세스)에 따라서 재결합되게 됩니다. DNA 체인의 일부분들은 세대를 거치면서 변하지 않고 남아있지만, 때때로 유전지표(genetic marker)가 되는 돌연변이(mutation)가 발생하기도 합니다.

이러한 유전표지들은 Spencer Wells와 같은 유전학자가 세대를 거슬러 올라가면서 진화의 흐름(timeline)을 추적하는 것을 허락해줍니다. "인류 역사상 가장 오래된 역사책은 바로 우리 자신의 DNA안에 감춰져 있다'라고 웰즈는 말합니다.(The greatest history book ever written is the one hidden in our DNA)

서로 다른 지역의 사람들은 구별되는 유전자 마커를 지니고 있습니다. 이러한 유전자 마커들은 세대를 거쳐서 유전자 트리로 나타낼 수 있습니다. 반대로 오늘날의 다양한 유전자 가지로부터 아프리카의 공통된 조상을 역으로 추적할 수도 있겠죠. 우리의 유전자들은 아프리카로부터 여러 대륙으로 건나간 고대 인류의 이동에 대해서 도표로 만들 수 있게도 해줍니다.

한개의 경로 추적을 통해서, 고대 아프리카에서 인도를 통해 고립되어 있는 오스트레일리아에서 번성한 살아있는 증거들을 볼 수도 있습니다. 그러나 모든 경로 추적을 위해서는 (전체 그림을 완성하기 위해서는) 가능한 전세계로부터 많은 유전자 샘플 풀을 확대해야만 합니다. 주어진 시간은 매우 짧습니다. 오늘날과 같이 이동거리가 짧은 세계에서는 여러 인류가 섞여살면서 유전자가 주는 신호들이 엉켜버리게되기 때문입니다.

이 퍼즐을 풀기위한 키는 세계 곳곳에 남겨져 있는 토착사람이나 전통적인  사람들의 민족적으로나 유전적으로 고립되어 있는 사람들의 샘플들을 얻어내는 수 밖에 없습니다. 그러나 이러한 구별된 사람들, 언어, 문화는 21세기와 같은 세계적 도가니 속에서 빠르게 사라지고 있습니다.

이 러한 이유때문에 Genographic 프로젝트가 전세계 10곳에 연구소를 세우게된 이유입니다. 과학자들은 유전자 지도책을 완성하기 위해서 포괄적인 노력으로 지구의 오지까지 방문하고 있습니다. 그러나 우리들은 에스키모(Inuit)이나 부시족(San Bushmen)과 같은 종족의 유전자만을 필요로 하는 것은 아닙니다. 여러분의 유전자도 필요로 하고 있습니다.

만 약에 여러분이 저희의 프로젝트에 참여하여 여러분의 데이타를 global research database에 등록한다면 Genographic 프로젝트에서 윤곽만 완성된 유전자 트리에 많은 세밀한 부분을 채우는데 큰 도움을 줄 수 있을 것입니다.

저희와 함께 인류가 함께해온 여행의 오래된 얘기를 나눌 수 있을 것으로 기대합니다.

출처: National Genograhpic 프로젝트의 about 페이지입니다.
(오역 및 의역 당연히 있습니다. (__) 본 포스트의 저작권은 National Geographic에 있습니다.)

National Genographic에 참여하는 방법(
마음을 비우시고 지르시면 됩니다. ^^)

National Genographic의 프로젝트에 참여하는 방법은 간단합니다. 참여페이지에서 참여킷(Participation Kit)을 구매를하면 됩니다.($99.95[\93,000정도]라는 가격으로 결코 만만치는 않은 가격입니다. 배송비 포함하면 $126.50이 됩니다.)
  1. National Genographic에 대한 설명이 들어있는 DVD(영문입니다.)
  2. 인류의 이동에 대해서 소개되어있는 지도
  3. DNA를 채취하기 위해 사용되는 도구들과 이를 National Genographic에 보내기 위한 봉투 등
  4. 프로젝트에 대한 세부 소개자료
  5. DNA 분석 결과를 구분하기 위한 Genographic Project ID(GPID)
로 구성되어 있습니다. 아래의 사진들은 참여 킷을 구매 후 찍은 사진들입니다.


두 번째 사진에 보이는 DNA 수집도구를 이용해서 DNA를 통에 담은 후에 National Genographic에 보내면, 8주정도 후에 결과를 받아 볼 수 있다고 합니다.

저의 경우에는 일반 우편으로 DNA를 보냈구요. 현재 DNA 분석중이라고 합니다.

National Genographic에 관해서 접한 것은 2005년도 회사동료셨던 Jemyoung Leigh님에게서 들었었습니다만....
십만원이 넘는 거금을 들여서 이 프로젝트에 참여하게된 계기는 김운회씨의 '삼국지 바로 읽기' 때문이었습니다. (중반까지는 재미있게 읽었습니다만, 가설 위의 가설을 통해서 얻는 결론은 별로 보기에 안좋더군요.)

책의 '삼국지와 고구려, 알타이를 찾아서'라는 장을 보게되면 알타이-만주-한반도-일본 등에 이르는 민족들이 같은 민족이라고 주장하는 얘기가 나옵니다. 과연 진짜일까? 하는 생각이 들면서 그렇다면 한번 해보고 싶다는 생각이 들더군요.

그러고선 무의식중에 그 분을.. 만나서 질러버렸습니다. -_-;;
짧은 영어로 번역하고 글을 쓰다보니 어수선한 글이 되어버렸네요. 결과가 나오면 포스팅을 다시 올리도록 하겠습니다.

출처 : National Genogarphic

2007년 6월 22일 금요일

array_fill - 특정 값들로 채워진 배열을 생성합니다.

array_fill
(PHP 4 >= 4.2.0, PHP 5) - 특정 값들로 채워진  배열을 생성합니다.

Description


    array array_fill ( int $start_index, int $num, mixed $values )

배열의 시작위치($start_index)부터 주어진 크기($num)만큼의 배열을 생성하고 인자로 받는 값($values)으로 배열을 채웁니다.

Parameters
start_index - Array의 시작인덱스를 인자로 받습니다.
num - 삽입할 배열 인자의 개수를 받습니다.
values - 배열에 채울 값을 인자로 받습니다.

출처 : php.net - array_fill

2007년 6월 21일 목요일

Jania님이 소개해주신 JavaScript의 기본적인 디버깅 도구들..

오늘 WebAppsCon의 실전 Ajax와 웹표준의 세번째 강좌, 강규영(Jania)님의 '효과적인 Ajax 구현을 위한 팁과 노하우'을 듣고 왔습니다. 너무 재미있더군요. ^^

그 중에서 가장 머리에 남았던 부분이 기본적인 디버깅 도구들 이었습니다.
JavaScript의 가장 기본적인 디버깅 수단은 alert()입니다. 출력하고 싶은 로그의 내용을 alert()을 띄워서 보여주는 가장 기본적인 수단이죠.

그리고, 이 외의 수단으로 (저의 경우) body태그의 가장 아래 쪽에 div를 추가하고 여기에 로그의 내용을 출력시켜주는 방법을 선택하거나(내부에 출력하는 거죠 뭐.. ^^;;) 파이어버그의 디버깅 도구를 이용해서 디버깅을 했었는데요.

새로운 방법을 배웠습니다. ^^
  • document.title을 이용해서 출력하는 방법 - alert()과 달리 창이 안뜨죠 ^^.
  • 주소창을 이용해서 출력하는 방법 - 주소창에 javascript:를 이용하여 코드를 실행할 수가 있는데 이 코드에서 현재 페이지의 DOM에 접근이 가능해서 훌륭한 디버깅 용도로 쓰일 수 있습니다.
  • firebug의 콘솔에 출력하는 방법 - window.console.log메소드로 로그를 출력할 경우 파이어버그의 콘솔에 출력을 할 수 있습니다.
아~ 하는 소리를 낼 정도로 너무 재미있었습니다. 언제 시간되시면 강규영님의 강좌 꼭 한번 들어보세요 ^^

P.S. 시간이 되시면, 강규영님이 강좌 중간에 소개하셨던 오픈마루 DevDay 행사에도 한 번 가보세요 ^^


implode - 배열의 값을 스트링으로 합쳐주는 메소드입니다.

implode
(PHP 4, PHP 5) - Array에 들어있는 값들을 스트링으로 합쳐주는 메소드입니다.

Description


    string implode ( string $glue, array $pieces )

Parameters
glue - Array에 들어있는 값들을 연결시켜주는 스트링입니다.
pieces - 연결시켜서 보여주기 위한 Array를 인자로 받습니다.

출처: PHP-implode

2007년 6월 19일 화요일

Reality Bedding?? -_-;;;;

TechcrunchReality Bedding이라는 사이트가 올라왔네요. 이불을 야시시한 사진을 프린트해서 파는사이트인데.. 대체 Techcrunch에 왜 올랐는지....  아마도 Techcrunch에서 이불 몇 장은 받았겠죠?
사용자 삽입 이미지

출처 : Techcrunch

2007년 6월 18일 월요일

ul 태그의 depth를 알아내는 코드

wait till I come!에 나온 ul 태그의 depth를 계산하는 방법에 관한 글입니다. 주의할 점은 크게 두가지입니다.
  • ul태그의 경우에는 내부에 ul태그를 가질 수 있기 때문에, 가장 깊은 depth를 얻기 위해서는 모든 ul 태그를 체크해야합니다.
  • 각각의 ul태그의 depth 중에서 가장  깊은 depth의 값을 얻어와야 합니다.
사용자 삽입 이미지

Recursive 호출해서 해결할 수 있을 것 같네요. 메모차 정리하였습니다. ^^;;
출처 : Determining the depth of a nested html list

2007년 6월 17일 일요일

Flash를 이용해서 이미지 에디터를 만든다면? - 간단한 조사와 메모

Flash로 이미지 에디터를 만들어볼까 해서 몇 가지를 조사해봤습니다. (거의 메모 수준입니다. 틀린 부분있으면 얘기해주세요.)

MATSC로 개발할 것을 생각했기에 ActionScript 2.0 API를 찾아보았습니다. 그런데, adobe.com에는 마땅하게 전체를 살펴볼 API가 안보이더군요. Flex와 관련된 API는 쉽게 볼 수 있는데, ActionScript 2.0과 관련해서는 영 안보이네요. -_-;; 결국 brajeshwar.com에서 찾았습니다.

ActionScript에서는 이미지를 표현하기 위한 클래스 flash.display.BitmapData라는 클래스를 가지고 있더군요. BitmapData는 pixel데이터(32bit-integers)를 가지고 있어서 이미지를 표현할 수 있습니다. BitmapData에서 이미지 파일을 업로드할 수 없으므로 MovieClipLoader로 이미지를 MovieClip에 로딩한 다음에, 이를 캡쳐하는 방법으로 이미지를 BitmapData로 로딩할 수 있습니다.(MovieClip 생성관련 글)

_movieClipLoader = new MovieClipLoader();
_movieClipLoader.loadClip(imageFilteName, _holderMovieClip);
...
_bitmap = new BitmapData(...);
_bitmap.draw(_holderMovieClip);

그리고, flash.filters.* 를 살펴보면 BitmapData에 적용할 수 있는 필터들도 있습니다. Bevel, Bitmap, Blur, Glow 등의 필터들이 존재하고 있구요. flash.geom.* 을 이용하면 여러가지 도형을 이미지 위에 그릴 수도 있습니다. (필터와 관련된 Adobe의 문서들)

문제는, 이렇게 생성된 이미지를 서버로 전달하는 방법인데요. 마땅한 방법이 잘 안보이네요.
인터넷으로 검색을 해보니 다음과 같은 방법이 있다고 하더군요.
  • BitmapData를 로컬(Client)에 이미지로 저장한 다음에 서버에 파일을 전송한다.(AS3에는 JPEGEncoder가 있군요. AS2에서의 Storing and displaying image 글)
  • 또, 하나의 방법으로는 BitmapData의 Pixel 데이터를 서버에 전송한 후 이미지로 만들어 클라이언트에 보여준다.
쉽지가 않군요. -_-;;

여기까지 조사를 하고 쉽게 만들 수 없겠다는 생각이 들어서 일단은 여기까지하고 마무리져야 겠네요.
좋은 방법 있으시면 나누어 주세요~~

P.S. 샘플입니다.

2007년 6월 15일 금요일

sitemap.xml과 관련된 메모

 Pete Freitag님의 블로그에  Sitemap hits in robots.txt라는 글이 올라와서 Sitemap에 관해서 살펴보게 되었습니다.지정은 다음과 같습니다.
Sitemap: http://www.example.com/sitemap.xml
이 외에도 몇 개 방법이 더 있네요. 검색엔진의 인터페이스에 바로 submit시킨다거나 HTTP Request로 보낸다거나.. 등등 (Informing search engine crawlers)

프로토콜의 스펙이 의외로 간단하군요. url에 대해서 change frequency와 priority만 지정할 수 있다니... 흠...

출처:
Pete Freitag님의 Sitemap hits in robots.txt
Sitemaps.org
관련자료:

2007년 6월 13일 수요일

Pumfit이벤트 당첨

오랜만에 경품에 당첨이 되었습니다.
Pumfit에서 한 이벤트였는데 무려 세가지나 당첨이 되었더군요. ^^;;;
머그컵 + 수첩 + 빛자루 1년 이용권
사용자 삽입 이미지

옆자리에 계신 ㄱ모님에 비할바는 아니지만.. 이런 행운이 따르는 군요.
(참고로 제 옆자리에 계신 ㄱ모님은 PMP에 아이팟에.. 거의 모든 종류의 경품에 당첨이 잘되시는 분으로, 이 분이 택배를 받으시면 사람들이 이번에는 어떤 경품 받았냐고 물을 정도죠.. -_-b)

경품도 받았으니... 열심히 Pumfit을 써야겠네요 ^^;;

감기걸렸다가 이제 정신 좀 차렸습니다...

저번 주부터 조카한테서 옮은 감기가 주말에 절정에 닿았다가 감기약먹고 이제 살 것 같습니다.
이제 좀 정신이 드네요. (요 며칠동안 제정신이 아닌채로 코딩했다는???? -_-;;;;;)

아침에 운동을 하고 왔는데 1kg이 빠졌더군요.

사용자 삽입 이미지

가끔 아플만 하군요 ^^b

이미지 출처: JS님의 마음의 소리 <주말엔 뭐하세요?>

2007년 6월 11일 월요일

레포트..

레포트 기간이 남아있을 때는, 시간이 항상 샘솟는다.
물 반컵을 따라놓고 사람들에게 물었을 때, 긍정적 사고의 사람처럼 "반이나 남았군요."라는 긍정적 사고로 모든 일에 대처한다. 그리고, 5시간 정도를 앞두고서는 발등에 불이 떨어진다.

거의 대부분의 케이스에서 시간에 맞춰서 마무리를 지으며.. 그래 이정도면 기본 점수는 나올것이라 장담을 한다.

사용자 삽입 이미지
그러나, 언제나 뒤돌아보면 문제를 잘못 보고 풀었다. 나이를 먹으나 안먹으나 왜이러는지...  -_- ;;;

2007년 6월 8일 금요일

javascript로 브라우져의 창 조절하기

자바스크립트를 이용하여 브라우져의 크기를 조절하는 방법은 다음과 같습니다.
javascript:window.resizeTo(1024,768);
을 주소창에 입력한 후에 엔터를 치면 크기가 조절이 됩니다.

그래서? 해상도에 따라 어떻게 웹페이지의 모습을 확인할 수 있습니다.
그리고, 아래의 링크를 북마크에 추가해두면 쉽게 사용할 수 있습니다.
출처: Tip for Resizing Your Browser Window

2007년 6월 7일 목요일

사용자가 어떤 사이트를 방문하였는지를 알 수 있는 Spyjax

Ajaxian을 보다가 Spyjax라는 재미있는 라이브러리를 발견하였습니다.
Spyjax는 사용자가 어떤 사이트를 방문하였는지를 알아내는 라이브러리인데요. 개념은 간단합니다.
방문한 사이트의 링크방문하지 않은 링크의 색비교하는 방법을 사용하는 것입니다.
다음과 같이<a href="http://www.google.com">Google</a>라는 anchor 태그를 웹 페이지에 추가하였다고 가정을 하겠습니다. 이 페이지를 로딩하는 사용자가 Google을 방문하지 않았다면 다음과 같은 색이 나올겁니다.
Google
그러나, 사용자가 방문하였다면 다음과 같은 색으로 변경되겠죠.
Google
이러한 색의 차이를 이용해서 사용자가 어떠한 페이지를 방문하였는지를 알게해주는게 Spyjax라는 라이브러리입니다. 상당히 단순하면서도 신선한 라이브러리네요 ^^

사용자 삽입 이미지

출처: Spyjax via Ajaxian


2007년 6월 6일 수요일

변수의 이름을 정하는 몇가지 방법

Wrox의 Professional JavaScript for Web Developers 책을 다시 보다가 변수의 이름을 정하는 방법에 대해서 소개가 되어 있더군요. 고로.. 간단하게 정리해 보았습니다.
  • 낙타 표기법(CamelCase, Camel Notation 등등)은 변수를 나타내는 단어들의 첫 글자를 대문자로 표기합니다. (예외로 변수의 맨 첫 번째 글자는 소문자로 표기합니다.)

    var nomeOfVariable;

  • 파스칼 표기법(Pascal Notation)은 모든 단어들의 첫 글자를 대문자로 표기합니다. 변수의 맨 첫 번째 글자를 포함해서요.

    var NameOfVariable;

  • 헝가리안 표기법(Hungarian Notation)은 첫 번째 변수에 변수의 타입을 나타내는 소문자를 적어주고 나머지 부분은 파스칼 표기법처럼 명사의 첫 글자에 대문자를 사용합니다.

    var aNameOfVariables; // Array로 된 변수의 정의
    사용자 삽입 이미지
  • -표기법(Hyphen Notation) : 변수를 정의하는 단어와 단어 사이를 -를 사용하여 표시해줍니다. (Cobol, Lisp같은 언어에서 주로 사용)

    END-OF-FILE  // 일반적인 언어에서 -는 substract를 의미하므로 -표기에 제약을 받습니다.

  • _표기법(Underscore Notation): 변수를 정의하는 단어와 단어 사이를 _를 사용하여 표시하기도 합니다.

    var name_of_variable;
※ -, _ 표기법에 대해서는 Wikipedia의 Naming conventions 중 Word boundaries를 참고 하였습니다.
※※ 참고서적 Wrox의 Professional JavaScript for Web Developers

조카 돌보기

주말에 누나 집에 다녀왔었습니다.
때맞춰 조카가 감기에 걸려서 조카 뒷바라지에 시간을 다보냈군요.. (제가 뭘 했겠습니까.. 조카 앞에서 울지말라고 달래주고 자전거 태워주고 여러가지를 해줬죠.. 뭐.. )

사용자 삽입 이미지

열이 계속나서 기저귀만 입혔는데 춥다고 옷을 입혀달라고해서 어머니께서 옷을 목에 둘러주셨더군요. ^^


감기에 걸려서 온도를 재보니 거의 40도를 왔다갔다 하더군요. 그래도 다행히 열감기는 다 낳았답니다.
그리고 어제부터 기침감기를 좀 하던데.. 제가 옮아서 온것 같네요. -_-;;;

이번일을 겪으면서 애들키우시면서 직장일을 하시는 분들이 존경스러워집니다.
그래도, 장가가고싶은 마음은 ....  ^^;;

2007년 6월 1일 금요일

Arity

수학용어에서 Arity는 1진(unary), 2진(binary), 3진(ternary) 등등으로 올라가는 것을 의미합니다.
(The mathematical term "arity" sprang from words like unary, binary, ternary, etc.)

그러나, 컴퓨터 공학에서 arity는 함수(function)이나 연산(operation)에서 사용되는 함수의 인자(arguments) 또는 연산자(operand)의 개수를 의미합니다.
(In logic, mathematics, and computer science, the arity (synonyms include type, adicity, and rank) of a function or operation is the number of arguments or operands that the function takes.)
  • A nullary function takes no arguments.
  • A unary function takes one argument.
  • A binary function takes two arguments.
  • A ternary function takes three arguments.
  • An n-ary function takes n arguments.
출처: Arity in Wikipedia

P.S. 오늘도 공돌이 포스트군요. -_-;;