2007/11 - 해당되는 글 9건
오늘은 무지 추운날입니다 ㅠㅠ

세상을 위해서는 겨울이 더욱 추워져야 하는데 저를 생각하면 날이 따스했으면 합니다. 어제 다큐멘터리를 보는데 지구의 온난화때문에 많은 자연의 재앙들이 생긴다고 하더라구요. 걱정입니다

오랜만에 기초강좌를 올려보려고 합니다. 순서에 맞지는 않다고 보여집니다만..^^ 제목처럼 데이터타입들에 대해서 알아보려고 합니다. 많은 분들이 잘 알고계신 부분이지만 놓치면 후회(?)할 부분도 있으니까 이부분을 너무 저평가하여 생각하시면 안됩니다. 저도 사실 많은부분을 할애한 부분이기도 합니다.

상세한 부분을 알아보기 전에 전체적인 그림을 그려보도록 하겠습니다.
여러분은 데이터타입에 대해서 잘알고 계신가요? 자바스크립트에서 사용하는 데이터타입은 크게 세가지로 나눌 수 있습니다. 원시타입(primitive datatype), 단순타입(trivial datatype), 혼합타입(composite)이 그것입니다. 다시 원시타입은 Number, String, Boolean으로, 단순타입은 null과 undefined으로, 혼합타입은 Object입니다. 우리가 흔히들 사용하는 function, array등은 모두 Object에 해당됩니다. 나중에 알아보겠지만 Object와 Array는 좀 특별한 내용이 있습니다. 그리고 프로그램을 하다보면 자주 접하게 되는 By value와 By reference의 차이점에 대해서도 알아볼 것이고, Wrapper에 대해서도 알아볼겁니다.

자 이제 전체적인 그림을 그려봤으니 자세하게 알아보도록 하겠습니다.

Number
다른 언어에서는 Integer와 floating-point를 따로 구분해서 사용하고 있습니다. 허나, 자바스크립트에서는 따로 구분하지 않습니다. 쉽게 var num = 10 도 되지만 var num = 3.14 도 된다는 이야기지요. 앞선 예제처럼 직접적으로 숫자를 사용하는 것을 numeric literal이라고 부릅니다. Number는 3가지의 Literals를 가집니다.
  1) Integer Literals : 다들 아시다시피 10진수 기반의 모든 숫자를 이야기합니다.
  2) Hexadecimal 과 Octal Literals :  16진수(ex : 0xff or 0Xff)와 8진수(ex : 0377)를 사용하는 number입니다
  3) Floating-point Literals : 소수점을 사용하는 number입니다. 형식은 [digits][.digits][(E|e)[(+|-)]digits]입니다.
위의 예제는 따로 구성하지 않겠습니다. 뒷편에 조금씩 다룰것이니까요 ^^
혹시 여러분들은 Number.MAX_VALUE / Number.MIN_VALUE를 아시나요? 혹시 파이어버그를 사용하신다면 console창에 한번 찍어보세요. 자바스크립트에서 사용할 수 있는 최대/최소값을 알려줍니다. 그리고 isNaN()이라는 함수가 있습니다. 숫자인지 판별하여 그값을 boolean형태로 돌려줍니다. isFinite()라는 함수는 주어진 값이 Number.MAX_VALUE 또는 Number.MIN_VALUE 사이에 값이 존재하는지의 여부를 boolean형태로 알려줍니다.

String
프로그램을 짜면서 가장 많이 사용되는 데이터타입이 아닐까 합니다. String literal은 원칙적으로 한줄에 써야하는건 아시죠? ㅎㅎ String literal에 대해서는 특별한건 없구요 한번 집어보는 정도로만 하겠습니다.
여러분들은 숫자를 문자로 어떻게 변경(converting)하시나요? 보통 toString()을 많이 사용하시죠? 네 그렇습니다. 저도 그렇지요 ㅎㅎ 그렇다면 아래의 예제를 보세요.

var n = 123456.789;
n.toFixed(0) // "123456"
n.toFixed(2) // "123456.78"
n.toExponential(1) // "1.2e+5"
n.toExponential(3) // "1.235e+5"
n.toPrecision(4) // "1.235e+5"
n.toPrecision(7) // "123456.8"

평소에 사용해본 적이 있으신 함수인가요? 중요한건 아닙니다. 이런것도 있다~ 정도만 아시면 되겠습니다. 그래도 실제로 한번씩은 실습을 해보시기 바랍니다.

그렇다면 반대로 문자를 숫자로 변경(convertin)을 해보셨나요? 어떤 방법을 사용하시나요? 보통은 아래처럼 사용합니다.

var num = Number(string_value)  또는 var num = parseInt(string_value)
둘의 차이점을 아시나요? 다음의 예제를 보시죠

var txt = "3 blind mice"
var num_1 = Number(txt)
var num_2 = parseInt(txt)

num_1과 num_2의 값을 예상하시나요? 네~ num_1은 undefined이고 num_2는 3이 나옵니다. 직접해보세요 ㅎㅎ 그렇다면 아래의 경우는 어떨까요?

var txt = "3.14입니다"
var num = parseInt(txt)
답은 3입니다. 너무 쉬웠나요? ㅎㅎ 답은 parseIntInt에 있습니다. Int는 Integer의 약자이고 앞에서 Integer는 10진수를 기반으로 한다고 했습니다. 하지만 이것은 기본값이구요, 만약 parseInt("11", 2)라고 한다면 답은 3이 됩니다. 왜냐하면 11이란 값을 2진수의 값으로 변경하기 때문입니다. 그리고 한가지 팁아닌 팁을 알려드리면,

var txt = "$72.34"
var num = parseInt(txt) // return NaN

입니다. ^^ 자세히 설명하지 않아도 느낌이 오셨을거라 생각합니다.

오늘은 여기까지하고 다음 강좌는 Boolean 데이터타입부터 하겠습니다.
좋은밤 되세요 ㅎㅎ

posted by blankus
Javascript_base  |  2007/11/18 21:40
사용자 삽입 이미지


오늘은 예술의전당에 갔습니다.

NHN직원들에게 무료로 볼 수 있도록 회사측에서 제공을 해줘서~ 다녀왔드랬습니다.

제목처럼 "어둠속의 대화"란 주제로.. 시각장애우 체험을 하는것이지요.

저도 군시절 눈을 크게다쳐서 군의관도 시력회복에 장담을 못하던 때가 있었는데..

그때 저도 두눈을 모두 가린채 암흑속에서 살아야했지요, 지금은 다행이도 주님의 도움으로 이렇게

밝은 세상을 살아가고 있답니다..ㅎㅎ

그래서 인지 이번 체험은 조금더 제겐 소중하고 귀한 체험이 아닐 수 없었습니다.

12월 말까지 하는거라, 여러분들도 시간내어 꼭~ 다녀오시길 바랍니다.

아~! 거기 가시면 아무것도 안보이는 암흑인데요, 거기서 관람객들을 안내하고 진행하시는 요원들이 계시는데

그분들은 아주잘~ 움직이시고 저희를 이끌어 주시는데요... 어떻게 그게 가능할까요?

그렇다고 적외선카메라를 사용하는 것도아니고 어떠한 장비도 사용하지 않는다고 합니다.

궁금하시죠? 직접 체험해보세요~ ㅎㅎ 한시간동안 앞못보는건데.. 시간이 어떻게 흐르는지 알수없을 정도로

재미있고 유익한 시간이였습니다.

여러분들도 꼭 체험하길 바랍니다..ㅎㅎ

posted by blankus
life is  |  2007/11/17 23:04
오늘부터 NHN으로 출근했네요..;;

첫날이라 그런지.. 하루죙일~ 교육에 시달렸네요...후후

역시 회사를 옮긴다는게... 쉽지만은 않군요.. 새로운 회사, 새로운 사람들, 새로운 환경.. 모든 것들이 낯설지만.. 익숙해 지겠죠.

저는 Ajax UI팀이라서 분당 서현(퍼스트타워)으로 출근한답니다~

아직 잘은 모르겠지만... 첫느낌은

1. 정신없다.

2. 어여쁜 여성분들이 많다.(특히 정자동 간호사님 이쁘십니다..ㅎㅎ)

3. 설레인다.(여성분들때문에 설레이는 건 아니구요..^^;; 기대감이...헉.. 여자분들에 대한 기대감이 아니라 --;;)

아직은 첫날이라~ ㅎㅎ 조만간 사진도 찍고해서 올리도록 하겠습니다..ㅎㅎ

오늘도 날이 차더군요... 다들 감기조심 하세요... 콜록콜록~ ㅠㅠ

posted by blankus
태그 - NHN
life is  |  2007/11/12 23:55
 
대한민국 소프트웨어 개발자 여러분 안녕하십니까?

2007년 11월 20일, 건국대학교 새천년 기념관에서 개발자들이 행복해지는 세상을 위한 한마당 잔치가 열립니다.
개발자들을 위한 기술 비전과 지식을 종합한 컨퍼런스, 마이크로소프트 데브데이 2007에서는 ‘행복한 개발자’라는
주제로 다양한 강연과 행사, 기술 상담의 장이 마련됩니다.

개발자로서의 장기적인 커리어 비전을 고심하시는 모든 분들을 초대합니다.
여러분께 실질적인 도움이 될 수 있는 다채로운 프로그램으로 11월 20일에 만나뵙겠습니다.

한국마이크로소프트는 항상 개발자 여러분의 행복과 성공을 위해 함께 하겠습니다.

감사합니다.

* msn 아이디로 로그인하시고 신청하시면 됩니다 ^^
Time
Session Title
09:20-10:00 등록
10:00-10:10 Opening Event - 대한민국에서 개발자로 산다는 것
/ 훈스닷넷 연극팀
10:10-10:20 인사말 / 한국마이크로소프트 박남희 상무
10:20-10:50 Keynote : 10년 후를 내다보는 개발자의 커리어 개발
/ 한국마이크로소프트 김명호 박사/NTO
10:50-12:30 General Session : 변화하는 기술과 개발자의 경쟁력
/ 한국마이크로소프트 유상용 부장
개발자의 영원한 동반자 Visual Studio
/ 한국마이크로소프트 강성재 과장, 김대우 과장
12:30-13:30 Lunch
  Track1 : UX 개발자 트랙
Treck2 : 엔터프라이즈 개발자 트랙
13:30-14:30 UX 개발자가 일하는 방법
/ 한국마이트로소프트 황리건 과장
.Net Framework 3.x 국내 기업 적용 사례
/ 한국마이크로소프트 손정민 부장
14:30-14:40 휴식
14:40-15:40 Silverlight와 ASP.NET AJAX를 이용한
웹 애플리케이션 개발

/ 이노가드 김태영 기술이사
WebServices In Action
/ 닷넷엑스퍼트 이동범 대표
15:40-15:50 휴식
15:50-16:50 2008년을 위한 WPF 개발 방법론
/ 닷넷채널 김영욱 대표
엔터프라이즈 통신 인프라를 위한
WCF의 기능들

/ 드원테크놀로지 유경상 수석컨설턴트
16:50-17:00 휴식
17:00-17:20 Closing - 경품 추첨 이벤트
 
 
 
posted by blankus
태그 - DevDays, DevDays 2007
etc  |  2007/11/08 13:00

당신에게 주민등록증이 없다면....?

생사불명 야사르는 이렇게 시작됩니다...

3일간의 동원훈련 휴식시간동안 읽은 책입니다... 원래 소설은 잘 읽지 않는 편이나, 시간도 남고 해서 읽었습니다.

저는 읽는 내내 즐거움과 분노를 함께 경험했고, 책장을 넘기는 손을 멈출 수 없었습니다.

생사불명 야사르.... 꼭 읽어보세요..ㅎㅎ

사용자 삽입 이미지


posted by blankus

life is  |  2007/11/08 11:02
안녕하세요~

오랜만에 또 포스트합니다..ㅎㅎ 국가의 부름을 받고 3일간 동원훈련을 다녀왔습니다..ㅎㅎ

오랜만에 먹는 군대리아~(군대에서 나오는 햄버거를 일컬음)도 먹고... 병사들의 월급이 6만6천원(이등병)이나 된다는 소식도 접하고..@.@

제가 군대를 늦게 다녀오는 바람에.... 동원도 늦은 나이(?)까지 받게되는군요..ㅎㅎ

이번이 동원4년차라.. 이제 합숙은 하지 않지만..그래도 동원예비군입니다 ㅜㅜ..전쟁나면..짤없이...ㅠㅠ

제가 없는 동안.. 방명록에 글도 올라오고..참 좋습니다..ㅎㅎ

가끔 하는 포스팅이지만...많은 사람들은 아니지만... 제 포스트를 보고 도움이 되신다는 분들이 있어서...

기분이....기분이 좋습니다 (삼성르노 CF..따라하기 ^^)

ㅎㅎ 이제 태왕사신기 할 시간이군요...

다들 좋은밤 되시구요... 내일도 좋은 하루를 맞이하셨으면 좋겠습니다.

감사합니다...

posted by blankus
태그 - 동원훈련
life is  |  2007/11/07 22:03

오전에 Ajaxian.com을 보다가 좋은 정보가 있어 퍼왔습니다..^^;
저 블로그에도 일부 아래의 정보가 있긴하나 아직 미완성 포스트라서...-0-
아래 플래시를 참고하면 좋을듯합니다. ;)


--원문 ------------------------------------------------------------------------
Joe Walker gave a standout talk on Web Application Security at The Ajax Experience.

I love to watch people leaving this talk as they are usually gasping as they realise that we are not secure :)

Joe has posted the slides from his talk, and has provided some great resources:




posted by blankus
etc  |  2007/11/02 10:38

날이 어제보다 더 추워졌습니다... ㅎㅎ 이젠 겉옷을 입고 다녀야겠어요..
오늘은 책을 하나 소개해볼까 합니다.
"Ajax 인 프렉티스"입니다.

사용자 삽입 이미지

2006년 아마존에서 선정한 인터넷 부분 1위에 올랐던 책입니다. Ajax 인 액션의 다음 버전으로 나왔지만 단순한 증보판이 아닌 확실히 내용이 알차졌습니다.(물론 Ajax 인 액션도 내용은 훌륭합니다)

위 책에서는 Ajax의 기초보다는 라이브러리를 이용한 활용에 중점을 두었구요, 요즘 인기상승중닌 jQuery 라던지 잘 사용해보지 않았떤 qooxdoo라던지 rico등의 라이브러리를 이용한 내용이 볼만합니다.

물론 사이트 이곳저곳을 돌아다니다 보면 보실 수 있는 예제이긴 하나 한곳에서 편하게 비교를 해가면서 볼 수있는 것이 이책의 장점이라고 볼 수 있겠네요.

사실 저는 이책을 산건 아니구요, 회사옆자리 동료가 샀길래 잠시 훔쳐보고 있습니다..ㅎㅎ

그동안 블로그에 무심했는데..바쁘다는 핑계로...이젠 다시 열심히 관리하려고 합니다..

오늘도 기분좋은 하루 되세요~

posted by blankus

life is  |  2007/11/02 10:22
오랜만에 글을 올리는 것 같군요.. ^^

한창 더울때 post를 시작한 것 같은데 벌써 날이 제법 찹니다.. 감기조심하세요.

오늘은 제목처럼 자바스크립트에서 주로 사용하는 객체 생성방식에 대해서 알아보려고 합니다. 또한 생성할시에 필요한 메모리도 한번 체크해보도록 합시다.

자바스크립트에서는 클래스라 불리우는 객체를 두가지 방식으로 선언할 수 있습니다.
첫번째는 function으로만 선언하는 방식이고, 다른하나는 function과 prorotype을 이용하여 선언하는 방식이 있습니다.

function Foo(){
   this.name = "foo";

   this.getName = function(){
      alert(this.name);
   };

   this.setName = function(name){
       this.name = name;
    };

    this.act = function(){
 
    }
}


보시다 시피 위의 소스는 function으로 Foo객체(클래스)를 생성한 모습입니다. 일반적으로 위의 방식을 주로 사용합니다.

그리고 저는 후자의 방식을 사용하는데요... 소스는 아래와 같습니다.

function Foo(){
   this.name = "foo";
}

Foo.prototype = {
   getName : function(){
      alert(this.name);
   },
 
   setName : function(name){
      this.name = name;
   },
 
   act : function(){
 
   }
}


먼저 function으로 필요한 부분은 멤버로 넣고 각 인스턴스마다 공통으로 사용될 것같은 놈들만 골라서 prototype으로 처리했습니다.
(여기서는 그냥 가상이므로 getName과 setName, act메소드에 대한 내용은 언급하지 않습니다)

그리고 아래의 소스를 돌렸습니다...위의 두가지 방식의 소스 모두...

for(var i=0; i<10000; i++){
    eval("f_"+i+" = new Foo();");
}


결과는 어떻게 될거라 생각하나요??


우선 아무것도 없을때의 화면입니다.
사용자 삽입 이미지


두번째는 function으로 선언하고 위의 소스를 돌렸을때의 화면입니다.

사용자 삽입 이미지


다음은 prototype과 function을 함께 사용했을때의 화면입니다.

사용자 삽입 이미지


예상하셨나요??

제가 위에도 잠시 언급했지만.. function으로 생성된 인스턴스는 해당 클래스에 존재하는 모든 멤버를 모두 설정하여 생성됩니다.

허나, 필요한 멤버는 function으로.. 각 인스턴스마다 공유될 멤버 메소드같은 경우는 prototype으로 선언하면 function으로 생성된 인스턴스는 function의 멤버인 하나만 설정하여 생성되고 나머지 필요한 것은 Foo로부터 찾아서 사용하게 됩니다.

많은 분들이 function형태의 클래스 생성과 prototype으로 생성한 것과의 차이점을 간과하시는 듯하여 작성한 post가 되겠습니다.

갑자기 추워진듯 한데 감기조심하시구요. 다음 포스트때 다시 뵙도록 하겠습니다.

posted by blankus
Javascript_power  |  2007/11/01 17:00